parent
							
								
									ef8627e884
								
							
						
					
					
						commit
						8d8502c734
					
				| 
						 | 
					@ -19,6 +19,8 @@ using DM_Weight.util;
 | 
				
			||||||
using log4net;
 | 
					using log4net;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Reflection.Metadata.Ecma335;
 | 
					using System.Reflection.Metadata.Ecma335;
 | 
				
			||||||
 | 
					using System.Windows.Threading;
 | 
				
			||||||
 | 
					using System.Windows;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace DM_Weight.ViewModels
 | 
					namespace DM_Weight.ViewModels
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -518,75 +520,78 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        public DelegateCommand ResetLabelCommand
 | 
					        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);
 | 
					            {
 | 
				
			||||||
 | 
					                Task t = new Task(() =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    var SelectChannels = Channels.FindAll(item => item.IsSelected && item.BoardType == 5);
 | 
				
			||||||
                    var c = SelectChannels.Count;
 | 
					                    var c = SelectChannels.Count;
 | 
				
			||||||
                    if (c > 0)
 | 
					                    if (c > 0)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                    List<Task> tasks = new List<Task>();
 | 
					 | 
				
			||||||
                    SelectChannels.ForEach(async item =>
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        //var channelStock = SqlSugarHelper.Db.Queryable<ChannelStock>().Where(cs => cs.Chnguid == item.Id).ToList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        if (item.BoardType == 5)
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        Status = true;
 | 
					                        Status = true;
 | 
				
			||||||
 | 
					                        SelectChannels.ForEach(item =>
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
                            if (item.DrugId == null)
 | 
					                            if (item.DrugId == null)
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                // 清除显示屏库位信息
 | 
					                                // 清除显示屏库位信息
 | 
				
			||||||
                                _portUtil.ClearContent(item.DrawerNo, item.ColNo);
 | 
					                                _portUtil.ClearContent(item.DrawerNo, item.ColNo);
 | 
				
			||||||
                                //await Task.Delay(200000);
 | 
					                                Thread.Sleep(200);
 | 
				
			||||||
                                //Thread.Sleep(200);
 | 
					 | 
				
			||||||
                                tasks.Add(TaskSleep());
 | 
					 | 
				
			||||||
                                _portUtil.ShowContent(item.DrawerNo, item.ColNo);
 | 
					                                _portUtil.ShowContent(item.DrawerNo, item.ColNo);
 | 
				
			||||||
 | 
					                                Thread.Sleep(200);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            else
 | 
					                            else
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                DrugInfo drugSelected = item.Drug;
 | 
					                                DrugInfo drugSelected = item.Drug ?? new DrugInfo();
 | 
				
			||||||
                                _portUtil.WindowName = "BindingChannelDialog";
 | 
					                                _portUtil.WindowName = "BindingChannelDialog";
 | 
				
			||||||
                                // 向显示屏写入库位信息
 | 
					                                // 向显示屏写入库位信息
 | 
				
			||||||
                                _portUtil.WriteChannelInfo(1, drugSelected.DrugName, item.DrawerNo, item.ColNo);
 | 
					                                _portUtil.WriteChannelInfo(1, drugSelected.DrugName ?? "", item.DrawerNo, item.ColNo);
 | 
				
			||||||
                                tasks.Add(TaskSleep());
 | 
					                                Thread.Sleep(200);
 | 
				
			||||||
                                _portUtil.WriteChannelInfo(2, drugSelected.DrugSpec, item.DrawerNo, item.ColNo);
 | 
					                                _portUtil.WriteChannelInfo(2, drugSelected.DrugSpec ?? "", item.DrawerNo, item.ColNo);
 | 
				
			||||||
                                tasks.Add(TaskSleep());
 | 
					                                Thread.Sleep(200);
 | 
				
			||||||
                                _portUtil.WriteChannelInfo(8, drugSelected.Manufactory.Length > 10 ? drugSelected.Manufactory.Substring(0, 10) : drugSelected.Manufactory, item.DrawerNo, item.ColNo);
 | 
					                                _portUtil.WriteChannelInfo(8, drugSelected.Manufactory == null ? "" : drugSelected.Manufactory.Length > 10 ? drugSelected.Manufactory.Substring(0, 10) : drugSelected.Manufactory, item.DrawerNo, item.ColNo);
 | 
				
			||||||
                                tasks.Add(TaskSleep());
 | 
					                                Thread.Sleep(200);
 | 
				
			||||||
                                _portUtil.ShowContent(item.DrawerNo, item.ColNo);
 | 
					                                _portUtil.ShowContent(item.DrawerNo, item.ColNo);
 | 
				
			||||||
                                //_portUtil.WriteChannelInfo(6, DrugManuNo.EffDate==null?"": DrugManuNo.EffDate, item.DrawerNo, item.ColNo);
 | 
					                                Thread.Sleep(200);
 | 
				
			||||||
                                //await Task.Delay(200);
 | 
					 | 
				
			||||||
                                //Thread.Sleep(200);
 | 
					 | 
				
			||||||
                                tasks.Add(TaskSleep());
 | 
					 | 
				
			||||||
                                _portUtil.WriteQuantity(item.DrawerNo, item.ColNo, item.totalCount);
 | 
					                                _portUtil.WriteQuantity(item.DrawerNo, item.ColNo, item.totalCount);
 | 
				
			||||||
                                //await Task.Delay(200);
 | 
					 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        });
 | 
					                        });
 | 
				
			||||||
                    Task.WhenAll(tasks);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if (Status.Equals(true))
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00e676"));
 | 
					 | 
				
			||||||
                        SnackbarMessageQueue.Enqueue("操作完成!");
 | 
					 | 
				
			||||||
                        Status = false;
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    GetChannelsByDrawerNo();
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    else
 | 
					                    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("#b71c1c"));
 | 
				
			||||||
 | 
					                            SnackbarMessageQueue.Enqueue("未选择库位或所选库位无标签");
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					                t.Start();
 | 
				
			||||||
 | 
					                t.ContinueWith(task =>
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (Status.Equals(true))
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        Status = false;
 | 
				
			||||||
 | 
					                        Application.Current.Dispatcher.Invoke(() =>
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            SnackbarBackground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#00e676"));
 | 
				
			||||||
 | 
					                            SnackbarMessageQueue.Enqueue("操作完成!");
 | 
				
			||||||
 | 
					                            GetChannelsByDrawerNo();
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        //static Task TaskSleep()
 | 
				
			||||||
 | 
					        //{
 | 
				
			||||||
 | 
					        //    //await Task.Delay(200);
 | 
				
			||||||
 | 
					        //    Thread.Sleep(200);
 | 
				
			||||||
 | 
					        //}
 | 
				
			||||||
        public DelegateCommand BtnCloseCommand
 | 
					        public DelegateCommand BtnCloseCommand
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            get => new DelegateCommand(() =>
 | 
					            get => new DelegateCommand(() =>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -170,8 +170,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (msg.WindowName == "CheckStockNewWindow")
 | 
					            if (msg.WindowName == "CheckStockNewWindow")
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                IGrouping<string, ChannelStock> grouping = enumerator.Current;
 | 
					                IGrouping<int, ChannelStock> grouping = enumerator.Current;
 | 
				
			||||||
                int DrawerNo =Convert.ToInt32(grouping.Key.Substring(0, grouping.Key.IndexOf('-')));
 | 
					                int DrawerNo = grouping.Key;// Convert.ToInt32(grouping.Key.Substring(0, grouping.Key.IndexOf('-')));
 | 
				
			||||||
                List<ChannelStock> channelStocks = grouping.ToList();
 | 
					                List<ChannelStock> channelStocks = grouping.ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                switch (msg.EventType)
 | 
					                switch (msg.EventType)
 | 
				
			||||||
| 
						 | 
					@ -198,34 +198,36 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                channelStocks.ForEach(it => it.process = 3);
 | 
					                                channelStocks.ForEach(it => it.process = 3);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            IGrouping<string, ChannelStock> groupingBefore = enumerator.Current;
 | 
					                            IGrouping<int, ChannelStock> groupingBefore = enumerator.Current;
 | 
				
			||||||
                            int DrawerNoBefore =  Convert.ToInt32(groupingBefore.Key.Substring(0, groupingBefore.Key.IndexOf('-')));
 | 
					                            int DrawerNoBefore = groupingBefore.Key; //Convert.ToInt32(groupingBefore.Key.Substring(0, groupingBefore.Key.IndexOf('-')));
 | 
				
			||||||
                            if (enumerator.MoveNext())
 | 
					                            if (enumerator.MoveNext())
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                IGrouping<string, ChannelStock> groupingAfter = enumerator.Current;
 | 
					                                IGrouping<int, ChannelStock> groupingAfter = enumerator.Current;
 | 
				
			||||||
                                int DrawerNoAfter = Convert.ToInt32(groupingAfter.Key.Substring(0, groupingAfter.Key.IndexOf('-')));
 | 
					                                int DrawerNoAfter = groupingAfter.Key;//Convert.ToInt32(groupingAfter.Key.Substring(0, groupingAfter.Key.IndexOf('-')));
 | 
				
			||||||
                                //if (DrawerNoBefore < 9 && DrawerNoAfter > 8)
 | 
					                                //if (DrawerNoBefore < 9 && DrawerNoAfter > 8)
 | 
				
			||||||
                                //{
 | 
					                                //{
 | 
				
			||||||
                                //    Thread.Sleep(50);
 | 
					                                //    Thread.Sleep(50);
 | 
				
			||||||
                                //}
 | 
					                                //}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                logger.Info($"抽屉号DrawerNoBefore【{DrawerNoBefore}】抽屉号DrawerNoAfter【{DrawerNoAfter}】");
 | 
					                                logger.Info($"抽屉号DrawerNoBefore【{DrawerNoBefore}】抽屉号DrawerNoAfter【{DrawerNoAfter}】");
 | 
				
			||||||
                                if (DrawerNoAfter == 17)
 | 
					                                if (DrawerNoAfter == 17 || DrawerNoBefore == 17)
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
                                    if (DrawerNoBefore == 17)
 | 
					                                    //if (DrawerNoBefore == 17)
 | 
				
			||||||
                                    {
 | 
					                                    {
 | 
				
			||||||
                                        Thread.Sleep(1000);
 | 
					                                        int sleepMilliseconds = Convert.ToInt32(ConfigurationManager.AppSettings["CheckSleepMilliseconds"] ?? "500");
 | 
				
			||||||
 | 
					                                        Thread.Sleep(sleepMilliseconds);
 | 
				
			||||||
 | 
					                                    }
 | 
				
			||||||
 | 
					                                    //else
 | 
				
			||||||
 | 
					                                    //{
 | 
				
			||||||
 | 
					                                    //    Thread.Sleep(500);
 | 
				
			||||||
 | 
					                                    //}
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
                                else
 | 
					                                else
 | 
				
			||||||
                                {
 | 
					                                {
 | 
				
			||||||
 | 
					                                    //Thread.Sleep(80);
 | 
				
			||||||
                                    Thread.Sleep(500);
 | 
					                                    Thread.Sleep(500);
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
                                }
 | 
					                                //logger.Info($"抽屉号DrawerNoBefore【{DrawerNoBefore}】抽屉号DrawerNoAfter【{DrawerNoAfter}】");
 | 
				
			||||||
                                else
 | 
					 | 
				
			||||||
                                {
 | 
					 | 
				
			||||||
                                    Thread.Sleep(80);
 | 
					 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                                logger.Info($"抽屉号DrawerNoBefore【{DrawerNoBefore}】抽屉号DrawerNoAfter【{DrawerNoAfter}】");
 | 
					 | 
				
			||||||
                                OpenOneByOne();
 | 
					                                OpenOneByOne();
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                            // 已经全部取出
 | 
					                            // 已经全部取出
 | 
				
			||||||
| 
						 | 
					@ -272,8 +274,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            set => SetProperty(ref _channelStocks, value);
 | 
					            set => SetProperty(ref _channelStocks, value);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private IEnumerable<IGrouping<string, ChannelStock>> enumerable;
 | 
					        private IEnumerable<IGrouping<int, ChannelStock>> enumerable;
 | 
				
			||||||
        private IEnumerator<IGrouping<string, ChannelStock>> enumerator;
 | 
					        private IEnumerator<IGrouping<int, ChannelStock>> enumerator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DelegateCommand BindingChannelDialog
 | 
					        public DelegateCommand BindingChannelDialog
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -301,8 +303,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (Status == 0)
 | 
					                if (Status == 0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    //enumerable = ChannelStocks.GroupBy(cs => cs.DrawerNo, cs => cs);
 | 
					                    enumerable = ChannelStocks.GroupBy(cs => cs.DrawerNo, cs => cs);
 | 
				
			||||||
                    enumerable = ChannelStocks.GroupBy(cs => cs.Location, cs => cs);
 | 
					                    //enumerable = ChannelStocks.GroupBy(cs => cs.Location, cs => cs);
 | 
				
			||||||
                    enumerator = enumerable.GetEnumerator();
 | 
					                    enumerator = enumerable.GetEnumerator();
 | 
				
			||||||
                    enumerator.MoveNext();
 | 
					                    enumerator.MoveNext();
 | 
				
			||||||
                    Status = 1;
 | 
					                    Status = 1;
 | 
				
			||||||
| 
						 | 
					@ -312,8 +314,9 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        private void OpenOneByOne()
 | 
					        private void OpenOneByOne()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            IGrouping<string, ChannelStock> grouping = enumerator.Current;
 | 
					            IGrouping<int, ChannelStock> grouping = enumerator.Current;
 | 
				
			||||||
            int DrawerNo =Convert.ToInt32(grouping.Key.Substring(0,grouping.Key.IndexOf('-')));
 | 
					            //int DrawerNo =Convert.ToInt32(grouping.Key.Substring(0,grouping.Key.IndexOf('-')));
 | 
				
			||||||
 | 
					            int DrawerNo = grouping.Key;
 | 
				
			||||||
            List<ChannelStock> channelStocks = grouping.ToList();
 | 
					            List<ChannelStock> channelStocks = grouping.ToList();
 | 
				
			||||||
            channelStocks.ForEach(it => it.process = 1);
 | 
					            channelStocks.ForEach(it => it.process = 1);
 | 
				
			||||||
            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
					            _portUtil.SpeakAsync("正在打开" + DrawerNo + "号抽屉");
 | 
				
			||||||
| 
						 | 
					@ -372,7 +375,6 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                    string InvoiceId = "CHECK_" + CurrentTimeMillis();
 | 
					                    string InvoiceId = "CHECK_" + CurrentTimeMillis();
 | 
				
			||||||
                    var f = SqlSugarHelper.Db.UseTran(() =>
 | 
					                    var f = SqlSugarHelper.Db.UseTran(() =>
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
 | 
					 | 
				
			||||||
                        for (int i = 0; i < record.Count; i++)
 | 
					                        for (int i = 0; i < record.Count; i++)
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            ChannelStock it = record[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}】");
 | 
					                            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 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,
 | 
					                        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,
 | 
					                          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,129 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
                                                                           })
 | 
					                                                                           })
 | 
				
			||||||
                                                                          .Select(it => new CheckRecordStock())
 | 
					                                                                          .Select(it => new CheckRecordStock())
 | 
				
			||||||
                                                                          .ToList();
 | 
					                                                                          .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        logger.Info("已完成-查询channel_stock关联drug_info表信息查询");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        List<CheckRecordStock> insertList = new List<CheckRecordStock>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        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("已完成-保存数据 盘点后药品总库存及批次库存数");
 | 
				
			||||||
 | 
					                        return true;
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                    if (f.Data)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        // 更新屏显库存
 | 
				
			||||||
 | 
					                        //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
				
			||||||
 | 
					                        List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType == 5)
 | 
				
			||||||
 | 
					                        .GroupBy(it => new
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            it.DrawerNo,
 | 
				
			||||||
 | 
					                            it.ColNo
 | 
				
			||||||
 | 
					                        }).Select(it =>
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            var ret = it.First();
 | 
				
			||||||
 | 
					                            ret.CheckQuantity = it.Sum(itx => itx.CheckQuantity);
 | 
				
			||||||
 | 
					                            //ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
				
			||||||
 | 
					                            return ret;
 | 
				
			||||||
 | 
					                        }).ToList();
 | 
				
			||||||
 | 
					                        //if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            singleChannels.ForEach(it =>
 | 
				
			||||||
 | 
					                            {
 | 
				
			||||||
 | 
					                                // 将库位多批次的总库存数更新标签
 | 
				
			||||||
 | 
					                                _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.CheckQuantity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            });
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                        logger.Info("已完成-更新标签");
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = "抽屉盘点完成,库存已更新",
 | 
				
			||||||
 | 
					                            Type = MsgType.SUCCESS,
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        RequestData();
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    if (!f.IsSuccess)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            Message = "抽屉盘点完成,库存更新失败!",
 | 
				
			||||||
 | 
					                            Type = MsgType.ERROR,
 | 
				
			||||||
 | 
					                        };
 | 
				
			||||||
 | 
					                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    Status = 0;
 | 
				
			||||||
 | 
					                    _isFinishClick = false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _isFinishClick = false;
 | 
				
			||||||
 | 
					                    AlertMsg alertMsg = new AlertMsg
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        Message = "盘点完成,库存无改变",
 | 
				
			||||||
 | 
					                        Type = MsgType.ERROR
 | 
				
			||||||
 | 
					                    };
 | 
				
			||||||
 | 
					                    _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
				
			||||||
 | 
					                    Status = 0;
 | 
				
			||||||
 | 
					                    _isFinishClick = false;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }, () => 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<CheckRecordStock> checkRecordStockList = SqlSugarHelper.Db.SqlQueryable<dynamic>(strSql)
 | 
				
			||||||
 | 
					                                                               .AddParameters(new
 | 
				
			||||||
 | 
					                                                               {
 | 
				
			||||||
 | 
					                                                                   machineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"
 | 
				
			||||||
 | 
					                                                               })
 | 
				
			||||||
 | 
					                                                              .Select(it => new CheckRecordStock())
 | 
				
			||||||
 | 
					                                                              .ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            logger.Info("已完成-查询channel_stock关联drug_info表信息查询");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            List<CheckRecordStock> insertList = new List<CheckRecordStock>();
 | 
					            List<CheckRecordStock> insertList = new List<CheckRecordStock>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (checkRecordStockList != null && checkRecordStockList.Count > 0)
 | 
					            if (checkRecordStockList != null && checkRecordStockList.Count > 0)
 | 
				
			||||||
