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;