Procházet zdrojové kódy

费用因子承保规则 添加 车主 出生年月日因子

785834757 před 1 rokem
rodič
revize
74a36b4441

+ 11 - 0
src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java

@@ -106,6 +106,7 @@ public class RuleAttrMappingVo {
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleAge", String.valueOf(between)));
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("VehicleAge", String.valueOf(between)));
 
 
 
 
+
         //发证日期
         //发证日期
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("DateofIssuance", carInfo.getIssueDate()));
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("DateofIssuance", carInfo.getIssueDate()));
         //车长
         //车长
@@ -125,6 +126,10 @@ public class RuleAttrMappingVo {
             ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersSex", ownerInfo.getGender().equals("男") ? "1" : "2"));
             ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersSex", ownerInfo.getGender().equals("男") ? "1" : "2"));
             //车主地址
             //车主地址
             ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersAddress", ownerInfo.getAddr()));
             ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersAddress", ownerInfo.getAddr()));
+            // 车主生日
+            String carOwnersBirthday = ownerInfo.getIdentifyNumber().substring(6,10) + "-" + ownerInfo.getIdentifyNumber().substring(10,12) + "-" + ownerInfo.getIdentifyNumber().substring(12,14);
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersBirthday", carOwnersBirthday));
+
         }
         }
         //车主 姓名
         //车主 姓名
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnerName", ownerInfo.getName()));
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnerName", ownerInfo.getName()));
@@ -139,6 +144,9 @@ public class RuleAttrMappingVo {
             ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantSex", policyHolderInfo.getGender().equals("男") ? "1" : "2"));
             ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantSex", policyHolderInfo.getGender().equals("男") ? "1" : "2"));
             //投保人地址
             //投保人地址
             ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantAddress", policyHolderInfo.getAddr()));
             ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantAddress", policyHolderInfo.getAddr()));
+            // 投保人生日
+            String applicantBirthday = policyHolderInfo.getIdentifyNumber().substring(6,10) + "-" + policyHolderInfo.getIdentifyNumber().substring(10,12) + "-" + policyHolderInfo.getIdentifyNumber().substring(12,14);
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantBirthday", applicantBirthday));
         }
         }
 
 
         CustomerInfoVo insuredPersonInfo = insOrders.getInsureinfo().toJavaObject(CustomerInfoVo.class);
         CustomerInfoVo insuredPersonInfo = insOrders.getInsureinfo().toJavaObject(CustomerInfoVo.class);
@@ -151,6 +159,9 @@ public class RuleAttrMappingVo {
             ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredSex", insuredPersonInfo.getGender().equals("男") ? "1" : "2"));
             ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredSex", insuredPersonInfo.getGender().equals("男") ? "1" : "2"));
             //被保人地址
             //被保人地址
             ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredAddress", insuredPersonInfo.getAddr()));
             ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredAddress", insuredPersonInfo.getAddr()));
+            //被保人生日
+            String insuredBirthday = insuredPersonInfo.getIdentifyNumber().substring(6,10) + "-" + insuredPersonInfo.getIdentifyNumber().substring(10,12) + "-" + insuredPersonInfo.getIdentifyNumber().substring(12,14);
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredBirthday", insuredBirthday));
         }
         }
         String OPIConsistent = "0";
         String OPIConsistent = "0";
         if(StringUtils.isNotBlank(ownerInfo.getProperty())){
         if(StringUtils.isNotBlank(ownerInfo.getProperty())){

+ 85 - 2
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -48,6 +48,7 @@ import org.springframework.stereotype.Service;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.math.RoundingMode;
+import java.text.DateFormat;
 import java.time.LocalDate;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
@@ -2911,8 +2912,6 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                     logs.append("<span style=\"color:red;\">规则匹配失败:" + collect.get(0).getAttrName() + "</span>\n");
                     logs.append("<span style=\"color:red;\">规则匹配失败:" + collect.get(0).getAttrName() + "</span>\n");
                 }
                 }
 
 
-
-
                 return false;
                 return false;
             }
             }
 
 
