From 9248ab9d9d1ebdd369e6d1d7f6805ec7316d883c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=AD=A3=E6=98=93?= Date: Tue, 5 Aug 2025 17:39:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=8F=AB=E6=96=99=EF=BC=8C?= =?UTF-8?q?=E9=A2=86=E6=96=99=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MES/mm/paintedparts_call/Dto/MmCallDto.cs | 2 + .../MES/mm/paintedparts_call/MmCallService.cs | 71 ++++++++++++++----- 2 files changed, 57 insertions(+), 16 deletions(-) diff --git a/DOAN.Model/MES/mm/paintedparts_call/Dto/MmCallDto.cs b/DOAN.Model/MES/mm/paintedparts_call/Dto/MmCallDto.cs index 3b8a7be..3fb175b 100644 --- a/DOAN.Model/MES/mm/paintedparts_call/Dto/MmCallDto.cs +++ b/DOAN.Model/MES/mm/paintedparts_call/Dto/MmCallDto.cs @@ -35,6 +35,8 @@ namespace DOAN.Model.MES.mm.paintedparts_call.Dto public DateTime? WorkOrderDate { get; set; } // 料号 public string MaterialCode { get; set; } + // 数量 + public int? Quantity { get; set; } // ID public string Id { get; set; } } diff --git a/DOAN.Service/MES/mm/paintedparts_call/MmCallService.cs b/DOAN.Service/MES/mm/paintedparts_call/MmCallService.cs index c1d5fdc..7cfe26e 100644 --- a/DOAN.Service/MES/mm/paintedparts_call/MmCallService.cs +++ b/DOAN.Service/MES/mm/paintedparts_call/MmCallService.cs @@ -7,6 +7,7 @@ using DOAN.Model.MES.ERP; using DOAN.Model.MES.mm.paintedparts_call; using DOAN.Model.MES.mm.paintedparts_call.Dto; using DOAN.Model.MES.product; +using DOAN.Model.Mobile.Dto; using DOAN.Repository; using DOAN.Service.MES.mm.paintedparts_call.IService; using Infrastructure.Attribute; @@ -29,8 +30,9 @@ namespace DOAN.Service.MES.mm.paintedparts_call /// public PagedInfo GetList(MmCallQueryDto parm) { - var predicate = Expressionable.Create() - .AndIF(!string.IsNullOrEmpty(parm.LineCode),it=>it.LineCode == parm.LineCode) + var predicate = Expressionable + .Create() + .AndIF(!string.IsNullOrEmpty(parm.LineCode), it => it.LineCode == parm.LineCode) .AndIF(parm.WorkOrderDate != null, it => it.WorkorderDate == parm.WorkOrderDate); var response = Queryable() @@ -234,6 +236,10 @@ namespace DOAN.Service.MES.mm.paintedparts_call { throw new Exception("没有找到对应的叫料信息"); } + if (parm.Quantity > mmCallRequest.Quantity) + { + throw new Exception("叫料数量超出"); + } // 2.新增叫料信息 MmCallReceive newMmCallReceive = new() @@ -245,7 +251,7 @@ namespace DOAN.Service.MES.mm.paintedparts_call ReceiveTime = null, MaterialCode = mmCallRequest.MaterialCode, MaterialName = mmCallRequest.MaterialName, - Quantity = mmCallRequest.Quantity, + Quantity = parm.Quantity, CreatedBy = "PDA", CreatedTime = DateTime.Now, }; @@ -260,25 +266,58 @@ namespace DOAN.Service.MES.mm.paintedparts_call /// public int DoLineReceiveMaterial(MmCallAndReceiveDto parm) { - if ( parm == null || string.IsNullOrEmpty(parm.Id)) + if (parm == null || string.IsNullOrEmpty(parm.Id)) { throw new ArgumentException("参数无效:MmCallReceiveId 必须有值", nameof(parm.Id)); } - // 1.获取对应叫料信息 - var mmCallReceive = Context - .Queryable() - .Where(it => it.Id == parm.Id) - .First(); - if (mmCallReceive == null) + try { - throw new Exception("没有找到对应的叫料信息"); + Context.Ado.BeginTran(); + // 1.获取对应叫料信息 + var mmCallReceive = Context + .Queryable() + .Where(it => it.Id == parm.Id) + .First(); + if (mmCallReceive == null) + { + Context.Ado.RollbackTran(); + throw new Exception("没有找到对应的叫料信息"); + } + // 2.变更状态为已完成 + mmCallReceive.ReceiveTime = DateTime.Now; + Context.Updateable(mmCallReceive).ExecuteCommand(); + // 3.扣减对应MRP数量 + var mmCallRequest = Context + .Queryable() + .Where(it => + it.LineCode == mmCallReceive.LineCode + && it.WorkorderDate == mmCallReceive.WorkorderDate + ) + .Where(it => it.MaterialCode == mmCallReceive.MaterialCode) + .First(); + if (mmCallRequest == null) + { + Context.Ado.RollbackTran(); + throw new Exception("没有找到对应的叫料信息"); + } + mmCallRequest.Quantity -= mmCallReceive.Quantity; + int result = Context.Updateable(mmCallRequest).ExecuteCommand(); + Context.Ado.CommitTran(); + return result > 0 ? 1 : 0; + } + catch (Exception) + { + Context.Ado.RollbackTran(); + throw; } - // 2.变更状态为已完成 - mmCallReceive.ReceiveTime = DateTime.Now; - Context.Updateable(mmCallReceive).ExecuteCommand(); - return 1; } + /// + /// 产线退料 + /// + /// + /// + /// public int DoLineReturnBackMaterial(MmCallAndReceiveDto parm) { if (parm == null || string.IsNullOrEmpty(parm.Id)) @@ -303,7 +342,7 @@ namespace DOAN.Service.MES.mm.paintedparts_call throw new InvalidOperationException("没有找到对应的叫料信息"); } - // 2. 更新叫料记录(清空 ReceiveTime) + // 2. 更新叫料记录(清空 ReceiveTime,使其重新领料) mmCallReceive.ReceiveTime = null; Context.Updateable(mmCallReceive).ExecuteCommand();