Ver Fonte

提交查询物流合同新增日志

chenxiaofei há 6 horas atrás
pai
commit
4ad7da4fe0

+ 12 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/SupplyContractTradeReq.java

@@ -105,6 +105,18 @@ public class SupplyContractTradeReq implements Serializable {
         @NotBlank(message = "供应单位联系电话不能为空")
         private String providePhone;
 
+        /**
+         * 代理单位ID。
+         */
+        @Schema(description = "代理单位ID")
+        private Long agentEntId;
+
+        /**
+         * 代理单位联系电话。
+         */
+        @Schema(description = "代理单位联系电话")
+        private String agentPhone;
+
         /**
          * 合同编号
          */

+ 20 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/TradeBaseInfoResVo.java

@@ -56,6 +56,26 @@ public class TradeBaseInfoResVo implements Serializable {
      */
     private String provideContacts;
 
+    /**
+     * 代理单位名称。
+     */
+    private String agentEntName;
+
+    /**
+     * 代理单位ID。
+     */
+    private Long agentEntId;
+
+    /**
+     * 代理单位联系电话。
+     */
+    private String agentPhone;
+
+    /**
+     * 代理单位联系人。
+     */
+    private String agentContacts;
+
     /**
      * 采购单位
      */

+ 22 - 2
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractTradeService.java

@@ -439,8 +439,18 @@ public class KwcContractTradeService {
         if (Objects.isNull(baseInfo)) {
             return;
         }
-        boolean hasAgentEnt = Objects.nonNull(baseInfo.getAgentEntId());
-        boolean hasAgentPhone = StringUtils.isNotBlank(baseInfo.getAgentPhone());
+        validateAgentUnitParam(baseInfo.getAgentEntId(), baseInfo.getAgentPhone());
+    }
+
+    /**
+     * 校验代理单位和联系电话必须同时填写或同时不填写。
+     *
+     * @param agentEntId 代理单位ID
+     * @param agentPhone 代理单位联系电话
+     */
+    static void validateAgentUnitParam(Long agentEntId, String agentPhone) {
+        boolean hasAgentEnt = Objects.nonNull(agentEntId);
+        boolean hasAgentPhone = StringUtils.isNotBlank(agentPhone);
         if (!hasAgentEnt && !hasAgentPhone) {
             return;
         }
@@ -676,6 +686,13 @@ public class KwcContractTradeService {
                     tradeBaseInfoResVo.setPurchaseContacts(kwcContractTradeUnit.getContacts());
                     tradeBaseInfoResVo.setPurchaseEntId(kwcContractTradeUnit.getEntId());
                 }
+
+                if (Objects.equals(kwcContractTradeUnit.getUnitType(), KwcContractTradeUnitService.TRADE_AGENT_UNIT_TYPE)) {
+                    tradeBaseInfoResVo.setAgentEntName(kwcContractTradeUnit.getFirmName());
+                    tradeBaseInfoResVo.setAgentPhone(kwcContractTradeUnit.getSignPhone());
+                    tradeBaseInfoResVo.setAgentContacts(kwcContractTradeUnit.getContacts());
+                    tradeBaseInfoResVo.setAgentEntId(kwcContractTradeUnit.getEntId());
+                }
             }
         }
         contractTradeDetailResVo.setBaseInfo(tradeBaseInfoResVo);
@@ -897,6 +914,8 @@ public class KwcContractTradeService {
         EntTypeResDto entTypeResDto = remoteSystemService.queryEntTypeById(LoginUserHolder.getEntId());
 
         TradeBaseInfoReqVo baseInfo = reqVo.getBaseInfo();
+        // 更新时控制器不会自动级联校验嵌套对象,在业务层保证代理信息完整。
+        validateAgentUnitParam(baseInfo);
         if (Objects.equals(baseInfo.getUnloadWay(), Integer.parseInt(DictEnum.LOAD_UNLOAD_WAY_2.getValue())) && Objects.isNull(baseInfo.getMeasurementWay())) {
             throw new BusinessException("卸货方式为按卸货筽量时,计量方式不能为空!");
         }
@@ -1516,6 +1535,7 @@ public class KwcContractTradeService {
 
     private void checkParam(SupplyContractTradeReq.TradeBaseInfo baseInfo) {
         if (Objects.nonNull(baseInfo)) {
+            validateAgentUnitParam(baseInfo.getAgentEntId(), baseInfo.getAgentPhone());
             if (StringUtils.isNotBlank(baseInfo.getContractCode()) && baseInfo.getContractCode().length() > 20) {
                 throw new SystemException("合同编号超长!");
             }

+ 16 - 0
sckw-modules/sckw-contract/src/test/java/com/sckw/contract/service/operateService/KwcContractTradeServiceTest.java

@@ -70,6 +70,22 @@ public class KwcContractTradeServiceTest {
         KwcContractTradeService.validateAgentUnitParam(baseInfo);
     }
 
+    /**
+     * 补充合同的代理单位与联系电话完整时应通过校验。
+     */
+    @Test
+    public void validateSupplyAgentUnitParamWhenAgentInfoComplete() {
+        KwcContractTradeService.validateAgentUnitParam(3001L, "13800000000");
+    }
+
+    /**
+     * 补充合同只填写代理电话时应拦截。
+     */
+    @Test(expected = SystemException.class)
+    public void validateSupplyAgentUnitParamWhenAgentEntMissing() {
+        KwcContractTradeService.validateAgentUnitParam(null, "13800000000");
+    }
+
     /**
      * 销售合同代理单位落库类型固定为3。
      */