ソースを参照

修改承保规则 起保日期bug

785834757 1 年間 前
コミット
270fb2c6ee

+ 44 - 33
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -1,7 +1,9 @@
 package com.ydtech.modules.fee.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ydtech.constants.enums.dict.agreement.ProductsType;
 import com.ydtech.constants.enums.dict.insurance.EnergyType;
+import com.ydtech.constants.enums.dict.insurance.NatureOfVehicleUse;
 import com.ydtech.constants.enums.dict.insurance.VehicleType;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.SysUser;
@@ -46,6 +48,7 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -1621,10 +1624,6 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         //默认分销比例设置
         RetailProportion retailProportion = new RetailProportion();
         if (!Objects.isNull(esmRetailList) && !esmRetailList.isEmpty()) {
-            //处理数据空指针异常   add by hxl  2024-12-19
-            if(esmRetailList.get(0).getRetailtype()==null){
-                esmRetailList.get(0).setRetailtype("0");
-            }
             retailLevel = Integer.parseInt(esmRetailList.get(0).getRetailtype());
             //赋值默认的分销比例
             retailProportion.setProportion(esmRetailList.get(0).getDisrate1(), esmRetailList.get(0).getDisrate2(), esmRetailList.get(0).getDisrate3());
@@ -2829,7 +2828,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 
         for (int i = 0; i < ptlAgreementUndwrtRulesNews.size(); i++) {
             //判断是否匹配
-            if (!judgementsRules(ptlAgreementUndwrtRulesNews.get(i).getRulesAttrList(), undwrtRulesAttrList, ruleAttrMappingVoList, logs)) {
+            if (!judgementsRules(ptlAgreementUndwrtRulesNews.get(i).getRulesAttrList(), undwrtRulesAttrList, ruleAttrMappingVoList, logs,insOrders)) {
                 throw new SystemException(logs.toString());
             }
         }
@@ -2928,7 +2927,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
      */
     private boolean judgementsRules(List<PtlAgreementUndwrtRulesAttrLink> ptlAgreementUndwrtRulesAttrLinks,
                                     List<PtlAgreementUndwrtRulesAttr> rulesAttrs, List<RuleAttrMappingVo> ruleAttrMappingVoList,
-                                    StringBuilder logs) {
+                                    StringBuilder logs,InsOrders insOrders) {
         boolean useFlag = true;
 
         for (int i = 0; i < ptlAgreementUndwrtRulesAttrLinks.size(); i++) {
@@ -2963,7 +2962,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 }
             }
             if(!Objects.isNull(ruleAttrMappingVo.getValue())) {
-                useFlag = attrEqual(ptlAgreementUndwrtRulesAttrLinks.get(i), ptlAgreementUndwrtRulesAttr, ruleAttrMappingVo.getValue());
+                useFlag = attrEqual(ptlAgreementUndwrtRulesAttrLinks.get(i), ptlAgreementUndwrtRulesAttr, ruleAttrMappingVo.getValue(),insOrders);
             }else{
                 useFlag = false;
             }
@@ -3072,7 +3071,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
     }
 
     private boolean attrEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink,
-                              PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr, String value) {
+                              PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr, String value,InsOrders insOrders) {
         if (ptlAgreementUndwrtRulesAttr.getAttrType().equals("checkbox")) {
             return checkBoxEqual(ptlAgreementUndwrtRulesAttrLink, value);
         } else if (ptlAgreementUndwrtRulesAttr.getAttrType().equals("inputNumber")) {
@@ -3092,7 +3091,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         } else if (ptlAgreementUndwrtRulesAttr.getAttrType().equals("radio")) {
             return radioEqual(ptlAgreementUndwrtRulesAttrLink, value);
         } else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("datetime")){
-            return dateTimeEqual(ptlAgreementUndwrtRulesAttrLink, value);
+            return dateTimeEqual(ptlAgreementUndwrtRulesAttrLink, value, insOrders);
         }
         return false;
     }
@@ -3354,37 +3353,49 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
     }
 
 
-    public boolean dateTimeEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value){
+    public boolean dateTimeEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value, InsOrders insOrders){
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        LocalDateTime v = LocalDateTime.parse(value,formatter);
-        LocalDateTime min = null,max = null;
-        if(!Objects.isNull(ptlAgreementUndwrtRulesAttrLink.getMin())){
-            min = LocalDateTime.parse(ptlAgreementUndwrtRulesAttrLink.getMin(),formatter);
-        }
-        if(!Objects.isNull(ptlAgreementUndwrtRulesAttrLink.getMax())){
-            max = LocalDateTime.parse(ptlAgreementUndwrtRulesAttrLink.getMax(),formatter);
-        }
-
-        //统一处理数值
-        if ("1".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())) {
-            if (!v.isAfter(min) && v.isBefore(max)) {
+        //判断险种 的起保时间
+        if(ptlAgreementUndwrtRulesAttrLink.getAttrCode().equals("SyStartTime") || ptlAgreementUndwrtRulesAttrLink.getAttrCode().equals("JqStartTime"))
+        {
+            if(insOrders.getProductid().equals(ProductsType.PT_0330.getCode()) && ptlAgreementUndwrtRulesAttrLink.getAttrCode().equals("SyStartTime")){
                 return true;
             }
-        } else if ("2".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())) {
-            if (!v.isBefore(min)) {
+            if(insOrders.getProductid().equals(ProductsType.PT_034001.getCode()) && ptlAgreementUndwrtRulesAttrLink.getAttrCode().equals("JqStartTime")){
                 return true;
             }
-        } else if ("3".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())) {
-            if (!v.isBefore(min)) {
-                return true;
+        }
+        if(!Objects.isNull(value) && !value.isEmpty()) {
+            LocalDateTime v = LocalDateTime.parse(value, formatter);
+            LocalDateTime min = null, max = null;
+            if (!Objects.isNull(ptlAgreementUndwrtRulesAttrLink.getMin())) {
+                min = LocalDateTime.parse(ptlAgreementUndwrtRulesAttrLink.getMin(), formatter);
             }
-        } else if ("4".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())) {
-            if (!v.isAfter(max)) {
-                return true;
+            if (!Objects.isNull(ptlAgreementUndwrtRulesAttrLink.getMax())) {
+                max = LocalDateTime.parse(ptlAgreementUndwrtRulesAttrLink.getMax(), formatter);
             }
-        } else if ("5".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())) {
-            if (!v.isAfter(max)) {
-                return true;
+
+            //统一处理数值
+            if ("1".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())) {
+                if (!v.isAfter(min) && v.isBefore(max)) {
+                    return true;
+                }
+            } else if ("2".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())) {
+                if (!v.isBefore(min)) {
+                    return true;
+                }
+            } else if ("3".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())) {
+                if (!v.isBefore(min)) {
+                    return true;
+                }
+            } else if ("4".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())) {
+                if (!v.isAfter(max)) {
+                    return true;
+                }
+            } else if ("5".equals(ptlAgreementUndwrtRulesAttrLink.getOperator())) {
+                if (!v.isAfter(max)) {
+                    return true;
+                }
             }
         }
         return false;