From cae2643a41da3889044f385fb8af6b615c3e1c0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=AD=A3=E6=98=93?= Date: Thu, 25 Apr 2024 17:35:01 +0800 Subject: [PATCH] =?UTF-8?q?PDA-=E5=87=BA=E5=BA=93=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=87=BA=E5=BA=93=E8=AE=A1=E5=88=92=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/wms/WmOutOrderController.cs | 20 +++++ ZR.Model/MES/wms/Dto/WmOutOrderDto.cs | 79 ++++++++++++++++--- .../mes/wms/IService/IWmOutOrderService.cs | 7 ++ ZR.Service/mes/wms/WmOutOrderService.cs | 77 +++++++++++++++++- 4 files changed, 172 insertions(+), 11 deletions(-) diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs index 0f61eb01..4384957d 100644 --- a/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs +++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmOutOrderController.cs @@ -219,6 +219,26 @@ namespace ZR.Admin.WebApi.Controllers int result = _WmOutOrderService.PersistenceOutorderplan(shipment_num); return SUCCESS(result); } + /// + /// 8.5 PDA端 获取出库单的持久化存储出库计划并计算计划批次当前已出库数量 + /// + /// 出库单号 + /// 物料号(零件号) + /// + [HttpGet("getOutOrderPlanAndOutProductionNum")] + public IActionResult GetOutOrderPlanAndOutProductionNum(string shipment_num,string partnumber) + { + if (shipment_num == null) + { + return ToResponse(new ApiResult(500, "传入工单号为空!", "传入工单号为空!")); + } + var result = _WmOutOrderService.GetOutOrderPlanAndOutProductionNum(shipment_num, partnumber); + if(result == null) + { + return ToResponse(new ApiResult(500, "获取计划异常!", "获取计划异常!")); + } + return SUCCESS(result); + } /// /// 5 成品出库 diff --git a/ZR.Model/MES/wms/Dto/WmOutOrderDto.cs b/ZR.Model/MES/wms/Dto/WmOutOrderDto.cs index 6a8c7ea9..36474257 100644 --- a/ZR.Model/MES/wms/Dto/WmOutOrderDto.cs +++ b/ZR.Model/MES/wms/Dto/WmOutOrderDto.cs @@ -5,7 +5,7 @@ namespace ZR.Model.MES.wms.Dto /// /// 出货单(物料+客户)查询对象 /// - public class WmOutOrderQueryDto : PagerInfo + public class WmOutOrderQueryDto : PagerInfo { public string ShipmentNum { get; set; } public int? Year { get; set; } @@ -22,7 +22,7 @@ namespace ZR.Model.MES.wms.Dto /// public class WmOutOrderDto { - + public string ShipmentNum { get; set; } public string CustomId { get; set; } @@ -64,7 +64,7 @@ namespace ZR.Model.MES.wms.Dto //带出货数量的物料表 public List MaterialList { get; set; } - + } /// /// 出货单_物料——数量 @@ -77,23 +77,84 @@ namespace ZR.Model.MES.wms.Dto } // 出货到出货记录表 - public class WmDoMaterialOut_Dto - { + public class WmDoMaterialOut_Dto + { /// /// 出库单号 /// - public string ShipmentNum { get; set; } + public string ShipmentNum { get; set; } /// /// 批次号 /// - public string[] PatchCode { get; set; } + public string[] PatchCode { get; set; } + - } - + /// + /// 持久化出库计划与批次已出库数 + /// + public class WmOutPlanAndGoodsOutProductionNumDto + { + /// + /// 出库顺序 + /// + public int OutOrder { get; set; } = 1; + /// + /// 批次号 + /// + public string PackageCode { get; set; } = string.Empty; + /// + /// 物料号(零件号) + /// + public string Partnumber { get; set; } = string.Empty; + /// + /// 描述 + /// + public string Description { get; set; } = "无描述"; + /// + /// 所属仓库 + /// + public string WarehouseCode { get; set; } = "无描述"; + /// + /// 需求零件数 + /// + public int RequireNum { get; set; } = 0; + /// + /// 库存现有箱数 + /// + public int PackageNum { get; set; } = 0; + /// + /// 库存现有零件数 + /// + public int PartnumberNum { get; set; } = 0; + /// + /// 计划出库箱数 + /// + public int PackagePlanNum { get; set; } = 0; + /// + /// 计划出库零件数 + /// + public int PartnumberPlanNum { get; set; } = 0; + /// + /// 该批次已出箱数 + /// + public int OutPackageNum { get; set; } = 0; + /// + /// 该批次已出零件数 + /// + public int OutPartnumberNum { get; set; } = 0; + /// + /// 是否出现异常(时效性,出库中是否出现实际箱比计划箱多) + /// + public bool IsError { get; set; } = false; + /// + /// 是否出完 + /// + public bool IsOver { get; set; } = false; + } } \ No newline at end of file diff --git a/ZR.Service/mes/wms/IService/IWmOutOrderService.cs b/ZR.Service/mes/wms/IService/IWmOutOrderService.cs index 0fb9bda5..d2dbf414 100644 --- a/ZR.Service/mes/wms/IService/IWmOutOrderService.cs +++ b/ZR.Service/mes/wms/IService/IWmOutOrderService.cs @@ -39,6 +39,13 @@ namespace ZR.Service.mes.wms.IService bool OverOutorderplan(string shipment_num); + + /// + /// 8.5 PDA端 获取出库单的持久化存储出库计划并计算计划批次当前已出库数量 + /// + /// 出库单号 + /// + List GetOutOrderPlanAndOutProductionNum(string shipment_num, string partnumber); // 检查是否可出库 string CheckProductionOut(string parnumber,string production_packcode, string shipment_num); diff --git a/ZR.Service/mes/wms/WmOutOrderService.cs b/ZR.Service/mes/wms/WmOutOrderService.cs index b32c23da..8486be25 100644 --- a/ZR.Service/mes/wms/WmOutOrderService.cs +++ b/ZR.Service/mes/wms/WmOutOrderService.cs @@ -17,6 +17,7 @@ using Infrastructure.Model; using ZR.Service; using ZR.Service.Utils; using Aliyun.OSS; +using Microsoft.AspNetCore.Hosting.Server; namespace ZR.Service.mes.wms { @@ -553,6 +554,79 @@ namespace ZR.Service.mes.wms } return resultionPackage.ProductionTime; } + /// + /// 8.5 PDA端 获取出库单的持久化存储出库计划并计算计划批次当前已出库数量 + /// + /// 出库单号 + /// + public List GetOutOrderPlanAndOutProductionNum(string shipment_num, string partnumber) + { + try + { + List result = new(); + // 当前工单出库计划 + var exp = Expressionable.Create() + .And(it => it.FkOutOrderId == shipment_num) + .AndIF(!string.IsNullOrEmpty(partnumber),it => it.MaterialCode == partnumber) + .ToExpression(); + List wmOutOrderPlan = Context.Queryable() + .Where(exp) + .OrderBy(it => it.Outorder) + .ToList(); + // 查询每个计划具体出库数据 + foreach (WmOutOrderPlan item in wmOutOrderPlan) + { + // 库存记录 + List nowProductionList = Context.Queryable() + .Where(it => it.PackageCodeClient.Contains(item.Patchcode)) + .ToList(); + int nowPackageNum = 0; + int nowPartnumberNum = 0; + foreach (WmGoodsNowProduction outItem in nowProductionList) + { + nowPackageNum += 1; + nowPartnumberNum += (int)outItem.GoodsNumAction; + } + // 出库记录 + List outPackageList = Context.Queryable() + .Where(it => it.PackageCodeClient.Contains(item.Patchcode)) + .ToList(); + int outPackageNum = 0; + int outPartnumberNum = 0; + foreach (WmGoodsOutRecord outItem in outPackageList) + { + outPackageNum += 1; + outPartnumberNum += (int)outItem.GoodsNumAction; + } + WmMaterial material = Context.Queryable() + .Where(it => it.Partnumber.Contains(item.MaterialCode)) + .First(); + WmOutPlanAndGoodsOutProductionNumDto newItem = new() + { + OutOrder = (int)item.Outorder, + PackageCode = item.Patchcode, + Partnumber = item.MaterialCode, + Description = !string.IsNullOrEmpty(material.Description) ? material.Description : material.ProductName, + WarehouseCode = item.WarehouseCode, + RequireNum = (int)item.RequireNum, + PackageNum = (int)nowPackageNum, + PartnumberNum = (int)nowPartnumberNum, + PackagePlanNum = (int)item.PackageNum, + PartnumberPlanNum = (int)item.PartnumberNum, + OutPackageNum = outPackageNum, + OutPartnumberNum = outPartnumberNum, + IsError = (nowPartnumberNum + outPartnumberNum) != item.PartnumberNum, + IsOver = outPartnumberNum == item.PartnumberNum + }; + result.Add(newItem); + } + return result; + } + catch (Exception ex) + { + return null; + } + } /// /// 检查是否可出库 @@ -669,7 +743,6 @@ namespace ZR.Service.mes.wms return result; } - - + } } \ No newline at end of file