Explorar o código

提交原矿物流合同

chenxiaofei hai 1 mes
pai
achega
f8bdc47fd5

+ 13 - 11
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/req/LogisticListReq.java

@@ -52,17 +52,6 @@ public class LogisticListReq implements Serializable {
     @NotBlank(message = "合同文件不能为空")
     private String contractFile;
 
-    /**
-     * 业务合同类型(1贸易运输 2原矿转运),未传时后端按贸易运输处理
-     */
-    @Schema(description = "业务合同类型 1-贸易运输 2-原矿转运", allowableValues = {"1", "2"})
-    private Integer transportBizType;
-
-    /**
-     * 允许误差(千分比数值,如 5 表示 5‰);原矿转运时必填
-     */
-    @Schema(description = "允许误差(千分比),原矿转运必填")
-    private BigDecimal allowedError;
     /**
      * 标的信息
      */
@@ -162,6 +151,19 @@ public class LogisticListReq implements Serializable {
         @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
         @Schema(description = "生效时间")
         private Date startTime;
+
+        /**
+         * 业务合同类型(1贸易运输 2原矿转运),未传时后端按贸易运输处理
+         */
+        @Schema(description = "业务合同类型 1-贸易运输 2-原矿转运", allowableValues = {"1", "2"})
+        private Integer transportBizType;
+
+        /**
+         * 允许误差(千分比数值,如 5 表示 5‰);原矿转运时必填
+         */
+        @Schema(description = "允许误差(千分比),原矿转运必填")
+        private BigDecimal allowedError;
+
         /**
          * 通用价格
          */

+ 15 - 15
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/model/vo/res/QueryLogisticDetailResp.java

@@ -51,22 +51,7 @@ public class QueryLogisticDetailResp implements Serializable {
     @Schema(description = "合同文件")
     @NotBlank(message = "合同文件不能为空")
     private String contractFile;
-    /**
-     * 业务合同类型 1贸易运输 2原矿转运
-     */
-    @Schema(description = "业务合同类型 1-贸易运输 2-原矿转运")
-    private Integer transportBizType;
-    /**
-     * 业务合同类型描述
-     */
-    @Schema(description = "业务合同类型描述")
-    private String transportBizTypeDesc;
 
-    /**
-     * 允许误差(千分比数值,如 5 表示 5‰)
-     */
-    @Schema(description = "允许误差(千分比)")
-    private BigDecimal allowedError;
     /**
      * 标的信息
      */
@@ -174,7 +159,22 @@ public class QueryLogisticDetailResp implements Serializable {
         @Schema(description = "通用价格")
         private BigDecimal commonPrice;
 
+        /**
+         * 业务合同类型 1贸易运输 2原矿转运
+         */
+        @Schema(description = "业务合同类型 1-贸易运输 2-原矿转运")
+        private Integer transportBizType;
+        /**
+         * 业务合同类型描述
+         */
+        @Schema(description = "业务合同类型描述")
+        private String transportBizTypeDesc;
 
+        /**
+         * 允许误差(千分比数值,如 5 表示 5‰)
+         */
+        @Schema(description = "允许误差(千分比)")
+        private BigDecimal allowedError;
 
         /**
          * 合同状态

+ 27 - 18
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/operateService/KwcContractLogisticsService.java

@@ -1232,8 +1232,15 @@ public class KwcContractLogisticsService {
             queryLogisticListResp.setCarriageUnit(String.valueOf(carriageUnit.getEntId()));
             queryLogisticListResp.setCarriageUnitName(carriageUnit.getFirmName());
         }
-        queryLogisticListResp.setContractType(r.getTransportBizType());
-        queryLogisticListResp.setContractTypeDesc(LogisticsTransportBizTypeEnum.getLabelByCode(r.getTransportBizType()));
+        if (Objects.nonNull(viewerEntId)) {
+            if (Objects.nonNull(logisticsUnit) && Objects.equals(viewerEntId, logisticsUnit.getEntId())) {
+                queryLogisticListResp.setContractType(1);
+                queryLogisticListResp.setContractTypeDesc("托运合同");
+            } else if (Objects.nonNull(carriageUnit) && Objects.equals(viewerEntId, carriageUnit.getEntId())) {
+                queryLogisticListResp.setContractType(2);
+                queryLogisticListResp.setContractTypeDesc("承运合同");
+            }
+        }
 
         queryLogisticListResp.setContractCode(r.getContractNo());
         queryLogisticListResp.setContractName(r.getName());
@@ -1347,7 +1354,8 @@ public class KwcContractLogisticsService {
         if(Objects.equals(baseInfo.getSettlement(),1)){
             throw new BusinessException("暂不支持普通结算模式");
         }
-        int transportBizType = resolveTransportBizType(req.getTransportBizType());
+        int transportBizType = resolveTransportBizType(baseInfo);
+        baseInfo.setTransportBizType(transportBizType);
         validateLogisticsContractBiz(req, transportBizType);
         if (Objects.nonNull(req.getId())){
             saveContractLogistics.setId(req.getId());
@@ -1399,7 +1407,7 @@ public class KwcContractLogisticsService {
         saveContractLogistics.setTransportBizType(transportBizType);
         if (LogisticsTransportBizTypeEnum.isRawOreTransfer(transportBizType)) {
             saveContractLogistics.setCommonPrice(null);
-            saveContractLogistics.setAllowedError(req.getAllowedError().setScale(4, RoundingMode.HALF_UP));
+            saveContractLogistics.setAllowedError(baseInfo.getAllowedError().setScale(4, RoundingMode.HALF_UP));
         } else {
             saveContractLogistics.setCommonPrice(baseInfo.getCommonPrice());
             saveContractLogistics.setAllowedError(null);
@@ -1422,27 +1430,28 @@ public class KwcContractLogisticsService {
         return Boolean.TRUE;
     }
 
-    private static int resolveTransportBizType(Integer transportBizType) {
-        if (transportBizType == null) {
+    private static int resolveTransportBizType(LogisticListReq.TradeBaseInfo baseInfo) {
+        Integer t = baseInfo.getTransportBizType();
+        if (t == null) {
             return LogisticsTransportBizTypeEnum.TRADE_TRANSPORT.getCode();
         }
-        if (!Objects.equals(transportBizType, LogisticsTransportBizTypeEnum.TRADE_TRANSPORT.getCode())
-                && !Objects.equals(transportBizType, LogisticsTransportBizTypeEnum.RAW_ORE_TRANSFER.getCode())) {
+        if (!Objects.equals(t, LogisticsTransportBizTypeEnum.TRADE_TRANSPORT.getCode())
+                && !Objects.equals(t, LogisticsTransportBizTypeEnum.RAW_ORE_TRANSFER.getCode())) {
             throw new BusinessException("合同类型无效,请选择贸易运输或原矿转运");
         }
-        return transportBizType;
+        return t;
     }
 
     private void validateLogisticsContractBiz(LogisticListReq req, int transportBizType) {
         LogisticListReq.TradeBaseInfo baseInfo = req.getBaseInfo();
         if (LogisticsTransportBizTypeEnum.isRawOreTransfer(transportBizType)) {
-            if (req.getAllowedError() == null) {
+            if (baseInfo.getAllowedError() == null) {
                 throw new BusinessException("原矿转运合同须填写允许误差");
             }
-            if (req.getAllowedError().compareTo(BigDecimal.ZERO) <= 0) {
+            if (baseInfo.getAllowedError().compareTo(BigDecimal.ZERO) <= 0) {
                 throw new BusinessException("允许误差须大于0");
             }
-            if (req.getAllowedError().compareTo(new BigDecimal("1000")) > 0) {
+            if (baseInfo.getAllowedError().compareTo(new BigDecimal("1000")) > 0) {
                 throw new BusinessException("允许误差不能超过1000‰");
             }
             if (baseInfo.getCommonPrice() != null && baseInfo.getCommonPrice().compareTo(BigDecimal.ZERO) > 0) {
@@ -1510,14 +1519,14 @@ public class KwcContractLogisticsService {
             throw new BusinessException("商品不能重复");
         }
         List<KwcContractLogisticsGoods> goods = goodsInfos.stream()
-                .map(x -> getKwcContractLogisticsGoods(x, contactId,baseInfo,req.getTransportBizType()))
+                .map(x -> getKwcContractLogisticsGoods(x, contactId,baseInfo))
                 .collect(Collectors.toList());
         kwcContractLogisticsGoodsRepository.saveLogisticsGoods(goods);
     }
 
     @NotNull
     private static KwcContractLogisticsGoods getKwcContractLogisticsGoods(LogisticListReq.TradeGoodsInfo x,
-                                                                          long contactId,LogisticListReq.TradeBaseInfo baseInfo,Integer transportBizType) {
+                                                                          long contactId,LogisticListReq.TradeBaseInfo baseInfo) {
         KwcContractLogisticsGoods logisticsGoods = new KwcContractLogisticsGoods();
         Date date1 = new Date();
         logisticsGoods.setContractId(contactId);
@@ -1526,7 +1535,7 @@ public class KwcContractLogisticsService {
         logisticsGoods.setSkuId(0L);
         logisticsGoods.setAmount(x.getAmount());
         logisticsGoods.setUnit(x.getUnit());
-        if (LogisticsTransportBizTypeEnum.isRawOreTransfer(transportBizType)) {
+        if (LogisticsTransportBizTypeEnum.isRawOreTransfer(baseInfo.getTransportBizType())) {
             logisticsGoods.setPrice(null);
         } else if (Objects.isNull(x.getPrice())) {
             logisticsGoods.setPrice(Objects.nonNull(baseInfo.getCommonPrice())? baseInfo.getCommonPrice().setScale(2,
@@ -1675,9 +1684,9 @@ public class KwcContractLogisticsService {
         if (transportBizType == null) {
             transportBizType = LogisticsTransportBizTypeEnum.TRADE_TRANSPORT.getCode();
         }
-        queryLogisticListResp.setTransportBizType(transportBizType);
-        queryLogisticListResp.setTransportBizTypeDesc(LogisticsTransportBizTypeEnum.getLabelByCode(transportBizType));
-        queryLogisticListResp.setAllowedError(logistics.getAllowedError());
+        tradeBaseInfo.setTransportBizType(transportBizType);
+        tradeBaseInfo.setTransportBizTypeDesc(LogisticsTransportBizTypeEnum.getLabelByCode(transportBizType));
+        tradeBaseInfo.setAllowedError(logistics.getAllowedError());
 
         BigDecimal commonPrice = logistics.getCommonPrice();
         tradeBaseInfo.setCommonPrice(commonPrice != null && commonPrice.compareTo(BigDecimal.ZERO) == 0 ? null : commonPrice);