|
@@ -363,6 +363,83 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ }else if("5".equals(checkFactorInfo.getMatchType())) {//5.特殊规则,医保外用校验,存在互斥关系需要单独判断
|
|
|
|
|
+ if(matchKeys[key]!=null){
|
|
|
|
|
+ //先获取跟单医保外用保额 三者-司机-乘客
|
|
|
|
|
+ String[] kindAmountStr= matchKeys[key].split("-");
|
|
|
|
|
+ String thirdMedicalAmount="NULL".equals(kindAmountStr[0])?"0":kindAmountStr[0];
|
|
|
|
|
+ String driverMedicalAmount="NULL".equals(kindAmountStr[1])?"0":kindAmountStr[1];
|
|
|
|
|
+ String passengerMedicalAmount="NULL".equals(kindAmountStr[2])?"0":kindAmountStr[2];
|
|
|
|
|
+
|
|
|
|
|
+ if(checkFactorInfo.getAnyMedicalAmountVal()!=null){//不为空时,为任意险别符合即可 三者 司机 乘客 三者为 或的关系
|
|
|
|
|
+ boolean isThirdPass=false;
|
|
|
|
|
+ boolean isDriverPass=false;
|
|
|
|
|
+ boolean isPassengerPass=false;
|
|
|
|
|
+ if(NumberUtils.isCreatable(thirdMedicalAmount)){//如果医保外用三者保额是数字,则可以进行校验
|
|
|
|
|
+ if(Double.parseDouble(thirdMedicalAmount)>=checkFactorInfo.getAnyMedicalAmountVal()){
|
|
|
|
|
+ isThirdPass=true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if(NumberUtils.isCreatable(driverMedicalAmount)){//如果医保外用保额是数字,则可以进行校验
|
|
|
|
|
+ if(Double.parseDouble(driverMedicalAmount)>=checkFactorInfo.getAnyMedicalAmountVal()){
|
|
|
|
|
+ isDriverPass=true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if(NumberUtils.isCreatable(passengerMedicalAmount)){//如果医保外用乘客保额是数字,则可以进行校验
|
|
|
|
|
+ if(Double.parseDouble(passengerMedicalAmount)>=checkFactorInfo.getAnyMedicalAmountVal()){
|
|
|
|
|
+ isPassengerPass=true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if(!isThirdPass&&!isDriverPass&&!isPassengerPass){//三项都不通过的时候,才不符合
|
|
|
|
|
+ result=false;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }else{
|
|
|
|
|
+ result=true;
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }else {//看指定险别的判断 三者 司机 乘客 三者为 且的关系
|
|
|
|
|
+ boolean isThirdPass=false;
|
|
|
|
|
+ boolean isDriverPass=false;
|
|
|
|
|
+ boolean isPassengerPass=false;
|
|
|
|
|
+ if(NumberUtils.isCreatable(thirdMedicalAmount)){//如果医保外用三者保额是数字,则可以进行校验
|
|
|
|
|
+ if(checkFactorInfo.getThirdMedicalAmountVal()!=null){
|
|
|
|
|
+ if(Double.parseDouble(thirdMedicalAmount)>=checkFactorInfo.getThirdMedicalAmountVal()){
|
|
|
|
|
+ isThirdPass=true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }else{
|
|
|
|
|
+ isThirdPass=true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if(NumberUtils.isCreatable(driverMedicalAmount)){//如果医保外用保额是数字,则可以进行校验
|
|
|
|
|
+ if(checkFactorInfo.getDriverMedicalAmountVal()!=null){
|
|
|
|
|
+ if(Double.parseDouble(driverMedicalAmount)>=checkFactorInfo.getDriverMedicalAmountVal()){
|
|
|
|
|
+ isDriverPass=true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }else{
|
|
|
|
|
+ isDriverPass=true;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ if(NumberUtils.isCreatable(passengerMedicalAmount)){//如果医保外用乘客保额是数字,则可以进行校验
|
|
|
|
|
+ if(checkFactorInfo.getPassengerMedicalAmountVal()!=null){
|
|
|
|
|
+ if(Double.parseDouble(passengerMedicalAmount)>=checkFactorInfo.getPassengerMedicalAmountVal()){
|
|
|
|
|
+ isPassengerPass=true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }else{
|
|
|
|
|
+ isPassengerPass=true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(isThirdPass&&isDriverPass&&isPassengerPass){//三项都通过的时候,才符合
|
|
|
|
|
+ result=true;
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }else{
|
|
|
|
|
+ result=false;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -395,7 +472,14 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
result.append(feeSchemeReqDto.getInsuranceScore()).append(",");
|
|
result.append(feeSchemeReqDto.getInsuranceScore()).append(",");
|
|
|
result.append(feeSchemeReqDto.getExpectedLossRate()).append(",");
|
|
result.append(feeSchemeReqDto.getExpectedLossRate()).append(",");
|
|
|
result.append(feeSchemeReqDto.getLicenseNo()).append(",");
|
|
result.append(feeSchemeReqDto.getLicenseNo()).append(",");
|
|
|
- result.append(StringUtils.isNotEmpty(feeSchemeReqDto.getDriverAmount())?feeSchemeReqDto.getDriverAmount():"NULL").append("-").append(StringUtils.isNotEmpty(feeSchemeReqDto.getPassengerAmount())?feeSchemeReqDto.getPassengerAmount():"NULL");//司乘险保额因子,特殊处理
|
|
|
|
|
|
|
+ //司乘险保额因子,特殊处理(司机保额-乘客保额)
|
|
|
|
|
+ result.append(StringUtils.isNotEmpty(feeSchemeReqDto.getDriverAmount())?feeSchemeReqDto.getDriverAmount():"NULL").append("-").append(StringUtils.isNotEmpty(feeSchemeReqDto.getPassengerAmount())?feeSchemeReqDto.getPassengerAmount():"NULL").append(",");
|
|
|
|
|
+ result.append(feeSchemeReqDto.getInsureAge()).append(",");
|
|
|
|
|
+ result.append(feeSchemeReqDto.getCarOwnerAge()).append(",");
|
|
|
|
|
+ //医保外用险保额因子,特殊处理(三者保额-司机保额-乘客保额)
|
|
|
|
|
+ result.append(StringUtils.isNotEmpty(feeSchemeReqDto.getThirdMedicalAmount())?feeSchemeReqDto.getThirdMedicalAmount():"NULL").append("-")
|
|
|
|
|
+ .append(StringUtils.isNotEmpty(feeSchemeReqDto.getDriverMedicalAmount())?feeSchemeReqDto.getDriverMedicalAmount():"NULL").append("-")
|
|
|
|
|
+ .append(StringUtils.isNotEmpty(feeSchemeReqDto.getPassengerMedicalAmount())?feeSchemeReqDto.getPassengerMedicalAmount():"NULL");
|
|
|
return result.toString();
|
|
return result.toString();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -700,6 +784,79 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
}
|
|
}
|
|
|
resultMqp.put(18,factor18);
|
|
resultMqp.put(18,factor18);
|
|
|
//--------------------因子处理分割线----------------------------------
|
|
//--------------------因子处理分割线----------------------------------
|
|
|
|
|
+ FeeFactorInfoDto factor19=new FeeFactorInfoDto();
|
|
|
|
|
+ factor19.setFactorName("被保人年龄");
|
|
|
|
|
+ factor19.setMatchType("3");
|
|
|
|
|
+ factor19.setMatchSequence(19);
|
|
|
|
|
+ if(checkFactorConfigWithArea(factorCost.getMinInsureAge(),factorCost.getMaxInsureAge(),factor19,factorCost)){
|
|
|
|
|
+ factor19.setNeedMatch(true);
|
|
|
|
|
+ factor19.setMinRangeVal((double)factorCost.getMinInsureAge());
|
|
|
|
|
+ factor19.setMaxRangeVal((double)factorCost.getMaxInsureAge());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ //如果方案中未录入,则不校验该项因子
|
|
|
|
|
+ factor19.setNeedMatch(false);
|
|
|
|
|
+ }
|
|
|
|
|
+ resultMqp.put(19,factor19);
|
|
|
|
|
+ //--------------------因子处理分割线----------------------------------
|
|
|
|
|
+ FeeFactorInfoDto factor20=new FeeFactorInfoDto();
|
|
|
|
|
+ factor20.setFactorName("车主年龄");
|
|
|
|
|
+ factor20.setMatchType("3");
|
|
|
|
|
+ factor20.setMatchSequence(20);
|
|
|
|
|
+ if(checkFactorConfigWithArea(factorCost.getMinCarOwnerAge(),factorCost.getMaxCarOwnerAge(),factor20,factorCost)){
|
|
|
|
|
+ factor20.setNeedMatch(true);
|
|
|
|
|
+ factor20.setMinRangeVal((double)factorCost.getMinCarOwnerAge());
|
|
|
|
|
+ factor20.setMaxRangeVal((double)factorCost.getMaxCarOwnerAge());
|
|
|
|
|
+ }else{
|
|
|
|
|
+ //如果方案中未录入,则不校验该项因子
|
|
|
|
|
+ factor20.setNeedMatch(false);
|
|
|
|
|
+ }
|
|
|
|
|
+ resultMqp.put(20,factor20);
|
|
|
|
|
+ //--------------------因子处理分割线----------------------------------
|
|
|
|
|
+ FeeFactorInfoDto factor21=new FeeFactorInfoDto();
|
|
|
|
|
+
|
|
|
|
|
+ boolean thirdMCheckFlag=true;//三者医保外用保额是否需要校验
|
|
|
|
|
+ boolean driverMCheckFlag=true;//司机医保外用保额是否需要校验
|
|
|
|
|
+ boolean passengerMCheckFlag=true;//乘客医保外用保额是否需要校验
|
|
|
|
|
+ boolean anyMCheckFlag=true;//任意医保外用保额是否需要校验
|
|
|
|
|
+ factor21.setMatchType("5");
|
|
|
|
|
+ factor21.setMatchSequence(21);
|
|
|
|
|
+ //三者
|
|
|
|
|
+ if(factorCost.getThirdMedicalAmount()!=null&&factorCost.getThirdMedicalAmount()!=0){
|
|
|
|
|
+ factor21.setThirdMedicalAmountVal(factorCost.getThirdMedicalAmount()*10000);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ factor21.setThirdMedicalAmountVal(null);
|
|
|
|
|
+ thirdMCheckFlag=false;
|
|
|
|
|
+ }
|
|
|
|
|
+ //司机
|
|
|
|
|
+ if(factorCost.getDriverMedicalAmount()!=null&&factorCost.getDriverMedicalAmount()!=0){
|
|
|
|
|
+ factor21.setDriverMedicalAmountVal(factorCost.getDriverMedicalAmount()*10000);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ factor21.setDriverMedicalAmountVal(null);
|
|
|
|
|
+ driverMCheckFlag=false;
|
|
|
|
|
+ }
|
|
|
|
|
+ //乘客
|
|
|
|
|
+ if(factorCost.getPassengerMedicalAmount()!=null&&factorCost.getPassengerMedicalAmount()!=0){
|
|
|
|
|
+ factor21.setPassengerMedicalAmountVal(factorCost.getPassengerMedicalAmount()*10000);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ factor21.setPassengerMedicalAmountVal(null);
|
|
|
|
|
+ passengerMCheckFlag=false;
|
|
|
|
|
+ }
|
|
|
|
|
+ //任意
|
|
|
|
|
+ if(factorCost.getAnyMedicalAmount()!=null&&factorCost.getAnyMedicalAmount()!=0){
|
|
|
|
|
+ factor21.setAnyMedicalAmountVal(factorCost.getAnyMedicalAmount()*10000);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ factor21.setAnyMedicalAmountVal(null);
|
|
|
|
|
+ anyMCheckFlag=false;
|
|
|
|
|
+ }
|
|
|
|
|
+ //最终给因子赋值
|
|
|
|
|
+ factor21.setFactorName("医保外用保额");
|
|
|
|
|
+ if(!thirdMCheckFlag&&!driverMCheckFlag&&!passengerMCheckFlag&&!anyMCheckFlag){//如果四项都没有配置时,不需要校验
|
|
|
|
|
+ factor21.setNeedMatch(false);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ factor21.setNeedMatch(true);
|
|
|
|
|
+ }
|
|
|
|
|
+ resultMqp.put(21,factor21);
|
|
|
|
|
+ //--------------------因子处理分割线----------------------------------
|
|
|
return resultMqp;
|
|
return resultMqp;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -769,6 +926,9 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
String thirdPartyInsurance = "";
|
|
String thirdPartyInsurance = "";
|
|
|
String driverAmount="";
|
|
String driverAmount="";
|
|
|
String passengerAmount="";
|
|
String passengerAmount="";
|
|
|
|
|
+ String thirdMedicalAmount="";
|
|
|
|
|
+ String driverMedicalAmount="";
|
|
|
|
|
+ String passengerMedicalAmount="";
|
|
|
if(kindList!=null && kindList.size()>0){
|
|
if(kindList!=null && kindList.size()>0){
|
|
|
for(KindInfoVo kindInfoVo:kindList){
|
|
for(KindInfoVo kindInfoVo:kindList){
|
|
|
//三者保额
|
|
//三者保额
|
|
@@ -784,6 +944,19 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
int quantity = Integer.parseInt(carInfoVo.getSeatCount())-1;
|
|
int quantity = Integer.parseInt(carInfoVo.getSeatCount())-1;
|
|
|
passengerAmount = String.valueOf(kindInfoVo.getUnitAmount()*quantity);
|
|
passengerAmount = String.valueOf(kindInfoVo.getUnitAmount()*quantity);
|
|
|
}
|
|
}
|
|
|
|
|
+ //三者医保外用
|
|
|
|
|
+ if("SY_FJ_YBW1".equals(kindInfoVo.getKindCode())){
|
|
|
|
|
+ thirdMedicalAmount = String.valueOf(kindInfoVo.getAmount());
|
|
|
|
|
+ }
|
|
|
|
|
+ //司机医保外用
|
|
|
|
|
+ if("SY_FJ_YBW3".equals(kindInfoVo.getKindCode())){
|
|
|
|
|
+ driverMedicalAmount = String.valueOf(kindInfoVo.getAmount());
|
|
|
|
|
+ }
|
|
|
|
|
+ //乘客医保外用
|
|
|
|
|
+ if("SY_FJ_YBW2".equals(kindInfoVo.getKindCode())){
|
|
|
|
|
+ int quantity = Integer.parseInt(carInfoVo.getSeatCount())-1;
|
|
|
|
|
+ passengerMedicalAmount = String.valueOf(kindInfoVo.getUnitAmount()*quantity);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
FeeSchemeReqDto feeSchemeReqDto = new FeeSchemeReqDto();
|
|
FeeSchemeReqDto feeSchemeReqDto = new FeeSchemeReqDto();
|
|
@@ -831,10 +1004,10 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
feeSchemeReqDto.setSyPremium(String.valueOf(quoteRespVo.getSyPremium()));//商业保费
|
|
feeSchemeReqDto.setSyPremium(String.valueOf(quoteRespVo.getSyPremium()));//商业保费
|
|
|
feeSchemeReqDto.setSumPayTax(String.valueOf(quoteRespVo.getTaxAmount()));//车船税金额
|
|
feeSchemeReqDto.setSumPayTax(String.valueOf(quoteRespVo.getTaxAmount()));//车船税金额
|
|
|
feeSchemeReqDto.setThirdPartyInsurance(thirdPartyInsurance);//三者险保额 准
|
|
feeSchemeReqDto.setThirdPartyInsurance(thirdPartyInsurance);//三者险保额 准
|
|
|
- feeSchemeReqDto.setNoCarPremium("");//随车产品保费
|
|
|
|
|
|
|
+ feeSchemeReqDto.setNoCarPremium(String.valueOf(quoteRespVo.getJyPremium()));//随车产品保费
|
|
|
feeSchemeReqDto.setSyDiscount("");//商业险折扣
|
|
feeSchemeReqDto.setSyDiscount("");//商业险折扣
|
|
|
feeSchemeReqDto.setJqDiscount("");//交强险折扣
|
|
feeSchemeReqDto.setJqDiscount("");//交强险折扣
|
|
|
- // feeSchemeReqDto.setInsuranceScore(quotedPriceResponse.getPlatMain().getZmScore());//保司评分 这里直接取中煤分
|
|
|
|
|
|
|
+ feeSchemeReqDto.setInsuranceScore(quoteRespVo.getILogPreUdwMess());//保司评分
|
|
|
feeSchemeReqDto.setExpectedLossRate("");//预期赔付率
|
|
feeSchemeReqDto.setExpectedLossRate("");//预期赔付率
|
|
|
if(carInfoVo.getLicenseNo()!=null&&!"".equals(carInfoVo.getLicenseNo())&&!"暂未上牌".equals(carInfoVo.getLicenseNo())){
|
|
if(carInfoVo.getLicenseNo()!=null&&!"".equals(carInfoVo.getLicenseNo())&&!"暂未上牌".equals(carInfoVo.getLicenseNo())){
|
|
|
feeSchemeReqDto.setLicenseNo(carInfoVo.getLicenseNo().substring(0,2));//车牌号
|
|
feeSchemeReqDto.setLicenseNo(carInfoVo.getLicenseNo().substring(0,2));//车牌号
|
|
@@ -844,6 +1017,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
|
|
|
|
|
feeSchemeReqDto.setDriverAmount(driverAmount);//人员司机险保额 准
|
|
feeSchemeReqDto.setDriverAmount(driverAmount);//人员司机险保额 准
|
|
|
feeSchemeReqDto.setPassengerAmount(passengerAmount);//人员乘客险保额 准
|
|
feeSchemeReqDto.setPassengerAmount(passengerAmount);//人员乘客险保额 准
|
|
|
|
|
+ feeSchemeReqDto.setThirdMedicalAmount(thirdMedicalAmount);//三者医保外用 准
|
|
|
|
|
+ feeSchemeReqDto.setDriverMedicalAmount(driverMedicalAmount);//司机医保外用 准
|
|
|
|
|
+ feeSchemeReqDto.setPassengerMedicalAmount(passengerMedicalAmount);//乘客医保外用 准
|
|
|
|
|
+ feeSchemeReqDto.setInsureAge(quoteInfoVo.getInsuredPersonInfo().getAge());//被保人年龄
|
|
|
|
|
+ feeSchemeReqDto.setCarOwnerAge(quoteInfoVo.getOwnerInfo().getAge());//车主年龄
|
|
|
return feeSchemeReqDto;
|
|
return feeSchemeReqDto;
|
|
|
}
|
|
}
|
|
|
|
|
|