Просмотр исходного кода

调整报价费用比例的问题 修复分销的bug导致费用出现问题

785834757 3 месяцев назад
Родитель
Сommit
15db4d84e1

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

@@ -230,9 +230,9 @@ public class QuoteVerificationAspect {
         insFeeOrders.setSyPremium(insOrdersCosts.getSyPremium());
         insFeeOrders.setJyPremium(insOrdersCosts.getJyPremium());
         insFeeOrders.setTotalPremium(insOrdersCosts.getSumPremium());
-        BigDecimal jqEntranceFeeRatio = convertPercent(agreementInfoVo.getAgreement().getJqEntranceFeeRatio());
-        BigDecimal syEntranceFeeRatio = convertPercent(agreementInfoVo.getAgreement().getSyEntranceFeeRatio());
-        BigDecimal jyEntranceFeeRatio = convertPercent(agreementInfoVo.getAgreement().getJyEntranceFeeRatio());
+        BigDecimal jqEntranceFeeRatio = agreementInfoVo.getAgreement().getJqEntranceFeeRatio();
+        BigDecimal syEntranceFeeRatio = agreementInfoVo.getAgreement().getSyEntranceFeeRatio();
+        BigDecimal jyEntranceFeeRatio = agreementInfoVo.getAgreement().getJyEntranceFeeRatio();
 
         // 2. 获取费用类型列表(处理空集合,避免NPE)
         List<PtlAgreementCostTypeVo> costTypeList = orgClient.queryByCostId(costId);
@@ -254,6 +254,10 @@ public class QuoteVerificationAspect {
                 agreementInfoVo.getAgreement().setJqEntranceFeeRatio(jqEntranceFeeRatio);
             }
         }
+        if(Objects.nonNull(insOrdersCosts.getJqPremium()) && insOrdersCosts.getJqPremium().compareTo(BigDecimal.ZERO) == 0){
+            jqEntranceFeeRatio = BigDecimal.ZERO;
+            agreementInfoVo.getAgreement().setJqEntranceFeeRatio(jqEntranceFeeRatio);
+        }
 
         if(Objects.nonNull(syCostType))
         {
@@ -264,6 +268,11 @@ public class QuoteVerificationAspect {
             }
         }
 
