diff --git a/DM_Weight/App.config b/DM_Weight/App.config index 3ccf943..0f6cef4 100644 --- a/DM_Weight/App.config +++ b/DM_Weight/App.config @@ -28,7 +28,7 @@ - + diff --git a/DM_Weight/Models/OrderDetail.cs b/DM_Weight/Models/OrderDetail.cs index 109654c..a2d401f 100644 --- a/DM_Weight/Models/OrderDetail.cs +++ b/DM_Weight/Models/OrderDetail.cs @@ -127,5 +127,12 @@ namespace DM_Weight.Models /// [SugarColumn(ColumnName = "use_dosage")] public string UseDosage { get; set; } + + /// + /// + /// 默认值: 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 25bb1fd..d8efd9a 100644 --- a/DM_Weight/Report/GridReportUtil.cs +++ b/DM_Weight/Report/GridReportUtil.cs @@ -305,7 +305,7 @@ namespace DM_Weight.Report SQL = $@"SELECT DISTINCT oi.recv_date,oi.p_name,oi.sex,oi.age,oi.id_number,oi.patient_no,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,dm.receivePerson,di.manuFactory,patient_card,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}' and dm.type=2 "; if (!string.IsNullOrEmpty(orderNo)) diff --git a/DM_Weight/ViewModels/CheckRecordNewWindowViewModel.cs b/DM_Weight/ViewModels/CheckRecordNewWindowViewModel.cs index 39d60fc..6c1772a 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,7 +145,7 @@ 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"; + 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/MultiOrderTakeDialogViewModel.cs b/DM_Weight/ViewModels/MultiOrderTakeDialogViewModel.cs index 348b12b..cac3365 100644 --- a/DM_Weight/ViewModels/MultiOrderTakeDialogViewModel.cs +++ b/DM_Weight/ViewModels/MultiOrderTakeDialogViewModel.cs @@ -175,9 +175,9 @@ namespace DM_Weight.ViewModels orderDetails = SqlSugarHelper.Db.Queryable() //.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 => OrderInfo.Select(o => o.OrderNo).Contains(od.OrderNo)).GroupBy(od=>od.DrugId) + .Where(od => OrderInfo.Select(o => o.OrderNo).Contains(od.OrderNo)).GroupBy(od => od.DrugId) - .Select(od=>new OrderDetail { DrugId=od.DrugId,SetEffDate=od.SetEffDate,SetManuNo=od.SetManuNo, Quantity=SqlFunc.AggregateSum(od.Quantity) }) + .Select(od => new OrderDetail { Id = od.Id, DrugId = od.DrugId, SetEffDate = od.SetEffDate, SetManuNo = od.SetManuNo, Quantity = SqlFunc.AggregateSum(od.Quantity) }) //.Where(od => od.OrderNo. OrderInfo.OrderNo) .ToList(); @@ -361,29 +361,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")) .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) + 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, @@ -407,12 +436,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) + 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[j].DeptName }).ExecuteCommand(); + if (0 == record[i].Quantity) + { + record[i].TakeQuantity = 0; + } + if (record[i].TakeQuantity == orderTakeQuantity) + { + break; + } } //更新处方状态 SqlSugarHelper.Db.Updateable(new OrderInfo() @@ -420,6 +460,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 26f7f02..3cb6e0a 100644 --- a/DM_Weight/ViewModels/MultiOrderTakeDrugWindowViewModel.cs +++ b/DM_Weight/ViewModels/MultiOrderTakeDrugWindowViewModel.cs @@ -310,7 +310,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 7ea7588..6c28f41 100644 --- a/DM_Weight/ViewModels/OrderTakeDialogViewModel.cs +++ b/DM_Weight/ViewModels/OrderTakeDialogViewModel.cs @@ -181,9 +181,18 @@ 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 +246,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) @@ -354,14 +363,16 @@ 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++) { @@ -406,6 +417,14 @@ namespace DM_Weight.ViewModels ReceivePerson=ReceivePerson, 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; }); diff --git a/DM_Weight/ViewModels/OrderTakeDrugWindowViewModel.cs b/DM_Weight/ViewModels/OrderTakeDrugWindowViewModel.cs index 64442c8..4cb890a 100644 --- a/DM_Weight/ViewModels/OrderTakeDrugWindowViewModel.cs +++ b/DM_Weight/ViewModels/OrderTakeDrugWindowViewModel.cs @@ -226,7 +226,7 @@ namespace DM_Weight.ViewModels OrderInfos.Clear(); 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)