diff --git a/DM_Weight/ViewModels/InvoiceInNewWindowViewModel.cs b/DM_Weight/ViewModels/InvoiceInNewWindowViewModel.cs index d2c4273..7d04c32 100644 --- a/DM_Weight/ViewModels/InvoiceInNewWindowViewModel.cs +++ b/DM_Weight/ViewModels/InvoiceInNewWindowViewModel.cs @@ -308,7 +308,7 @@ namespace DM_Weight.ViewModels //.Includes(cl => cl.channelStocks, dr => dr.DrugInfo, d => d.DrugManuNos) .Where(cl => cl.DrugId == invoices[i].DrugId && cl.MachineId == (ConfigurationManager.AppSettings["machineId"] ?? "DM1")).ToList(); ChannelList channelLst = channelL.Count > 0 ? channelL[0] : null; - if (channelLst == null || channelLst.Id is null) + if (channelL.Count <= 0) { //药品未绑定库位,需要先绑药 //AlertMsg alertMsg = new AlertMsg @@ -343,18 +343,45 @@ namespace DM_Weight.ViewModels _eventAggregator.GetEvent().Publish(alertMsg); continue; } - ChannelStock stock = new ChannelStock(); - //没有库存写入一条数据 - stock.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"; - stock.DrawerNo = channelLst.DrawerNo; - stock.BoardType = channelLst.BoardType; - stock.DrawerType = channelLst.DrawerType; - stock.ColNo = channelLst.ColNo; - stock.DrugId = channelLst.DrugId; - stock.ManuNo = invoicesManuNo[j].DrugManuNo; - stock.EffDate = manuNoList[0].EffDate; - stock.Chnguid = channelLst.Id; - stockList.Add(stock); + //没有根据药品绑定库位写入数据 + for (int k = 0; k < channelL.Count; k++) + { + + ChannelStock stock = new ChannelStock(); + stock.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"; + stock.DrawerNo = channelL[k].DrawerNo; + stock.BoardType = channelL[k].BoardType; + stock.DrawerType = channelL[k].DrawerType; + stock.ColNo = channelL[k].ColNo; + stock.DrugId = channelL[k].DrugId; + stock.ManuNo = invoicesManuNo[j].DrugManuNo; + stock.EffDate = manuNoList[0].EffDate; + stock.Chnguid = channelL[k].Id; + stockList.Add(stock); + } + } + else + { + //药品有库存,则除了将对应药品批次数据列出来外,还要将当前已绑定的药品下添加上该批次 + for (int k = 0; k < channelL.Count; k++) + { + //有库存且批次抽屉库位与将要插入的批次抽屉库位一致则跳过 + if(stockList.Where(t=>t.ManuNo== invoicesManuNo[j].DrugManuNo&&t.ColNo== channelL[k].ColNo&&t.DrawerNo== channelL[k].DrawerNo).FirstOrDefault()!=null) + { + continue; + } + ChannelStock stock = new ChannelStock(); + stock.MachineId = ConfigurationManager.AppSettings["machineId"] ?? "DM1"; + stock.DrawerNo = channelL[k].DrawerNo; + stock.BoardType = channelL[k].BoardType; + stock.DrawerType = channelL[k].DrawerType; + stock.ColNo = channelL[k].ColNo; + stock.DrugId = channelL[k].DrugId; + stock.ManuNo = invoicesManuNo[j].DrugManuNo; + stock.EffDate = manuNoList[0].EffDate; + stock.Chnguid = channelL[k].Id; + stockList.Add(stock); + } } //stock.AddQuantity = invoicesManuNo[j].quantity; //stockList.ForEach(s => s.AddQuantity = invoicesManuNo[j].quantity); @@ -635,22 +662,22 @@ namespace DM_Weight.ViewModels { //if (singleChannels[i].BoardType == 5) //{ - List channelStockEffDate = SqlSugarHelper.Db.Queryable() - .Where(cs => cs.MachineId == singleChannels[i].MachineId) - .Where(cs => cs.DrawerNo == singleChannels[i].DrawerNo) - .Where(cs => cs.ColNo == singleChannels[i].ColNo) - .Where(cs=>cs.Quantity>0) - .OrderBy(cs => cs.EffDate).ToList(); - int totalQuantity = channelStockEffDate.Sum(it => it.Quantity); + List channelStockEffDate = SqlSugarHelper.Db.Queryable() + .Where(cs => cs.MachineId == singleChannels[i].MachineId) + .Where(cs => cs.DrawerNo == singleChannels[i].DrawerNo) + .Where(cs => cs.ColNo == singleChannels[i].ColNo) + .Where(cs => cs.Quantity > 0) + .OrderBy(cs => cs.EffDate).ToList(); + int totalQuantity = channelStockEffDate.Sum(it => it.Quantity); - //将库位多批次的总库存数更新标签 - _portUtil.WriteQuantity(channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo, totalQuantity); - Thread.Sleep(200); - _portUtil.WriteChannelInfo(6, channelStockEffDate[0].EffDate == null ? "" : channelStockEffDate[0].EffDate, channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo); - Thread.Sleep(200); - _portUtil.WriteChannelInfo(5, channelStockEffDate[0].ManuNo, channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo); - Thread.Sleep(200); - _portUtil.ShowContent(channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo); + //将库位多批次的总库存数更新标签 + _portUtil.WriteQuantity(channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo, totalQuantity); + Thread.Sleep(200); + _portUtil.WriteChannelInfo(6, channelStockEffDate[0].EffDate == null ? "" : channelStockEffDate[0].EffDate, channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo); + Thread.Sleep(200); + _portUtil.WriteChannelInfo(5, channelStockEffDate[0].ManuNo, channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo); + Thread.Sleep(200); + _portUtil.ShowContent(channelStockEffDate[0].DrawerNo, channelStockEffDate[0].ColNo); //} } }