|
|
@@ -302,13 +302,14 @@ public class QuoteVerificationAspect {
|
|
|
InsFeeOrders::setJyCommissionPremium, InsFeeOrders::setJyFollowPremium, InsFeeOrders::setJyAdditionalPremium,
|
|
|
InsFeeOrders::setJyKeepPointRatio,InsFeeOrders::setJyKeepPointPremium);
|
|
|
|
|
|
+ // 7. 计算分销费用
|
|
|
+ calculateDistributionFee(insOrdersCosts,insFeeOrders, insOrders);
|
|
|
|
|
|
- // 7. 计算总应收、总应付、保存费用比例 入库
|
|
|
+ // 8. 计算总应收、总应付、保存费用比例 入库
|
|
|
saveRatio(insFeeOrders, agreementInfoVo, jqCostType, syCostType, jyCostType);
|
|
|
calculateTotalPremium(insFeeOrders);
|
|
|
|
|
|
- // 8. 计算分销费用
|
|
|
- calculateDistributionFee(insOrdersCosts,insFeeOrders, insOrders);
|
|
|
+
|
|
|
|
|
|
insFeeOrdersService.save(insFeeOrders);
|
|
|
return insFeeOrders;
|
|
|
@@ -449,14 +450,26 @@ public class QuoteVerificationAspect {
|
|
|
insFeeOrders.setTotalReceivablePremium(totalReceivable);
|
|
|
insFeeOrders.setTotalPayablePremium(totalPayable);
|
|
|
|
|
|
- // 计算出口费用
|
|
|
- BigDecimal jqExportPremium = insFeeOrders.getJqExportRatio().multiply(insFeeOrders.getJqPremium()).setScale(2,RoundingMode.HALF_DOWN);
|
|
|
+ // 计算出口费用 = (出口比列 * 保费)- 分销费
|
|
|
+ BigDecimal firstDistributionFee = insFeeOrders.getFirstDistributionFee();
|
|
|
+ BigDecimal secondDistributionFee = insFeeOrders.getSecondDistributionFee();
|
|
|
+ BigDecimal thirdDistributionFee = insFeeOrders.getThirdDistributionFee();
|
|
|
+ BigDecimal jqExportPremium = insFeeOrders.getJqExportRatio().multiply(insFeeOrders.getJqPremium()).setScale(2,RoundingMode.DOWN);
|
|
|
+ if (jqExportPremium.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ jqExportPremium = jqExportPremium.subtract(firstDistributionFee).subtract(secondDistributionFee).subtract(thirdDistributionFee);
|
|
|
+ }
|
|
|
insFeeOrders.setJqExportPremium(jqExportPremium);
|
|
|
|
|
|
BigDecimal syExportPremium = insFeeOrders.getSyExportRatio().multiply(insFeeOrders.getSyPremium()).setScale(2, RoundingMode.DOWN);
|
|
|
+ if (syExportPremium.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ syExportPremium = syExportPremium.subtract(firstDistributionFee).subtract(secondDistributionFee).subtract(thirdDistributionFee);
|
|
|
+ }
|
|
|
insFeeOrders.setSyExportPremium(syExportPremium);
|
|
|
|
|
|
BigDecimal jyExportPremium = insFeeOrders.getJyExportRatio().multiply(insFeeOrders.getJyPremium()).setScale(2, RoundingMode.DOWN);;
|
|
|
+ if (jyExportPremium.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ jyExportPremium = jyExportPremium.subtract(firstDistributionFee).subtract(secondDistributionFee).subtract(thirdDistributionFee);
|
|
|
+ }
|
|
|
insFeeOrders.setJyExportPremium(jyExportPremium);
|
|
|
|
|
|
// 计算出口留点费用
|
|
|
@@ -551,18 +564,22 @@ public class QuoteVerificationAspect {
|
|
|
insFeeOrders.setJyKeepPointRatio(Objects.nonNull(insFeeOrders.getJyKeepPointRatio())
|
|
|
? insFeeOrders.getJyKeepPointRatio() : BigDecimal.ZERO);
|
|
|
|
|
|
- // 出口比例
|
|
|
- insFeeOrders.setJqExportRatio(jqCostType != null
|
|
|
- ? convertPercent(jqCostType.getExport() != null ? jqCostType.getExport() : BigDecimal.ZERO)
|
|
|
- : BigDecimal.ZERO);
|
|
|
- insFeeOrders.setSyExportRatio(syCostType != null
|
|
|
- ? convertPercent(syCostType.getExport() != null ? syCostType.getExport() : BigDecimal.ZERO)
|
|
|
- : BigDecimal.ZERO);
|
|
|
- insFeeOrders.setJyExportRatio(jyCostType != null
|
|
|
- ? convertPercent(jyCostType.getExport() != null ? jyCostType.getExport() : BigDecimal.ZERO)
|
|
|
- : BigDecimal.ZERO);
|
|
|
-
|
|
|
-
|
|
|
+ // 出口比例 = 出口比例 - 分销比例
|
|
|
+ BigDecimal firstDistributionRatio = insFeeOrders.getFirstDistributionRatio();
|
|
|
+ BigDecimal secondDistributionRatio = insFeeOrders.getSecondDistributionRatio();
|
|
|
+ BigDecimal thirdDistributionRatio = insFeeOrders.getThirdDistributionRatio();
|
|
|
+ insFeeOrders.setJqExportRatio(jqCostType == null ? BigDecimal.ZERO :
|
|
|
+ (jqCostType.getExport() != null && jqCostType.getExport().compareTo(BigDecimal.ZERO) > 0
|
|
|
+ ? convertPercent(jqCostType.getExport()).subtract(firstDistributionRatio).subtract(secondDistributionRatio).subtract(thirdDistributionRatio)
|
|
|
+ : BigDecimal.ZERO));
|
|
|
+ insFeeOrders.setSyExportRatio(syCostType == null ? BigDecimal.ZERO :
|
|
|
+ (syCostType.getExport() != null && syCostType.getExport().compareTo(BigDecimal.ZERO) > 0
|
|
|
+ ? convertPercent(syCostType.getExport()).subtract(firstDistributionRatio).subtract(secondDistributionRatio).subtract(thirdDistributionRatio)
|
|
|
+ : BigDecimal.ZERO));
|
|
|
+ insFeeOrders.setJyExportRatio(jyCostType == null ? BigDecimal.ZERO :
|
|
|
+ (jyCostType.getExport() != null && jyCostType.getExport().compareTo(BigDecimal.ZERO) > 0
|
|
|
+ ? convertPercent(jyCostType.getExport()).subtract(firstDistributionRatio).subtract(secondDistributionRatio).subtract(thirdDistributionRatio)
|
|
|
+ : BigDecimal.ZERO));
|
|
|
// 出口留点比例
|
|
|
insFeeOrders.setJqExportKeepPointRatio(jqCostType != null
|
|
|
? convertPercent(jqCostType.getExportKeepPointRatio() != null ? jqCostType.getExportKeepPointRatio() : BigDecimal.ZERO)
|
|
|
@@ -636,6 +653,9 @@ public class QuoteVerificationAspect {
|
|
|
insFeeOrders.setFirstDistributionFee(totalPremium.multiply(setting.getCommissionRatioLevel1()));
|
|
|
insFeeOrders.setFirstDistributionRatio(setting.getCommissionRatioLevel1());
|
|
|
return distributorId;
|
|
|
+ } else {
|
|
|
+ insFeeOrders.setFirstDistributionFee(BigDecimal.ZERO);
|
|
|
+ insFeeOrders.setFirstDistributionRatio(BigDecimal.ZERO);
|
|
|
}
|
|
|
}
|
|
|
return null;
|
|
|
@@ -657,6 +677,9 @@ public class QuoteVerificationAspect {
|
|
|
insFeeOrders.setSecondDistributionFee(totalPremium.multiply(setting.getCommissionRatioLevel2()));
|
|
|
insFeeOrders.setSecondDistributionRatio(setting.getCommissionRatioLevel2());
|
|
|
return distributorId;
|
|
|
+ } else {
|
|
|
+ insFeeOrders.setSecondDistributionFee(BigDecimal.ZERO);
|
|
|
+ insFeeOrders.setSecondDistributionRatio(BigDecimal.ZERO);
|
|
|
}
|
|
|
}
|
|
|
return null;
|
|
|
@@ -676,6 +699,9 @@ public class QuoteVerificationAspect {
|
|
|
insFeeOrders.setThirdDistributorId(referrer.getReferrerId());
|
|
|
insFeeOrders.setThirdDistributionFee(totalPremium.multiply(setting.getCommissionRatioLevel3()));
|
|
|
insFeeOrders.setThirdDistributionRatio(setting.getCommissionRatioLevel3());
|
|
|
+ } else {
|
|
|
+ insFeeOrders.setThirdDistributionFee(BigDecimal.ZERO);
|
|
|
+ insFeeOrders.setThirdDistributionRatio(BigDecimal.ZERO);
|
|
|
}
|
|
|
}
|
|
|
}
|