@@ -3070,6 +3069,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
             return radioEqual(ptlAgreementProductCostsAttrLink, value);
             return radioEqual(ptlAgreementProductCostsAttrLink, value);
         } else if (ptlAgreementUndwrtRulesAttr.getAttrType().equals("datetime")){ // 时间
         } else if (ptlAgreementUndwrtRulesAttr.getAttrType().equals("datetime")){ // 时间
             return dateTimeEqual(ptlAgreementProductCostsAttrLink, value);
             return dateTimeEqual(ptlAgreementProductCostsAttrLink, value);
+        } else if (ptlAgreementUndwrtRulesAttr.getAttrType().equals("date")){
+            return dateEqual(ptlAgreementProductCostsAttrLink, value);
         }
         }
 
 
         return false;
         return false;
@@ -3104,6 +3105,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
             return radioEqual(ptlAgreementUndwrtRulesAttrLink, value);
             return radioEqual(ptlAgreementUndwrtRulesAttrLink, value);
         } else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("datetime")){
         } else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("datetime")){
             return dateTimeEqual(ptlAgreementUndwrtRulesAttrLink, value, insOrders);
             return dateTimeEqual(ptlAgreementUndwrtRulesAttrLink, value, insOrders);
+        } else if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("date")){
+            return dateEqual(ptlAgreementUndwrtRulesAttrLink,value);
         }
         }
         return false;
         return false;
     }
     }
@@ -3367,6 +3370,46 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
     }
     }
 
 
 
 
+    public boolean dateEqual(PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink, String value){
+//        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        if(Objects.isNull(value) || value.equals("")){
+            return false;
+        }
+        LocalDateTime v = LocalDate.parse(value).atStartOfDay();
+        LocalDateTime min = null,max = null;
+        if(!Objects.isNull(ptlAgreementProductCostsAttrLink.getMin())){
+            min = LocalDate.parse(ptlAgreementProductCostsAttrLink.getMin()).atStartOfDay();
+        }
+        if(!Objects.isNull(ptlAgreementProductCostsAttrLink.getMax())){
+            max = LocalDate.parse(ptlAgreementProductCostsAttrLink.getMax()).atStartOfDay();
+        }
+
+        //统一处理数值
+        if ("1".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            if (v.isAfter(min) && v.isBefore(max)) {
+                return true;
+            }
+        } else if ("2".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            if (v.isBefore(min)) {
+                return true;
+            }
+        } else if ("3".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            if (v.isBefore(min) || v.isEqual(min)) {
+                return true;
+            }
+        } else if ("4".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            if (v.isAfter(max)) {
+                return true;
+            }
+        } else if ("5".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            if (v.isAfter(max) || v.isEqual(max)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
     public boolean dateTimeEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value, InsOrders insOrders){
     public boolean dateTimeEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value, InsOrders insOrders){
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         //判断险种 的起保时间
         //判断险种 的起保时间
@@ -3415,6 +3458,46 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         return false;
         return false;
     }
     }
 
 