+        if(Objects.nonNull(insOrdersCosts.getSyPremium()) && insOrdersCosts.getSyPremium().compareTo(BigDecimal.ZERO) == 0){
+            syEntranceFeeRatio = BigDecimal.ZERO;
+            agreementInfoVo.getAgreement().setSyEntranceFeeRatio(syEntranceFeeRatio);
+        }
+
         if(Objects.nonNull(jyCostType)){
             BigDecimal jyInlet = BigDecimalUtil.divide(jyCostType.getInlet(), new BigDecimal(100));
             if (BigDecimalUtil.subtract(jyEntranceFeeRatio, jyInlet).compareTo(BigDecimal.ZERO) > 0) {
@@ -272,6 +281,11 @@ public class QuoteVerificationAspect {
             }
         }
 
+        if(Objects.nonNull(insOrdersCosts.getJyPremium()) && insOrdersCosts.getJyPremium().compareTo(BigDecimal.ZERO) == 0){
+            jyEntranceFeeRatio = BigDecimal.ZERO;
+            agreementInfoVo.getAgreement().setJyEntranceFeeRatio(jyEntranceFeeRatio);
+        }
+
         // 4. 计算跟单费比例(入口比例 - 手续费比例)
         BigDecimal jqFollowRatio = calculateFollowRatio(jqCostType, jqEntranceFeeRatio);
         BigDecimal syFollowRatio = calculateFollowRatio(syCostType, syEntranceFeeRatio);
@@ -454,27 +468,16 @@ public class QuoteVerificationAspect {
         insFeeOrders.setTotalPayablePremium(totalPayable);
 
         // 计算出口费用 = (出口比列 * 保费)- 分销费
-//        BigDecimal firstDistributionFee = insFeeOrders.getFirstDistributionFee();
-//        BigDecimal secondDistributionFee = insFeeOrders.getSecondDistributionFee();
-//        BigDecimal thirdDistributionFee = insFeeOrders.getThirdDistributionFee();
         BigDecimal jqExportPremiumOrigin = insFeeOrders.getJqExportRatio().multiply(insFeeOrders.getJqPremium());
         BigDecimal jqExportPremium = jqExportPremiumOrigin.setScale(2,RoundingMode.DOWN);
-//        if (jqExportPremium.compareTo(BigDecimal.ZERO) > 0) {
-//            jqExportPremium = jqExportPremium.subtract(firstDistributionFee).subtract(secondDistributionFee).subtract(thirdDistributionFee);
-//        }
         insFeeOrders.setJqExportPremium(jqExportPremium);
 
         BigDecimal syExportPremiumOrigin = insFeeOrders.getSyExportRatio().multiply(insFeeOrders.getSyPremium());
         BigDecimal syExportPremium = syExportPremiumOrigin.setScale(2, RoundingMode.DOWN);
-//        if (syExportPremium.compareTo(BigDecimal.ZERO) > 0) {
-//            syExportPremium = syExportPremium.subtract(firstDistributionFee).subtract(secondDistributionFee).subtract(thirdDistributionFee);
-//        }
         insFeeOrders.setSyExportPremium(syExportPremium);
+
         BigDecimal jyExportPremiumOrigin = insFeeOrders.getJyExportRatio().multiply(insFeeOrders.getJyPremium());
         BigDecimal jyExportPremium = jyExportPremiumOrigin.setScale(2, RoundingMode.DOWN);
-//        if (jyExportPremium.compareTo(BigDecimal.ZERO) > 0) {
-//            jyExportPremium = jyExportPremium.subtract(firstDistributionFee).subtract(secondDistributionFee).subtract(thirdDistributionFee);
-//        }
         insFeeOrders.setJyExportPremium(jyExportPremium);
 
         // add by lipf, 2026年6月27日15:45:20 计算总的出口金额由5位调整为2位时,截断的所有金额
@@ -535,9 +538,9 @@ public class QuoteVerificationAspect {
      */
     private void saveRatio(InsFeeOrders insFeeOrders, AgreementInfoVo agreementInfoVo,PtlAgreementCostTypeVo jqCostType,PtlAgreementCostTypeVo syCostType,PtlAgreementCostTypeVo jyCostType) {
         // 手续费比例
-        insFeeOrders.setJqCommissionRatio(convertPercent(agreementInfoVo.getAgreement().getJqEntranceFeeRatio()));
-        insFeeOrders.setSyCommissionRatio(convertPercent(agreementInfoVo.getAgreement().getSyEntranceFeeRatio()));
-        insFeeOrders.setJyCommissionRatio(convertPercent(agreementInfoVo.getAgreement().getJyEntranceFeeRatio()));
+        insFeeOrders.setJqCommissionRatio(agreementInfoVo.getAgreement().getJqEntranceFeeRatio());
+        insFeeOrders.setSyCommissionRatio(agreementInfoVo.getAgreement().getSyEntranceFeeRatio());
+        insFeeOrders.setJyCommissionRatio(agreementInfoVo.getAgreement().getJyEntranceFeeRatio());
         // 入口比例
         insFeeOrders.setJqInletRatio(jqCostType != null
                 ? convertPercent(jqCostType.getInlet() != null ? jqCostType.getInlet() : BigDecimal.ZERO) : BigDecimal.ZERO);
@@ -584,15 +587,18 @@ public class QuoteVerificationAspect {
         BigDecimal thirdDistributionRatio = Optional.ofNullable(insFeeOrders.getThirdDistributionRatio()).orElse(BigDecimal.ZERO);
         insFeeOrders.setJqExportRatio(jqCostType == null ? BigDecimal.ZERO :
                         (jqCostType.getExport() != null && jqCostType.getExport().compareTo(BigDecimal.ZERO) > 0
-                                ? convertPercent(jqCostType.getExport()).subtract(firstDistributionRatio).subtract(secondDistributionRatio).subtract(thirdDistributionRatio)
+                                ? convertPercent(jqCostType.getExport()).subtract(convertPercent(firstDistributionRatio))
+                                  .subtract(convertPercent(secondDistributionRatio)).subtract(convertPercent(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)
+                                ? convertPercent(syCostType.getExport()).subtract(convertPercent(firstDistributionRatio))
+                                  .subtract(convertPercent(secondDistributionRatio)).subtract(convertPercent(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)
+                                ? convertPercent(jyCostType.getExport()).subtract(convertPercent(firstDistributionRatio))
+                                  .subtract(convertPercent(secondDistributionRatio)).subtract(convertPercent(thirdDistributionRatio))
                                 : BigDecimal.ZERO));
         // 出口留点比例
         insFeeOrders.setJqExportKeepPointRatio(jqCostType != null
@@ -612,7 +618,7 @@ public class QuoteVerificationAspect {
      */
     private BigDecimal calculateDistributionFee(InsOrdersCosts insOrdersCosts, InsFeeOrders insFeeOrders,InsOrders insOrders){
         // 总保费
-        BigDecimal totalPremium = insOrdersCosts.getSumPremium();
+        BigDecimal totalPremium = insOrdersCosts.getJqPremium().add(insOrdersCosts.getSyPremium()).add(insOrdersCosts.getJyPremium());
         // 获取当前租户信息
         HttpResult<SysUserJzgInfo> sysUserJzgInfoResult = orgClient.getUserInfoByMobile(insOrders.getRealQuoteUserId());
         SysUserJzgInfo currentUser = sysUserJzgInfoResult.getData();
@@ -678,7 +684,7 @@ public class QuoteVerificationAspect {
                 insFeeOrders.setFirstDistributorId(distributorId);
                 BigDecimal fee_5 = (totalPremium.multiply(setting.getCommissionRatioLevel1()).setScale(5,RoundingMode.DOWN));
                 insFeeOrders.setFirstDistributionFee(totalPremium.multiply(setting.getCommissionRatioLevel1()).setScale(2,RoundingMode.DOWN));
-                insFeeOrders.setFirstDistributionRatio(setting.getCommissionRatioLevel1());
+                insFeeOrders.setFirstDistributionRatio(setting.getCommissionRatioLevel1().multiply(new BigDecimal(100)));
                 BigDecimal diffAmount = fee_5.subtract(insFeeOrders.getFirstDistributionFee());
                 Map map = new HashMap();
                 map.put("id",distributorId);
@@ -707,7 +713,7 @@ public class QuoteVerificationAspect {
                 insFeeOrders.setSecondDistributorId(distributorId);
                 BigDecimal fee_5 = (totalPremium.multiply(setting.getCommissionRatioLevel2()).setScale(5,RoundingMode.DOWN));
                 insFeeOrders.setSecondDistributionFee(totalPremium.multiply(setting.getCommissionRatioLevel2()).setScale(2,RoundingMode.DOWN));
-                insFeeOrders.setSecondDistributionRatio(setting.getCommissionRatioLevel2());
+                insFeeOrders.setSecondDistributionRatio(setting.getCommissionRatioLevel2().multiply(new BigDecimal(100)));
                 BigDecimal diffAmount = fee_5.subtract(insFeeOrders.getSecondDistributionFee());
                 Map map = new HashMap();
                 map.put("id",distributorId);
@@ -735,7 +741,7 @@ public class QuoteVerificationAspect {
                 insFeeOrders.setThirdDistributorId(referrer.getReferrerId());
                 BigDecimal fee_5 = (totalPremium.multiply(setting.getCommissionRatioLevel3()).setScale(5,RoundingMode.DOWN));
                 insFeeOrders.setThirdDistributionFee(totalPremium.multiply(setting.getCommissionRatioLevel3()).setScale(2,RoundingMode.DOWN));
-                insFeeOrders.setThirdDistributionRatio(setting.getCommissionRatioLevel3());
+                insFeeOrders.setThirdDistributionRatio(setting.getCommissionRatioLevel3().multiply(new BigDecimal(100)));
                 BigDecimal diffAmount = fee_5.subtract(insFeeOrders.getThirdDistributionFee());
                 return diffAmount;
             } else {

+ 7 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/AgreementRulesController.java

@@ -41,6 +41,13 @@ public class AgreementRulesController extends BaseController {
 
     }
 
+    @Operation(summary = "复制承保规则")
+    @GetMapping("/rulesCopy")
+    public HttpResult rulesCopy(String agreementId, String ruleId) {
+        AgreementRulesVo agreementRulesVo = agreementRulesService.rulesCopy(agreementId,ruleId);
+        return HttpResult.ok(agreementRulesVo);
+    }
+
     /**
      * 添加承保规则
      *

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementUndwrtRulesService.java

@@ -52,7 +52,7 @@ public interface PtlAgreementUndwrtRulesService extends IService<PtlAgreementUnd
      * @param ruleId
      * @return
      */
-    AgreementRulesVo rulesCopy(String ruleId);
+    AgreementRulesVo rulesCopy(String agreementId, String ruleId);
 
 
 

+ 2 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostServiceImpl.java

@@ -415,6 +415,8 @@ public class PtlAgreementCostServiceImpl extends ServiceImpl<PtlAgreementCostMap
         // 调整数据 进行copy
         String costId = IdGenerate.nextId();
         ptlAgreementCost.setId(costId);
+        ptlAgreementCost.setCoverRuleId(costCopyParam.getCoverRuleId());
+        ptlAgreementCost.setPtlAgreementId(costCopyParam.getAgreementId());
         ptlAgreementCost.setCostDescribe("复制的费用:" + ptlAgreementCost.getCostDescribe());
         ptlAgreementCost.setCreateTime(LocalDateTime.now());
 

+ 2 - 2
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementUndwrtRulesServiceImpl.java

@@ -439,7 +439,7 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public AgreementRulesVo rulesCopy(String ruleId) {
+    public AgreementRulesVo rulesCopy(String agreementId, String ruleId) {
         PtlAgreementUndwrtRules rules = baseMapper.selectById(ruleId);
         if (rules == null) {
             log.info("承保规则不存在, ruleId={}", ruleId);
@@ -486,7 +486,7 @@ public class PtlAgreementUndwrtRulesServiceImpl extends ServiceImpl<PtlAgreement
             String newRuleId = IdGenerate.nextId();
             PtlAgreementUndwrtRules newRules = new PtlAgreementUndwrtRules();
             newRules.setId(newRuleId);
-            newRules.setAgreementId(rules.getAgreementId());
+            newRules.setAgreementId(agreementId);
             newRules.setStartTime(rules.getStartTime());
             newRules.setEndTime(rules.getEndTime());
             newRules.setInputDescription(rules.getInputDescription());