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;
}