Jelajahi Sumber

分销修改

Qchen 3 bulan lalu
induk
melakukan
ce8563f0cb

+ 43 - 17
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java

@@ -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);
             }
         }
     }