| 
						 | 
					@ -469,71 +594,8 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        return true;
 | 
					            logger.Info("已完成-插入check_stock表信息");
 | 
				
			||||||
                    });
 | 
					 | 
				
			||||||
                    if (f.Data)
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        // 更新屏显库存
 | 
					 | 
				
			||||||
                        //List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1);
 | 
					 | 
				
			||||||
                        List<ChannelStock> singleChannels = record.FindAll(it => it.BoardType != 1)
 | 
					 | 
				
			||||||
                        .GroupBy(it => new
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            it.DrawerNo,
 | 
					 | 
				
			||||||
                            it.ColNo
 | 
					 | 
				
			||||||
                        }).Select(it =>
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            var ret = it.First();
 | 
					 | 
				
			||||||
                            ret.CheckQuantity = it.Sum(itx => itx.CheckQuantity);
 | 
					 | 
				
			||||||
                            //ret.AddQuantity = it.Sum(itx => itx.AddQuantity);
 | 
					 | 
				
			||||||
                            return ret;
 | 
					 | 
				
			||||||
                        }).ToList();
 | 
					 | 
				
			||||||
                        if ((singleChannels.Count > 0 ? singleChannels[0].BoardType : 1) == 5)
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            singleChannels.ForEach(it =>
 | 
					 | 
				
			||||||
                            {
 | 
					 | 
				
			||||||
                                // 将库位多批次的总库存数更新标签
 | 
					 | 
				
			||||||
                                _portUtil.WriteQuantity(it.DrawerNo, it.ColNo, it.CheckQuantity);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                            });
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
                        RequestData();
 | 
					 | 
				
			||||||
                        AlertMsg alertMsg = new AlertMsg
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            Message = "抽屉盘点完成,库存已更新",
 | 
					 | 
				
			||||||
                            Type = MsgType.SUCCESS,
 | 
					 | 
				
			||||||
                        };
 | 
					 | 
				
			||||||
                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    if (!f.IsSuccess)
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        AlertMsg alertMsg = new AlertMsg
 | 
					 | 
				
			||||||
                        {
 | 
					 | 
				
			||||||
                            Message = "抽屉盘点完成,库存更新失败!",
 | 
					 | 
				
			||||||
                            Type = MsgType.ERROR,
 | 
					 | 
				
			||||||
                        };
 | 
					 | 
				
			||||||
                        _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    Status = 0;
 | 
					 | 
				
			||||||
                    _isFinishClick = false;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    _isFinishClick = false;
 | 
					 | 
				
			||||||
                    AlertMsg alertMsg = new AlertMsg
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        Message = "盘点完成,库存无改变",
 | 
					 | 
				
			||||||
                        Type = MsgType.ERROR
 | 
					 | 
				
			||||||
                    };
 | 
					 | 
				
			||||||
                    _eventAggregator.GetEvent<SnackbarEvent>().Publish(alertMsg);
 | 
					 | 
				
			||||||
                    Status = 0;
 | 
					 | 
				
			||||||
                    _isFinishClick = false;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            }, () => Status == 3 && !_isFinishClick).ObservesProperty(() => Status);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // 取消按钮
 | 
					        // 取消按钮
 | 
				
			||||||
        public DelegateCommand CancleTake
 | 
					        public DelegateCommand CancleTake
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -613,6 +675,7 @@ namespace DM_Weight.ViewModels
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                .WhereIF(!String.IsNullOrEmpty(SearchValue), cs => cs.DrugInfo.DrugName == SearchValue)
 | 
					                .WhereIF(!String.IsNullOrEmpty(SearchValue), cs => cs.DrugInfo.DrugName == SearchValue)
 | 
				
			||||||
                .OrderBy(cs => cs.DrawerNo)
 | 
					                .OrderBy(cs => cs.DrawerNo)
 | 
				
			||||||
 | 
					                //.OrderByDescending(cs => cs.DrawerNo)
 | 
				
			||||||
                .OrderBy(cs => cs.ColNo)
 | 
					                .OrderBy(cs => cs.ColNo)
 | 
				
			||||||
                //.OrderBy(cs => cs.DrugId)
 | 
					                //.OrderBy(cs => cs.DrugId)
 | 
				
			||||||
                .ToList();
 | 
					                .ToList();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,11 +73,15 @@
 | 
				
			||||||
                    DisplayMemberPath="drug_name_spec" IsEditable="True" IsTextSearchEnabled="False" KeyUp="ComboBox_KeyUp"
 | 
					                    DisplayMemberPath="drug_name_spec" IsEditable="True" IsTextSearchEnabled="False" KeyUp="ComboBox_KeyUp"
 | 
				
			||||||
                />
 | 
					                />
 | 
				
			||||||
            <StackPanel HorizontalAlignment="Right"  Grid.Column="2" Grid.ColumnSpan="2" Orientation="Horizontal">
 | 
					            <StackPanel HorizontalAlignment="Right"  Grid.Column="2" Grid.ColumnSpan="2" Orientation="Horizontal">
 | 
				
			||||||
                <Button Margin="6 0 6 0" 
 | 
					                <Button
 | 
				
			||||||
                        Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
					                        Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
                        ToolTip="渲染标签"
 | 
					                        ToolTip="渲染标签"
 | 
				
			||||||
                        Content="渲染标签"
 | 
					                        Content="渲染标签"
 | 
				
			||||||
                        Command="{Binding ResetLabelCommand}"/>
 | 
					                        Command="{Binding ResetLabelCommand}" 
 | 
				
			||||||
 | 
					                        materialDesign:ButtonProgressAssist.IsIndicatorVisible="{Binding Status, UpdateSourceTrigger=PropertyChanged}"
 | 
				
			||||||
 | 
					                        materialDesign:ButtonProgressAssist.IsIndeterminate="{Binding Status, UpdateSourceTrigger=PropertyChanged}"
 | 
				
			||||||
 | 
					                            
 | 
				
			||||||
 | 
					                    />
 | 
				
			||||||
                    <Button
 | 
					                    <Button
 | 
				
			||||||
                        Margin="6 0 6 0"
 | 
					                        Margin="6 0 6 0"
 | 
				
			||||||
                        Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
					                        Style="{StaticResource MaterialDesignOutlinedLightButton}"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue