Kaynağa Gözat

Merge remote-tracking branch 'origin/dev_jzg_lipf_v20260622' into dev_jzg_lipf_v20260622

lipf 1 ay önce
ebeveyn
işleme
a9c36b2039

+ 10 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/ImportContentExt.java

@@ -8,6 +8,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.io.Serial;
+import java.math.BigDecimal;
 
 /**
  * Excel 表格字段填充后的完整数据信息
@@ -41,6 +42,15 @@ public class ImportContentExt extends ExcelContent4Platform {
     @Schema(description = "类型")
     private String type;
 
+    @Schema(description = "交强险手续费比例")
+    private BigDecimal jqSuperviseCostsProportion;
+
+    @Schema(description = "商业险手续费比例")
+    private BigDecimal sySuperviseCostsProportion;
+
+    @Schema(description = "驾意险手续费比例")
+    private BigDecimal jySuperviseCostsProportion;
+
     public ImportResultVo checkEmpty(){
         ImportResultVo vo = new ImportResultVo();
         if(StrUtil.isEmpty(this.orderNo)){

+ 140 - 48
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -2556,8 +2556,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                 errrMsg.append("该批数据的保险机构为空. ");
             }
         }
-        errrMsg.append(this.validatePolicy(datas));
-        errrMsg.append(this.validateProportion(datas));
+        errrMsg.append(this.validatePolicy(datas, type));
+        errrMsg.append(this.validateProportion(datas, type));
         return errrMsg.toString();
     }
 
@@ -2567,7 +2567,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * @author lipf
      * @date 2026/8/20 10:35
      */
