فهرست منبع

提交物理订单存储代理商供应商

chenxiaofei 9 ساعت پیش
والد
کامیت
6046b8159d

+ 50 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/AddLogisticOrderParam.java

@@ -120,6 +120,56 @@ public class AddLogisticOrderParam implements Serializable {
      */
     private Long agentContactsId;
 
+    /**
+     * 采购单位
+     */
+    private String purchaseCompany;
+
+    /**
+     * 采购单位id
+     */
+    private Long purchaseCompanyId;
+
+    /**
+     * 采购单位联系电话
+     */
+    private String purchaseContactPhone;
+
+    /**
+     * 采购单位联系人
+     */
+    private String purchaseContacts;
+
+    /**
+     * 采购单位联系人id
+     */
+    private Long purchaseContactsId;
+
+    /**
+     * 供应单位
+     */
+    private String supplyCompany;
+
+    /**
+     * 供应单位id
+     */
+    private Long supplyCompanyId;
+
+    /**
+     * 供应单位联系电话
+     */
+    private String supplyContactPhone;
+
+    /**
+     * 供应单位联系人
+     */
+    private String supplyContacts;
+
+    /**
+     * 供应单位联系人id
+     */
+    private Long supplyContactsId;
+
 
 
     /**

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

@@ -2746,6 +2746,34 @@ public class KwoTradeOrderService {
         param.setAgentContactsId(agentUnit.getContactsId());
     }
 
+    /**
+     * 创建物流订单时同步传递贸易订单采购单位和供应单位。
+     *
+     * @param param   物流订单新增参数
+     * @param unitMap 贸易订单企业类型映射
+     */
+    static void setTradeCompanyInfo(AddLogisticOrderParam param, Map<String, KwoTradeOrderUnit> unitMap) {
+        if (Objects.isNull(param) || CollUtil.isEmpty(unitMap)) {
+            return;
+        }
+        KwoTradeOrderUnit purchaseUnit = unitMap.get("1");
+        if (Objects.nonNull(purchaseUnit)) {
+            param.setPurchaseCompany(purchaseUnit.getFirmName());
+            param.setPurchaseCompanyId(purchaseUnit.getEntId());
+            param.setPurchaseContactPhone(purchaseUnit.getPhone());
+            param.setPurchaseContacts(purchaseUnit.getContacts());
+            param.setPurchaseContactsId(purchaseUnit.getContactsId());
+        }
+        KwoTradeOrderUnit supplyUnit = unitMap.get("2");
+        if (Objects.nonNull(supplyUnit)) {
+            param.setSupplyCompany(supplyUnit.getFirmName());
+            param.setSupplyCompanyId(supplyUnit.getEntId());
+            param.setSupplyContactPhone(supplyUnit.getPhone());
+            param.setSupplyContacts(supplyUnit.getContacts());
+            param.setSupplyContactsId(supplyUnit.getContactsId());
+        }
+    }
+
     /**
      * 买家撤销贸易订单
      */
@@ -3193,6 +3221,7 @@ public class KwoTradeOrderService {
         addLogisticOrderParam.setMeasurementWay(tradeContractResDto.getMeasurementWay());
         addLogisticOrderParam.setAgentFlag(kwoTradeOrder.getAgentFlag());
         setAgentCompanyInfo(addLogisticOrderParam, unitMap, kwoTradeOrder.getAgentFlag());
+        setTradeCompanyInfo(addLogisticOrderParam, unitMap);
         log.info("创建物流订单:{}", JSONObject.toJSONString(addLogisticOrderParam));
         Integer result = transportRemoteService.addLogisticOrder(addLogisticOrderParam);
         //自动派单运力不足
@@ -3642,6 +3671,7 @@ public class KwoTradeOrderService {
         addLogisticOrderParam.setDispatchWay(DispatchWayEnums.MANUAL_DISPATCH.getCode());
         addLogisticOrderParam.setAgentFlag(kwoTradeOrder.getAgentFlag());
         setAgentCompanyInfo(addLogisticOrderParam, unitMap, kwoTradeOrder.getAgentFlag());
+        setTradeCompanyInfo(addLogisticOrderParam, unitMap);
         log.info("创建物流订单:{}", JSONObject.toJSONString(addLogisticOrderParam));
         transportRemoteService.addLogisticOrder(addLogisticOrderParam);
 

+ 36 - 0
sckw-modules/sckw-order/src/test/java/com/sckw/order/serivce/KwoTradeOrderServiceTest.java

@@ -184,4 +184,40 @@ public class KwoTradeOrderServiceTest {
         Assert.assertEquals("Alice", param.getAgentContacts());
         Assert.assertEquals(Long.valueOf(9001L), param.getAgentContactsId());
     }
+
+    /**
+     * Trade order purchase and supply units should be passed to logistics order param.
+     */
+    @Test
+    public void setTradeCompanyInfoWhenPurchaseAndSupplyExist() {
+        AddLogisticOrderParam param = new AddLogisticOrderParam();
+        KwoTradeOrderUnit purchaseUnit = new KwoTradeOrderUnit();
+        purchaseUnit.setFirmName("Purchase Company");
+        purchaseUnit.setEntId(1001L);
+        purchaseUnit.setPhone("13700000000");
+        purchaseUnit.setContacts("Bob");
+        purchaseUnit.setContactsId(8001L);
+        KwoTradeOrderUnit supplyUnit = new KwoTradeOrderUnit();
+        supplyUnit.setFirmName("Supply Company");
+        supplyUnit.setEntId(2001L);
+        supplyUnit.setPhone("13600000000");
+        supplyUnit.setContacts("Carol");
+        supplyUnit.setContactsId(7001L);
+        Map<String, KwoTradeOrderUnit> unitMap = new HashMap<>();
+        unitMap.put("1", purchaseUnit);
+        unitMap.put("2", supplyUnit);
+
+        KwoTradeOrderService.setTradeCompanyInfo(param, unitMap);
+
+        Assert.assertEquals("Purchase Company", param.getPurchaseCompany());
+        Assert.assertEquals(Long.valueOf(1001L), param.getPurchaseCompanyId());
+        Assert.assertEquals("13700000000", param.getPurchaseContactPhone());
+        Assert.assertEquals("Bob", param.getPurchaseContacts());
+        Assert.assertEquals(Long.valueOf(8001L), param.getPurchaseContactsId());
+        Assert.assertEquals("Supply Company", param.getSupplyCompany());
+        Assert.assertEquals(Long.valueOf(2001L), param.getSupplyCompanyId());
+        Assert.assertEquals("13600000000", param.getSupplyContactPhone());
+        Assert.assertEquals("Carol", param.getSupplyContacts());
+        Assert.assertEquals(Long.valueOf(7001L), param.getSupplyContactsId());
+    }
 }

+ 10 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dubbo/TransportServiceImpl.java

@@ -1307,6 +1307,16 @@ public class TransportServiceImpl implements TransportRemoteService {
         addLogisticOrderDTO.setAgentContactPhone(param.getAgentContactPhone());
         addLogisticOrderDTO.setAgentContacts(param.getAgentContacts());
         addLogisticOrderDTO.setAgentContactsId(param.getAgentContactsId());
+        addLogisticOrderDTO.setPurchaseCompany(param.getPurchaseCompany());
+        addLogisticOrderDTO.setPurchaseCompanyId(param.getPurchaseCompanyId());
+        addLogisticOrderDTO.setPurchaseContactPhone(param.getPurchaseContactPhone());
+        addLogisticOrderDTO.setPurchaseContacts(param.getPurchaseContacts());
+        addLogisticOrderDTO.setPurchaseContactsId(param.getPurchaseContactsId());
+        addLogisticOrderDTO.setSupplyCompany(param.getSupplyCompany());
+        addLogisticOrderDTO.setSupplyCompanyId(param.getSupplyCompanyId());
+        addLogisticOrderDTO.setSupplyContactPhone(param.getSupplyContactPhone());
+        addLogisticOrderDTO.setSupplyContacts(param.getSupplyContacts());
+        addLogisticOrderDTO.setSupplyContactsId(param.getSupplyContactsId());
         addLogisticOrderDTO.setGoodsId(param.getGoodsId());
         addLogisticOrderDTO.setGoodsName(param.getGoodsName());
         addLogisticOrderDTO.setGoodsType(param.getGoodsType());

+ 50 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/AddLogisticOrderDTO.java

@@ -118,6 +118,56 @@ public class AddLogisticOrderDTO implements Serializable {
      */
     private Long agentContactsId;
 
+    /**
+     * 采购单位
+     */
+    private String purchaseCompany;
+
+    /**
+     * 采购单位id
+     */
+    private Long purchaseCompanyId;
+
+    /**
+     * 采购单位联系电话
+     */
+    private String purchaseContactPhone;
+
+    /**
+     * 采购单位联系人
+     */
+    private String purchaseContacts;
+
+    /**
+     * 采购单位联系人id
+     */
+    private Long purchaseContactsId;
+
+    /**
+     * 供应单位
+     */
+    private String supplyCompany;
+
+    /**
+     * 供应单位id
+     */
+    private Long supplyCompanyId;
+
+    /**
+     * 供应单位联系电话
+     */
+    private String supplyContactPhone;
+
+    /**
+     * 供应单位联系人
+     */
+    private String supplyContacts;
+
+    /**
+     * 供应单位联系人id
+     */
+    private Long supplyContactsId;
+
 
 
     /**

+ 90 - 16
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtAcceptCarriageOrderService.java

@@ -107,6 +107,14 @@ public class KwtAcceptCarriageOrderService {
      * 物流订单企业表代理单位类型。
      */
     static final int LOGISTICS_AGENT_UNIT_TYPE = 4;
+    /**
+     * 物流订单企业表采购单位类型。
+     */
+    static final int LOGISTICS_PURCHASE_UNIT_TYPE = 5;
+    /**
+     * 物流订单企业表供应单位类型。
+     */
+    static final int LOGISTICS_SUPPLY_UNIT_TYPE = 6;
 
     @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 8000)
     RemoteSystemService remoteSystemService;
@@ -3530,6 +3538,12 @@ public class KwtAcceptCarriageOrderService {
         if (shouldSaveAgentUnit(orderDTO)) {
             entIds.add(orderDTO.getAgentCompanyId());
         }
+        if (Objects.nonNull(orderDTO.getPurchaseCompanyId())) {
+            entIds.add(orderDTO.getPurchaseCompanyId());
+        }
+        if (Objects.nonNull(orderDTO.getSupplyCompanyId())) {
+            entIds.add(orderDTO.getSupplyCompanyId());
+        }
         entIds = entIds.stream().filter(Objects::nonNull).distinct().collect(Collectors.toList());
         Map<Long, EntCacheResDto> entMap = remoteSystemService.queryEntTreeByIds(entIds);
         EntCacheResDto ent = entMap.get(orderDTO.getConsignCompanyId());
@@ -3594,6 +3608,51 @@ public class KwtAcceptCarriageOrderService {
         savelogOrderUnitList.add(notifyUnit);
         log.info("物流订单新增代理企业信息");
         appendAgentUnit(orderDTO, lOrderId, savelogOrderUnitList, entMap);
+        appendTradeOrderUnits(orderDTO, lOrderId, savelogOrderUnitList, entMap);
+    }
+
+    /**
+     * 创建物流订单时追加贸易订单采购单位和供应单位。
+     *
+     * @param orderDTO             物流订单新增DTO
+     * @param lOrderId             物流订单id
+     * @param savelogOrderUnitList 待批量保存企业列表
+     * @param entMap               企业缓存
+     */
+    private void appendTradeOrderUnits(AddLogisticOrderDTO orderDTO, Long lOrderId,
+                                       List<KwtLogisticsOrderUnit> savelogOrderUnitList,
+                                       Map<Long, EntCacheResDto> entMap) {
+        appendTradeOrderUnit(orderDTO, lOrderId, savelogOrderUnitList, entMap,
+                orderDTO.getPurchaseCompanyId(), orderDTO.getPurchaseCompany(), LOGISTICS_PURCHASE_UNIT_TYPE);
+        appendTradeOrderUnit(orderDTO, lOrderId, savelogOrderUnitList, entMap,
+                orderDTO.getSupplyCompanyId(), orderDTO.getSupplyCompany(), LOGISTICS_SUPPLY_UNIT_TYPE);
+    }
+
+    /**
+     * 创建物流订单时追加贸易订单企业。
+     *
+     * @param orderDTO             物流订单新增DTO
+     * @param lOrderId             物流订单id
+     * @param savelogOrderUnitList 待批量保存企业列表
+     * @param entMap               企业缓存
+     * @param companyId            企业id
+     * @param companyName          企业名称
+     * @param unitType             企业类型
+     */
+    private void appendTradeOrderUnit(AddLogisticOrderDTO orderDTO, Long lOrderId,
+                                      List<KwtLogisticsOrderUnit> savelogOrderUnitList,
+                                      Map<Long, EntCacheResDto> entMap,
+                                      Long companyId, String companyName, int unitType) {
+        if (Objects.isNull(companyId)) {
+            return;
+        }
+        EntCacheResDto ent = MapUtils.isEmpty(entMap) ? null : entMap.get(companyId);
+        if (Objects.isNull(ent)) {
+            log.warn("物流订单未找到贸易订单企业一级企业信息,lOrderId:{}, companyId:{}, companyName:{}, unitType:{}",
+                    lOrderId, companyId, companyName, unitType);
+            return;
+        }
+        savelogOrderUnitList.add(buildLogisticsOrderUnit(orderDTO, lOrderId, companyId, ent, unitType));
     }
 
     /**
@@ -3639,22 +3698,37 @@ public class KwtAcceptCarriageOrderService {
      * @return 代理单位记录
      */
     static KwtLogisticsOrderUnit buildAgentLogisticsOrderUnit(AddLogisticOrderDTO orderDTO, Long lOrderId, EntCacheResDto agentEnt) {
-        KwtLogisticsOrderUnit agentUnit = new KwtLogisticsOrderUnit();
-        agentUnit.setId(new IdWorker(NumberConstant.FOUR).nextId());
-        agentUnit.setLOrderId(lOrderId);
-        agentUnit.setUnitType(LOGISTICS_AGENT_UNIT_TYPE);
-        agentUnit.setEntId(orderDTO.getAgentCompanyId());
-        agentUnit.setContactsId(agentEnt.getContactsId());
-        agentUnit.setTopEntId(agentEnt.getId());
-        agentUnit.setFirmName(agentEnt.getFirmName());
-        agentUnit.setContacts(agentEnt.getContacts());
-        agentUnit.setPhone(agentEnt.getPhone());
-        agentUnit.setStatus(NumberConstant.ZERO);
-        agentUnit.setCreateBy(orderDTO.getUserId());
-        agentUnit.setCreateTime(new Date());
-        agentUnit.setUpdateBy(orderDTO.getUserId());
-        agentUnit.setUpdateTime(new Date());
-        return agentUnit;
+        return buildLogisticsOrderUnit(orderDTO, lOrderId, orderDTO.getAgentCompanyId(), agentEnt, LOGISTICS_AGENT_UNIT_TYPE);
+    }
+
+    /**
+     * 构建物流订单企业记录。
+     *
+     * @param orderDTO 物流订单新增DTO
+     * @param lOrderId 物流订单id
+     * @param entId    企业id
+     * @param ent      企业缓存
+     * @param unitType 企业类型
+     * @return 物流订单企业记录
+     */
+    static KwtLogisticsOrderUnit buildLogisticsOrderUnit(AddLogisticOrderDTO orderDTO, Long lOrderId,
+                                                         Long entId, EntCacheResDto ent, int unitType) {
+        KwtLogisticsOrderUnit orderUnit = new KwtLogisticsOrderUnit();
+        orderUnit.setId(new IdWorker(unitType).nextId());
+        orderUnit.setLOrderId(lOrderId);
+        orderUnit.setUnitType(unitType);
+        orderUnit.setEntId(entId);
+        orderUnit.setContactsId(ent.getContactsId());
+        orderUnit.setTopEntId(ent.getId());
+        orderUnit.setFirmName(ent.getFirmName());
+        orderUnit.setContacts(ent.getContacts());
+        orderUnit.setPhone(ent.getPhone());
+        orderUnit.setStatus(NumberConstant.ZERO);
+        orderUnit.setCreateBy(orderDTO.getUserId());
+        orderUnit.setCreateTime(new Date());
+        orderUnit.setUpdateBy(orderDTO.getUserId());
+        orderUnit.setUpdateTime(new Date());
+        return orderUnit;
     }
 
     private static void setLogisticContractInfo(AddLogisticOrderDTO orderDTO,LogisticData x, Long lOrderId, List<KwtLogisticsOrderContract> saveContractList) {

+ 34 - 0
sckw-modules/sckw-transport/src/test/java/com/sckw/transport/service/KwtAcceptCarriageOrderServiceTest.java

@@ -92,4 +92,38 @@ public class KwtAcceptCarriageOrderServiceTest {
         Assert.assertEquals(Long.valueOf(9001L), result.getContactsId());
         Assert.assertEquals(Long.valueOf(1001L), result.getCreateBy());
     }
+
+    /**
+     * Purchase and supply logistics order units should use type 5 and 6.
+     */
+    @Test
+    public void buildLogisticsOrderUnitWhenPurchaseAndSupplyExist() {
+        AddLogisticOrderDTO orderDTO = new AddLogisticOrderDTO();
+        orderDTO.setUserId(1001L);
+
+        EntCacheResDto purchaseEnt = new EntCacheResDto();
+        purchaseEnt.setId(9001L);
+        purchaseEnt.setFirmName("Purchase Company");
+        purchaseEnt.setContacts("Bob");
+        purchaseEnt.setPhone("13700000000");
+        purchaseEnt.setContactsId(8001L);
+        EntCacheResDto supplyEnt = new EntCacheResDto();
+        supplyEnt.setId(9002L);
+        supplyEnt.setFirmName("Supply Company");
+        supplyEnt.setContacts("Carol");
+        supplyEnt.setPhone("13600000000");
+        supplyEnt.setContactsId(7001L);
+
+        KwtLogisticsOrderUnit purchaseUnit = KwtAcceptCarriageOrderService.buildLogisticsOrderUnit(
+                orderDTO, 5001L, 1001L, purchaseEnt, KwtAcceptCarriageOrderService.LOGISTICS_PURCHASE_UNIT_TYPE);
+        KwtLogisticsOrderUnit supplyUnit = KwtAcceptCarriageOrderService.buildLogisticsOrderUnit(
+                orderDTO, 5001L, 2001L, supplyEnt, KwtAcceptCarriageOrderService.LOGISTICS_SUPPLY_UNIT_TYPE);
+
+        Assert.assertEquals(Integer.valueOf(5), purchaseUnit.getUnitType());
+        Assert.assertEquals(Long.valueOf(1001L), purchaseUnit.getEntId());
+        Assert.assertEquals(Long.valueOf(9001L), purchaseUnit.getTopEntId());
+        Assert.assertEquals(Integer.valueOf(6), supplyUnit.getUnitType());
+        Assert.assertEquals(Long.valueOf(2001L), supplyUnit.getEntId());
+        Assert.assertEquals(Long.valueOf(9002L), supplyUnit.getTopEntId());
+    }
 }