فهرست منبع

删除强制非车

785834757 2 سال پیش
والد
کامیت
b7f33d8afc

+ 8 - 0
src/main/java/com/ydtech/constants/enums/dict/insurance/VehicleType.java

@@ -29,5 +29,13 @@ public enum VehicleType implements IBaseEnum {
     // 状态  0 启用  1 不启用
     private final Integer status;
 
+    public static String getByCode(String code) {
+        for (VehicleType vehicleType : values()) {
+            if (vehicleType.getCode().equals(code)) {
+                return vehicleType.getDesc();
+            }
+        }
+        return null;
+    }
 
 }

+ 8 - 5
src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java

@@ -3,9 +3,11 @@ package com.ydtech.modules.fee.dto.vo;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.ydtech.constants.enums.InsurKind;
+import com.ydtech.constants.enums.dict.insurance.VehicleType;
 import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.api.dajia.constants.TypeVehicleMapping;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.service.InsOrdersService;
 import io.swagger.annotations.ApiModelProperty;
@@ -39,6 +41,7 @@ public class RuleAttrMappingVo {
         List<RuleAttrMappingVo> ruleAttrMappingVoList = new ArrayList<>();
         CarInfoVo carInfo = insOrders.getCarinfo().toJavaObject(CarInfoVo.class);
         //车牌号
+
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("LicenseNo", carInfo.getLicenseNo()));
         //品牌型号
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("BrandandModel", carInfo.getModelcname()));
@@ -47,9 +50,9 @@ public class RuleAttrMappingVo {
         //新车购置价
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("PurchasePriceofNewVehicle", carInfo.getPurchasePrice()));
         //车辆用途
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NatureOfUse", carInfo.getVehicleUse()));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("NatureOfUse", TypeVehicleMapping.getByCode(carInfo.getVehicleUse())));
         //车辆种类
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarType", carInfo.getCimodelclass()));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarType", VehicleType.getByCode(carInfo.getCimodelclass())));
         //核定载质量
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("AuthorizedLoadWeight", carInfo.getLimitLoad()));
         //整备质量
@@ -76,7 +79,7 @@ public class RuleAttrMappingVo {
         //车主 年龄
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersAge", ownerInfo.getAge()));
         //车主 性别
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersSex", ownerInfo.getGender()));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersSex", ownerInfo.getGender().equals("男") ? "1" : "2"));
         //车主 姓名
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnerName", ownerInfo.getName()));
 
@@ -86,7 +89,7 @@ public class RuleAttrMappingVo {
         //投保人 年龄
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantAge", policyHolderInfo.getAge()));
         //投保人 性别
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantSex", policyHolderInfo.getGender()));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantSex", policyHolderInfo.getGender().equals("男") ? "1" : "2"));
 
         CustomerInfoVo insuredPersonInfo = insOrders.getInsureinfo().toJavaObject(CustomerInfoVo.class);
         //被保人 证件号码(前6位)
