ソースを参照

提交修改修改物流订单代理商

chenxiaofei 4 時間 前
コミット
67439f4c44

+ 45 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -809,6 +809,7 @@ public class KwoTradeOrderService {
                 unitInfos.add(unit);
             });
             detail.setUnitInfo(unitInfos);
+            populateAgentUnitInfo(detail, unitInfos);
         }
         //地址信息
         List<KwoTradeOrderAddress> addressList = kwoTradeOrderAddressService.getByOrderId(id);
@@ -905,6 +906,50 @@ public class KwoTradeOrderService {
         return detail;
     }
 
+    /**
+     * 填充订单详情中的供应商及代理单位信息。
+     * <p>
+     * 业务逻辑说明:
+     * 1. 校验入参有效性,若订单详情对象为空或单位列表为空,则直接返回。
+     * 2. 从单位列表中筛选出类型为“供应方”(unitType="2")的单位记录。
+     * 3. 将首个匹配的供应方单位信息填充至订单详情的供应商字段(供应商ID、名称、电话)。
+     * 4. 若订单标记为代理订单(agentFlag=1),则将同样的供应方单位信息同时填充至代理字段(代理ID、名称、电话)。
+     * <p>
+     * 注意:该方法为静态私有方法,仅用于内部数据组装,不涉及数据库操作或远程调用。
+     *
+     * @param detail   订单详情响应对象,用于接收填充后的数据
+     * @param unitInfos 订单关联的单位信息列表
+     */
+    private static void populateAgentUnitInfo(OrderDetailRes detail, List<UnitInfoDetailRes> unitInfos) {
+        // 参数预校验:确保订单详情对象和单位列表非空,避免后续处理出现空指针异常
+        if (Objects.isNull(detail) || CollUtil.isEmpty(unitInfos)) {
+            log.debug("填充代理单位信息跳过:detail为空或unitInfos为空");
+            return;
+        }
+
+        // 流式处理:过滤非空单位 -> 筛选供应方类型(unitType="2") -> 获取第一个匹配项
+        unitInfos.stream()
+                .filter(Objects::nonNull)
+                .filter(unit -> String.valueOf(NumberConstant.TWO).equals(unit.getUnitType()))
+                .findFirst()
+                .ifPresent(unit -> {
+                    log.debug("找到供应方单位信息,entId={}, firmName={}", unit.getEntId(), unit.getFirmName());
+                    
+                    // 设置基础供应商信息
+                    detail.setSupplierEntId(unit.getEntId());
+                    detail.setSupplierFirmName(unit.getFirmName());
+                    detail.setSupplierPhone(unit.getPhone());
+
+                    // 若为代理订单,则同时设置代理信息(通常代理即为供应方)
+                    if (Objects.equals(detail.getAgentFlag(), Global.YES)) {
+                        log.debug("订单为代理订单,同步设置代理单位信息");
+                        detail.setAgentEntId(unit.getEntId());
+                        detail.setAgentFirmName(unit.getFirmName());
+                        detail.setAgentPhone(unit.getPhone());
+                    }
+                });
+    }
+
     /**
      * @desc: 修改订单
      * @author: yzc