From a43550ab282ad9a2d89f79875a62dbad5fb545be Mon Sep 17 00:00:00 2001 From: git_rabbit Date: Tue, 27 Jan 2026 15:56:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E9=A2=86=E6=96=99):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8E=9F=E6=9D=90=E6=96=99=E9=A2=86=E6=96=99=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现原材料领料功能,包括: 1. 在IMmRecordInboundService接口添加TakeMaterial方法 2. 新增TakeMaterialRequestDto请求参数类 3. 在MmRecordInboundController添加领料API接口 4. 实现领料业务逻辑,包括工单校验和出库单生成 --- .../MmRecordInboundController.cs | 32 +++++++++- .../MES/Material/Dto/MmRecordInboundDto.cs | 19 +++++- .../IService/IMmRecordInboundService.cs | 7 ++ .../MES/Material/MmInventoryService.cs | 4 ++ .../MES/Material/MmRecordInboundService.cs | 64 +++++++++++++++++++ 5 files changed, 123 insertions(+), 3 deletions(-) diff --git a/DOAN.Admin.WebApi/Controllers/MES/Material/productionMaterial/MmRecordInboundController.cs b/DOAN.Admin.WebApi/Controllers/MES/Material/productionMaterial/MmRecordInboundController.cs index 8c10d57..4eddf1c 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/Material/productionMaterial/MmRecordInboundController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/Material/productionMaterial/MmRecordInboundController.cs @@ -50,7 +50,7 @@ namespace DOAN.Admin.WebApi.Controllers.BZFM public IActionResult GetMmRecordInbound(int Id) { var response = _MmRecordInboundService.GetInfo(Id); - + var info = response.Adapt(); return SUCCESS(info); } @@ -93,13 +93,41 @@ namespace DOAN.Admin.WebApi.Controllers.BZFM [HttpPost("delete/{ids}")] [ActionPermissionFilter(Permission = "mmrecordinbound:delete")] [Log(Title = "入库记录表", BusinessType = BusinessType.DELETE)] - public IActionResult DeleteMmRecordInbound([FromRoute]string ids) + public IActionResult DeleteMmRecordInbound([FromRoute] string ids) { var idArr = Tools.SplitAndConvert(ids); return ToResponse(_MmRecordInboundService.Delete(idArr)); } + /// + /// 领料接口(临时) + /// + /// + /// + [HttpPost("TakeMaterial")] + [ActionPermissionFilter(Permission = "mmrecordinbound:takematerial")] + [Log(Title = "10线领料", BusinessType = BusinessType.UPDATE)] + public IActionResult TakeMaterial([FromBody] TakeMaterialRequestDto parm) + { + try + { + string response = _MmRecordInboundService.TakeMaterial(parm); + if (response == "ok") + { + return ToResponse(new ApiResult(200, "ok")); + } + else + { + return ToResponse(new ApiResult(500, response)); + } + } + catch (Exception) + { + throw; + } + } + /// /// 导入 /// diff --git a/DOAN.Model/MES/Material/Dto/MmRecordInboundDto.cs b/DOAN.Model/MES/Material/Dto/MmRecordInboundDto.cs index c5c561f..f3acd17 100644 --- a/DOAN.Model/MES/Material/Dto/MmRecordInboundDto.cs +++ b/DOAN.Model/MES/Material/Dto/MmRecordInboundDto.cs @@ -201,9 +201,26 @@ namespace DOAN.Model.BZFM.Dto [ExcelColumn(Name = "创建时间")] [SugarColumn(ColumnName = "created_time")] public DateTime? CreatedTime { get; set; } - + [ExcelColumn(Name = "原材料工单号")] [SugarColumn(ColumnName = "workorder_raw")] public string WorkorderRaw { get; set; } } + + /// + /// 领料请求参数 + /// + public class TakeMaterialRequestDto + { + [Required(ErrorMessage = "记录ID不能为空")] + public int Id { get; set; } + + public string InboundNo { get; set; } + + [Required(ErrorMessage = "成品工单号不能为空")] + public string WorkorderRow { get; set; } + + [Required(ErrorMessage = "领料人不能为空")] + public string Operator { get; set; } + } } diff --git a/DOAN.Service/MES/Material/IService/IMmRecordInboundService.cs b/DOAN.Service/MES/Material/IService/IMmRecordInboundService.cs index 86389db..b21b621 100644 --- a/DOAN.Service/MES/Material/IService/IMmRecordInboundService.cs +++ b/DOAN.Service/MES/Material/IService/IMmRecordInboundService.cs @@ -25,5 +25,12 @@ namespace DOAN.Service.BZFM.IBZFMService ImportResultDto ImportRecordinbound(IFormFile formFile, string username); public PagedInfo SelectRecordinboundList(MmRecordInboundQueryDto recordinbound, PagerInfo pager); + + /// + /// 领料接口 + /// + /// + /// + string TakeMaterial(TakeMaterialRequestDto parm); } } diff --git a/DOAN.Service/MES/Material/MmInventoryService.cs b/DOAN.Service/MES/Material/MmInventoryService.cs index 52879a5..23783b6 100644 --- a/DOAN.Service/MES/Material/MmInventoryService.cs +++ b/DOAN.Service/MES/Material/MmInventoryService.cs @@ -272,6 +272,7 @@ namespace DOAN.Service.BZFM Unit = parm.Unit, ProductionDate = parm.ProductionDate, Workorder = parm.Workorder, + WorkorderRaw = parm.WorkorderRaw, ExpiryDate = parm.ExpiryDate, CreatedTime = nowDate, TransactionType = parm.TransactionType, @@ -384,6 +385,7 @@ namespace DOAN.Service.BZFM CreatedTime = nowDate, TransactionType = parm.TransactionType, Workorder = parm.Workorder, + WorkorderRaw = parm.WorkorderRaw, OrderNo = parm.OrderNo, Remarks = parm.Remarks, }; @@ -828,6 +830,7 @@ namespace DOAN.Service.BZFM SupplierCode = recordInbound.SupplierCode, StoveCode = recordInbound.StoveCode, Workorder = recordInbound.Workorder, + WorkorderRaw = recordInbound.WorkorderRaw, Operator = recordInbound.Operator, Quantity = recordInbound.Quantity, TransactionType = "入库红单", @@ -869,6 +872,7 @@ namespace DOAN.Service.BZFM WarehouseCode = recordOutbound.WarehouseCode, OrderNo = recordOutbound.OrderNo, Workorder = recordOutbound.Workorder, + WorkorderRaw = recordOutbound.WorkorderRaw, Operator = recordOutbound.Operator, Quantity = recordOutbound.Quantity, TransactionType = "出库红单", diff --git a/DOAN.Service/MES/Material/MmRecordInboundService.cs b/DOAN.Service/MES/Material/MmRecordInboundService.cs index 9315ef4..f099fcf 100644 --- a/DOAN.Service/MES/Material/MmRecordInboundService.cs +++ b/DOAN.Service/MES/Material/MmRecordInboundService.cs @@ -1,10 +1,12 @@ using DOAN.Model.BZFM; using DOAN.Model.BZFM.Dto; +using DOAN.Model.MES.product; using DOAN.Repository; using DOAN.Service.BZFM.IBZFMService; using Infrastructure.Attribute; using Infrastructure.Converter; using Infrastructure.Extensions; +using JinianNet.JNTemplate; using Microsoft.AspNetCore.Http; using Microsoft.IdentityModel.Tokens; using NPOI.SS.UserModel; @@ -375,5 +377,67 @@ namespace DOAN.Service.BZFM return query.ToPage(pager); } + + /// + /// 领料接口(临时) + /// + /// + /// + public string TakeMaterial(TakeMaterialRequestDto parm) + { + try + { + + var inboundInfo = Queryable().Where(x => x.Id == parm.Id).First(); + if (inboundInfo == null) + { + return "该入库记录不存在!"; + } + if (inboundInfo.Remarks == "已撤销") + { + return "该记录已撤销,无法领料"; + } + var workorderInfo = Context.Queryable() + .Where(it => it.Workorder == inboundInfo.Workorder) + .First(); + if (workorderInfo == null) + { + return "该入库记录对应的工单不存在!"; + } + Context.Ado.BeginTran(); + inboundInfo.WorkorderRaw = parm.WorkorderRow; + inboundInfo.Remarks += "[已领料]"; + Context.Updateable(inboundInfo).ExecuteCommand(); + // 填写出库单 + //做出库红单 + OutboundReceiptDto revokeRecepitDto = new() + { + ReceiptType = 1, + MaterialCode = inboundInfo.MaterialCode, + BatchNo = inboundInfo.BatchNo, + LocationCode = inboundInfo.LocationCode, + WarehouseCode = inboundInfo.WarehouseCode, + OrderNo = workorderInfo.CustomerOrder, + // 原材料工单号 + Workorder = inboundInfo.Workorder, + // 产成品工单号 + WorkorderRaw = parm.WorkorderRow, + Operator = parm.Operator, + Quantity = inboundInfo.Quantity, + TransactionType = "领料出库", + Remarks = $"领料出库,产成品领料出库,原材料工单{inboundInfo.Workorder},产成品工单{parm.WorkorderRow}", + }; + MmInventoryService mmInventoryService = new MmInventoryService(); + string result = mmInventoryService.CreateOutboundReceipt(revokeRecepitDto); + Context.Ado.CommitTran(); + return result; + } + catch (Exception e) + { + Context.Ado.RollbackTran(); + return e.Message; + } + + } } }