-    private String validatePolicy(List<ImportContentExt> datas) {
+    private String validatePolicy(List<ImportContentExt> datas, String type) {
         StringBuilder errrMsg = new StringBuilder();
         for (ImportContentExt data : datas) {
             boolean all = false;
@@ -2575,36 +2575,60 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             boolean sy = false;
             boolean jy = false;
             InsOrdersPolicy insOrdersPolicy = data.getInsOrdersPolicy();
-            if(insOrdersPolicy == null){
+            if (insOrdersPolicy == null) {
                 continue;
             }
-            if(!Objects.equals(insOrdersPolicy.getJqPolicyNo(), data.getJqPolicyNo())){
-                all = true;
-                jq = true;
-            }
-            if(!Objects.equals(insOrdersPolicy.getSyPolicyNo(), data.getSyPolicyNo())){
-                all = true;
-                sy = true;
-            }
-            if(!Objects.equals(insOrdersPolicy.getJyPolicyNo(), data.getJyPolicyNo())){
-                all = true;
-                jy = true;
+
+            // type=20:全部校验;type=11:仅交强、商业险;type=12:仅驾意险
+            if ("20".equals(type)) {
+                // 全部校验:交强、商业、驾意
+                if (!Objects.equals(insOrdersPolicy.getJqPolicyNo(), data.getJqPolicyNo())) {
+                    all = true;
+                    jq = true;
+                }
+                if (!Objects.equals(insOrdersPolicy.getSyPolicyNo(), data.getSyPolicyNo())) {
+                    all = true;
+                    sy = true;
+                }
+                if (!Objects.equals(insOrdersPolicy.getJyPolicyNo(), data.getJyPolicyNo())) {
+                    all = true;
+                    jy = true;
+                }
+            } else if ("11".equals(type)) {
+                // 只校验交强、商业险保单号
+                if (!Objects.equals(insOrdersPolicy.getJqPolicyNo(), data.getJqPolicyNo())) {
+                    all = true;
+                    jq = true;
+                }
+                if (!Objects.equals(insOrdersPolicy.getSyPolicyNo(), data.getSyPolicyNo())) {
+                    all = true;
+                    sy = true;
+                }
+            } else if ("12".equals(type)) {
+                // 只校验驾意险保单号
+                if (!Objects.equals(insOrdersPolicy.getJyPolicyNo(), data.getJyPolicyNo())) {
+                    all = true;
+                    jy = true;
+                }
             }
-            if(all){
+
+            if (all) {
                 errrMsg.append("车牌号为[").append(data.getLicenseNo()).append("]的保单号不一致: ");
-                if(jq){
+                if (jq) {
                     errrMsg.append("交强险保单号不一致. 应收数据的交强险保单号是[").append(insOrdersPolicy.getJqPolicyNo()).append("].excel维护的交强险保单号是[").append(data.getJqPolicyNo()).append("].");
                 }
-                if(sy){
+                if (sy) {
                     errrMsg.append("商业险保单号不一致. 应收数据的商业险保单号是[").append(insOrdersPolicy.getSyPolicyNo()).append("].excel维护的商业险保单号是[").append(data.getSyPolicyNo()).append("].");
                 }
-                if(jy){
+                if (jy) {
                     errrMsg.append("驾意险保单号不一致. 应收数据的驾意险保单号是[").append(insOrdersPolicy.getJyPolicyNo()).append("].excel维护的驾意险保单号是[").append(data.getJyPolicyNo()).append("].");
                 }
+                errrMsg.append(";");
             }
         }
         return errrMsg.toString();
     }
+
     /**
      * 校验应收比例
      *
@@ -2612,7 +2636,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * @author lipf
      * @date 2026/8/20 10:27
      */
-    private static String validateProportion(List<ImportContentExt> datas) {
+    private String validateProportion(List<ImportContentExt> datas, String type) {
         StringBuilder errrMsg = new StringBuilder();
         for (ImportContentExt data : datas) {
             boolean all = false;
@@ -2620,45 +2644,113 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             boolean sy = false;
             boolean jy = false;
             InsPlyIncome insPlyIncome = data.getInsPlyIncome();
-            if(insPlyIncome == null){
+            if (insPlyIncome == null) {
                 continue;
             }
-            String jqadd = BigDecimalUtil.add(insPlyIncome.getJqSuperviseCostsProportion(), insPlyIncome.getJqOtherCostsProportion());
-            BigDecimal jqsubtract = BigDecimalUtil.subtract(new BigDecimal(jqadd), new BigDecimal(data.getJqInletRatio()));
-            if(BigDecimal.ZERO.compareTo(jqsubtract) != 0){
-                all = true;
-                jq = true;
-            }
-            String syadd = BigDecimalUtil.add(insPlyIncome.getSySuperviseCostsProportion(), insPlyIncome.getSyOtherCostsProportion());
-            BigDecimal sysubtract = BigDecimalUtil.subtract(new BigDecimal(syadd), new BigDecimal(data.getSyInletRatio()));
-            if(BigDecimal.ZERO.compareTo(sysubtract) != 0){
-                all = true;
-                sy = true;
-            }
-            String jyadd = BigDecimalUtil.add(insPlyIncome.getJySuperviseCostsProportion(), insPlyIncome.getJyOtherCostsProportion());
-            BigDecimal jysubtract = BigDecimalUtil.subtract(new BigDecimal(jyadd), new BigDecimal(data.getJyInletRatio()));
-            if(BigDecimal.ZERO.compareTo(jysubtract) != 0){
-                all = true;
-                jy = true;
-            }
 
-            if(all){
-                errrMsg.append("车牌号为").append(data.getLicenseNo()).append("的导入记录中,");
-                if(jq){
-                    errrMsg.append("交强险入口比例异常. 应收数据的交强险入口比例是[").append(jqadd).append("].excel维护的交强险入口比例是[").append(data.getJqInletRatio()).append("].");
+            if ("20".equals(type)) {
+                // 平台协议校验比例
+                String jqadd = BigDecimalUtil.add(insPlyIncome.getJqSuperviseCostsProportion(), insPlyIncome.getJqOtherCostsProportion());
+                String jqInletRatioStr = data.getJqInletRatio();
+                if (jqadd == null || jqInletRatioStr == null) {
+                    all = true;
+                    jq = true;
+                } else {
+                    BigDecimal jqsubtract = BigDecimalUtil.subtract(new BigDecimal(jqadd), new BigDecimal(jqInletRatioStr));
+                    if (BigDecimal.ZERO.compareTo(jqsubtract) != 0) {
+                        all = true;
+                        jq = true;
+                    }
                 }
-                if(sy){
-                    errrMsg.append("商业险入口比例异常.应收数据的商业险入口比例是[").append(syadd).append("].excel维护的商业险入口比例是[").append(data.getSyInletRatio()).append("].");
+
+                String syadd = BigDecimalUtil.add(insPlyIncome.getSySuperviseCostsProportion(), insPlyIncome.getSyOtherCostsProportion());
+                String syInletRatioStr = data.getSyInletRatio();
+                if (syadd == null || syInletRatioStr == null) {
+                    all = true;
+                    sy = true;
+                } else {
+                    BigDecimal sysubtract = BigDecimalUtil.subtract(new BigDecimal(syadd), new BigDecimal(syInletRatioStr));
+                    if (BigDecimal.ZERO.compareTo(sysubtract) != 0) {
+                        all = true;
+                        sy = true;
+                    }
                 }
-                if(jy){
-                    errrMsg.append("驾意险入口比例异常.应收数据的驾意险入口比例是[").append(jyadd).append("].excel维护的驾意险入口比例是[").append(data.getJyInletRatio()).append("].");
+
+                String jyadd = BigDecimalUtil.add(insPlyIncome.getJySuperviseCostsProportion(), insPlyIncome.getJyOtherCostsProportion());
+                String jyInletRatioStr = data.getJyInletRatio();
+                if (jyadd == null || jyInletRatioStr == null) {
+                    all = true;
+                    jy = true;
+                } else {
+                    BigDecimal jysubtract = BigDecimalUtil.subtract(new BigDecimal(jyadd), new BigDecimal(jyInletRatioStr));
+                    if (BigDecimal.ZERO.compareTo(jysubtract) != 0) {
+                        all = true;
+                        jy = true;
+                    }
+                }
+
+                if (all) {
+                    errrMsg.append("车牌号为").append(data.getLicenseNo()).append("的导入记录中,");
+                    if (jq) {
+                        errrMsg.append("交强险入口比例异常. 应收数据的交强险入口比例是[").append(jqadd).append("].excel维护的交强险入口比例是[").append(jqInletRatioStr).append("].");
+                    }
+                    if (sy) {
+                        errrMsg.append("商业险入口比例异常.应收数据的商业险入口比例是[").append(syadd).append("].excel维护的商业险入口比例是[").append(syInletRatioStr).append("].");
+                    }
+                    if (jy) {
+                        errrMsg.append("驾意险入口比例异常.应收数据的驾意险入口比例是[").append(jyadd).append("].excel维护的驾意险入口比例是[").append(jyInletRatioStr).append("].");
+                    }
+                    errrMsg.append(";");
+                }
+            } else if ("11".equals(type)) {
+                // 私有协议校验比例
+                String jqDb = insPlyIncome.getJqSuperviseCostsProportion();
+                BigDecimal jqExcel = data.getJqSuperviseCostsProportion();
+                // compareTo判等,同时判空
+                if (!(StrUtil.isNotBlank(jqDb) && jqExcel != null && BigDecimalUtil.valueOf(jqDb).compareTo(jqExcel) == 0)) {
+                    all = true;
+                    jq = true;
+                }
+
+                String syDb = insPlyIncome.getSySuperviseCostsProportion();
+                BigDecimal syExcel = data.getSySuperviseCostsProportion();
+                if (!(StrUtil.isNotBlank(syDb) && syExcel != null && BigDecimalUtil.valueOf(syDb).compareTo(syExcel) == 0)) {
+                    all = true;
+                    sy = true;
+                }
+
+                if (all) {
+                    errrMsg.append("车牌号为").append(data.getLicenseNo()).append("的导入记录中,");
+                    if (jq) {
+                        errrMsg.append("交强险手续费比例异常. 应收数据的交强险手续费比例是[").append(jqDb).append("].excel维护的交强险手续费比例是[").append(jqExcel).append("].");
+                    }
+                    if (sy) {
+                        errrMsg.append("商业险手续费比例异常.应收数据的商业险手续费比例是[").append(syDb).append("].excel维护的商业险手续费比例是[").append(syExcel).append("].");
+                    }
+                    errrMsg.append(";");
+                }
+            } else if ("12".equals(type)) {
+                // 非车私有协议校验比例
+                String jyDb = insPlyIncome.getJySuperviseCostsProportion();
+                BigDecimal jyExcel = data.getJySuperviseCostsProportion();
+                if (!(StrUtil.isNotBlank(jyDb) && jyExcel != null && BigDecimalUtil.valueOf(jyDb).compareTo(jyExcel) == 0)) {
+                    all = true;
+                    jy = true;
+                }
+
+                if (all) {
+                    errrMsg.append("车牌号为").append(data.getLicenseNo()).append("的导入记录中,");
+                    if (jy) {
+                        errrMsg.append("驾意险手续费比例异常. 应收数据的驾意险手续费比例是[").append(jyDb).append("].excel维护的驾意险手续费比例是[").append(jyExcel).append("].");
+                    }
+                    errrMsg.append(";");
                 }
             }
         }
-
         return errrMsg.toString();
     }
 
+
     /**
      * 解析Excel内容并填充缺失的字段
      *