From c6efde0593e4bc64c183c6d39a64986cef0179e8 Mon Sep 17 00:00:00 2001 From: git_rabbit Date: Tue, 3 Feb 2026 10:12:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E8=AE=A2=E5=8D=95=E6=9C=8D=E5=8A=A1):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=A2=E5=8D=95=E9=87=87=E8=B4=AD=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E4=B8=AD=E7=9A=84=E9=AA=8C=E8=AF=81=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E5=92=8C=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除OrderPurchaseDto中Id字段的必填验证 - 修改ProWorkorderMaterialService中的订单筛选条件 - 增强AddOrderPurchase和UpdateOrderPurchase方法的验证逻辑 - 为订单添加初始状态值和事务处理 - 修复导入日期处理和空值判断 --- DOAN.Model/MES/Order/Dto/OrderPurchaseDto.cs | 1 - .../MES/Order/OrderPurchaseService.cs | 84 ++++++++++++++++--- .../Product/ProWorkorderMaterialService.cs | 2 +- 3 files changed, 75 insertions(+), 12 deletions(-) diff --git a/DOAN.Model/MES/Order/Dto/OrderPurchaseDto.cs b/DOAN.Model/MES/Order/Dto/OrderPurchaseDto.cs index ad8e00c..1995cfc 100644 --- a/DOAN.Model/MES/Order/Dto/OrderPurchaseDto.cs +++ b/DOAN.Model/MES/Order/Dto/OrderPurchaseDto.cs @@ -46,7 +46,6 @@ namespace DOAN.Model.MES.order.Dto /// public class OrderPurchaseDto { - [Required(ErrorMessage = "雪花id不能为空")] public string Id { get; set; } public DateTime? ImportDate { get; set; } diff --git a/DOAN.Service/MES/Order/OrderPurchaseService.cs b/DOAN.Service/MES/Order/OrderPurchaseService.cs index 749c2b1..1b8c85e 100644 --- a/DOAN.Service/MES/Order/OrderPurchaseService.cs +++ b/DOAN.Service/MES/Order/OrderPurchaseService.cs @@ -1,4 +1,5 @@ using Aliyun.OSS; +using DOAN.Model.BZFM; using DOAN.Model.MES.order; using DOAN.Model.MES.order.Dto; using DOAN.Model.MES.product; @@ -46,7 +47,7 @@ namespace DOAN.Service.MES.order var workorderInfo = Context.Queryable() .Where(it => it.Workorder.Contains(parm.WorkOrder)) .First(); - if(workorderInfo != null) + if (workorderInfo != null) { parm.OrderNoMes = workorderInfo.CustomerOrder; } @@ -97,7 +98,46 @@ namespace DOAN.Service.MES.order /// public OrderPurchase AddOrderPurchase(OrderPurchase model) { - return Insertable(model).ExecuteReturnEntity(); + // 订单号唯一性验证 + var existingOrder = Context.Queryable() + .Where(it => it.OrderNoMes == model.OrderNoMes) + .First(); + + if (existingOrder != null) + { + throw new ArgumentException($"订单号 {model.OrderNoMes} 已存在,请使用其他订单号"); + } + + // 设置初始值 + DateTime now = DateTime.Now; + model.Id = SnowFlakeSingle.Instance.NextId().ToString(); + + var materialInfo = Context.Queryable().Where(it => it.MaterialCode == model.MaterialCode).First(); + if(materialInfo == null) + { + throw new ArgumentException($"物料号 {model.MaterialCode} 不在清单中,请检查"); + } + model.MaterialName = materialInfo.MaterialName; + model.ImportDate = now; + model.DocumentDate = now; + model.CreatedTime = now; + model.CreatedBy = ""; + model.UpdatedTime = now; + model.UpdatedBy = ""; + // 设置默认值 + model.Specordindicator = -1; // 不处理 + model.DeliveryQuantity = 0; // 实际交货数量初始为0 + model.Orderindicator = -1; // 订单未完成(初始状态) + model.Status = 0; // 状态待处理 + + // 使用事务处理 + OrderPurchase result = null; + UseTran2(() => + { + result = Insertable(model).ExecuteReturnEntity(); + }); + + return result; } /// @@ -107,7 +147,31 @@ namespace DOAN.Service.MES.order /// public int UpdateOrderPurchase(OrderPurchase model) { - return Update(model, true); + // 订单号唯一性验证 + var existingOrder = Context.Queryable() + .Where(it => it.OrderNoMes == model.OrderNoMes && it.Id != model.Id) + .First(); + + if (existingOrder != null) + { + throw new ArgumentException($"订单号 {model.OrderNoMes} 已存在,请使用其他订单号"); + } + + var materialInfo = Context.Queryable().Where(it => it.MaterialCode == model.MaterialCode).First(); + if (materialInfo == null) + { + throw new ArgumentException($"物料号 {model.MaterialCode} 不在清单中,请检查"); + } + model.MaterialName = materialInfo.MaterialName; + + // 使用事务处理 + int result = 0; + UseTran2(() => + { + result = Update(model, true); + }); + + return result; } /// @@ -125,7 +189,7 @@ namespace DOAN.Service.MES.order .AndIF(parm.ImportDate != null && parm.ImportDate[1] > DateTime.MinValue, it => it.ImportDate <= parm.ImportDate[1]) .AndIF(parm.Orderindicator > -1, it => it.Orderindicator == parm.Orderindicator) ; - + return predicate; } @@ -145,7 +209,7 @@ namespace DOAN.Service.MES.order // 将单元格的数字值转换为DateTime - importDate = cell?.DateCellValue?? DateTime.MinValue; + importDate = cell?.DateCellValue ?? DateTime.MinValue; importDate = importDate.Date; // 遍历每一行 @@ -229,21 +293,21 @@ namespace DOAN.Service.MES.order int result = 0; UseTran2(() => { - + result = Context.Insertable(orderPurchases).ExecuteCommand(); }); return result; - } - if(orderPurchases.Count>0) + } + if (orderPurchases.Count > 0) { int result = 0; UseTran2(() => { Context.Deleteable().Where(x => x.ImportDate == importDate).ExecuteCommand(); - result= Context.Insertable(orderPurchases).ExecuteCommand(); + result = Context.Insertable(orderPurchases).ExecuteCommand(); }); return result; - + } else { diff --git a/DOAN.Service/MES/Product/ProWorkorderMaterialService.cs b/DOAN.Service/MES/Product/ProWorkorderMaterialService.cs index 3c12353..1d980ce 100644 --- a/DOAN.Service/MES/Product/ProWorkorderMaterialService.cs +++ b/DOAN.Service/MES/Product/ProWorkorderMaterialService.cs @@ -479,7 +479,7 @@ namespace DOAN.Service.MES.product var orderPurchaseList = Context .Queryable() .Where(o => o.MaterialCode == workorderInfo.productionCode) - .Where(it => it.Orderindicator == 0) + .Where(it => it.Orderindicator != -1) .OrderBy(it => it.DeliveryDate) .Select( o => new OrderPurchaseDto