|
|
@@ -153,19 +153,19 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
|
|
|
// 1. 交强险
|
|
|
calculatePremiumByRule(insFeeOrders, "jq", jqPremium,
|
|
|
insFeeOrders.getJqCommissionRatio(), insFeeOrders.getJqInletRatio(), insFeeOrders.getJqFollowRatio(),
|
|
|
- insFeeOrders.getJqAdditionalRatio(), insFeeOrders.getJqKeepPointRatio(), insFeeOrders.getJqExportRatio(), insFeeOrders.getJqExportKeepPointRatio(),
|
|
|
+ insFeeOrders.getJqAdditionalRatio(), insFeeOrders.getJqKeepPointRatio(), insFeeOrders.getJqExportRatio(), insFeeOrders.getJqExportKeepPointRatio(),insFeeOrders.getJqExportRatioContainDistribution(),
|
|
|
withTax, taxRate, SCALE);
|
|
|
|
|
|
// 2. 商业险
|
|
|
calculatePremiumByRule(insFeeOrders, "sy", syPremium,
|
|
|
insFeeOrders.getSyCommissionRatio(), insFeeOrders.getSyInletRatio(), insFeeOrders.getSyFollowRatio(),
|
|
|
- insFeeOrders.getSyAdditionalRatio(), insFeeOrders.getSyKeepPointRatio(), insFeeOrders.getSyExportRatio(), insFeeOrders.getSyExportKeepPointRatio(),
|
|
|
+ insFeeOrders.getSyAdditionalRatio(), insFeeOrders.getSyKeepPointRatio(), insFeeOrders.getSyExportRatio(), insFeeOrders.getSyExportKeepPointRatio(),insFeeOrders.getSyExportRatioContainDistribution(),
|
|
|
withTax, taxRate, SCALE);
|
|
|
|
|
|
// 3. 驾乘险
|
|
|
calculatePremiumByRule(insFeeOrders, "jy", jyPremium,
|
|
|
insFeeOrders.getJyCommissionRatio(), insFeeOrders.getJyInletRatio(), insFeeOrders.getJyFollowRatio(),
|
|
|
- insFeeOrders.getJyAdditionalRatio(), insFeeOrders.getJyKeepPointRatio(), insFeeOrders.getJyExportRatio(), insFeeOrders.getJyExportKeepPointRatio(),
|
|
|
+ insFeeOrders.getJyAdditionalRatio(), insFeeOrders.getJyKeepPointRatio(), insFeeOrders.getJyExportRatio(), insFeeOrders.getJyExportKeepPointRatio(),insFeeOrders.getJyExportRatioContainDistribution(),
|
|
|
withTax, taxRate, SCALE);
|
|
|
|
|
|
// 重新统计总应收、总应付
|
|
|
@@ -203,7 +203,7 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
|
|
|
InsFeeOrders insFeeOrders, String type,
|
|
|
BigDecimal premium,
|
|
|
BigDecimal commissionRatio, BigDecimal inletRatio, BigDecimal followRatio,
|
|
|
- BigDecimal addThrowRatio, BigDecimal keepPointRatio, BigDecimal exportRatio, BigDecimal exportKeepPointRatio,
|
|
|
+ BigDecimal addThrowRatio, BigDecimal keepPointRatio, BigDecimal exportRatio, BigDecimal exportKeepPointRatio, BigDecimal exportRatioContainDistribution,
|
|
|
Integer withTax, BigDecimal taxRate, int scale) {
|
|
|
|
|
|
// 计算基数
|
|
|
@@ -224,12 +224,19 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
|
|
|
// 加投直接乘
|
|
|
BigDecimal addThrow = premium.multiply(addThrowRatio).setScale(scale, RoundingMode.HALF_EVEN);
|
|
|
// 出口直接乘
|
|
|
- BigDecimal export = premium.multiply(exportRatio).setScale(scale, RoundingMode.HALF_EVEN);
|
|
|
+ BigDecimal export = premium.multiply(exportRatio).setScale(scale, RoundingMode.HALF_DOWN);
|
|
|
BigDecimal exportKeepPoint = premium.multiply(exportKeepPointRatio).setScale(scale, RoundingMode.HALF_EVEN);
|
|
|
// 留点比例直接乘, modify by lipf ,留点比例在infFeeOrder中计算得到。这里直接使用 2026年6月16日17:32:09, 为了保持金额一致,留点比例不适用百分比乘积,而是使用金额相减
|
|
|
// BigDecimal keepPoint = premium.multiply(keepPointRatio).setScale(scale, RoundingMode.HALF_EVEN);
|
|
|
- BigDecimal keepPoint = BigDecimalUtil.subtract(BigDecimalUtil.add(inlet,addThrow),export);
|
|
|
- log.info("计算留点:inlet=[{}],addThrow=[{}].export=[{}]", inlet, addThrow, export);
|
|
|
+ //BigDecimal keepPoint = BigDecimalUtil.subtract(BigDecimalUtil.add(inlet,addThrow),export);
|
|
|
+ // modify by lipf 2026年7月1日10:07:18 计算留点的时候,将分销费用移除
|
|
|
+// BigDecimal distributionFee = BigDecimalUtil.add(insFeeOrders.getFirstDistributionFee(), insFeeOrders.getSecondDistributionFee(), insFeeOrders.getThirdDistributionFee());
|
|
|
+// log.info("分销总费用:distributionFee=【{}】",distributionFee);
|
|
|
+// BigDecimal keepPoint = BigDecimalUtil.subtract(BigDecimalUtil.add(inlet,addThrow),BigDecimalUtil.add(export, distributionFee));
|
|
|
+// log.info("留点费用:inlet=[{}],addThrow=[{}],export=[{}], distributionFee=[{}]mkeepPoint=[{}]", inlet, addThrow, export, distributionFee, keepPoint);
|
|
|
+ BigDecimal exportContainDistribute = premium.multiply(exportRatioContainDistribution).setScale(scale, RoundingMode.HALF_DOWN);
|
|
|
+ BigDecimal keepPoint = BigDecimalUtil.subtract(BigDecimalUtil.add(inlet,addThrow),exportContainDistribute);
|
|
|
+ log.info("计算留点:inlet=[{}],addThrow=[{}].exportContainDistribute=[{}]", inlet, addThrow, exportContainDistribute);
|
|
|
|
|
|
// 赋值到实体(自动匹配 jq / sy / jy)
|
|
|
if ("jq".equals(type)) {
|
|
|
@@ -432,9 +439,15 @@ public class InsFeeOrdersServiceImpl extends ServiceImpl<InsFeeOrdersMapper, Ins
|
|
|
insFeeOrders.setSyExportRatio(syExportRatio);
|
|
|
insFeeOrders.setJyExportRatio(jyExportRatio);
|
|
|
// 需求:入口 + 加投 - 出口 = 留点
|
|
|
- BigDecimal jqKeepPointRatio = (jqInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(jqAdditionalRatio).subtract(jqExportRatio);
|
|
|
- BigDecimal syKeepPointRatio = (syInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(syAdditionalRatio).subtract(syExportRatio);
|
|
|
- BigDecimal jyKeepPointRatio = (jyInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(jyAdditionalRatio).subtract(jyExportRatio);
|
|
|
+ BigDecimal distributionRatio = BigDecimalUtil.divide(BigDecimalUtil.add(insFeeOrders.getFirstDistributionRatio(), insFeeOrders.getSecondDistributionRatio(), insFeeOrders.getThirdDistributionRatio()),new BigDecimal(100));
|
|
|
+ insFeeOrders.setJqExportRatioContainDistribution(BigDecimalUtil.add(jqExportRatio,distributionRatio));
|
|
|
+ insFeeOrders.setSyExportRatioContainDistribution(BigDecimalUtil.add(syExportRatio,distributionRatio) );
|
|
|
+ insFeeOrders.setJyExportRatioContainDistribution(BigDecimalUtil.add(jyExportRatio,distributionRatio) );
|
|
|
+ BigDecimal jqKeepPointRatio = (jqInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(jqAdditionalRatio).subtract(BigDecimalUtil.add(jqExportRatio,distributionRatio));
|
|
|
+ log.info("计算留点比例。 distributionRatio=[{}],jqInletRatio=[{}],jqAdditionalRatio=[{}],jqExportRatio=[{}]", distributionRatio,jqInletRatio,jqAdditionalRatio,jqExportRatio);
|
|
|
+
|
|
|
+ BigDecimal syKeepPointRatio = (syInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(syAdditionalRatio).subtract(BigDecimalUtil.add(jqExportRatio,syExportRatio));
|
|
|
+ BigDecimal jyKeepPointRatio = (jyInletRatio.divide(taxFactor, 5, RoundingMode.HALF_EVEN)).add(jyAdditionalRatio).subtract(BigDecimalUtil.add(jqExportRatio,jyExportRatio));
|
|
|
// 留点比例
|
|
|
insFeeOrders.setJqKeepPointRatio(jqKeepPointRatio);
|
|
|
insFeeOrders.setSyKeepPointRatio(syKeepPointRatio);
|