wangxinhui
2026-03-13 8dc2427e1c5e5e349bce2d72759034c406eb0848
ÏîÄ¿´úÂë/WMS/WMSServices/WIDESEA_OutboundService/OutSGOrderService.cs
@@ -61,7 +61,7 @@
                
                // æ‰¹é‡æŸ¥è¯¢æ‰€æœ‰å…³è”的明细,过滤掉物料编号为空的数据
                var allDetails = BaseDal.Db.Queryable<Dt_OutSGOrderDetail>()
                    .Where(d => orderIds.Contains(d.OutSGOrderId) && !string.IsNullOrEmpty(d.MaterialNo))
                    .Where(d => orderIds.Contains(d.OutSGOrderId))
                    .ToList();
                
                // æŒ‰è®¢å•ID分组
@@ -72,20 +72,34 @@
                {
                    if (detailsByOrderId.TryGetValue(order.Id, out var details))
                    {
                        // æŒ‰ç‰©æ–™ç¼–号和幅宽的组合分组:若物料代码相同但幅宽不同,会被分成不同的组
                        var materialGroups = details
                            .GroupBy(d => new {
                                MaterialNo = d.MaterialNo,
                                Width = d.Width
                            })
                            .Select(g => $"{g.Key.MaterialNo}({g.Key.Width})").ToList();
                        // èŽ·å–æ‰€æœ‰ç‰©æ–™ç¼–å·ï¼ŒåŒ…æ‹¬é‡å¤çš„
                        var allMaterialNos = details
                            .Select(d => d.MaterialNo)
                            .ToList();
                        
                        // å°†åˆ†ç»„结果合并为一个字符串,多个组之间用逗号分隔
                        order.MaterialNoWidth = string.Join(",", materialGroups);
                        // èŽ·å–æ‰€æœ‰å”¯ä¸€çš„å¹…å®½
                        var uniqueWidths = details
                            .Select(d => d.Width.ToString())
                            .Distinct()
                            .ToList();
                        // è®¾ç½®ç‰©æ–™ç¼–号,所有物料编号用斜杠分隔,包括重复的
                        order.MaterialNos = string.Join("/", allMaterialNos);
                        // è®¾ç½®å¹…宽:如果幅宽有多个不一致的数值就显示多个,如果一样就显示一个
                        order.MaterialWides = uniqueWidths.Count == 1
                            ? uniqueWidths[0]
                            : string.Join("/", uniqueWidths);
                        // è®¾ç½®æ˜¯å¦ç¼ºæ–™ï¼šå¦‚果有任何一个明细是缺料状态,就设置为true
                        // å¼•用WIDESEA_Common.OrderEnum命名空间来使用OutOrderStatusEnum枚举
                        order.IsLackMaterial = details.Any(d => d.OutSGOrderDetailStatus == 3); // 3是缺料状态的枚举值
                    }
                    else
                    {
                        order.MaterialNoWidth = "";
                        order.MaterialNos = "";
                        order.MaterialWides = "";
                        order.IsLackMaterial = false;
                    }
                }
            }