diff --git a/MasaBlazorApp3/Pages/BoxAddDetailDialog - 复制.razor b/MasaBlazorApp3/Pages/BoxAddDetailDialog - 复制.razor index 28051aa..2ba836e 100644 --- a/MasaBlazorApp3/Pages/BoxAddDetailDialog - 复制.razor +++ b/MasaBlazorApp3/Pages/BoxAddDetailDialog - 复制.razor @@ -150,11 +150,11 @@ { if (orderTakeVo.Status == 0) { - PortUtil.PowerOn(drawerNo); - await Task.Delay(portSetting.Value.delayTime); // 判断是否为单支抽屉 if (setting.Value.single.Contains(drawerNo)) { + PortUtil.PowerOn(drawerNo); + await Task.Delay(portSetting.Value.delayTime); byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo); orderTakeVo.BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); logger.Info($"单支抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】"); @@ -199,7 +199,10 @@ new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } ); logger.Info($"抽屉打开失败"); - PortUtil.PowerOff(drawerNo); + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } RestData(); stop(); } @@ -277,7 +280,10 @@ } //有单支抽屉则广播灭灯 - PortUtil.PowerOff(drawerNo); + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } // if (!string.IsNullOrEmpty(alertMessage)) // { // //弹出确认对话框 @@ -323,17 +329,15 @@ ); if (setting.Value.single.Contains(drawerNo)) { - PortUtil.PowerOff(); + PortUtil.PowerOff(drawerNo); } stop(); } }); - PortUtil.PowerOff(); } void RestData() { - PortUtil.PowerOff(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); this.status = 0; data.ForEach(it => diff --git a/MasaBlazorApp3/Pages/BoxAddDetailDialog.razor b/MasaBlazorApp3/Pages/BoxAddDetailDialog.razor index 5e173fc..8419b47 100644 --- a/MasaBlazorApp3/Pages/BoxAddDetailDialog.razor +++ b/MasaBlazorApp3/Pages/BoxAddDetailDialog.razor @@ -114,11 +114,11 @@ { if (orderTakeVo.Status == 0) { - PortUtil.PowerOn(drawerNo); - await Task.Delay(portSetting.Value.delayTime); // 判断是否为单支抽屉 if (setting.Value.single.Contains(drawerNo)) { + PortUtil.PowerOn(drawerNo); + await Task.Delay(portSetting.Value.delayTime); byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo); orderTakeVo.BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); logger.Info($"单支抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】"); @@ -163,7 +163,10 @@ new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } ); logger.Info($"抽屉打开失败"); - PortUtil.PowerOff(drawerNo); + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } RestData(); stop(); } @@ -232,8 +235,15 @@ } } - //有单支抽屉则广播灭灯 - PortUtil.PowerOff(drawerNo); + // 所有抽屉操作完成,断电单支抽屉 + for (int i = 0; i < drawerNos.Count; i++) + { + if (setting.Value.single.Contains(drawerNos[i].ChannelStock.DrawerNo)) + { + PortUtil.PowerOff(drawerNos[i].ChannelStock.DrawerNo); + await Task.Delay(200); + } + } // if (!string.IsNullOrEmpty(alertMessage)) // { // //弹出确认对话框 @@ -284,12 +294,10 @@ stop(); } }); - PortUtil.PowerOff(); } void RestData() { - PortUtil.PowerOff(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); this.status = 0; data.ForEach(it => diff --git a/MasaBlazorApp3/Pages/BoxRemoveDialog.razor b/MasaBlazorApp3/Pages/BoxRemoveDialog.razor index 6afa2bd..6177033 100644 --- a/MasaBlazorApp3/Pages/BoxRemoveDialog.razor +++ b/MasaBlazorApp3/Pages/BoxRemoveDialog.razor @@ -46,8 +46,8 @@ 移入 + ValueChanged="@((args) => OnColorChanged(args))" AllowFiltering="false" + AllowFilteringByAllStringColumns="true" TextProperty="药箱号"> @@ -69,7 +69,7 @@ { @if (status < 3) { - + } @if (status == 3) @@ -276,8 +276,6 @@ drawerNo = Convert.ToInt32(selectSpl[0]); colNo = Convert.ToInt32(selectSpl[1]); } - PortUtil.PowerOn(drawerNo); - await Task.Delay(portSetting.Value.delayTime); PortUtil.DrawerNo = drawerNo; // 根据抽屉类型来决定打开前是否需要查询数量 var promiseUtil = new PromiseUtil(); @@ -295,6 +293,8 @@ // 判断是否为单支抽屉 if (drawerSetting.Value.single != null && drawerSetting.Value.single.Contains(this.drawerNo)) { + PortUtil.PowerOn(drawerNo); + await Task.Delay(portSetting.Value.delayTime); byte[] quantity = await PortUtil.CheckQuantityByDrawer(this.drawerNo); BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); logger.Info($"单支抽屉,开抽屉前检测数量【{string.Join(",", BeforeQuantity)}】"); @@ -332,6 +332,10 @@ PortUtil.SpeakAsync($"加药完成,请,点击完成按钮"); this.status = 3; PortUtil.Operate = false; + if (drawerSetting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } stop(); } else @@ -364,12 +368,10 @@ stop(); } }); - PortUtil.PowerOff(); } void RestData() { - PortUtil.PowerOff(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); this.status = 0; // this.BeforeQuantity = new int[9]; diff --git a/MasaBlazorApp3/Pages/BoxReplace.razor b/MasaBlazorApp3/Pages/BoxReplace.razor index 63c7a65..1db52a8 100644 --- a/MasaBlazorApp3/Pages/BoxReplace.razor +++ b/MasaBlazorApp3/Pages/BoxReplace.razor @@ -321,7 +321,6 @@ void RestData() { - PortUtil.PowerOff(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); this.status = 0; // this.BeforeQuantity = new int[9]; diff --git a/MasaBlazorApp3/Pages/CheckOrderConfirmDialog.razor b/MasaBlazorApp3/Pages/CheckOrderConfirmDialog.razor index ba17480..c75b5b8 100644 --- a/MasaBlazorApp3/Pages/CheckOrderConfirmDialog.razor +++ b/MasaBlazorApp3/Pages/CheckOrderConfirmDialog.razor @@ -183,11 +183,11 @@ { if (orderTakeVo.Status == 0) { - PortUtil.PowerOn(drawerNo); - await Task.Delay(portSetting.Value.delayTime); // 判断是否为单支抽屉 if (setting.Value.single.Contains(drawerNo)) { + PortUtil.PowerOn(drawerNo); + await Task.Delay(portSetting.Value.delayTime); byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo); orderTakeVo.BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); logger.Info($"单支抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】"); @@ -215,7 +215,10 @@ new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } ); logger.Info($"抽屉打开失败"); - PortUtil.PowerOff(drawerNo); + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } RestData(); stop(); } @@ -238,7 +241,6 @@ } }); orderTakeVo.Status = 2; - PortUtil.PowerOff(drawerNo); if (options._data == drawerNos.Count - 1) { PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); @@ -279,6 +281,10 @@ dialogService.Close(false); } } + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } stop(); } else @@ -311,12 +317,10 @@ stop(); } }); - PortUtil.PowerOff(); } void RestData() { - PortUtil.PowerOff(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); this.status = 0; data.ForEach(it => diff --git a/MasaBlazorApp3/Pages/CheckOrderNew.razor b/MasaBlazorApp3/Pages/CheckOrderNew.razor index ae09b17..5e5a12e 100644 --- a/MasaBlazorApp3/Pages/CheckOrderNew.razor +++ b/MasaBlazorApp3/Pages/CheckOrderNew.razor @@ -391,7 +391,7 @@ _message.Notify( new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = errMessage, Duration = 4000 } ); - break; ; + break; } } else diff --git a/MasaBlazorApp3/Pages/DrawerAdd.razor b/MasaBlazorApp3/Pages/DrawerAdd.razor index 712f47b..30d59b0 100644 --- a/MasaBlazorApp3/Pages/DrawerAdd.razor +++ b/MasaBlazorApp3/Pages/DrawerAdd.razor @@ -6,7 +6,7 @@ @using log4net; @@ -19,11 +19,11 @@ { if (setting.Value.returnDrawer != null && setting.Value.returnDrawer.Contains(i)) { - + } else { - + } } @@ -35,7 +35,7 @@
@foreach (int i in DrawerNos) { - + }
@@ -43,19 +43,19 @@ } + LoadData="@LoadData" + IsLoading="@isLoading" + Count="@count" + EmptyText="无数据" + Data="@channels" + AllowColumnResize="true" AllowAlternatingRows="false" + CellClick="@((DataGridCellMouseEventArgs args) => OnCellClick(args))" + AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据"> @if (status < 3) { - + } @if (status == 3) { @@ -205,8 +205,6 @@ async Task OpenDrawer() { this.status = 1; - PortUtil.PowerOn(this.drawerNo); - await Task.Delay(portSetting.Value.delayTime); PortUtil.DrawerNo = this.drawerNo; // 根据抽屉类型来决定打开前是否需要查询数量 var promiseUtil = new PromiseUtil(); @@ -224,6 +222,8 @@ // 判断是否为单支抽屉 if (setting.Value.single != null && setting.Value.single.Contains(this.drawerNo)) { + PortUtil.PowerOn(this.drawerNo); + await Task.Delay(portSetting.Value.delayTime); byte[] quantity = await PortUtil.CheckQuantityByDrawer(this.drawerNo); BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); logger.Info($"单支抽屉,开抽屉前检测数量【{string.Join(",", BeforeQuantity)}】"); @@ -257,6 +257,10 @@ logger.Info($"抽屉打开失败"); RestData(); PortUtil.Operate = false; + if (setting.Value.single.Contains(this.drawerNo)) + { + PortUtil.PowerOff(this.drawerNo); + } stop(); } @@ -279,6 +283,11 @@ } this.status = 3; PortUtil.Operate = false; + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(this.drawerNo); + + } stop(); } else @@ -353,12 +362,10 @@ stop(); } }); - PortUtil.PowerOff(this.drawerNo); } void RestData() { - PortUtil.PowerOff(this.drawerNo); PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); this.status = 0; this.BeforeQuantity = new int[9]; @@ -456,7 +463,7 @@ if (channels.Any(cl => cl.AddQuantity != 0 && cl.DrugId != null && cl.drugManuNo != null)) { // 保存账册、操作记录 - var b = await channelListDao.DrawerOperationFinish(channels.Where(cl => cl.AddQuantity != 0).ToList(), 1,null,null); + var b = await channelListDao.DrawerOperationFinish(channels.Where(cl => cl.AddQuantity != 0).ToList(), 1, null, null); if (!b) { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"数据保存失败", Duration = 4000 }); diff --git a/MasaBlazorApp3/Pages/DrawerTake.razor b/MasaBlazorApp3/Pages/DrawerTake.razor index 4637a90..2763672 100644 --- a/MasaBlazorApp3/Pages/DrawerTake.razor +++ b/MasaBlazorApp3/Pages/DrawerTake.razor @@ -6,7 +6,7 @@ @using log4net; @@ -17,7 +17,7 @@
@foreach (int i in DrawerNos) { - + }
@@ -29,7 +29,7 @@
@foreach (int i in DrawerNos) { - + }
@@ -37,14 +37,14 @@ } + LoadData="@LoadData" + IsLoading="@isLoading" + Count="@count" + EmptyText="无数据" + Data="@channels" + AllowColumnResize="true" AllowAlternatingRows="false" + CellClick="@((DataGridCellMouseEventArgs args) => OnCellClick(args))" + AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据"> @if (status < 3) @@ -52,11 +52,11 @@ if (setting.Value.returnDrawer != null && setting.Value.returnDrawer.Contains(drawerNo)) { - + } else { - + } } @if (status == 3) @@ -68,8 +68,8 @@ { + ValueChanged="@((args) => OnColorChanged(args))" AllowFiltering="false" + AllowFilteringByAllStringColumns="true" TextProperty="药箱号"> @@ -78,23 +78,23 @@ + ValueChanged="@((args) => OnBoxChanged(args))" AllowFilteringByAllStringColumns="true" TextProperty="药箱号"> - - - - - } + + + + + + } } @if (status > 0 && status <= 3) @@ -230,8 +230,6 @@ async Task OpenDrawer() { this.status = 1; - PortUtil.PowerOn(this.drawerNo); - await Task.Delay(portSetting.Value.delayTime); PortUtil.DrawerNo = this.drawerNo; // 根据抽屉类型来决定打开前是否需要查询数量 var promiseUtil = new PromiseUtil(); @@ -249,6 +247,8 @@ // 判断是否为单支抽屉 if (setting.Value.single != null && setting.Value.single.Contains(this.drawerNo)) { + PortUtil.PowerOn(this.drawerNo); + await Task.Delay(portSetting.Value.delayTime); byte[] quantity = await PortUtil.CheckQuantityByDrawer(this.drawerNo); BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); logger.Info($"单支抽屉,开抽屉前检测数量【{string.Join(",", BeforeQuantity)}】"); @@ -277,6 +277,10 @@ new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } ); logger.Info($"抽屉打开失败"); + if (setting.Value.single.Contains(this.drawerNo)) + { + PortUtil.PowerOff(this.drawerNo); + } RestData(); stop(); } @@ -298,7 +302,7 @@ } else { - PortUtil.SpeakAsync($"取药完成,请核对或录入正确的取出数量"); + PortUtil.SpeakAsync($"取药完成,请核对或录入正确的取出数量"); } // 判断是否为称重抽屉 if (setting.Value.weigh != null && setting.Value.weigh.Contains(this.drawerNo)) @@ -309,6 +313,10 @@ logger.Info($"关闭抽屉,称重抽屉获取稳定数量后日志"); this.status = 3; PortUtil.Operate = false; + if (setting.Value.single.Contains(this.drawerNo)) + { + PortUtil.PowerOff(this.drawerNo); + } stop(); } else @@ -390,7 +398,6 @@ stop(); } }); - PortUtil.PowerOff(this.drawerNo); } //关闭抽屉后获取称重稳定数量 public async Task GetWeightQuantity() @@ -488,7 +495,6 @@ } void RestData() { - PortUtil.PowerOff(this.drawerNo); PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); this.status = 0; this.BeforeQuantity = new int[9]; diff --git a/MasaBlazorApp3/Pages/InvoiceAddDialog.razor b/MasaBlazorApp3/Pages/InvoiceAddDialog.razor index f02c8ca..16e0162 100644 --- a/MasaBlazorApp3/Pages/InvoiceAddDialog.razor +++ b/MasaBlazorApp3/Pages/InvoiceAddDialog.razor @@ -209,38 +209,49 @@ { if (options._data == 0) { - PortUtil.PowerOn(drawerNo); - await Task.Delay(portSetting.Value.delayTime); + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOn(drawerNo); + await Task.Delay(portSetting.Value.delayTime); + } BeforeQuantity = new int[9]; AfterQuantity = new int[9]; + int flag = 0;//抽屉对应库位无药位置亮灯指令只发一次 for (int j = 0; j < data[index].ChannelStocks.Count; j++) { - // _flagList.Add(flag); - //单支-查数 - if (data[index].ChannelStocks[j].BoardType.ToString().Contains("2")) + if (data[index].ChannelStocks[j].AddQuantity > 0) { - byte[] quantity = await PortUtil.CheckQuantityByDrawer(data[index].ChannelStocks[j].DrawerNo); - data[index].BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); - logger.Info($"单支抽屉【{drawerNo}】,开抽屉前检测数量【{string.Join(",", data[index].BeforeQuantity)}】"); + // _flagList.Add(flag); + //单支-查数 + if (data[index].ChannelStocks[j].BoardType.ToString().Contains("2")) + { + byte[] quantity = await PortUtil.CheckQuantityByDrawer(data[index].ChannelStocks[j].DrawerNo); + data[index].BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); + logger.Info($"单支抽屉【{drawerNo}】,开抽屉前检测数量【{string.Join(",", data[index].BeforeQuantity)}】"); + if (flag == 0) + { + await PortUtil.NoLightOnByCol(drawerNo, data[index].ChannelStocks.Where(cs => cs.DrawerNo == drawerNo).Select(cs => cs.ColNo).ToArray()); + flag = 1; + } - await PortUtil.NoLightOnByCol(drawerNo, data.Select(ot => ot.ChannelStocks.Where(cs => cs.DrawerNo == drawerNo).Select(cs => cs.ColNo)).Cast().ToArray()); - } - //称重-查数 - if (data[index].ChannelStocks[j].BoardType.ToString().Contains("6")) - { - PortUtil.DrawerNo = data[index].ChannelStocks[j].DrawerNo;// drawerNo; - PortUtil.ColNoLst.Add(data[index].ChannelStocks[j].ColNo); + } + //称重-查数++ + if (data[index].ChannelStocks[j].BoardType.ToString().Contains("6")) + { + PortUtil.DrawerNo = data[index].ChannelStocks[j].DrawerNo;// drawerNo; + PortUtil.ColNoLst.Add(data[index].ChannelStocks[j].ColNo); - data[index].BeforeQuantity[data[index].ChannelStocks[j].ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[index].ChannelStocks[j].ColNo); - logger.Info($"称重抽屉【{data[index].ChannelStocks[j].DrawerNo}】,开抽屉前检测数量【{string.Join(",", data[index].BeforeQuantity)}】"); - await Task.Delay(200); - } - //药盒-开药盒 - if (data[index].ChannelStocks[j].BoardType.ToString().Contains("3")) - { - PortUtil.DrawerNo = data[index].ChannelStocks[j].DrawerNo; - await PortUtil.OpenBoxByColNo(data[index].ChannelStocks[j].ColNo); - await Task.Delay(200); + data[index].BeforeQuantity[data[index].ChannelStocks[j].ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[index].ChannelStocks[j].ColNo); + logger.Info($"称重抽屉【{data[index].ChannelStocks[j].DrawerNo}】,开抽屉前检测数量【{string.Join(",", data[index].BeforeQuantity)}】"); + await Task.Delay(200); + } + //药盒-开药盒 + if (data[index].ChannelStocks[j].BoardType.ToString().Contains("3")) + { + PortUtil.DrawerNo = data[index].ChannelStocks[j].DrawerNo; + await PortUtil.OpenBoxByColNo(data[index].ChannelStocks[j].ColNo); + await Task.Delay(200); + } } } var b = await PortUtil.OpenDrawerStatus(drawerNo); @@ -258,7 +269,10 @@ new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } ); logger.Info($"抽屉打开失败"); - PortUtil.PowerOff(drawerNo); + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } RestData(); stop(); } @@ -272,10 +286,6 @@ if (b) { options._data = 0; - if (setting.Value.single.Contains(drawerNo)) - { - PortUtil.PowerOff(drawerNo); - } if (index == drawerNos.Count - 1) { PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); @@ -287,68 +297,72 @@ { for (int j = 0; j < data[i].ChannelStocks.Count; j++) { - string flag = "关" + data[i].ChannelStocks[j].DrawerNo.ToString() + data[i].ChannelStocks[j].ColNo.ToString(); - - if (!_flagList.Contains(flag)) + if (data[i].ChannelStocks[j].AddQuantity > 0) { - _flagList.Add(flag); - //关闭抽屉后获取称重数量 - PortUtil.DrawerNo = data[i].ChannelStocks[j].DrawerNo;// drawerNo; - // 判断是否为称重抽屉 - //单支-查数 - if (data[i].ChannelStocks[j].BoardType.ToString().Contains("6")) - { - PortUtil.ColNoLst = this.ColNos; + string flag = "关" + data[i].ChannelStocks[j].DrawerNo.ToString() + data[i].ChannelStocks[j].ColNo.ToString(); - AfterQuantity[data[i].ChannelStocks[j].ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStocks[j].ColNo); - logger.Info($"称重抽屉,关抽屉后检测数量【{string.Join(",", AfterQuantity)}】"); - WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1] = data[i].BeforeQuantity[data[i].ChannelStocks[j].ColNo - 1] - AfterQuantity[data[i].ChannelStocks[j].ColNo - 1]; - if (data[i].ChannelStocks[j].Quantity != WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1]) - { - //称重自动计数数量与实际要取数量不一致弹出提示,确认后保存数据 - alertMessage += $"{data[i].Drug.DrugName}应取数量【{data[i].Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1]}】"; - - } - } - //单支-查数 - if (data[i].ChannelStocks[j].BoardType.ToString().Contains("2")) + if (!_flagList.Contains(flag)) { - byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo); - AfterQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); - logger.Info($"单支抽屉,关抽屉后检测数量【{string.Join(",", AfterQuantity)}】"); - WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1] = data[i].BeforeQuantity[data[i].ChannelStocks[j].ColNo - 1] - AfterQuantity[data[i].ChannelStocks[j].ColNo - 1]; - if (data[i].ChannelStocks[j].Quantity != WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1]) + _flagList.Add(flag); + //关闭抽屉后获取称重数量 + PortUtil.DrawerNo = data[i].ChannelStocks[j].DrawerNo;// drawerNo; + // 判断是否为称重抽屉 + //单支-查数 + if (data[i].ChannelStocks[j].BoardType.ToString().Contains("6")) { - alertMessage += $"{data[i].Drug.DrugName}应取数量【{data[i].ChannelStocks[j].Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1]}】"; - } - } - if (!string.IsNullOrEmpty(alertMessage)) - { - //弹出确认对话框 - alertMessage += "应取数与实际取出数不一致确认要保存吗?"; - //弹出确认提示框 - var confirm = await dialogService.OpenAsync - ( - $"保存确认", - new Dictionary - () { { "confirmInfo", alertMessage } }, - new DialogOptions() - { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false }); + PortUtil.ColNoLst = this.ColNos; - if (!confirm) - { - RestData(); - logger.Info("取消保存"); - cancelFlag = true; - // 关闭弹窗 - dialogService.Close(false); - break; + AfterQuantity[data[i].ChannelStocks[j].ColNo - 1] = await PortUtil.CheckQuantityForSingle(data[i].ChannelStocks[j].ColNo); + logger.Info($"称重抽屉,关抽屉后检测数量【{string.Join(",", AfterQuantity)}】"); + WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1] = data[i].BeforeQuantity[data[i].ChannelStocks[j].ColNo - 1] - AfterQuantity[data[i].ChannelStocks[j].ColNo - 1]; + if (data[i].ChannelStocks[j].Quantity != WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1]) + { + //称重自动计数数量与实际要取数量不一致弹出提示,确认后保存数据 + alertMessage += $"{data[i].Drug.DrugName}应取数量【{data[i].Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1]}】"; + + } } - else + //单支-查数 + if (data[i].ChannelStocks[j].BoardType.ToString().Contains("2")) { + byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo); + AfterQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); + logger.Info($"单支抽屉,关抽屉后检测数量【{string.Join(",", AfterQuantity)}】"); + WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1] = data[i].BeforeQuantity[data[i].ChannelStocks[j].ColNo - 1] - AfterQuantity[data[i].ChannelStocks[j].ColNo - 1]; + if (data[i].ChannelStocks[j].Quantity != WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1]) + { + alertMessage += $"{data[i].Drug.DrugName}应取数量【{data[i].ChannelStocks[j].Quantity}】,实际取出数量【{WeightFinnalQuantity[data[i].ChannelStocks[j].ColNo - 1]}】"; + } + } + if (!string.IsNullOrEmpty(alertMessage)) + { + //弹出确认对话框 + alertMessage += "应取数与实际取出数不一致确认要保存吗?"; + //弹出确认提示框 + // var confirm = await dialogService.OpenAsync + // ( + // $"保存确认", + // new Dictionary + // () { { "confirmInfo", alertMessage } }, + // new DialogOptions() + // { Width = "45vw", Resizable = true, Draggable = true, ShowClose = false }); + + // if (!confirm) + // { + // RestData(); + // logger.Info("取消保存"); + // cancelFlag = true; + // // 关闭弹窗 + // dialogService.Close(false); + // break; + // } + // else + // { + // logger.Info(alertMessage); + // } logger.Info(alertMessage); + alertMessage = string.Empty; } - alertMessage = string.Empty; } } } @@ -357,6 +371,15 @@ break; } } + // 所有抽屉操作完成,断电单支抽屉 + for (int i = 0; i < drawerNos.Count; i++) + { + if (setting.Value.single.Contains(drawerNos[i])) + { + PortUtil.PowerOff(drawerNos[i]); + await Task.Delay(200); + } + } stop(); } else @@ -402,12 +425,10 @@ } } }); - PortUtil.PowerOff(); } void RestData() { - PortUtil.PowerOff(); PortUtil.Operate = false; this.status = 0; _flagList.Clear(); diff --git a/MasaBlazorApp3/Pages/InvoiceOutDialog.razor b/MasaBlazorApp3/Pages/InvoiceOutDialog.razor index 30e1397..00bdb2b 100644 --- a/MasaBlazorApp3/Pages/InvoiceOutDialog.razor +++ b/MasaBlazorApp3/Pages/InvoiceOutDialog.razor @@ -220,7 +220,10 @@ new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } ); logger.Info($"抽屉打开失败"); - PortUtil.PowerOff(); + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } RestData(); stop(); } @@ -234,10 +237,6 @@ if (b) { options._data = 0; - if (setting.Value.single.Contains(drawerNo)) - { - PortUtil.PowerOff(); - } if (index == drawerNos.Count - 1) { @@ -315,6 +314,10 @@ break; } } + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } stop(); } else @@ -365,7 +368,11 @@ ); if (setting.Value.single.Contains(drawerNo)) { - PortUtil.PowerOff(); + + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } } stop(); } @@ -374,7 +381,6 @@ void RestData() { - PortUtil.PowerOff(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); this.status = 0; this.BeforeQuantity = new int[9]; diff --git a/MasaBlazorApp3/Pages/OrderDetailDialog.razor b/MasaBlazorApp3/Pages/OrderDetailDialog.razor index 438970b..4763644 100644 --- a/MasaBlazorApp3/Pages/OrderDetailDialog.razor +++ b/MasaBlazorApp3/Pages/OrderDetailDialog.razor @@ -124,11 +124,11 @@ { if (orderTakeVo.Status == 0) { - PortUtil.PowerOn(drawerNo); - await Task.Delay(portSetting.Value.delayTime); // 判断是否为单支抽屉 if (setting.Value.single.Contains(drawerNo)) { + PortUtil.PowerOn(drawerNo); + await Task.Delay(portSetting.Value.delayTime); byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo); orderTakeVo.BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); logger.Info($"单支抽屉,开抽屉前检测数量【{string.Join(",", orderTakeVo.BeforeQuantity)}】"); @@ -173,7 +173,10 @@ new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } ); logger.Info($"抽屉打开失败"); - PortUtil.PowerOff(drawerNo); + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } RestData(); stop(); } @@ -196,7 +199,6 @@ } }); orderTakeVo.Status = 2; - PortUtil.PowerOff(drawerNo); if (options._data == drawerNos.Count - 1) { PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); @@ -253,6 +255,10 @@ dialogService.Close(false); } } + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } stop(); } else @@ -285,13 +291,10 @@ stop(); } }); - - PortUtil.PowerOff(); } void RestData() { - PortUtil.PowerOff(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); this.status = 0; data.ForEach(it => diff --git a/MasaBlazorApp3/Pages/OrderDetailReturnDialog.razor b/MasaBlazorApp3/Pages/OrderDetailReturnDialog.razor index 405cf5d..3310ebd 100644 --- a/MasaBlazorApp3/Pages/OrderDetailReturnDialog.razor +++ b/MasaBlazorApp3/Pages/OrderDetailReturnDialog.razor @@ -17,7 +17,7 @@ @(order?.Sex) 年龄: @(order?.Age) - + - - + + - @if(status < 2) + @if (status < 2) { } - @if(status == 2) + @if (status == 2) { } - @if(status < 2) + @if (status < 2) { } @@ -168,8 +168,11 @@ new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } ); logger.Info($"处方退药抽屉【{drawerNo}】打开失败"); - PortUtil.PowerOff(); RestData(); + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } stop(); } } @@ -182,15 +185,15 @@ if (b) { options._data = 0; - if (setting.Value.single.Contains(drawerNo)) - { - PortUtil.PowerOff(); - } if (index == drawerNos.Count - 1) { PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); PortUtil.SpeakAsync($"退药完成,请,点击完成按钮进行确认"); this.status = 2; + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } stop(); } else @@ -232,7 +235,7 @@ ); if (setting.Value.single.Contains(drawerNo)) { - PortUtil.PowerOff(); + PortUtil.PowerOff(drawerNo); } stop(); } @@ -241,7 +244,6 @@ void RestData() { - PortUtil.PowerOff(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); this.status = 0; } @@ -253,7 +255,7 @@ } async Task TakeFinish() { - + // 保存账册、操作记录 var b = await orderInfoDao.OrderReturnFinish(data, order.OrderNo); if (!b) diff --git a/MasaBlazorApp3/Pages/RecordReturnDrugDialog.razor b/MasaBlazorApp3/Pages/RecordReturnDrugDialog.razor index 7fbd7c3..5e7de4b 100644 --- a/MasaBlazorApp3/Pages/RecordReturnDrugDialog.razor +++ b/MasaBlazorApp3/Pages/RecordReturnDrugDialog.razor @@ -158,13 +158,13 @@ { if (options._data == 0) { - PortUtil.PowerOn(drawerNo); - await Task.Delay(portSetting.Value.delayTime); BeforeQuantity = new int[9]; AfterQuantity = new int[9]; // 判断是否为单支抽屉 if (setting.Value.single.Contains(drawerNo)) { + PortUtil.PowerOn(drawerNo); + await Task.Delay(portSetting.Value.delayTime); byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo); BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); logger.Info($"单支抽屉【{drawerNo}】,开抽屉前检测数量【{string.Join(",", BeforeQuantity)}】"); @@ -185,7 +185,10 @@ new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } ); logger.Info($"抽屉打开失败"); - PortUtil.PowerOff(drawerNo); + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } RestData(); stop(); } @@ -257,12 +260,10 @@ stop(); } }); - PortUtil.PowerOff(); } void RestData() { - PortUtil.PowerOff(); this.status = 0; } diff --git a/MasaBlazorApp3/Pages/RecordReturnEmptyDialog.razor b/MasaBlazorApp3/Pages/RecordReturnEmptyDialog.razor index 944f9e5..551beb7 100644 --- a/MasaBlazorApp3/Pages/RecordReturnEmptyDialog.razor +++ b/MasaBlazorApp3/Pages/RecordReturnEmptyDialog.razor @@ -191,13 +191,13 @@ { if (options._data == 0) { - PortUtil.PowerOn(drawerNo); - await Task.Delay(portSetting.Value.delayTime); BeforeQuantity = new int[9]; AfterQuantity = new int[9]; // 判断是否为单支抽屉 if (setting.Value.single.Contains(drawerNo)) { + PortUtil.PowerOn(drawerNo); + await Task.Delay(portSetting.Value.delayTime); byte[] quantity = await PortUtil.CheckQuantityByDrawer(drawerNo); BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); logger.Info($"单支抽屉【{drawerNo}】,开抽屉前检测数量【{string.Join(",", BeforeQuantity)}】"); @@ -218,7 +218,10 @@ new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } ); logger.Info($"抽屉打开失败"); - PortUtil.PowerOff(drawerNo); + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } RestData(); stop(); } @@ -279,12 +282,10 @@ stop(); } }); - PortUtil.PowerOff(); } void RestData() { - PortUtil.PowerOff(); this.status = 0; } diff --git a/MasaBlazorApp3/Pages/SelfTakeDialog.razor b/MasaBlazorApp3/Pages/SelfTakeDialog.razor index 6f754e8..2e197f5 100644 --- a/MasaBlazorApp3/Pages/SelfTakeDialog.razor +++ b/MasaBlazorApp3/Pages/SelfTakeDialog.razor @@ -67,7 +67,7 @@ @code { -@inject Radzen.DialogService dialogService; + @inject Radzen.DialogService dialogService; @inject NotificationService _message @inject PortUtil PortUtil; @inject ISelfTakeDao selfTakeDao; @@ -77,7 +77,7 @@ int status; [Parameter] public OrderInfo order { get; set; } - [Parameter] public List orderDetails { get; set; } + [Parameter] public List orderDetails { get; set; } private bool CanTakeDrug = true; @@ -169,7 +169,10 @@ new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"抽屉【{drawerNo}】打开失败,请检测硬件", Duration = 4000 } ); logger.Info($"抽屉打开失败"); - PortUtil.PowerOff(); + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } RestData(); stop(); } @@ -193,7 +196,6 @@ }); PortUtil.Operate = false; orderTakeVo.Status = 2; - PortUtil.PowerOff(); if (options._data == drawerNos.Count - 1) { PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); @@ -250,6 +252,10 @@ dialogService.Close(false); } } + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } stop(); } else @@ -304,7 +310,6 @@ } void RestData() { - PortUtil.PowerOff(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); this.status = 0; } @@ -313,7 +318,7 @@ { // 保存账册、操作记录 - var b = await selfTakeDao.OrderTakeFinish(data,order); + var b = await selfTakeDao.OrderTakeFinish(data, order); if (!b) { _message.Notify(new NotificationMessage { Severity = NotificationSeverity.Error, Summary = "提示", Detail = $"数据保存失败", Duration = 4000 }); diff --git a/MasaBlazorApp3/Pages/StockCheck.razor b/MasaBlazorApp3/Pages/StockCheck.razor index afda802..d21f3eb 100644 --- a/MasaBlazorApp3/Pages/StockCheck.razor +++ b/MasaBlazorApp3/Pages/StockCheck.razor @@ -7,7 +7,7 @@ @@ -19,11 +19,11 @@ { if (setting.Value.returnDrawer != null && setting.Value.returnDrawer.Contains(i)) { - + } else { - + } } @@ -31,19 +31,19 @@ + LoadData="@LoadData" + IsLoading="@isLoading" + Count="@count" + EmptyText="无数据" + Data="@channels" + AllowColumnResize="true" AllowAlternatingRows="false" + CellClick="@((DataGridCellMouseEventArgs args) => OnCellClick(args))" + AllowPaging="true" PageSize="10" PagerHorizontalAlign="HorizontalAlign.Left" ShowPagingSummary="true" PagingSummaryFormat="{0}/{1} 共{2}条数据"> @if (status < 3) { - + } @if (status == 3) { @@ -171,11 +171,11 @@ // 开启抽屉 else if (this.status == 1) { - PortUtil.PowerOn(drawerNo); - await Task.Delay(portSetting.Value.delayTime); // 判断是否为单支抽屉 if (setting.Value.single.Contains(this.drawerNo)) { + PortUtil.PowerOn(drawerNo); + await Task.Delay(portSetting.Value.delayTime); byte[] quantity = await PortUtil.CheckQuantityByDrawer(this.drawerNo); BeforeQuantity = quantity.Select(it => Convert.ToInt32(it)).ToArray().Skip(3).Take(9).ToArray(); logger.Info($"单支抽屉,开抽屉前检测数量【{string.Join(",", BeforeQuantity)}】"); @@ -210,6 +210,10 @@ PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); PortUtil.SpeakAsync($"盘点完成,请,核对,或,录入,正确的,盘点数量"); this.status = 3; + if (setting.Value.single.Contains(drawerNo)) + { + PortUtil.PowerOff(drawerNo); + } stop(); } else @@ -245,12 +249,10 @@ stop(); } }); - PortUtil.PowerOff(); } void RestData() { - PortUtil.PowerOff(); PortUtil.speechSynthesizer.SpeakAsyncCancelAll(); this.status = 0; this.BeforeQuantity = new int[9]; diff --git a/MasaBlazorApp3/Port/PortUtil.cs b/MasaBlazorApp3/Port/PortUtil.cs index 79ddb73..5efad13 100644 --- a/MasaBlazorApp3/Port/PortUtil.cs +++ b/MasaBlazorApp3/Port/PortUtil.cs @@ -492,7 +492,7 @@ namespace MasaBlazorApp3.Port //单支板通电 public void PowerOn(int DrawerNo) { - DrawerNo = (DrawerNo > 8 ? DrawerNo - 8 : DrawerNo)*10; + DrawerNo = Convert.ToInt32(((DrawerNo > 8 ? DrawerNo - 8 : DrawerNo)*10).ToString(),16); if (_portConfig.StorageCan == 2) { canBusSerial.DiscardInBuffer(); @@ -509,7 +509,7 @@ namespace MasaBlazorApp3.Port //单支板断电 public void PowerOff(int DrawerNo) { - DrawerNo = (DrawerNo > 8 ? DrawerNo - 8 : DrawerNo)*10; + DrawerNo = Convert.ToInt32(((DrawerNo > 8 ? DrawerNo - 8 : DrawerNo) * 10).ToString(), 16); if (_portConfig.StorageCan == 2) { canBusSerial.DiscardInBuffer(); diff --git a/MasaBlazorApp3/appsettings.json b/MasaBlazorApp3/appsettings.json index 6a1d502..004ebdb 100644 --- a/MasaBlazorApp3/appsettings.json +++ b/MasaBlazorApp3/appsettings.json @@ -41,7 +41,7 @@ "delayTime": 200 }, "drawer": { - "single": [ 1,2 ], + "single": [ 1,2,3 ], "weigh": [ 4 ], "box": [ 4 ], "label": [ 4 ],