+
+    public boolean dateEqual(PtlAgreementUndwrtRulesAttrLink ptlAgreementUndwrtRulesAttrLink, String value){
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+
+        if(!Objects.isNull(value) && !value.isEmpty()) {
+            LocalDateTime v = LocalDate.parse(value).atStartOfDay();
+            LocalDateTime min = null, max = null;
+            if (!Objects.isNull(ptlAgreementUndwrtRulesAttrLink.getMin())) {
+                min = LocalDate.parse(ptlAgreementUndwrtRulesAttrLink.getMin()).atStartOfDay();
+            }
+            if (!Objects.isNull(ptlAgreementUndwrtRulesAttrLink.getMax())) {
+                max = LocalDate.parse(ptlAgreementUndwrtRulesAttrLink.getMax()).atStartOfDay();
+            }
+
+            //统一处理数值
+            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;
+    }
+
     /**
     /**
      * 获取车辆新旧车信息
      * 获取车辆新旧车信息
      *
      *

+ 20 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java

@@ -230,6 +230,8 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                 .in(PtlAgreementProductCostsAttrLink::getCostsId, ids));
                 .in(PtlAgreementProductCostsAttrLink::getCostsId, ids));
         Map<String, List<PtlAgreementProductCostsAttrLink>> groupedByCostsId = list.stream()
         Map<String, List<PtlAgreementProductCostsAttrLink>> groupedByCostsId = list.stream()
                 .collect(Collectors.groupingBy(PtlAgreementProductCostsAttrLink::getCostsId));
                 .collect(Collectors.groupingBy(PtlAgreementProductCostsAttrLink::getCostsId));
+
+        //费用描述
         groupedByCostsId.forEach((k, v) -> {
         groupedByCostsId.forEach((k, v) -> {
             pages.getRecords().stream().filter(x -> x.getId().equals(k)).findFirst().ifPresent(x -> x.setDesc(buildDesc(v, undwrtRulesAttrList)));
             pages.getRecords().stream().filter(x -> x.getId().equals(k)).findFirst().ifPresent(x -> x.setDesc(buildDesc(v, undwrtRulesAttrList)));
         });
         });
@@ -385,6 +387,9 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
                         desc += ptlAgreementUndwrtRulesAttr.getAttrName() + "为" + v.get(i).getMin() + "\n";
                         desc += ptlAgreementUndwrtRulesAttr.getAttrName() + "为" + v.get(i).getMin() + "\n";
                     }
                     }
                 }
                 }
+                if("date".equals(ptlAgreementUndwrtRulesAttr.getAttrType())){
+                    desc += dateIdentifying(ptlAgreementUndwrtRulesAttr, v.get(i)) + "\n";
+                }
             }
             }
         }
         }
         return desc;
         return desc;
@@ -414,6 +419,21 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         return "";
         return "";
     }
     }
 
 
+    private String dateIdentifying(PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr, PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink) {
+        if ("1".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "范围值" + ptlAgreementProductCostsAttrLink.getMin() + "到" + ptlAgreementProductCostsAttrLink.getMax();
+        } else if ("2".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "小于" + ptlAgreementProductCostsAttrLink.getMin();
+        } else if ("3".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "小于等于" + ptlAgreementProductCostsAttrLink.getMin();
+        } else if ("4".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "大于" + ptlAgreementProductCostsAttrLink.getMax();
+        } else if ("5".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "大于等于" + ptlAgreementProductCostsAttrLink.getMax();
+        }
+        return "";
+    }
+
     @Override
     @Override
     public AgreementProductCostsSave costsGet(String costsId, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
     public AgreementProductCostsSave costsGet(String costsId, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
         //设置费用入口信息
         //设置费用入口信息

+ 18 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementUndwrtRulesNewServiceImpl.java

@@ -183,6 +183,9 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
                     desc.append(ptlAgreementUndwrtRulesAttr.getAttrName()).append("不包含").append(v.get(i).getMin()).append("\n");
                     desc.append(ptlAgreementUndwrtRulesAttr.getAttrName()).append("不包含").append(v.get(i).getMin()).append("\n");
                 }
                 }
             }
             }
+            if("date".equals(ptlAgreementUndwrtRulesAttr.getAttrType())){
+                desc.append(dateIdentifying(ptlAgreementUndwrtRulesAttr, v.get(i))).append("\n");
+            }
         }
         }
         return desc.toString();
         return desc.toString();
     }
     }
@@ -207,6 +210,21 @@ public class PtlAgreementUndwrtRulesNewServiceImpl extends ServiceImpl<PtlAgreem
         return "";
         return "";
     }
     }
 
 
+    private String dateIdentifying(PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr, PtlAgreementUndwrtRulesAttrLink ptlAgreementProductCostsAttrLink) {
+        if ("1".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "范围值" + ptlAgreementProductCostsAttrLink.getMin() + "到" + ptlAgreementProductCostsAttrLink.getMax();
+        } else if ("2".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "小于" + ptlAgreementProductCostsAttrLink.getMin();
+        } else if ("3".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "小于等于" + ptlAgreementProductCostsAttrLink.getMin();
+        } else if ("4".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "大于" + ptlAgreementProductCostsAttrLink.getMax();
+        } else if ("5".equals(ptlAgreementProductCostsAttrLink.getOperator())) {
+            return ptlAgreementUndwrtRulesAttr.getAttrName() + "大于等于" + ptlAgreementProductCostsAttrLink.getMax();
+        }
+        return "";
+    }
+
     /**
     /**
      * 验证承保规则表单
      * 验证承保规则表单
      */
      */