From 1be5945f2f480f1dcde727278be07e127f365490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=AD=A3=E6=98=93?= Date: Fri, 8 Aug 2025 16:04:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms-u8):=20=E6=B7=BB=E5=8A=A0=E7=89=A9?= =?UTF-8?q?=E6=96=99=E7=BC=96=E7=A0=81=E8=81=9A=E5=90=88=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=B9=B6=E4=BC=98=E5=8C=96=E5=87=BA=E5=BA=93=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在ERP_WMS_interactiveService中添加物料编码聚合功能,通过配置控制是否启用 优化WmOutOrderService中的物料匹配逻辑,支持处理多个零件号 --- .../mes/wms-u8/ERP_WMS_interactiveService.cs | 60 ++++++++++++++++++- ZR.Service/mes/wms/WmOutOrderService.cs | 2 +- 2 files changed, 58 insertions(+), 4 deletions(-) diff --git a/ZR.Service/mes/wms-u8/ERP_WMS_interactiveService.cs b/ZR.Service/mes/wms-u8/ERP_WMS_interactiveService.cs index 7b5acfb2..bad08784 100644 --- a/ZR.Service/mes/wms-u8/ERP_WMS_interactiveService.cs +++ b/ZR.Service/mes/wms-u8/ERP_WMS_interactiveService.cs @@ -31,6 +31,49 @@ namespace ZR.Service.mes.wms_u8 { return ProcessSyncRequest(urlBase, models, "outbounded", isInbound: false); } + /// + /// 根据物料编码聚合模型数据 + /// + /// 原始模型列表 + /// 聚合后的模型列表 + private List AggregateModelsByMaterialCode(List models) + { + if (models == null || models.Count == 0) + return models; + + // 按物料编码分组并计算总数量 + var aggregatedModels = models + .GroupBy(m => m.materialCode) + .Select(g => + { + // 获取分组内的第一个模型 + var firstModel = g.First(); + + return new ERP_WMS_interactiveModelQuery + { + customerCode = firstModel.customerCode, // 使用分组内第一个模型的客户编码 + materialCode = g.Key, + location = firstModel.location, // 位置留空 + Qty = g.Sum(m => + { + // 确保数量可以转换为数字 + if (decimal.TryParse(m.Qty, out decimal qty)) + return qty; + return 0; + }).ToString(), + LotNo = firstModel.LotNo, + createTime = firstModel.createTime, + userID = firstModel.userID, + guid = Guid.NewGuid().ToString(), + lineno = firstModel.lineno, + + }; + }) + .ToList(); + + return aggregatedModels; + } + #endregion #region 异步方法 @@ -83,6 +126,9 @@ namespace ZR.Service.mes.wms_u8 /// /// 异步请求处理(抽取公共逻辑) /// + // 配置项:控制是否启用物料编码聚合功能 + private static bool EnableMaterialAggregation = true; // 默认为false,不启用聚合 + private async Task ProcessAsyncRequest(string urlBase, List models, string action, bool isInbound) { var operation = isInbound ? "异步入库" : "异步出库"; @@ -95,9 +141,17 @@ namespace ZR.Service.mes.wms_u8 return null; } - // 2. 构建URL和请求数据 - string url = BuildUrl(urlBase, action, models); - string requestData = JsonConvert.SerializeObject(models); + // 2. 根据配置决定是否聚合数据 + List processedModels = models; + if (EnableMaterialAggregation) + { + processedModels = AggregateModelsByMaterialCode(models); + _logger.Info($"{operation}请求数据已聚合 - 聚合前记录数: {models.Count}, 聚合后记录数: {processedModels.Count}"); + } + + // 3. 构建URL和请求数据 + string url = BuildUrl(urlBase, action, processedModels); + string requestData = JsonConvert.SerializeObject(processedModels); _logger.Debug($"{operation}请求数据: {requestData}"); try diff --git a/ZR.Service/mes/wms/WmOutOrderService.cs b/ZR.Service/mes/wms/WmOutOrderService.cs index e400eb77..be2797d5 100644 --- a/ZR.Service/mes/wms/WmOutOrderService.cs +++ b/ZR.Service/mes/wms/WmOutOrderService.cs @@ -851,7 +851,7 @@ namespace ZR.Service.mes.wms .ToList(); foreach (WmMaterial materialOption in materialOutorders) { - if (materialOption.Partnumber == resultionPackage.PartNumner) + if (materialOption.Partnumber == processedPartnumber || materialOption.Partnumber == checkPartnumber) { flag1 = true; }