@@ -94,7 +97,7 @@ public class RuleAttrMappingVo {
         //被保人 年龄
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredAge", insuredPersonInfo.getAge()));
         //被保人 性别
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredSex", insuredPersonInfo.getGender()));
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredSex", insuredPersonInfo.getGender().equals("男") ? "1" : "2"));
 
         List<KindInfoVo> kindInfoVos = insOrders.getKing().toJavaList(KindInfoVo.class);
         //险别信息

+ 65 - 55
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -433,45 +433,52 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         //获取所有费用属性关联
         List<RuleAttrMappingVo> ruleAttrMappingVoList = RuleAttrMappingVo.getRuleAttrMappingVoList(insAreaCompany, insOrders);
 
-        List<AgreementProductCosts> filterAgreementProductCosts = new ArrayList<>();
-
-        boolean isNoCar = false;
-        //查找是否有强制非车因子
-        for(int i=0;i<agreementProductCosts.size();i++) {
-            PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink =
-                    agreementProductCosts.get(i).getCostsAttrLinks().stream().filter(x -> x.getAttrCode().equals("IsNonMotorInsurance")).findFirst().orElse(null);
-
-            if(!Objects.isNull(ptlAgreementProductCostsAttrLink)){
-                if(ptlAgreementProductCostsAttrLink.getMin().equals("1")){
-                    //只走强制非车的费用因子
-                    AgreementProductCosts productCosts = agreementProductCosts.get(i);
-                    filterAgreementProductCosts.add(productCosts);
-                    isNoCar = true;
-                }
-
-            }
-        }
-        if(filterAgreementProductCosts.isEmpty()){
-            filterAgreementProductCosts = agreementProductCosts;
-        }
+//        List<AgreementProductCosts> filterAgreementProductCosts = new ArrayList<>();
+
+//        boolean isNoCar = false;
+//        //查找是否有强制非车因子
+//        for(int i=0;i<agreementProductCosts.size();i++) {
+//            PtlAgreementProductCostsAttrLink ptlAgreementProductCostsAttrLink =
+//                    agreementProductCosts.get(i).getCostsAttrLinks().stream().filter(x -> x.getAttrCode().equals("IsNonMotorInsurance")).findFirst().orElse(null);
+//
+//            if(!Objects.isNull(ptlAgreementProductCostsAttrLink)){
+//                if(ptlAgreementProductCostsAttrLink.getMin().equals("1")){
+//                    //只走强制非车的费用因子
+//                    AgreementProductCosts productCosts = agreementProductCosts.get(i);
+//                    filterAgreementProductCosts.add(productCosts);
+//                    isNoCar = true;
+//                }
+//
+//            }
+//        }
+//        if(filterAgreementProductCosts.isEmpty()){
+//            filterAgreementProductCosts = agreementProductCosts;
+//        }
         //是否强制走非车
-        if(isNoCar) {
-            for(int i=0;i<filterAgreementProductCosts.size();i++) {
-                if (judgementsIsNoCar(filterAgreementProductCosts.get(i).getCostsAttrLinks(), undwrtRulesAttrList, ruleAttrMappingVoList)) {
-                    return filterAgreementProductCosts.get(i).getId();
-                }
-            }
-        }else{
-            for (int i = 0; i < filterAgreementProductCosts.size(); i++) {
-                //判断是否匹配
-                if (judgements(filterAgreementProductCosts.get(i).getCostsAttrLinks(), undwrtRulesAttrList, ruleAttrMappingVoList)) {
-                    //返回 费用id   如果需要匹配非车的情况  将返回值返回list 后赛选
-                    return filterAgreementProductCosts.get(i).getId();
-                }
+//        if(isNoCar) {
+//            for(int i=0;i<filterAgreementProductCosts.size();i++) {
+//                if (judgementsIsNoCar(filterAgreementProductCosts.get(i).getCostsAttrLinks(), undwrtRulesAttrList, ruleAttrMappingVoList)) {
+//                    return filterAgreementProductCosts.get(i).getId();
+//                }
+//            }
+//        }else{
+//            for (int i = 0; i < filterAgreementProductCosts.size(); i++) {
+//                //判断是否匹配
+//                if (judgements(filterAgreementProductCosts.get(i).getCostsAttrLinks(), undwrtRulesAttrList, ruleAttrMappingVoList)) {
+//                    //返回 费用id   如果需要匹配非车的情况  将返回值返回list 后赛选
+//                    return filterAgreementProductCosts.get(i).getId();
+//                }
+//            }
+//        }
+        for (int i = 0; i < agreementProductCosts.size(); i++) {
+            //判断是否匹配
+            if (judgements(agreementProductCosts.get(i).getCostsAttrLinks(), undwrtRulesAttrList, ruleAttrMappingVoList)) {
+                //返回 费用id   如果需要匹配非车的情况  将返回值返回list 后赛选
+                return agreementProductCosts.get(i).getId();
             }
         }
-//        return null;
-        throw new SystemException("费用因子匹配失败");
+        return null;
+//        throw new SystemException("费用因子匹配失败");
     }
 
 
@@ -509,30 +516,33 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 
             //查找规则中的 传值属性
             RuleAttrMappingVo ruleAttrMappingVo = ruleAttrMappingVoList.stream().filter(x -> x.getAttrCode().equals(ptlAgreementProductCostsAttrLinks.get(finalI).getAttrCode())).findFirst().orElse(null);
+
+            //先跳过强制非车的检测
+            if(ptlAgreementProductCostsAttrLinks.get(i).getAttrCode().equals("IsNonMotorInsurance"))
+                continue;
+
             //如果查找不到 传值属性 直接费用对比失败
-            if(ruleAttrMappingVo == null)
+            if(ruleAttrMappingVo == null){
+                System.out.printf("规则匹配失败:" + ptlAgreementProductCostsAttrLinks.get(i).getAttrCode());
+                System.out.printf("传入的值找不到该属性:" + ptlAgreementProductCostsAttrLinks.get(finalI).getAttrCode());
+                System.out.printf("\n\n");
                 return false;
+            }
+
+
+
             //查找 费用因子规则
             PtlAgreementUndwrtRulesAttr ptlAgreementUndwrtRulesAttr = rulesAttrs.stream().filter(x -> x.getAttrCode().equals(ptlAgreementProductCostsAttrLinks.get(finalI).getAttrCode())).findFirst().get();
-            //如果是多选 对value进行转换
-            if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("checkbox")) {
-                PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x ->
-                        x.getCode().equals(ruleAttrMappingVo.getValue())).findFirst().orElse(null);
-                ruleAttrMappingVo.setValue(ptlAgreementUndwrtRulesDictLabal.getName());
-            }
-            //如果是单选 并且是 性别的话 转换为code
-            if(ptlAgreementUndwrtRulesAttr.getAttrType().equals("radio"))
-            {
-                if("CarOwnersSex".equals(ptlAgreementUndwrtRulesAttr.getAttrCode()) || "ApplicantSex".equals(ptlAgreementUndwrtRulesAttr.getAttrCode()) ||
-                        "InsuredSex".equals(ptlAgreementUndwrtRulesAttr.getAttrCode())){
-                    PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x ->
-                            x.getName().equals(ruleAttrMappingVo.getValue())).findFirst().orElse(null);
-                    ruleAttrMappingVo.setValue(ptlAgreementUndwrtRulesDictLabal.getCode());
-                }
-            }
-            useFlag = attrEqual(ptlAgreementProductCostsAttrLinks.get(i), ptlAgreementUndwrtRulesAttr, ruleAttrMappingVo.getAttrCode());
-            if(!useFlag)
+
+            useFlag = attrEqual(ptlAgreementProductCostsAttrLinks.get(i), ptlAgreementUndwrtRulesAttr, ruleAttrMappingVo.getValue());
+            if(!useFlag){
+                System.out.printf("规则匹配失败:" + ptlAgreementProductCostsAttrLinks.get(i).getAttrCode());
+                System.out.printf("检验的值:" + ptlAgreementProductCostsAttrLinks.get(i).getMin());
+                System.out.printf("传入的值:" + ruleAttrMappingVo.getValue());
+                System.out.printf("\n\n");
                 return false;
+            }
+
         }
         return useFlag;
     }

+ 8 - 0
src/main/java/com/ydtech/modules/order/entity/api/dajia/constants/TypeVehicleMapping.java

@@ -27,4 +27,12 @@ public enum TypeVehicleMapping {
     // 商业
     private final String cUsageCdeSy;
 
+    public static String getByCode(String code){
+        for (TypeVehicleMapping typeVehicleMapping : values()) {
+            if (typeVehicleMapping.getCode().equals(code)) {
+                return typeVehicleMapping.getDesc();
+            }
+        }
+        return null;
+    }
 }