From 8d8502c734a8743d33e9e49b33e42f25d09034c3 Mon Sep 17 00:00:00 2001 From: maqiao <625215135@qq.com> Date: Thu, 29 Feb 2024 13:20:49 +0800 Subject: [PATCH] =?UTF-8?q?1)=E4=BF=AE=E6=94=B9=E6=B8=B2=E6=9F=93=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E6=97=B6=E6=8F=90=E7=A4=BA=E4=BF=A1=E6=81=AF=202)?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9B=98=E7=82=B9=E6=97=B6=E6=8C=89=E6=8A=BD?= =?UTF-8?q?=E5=B1=89=E5=8F=B7=E5=88=86=E7=BB=84=EF=BC=8C=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E6=97=B6=E6=A0=B9=E6=8D=AE=E6=A0=87=E7=AD=BE=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E5=86=99=E6=A0=87=E7=AD=BE=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BindingChannelNewDialogViewModel .cs | 97 +++++++------- .../CheckStockNewWindowViewModel.cs | 121 +++++++++++++----- .../Views/Dialog/BindingChannelNewDialog.xaml | 8 +- 3 files changed, 149 insertions(+), 77 deletions(-) diff --git a/DM_Weight/ViewModels/BindingChannelNewDialogViewModel .cs b/DM_Weight/ViewModels/BindingChannelNewDialogViewModel .cs index ea4feff..c0af7f4 100644 --- a/DM_Weight/ViewModels/BindingChannelNewDialogViewModel .cs +++ b/DM_Weight/ViewModels/BindingChannelNewDialogViewModel .cs @@ -19,6 +19,8 @@ using DM_Weight.util; using log4net; using System.Threading; using System.Reflection.Metadata.Ecma335; +using System.Windows.Threading; +using System.Windows; namespace DM_Weight.ViewModels { @@ -518,75 +520,78 @@ namespace DM_Weight.ViewModels /// public DelegateCommand ResetLabelCommand { - get => new DelegateCommand(() => + get => new DelegateCommand(ResetLabelMethod, () => Status == false); + } + private void ResetLabelMethod() + { + if (Channels != null) { - - var SelectChannels = Channels.FindAll(item => item.IsSelected); - var c = SelectChannels.Count; - if (c > 0) + Task t = new Task(() => { - List tasks = new List(); - SelectChannels.ForEach(async item => + var SelectChannels = Channels.FindAll(item => item.IsSelected && item.BoardType == 5); + var c = SelectChannels.Count; + if (c > 0) { - //var channelStock = SqlSugarHelper.Db.Queryable().Where(cs => cs.Chnguid == item.Id).ToList(); - - if (item.BoardType == 5) + Status = true; + SelectChannels.ForEach(item => { - - Status = true; if (item.DrugId == null) { // 清除显示屏库位信息 _portUtil.ClearContent(item.DrawerNo, item.ColNo); - //await Task.Delay(200000); - //Thread.Sleep(200); - tasks.Add(TaskSleep()); + Thread.Sleep(200); _portUtil.ShowContent(item.DrawerNo, item.ColNo); + Thread.Sleep(200); } else { - DrugInfo drugSelected = item.Drug; + DrugInfo drugSelected = item.Drug ?? new DrugInfo(); _portUtil.WindowName = "BindingChannelDialog"; // 向显示屏写入库位信息 - _portUtil.WriteChannelInfo(1, drugSelected.DrugName, item.DrawerNo, item.ColNo); - tasks.Add(TaskSleep()); - _portUtil.WriteChannelInfo(2, drugSelected.DrugSpec, item.DrawerNo, item.ColNo); - tasks.Add(TaskSleep()); - _portUtil.WriteChannelInfo(8, drugSelected.Manufactory.Length > 10 ? drugSelected.Manufactory.Substring(0, 10) : drugSelected.Manufactory, item.DrawerNo, item.ColNo); - tasks.Add(TaskSleep()); + _portUtil.WriteChannelInfo(1, drugSelected.DrugName ?? "", item.DrawerNo, item.ColNo); + Thread.Sleep(200); + _portUtil.WriteChannelInfo(2, drugSelected.DrugSpec ?? "", item.DrawerNo, item.ColNo); + Thread.Sleep(200); + _portUtil.WriteChannelInfo(8, drugSelected.Manufactory == null ? "" : drugSelected.Manufactory.Length > 10 ? drugSelected.Manufactory.Substring(0, 10) : drugSelected.Manufactory, item.DrawerNo, item.ColNo); + Thread.Sleep(200); _portUtil.ShowContent(item.DrawerNo, item.ColNo); - //_portUtil.WriteChannelInfo(6, DrugManuNo.EffDate==null?"": DrugManuNo.EffDate, item.DrawerNo, item.ColNo); - //await Task.Delay(200); - //Thread.Sleep(200); - tasks.Add(TaskSleep()); + Thread.Sleep(200); _portUtil.WriteQuantity(item.DrawerNo, item.ColNo, item.totalCount); - //await Task.Delay(200); } - } - }); - Task.WhenAll(tasks); + }); + } + else + { + Application.Current.Dispatcher.Invoke(() => + { + SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c")); + SnackbarMessageQueue.Enqueue("未选择库位或所选库位无标签"); + }); + } + }); + t.Start(); + t.ContinueWith(task => + { if (Status.Equals(true)) { - SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00e676")); - SnackbarMessageQueue.Enqueue("操作完成!"); Status = false; - } - GetChannelsByDrawerNo(); - } - else - { + Application.Current.Dispatcher.Invoke(() => + { - SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b71c1c")); - SnackbarMessageQueue.Enqueue("请选择库位"); - return; - } - }, () => Status == false); - } - static async Task TaskSleep() - { - await Task.Delay(200); + SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00e676")); + SnackbarMessageQueue.Enqueue("操作完成!"); + GetChannelsByDrawerNo(); + }); + } + }); + } } + //static Task TaskSleep() + //{ + // //await Task.Delay(200); + // Thread.Sleep(200); + //} public DelegateCommand BtnCloseCommand { get => new DelegateCommand(() => diff --git a/DM_Weight/ViewModels/CheckStockNewWindowViewModel.cs b/DM_Weight/ViewModels/CheckStockNewWindowViewModel.cs index 6cd723f..78023a6 100644 --- a/DM_Weight/ViewModels/CheckStockNewWindowViewModel.cs +++ b/DM_Weight/ViewModels/CheckStockNewWindowViewModel.cs @@ -170,8 +170,8 @@ namespace DM_Weight.ViewModels if (msg.WindowName == "CheckStockNewWindow") { - IGrouping grouping = enumerator.Current; - int DrawerNo =Convert.ToInt32(grouping.Key.Substring(0, grouping.Key.IndexOf('-'))); + IGrouping grouping = enumerator.Current; + int DrawerNo = grouping.Key;// Convert.ToInt32(grouping.Key.Substring(0, grouping.Key.IndexOf('-'))); List channelStocks = grouping.ToList(); switch (msg.EventType) @@ -198,34 +198,36 @@ namespace DM_Weight.ViewModels { channelStocks.ForEach(it => it.process = 3); } - IGrouping groupingBefore = enumerator.Current; - int DrawerNoBefore = Convert.ToInt32(groupingBefore.Key.Substring(0, groupingBefore.Key.IndexOf('-'))); + IGrouping groupingBefore = enumerator.Current; + int DrawerNoBefore = groupingBefore.Key; //Convert.ToInt32(groupingBefore.Key.Substring(0, groupingBefore.Key.IndexOf('-'))); if (enumerator.MoveNext()) { - IGrouping groupingAfter = enumerator.Current; - int DrawerNoAfter = Convert.ToInt32(groupingAfter.Key.Substring(0, groupingAfter.Key.IndexOf('-'))); + IGrouping groupingAfter = enumerator.Current; + int DrawerNoAfter = groupingAfter.Key;//Convert.ToInt32(groupingAfter.Key.Substring(0, groupingAfter.Key.IndexOf('-'))); //if (DrawerNoBefore < 9 && DrawerNoAfter > 8) //{ // Thread.Sleep(50); //} logger.Info($"抽屉号DrawerNoBefore【{DrawerNoBefore}】抽屉号DrawerNoAfter【{DrawerNoAfter}】"); - if (DrawerNoAfter == 17) + if (DrawerNoAfter == 17 || DrawerNoBefore == 17) { - if (DrawerNoBefore == 17) + //if (DrawerNoBefore == 17) { - Thread.Sleep(1000); - } - else - { - Thread.Sleep(500); + int sleepMilliseconds = Convert.ToInt32(ConfigurationManager.AppSettings["CheckSleepMilliseconds"] ?? "500"); + Thread.Sleep(sleepMilliseconds); } + //else + //{ + // Thread.Sleep(500); + //} } else { - Thread.Sleep(80); + //Thread.Sleep(80); + Thread.Sleep(500); } - logger.Info($"抽屉号DrawerNoBefore【{DrawerNoBefore}】抽屉号DrawerNoAfter【{DrawerNoAfter}】"); + //logger.Info($"抽屉号DrawerNoBefore【{DrawerNoBefore}】抽屉号DrawerNoAfter【{DrawerNoAfter}】"); OpenOneByOne(); } // 已经全部取出 @@ -272,8 +274,8 @@ namespace DM_Weight.ViewModels set => SetProperty(ref _channelStocks, value); } - private IEnumerable> enumerable; - private IEnumerator> enumerator; + private IEnumerable> enumerable; + private IEnumerator> enumerator; public DelegateCommand BindingChannelDialog { @@ -301,8 +303,8 @@ namespace DM_Weight.ViewModels { if (Status == 0) { - //enumerable = ChannelStocks.GroupBy(cs => cs.DrawerNo, cs => cs); - enumerable = ChannelStocks.GroupBy(cs => cs.Location, cs => cs); + enumerable = ChannelStocks.GroupBy(cs => cs.DrawerNo, cs => cs); + //enumerable = ChannelStocks.GroupBy(cs => cs.Location, cs => cs); enumerator = enumerable.GetEnumerator(); enumerator.MoveNext(); Status = 1; @@ -312,8 +314,9 @@ namespace DM_Weight.ViewModels } private void OpenOneByOne() { - IGrouping grouping = enumerator.Current; - int DrawerNo =Convert.ToInt32(grouping.Key.Substring(0,grouping.Key.IndexOf('-'))); + IGrouping grouping = enumerator.Current; + //int DrawerNo =Convert.ToInt32(grouping.Key.Substring(0,grouping.Key.IndexOf('-'))); + int DrawerNo = grouping.Key; List channelStocks = grouping.ToList(); channelStocks.ForEach(it => it.process = 1); _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉"); @@ -372,7 +375,6 @@ namespace DM_Weight.ViewModels string InvoiceId = "CHECK_" + CurrentTimeMillis(); var f = SqlSugarHelper.Db.UseTran(() => { - for (int i = 0; i < record.Count; i++) { ChannelStock it = record[i]; @@ -417,7 +419,7 @@ namespace DM_Weight.ViewModels logger.Info($"库存盘点->库位【{it.DrawerNo}-{it.ColNo}】药品【{it.DrugInfo.DrugName}】盘点前库存【{it.Quantity}】,更改后【{it.CheckQuantity}】"); } - + //Task.Factory.StartNew(()=> SaveCheckRecord()); string machine_id = (ConfigurationManager.AppSettings["machineId"] ?? "DM1"); string strSql = $@"SELECT cl.`row_no` AS rowNo,cl.`col_no` AS colNo,cl.`quantity` AS quantity,cl.`manu_no` AS manuNo,cl.`eff_date` AS effDate, di.`drug_name` AS drugName,di.`drug_spec` AS drugSpec,di.`pack_unit` AS packUnit,di.`manufactory` AS manufactory,di.`max_stock` maxStock, @@ -429,6 +431,9 @@ namespace DM_Weight.ViewModels }) .Select(it => new CheckRecordStock()) .ToList(); + + logger.Info("已完成-查询channel_stock关联drug_info表信息查询"); + List insertList = new List(); if (checkRecordStockList != null && checkRecordStockList.Count > 0) @@ -467,15 +472,14 @@ namespace DM_Weight.ViewModels }).ExecuteCommand(); } } - - + logger.Info("已完成-保存数据 盘点后药品总库存及批次库存数"); return true; }); if (f.Data) { // 更新屏显库存 //List singleChannels = record.FindAll(it => it.BoardType != 1); - List singleChannels = record.FindAll(it => it.BoardType != 1) + List singleChannels = record.FindAll(it => it.BoardType == 5) .GroupBy(it => new { it.DrawerNo, @@ -487,7 +491,7 @@ namespace DM_Weight.ViewModels //ret.AddQuantity = it.Sum(itx => itx.AddQuantity); return ret; }).ToList(); - if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5) + //if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5) { singleChannels.ForEach(it => { @@ -496,14 +500,15 @@ namespace DM_Weight.ViewModels }); } - - RequestData(); + logger.Info("已完成-更新标签"); AlertMsg alertMsg = new AlertMsg { Message = "抽屉盘点完成,库存已更新", Type = MsgType.SUCCESS, }; _eventAggregator.GetEvent().Publish(alertMsg); + + RequestData(); } if (!f.IsSuccess) { @@ -533,7 +538,64 @@ namespace DM_Weight.ViewModels }, () => Status == 3 && !_isFinishClick).ObservesProperty(() => Status); } + public void SaveCheckRecord() + { + string machine_id = (ConfigurationManager.AppSettings["machineId"] ?? "DM1"); + string strSql = $@"SELECT cl.`row_no` AS rowNo,cl.`col_no` AS colNo,cl.`quantity` AS quantity,cl.`manu_no` AS manuNo,cl.`eff_date` AS effDate, + di.`drug_name` AS drugName,di.`drug_spec` AS drugSpec,di.`pack_unit` AS packUnit,di.`manufactory` AS manufactory,di.`max_stock` maxStock, + cl.`drug_id` AS drugId,cl.`machine_id` AS MachineId FROM channel_stock cl INNER JOIN drug_info di ON di.`drug_id` = cl.`drug_id` WHERE cl.`machine_id` = '{machine_id}' AND cl.`drawer_type` = 1 ORDER BY cl.`drug_id`"; + List checkRecordStockList = SqlSugarHelper.Db.SqlQueryable(strSql) + .AddParameters(new + { + machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1" + }) + .Select(it => new CheckRecordStock()) + .ToList(); + logger.Info("已完成-查询channel_stock关联drug_info表信息查询"); + + List insertList = new List(); + + if (checkRecordStockList != null && checkRecordStockList.Count > 0) + { + for (int i = 0; i < checkRecordStockList.Count; i++) + { + if (!(insertList.Where(it => it.drugId == checkRecordStockList[i].drugId && it.manuNo == checkRecordStockList[i].manuNo).Count() > 0)) + { + insertList.Add(checkRecordStockList[i]); + } + } + for (int j = 0; j < insertList.Count; j++) + { + + + CheckRecordStock cStock = insertList[j]; + // 保存数据 盘点后药品总库存及批次库存数 + SqlSugarHelper.Db.Insertable(new CheckRecordStock() + { + rowNo = cStock.rowNo, + colNo = cStock.colNo, + ManuQuantity = checkRecordStockList.Where(it => it.drugId == cStock.drugId && it.manuNo == cStock.manuNo).Sum(it => it.quantity), + manuNo = cStock.manuNo, + effDate = cStock.effDate, + drugName = cStock.drugName, + manufactory = cStock.manufactory, + drugSpec = cStock.drugSpec, + packUnit = cStock.packUnit, + maxStock = cStock.maxStock, + drugId = cStock.drugId, + MachineId = cStock.MachineId, + quantity = checkRecordStockList.Where(it => it.drugId == cStock.drugId).Sum(it => it.quantity), + optdate = DateTime.Now.ToString(), + operatorUser = HomeWindowViewModel.Operator?.Id.ToString(), + reviewerUser = HomeWindowViewModel.Reviewer?.Id.ToString() + }).ExecuteCommand(); + } + } + + + logger.Info("已完成-插入check_stock表信息"); + } // 取消按钮 public DelegateCommand CancleTake { @@ -613,6 +675,7 @@ namespace DM_Weight.ViewModels .WhereIF(!String.IsNullOrEmpty(SearchValue), cs => cs.DrugInfo.DrugName == SearchValue) .OrderBy(cs => cs.DrawerNo) + //.OrderByDescending(cs => cs.DrawerNo) .OrderBy(cs => cs.ColNo) //.OrderBy(cs => cs.DrugId) .ToList(); diff --git a/DM_Weight/Views/Dialog/BindingChannelNewDialog.xaml b/DM_Weight/Views/Dialog/BindingChannelNewDialog.xaml index a1c8482..8bf5e1b 100644 --- a/DM_Weight/Views/Dialog/BindingChannelNewDialog.xaml +++ b/DM_Weight/Views/Dialog/BindingChannelNewDialog.xaml @@ -73,11 +73,15 @@ DisplayMemberPath="drug_name_spec" IsEditable="True" IsTextSearchEnabled="False" KeyUp="ComboBox_KeyUp" /> -