From 3d512a00e6afc2b6cb44c42f13302ff5ae45be3c Mon Sep 17 00:00:00 2001 From: maqiao <625215135@qq.com> Date: Fri, 21 Mar 2025 14:42:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=A4=84=E6=96=B9=E5=8F=96?= =?UTF-8?q?=E5=90=8C=E4=B8=80=E7=A7=8D=E8=8D=AF=E5=90=88=E5=B9=B6=E6=95=B0?= =?UTF-8?q?=E9=87=8F=20=E7=9B=98=E7=82=B9=E6=B7=BB=E5=8A=A0machine=5Fid?= =?UTF-8?q?=E5=AD=97=E4=BD=93=E6=9F=A5=E8=AF=A2=E5=88=86=E5=88=AB=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=20=E5=90=8C=E4=B8=80=E5=A4=84=E6=96=B9=E4=B8=8B?= =?UTF-8?q?=E4=B8=8D=E5=90=8C=E8=8D=AF=E5=93=81=E5=9C=A8=E5=A4=84=E6=96=B9?= =?UTF-8?q?=E8=B4=A6=E5=86=8C=E6=8A=A5=E8=A1=A8=E4=B8=AD=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E8=8D=AF=E5=93=81id=E5=85=B3=E8=81=94=E6=9D=A1=E4=BB=B6=20?= =?UTF-8?q?=E4=B8=8D=E5=85=A5=E8=B4=A6=E5=86=8C(96)=E5=8F=96=E8=8D=AF?= =?UTF-8?q?=E5=90=8E=E4=B8=8D=E8=BF=98=E7=A9=BA=E7=93=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DM_Weight/App.config | 6 +- DM_Weight/Models/OrderDetail.cs | 6 ++ DM_Weight/Report/GridReportUtil.cs | 4 +- .../CheckRecordNewWindowViewModel.cs | 5 +- .../DrawerTakeDrugWindowViewModel.cs | 3 +- .../MultiOrderTakeDialogViewModel.cs | 90 ++++++++++++++----- .../MultiOrderTakeDrugWindowViewModel.cs | 2 +- .../ViewModels/OrderTakeDialogViewModel.cs | 39 +++++--- .../OrderTakeDrugWindowViewModel.cs | 2 +- .../ViewModels/SelfTakeDialogViewModel.cs | 3 +- 10 files changed, 114 insertions(+), 46 deletions(-) diff --git a/DM_Weight/App.config b/DM_Weight/App.config index fd496d9..16c9ff8 100644 --- a/DM_Weight/App.config +++ b/DM_Weight/App.config @@ -3,7 +3,7 @@ - + - + @@ -40,7 +40,7 @@ - + diff --git a/DM_Weight/Models/OrderDetail.cs b/DM_Weight/Models/OrderDetail.cs index 109654c..416f9fd 100644 --- a/DM_Weight/Models/OrderDetail.cs +++ b/DM_Weight/Models/OrderDetail.cs @@ -127,5 +127,11 @@ namespace DM_Weight.Models /// [SugarColumn(ColumnName = "use_dosage")] public string UseDosage { get; set; } + /// + /// 药品状态0未取1已取 + /// 默认值: 0 + /// + [SugarColumn(ColumnName = "detail_status")] + public int? DetailStatus { get; set; } } } \ No newline at end of file diff --git a/DM_Weight/Report/GridReportUtil.cs b/DM_Weight/Report/GridReportUtil.cs index a143637..ca2f1b0 100644 --- a/DM_Weight/Report/GridReportUtil.cs +++ b/DM_Weight/Report/GridReportUtil.cs @@ -305,10 +305,10 @@ namespace DM_Weight.Report SQL = $@"SELECT DISTINCT oi.recv_date,oi.p_name,oi.sex,oi.age,oi.id_number,oi.patient_no,oi.patient_id,oi.disease,dm.manu_no,dm.Quantity,oi.doctor_name,oi.order_no,dm.reviewer,dm.operator,ul.user_name operatorName,ul2.user_name reviewerName ,di.Drug_name,di.Drug_spec,di.big_unit,di.small_unit as smallUnit,di.drug_id,di.manuFactory,dm.receivePerson,dm.ordinalNum as ordinalNum,CONCAT(DATE_FORMAT(operation_time,'%Y%m%d'),ordinalnum) as OrderOrdinal from order_info oi inner join order_detail od on oi.order_no=od.Order_No - LEFT JOIN dm_machine_record dm on oi.order_no=dm.invoice_id + LEFT JOIN dm_machine_record dm on oi.order_no=dm.invoice_id AND od.`drug_id`=dm.`drug_id` inner JOIN drug_info di on od.drug_id=di.drug_id left join user_list ul on dm.operator=ul.id left join user_list ul2 on dm.reviewer=ul2.id - WHERE dm.machine_id = '{p_machine_id}' and oi.recv_date>'{p_startDate}' and oi.recv_date<'{p_endDate}'"; + WHERE dm.machine_id = '{p_machine_id}' and oi.recv_date>'{p_startDate}' and oi.recv_date<'{p_endDate}' and dm.type=2 "; if (!string.IsNullOrEmpty(orderNo)) { SQL += $" and oi.order_no='{orderNo}'"; diff --git a/DM_Weight/ViewModels/CheckRecordNewWindowViewModel.cs b/DM_Weight/ViewModels/CheckRecordNewWindowViewModel.cs index 39d60fc..baeb103 100644 --- a/DM_Weight/ViewModels/CheckRecordNewWindowViewModel.cs +++ b/DM_Weight/ViewModels/CheckRecordNewWindowViewModel.cs @@ -12,6 +12,7 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; +using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -144,8 +145,8 @@ namespace DM_Weight.ViewModels { int totalCount = 0; string strSql = @"SELECT optDate AS optdate,U.User_name AS operatorUser,R.User_name AS reviewerUser,Drug_spec AS drugSpec,Manufactory AS manufactory,Quantity FROM check_stock C - LEFT JOIN user_list U ON C.operator=U.ID LEFT JOIN user_list R ON C.reviewer=R.ID WHERE 1=1"; - if(StartDate!=null) + LEFT JOIN user_list U ON C.operator=U.ID LEFT JOIN user_list R ON C.reviewer=R.ID WHERE C.machine_id='" + ConfigurationManager.AppSettings["machineId"] ?? "DM1" + "'"; + if (StartDate!=null) { strSql += " AND C.optDate>@OPTSTARTDATE "; } diff --git a/DM_Weight/ViewModels/DrawerTakeDrugWindowViewModel.cs b/DM_Weight/ViewModels/DrawerTakeDrugWindowViewModel.cs index fad6870..d5739a0 100644 --- a/DM_Weight/ViewModels/DrawerTakeDrugWindowViewModel.cs +++ b/DM_Weight/ViewModels/DrawerTakeDrugWindowViewModel.cs @@ -285,7 +285,8 @@ namespace DM_Weight.ViewModels StockQuantity = nowChannels.Sum(it => it.Quantity), ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity), SupplierDept = ConfigurationManager.AppSettings["supplierDept"].ToString(), - ReceiveDept = ConfigurationManager.AppSettings["receiveDept"].ToString() + ReceiveDept = ConfigurationManager.AppSettings["receiveDept"].ToString(), + Status = SelectedItemUseFor.UseId == 0 ? 0 : 2 //不入账册(96)取药后不还空瓶 }).ExecuteCommand(); logger.Info("Insert_MachineRecord完成"); diff --git a/DM_Weight/ViewModels/MultiOrderTakeDialogViewModel.cs b/DM_Weight/ViewModels/MultiOrderTakeDialogViewModel.cs index abe6c40..57d2bec 100644 --- a/DM_Weight/ViewModels/MultiOrderTakeDialogViewModel.cs +++ b/DM_Weight/ViewModels/MultiOrderTakeDialogViewModel.cs @@ -363,8 +363,6 @@ namespace DM_Weight.ViewModels if (OrderInfo.Count > 0) { - - for (int j = 0; j < OrderInfo.Count; j++) { string InvoiceId = OrderInfo[j].OrderNo; @@ -376,30 +374,58 @@ namespace DM_Weight.ViewModels // OrderNo = OrderInfo[j].OrderNo //}).UpdateColumns(it => new { it.DmStatus }).WhereColumns(it => new { it.OrderNo }).ExecuteCommand(); - SqlSugarHelper.Db.Insertable(new OrderFinish() - { - OrderNo = OrderInfo[j].OrderNo, - PatientId = OrderInfo[j].PatientId, - Pharmacy = OrderInfo[j].Pharmacy, - State = 1, - Operator = HomeWindowViewModel.Operator?.Nickname, - }); + //SqlSugarHelper.Db.Insertable(new OrderFinish() + //{ + // OrderNo = OrderInfo[j].OrderNo, + // PatientId = OrderInfo[j].PatientId, + // Pharmacy = OrderInfo[j].Pharmacy, + // State = 1, + // Operator = HomeWindowViewModel.Operator?.Nickname, + //}); + //已取药数量 + int hasTake = 0; for (int i = 0; i < record.Count; i++) { int ordinalNum = SqlSugarHelper.Db.Queryable() - .Where(mr => mr.OperationTime.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")&&mr.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")) - .Max(mr => mr.OrdinalNum); - - List orderDet = SqlSugarHelper.Db.Queryable().Where(od => od.OrderNo == OrderInfo[j].OrderNo && od.DrugId == record[i].DrugId).ToList(); - //该对方没有这个药,跳出循环 - if (orderDet == null || orderDet.Count <= 0) + .Where(mr => mr.OperationTime.ToString("yyyy-MM-dd") == DateTime.Now.ToString("yyyy-MM-dd")) + .Max(mr => mr.OrdinalNum); + int orderTakeQuantity = SqlSugarHelper.Db.Queryable() + .Where(od => od.OrderNo == OrderInfo[j].OrderNo && od.DrugId == record[i].DrugId && od.DetailStatus == 0) + .GroupBy(od => new { od.DrugId, od.SetManuNo }).Sum(od => od.Quantity); + if (hasTake > 0) + { + orderTakeQuantity = orderTakeQuantity - hasTake; + } + //该处方没有这个药,跳出循环 + if (orderTakeQuantity <= 0 || record[i].Quantity <= 0) continue; - int orderTakeQuantity = orderDet[0].Quantity; + if (!(record[i].Quantity == orderTakeQuantity)) + { + if (record[i].Quantity > orderTakeQuantity) + { + //record[i].TakeQuantity = record[i].TakeQuantity - orderTakeQuantity; + record[i].TakeQuantity = orderTakeQuantity; + hasTake += orderTakeQuantity; + record[i].Quantity = record[i].Quantity - orderTakeQuantity; + } + else if (record[i].Quantity < orderTakeQuantity) + { + hasTake += record[i].Quantity; + record[i].TakeQuantity = record[i].Quantity; + record[i].Quantity = 0; + } + } + else + { + record[i].TakeQuantity = orderTakeQuantity; + record[i].Quantity = record[i].Quantity - record[i].TakeQuantity; + hasTake += record[i].TakeQuantity; + } ChannelStock it = record[i]; // 更新数据 库存信息 SqlSugarHelper.Db.Updateable(new ChannelStock() { - Quantity = it.Quantity - it.TakeQuantity, + Quantity = record[i].Quantity, ManuNo = it.ManuNo, EffDate = it.EffDate, Id = it.Id, @@ -423,18 +449,23 @@ namespace DM_Weight.ViewModels Operator = HomeWindowViewModel.Operator?.Id, Reviewer = HomeWindowViewModel.Reviewer?.Id, OperationTime = DateTime.Now, - Quantity = orderTakeQuantity, + Quantity = record[i].TakeQuantity, Type = 2, InvoiceId = InvoiceId, + OrdinalNum = ordinalNum + 1, StockQuantity = nowChannels.Sum(it => it.Quantity), ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity), SupplierDept = ConfigurationManager.AppSettings["receiveDept"].ToString(), - ReceiveDept = OrderInfo[0].DeptName, - ReceivePerson = ReceivePerson, - OrdinalNum = ordinalNum<=0?1:ordinalNum+ 1 - //,StockQuantity = nowChannels.Sum(it => it.Quantity) - + ReceiveDept = OrderInfo[j].DeptName }).ExecuteCommand(); + if (0 == record[i].Quantity) + { + record[i].TakeQuantity = 0; + } + if (record[i].TakeQuantity == orderTakeQuantity) + { + break; + } } //更新处方状态 SqlSugarHelper.Db.Updateable(new OrderInfo() @@ -442,6 +473,17 @@ namespace DM_Weight.ViewModels DmStatus = 1, OrderNo = OrderInfo[j].OrderNo }).UpdateColumns(it => new { it.DmStatus }).WhereColumns(it => new { it.OrderNo }).ExecuteCommand(); + + + //更新处方明细状态为已取药1 + List orderDetailLst = SqlSugarHelper.Db.Queryable().Where(od => od.OrderNo == OrderInfo[j].OrderNo && od.DetailStatus == 0).ToList(); + if (orderDetailLst != null && orderDetailLst.Count > 0) + { + orderDetailLst.ForEach(od => od.DetailStatus = 1); + SqlSugarHelper.Db.Updateable(orderDetailLst).UpdateColumns(it => new { it.DetailStatus }).ExecuteCommand(); + } + + return true; }); if (f.Data) diff --git a/DM_Weight/ViewModels/MultiOrderTakeDrugWindowViewModel.cs b/DM_Weight/ViewModels/MultiOrderTakeDrugWindowViewModel.cs index d098d20..5497b74 100644 --- a/DM_Weight/ViewModels/MultiOrderTakeDrugWindowViewModel.cs +++ b/DM_Weight/ViewModels/MultiOrderTakeDrugWindowViewModel.cs @@ -309,7 +309,7 @@ namespace DM_Weight.ViewModels // strSearchValue = SearchValue.Trim().Replace("\r", ""); //} List queryData = SqlSugarHelper.Db.Queryable() - .InnerJoin((oi, od) => oi.OrderNo == od.OrderNo) + .InnerJoin((oi, od) => oi.OrderNo == od.OrderNo && od.DetailStatus == 0) .InnerJoin(SqlSugarHelper.Db.Queryable().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM3")).GroupBy(cs => cs.DrugId), (oi, od, t) => od.DrugId == t.DrugId) .WhereIF(OrderDate != null, oi => oi.RecvDate.ToString("yyyy-MM-dd") == OrderDate) .WhereIF(!(OrderDepartment.DeptName.Equals("全部")), oi => oi.DeptName == OrderDepartment.DeptName) diff --git a/DM_Weight/ViewModels/OrderTakeDialogViewModel.cs b/DM_Weight/ViewModels/OrderTakeDialogViewModel.cs index c887ec6..71f0f81 100644 --- a/DM_Weight/ViewModels/OrderTakeDialogViewModel.cs +++ b/DM_Weight/ViewModels/OrderTakeDialogViewModel.cs @@ -181,9 +181,19 @@ namespace DM_Weight.ViewModels public void RequestData() { orderDetails = SqlSugarHelper.Db.Queryable() - .Includes(od => od.DrugInfo) + //.Includes(od => od.DrugInfo) .InnerJoin(SqlSugarHelper.Db.Queryable().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (od, t) => od.DrugId == t.DrugId) - .Where(od => od.OrderNo == OrderInfo.OrderNo) + .Where(od => od.OrderNo == OrderInfo.OrderNo&&od.DetailStatus==0) + .Select(od => new OrderDetail + { + Id = od.Id, + DrugId = od.DrugId, + SetEffDate = od.SetEffDate, + SetManuNo = od.SetManuNo, + OrderNo = od.OrderNo, + Quantity = SqlFunc.AggregateSum(od.Quantity) + }) + .GroupBy(od => new { od.DrugId, od.SetEffDate, od.SetManuNo }) .ToList(); List channelStocks = new List(); @@ -237,7 +247,7 @@ namespace DM_Weight.ViewModels } else { - msg.Add($"药品【{orderDetail.DrugInfo.DrugName}】库存不足,应取【{TakeQ}】库存【{total}】"); + msg.Add($"药品【{HasQChannels[0].DrugInfo.DrugName}】库存不足,应取【{TakeQ}】库存【{total}】"); } } if (msg.Count > 0) @@ -355,14 +365,14 @@ namespace DM_Weight.ViewModels OrderNo = OrderInfo.OrderNo }).UpdateColumns(it => new { it.DmStatus }).WhereColumns(it => new { it.OrderNo }).ExecuteCommand(); - SqlSugarHelper.Db.Insertable(new OrderFinish() - { - OrderNo = OrderInfo.OrderNo, - PatientId = OrderInfo.PatientId, - Pharmacy = OrderInfo.Pharmacy, - State = 1, - Operator = HomeWindowViewModel.Operator?.Nickname, - }); + //SqlSugarHelper.Db.Insertable(new OrderFinish() + //{ + // OrderNo = OrderInfo.OrderNo, + // PatientId = OrderInfo.PatientId, + // Pharmacy = OrderInfo.Pharmacy, + // State = 1, + // Operator = HomeWindowViewModel.Operator?.Nickname, + //}); for (int i = 0; i < record.Count; i++) { @@ -408,6 +418,13 @@ namespace DM_Weight.ViewModels OrdinalNum = ordinalNum<=0?1:ordinalNum+ 1, }).ExecuteCommand(); } + //更新处方明细状态为已取药1 + List orderDetailLst = SqlSugarHelper.Db.Queryable().Where(od => od.OrderNo == OrderInfo.OrderNo && od.DetailStatus == 0).ToList(); + if (orderDetailLst != null && orderDetailLst.Count > 0) + { + orderDetailLst.ForEach(od => od.DetailStatus = 1); + SqlSugarHelper.Db.Updateable(orderDetailLst).UpdateColumns(it => new { it.DetailStatus }).ExecuteCommand(); + } return true; }); if (f.Data) diff --git a/DM_Weight/ViewModels/OrderTakeDrugWindowViewModel.cs b/DM_Weight/ViewModels/OrderTakeDrugWindowViewModel.cs index 8d96a58..b206215 100644 --- a/DM_Weight/ViewModels/OrderTakeDrugWindowViewModel.cs +++ b/DM_Weight/ViewModels/OrderTakeDrugWindowViewModel.cs @@ -227,7 +227,7 @@ namespace DM_Weight.ViewModels int totalCount = 0; List queryData = SqlSugarHelper.Db.Queryable() - .InnerJoin((oi, od) => oi.OrderNo == od.OrderNo) + .InnerJoin((oi, od) => oi.OrderNo == od.OrderNo && od.DetailStatus == 0) .InnerJoin(SqlSugarHelper.Db.Queryable().Where(cs => cs.DrawerType == 1).Where(cs => cs.MachineId.Equals(ConfigurationManager.AppSettings["machineId"] ?? "DM1")).GroupBy(cs => cs.DrugId), (oi, od, t) => od.DrugId == t.DrugId) .WhereIF(OrderDate != null, oi => oi.RecvDate.ToString("yyyy-MM-dd") == OrderDate) .WhereIF(!String.IsNullOrEmpty(SearchValue) && SelectedItem.Code.Equals("OrderNo"), oi => oi.OrderNo == SearchValue) diff --git a/DM_Weight/ViewModels/SelfTakeDialogViewModel.cs b/DM_Weight/ViewModels/SelfTakeDialogViewModel.cs index 42bd5a0..d403a43 100644 --- a/DM_Weight/ViewModels/SelfTakeDialogViewModel.cs +++ b/DM_Weight/ViewModels/SelfTakeDialogViewModel.cs @@ -340,7 +340,8 @@ namespace DM_Weight.ViewModels StockQuantity = nowChannels.Sum(it => it.Quantity), ManunoQuantity = nowChannels.FindAll(it2 => it2.ManuNo == it.ManuNo).Sum(it => it.Quantity), SupplierDept = ConfigurationManager.AppSettings["supplierDept"].ToString(), - ReceiveDept = ConfigurationManager.AppSettings["receiveDept"].ToString() + ReceiveDept = ConfigurationManager.AppSettings["receiveDept"].ToString(), + Status= SelectedItem.UseId==0?0:2 //不入账册(96)取药后不还空瓶 }).ExecuteCommand(); } return true;