package com.ydtech.constants.enums; import com.ydtech.constants.enums.dict.agreement.ProductsType; import com.ydtech.modules.ins.model.vo.KindInfoVo; import com.ydtech.modules.ins.model.vo.RiskInfoVo; import lombok.AllArgsConstructor; import lombok.Getter; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; /** * @description: 晋掌柜 险种代码 * @author: wenks * @date: 2023/8/11 10:24 **/ @Getter @AllArgsConstructor public enum InsuranceRisk { TRAFFIC("0507", "机动车交通事故责任强制保险", "交强"), BUSINESS("0510", "机动车商业保险", "商业"), ACCIDENT("0513", "意外险", "非车"); public static final String TRAFFIC_CODE = "0507"; public static final String BUSINESS_CODE = "0510"; public static final String ACCIDENT_CODE = "0513"; private static final List INSURANCE_RISK = new ArrayList<>(); static { INSURANCE_RISK.add(TRAFFIC); INSURANCE_RISK.add(BUSINESS); } public static List getInsuranceRisk() { return INSURANCE_RISK; } private final String code; private final String desc; private final String shortName; /** * 判断险种信息 * * @param kinds 险种信息 * @param risks 商业险险种信息 * @return */ public static ProductsType determineInsuranceInformation(List kinds, List risks) { boolean haveCarDamageKind = false;//是否含车损 boolean haveBusiKind = false;//是否含车损外的商业险种 for (KindInfoVo kindInfoVo : kinds) { String code = kindInfoVo.getKindCode(); // 车损 if (InsurKind.A.getCode().equalsIgnoreCase(code)) { haveCarDamageKind = true; } if (InsurKind.removalOfVehicleDamage().contains(code)) { haveBusiKind = true; } } if (risks.size() == 1 && InsuranceRisk.TRAFFIC.getCode().equals(risks.get(0).getRiskCode())) { return ProductsType.PT_0330;//单交 } else if (risks.size() == 1 && !haveCarDamageKind && haveBusiKind) { return ProductsType.PT_034002;//单三 } else if (risks.size() == 1) { return ProductsType.PT_034001;//单商 } else if (risks.size() == 2 && !haveCarDamageKind && haveBusiKind) { return ProductsType.PT_0330034002;//交三 } else { return ProductsType.PT_0330034001;//交商 } } /** * 判断是否投保车损 * * @param kinds 险种信息 * @return */ public static Boolean getFlagByA(List kinds) { boolean haveCarDamageKind = false;//是否含车损 for (KindInfoVo kindInfoVo : kinds) { String code = kindInfoVo.getKindCode(); // 车损 if (InsurKind.A.getCode().equalsIgnoreCase(code)) { haveCarDamageKind = true; } } return haveCarDamageKind; } /** * 判断是否投保三者险 * @param kinds 险种信息 * @return */ public static String getStringByB(List kinds) { String val=null; for (KindInfoVo kindInfoVo : kinds) { String code = kindInfoVo.getKindCode(); // 车损 if (InsurKind.B.getCode().equalsIgnoreCase(code) && StringUtils.isNotEmpty(kindInfoVo.getAmount()+"")) { val= kindInfoVo.getAmount()+""; } } return val; } /** * @version * @author: hxl * @Date: 2024/5/28 10:14 * @Description: 判断是否投保交强 */ public static Boolean getFlagByTRAFFIC(List risks) { boolean trafficFlag = false;//是否含交强 for (RiskInfoVo risk : risks) { // 交强 if (InsuranceRisk.TRAFFIC.getCode().equals(risk.getRiskCode())) { trafficFlag = true; } } return trafficFlag; } }