|
|
@@ -15,7 +15,10 @@ import com.ydtech.modules.order.entity.InsFeeOrder;
|
|
|
import com.ydtech.modules.order.entity.vo.*;
|
|
|
import com.ydtech.modules.order.service.InsCopyFeeOrderService;
|
|
|
import com.ydtech.modules.order.service.InsFeeOrderService;
|
|
|
-import com.ydtech.modules.protocol.entity.po.*;
|
|
|
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
|
|
|
+import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
|
|
|
+import com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRules;
|
|
|
+import com.ydtech.modules.protocol.entity.po.PtlNewCarJudgeRules;
|
|
|
import com.ydtech.modules.protocol.service.*;
|
|
|
import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
|
|
|
import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
|
|
|
@@ -72,7 +75,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
|
|
|
//先根据业务类别、有效期、协议编码、历史标志代码字段 获取对应费用方案列表
|
|
|
List<PtlAgreementProductCosts> ptlAgreementProductCosts =
|
|
|
- ptlAgreementProductCostsService.selectVliadFeeFactor(feeSchemeReqDto.getBusType(), feeSchemeReqDto.getAgreementId());
|
|
|
+ ptlAgreementProductCostsService.selectVliadFeeFactor(feeSchemeReqDto.getBusType(), feeSchemeReqDto.getAgreementId());
|
|
|
if (ptlAgreementProductCosts.isEmpty()) {
|
|
|
//如果查询不到费用方案信息,则阻断算费流程,进行提示
|
|
|
throw new SystemException("未查询到费用配置,请先配置该协议的费用方案!");
|
|
|
@@ -98,7 +101,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
//先判断匹配到的是不是只有兜底类型,如果不是则过滤掉兜底类型的费用,优先以跟单的为准,如果只有兜底类型,则按同样逻辑进行筛选
|
|
|
//根据ProductId去重后的结果集
|
|
|
List tempList =
|
|
|
- validSchemeList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(PtlAgreementProductCosts::getProductId))), ArrayList::new));
|
|
|
+ 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());
|
|
|
}
|
|
|
@@ -142,7 +145,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
* @return
|
|
|
*/
|
|
|
private PtlAgreementProductCosts changeSchemeWithSpecialRule(List<PtlAgreementProductCosts> validSchemeList,
|
|
|
- FeeSchemeReqDto feeSchemeReqDto) {
|
|
|
+ FeeSchemeReqDto feeSchemeReqDto) {
|
|
|
PtlAgreementProductCosts finalScheme = null;
|
|
|
//险种标志,最终取哪个险种费用比例 1取交强 2取商业
|
|
|
String riskFlag = "";
|
|
|
@@ -221,7 +224,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
* @return
|
|
|
*/
|
|
|
private boolean checkFactorValidWithInsuranceInfo(String matchKeyStr, Map<Integer, FeeFactorInfoDto> factorToBeVerified,
|
|
|
- String productId) {
|
|
|
+ String productId) {
|
|
|
boolean result = false; //默认没有匹配到
|
|
|
boolean isConfigFactor = false;//是否配置了因子校验项 默认否
|
|
|
String[] matchKeys = matchKeyStr.split(",");
|
|
|
@@ -637,7 +640,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor8.setMatchType("3");
|
|
|
factor8.setMatchSequence(8);
|
|
|
if (checkFactorConfigWithArea(factorCost.getMinApprovedLoadCapacity(), factorCost.getMaxApprovedLoadCapacity(), factor8,
|
|
|
- factorCost)) {
|
|
|
+ factorCost)) {
|
|
|
factor8.setNeedMatch(true);
|
|
|
factor8.setMinRangeVal((double) factorCost.getMinApprovedLoadCapacity());
|
|
|
factor8.setMaxRangeVal((double) factorCost.getMaxApprovedLoadCapacity());
|
|
|
@@ -652,7 +655,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor9.setMatchType("3");
|
|
|
factor9.setMatchSequence(9);
|
|
|
if (checkFactorConfigWithArea(factorCost.getMinCompulsoryInsurancePremium(), factorCost.getMaxCompulsoryInsurancePremium(),
|
|
|
- factor9, factorCost)) {
|
|
|
+ factor9, factorCost)) {
|
|
|
factor9.setNeedMatch(true);
|
|
|
factor9.setMinRangeVal((double) factorCost.getMinCompulsoryInsurancePremium());
|
|
|
factor9.setMaxRangeVal((double) factorCost.getMaxCompulsoryInsurancePremium());
|
|
|
@@ -695,7 +698,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor12.setMatchType("3");
|
|
|
factor12.setMatchSequence(12);
|
|
|
if (checkFactorConfigWithArea(factorCost.getMinOnboardProductsPremium(), factorCost.getMaxOnboardProductsPremium(), factor12,
|
|
|
- factorCost)) {
|
|
|
+ factorCost)) {
|
|
|
factor12.setNeedMatch(true);
|
|
|
factor12.setMinRangeVal((double) factorCost.getMinOnboardProductsPremium());
|
|
|
factor12.setMaxRangeVal((double) factorCost.getMaxOnboardProductsPremium());
|
|
|
@@ -711,7 +714,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor13.setMatchType("3");
|
|
|
factor13.setMatchSequence(13);
|
|
|
if (checkFactorConfigWithArea(factorCost.getMinCommercialInsuranceDiscount(), factorCost.getMaxCommercialInsuranceDiscount(),
|
|
|
- factor13, factorCost)) {
|
|
|
+ factor13, factorCost)) {
|
|
|
factor13.setNeedMatch(true);
|
|
|
factor13.setMinRangeVal((double) factorCost.getMinCommercialInsuranceDiscount());
|
|
|
factor13.setMaxRangeVal((double) factorCost.getMaxCommercialInsuranceDiscount());
|
|
|
@@ -726,7 +729,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor14.setMatchType("3");
|
|
|
factor14.setMatchSequence(14);
|
|
|
if (checkFactorConfigWithArea(factorCost.getMinCompulsoryInsuranceDiscount(), factorCost.getMaxCompulsoryInsuranceDiscount(),
|
|
|
- factor14, factorCost)) {
|
|
|
+ factor14, factorCost)) {
|
|
|
factor14.setNeedMatch(true);
|
|
|
factor14.setMinRangeVal(factorCost.getMinCompulsoryInsuranceDiscount());
|
|
|
factor14.setMaxRangeVal(factorCost.getMaxCompulsoryInsuranceDiscount());
|
|
|
@@ -908,7 +911,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
* @return
|
|
|
*/
|
|
|
private boolean checkFactorConfigWithArea(Integer minVal, Integer maxVal, FeeFactorInfoDto factorInfoDto,
|
|
|
- PtlAgreementProductCosts productCosts) {
|
|
|
+ PtlAgreementProductCosts productCosts) {
|
|
|
boolean result = false; //默认不需要匹配
|
|
|
if (minVal != null && maxVal != null) {
|
|
|
if (minVal == 0 && maxVal == 0) {//初始化没有配置的时候,全部默认的0,这种不需要匹配
|
|
|
@@ -938,7 +941,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
* @return
|
|
|
*/
|
|
|
private boolean checkFactorConfigWithArea(Double minVal, Double maxVal, FeeFactorInfoDto factorInfoDto,
|
|
|
- PtlAgreementProductCosts productCosts) {
|
|
|
+ PtlAgreementProductCosts productCosts) {
|
|
|
boolean result = false; //默认不需要匹配
|
|
|
if (minVal != null && maxVal != null) {
|
|
|
if (minVal == 0 && maxVal == 0) {//初始化没有配置的时候,全部默认的0,这种不需要匹配
|
|
|
@@ -1045,18 +1048,18 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
}
|
|
|
}
|
|
|
List<PtlNewCarJudgeRules> ptlNewCarJudgeRulesList =
|
|
|
- ptlNewCarJudgeRulesService.getByCompanyId(ptlAgreementAttribution.getInsCompanyId());
|
|
|
+ ptlNewCarJudgeRulesService.getByCompanyId(ptlAgreementAttribution.getInsCompanyId());
|
|
|
if (ptlNewCarJudgeRulesList != null && !ptlNewCarJudgeRulesList.isEmpty()) {
|
|
|
PtlNewCarJudgeRules ptlNewCarJudgeRules = ptlNewCarJudgeRulesList.get(0);
|
|
|
if ("月".equals(ptlNewCarJudgeRules.getUnitTypeCode())) {
|
|
|
LocalDate registerDate =
|
|
|
- LocalDate.parse(carInfoVo.getRegisterDate(), formatter).plusMonths(Integer.parseInt(ptlNewCarJudgeRules.getUnitTypeValue()));
|
|
|
+ LocalDate.parse(carInfoVo.getRegisterDate(), formatter).plusMonths(Integer.parseInt(ptlNewCarJudgeRules.getUnitTypeValue()));
|
|
|
if (currentDate.isBefore(registerDate)) {
|
|
|
isNewCar = "1";
|
|
|
}
|
|
|
} else {
|
|
|
LocalDate registerDate =
|
|
|
- LocalDate.parse(carInfoVo.getRegisterDate(), formatter).plusDays(Integer.parseInt(ptlNewCarJudgeRules.getUnitTypeValue()));
|
|
|
+ LocalDate.parse(carInfoVo.getRegisterDate(), formatter).plusDays(Integer.parseInt(ptlNewCarJudgeRules.getUnitTypeValue()));
|
|
|
if (currentDate.isBefore(registerDate)) {
|
|
|
isNewCar = "1";
|
|
|
}
|
|
|
@@ -1374,37 +1377,56 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
// InsFeeOrder insFeeOrder = insFeeOrderService.getByInsOrderNo(insAreaCompany.getId());
|
|
|
//
|
|
|
// if (insFeeOrder != null) {
|
|
|
-// if (insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() > 0 && insFeeOrder.getSyPremium() != null && insFeeOrder.getSyPremium().doubleValue() == 0) {//当为单交业务时
|
|
|
+// if (insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() > 0 && insFeeOrder.getSyPremium() !=
|
|
|
+// null && insFeeOrder.getSyPremium().doubleValue() == 0) {//当为单交业务时
|
|
|
// jqOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
|
|
|
// jqOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getJqCostsPremiums()));
|
|
|
// jqOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getJqCostsProportion()));
|
|
|
-// jqOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getJqSuperviseCostsPremiums()) + "元 / " + convertToString(insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder.getJqSuperviseCostsPremiums())) + "元 / " + convertToString(insFeeOrder.getJqCostsPremiums()) + "元");
|
|
|
-// jqOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getJqSuperviseCostsProportion()) + " / " + convertToString(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder.getJqSuperviseCostsProportion())) + " / " + convertToString(insFeeOrder.getJqCostsProportion()));
|
|
|
+// jqOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getJqSuperviseCostsPremiums()) + "元 / " + convertToString
|
|
|
+// (insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder.getJqSuperviseCostsPremiums())) + "元 / " + convertToString
|
|
|
+// (insFeeOrder.getJqCostsPremiums()) + "元");
|
|
|
+// jqOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getJqSuperviseCostsProportion()) + " / " +
|
|
|
+// convertToString(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder.getJqSuperviseCostsProportion())) + " / " +
|
|
|
+// convertToString(insFeeOrder.getJqCostsProportion()));
|
|
|
// /*出单员手续费比例=总费用比例-各级管理费-各级分销费-溢出费*/
|
|
|
// orderCommissionVo = getQueryOrderCommission(orderCommissionVo, insFeeOrder, "JQ");
|
|
|
//
|
|
|
-// } else if (insFeeOrder.getSyPremium() != null && insFeeOrder.getSyPremium().doubleValue() > 0 && insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() == 0) {//当为单商业务时
|
|
|
+// } else if (insFeeOrder.getSyPremium() != null && insFeeOrder.getSyPremium().doubleValue() > 0 && insFeeOrder.getJqPremium()
|
|
|
+// != null && insFeeOrder.getJqPremium().doubleValue() == 0) {//当为单商业务时
|
|
|
// syOrderFeeVo = packageOrderFeeInfoOne(insFeeOrder);
|
|
|
// syOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getSyCostsPremiums()));
|
|
|
// syOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getSyCostsProportion()));
|
|
|
-// syOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getSySuperviseCostsPremiums()) + "元 / " + convertToString(insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder.getSySuperviseCostsPremiums())) + "元 / " + convertToString(insFeeOrder.getSyCostsPremiums()) + "元");
|
|
|
-// syOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getSySuperviseCostsProportion()) + " / " + convertToString(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder.getSySuperviseCostsProportion())) + " / " + convertToString(insFeeOrder.getSyCostsProportion()));
|
|
|
+// syOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getSySuperviseCostsPremiums()) + "元 / " + convertToString
|
|
|
+// (insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder.getSySuperviseCostsPremiums())) + "元 / " + convertToString
|
|
|
+// (insFeeOrder.getSyCostsPremiums()) + "元");
|
|
|
+// syOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getSySuperviseCostsProportion()) + " / " +
|
|
|
+// convertToString(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder.getSySuperviseCostsProportion())) + " / " +
|
|
|
+// convertToString(insFeeOrder.getSyCostsProportion()));
|
|
|
// /*出单员手续费比例=总费用比例-各级管理费-各级分销费-溢出费*/
|
|
|
// orderCommissionVo = getQueryOrderCommission(orderCommissionVo, insFeeOrder, "SY");
|
|
|
-// } else if (insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() > 0 && insFeeOrder.getSyPremium() != null && insFeeOrder.getSyPremium().doubleValue() > 0) {//当为交商业务时
|
|
|
+// } else if (insFeeOrder.getJqPremium() != null && insFeeOrder.getJqPremium().doubleValue() > 0 && insFeeOrder.getSyPremium()
|
|
|
+// != null && insFeeOrder.getSyPremium().doubleValue() > 0) {//当为交商业务时
|
|
|
// QueryOrderFeeVo queryOrderFeeVoTemp = packageOrderFeeInfoAll(insFeeOrder);
|
|
|
// //获取交强险费用明细
|
|
|
// jqOrderFeeVo = queryOrderFeeVoTemp.getJqCoderFeeVo();
|
|
|
// jqOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getJqCostsPremiums()));
|
|
|
// jqOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getJqCostsProportion()));
|
|
|
-// jqOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getJqSuperviseCostsPremiums()) + "元 / " + convertToString(insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder.getJqSuperviseCostsPremiums())) + "元 / " + convertToString(insFeeOrder.getJqCostsPremiums()) + "元");
|
|
|
-// jqOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getJqSuperviseCostsProportion()) + " / " + convertToString(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder.getJqSuperviseCostsProportion())) + " / " + convertToString(insFeeOrder.getJqCostsProportion()));
|
|
|
+// jqOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getJqSuperviseCostsPremiums()) + "元 / " + convertToString
|
|
|
+// (insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder.getJqSuperviseCostsPremiums())) + "元 / " + convertToString
|
|
|
+// (insFeeOrder.getJqCostsPremiums()) + "元");
|
|
|
+// jqOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getJqSuperviseCostsProportion()) + " / " +
|
|
|
+// convertToString(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder.getJqSuperviseCostsProportion())) + " / " +
|
|
|
+// convertToString(insFeeOrder.getJqCostsProportion()));
|
|
|
// //获取商业险费用明细
|
|
|
// syOrderFeeVo = queryOrderFeeVoTemp.getSyCoderFeeVo();
|
|
|
// syOrderFeeVo.setCostsPremiums(convertToString(insFeeOrder.getSyCostsPremiums()));
|
|
|
// syOrderFeeVo.setCostsProportion(convertToString(insFeeOrder.getSyCostsProportion()));
|
|
|
-// syOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getSySuperviseCostsPremiums()) + "元 / " + convertToString(insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder.getSySuperviseCostsPremiums())) + "元 / " + convertToString(insFeeOrder.getSyCostsPremiums()) + "元");
|
|
|
-// syOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getSySuperviseCostsProportion()) + " / " + convertToString(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder.getSySuperviseCostsProportion())) + " / " + convertToString(insFeeOrder.getSyCostsProportion()));
|
|
|
+// syOrderFeeVo.setCostsPremiumsAll(convertToString(insFeeOrder.getSySuperviseCostsPremiums()) + "元 / " + convertToString
|
|
|
+// (insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder.getSySuperviseCostsPremiums())) + "元 / " + convertToString
|
|
|
+// (insFeeOrder.getSyCostsPremiums()) + "元");
|
|
|
+// syOrderFeeVo.setCostsProportionAll(convertToString(insFeeOrder.getSySuperviseCostsProportion()) + " / " +
|
|
|
+// convertToString(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder.getSySuperviseCostsProportion())) + " / " +
|
|
|
+// convertToString(insFeeOrder.getSyCostsProportion()));
|
|
|
// /*出单员手续费比例=总费用比例-各级管理费-各级分销费-溢出费*/
|
|
|
// orderCommissionVo = getQueryOrderCommission(orderCommissionVo, insFeeOrder, "ALL");
|
|
|
// }
|
|
|
@@ -1417,8 +1439,10 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
// adjustFeeDescVo.setJqPremium(convertToString(insFeeOrder.getJqNoTaxPremium()));
|
|
|
// adjustFeeDescVo.setJqCommissionRate(convertToString(insFeeOrder.getJqSuperviseCostsProportion()));
|
|
|
// adjustFeeDescVo.setJqCommissionAmount(convertToString(insFeeOrder.getJqSuperviseCostsPremiums()));
|
|
|
-// adjustFeeDescVo.setJqOtherFeeRate(convertToString(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder.getJqSuperviseCostsProportion())));
|
|
|
-// adjustFeeDescVo.setJqOtherFeeAmount(convertToString(insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder.getJqSuperviseCostsPremiums())));
|
|
|
+// adjustFeeDescVo.setJqOtherFeeRate(convertToString(insFeeOrder.getJqCostsProportion().subtract(insFeeOrder
|
|
|
+// .getJqSuperviseCostsProportion())));
|
|
|
+// adjustFeeDescVo.setJqOtherFeeAmount(convertToString(insFeeOrder.getJqCostsPremiums().subtract(insFeeOrder
|
|
|
+// .getJqSuperviseCostsPremiums())));
|
|
|
// adjustFeeDescVo.setJqAllFeeRate(convertToString(insFeeOrder.getJqCostsProportion()));
|
|
|
// adjustFeeDescVo.setJqAllFeeAmount(convertToString(insFeeOrder.getJqCostsPremiums()));
|
|
|
// }
|
|
|
@@ -1426,8 +1450,10 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
// adjustFeeDescVo.setSyPremium(convertToString(insFeeOrder.getSyNoTaxPremium()));
|
|
|
// adjustFeeDescVo.setSyCommissionRate(convertToString(insFeeOrder.getSySuperviseCostsProportion()));
|
|
|
// adjustFeeDescVo.setSyCommissionAmount(convertToString(insFeeOrder.getSySuperviseCostsPremiums()));
|
|
|
-// adjustFeeDescVo.setSyOtherFeeRate(convertToString(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder.getSySuperviseCostsProportion())));
|
|
|
-// adjustFeeDescVo.setSyOtherFeeAmount(convertToString(insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder.getSySuperviseCostsPremiums())));
|
|
|
+// adjustFeeDescVo.setSyOtherFeeRate(convertToString(insFeeOrder.getSyCostsProportion().subtract(insFeeOrder
|
|
|
+// .getSySuperviseCostsProportion())));
|
|
|
+// adjustFeeDescVo.setSyOtherFeeAmount(convertToString(insFeeOrder.getSyCostsPremiums().subtract(insFeeOrder
|
|
|
+// .getSySuperviseCostsPremiums())));
|
|
|
// adjustFeeDescVo.setSyAllFeeRate(convertToString(insFeeOrder.getSyCostsProportion()));
|
|
|
// adjustFeeDescVo.setSyAllFeeAmount(convertToString(insFeeOrder.getSyCostsPremiums()));
|
|
|
// }
|
|
|
@@ -1437,7 +1463,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
// }
|
|
|
|
|
|
private QueryOrderCommissionVo getQueryOrderCommission(QueryOrderCommissionVo orderCommissionVo, InsFeeOrder insFeeOrder,
|
|
|
- String businessType) {
|
|
|
+ String businessType) {
|
|
|
/**
|
|
|
*单保交商时,insFeeOrder 存的就是单交商的各级管理费及分销费
|
|
|
*同保交商时,insFeeOrder 存的金额是交商总金额,需要扣减
|
|
|
@@ -1528,21 +1554,21 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
//再利用总费-交强费,得出商业费
|
|
|
InsFeeOrder syInsFeeOrderTemp = new InsFeeOrder();
|
|
|
syInsFeeOrderTemp.setFirstDeptPremiums(getPremiumForSubtract(insFeeOrder.getFirstDeptPremiums(),
|
|
|
- jqInsFeeOrderTemp.getFirstDeptPremiums()));
|
|
|
+ jqInsFeeOrderTemp.getFirstDeptPremiums()));
|
|
|
syInsFeeOrderTemp.setSecondDeptPremiums(getPremiumForSubtract(insFeeOrder.getSecondDeptPremiums(),
|
|
|
- jqInsFeeOrderTemp.getSecondDeptPremiums()));
|
|
|
+ jqInsFeeOrderTemp.getSecondDeptPremiums()));
|
|
|
syInsFeeOrderTemp.setThirdDeptPremiums(getPremiumForSubtract(insFeeOrder.getThirdDeptPremiums(),
|
|
|
- jqInsFeeOrderTemp.getThirdDeptPremiums()));
|
|
|
+ jqInsFeeOrderTemp.getThirdDeptPremiums()));
|
|
|
syInsFeeOrderTemp.setForthDeptPremiums(getPremiumForSubtract(insFeeOrder.getForthDeptPremiums(),
|
|
|
- jqInsFeeOrderTemp.getForthDeptPremiums()));
|
|
|
+ jqInsFeeOrderTemp.getForthDeptPremiums()));
|
|
|
syInsFeeOrderTemp.setFifthDeptPremiums(getPremiumForSubtract(insFeeOrder.getFifthDeptPremiums(),
|
|
|
- jqInsFeeOrderTemp.getFifthDeptPremiums()));
|
|
|
+ jqInsFeeOrderTemp.getFifthDeptPremiums()));
|
|
|
syInsFeeOrderTemp.setFirstRetailPremiums(getPremiumForSubtract(insFeeOrder.getFirstRetailPremiums(),
|
|
|
- jqInsFeeOrderTemp.getFirstRetailPremiums()));
|
|
|
+ jqInsFeeOrderTemp.getFirstRetailPremiums()));
|
|
|
syInsFeeOrderTemp.setSecondRetailPremiums(getPremiumForSubtract(insFeeOrder.getSecondRetailPremiums(),
|
|
|
- jqInsFeeOrderTemp.getSecondRetailPremiums()));
|
|
|
+ jqInsFeeOrderTemp.getSecondRetailPremiums()));
|
|
|
syInsFeeOrderTemp.setThirdRetailPremiums(getPremiumForSubtract(insFeeOrder.getThirdRetailPremiums(),
|
|
|
- jqInsFeeOrderTemp.getThirdRetailPremiums()));
|
|
|
+ jqInsFeeOrderTemp.getThirdRetailPremiums()));
|
|
|
BigDecimal syCostsPremiums = getCostsPremiumsOne(syInsFeeOrderTemp);
|
|
|
costsPremiumsMap.put("SY", syCostsPremiums);
|
|
|
return costsPremiumsMap;
|
|
|
@@ -1607,7 +1633,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- public List<QueryOrderFeeResultVo> convertOrderFeeVoData(InsFeeOrderNew insFeeOrderNew){
|
|
|
+ public List<QueryOrderFeeResultVo> convertOrderFeeVoData(InsFeeOrderNew insFeeOrderNew) {
|
|
|
List<QueryOrderFeeResultVo> queryOrderFeeResultVos = new ArrayList<>();
|
|
|
QueryOrderFeeResultVo sumFeeResultVo = new QueryOrderFeeResultVo();
|
|
|
sumFeeResultVo.setDescSerialNo("1");
|
|
|
@@ -1639,9 +1665,9 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
//设置商业费用
|
|
|
StringBuilder syFeePremium = new StringBuilder();
|
|
|
syFeePremium.append(insFeeOrderNew.getSySuperviseCostsPremiums()).append(" / ")
|
|
|
- .append(insFeeOrderNew.getSyOtherCostsPremiums()).append(" / ")
|
|
|
- .append(insFeeOrderNew.getSyInvestmentCostsPremiums()).append(" / ")
|
|
|
- .append(insFeeOrderNew.getSyCostsPremiums());
|
|
|
+ .append(insFeeOrderNew.getSyOtherCostsPremiums()).append(" / ")
|
|
|
+ .append(insFeeOrderNew.getSyInvestmentCostsPremiums()).append(" / ")
|
|
|
+ .append(insFeeOrderNew.getSyCostsPremiums());
|
|
|
sumFeeResultVo.setSyFeeAmountAll(syFeePremium.toString());
|
|
|
|
|
|
//设置非车费用比例
|
|
|
@@ -1724,15 +1750,18 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
QueryOrderFeeResultVo detailLevel1FeeResultVo = new QueryOrderFeeResultVo();
|
|
|
detailLevel1FeeResultVo.setDescSerialNo("7");
|
|
|
detailLevel1FeeResultVo.setFeeTypeName("一级分销费");
|
|
|
- detailLevel1FeeResultVo.setJqFeeRateAll(insFeeOrderNew.getFirstDetailProportion().toString());
|
|
|
+ detailLevel1FeeResultVo.setJqFeeRateAll(insFeeOrderNew.getFirstDetailProportion().toString());
|
|
|
detailLevel1FeeResultVo.setSyFeeRateAll(insFeeOrderNew.getFirstDetailProportion().toString());
|
|
|
detailLevel1FeeResultVo.setFcFeeRateAll(insFeeOrderNew.getFirstDetailProportion().toString());
|
|
|
- BigDecimal jqDetailFeePremium = insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getFirstDetailProportion().divide(new BigDecimal("100")));
|
|
|
- detailLevel1FeeResultVo.setJqFeeAmountAll(jqDetailFeePremium.setScale(2,BigDecimal.ROUND_DOWN).toString());
|
|
|
- BigDecimal syDetailFeePremium = insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getFirstDetailProportion().divide(new BigDecimal("100")));
|
|
|
- detailLevel1FeeResultVo.setSyFeeAmountAll(syDetailFeePremium.setScale(2,BigDecimal.ROUND_DOWN).toString());
|
|
|
- BigDecimal fcDetailFeePremium = insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getFirstDetailProportion().divide(new BigDecimal("100")));
|
|
|
- detailLevel1FeeResultVo.setFcFeeAmountAll(fcDetailFeePremium.setScale(2,BigDecimal.ROUND_DOWN).toString());
|
|
|
+ BigDecimal jqDetailFeePremium =
|
|
|
+ insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getFirstDetailProportion().divide(new BigDecimal("100")));
|
|
|
+ detailLevel1FeeResultVo.setJqFeeAmountAll(jqDetailFeePremium.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
|
|
+ BigDecimal syDetailFeePremium =
|
|
|
+ insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getFirstDetailProportion().divide(new BigDecimal("100")));
|
|
|
+ detailLevel1FeeResultVo.setSyFeeAmountAll(syDetailFeePremium.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
|
|
+ BigDecimal fcDetailFeePremium =
|
|
|
+ insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getFirstDetailProportion().divide(new BigDecimal("100")));
|
|
|
+ detailLevel1FeeResultVo.setFcFeeAmountAll(fcDetailFeePremium.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
|
|
queryOrderFeeResultVos.add(detailLevel1FeeResultVo);
|
|
|
|
|
|
//设置二级分销费用
|
|
|
@@ -1742,12 +1771,15 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
detailLevel2FeeResultVo.setJqFeeRateAll(insFeeOrderNew.getSecondDetailProportion().toString());
|
|
|
detailLevel2FeeResultVo.setSyFeeRateAll(insFeeOrderNew.getSecondDetailProportion().toString());
|
|
|
detailLevel2FeeResultVo.setFcFeeRateAll(insFeeOrderNew.getSecondDetailProportion().toString());
|
|
|
- BigDecimal jqDetailFeePremium2 = insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getSecondDetailProportion().divide(new BigDecimal("100")));
|
|
|
- detailLevel2FeeResultVo.setJqFeeAmountAll(jqDetailFeePremium2.setScale(2,BigDecimal.ROUND_DOWN).toString());
|
|
|
- BigDecimal syDetailFeePremium2 = insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSecondDetailProportion().divide(new BigDecimal("100")));
|
|
|
- detailLevel2FeeResultVo.setSyFeeAmountAll(syDetailFeePremium2.setScale(2,BigDecimal.ROUND_DOWN).toString());
|
|
|
- BigDecimal fcDetailFeePremium2 = insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getSecondDetailProportion().divide(new BigDecimal("100")));
|
|
|
- detailLevel2FeeResultVo.setFcFeeAmountAll(fcDetailFeePremium2.setScale(2,BigDecimal.ROUND_DOWN).toString());
|
|
|
+ BigDecimal jqDetailFeePremium2 =
|
|
|
+ insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getSecondDetailProportion().divide(new BigDecimal("100")));
|
|
|
+ detailLevel2FeeResultVo.setJqFeeAmountAll(jqDetailFeePremium2.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
|
|
+ BigDecimal syDetailFeePremium2 =
|
|
|
+ insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSecondDetailProportion().divide(new BigDecimal("100")));
|
|
|
+ detailLevel2FeeResultVo.setSyFeeAmountAll(syDetailFeePremium2.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
|
|
+ BigDecimal fcDetailFeePremium2 =
|
|
|
+ insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getSecondDetailProportion().divide(new BigDecimal("100")));
|
|
|
+ detailLevel2FeeResultVo.setFcFeeAmountAll(fcDetailFeePremium2.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
|
|
queryOrderFeeResultVos.add(detailLevel2FeeResultVo);
|
|
|
|
|
|
//设置三级分销费用
|
|
|
@@ -1757,15 +1789,18 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
detailLevel3FeeResultVo.setJqFeeRateAll(insFeeOrderNew.getThirdDetailProportion().toString());
|
|
|
detailLevel3FeeResultVo.setSyFeeRateAll(insFeeOrderNew.getThirdDetailProportion().toString());
|
|
|
detailLevel3FeeResultVo.setFcFeeRateAll(insFeeOrderNew.getThirdDetailProportion().toString());
|
|
|
- BigDecimal jqDetailFeePremium3 = insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getThirdDetailProportion().divide(new BigDecimal("100")));
|
|
|
+ BigDecimal jqDetailFeePremium3 =
|
|
|
+ insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getThirdDetailProportion().divide(new BigDecimal("100")));
|
|
|
detailLevel3FeeResultVo.setJqFeeAmountAll(jqDetailFeePremium3.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
|
|
- BigDecimal syDetailFeePremium3 = insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getThirdDetailProportion().divide(new BigDecimal("100")));
|
|
|
- detailLevel3FeeResultVo.setSyFeeAmountAll(syDetailFeePremium3.setScale(2,BigDecimal.ROUND_DOWN).toString());
|
|
|
- BigDecimal fcDetailFeePremium3 = insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getThirdDetailProportion().divide(new BigDecimal("100")));
|
|
|
- detailLevel3FeeResultVo.setFcFeeAmountAll(fcDetailFeePremium3.setScale(2,BigDecimal.ROUND_DOWN).toString());
|
|
|
+ BigDecimal syDetailFeePremium3 =
|
|
|
+ insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getThirdDetailProportion().divide(new BigDecimal("100")));
|
|
|
+ detailLevel3FeeResultVo.setSyFeeAmountAll(syDetailFeePremium3.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
|
|
+ BigDecimal fcDetailFeePremium3 =
|
|
|
+ insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getThirdDetailProportion().divide(new BigDecimal("100")));
|
|
|
+ detailLevel3FeeResultVo.setFcFeeAmountAll(fcDetailFeePremium3.setScale(2, BigDecimal.ROUND_DOWN).toString());
|
|
|
queryOrderFeeResultVos.add(detailLevel3FeeResultVo);
|
|
|
|
|
|
- return queryOrderFeeResultVos;
|
|
|
+ return queryOrderFeeResultVos;
|
|
|
}
|
|
|
|
|
|
//把取出的费用信息转换为页面需要展示的数据
|
|
|
@@ -2099,7 +2134,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
|
|
|
//根据协议号获取有效的规则
|
|
|
List<PtlAgreementUndwrtRules> ptlAgreementUndwrtRulesList =
|
|
|
- ptlAgreementUndwrtRulesService.selectVliadRules(feeSchemeReqDto.getAgreementId());
|
|
|
+ ptlAgreementUndwrtRulesService.selectVliadRules(feeSchemeReqDto.getAgreementId());
|
|
|
if (ptlAgreementUndwrtRulesList.isEmpty()) {
|
|
|
//没有有效的核保规则,直接抛出
|
|
|
return;
|
|
|
@@ -2257,7 +2292,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor9.setMatchType("3");
|
|
|
factor9.setMatchSequence(9);
|
|
|
if (checkFactorConfigWithAreaForRules(rulesFactor.getMinCompulsoryInsurancePremium(),
|
|
|
- rulesFactor.getMaxCompulsoryInsurancePremium())) {
|
|
|
+ rulesFactor.getMaxCompulsoryInsurancePremium())) {
|
|
|
factor9.setNeedMatch(true);
|
|
|
factor9.setMinRangeVal((double) rulesFactor.getMinCompulsoryInsurancePremium());
|
|
|
factor9.setMaxRangeVal((double) rulesFactor.getMaxCompulsoryInsurancePremium());
|
|
|
@@ -2315,7 +2350,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor13.setMatchType("3");
|
|
|
factor13.setMatchSequence(13);
|
|
|
if (checkFactorConfigWithAreaForRules(rulesFactor.getMinCommercialInsuranceDiscount(),
|
|
|
- rulesFactor.getMaxCommercialInsuranceDiscount())) {
|
|
|
+ rulesFactor.getMaxCommercialInsuranceDiscount())) {
|
|
|
factor13.setNeedMatch(true);
|
|
|
factor13.setMinRangeVal((double) rulesFactor.getMinCommercialInsuranceDiscount());
|
|
|
factor13.setMaxRangeVal((double) rulesFactor.getMaxCommercialInsuranceDiscount());
|
|
|
@@ -2330,7 +2365,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
factor14.setMatchType("3");
|
|
|
factor14.setMatchSequence(14);
|
|
|
if (checkFactorConfigWithAreaForRules(rulesFactor.getMinCompulsoryInsuranceDiscount(),
|
|
|
- rulesFactor.getMaxCompulsoryInsuranceDiscount())) {
|
|
|
+ rulesFactor.getMaxCompulsoryInsuranceDiscount())) {
|
|
|
factor14.setNeedMatch(true);
|
|
|
factor14.setMinRangeVal(rulesFactor.getMinCompulsoryInsuranceDiscount());
|
|
|
factor14.setMaxRangeVal(rulesFactor.getMaxCompulsoryInsuranceDiscount());
|
|
|
@@ -2602,20 +2637,26 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
|
|
|
//region 入口费用
|
|
|
//交强
|
|
|
- FeeOrderNewVo.EntranceFee jqEntranceFee = this.assignEntranceFee("交强险", insFeeOrderNew.getJqPremium(), insFeeOrderNew.getJqSuperviseCostsProportion(),
|
|
|
- insFeeOrderNew.getJqOtherCostsProportion(), insFeeOrderNew.getJqCostsProportion(), insFeeOrderNew.getJqSuperviseCostsPremiums(),
|
|
|
+ FeeOrderNewVo.EntranceFee jqEntranceFee = this.assignEntranceFee("交强险", insFeeOrderNew.getJqPremium(),
|
|
|
+ insFeeOrderNew.getJqSuperviseCostsProportion(),
|
|
|
+ insFeeOrderNew.getJqOtherCostsProportion(), insFeeOrderNew.getJqCostsProportion(),
|
|
|
+ insFeeOrderNew.getJqSuperviseCostsPremiums(),
|
|
|
insFeeOrderNew.getJqOtherCostsPremiums(), insFeeOrderNew.getJqCostsPremiums());
|
|
|
entranceFeeList.add(jqEntranceFee);
|
|
|
|
|
|
//商业
|
|
|
- FeeOrderNewVo.EntranceFee syEntranceFee = this.assignEntranceFee("商业险", insFeeOrderNew.getSyPremium(), insFeeOrderNew.getSySuperviseCostsProportion(),
|
|
|
- insFeeOrderNew.getSyOtherCostsProportion(), insFeeOrderNew.getSyCostsProportion(), insFeeOrderNew.getSySuperviseCostsPremiums(),
|
|
|
+ FeeOrderNewVo.EntranceFee syEntranceFee = this.assignEntranceFee("商业险", insFeeOrderNew.getSyPremium(),
|
|
|
+ insFeeOrderNew.getSySuperviseCostsProportion(),
|
|
|
+ insFeeOrderNew.getSyOtherCostsProportion(), insFeeOrderNew.getSyCostsProportion(),
|
|
|
+ insFeeOrderNew.getSySuperviseCostsPremiums(),
|
|
|
insFeeOrderNew.getSyOtherCostsPremiums(), insFeeOrderNew.getSyCostsPremiums());
|
|
|
entranceFeeList.add(syEntranceFee);
|
|
|
|
|
|
//非车
|
|
|
- FeeOrderNewVo.EntranceFee noEntranceFee = this.assignEntranceFee("非车险", insFeeOrderNew.getNoPremium(), insFeeOrderNew.getNoSuperviseCostsProportion(),
|
|
|
- insFeeOrderNew.getNoOtherCostsProportion(), insFeeOrderNew.getNoCostsProportion(), insFeeOrderNew.getNoSuperviseCostsPremiums(),
|
|
|
+ FeeOrderNewVo.EntranceFee noEntranceFee = this.assignEntranceFee("非车险", insFeeOrderNew.getNoPremium(),
|
|
|
+ insFeeOrderNew.getNoSuperviseCostsProportion(),
|
|
|
+ insFeeOrderNew.getNoOtherCostsProportion(), insFeeOrderNew.getNoCostsProportion(),
|
|
|
+ insFeeOrderNew.getNoSuperviseCostsPremiums(),
|
|
|
insFeeOrderNew.getNoOtherCostsPremiums(), insFeeOrderNew.getNoCostsPremiums());
|
|
|
entranceFeeList.add(noEntranceFee);
|
|
|
//endregion
|
|
|
@@ -2656,24 +2697,26 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
//endregion
|
|
|
|
|
|
|
|
|
-
|
|
|
//region 出口费用
|
|
|
//交强
|
|
|
FeeOrderNewVo.ExportFee jqExportFee = this.assignExportFee("交强险",
|
|
|
- insFeeOrderNew.getJqPremium(), insFeeOrderNew.getJqCostsExportProportion(), insFeeOrderNew.getJqExportOtherCostsProportion(),
|
|
|
+ insFeeOrderNew.getJqPremium(), insFeeOrderNew.getJqCostsExportProportion(),
|
|
|
+ insFeeOrderNew.getJqExportOtherCostsProportion(),
|
|
|
insFeeOrderNew.getJqExportSuperviseCostsPremiums(), insFeeOrderNew.getJqExportOtherCostsPremiums());
|
|
|
exportFeeList.add(jqExportFee);
|
|
|
|
|
|
//交强
|
|
|
FeeOrderNewVo.ExportFee syExportFee = this.assignExportFee("商业险",
|
|
|
- insFeeOrderNew.getSyPremium(), insFeeOrderNew.getSyCostsExportProportion(), insFeeOrderNew.getSyExportOtherCostsProportion(),
|
|
|
+ insFeeOrderNew.getSyPremium(), insFeeOrderNew.getSyCostsExportProportion(),
|
|
|
+ insFeeOrderNew.getSyExportOtherCostsProportion(),
|
|
|
insFeeOrderNew.getSyExportSuperviseCostsPremiums(), insFeeOrderNew.getSyExportOtherCostsPremiums());
|
|
|
exportFeeList.add(syExportFee);
|
|
|
|
|
|
|
|
|
//交强
|
|
|
FeeOrderNewVo.ExportFee noExportFee = this.assignExportFee("非车险",
|
|
|
- insFeeOrderNew.getNoPremium(), insFeeOrderNew.getNoCostsExportProportion(), insFeeOrderNew.getNoExportOtherCostsProportion(),
|
|
|
+ insFeeOrderNew.getNoPremium(), insFeeOrderNew.getNoCostsExportProportion(),
|
|
|
+insFeeOrderNew.getNoExportOtherCostsProportion(),
|
|
|
insFeeOrderNew.getNoExportSuperviseCostsPremiums(), insFeeOrderNew.getNoExportOtherCostsPremiums());
|
|
|
exportFeeList.add(noExportFee);
|
|
|
|
|
|
@@ -2688,19 +2731,23 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
|
|
|
/**
|
|
|
* 计算入口费用
|
|
|
- * @param premium 保费
|
|
|
- * @param superviseCostsProportion 手续费比例
|
|
|
- * @param otherCostsProportion 跟单比例
|
|
|
+ *
|
|
|
+ * @param premium 保费
|
|
|
+ * @param superviseCostsProportion 手续费比例
|
|
|
+ * @param otherCostsProportion 跟单比例
|
|
|
*/
|
|
|
- public FeeOrderNewVo.EntranceFee calcEntranceFee(BigDecimal premium, BigDecimal superviseCostsProportion, BigDecimal otherCostsProportion, BigDecimal taxRate){
|
|
|
+ public FeeOrderNewVo.EntranceFee calcEntranceFee(BigDecimal premium, BigDecimal superviseCostsProportion,
|
|
|
+ BigDecimal otherCostsProportion, BigDecimal taxRate) {
|
|
|
FeeOrderNewVo.EntranceFee entranceFee = new FeeOrderNewVo.EntranceFee();
|
|
|
entranceFee.setPremium(premium);
|
|
|
- premium = premium.divide(taxRate,5,RoundingMode.HALF_UP);
|
|
|
+ premium = premium.divide(taxRate, 5, RoundingMode.HALF_UP);
|
|
|
//手续费
|
|
|
- entranceFee.setSuperviseCostsPremiums(premium.multiply(superviseCostsProportion.divide(new BigDecimal(100))).setScale(5,BigDecimal.ROUND_DOWN));
|
|
|
+ entranceFee.setSuperviseCostsPremiums(premium.multiply(superviseCostsProportion.divide(new BigDecimal(100))).setScale(5,
|
|
|
+BigDecimal.ROUND_DOWN));
|
|
|
entranceFee.setSuperviseCosts(superviseCostsProportion);
|
|
|
//跟单费
|
|
|
- entranceFee.setOtherCostsPremiums(premium.multiply(otherCostsProportion.divide(new BigDecimal(100))).setScale(5,BigDecimal.ROUND_DOWN));
|
|
|
+ entranceFee.setOtherCostsPremiums(premium.multiply(otherCostsProportion.divide(new BigDecimal(100))).setScale(5,
|
|
|
+BigDecimal.ROUND_DOWN));
|
|
|
entranceFee.setOtherCostsProportion(otherCostsProportion);
|
|
|
//总费用比例
|
|
|
BigDecimal totalCostsProportion = superviseCostsProportion.add(otherCostsProportion);
|
|
|
@@ -2711,109 +2758,124 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
|
|
|
/**
|
|
|
* 计算机构管理费用
|
|
|
- * @param premium 保费
|
|
|
- * @param level1Proportion 一级比例
|
|
|
- * @param level2Proportion 二级比例
|
|
|
- * @param level3Proportion 三级比例
|
|
|
- * @param level4Proportion 四级比例
|
|
|
- * @param level5Proportion 五级比例
|
|
|
+ *
|
|
|
+ * @param premium 保费
|
|
|
+ * @param level1Proportion 一级比例
|
|
|
+ * @param level2Proportion 二级比例
|
|
|
+ * @param level3Proportion 三级比例
|
|
|
+ * @param level4Proportion 四级比例
|
|
|
+ * @param level5Proportion 五级比例
|
|
|
* @return
|
|
|
*/
|
|
|
- public FeeOrderNewVo.DeptManagerFee calcDeptManagerFee(BigDecimal premium, BigDecimal level1Proportion,BigDecimal level2Proportion,
|
|
|
- BigDecimal level3Proportion,BigDecimal level4Proportion,BigDecimal level5Proportion){
|
|
|
+ public FeeOrderNewVo.DeptManagerFee calcDeptManagerFee(BigDecimal premium, BigDecimal level1Proportion, BigDecimal level2Proportion,
|
|
|
+ BigDecimal level3Proportion, BigDecimal level4Proportion,
|
|
|
+ BigDecimal level5Proportion) {
|
|
|
FeeOrderNewVo.DeptManagerFee deptManagerFee = new FeeOrderNewVo.DeptManagerFee();
|
|
|
//一级管理费
|
|
|
- deptManagerFee.setDeptPremiumsLevelOne(premium.multiply(level1Proportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
|
|
|
+ deptManagerFee.setDeptPremiumsLevelOne(premium.multiply(level1Proportion.divide(new BigDecimal(100))).setScale(2,
|
|
|
+ BigDecimal.ROUND_DOWN));
|
|
|
deptManagerFee.setDeptProportionLevelOne(level1Proportion);
|
|
|
//二级管理费
|
|
|
- deptManagerFee.setDeptPremiumsLevelTwo(premium.multiply(level2Proportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
|
|
|
+ deptManagerFee.setDeptPremiumsLevelTwo(premium.multiply(level2Proportion.divide(new BigDecimal(100))).setScale(2,
|
|
|
+ BigDecimal.ROUND_DOWN));
|
|
|
deptManagerFee.setDeptProportionLevelTwo(level2Proportion);
|
|
|
//三级管理费
|
|
|
- deptManagerFee.setDeptPremiumsLevelThree(premium.multiply(level3Proportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
|
|
|
+ deptManagerFee.setDeptPremiumsLevelThree(premium.multiply(level3Proportion.divide(new BigDecimal(100))).setScale(2,
|
|
|
+ BigDecimal.ROUND_DOWN));
|
|
|
deptManagerFee.setDeptProportionLevelThree(level3Proportion);
|
|
|
//四级管理费
|
|
|
- deptManagerFee.setDeptPremiumsLevelFoure(premium.multiply(level4Proportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
|
|
|
+ deptManagerFee.setDeptPremiumsLevelFoure(premium.multiply(level4Proportion.divide(new BigDecimal(100))).setScale(2,
|
|
|
+ BigDecimal.ROUND_DOWN));
|
|
|
deptManagerFee.setDeptProportionLevelFoure(level4Proportion);
|
|
|
//五级管理费
|
|
|
- deptManagerFee.setDeptPremiumsLevelFive(premium.multiply(level5Proportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
|
|
|
+ deptManagerFee.setDeptPremiumsLevelFive(premium.multiply(level5Proportion.divide(new BigDecimal(100))).setScale(2,
|
|
|
+ BigDecimal.ROUND_DOWN));
|
|
|
deptManagerFee.setDeptProportionLevelFive(level5Proportion);
|
|
|
return deptManagerFee;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 计算出口费用
|
|
|
- * @param premium 保费
|
|
|
- * @param superviseCostsProportion 出口手续费
|
|
|
- * @param entranceTotalProportion 入口总比例
|
|
|
- * @param deptTotalProportion 机构管理费总比例
|
|
|
- * @param retailTotalProportion 分销总比例
|
|
|
- * @param taxRate 税率
|
|
|
+ *
|
|
|
+ * @param premium 保费
|
|
|
+ * @param superviseCostsProportion 出口手续费
|
|
|
+ * @param entranceTotalProportion 入口总比例
|
|
|
+ * @param deptTotalProportion 机构管理费总比例
|
|
|
+ * @param retailTotalProportion 分销总比例
|
|
|
+ * @param taxRate 税率
|
|
|
* @return
|
|
|
*/
|
|
|
- public FeeOrderNewVo.ExportFee calcExportFee(BigDecimal premium, BigDecimal superviseCostsProportion, BigDecimal entranceTotalProportion,
|
|
|
- BigDecimal deptTotalProportion,BigDecimal retailTotalProportion,BigDecimal taxRate){
|
|
|
+ public FeeOrderNewVo.ExportFee calcExportFee(BigDecimal premium, BigDecimal superviseCostsProportion,
|
|
|
+ BigDecimal entranceTotalProportion,
|
|
|
+ BigDecimal deptTotalProportion, BigDecimal retailTotalProportion, BigDecimal taxRate) {
|
|
|
FeeOrderNewVo.ExportFee exportFee = new FeeOrderNewVo.ExportFee();
|
|
|
exportFee.setPremium(premium);
|
|
|
//去税后的入口比例
|
|
|
- BigDecimal noTaxEntranceTotalProportion = entranceTotalProportion.divide(taxRate,2,RoundingMode.DOWN);
|
|
|
+ BigDecimal noTaxEntranceTotalProportion = entranceTotalProportion.divide(taxRate, 2, RoundingMode.DOWN);
|
|
|
//出口的总比例
|
|
|
BigDecimal exportTotalProportion = noTaxEntranceTotalProportion.subtract(deptTotalProportion).subtract(retailTotalProportion);
|
|
|
- if(exportTotalProportion.compareTo(BigDecimal.ZERO) < 0 && premium.compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ if (exportTotalProportion.compareTo(BigDecimal.ZERO) < 0 && premium.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
//出口比例为负数了
|
|
|
exportTotalProportion = new BigDecimal(0);
|
|
|
}
|
|
|
//如果手续费 大于 总比例 则出口手续费等于总比例
|
|
|
- if(superviseCostsProportion.compareTo(exportTotalProportion) >= 0 ){
|
|
|
+ if (superviseCostsProportion.compareTo(exportTotalProportion) >= 0) {
|
|
|
superviseCostsProportion = exportTotalProportion;
|
|
|
exportFee.setSuperviseCosts(superviseCostsProportion);
|
|
|
exportFee.setOtherCostsProportion(new BigDecimal(0));
|
|
|
exportFee.setTotalProportion(superviseCostsProportion);
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
exportFee.setTotalProportion(exportTotalProportion);
|
|
|
exportFee.setOtherCostsProportion(exportTotalProportion.subtract(superviseCostsProportion));
|
|
|
exportFee.setSuperviseCosts(superviseCostsProportion);
|
|
|
}
|
|
|
- exportFee.setSuperviseCostsPremiums(premium.multiply(exportFee.getSuperviseCosts().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
|
|
|
- exportFee.setOtherCostsPremiums(premium.multiply(exportFee.getOtherCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
|
|
|
- exportFee.setTotalAmount(premium.multiply(exportFee.getTotalProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
|
|
|
+ exportFee.setSuperviseCostsPremiums(premium.multiply(exportFee.getSuperviseCosts().divide(new BigDecimal(100))).setScale(2,
|
|
|
+BigDecimal.ROUND_DOWN));
|
|
|
+ exportFee.setOtherCostsPremiums(premium.multiply(exportFee.getOtherCostsProportion().divide(new BigDecimal(100))).setScale(2,
|
|
|
+ BigDecimal.ROUND_DOWN));
|
|
|
+ exportFee.setTotalAmount(premium.multiply(exportFee.getTotalProportion().divide(new BigDecimal(100))).setScale(2,
|
|
|
+ BigDecimal.ROUND_DOWN));
|
|
|
|
|
|
return exportFee;
|
|
|
}
|
|
|
|
|
|
public List<DistributionLevelVo> converDistrbutionData(InsFeeOrderNew insFeeOrderNew) {
|
|
|
ArrayList<DistributionLevelVo> resultList = new ArrayList<>();
|
|
|
- DistributionLevelVo levelOne = new DistributionLevelVo();
|
|
|
+ DistributionLevelVo levelOne = new DistributionLevelVo();
|
|
|
levelOne.setDistributionLevel("一级分销");
|
|
|
- String oneUserName= this.getUserName(insFeeOrderNew.getFirstLevelUserId());
|
|
|
+ String oneUserName = this.getUserName(insFeeOrderNew.getFirstLevelUserId());
|
|
|
levelOne.setUserName(oneUserName); //分销人
|
|
|
levelOne.setDistributionRatio(insFeeOrderNew.getFirstDetailProportion()); // 分销比例
|
|
|
- levelOne.setAmount(StringUtils.isNotEmpty(oneUserName)?insFeeOrderNew.getFirstDetailPremiums():new BigDecimal(0)); // 分销金额
|
|
|
+ BigDecimal firstDetailPremiums = Optional.ofNullable(insFeeOrderNew.getFirstDetailPremiums()).orElse(new BigDecimal(0));
|
|
|
+ levelOne.setAmount(firstDetailPremiums); // 分销金额
|
|
|
resultList.add(levelOne);
|
|
|
|
|
|
|
|
|
DistributionLevelVo levelTwo = new DistributionLevelVo();
|
|
|
levelTwo.setDistributionLevel("二级分销");
|
|
|
- String twoUserName= this.getUserName(insFeeOrderNew.getTwoLevelUserId());
|
|
|
+ String twoUserName = this.getUserName(insFeeOrderNew.getTwoLevelUserId());
|
|
|
levelTwo.setUserName(twoUserName); //分销人
|
|
|
levelTwo.setDistributionRatio(insFeeOrderNew.getSecondDetailProportion()); // 分销比例
|
|
|
- levelTwo.setAmount(StringUtils.isNotEmpty(twoUserName)?insFeeOrderNew.getSecondDetailPremiums():new BigDecimal(0)); // 分销金额
|
|
|
+ BigDecimal secondDetailPremiums = Optional.ofNullable(insFeeOrderNew.getSecondDetailPremiums()).orElse(new BigDecimal(0));
|
|
|
+ levelTwo.setAmount(secondDetailPremiums); // 分销金额
|
|
|
resultList.add(levelTwo);
|
|
|
|
|
|
|
|
|
DistributionLevelVo levelThree = new DistributionLevelVo();
|
|
|
levelThree.setDistributionLevel("三级分销");
|
|
|
- String threeUserName= this.getUserName(insFeeOrderNew.getThreeLevelUserId());
|
|
|
+ String threeUserName = this.getUserName(insFeeOrderNew.getThreeLevelUserId());
|
|
|
levelThree.setUserName(threeUserName); //分销人
|
|
|
levelThree.setDistributionRatio(insFeeOrderNew.getThirdDetailProportion()); // 分销比例
|
|
|
- levelThree.setAmount(StringUtils.isNotEmpty(threeUserName)?insFeeOrderNew.getThirdDetailPremiums():new BigDecimal(0)); // 分销金额
|
|
|
+ BigDecimal thirdDetailPremiums = Optional.ofNullable(insFeeOrderNew.getSecondDetailPremiums()).orElse(new BigDecimal(0));
|
|
|
+ levelThree.setAmount(thirdDetailPremiums); // 分销金额
|
|
|
resultList.add(levelThree);
|
|
|
return resultList;
|
|
|
}
|
|
|
|
|
|
private String getUserName(String firstLevelUserId) {
|
|
|
- if(StringUtils.isNotEmpty(firstLevelUserId)){
|
|
|
+ if (StringUtils.isNotEmpty(firstLevelUserId)) {
|
|
|
SysUser sysUser = sysUserService.getBaseMapper().selectById(firstLevelUserId);
|
|
|
- if(ObjectUtils.isNotEmpty(sysUser)){
|
|
|
+ if (ObjectUtils.isNotEmpty(sysUser)) {
|
|
|
return sysUser.getName() + "(" + sysUser.getId() + ")";
|
|
|
}
|
|
|
}
|
|
|
@@ -2822,19 +2884,22 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
|
|
|
/**
|
|
|
* 从insFeeOrderNew表中拉取入口费用
|
|
|
- * @param title 险种
|
|
|
- * @param premium 保费
|
|
|
- * @param superviseCostsProportion 手续费比例
|
|
|
- * @param otherCostsProportion 跟单比例
|
|
|
- * @param costsProportion 总比例
|
|
|
- * @param superviseCostsPremiums 手续费
|
|
|
- * @param otherCostsPremiums 跟单费
|
|
|
- * @param costsPremiums 总费用
|
|
|
+ *
|
|
|
+ * @param title 险种
|
|
|
+ * @param premium 保费
|
|
|
+ * @param superviseCostsProportion 手续费比例
|
|
|
+ * @param otherCostsProportion 跟单比例
|
|
|
+ * @param costsProportion 总比例
|
|
|
+ * @param superviseCostsPremiums 手续费
|
|
|
+ * @param otherCostsPremiums 跟单费
|
|
|
+ * @param costsPremiums 总费用
|
|
|
* @return
|
|
|
*/
|
|
|
- public FeeOrderNewVo.EntranceFee assignEntranceFee(String title,BigDecimal premium,BigDecimal superviseCostsProportion,BigDecimal otherCostsProportion,
|
|
|
- BigDecimal costsProportion,BigDecimal superviseCostsPremiums,BigDecimal otherCostsPremiums,
|
|
|
- BigDecimal costsPremiums){
|
|
|
+ public FeeOrderNewVo.EntranceFee assignEntranceFee(String title, BigDecimal premium, BigDecimal superviseCostsProportion,
|
|
|
+ BigDecimal otherCostsProportion,
|
|
|
+ BigDecimal costsProportion, BigDecimal superviseCostsPremiums,
|
|
|
+ BigDecimal otherCostsPremiums,
|
|
|
+ BigDecimal costsPremiums) {
|
|
|
FeeOrderNewVo.EntranceFee entranceFee = new FeeOrderNewVo.EntranceFee();
|
|
|
entranceFee.setInsuranceType(title);
|
|
|
//保费
|
|
|
@@ -2856,9 +2921,10 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
|
|
|
/**
|
|
|
* 从insFeeOrderNew表中拉取机构管理费用
|
|
|
+ *
|
|
|
* @param title
|
|
|
- * @param level1Proportion 1级机构管理比例
|
|
|
- * @param level1Premium 1级机构管理费用
|
|
|
+ * @param level1Proportion 1级机构管理比例
|
|
|
+ * @param level1Premium 1级机构管理费用
|
|
|
* @param level2Proportion
|
|
|
* @param level2Premium
|
|
|
* @param level3Proportion
|
|
|
@@ -2869,12 +2935,12 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
* @param level5Premium
|
|
|
* @return
|
|
|
*/
|
|
|
- public FeeOrderNewVo.DeptManagerFee assignDeptFee(String title,BigDecimal level1Proportion,BigDecimal level1Premium,
|
|
|
- BigDecimal level2Proportion,BigDecimal level2Premium,
|
|
|
- BigDecimal level3Proportion,BigDecimal level3Premium,
|
|
|
- BigDecimal level4Proportion,BigDecimal level4Premium,
|
|
|
- BigDecimal level5Proportion,BigDecimal level5Premium,
|
|
|
- BigDecimal profitMarginPremiums){
|
|
|
+ public FeeOrderNewVo.DeptManagerFee assignDeptFee(String title, BigDecimal level1Proportion, BigDecimal level1Premium,
|
|
|
+ BigDecimal level2Proportion, BigDecimal level2Premium,
|
|
|
+ BigDecimal level3Proportion, BigDecimal level3Premium,
|
|
|
+ BigDecimal level4Proportion, BigDecimal level4Premium,
|
|
|
+ BigDecimal level5Proportion, BigDecimal level5Premium,
|
|
|
+ BigDecimal profitMarginPremiums) {
|
|
|
FeeOrderNewVo.DeptManagerFee deptManagerFee = new FeeOrderNewVo.DeptManagerFee();
|
|
|
deptManagerFee.setInsuranceType(title);
|
|
|
deptManagerFee.setDeptProportionLevelOne(level1Proportion);
|
|
|
@@ -2893,6 +2959,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
|
|
|
/**
|
|
|
* 出口费用赋值
|
|
|
+ *
|
|
|
* @param title
|
|
|
* @param premium
|
|
|
* @param superviseCostsProportion
|
|
|
@@ -2901,8 +2968,9 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
* @param otherCostsPremiums
|
|
|
* @return
|
|
|
*/
|
|
|
- public FeeOrderNewVo.ExportFee assignExportFee(String title,BigDecimal premium,BigDecimal superviseCostsProportion,BigDecimal otherCostsProportion,
|
|
|
- BigDecimal superviseCostsPremiums,BigDecimal otherCostsPremiums){
|
|
|
+ public FeeOrderNewVo.ExportFee assignExportFee(String title, BigDecimal premium, BigDecimal superviseCostsProportion,
|
|
|
+ BigDecimal otherCostsProportion,
|
|
|
+ BigDecimal superviseCostsPremiums, BigDecimal otherCostsPremiums) {
|
|
|
FeeOrderNewVo.ExportFee exportFee = new FeeOrderNewVo.ExportFee();
|
|
|
exportFee.setInsuranceType(title);
|
|
|
//保费
|
|
|
@@ -2924,23 +2992,25 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
|
|
|
|
|
|
/**
|
|
|
* 推算比例是否正确
|
|
|
- * @param entranceFee 入口
|
|
|
- * @param deptManagerFee 机构管理
|
|
|
- * @param exportFee 出口
|
|
|
- * @param retailRadio 分销比例
|
|
|
- * @param premiums 保费
|
|
|
+ *
|
|
|
+ * @param entranceFee 入口
|
|
|
+ * @param deptManagerFee 机构管理
|
|
|
+ * @param exportFee 出口
|
|
|
+ * @param retailRadio 分销比例
|
|
|
+ * @param premiums 保费
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public boolean calculateProportion(FeeOrderNewVo.EntranceFee entranceFee, FeeOrderNewVo.DeptManagerFee deptManagerFee, FeeOrderNewVo.ExportFee exportFee, BigDecimal retailRadio,BigDecimal taxRadio, BigDecimal premiums) {
|
|
|
- if(entranceFee.getTotalAmount().compareTo(BigDecimal.ZERO) == 0)
|
|
|
+ public boolean calculateProportion(FeeOrderNewVo.EntranceFee entranceFee, FeeOrderNewVo.DeptManagerFee deptManagerFee,
|
|
|
+ FeeOrderNewVo.ExportFee exportFee, BigDecimal retailRadio, BigDecimal taxRadio, BigDecimal premiums) {
|
|
|
+ if (entranceFee.getTotalAmount().compareTo(BigDecimal.ZERO) == 0)
|
|
|
return true;
|
|
|
//去税入口比例
|
|
|
- BigDecimal noTaxEntranceTotalProportion = entranceFee.getTotalProportion().divide(taxRadio,2,BigDecimal.ROUND_DOWN);
|
|
|
- if(noTaxEntranceTotalProportion.subtract(exportFee.getTotalProportion()).subtract(deptManagerFee.getDeptProportionLevelOne())
|
|
|
+ BigDecimal noTaxEntranceTotalProportion = entranceFee.getTotalProportion().divide(taxRadio, 2, BigDecimal.ROUND_DOWN);
|
|
|
+ if (noTaxEntranceTotalProportion.subtract(exportFee.getTotalProportion()).subtract(deptManagerFee.getDeptProportionLevelOne())
|
|
|
.subtract(deptManagerFee.getDeptProportionLevelTwo()).subtract(deptManagerFee.getDeptProportionLevelThree())
|
|
|
.subtract(deptManagerFee.getDeptProportionLevelFoure()).subtract(deptManagerFee.getDeptProportionLevelFive())
|
|
|
- .subtract(retailRadio).compareTo(BigDecimal.ZERO) == 0){
|
|
|
+ .subtract(retailRadio).compareTo(BigDecimal.ZERO) == 0) {
|
|
|
return true;
|
|
|
}
|
|
|
return false;
|