|
|
@@ -30,10 +30,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 费用接口中相关功能的实现类
|
|
|
@@ -60,7 +58,6 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
* @param feeSchemeReqDto
|
|
|
* @return
|
|
|
*/
|
|
|
- @Override
|
|
|
public FeeSchemeResDto matchTheAppropriateFees(FeeSchemeReqDto feeSchemeReqDto) {
|
|
|
FeeSchemeResDto feeSchemeResDto=new FeeSchemeResDto();
|
|
|
|
|
|
@@ -71,7 +68,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
throw new SystemException("未查询到费用配置,请先配置该协议的费用方案!");
|
|
|
}else{
|
|
|
//符合跟单信息的方案列表
|
|
|
- List validSchemeList=new ArrayList();
|
|
|
+ List<PtlAgreementProductCosts> validSchemeList=new ArrayList();
|
|
|
//循环符合的方案列表,再进行细化的因子匹配,获取最终可以匹配到的方案
|
|
|
for(int i=0;i<ptlAgreementProductCosts.size();i++){
|
|
|
PtlAgreementProductCosts factorCost=ptlAgreementProductCosts.get(i);
|
|
|
@@ -88,6 +85,12 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
}
|
|
|
|
|
|
if(validSchemeList.size()>0){
|
|
|
+ //先判断匹配到的是不是只有兜底类型,如果不是则过滤掉兜底类型的费用,优先以跟单的为准,如果只有兜底类型,则按同样逻辑进行筛选
|
|
|
+ //根据ProductId去重后的结果集
|
|
|
+ List tempList=validSchemeList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(PtlAgreementProductCosts :: getProductId))), ArrayList::new));
|
|
|
+ if(tempList.size()>1){//如果有多种类型,则过滤掉兜底类型的
|
|
|
+ validSchemeList=validSchemeList.stream().filter(x -> !"039999".equals(x.getProductId())).collect(Collectors.toList());
|
|
|
+ }
|
|
|
//匹配到唯一一条费用方案,直接用这条
|
|
|
if(validSchemeList.size()==1){
|
|
|
//进行费用比例赋值,给返回对象
|
|
|
@@ -296,11 +299,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor0.setFactorName("是否过户");
|
|
|
factor0.setMatchType("1");
|
|
|
factor0.setMatchSequence(0);
|
|
|
- if(factorCost.getTransfer()!=null){
|
|
|
+ if(factorCost.getTransfer()!=null&&factorCost.getTransfer()!=9){
|
|
|
factor0.setNeedMatch(true);
|
|
|
factor0.setSingleSelectVal(String.valueOf(factorCost.getTransfer()));
|
|
|
}else{
|
|
|
- //如果方案中未录入,则不校验该项因子
|
|
|
+ //如果方案中未录入(是空或为9时),则不校验该项因子
|
|
|
factor0.setNeedMatch(false);
|
|
|
}
|
|
|
resultMqp.put(0,factor0);
|
|
|
@@ -309,11 +312,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor1.setFactorName("新旧车");
|
|
|
factor1.setMatchType("1");
|
|
|
factor1.setMatchSequence(1);
|
|
|
- if(factorCost.getOldAndNew()!=null){
|
|
|
+ if(factorCost.getOldAndNew()!=null&&factorCost.getOldAndNew()!=9){
|
|
|
factor1.setNeedMatch(true);
|
|
|
factor1.setSingleSelectVal(String.valueOf(factorCost.getOldAndNew()));
|
|
|
}else{
|
|
|
- //如果方案中未录入,则不校验该项因子
|
|
|
+ //如果方案中未录入(是空或为9时),则不校验该项因子
|
|
|
factor1.setNeedMatch(false);
|
|
|
}
|
|
|
resultMqp.put(1,factor1);
|
|
|
@@ -322,11 +325,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor2.setFactorName("是否新能源");
|
|
|
factor2.setMatchType("1");
|
|
|
factor2.setMatchSequence(2);
|
|
|
- if(factorCost.getNewEnergy()!=null){
|
|
|
+ if(factorCost.getNewEnergy()!=null&&factorCost.getNewEnergy()!=9){
|
|
|
factor2.setNeedMatch(true);
|
|
|
factor2.setSingleSelectVal(String.valueOf(factorCost.getNewEnergy()));
|
|
|
}else{
|
|
|
- //如果方案中未录入,则不校验该项因子
|
|
|
+ //如果方案中未录入(是空或为9时),则不校验该项因子
|
|
|
factor2.setNeedMatch(false);
|
|
|
}
|
|
|
resultMqp.put(2,factor2);
|
|
|
@@ -335,11 +338,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor3.setFactorName("是否续保");
|
|
|
factor3.setMatchType("1");
|
|
|
factor3.setMatchSequence(3);
|
|
|
- if(factorCost.getRenewal()!=null){
|
|
|
+ if(factorCost.getRenewal()!=null&&factorCost.getRenewal()!=9){
|
|
|
factor3.setNeedMatch(true);
|
|
|
factor3.setSingleSelectVal(String.valueOf(factorCost.getRenewal()));
|
|
|
}else{
|
|
|
- //如果方案中未录入,则不校验该项因子
|
|
|
+ //如果方案中未录入(是空或为9时),则不校验该项因子
|
|
|
factor3.setNeedMatch(false);
|
|
|
}
|
|
|
resultMqp.put(3,factor3);
|