Browse Source

批量修改逻辑调整

lipf 2 months ago
parent
commit
ae7a836c85

+ 16 - 0
commons/src/main/java/com/jzg/commons/util/BigDecimalUtil.java

@@ -1,6 +1,7 @@
 package com.jzg.commons.util;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -65,6 +66,21 @@ public class BigDecimalUtil {
         return sum;
     }
 
+    public static BigDecimal toZero(String amount){
+        if(StrUtil.isEmpty(amount)){
+            return BigDecimal.ZERO;
+        }
+        return new BigDecimal(amount);
+
+    }
+
+    public static String toString(BigDecimal amount){
+        if(amount != null){
+            return amount.toString();
+        }
+        return null;
+    }
+
     /**
      * 提供精确的减法运算
      * @param v1 被减数

+ 101 - 24
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -1676,7 +1676,6 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Override
     public HttpResult<String> updateOrdersBatch(BatchModifyVo batchModifyVo) {
         log.info("批量修改车险订单的费用比例,联系人等信息. batchModifyVo=[{}]", JSONUtil.toJsonStr(batchModifyVo));
-
         List<String> orderNos = batchModifyVo.getOrderNos();
         if(CollUtil.isEmpty(orderNos)){
             return HttpResult.error("批量修改时,请指定订单编号");
@@ -1690,9 +1689,10 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 continue;
             }
             // add by lipf, 进行费用的修改
-            if(this.rationIsNotNull(batchModifyVo)){
+            if(this.rationIsNotAllNull(batchModifyVo)){
                 log.info("费用比例不为空,同步调整费用。batchModifyVo=[{}]", JSONUtil.toJsonStr(batchModifyVo));
-                PtlAgreementCostRatioVo param = this.calRatio(insFeeOrders,batchModifyVo);
+                BigDecimal taxFactor = this.obtainTaxRate(orderNo);
+                PtlAgreementCostRatioVo param = this.calRatio(insFeeOrders,batchModifyVo, taxFactor);
                 param.multiply100();
                 insFeeAuditService.saveCostInfo(param);
             }
@@ -1725,13 +1725,13 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     /**
      * 结合原有的费用比例,计算更新后的费用比例
      *
-     * @param insFeeOrders 订单的费用信息
+     * @param insFeeOrders  订单的费用信息
      * @param batchModifyVo 批量修改的费用比例
-     *
+     * @param taxFactor 税率 1或者1.06
      * @author lipf
      * @date 2026/6/23 16:35
      */
-    private PtlAgreementCostRatioVo calRatio(InsFeeOrders insFeeOrders, BatchModifyVo batchModifyVo) {
+    private PtlAgreementCostRatioVo calRatio(InsFeeOrders insFeeOrders, BatchModifyVo batchModifyVo, BigDecimal taxFactor) {
         log.info("batchModifyVo.转换百分比之前的数据=【{}】", JSONUtil.toJsonStr(batchModifyVo));
         batchModifyVo.divide100();
         PtlAgreementCostRatioVo vo = new PtlAgreementCostRatioVo();
@@ -1742,20 +1742,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         vo.setSyAdditionalRatio(insFeeOrders.getSyAdditionalRatio());
         vo.setJyAdditionalRatio(insFeeOrders.getJyAdditionalRatio());
 
-        // 手续费比例
-        vo.setJqCommissionRatio(batchModifyVo.getJqSuperviseCostsProportion() != null ? batchModifyVo.getJqSuperviseCostsProportion(): insFeeOrders.getJqCommissionRatio());
-        vo.setSyCommissionRatio(batchModifyVo.getSySuperviseCostsProportion() != null ? batchModifyVo.getSySuperviseCostsProportion(): insFeeOrders.getSyCommissionRatio());
-        vo.setJyCommissionRatio(batchModifyVo.getJySuperviseCostsProportion() != null ? batchModifyVo.getJySuperviseCostsProportion(): insFeeOrders.getJyCommissionRatio());
-
-        // 跟单费比例
-        vo.setJqFollowRatio(batchModifyVo.getJqOtherCostsProportion() != null ? batchModifyVo.getJqOtherCostsProportion(): insFeeOrders.getJqFollowRatio());
-        vo.setSyFollowRatio(batchModifyVo.getSyOtherCostsProportion() != null ? batchModifyVo.getSyOtherCostsProportion(): insFeeOrders.getSyFollowRatio());
-        vo.setJyFollowRatio(batchModifyVo.getJyOtherCostsProportion() != null ? batchModifyVo.getJyOtherCostsProportion(): insFeeOrders.getJyFollowRatio());
-
-        // 入口比例
-        vo.setJqInletRatio(BigDecimalUtil.add(vo.getJqCommissionRatio(), vo.getJqFollowRatio()));
-        vo.setSyInletRatio(BigDecimalUtil.add(vo.getSyCommissionRatio(), vo.getSyFollowRatio()));
-        vo.setJyInletRatio(BigDecimalUtil.add(vo.getJyCommissionRatio(), vo.getJyFollowRatio()));
+        this.calCommissionAndFollowAndInlet( vo, batchModifyVo, insFeeOrders);
 
         // 出口比例
         vo.setJqExportRatio(insFeeOrders.getJqExportRatio());
@@ -1763,9 +1750,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         vo.setJyExportRatio(insFeeOrders.getJyExportRatio());
 
         // 留点比例
-        vo.setJqKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(vo.getJqInletRatio(), vo.getJqAdditionalRatio()),vo.getJqExportRatio()));
-        vo.setSyKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(vo.getSyInletRatio(), vo.getSyAdditionalRatio()),vo.getSyExportRatio()));
-        vo.setJyKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(vo.getJyInletRatio(), vo.getJyAdditionalRatio()),vo.getJyExportRatio()));
+        vo.setJqKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.divide(vo.getJqInletRatio(),taxFactor) , vo.getJqAdditionalRatio()),vo.getJqExportRatio()));
+        vo.setSyKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.divide(vo.getSyInletRatio(),taxFactor), vo.getSyAdditionalRatio()),vo.getSyExportRatio()));
+        vo.setJyKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.divide(vo.getJyInletRatio(),taxFactor), vo.getJyAdditionalRatio()),vo.getJyExportRatio()));
 
         // 出口留点比例
         vo.setJqExportKeepPointRatio(insFeeOrders.getJqExportKeepPointRatio());
@@ -1776,6 +1763,96 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         return vo;
     }
 
+    /**
+     * 根据不同场景计算入口比例,手续费比例和跟单费比例
+     *
+     * 手续费 (只变手续费)                 入口-手续费 = 跟单
+     * 跟单变  (只变跟单费)                 手续费+跟单 = 入口
+     * 手续费+ 跟单费(手续费和跟单费都变)      手续费+跟单 = 入口
+     *
+     * @author lipf
+     * @date 2026/6/24 15:53
+     */
+    private void calCommissionAndFollowAndInlet(PtlAgreementCostRatioVo vo, BatchModifyVo batchModifyVo, InsFeeOrders insFeeOrders) {
+
+        // 设置交强险
+        BigDecimal jqInletRatio = BigDecimal.ZERO;
+        BigDecimal jqCommissionRatio = BigDecimal.ZERO;
+        BigDecimal jqFollowRatio = BigDecimal.ZERO;
+        if(batchModifyVo.getJqSuperviseCostsProportion() != null && batchModifyVo.getJqOtherCostsProportion() == null){
+            jqInletRatio = insFeeOrders.getJqInletRatio();
+            jqCommissionRatio = batchModifyVo.getJqSuperviseCostsProportion();
+            jqFollowRatio = BigDecimalUtil.subtract(jqInletRatio,jqCommissionRatio);
+        }else if(batchModifyVo.getJqSuperviseCostsProportion() == null && batchModifyVo.getJqOtherCostsProportion() != null){
+             jqCommissionRatio = insFeeOrders.getJqCommissionRatio();
+             jqFollowRatio = batchModifyVo.getJqOtherCostsProportion();
+             jqInletRatio = BigDecimalUtil.add(jqCommissionRatio,jqFollowRatio);
+        }else if(batchModifyVo.getJqSuperviseCostsProportion() != null && batchModifyVo.getJqOtherCostsProportion() != null){
+             jqCommissionRatio = batchModifyVo.getJqSuperviseCostsProportion();
+             jqFollowRatio = batchModifyVo.getJqOtherCostsProportion();
+             jqInletRatio = BigDecimalUtil.add(jqCommissionRatio,jqFollowRatio);
+        }else if(batchModifyVo.getJqSuperviseCostsProportion() == null && batchModifyVo.getJqOtherCostsProportion() == null){
+            jqInletRatio = insFeeOrders.getJqInletRatio();
+            jqCommissionRatio = insFeeOrders.getJqCommissionRatio();
+            jqFollowRatio = insFeeOrders.getJqFollowRatio();
+        }
+        vo.setJqInletRatio(jqInletRatio);
+        vo.setJqCommissionRatio(jqCommissionRatio);
+        vo.setJqFollowRatio(jqFollowRatio);
+
+        // 设置商业险的比例
+        BigDecimal syInletRatio = BigDecimal.ZERO;
+        BigDecimal syCommissionRatio = BigDecimal.ZERO;
+        BigDecimal syFollowRatio = BigDecimal.ZERO;
+        if(batchModifyVo.getSySuperviseCostsProportion() != null && batchModifyVo.getSyOtherCostsProportion() == null){
+            syInletRatio = insFeeOrders.getSyInletRatio();
+            syCommissionRatio = batchModifyVo.getSySuperviseCostsProportion();
+            syFollowRatio = BigDecimalUtil.subtract(syInletRatio,syCommissionRatio);
+        }else if(batchModifyVo.getSySuperviseCostsProportion() == null && null != batchModifyVo.getSyOtherCostsProportion()){
+            syCommissionRatio = insFeeOrders.getSyCommissionRatio();
+            syFollowRatio = batchModifyVo.getSyOtherCostsProportion();
+            syInletRatio = BigDecimalUtil.add(syCommissionRatio,syFollowRatio);
+        }else if(batchModifyVo.getSySuperviseCostsProportion() != null && batchModifyVo.getSyOtherCostsProportion() != null){
+            syCommissionRatio = batchModifyVo.getSySuperviseCostsProportion();
+            syFollowRatio = batchModifyVo.getSyOtherCostsProportion();
+            syInletRatio = BigDecimalUtil.add(syCommissionRatio,syFollowRatio);
+        }else if(batchModifyVo.getSySuperviseCostsProportion() == null && batchModifyVo.getSyOtherCostsProportion() == null){
+            syInletRatio = insFeeOrders.getSyInletRatio();
+            syCommissionRatio = insFeeOrders.getSyCommissionRatio();
+            syFollowRatio = insFeeOrders.getSyFollowRatio();
+        }
+        vo.setSyInletRatio(syInletRatio);
+        vo.setSyCommissionRatio(syCommissionRatio);
+        vo.setSyFollowRatio(syFollowRatio);
+
+        // 设置驾意险
+        BigDecimal jyInletRatio = BigDecimal.ZERO;
+        BigDecimal jyCommissionRatio = BigDecimal.ZERO;
+        BigDecimal jyFollowRatio = BigDecimal.ZERO;
+        if(batchModifyVo.getJySuperviseCostsProportion() != null && batchModifyVo.getJyOtherCostsProportion() == null){
+            jyInletRatio = insFeeOrders.getJyInletRatio();
+            jyCommissionRatio = batchModifyVo.getJySuperviseCostsProportion();
+            jyFollowRatio = BigDecimalUtil.subtract(jyInletRatio,jyCommissionRatio);
+        }else if(batchModifyVo.getJySuperviseCostsProportion() == null && batchModifyVo.getJyOtherCostsProportion() != null){
+            jyCommissionRatio = insFeeOrders.getJyCommissionRatio();
+            jyFollowRatio = batchModifyVo.getJyOtherCostsProportion();
+            jyInletRatio = BigDecimalUtil.add(jyCommissionRatio,jyFollowRatio);
+        }else if(batchModifyVo.getJySuperviseCostsProportion() != null && batchModifyVo.getJyOtherCostsProportion() != null){
+            jyCommissionRatio = batchModifyVo.getJySuperviseCostsProportion();
+            jyFollowRatio = batchModifyVo.getJyOtherCostsProportion();
+            jyInletRatio = BigDecimalUtil.add(jyCommissionRatio,jyFollowRatio);
+        }else if(batchModifyVo.getJySuperviseCostsProportion() == null && batchModifyVo.getJyOtherCostsProportion() == null){
+            jyInletRatio = insFeeOrders.getJyInletRatio();
+            jyCommissionRatio = insFeeOrders.getJyCommissionRatio();
+            jyFollowRatio = insFeeOrders.getJyFollowRatio();
+        }
+        vo.setJyInletRatio(jyInletRatio);
+        vo.setJyCommissionRatio(jyCommissionRatio);
+        vo.setJyFollowRatio(jyFollowRatio);
+
+        log.info("入口比例,手续费比例,跟单比例处理后的结果是:vo=[{}]", JSONUtil.toJsonStr(vo));
+    }
+
     /**
      * 存在是否不为空的费用比例
      *      所有费用比例都为空,返回false, 有任意一个不为空,返回true
@@ -1783,7 +1860,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
      * @author lipf
      * @date 2026/6/23 16:34
      */
-    private boolean rationIsNotNull(BatchModifyVo vo) {
+    private boolean rationIsNotAllNull(BatchModifyVo vo) {
         boolean hasSuperviseOrOtherCosts = vo.getJqSuperviseCostsProportion() != null
                 || vo.getSySuperviseCostsProportion() != null
                 || vo.getJySuperviseCostsProportion() != null

+ 208 - 16
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -29,6 +29,7 @@ import com.jzg.commons.entity.po.InsFeeOrders;
 import com.jzg.commons.entity.po.PtlAgreement;
 import com.jzg.commons.entity.po.SysUploadFiles;
 import com.jzg.commons.entity.quote.vo.orders.InsOrdersVo;
+import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
 import com.jzg.commons.exception.ServiceException;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.*;
@@ -2298,6 +2299,138 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         throw new ServiceException(result.getMsg());
     }
 
+    /**
+     * 根据不同场景计算入口比例,手续费比例和跟单费比例
+     *
+     * 手续费 (只变手续费)                 入口-手续费 = 跟单
+     * 跟单变  (只变跟单费)                 手续费+跟单 = 入口
+     * 手续费+ 跟单费(手续费和跟单费都变)      手续费+跟单 = 入口
+     *
+     * @author lipf
+     * @date 2026/6/24 15:53
+     */
+    private void calCommissionAndFollowAndInlet(PtlAgreementCostRatioVo vo, BatchModifyVo batchModifyVo, InsPlyIncome insPlyIncome) {
+        InsFeeOrders insFeeOrders = insPlyIncome.getInsFeeOrders();
+        // 设置交强险
+        BigDecimal jqInletRatio = BigDecimal.ZERO;
+        BigDecimal jqCommissionRatio = BigDecimal.ZERO;
+        BigDecimal jqFollowRatio = BigDecimal.ZERO;
+        if(batchModifyVo.getJqSuperviseCostsProportion() != null && batchModifyVo.getJqOtherCostsProportion() == null){
+            jqInletRatio = insFeeOrders .getJqInletRatio();
+            jqCommissionRatio = batchModifyVo.getJqSuperviseCostsProportion();
+            jqFollowRatio = BigDecimalUtil.subtract(jqInletRatio,jqCommissionRatio);
+        }else if(batchModifyVo.getJqSuperviseCostsProportion() == null && batchModifyVo.getJqOtherCostsProportion() != null){
+            jqCommissionRatio = BigDecimalUtil.toZero(insPlyIncome.getJqSuperviseCostsProportion());
+            jqFollowRatio = batchModifyVo.getJqOtherCostsProportion();
+            jqInletRatio = BigDecimalUtil.add(jqCommissionRatio,jqFollowRatio);
+        }else if(batchModifyVo.getJqSuperviseCostsProportion() != null && batchModifyVo.getJqOtherCostsProportion() != null){
+            jqCommissionRatio = batchModifyVo.getJqSuperviseCostsProportion();
+            jqFollowRatio = batchModifyVo.getJqOtherCostsProportion();
+            jqInletRatio = BigDecimalUtil.add(jqCommissionRatio,jqFollowRatio);
+        }else if(batchModifyVo.getJqSuperviseCostsProportion() == null && batchModifyVo.getJqOtherCostsProportion() == null){
+            jqInletRatio = insFeeOrders.getJqInletRatio();
+            jqCommissionRatio = BigDecimalUtil.toZero(insPlyIncome.getJqSuperviseCostsProportion());
+            jqFollowRatio = BigDecimalUtil.toZero(insPlyIncome.getJqOtherCostsProportion());
+        }
+        vo.setJqInletRatio(jqInletRatio);
+        vo.setJqCommissionRatio(jqCommissionRatio);
+        vo.setJqFollowRatio(jqFollowRatio);
+
+        // 设置商业险的比例
+        BigDecimal syInletRatio = BigDecimal.ZERO;
+        BigDecimal syCommissionRatio = BigDecimal.ZERO;
+        BigDecimal syFollowRatio = BigDecimal.ZERO;
+        if(batchModifyVo.getSySuperviseCostsProportion() != null && batchModifyVo.getSyOtherCostsProportion() == null){
+            syInletRatio = insFeeOrders.getSyInletRatio();
+            syCommissionRatio = batchModifyVo.getSySuperviseCostsProportion();
+            syFollowRatio = BigDecimalUtil.subtract(syInletRatio,syCommissionRatio);
+        }else if(batchModifyVo.getSySuperviseCostsProportion() == null && null != batchModifyVo.getSyOtherCostsProportion()){
+            syCommissionRatio = BigDecimalUtil.toZero(insPlyIncome.getSySuperviseCostsProportion());
+            syFollowRatio = batchModifyVo.getSyOtherCostsProportion();
+            syInletRatio = BigDecimalUtil.add(syCommissionRatio,syFollowRatio);
+        }else if(batchModifyVo.getSySuperviseCostsProportion() != null && batchModifyVo.getSyOtherCostsProportion() != null){
+            syCommissionRatio = batchModifyVo.getSySuperviseCostsProportion();
+            syFollowRatio = batchModifyVo.getSyOtherCostsProportion();
+            syInletRatio = BigDecimalUtil.add(syCommissionRatio,syFollowRatio);
+        }else if(batchModifyVo.getSySuperviseCostsProportion() == null && batchModifyVo.getSyOtherCostsProportion() == null){
+            syInletRatio = insFeeOrders.getSyInletRatio();
+            syCommissionRatio = BigDecimalUtil.toZero(insPlyIncome.getSySuperviseCostsProportion());
+            syFollowRatio = BigDecimalUtil.toZero(insPlyIncome.getSyOtherCostsProportion());
+        }
+        vo.setSyInletRatio(syInletRatio);
+        vo.setSyCommissionRatio(syCommissionRatio);
+        vo.setSyFollowRatio(syFollowRatio);
+
+        // 设置驾意险
+        BigDecimal jyInletRatio = BigDecimal.ZERO;
+        BigDecimal jyCommissionRatio = BigDecimal.ZERO;
+        BigDecimal jyFollowRatio = BigDecimal.ZERO;
+        if(batchModifyVo.getJySuperviseCostsProportion() != null && batchModifyVo.getJyOtherCostsProportion() == null){
+            jyInletRatio = insFeeOrders.getJyInletRatio();
+            jyCommissionRatio = batchModifyVo.getJySuperviseCostsProportion();
+            jyFollowRatio = BigDecimalUtil.subtract(jyInletRatio,jyCommissionRatio);
+        }else if(batchModifyVo.getJySuperviseCostsProportion() == null && batchModifyVo.getJyOtherCostsProportion() != null){
+            jyCommissionRatio = BigDecimalUtil.toZero(insPlyIncome.getJySuperviseCostsProportion());
+            jyFollowRatio = batchModifyVo.getJyOtherCostsProportion();
+            jyInletRatio = BigDecimalUtil.add(jyCommissionRatio,jyFollowRatio);
+        }else if(batchModifyVo.getJySuperviseCostsProportion() != null && batchModifyVo.getJyOtherCostsProportion() != null){
+            jyCommissionRatio = batchModifyVo.getJySuperviseCostsProportion();
+            jyFollowRatio = batchModifyVo.getJyOtherCostsProportion();
+            jyInletRatio = BigDecimalUtil.add(jyCommissionRatio,jyFollowRatio);
+        }else if(batchModifyVo.getJySuperviseCostsProportion() == null && batchModifyVo.getJyOtherCostsProportion() == null){
+            jyInletRatio = insFeeOrders.getJyInletRatio();
+            jyCommissionRatio = BigDecimalUtil.toZero(insPlyIncome.getJySuperviseCostsProportion());
+            jyFollowRatio = BigDecimalUtil.toZero(insPlyIncome.getJyOtherCostsProportion());
+        }
+        vo.setJyInletRatio(jyInletRatio);
+        vo.setJyCommissionRatio(jyCommissionRatio);
+        vo.setJyFollowRatio(jyFollowRatio);
+
+        log.info("入口比例,手续费比例,跟单比例处理后的结果是:vo=[{}]", JSONUtil.toJsonStr(vo));
+    }
+
+
+    /**
+     * 结合原有的费用比例,计算更新后的费用比例
+     *
+     * @param insPlyIncome  订单的费用信息
+     * @param batchModifyVo 批量修改的费用比例
+     * @author lipf
+     * @date 2026/6/23 16:35
+     */
+    private PtlAgreementCostRatioVo calRatio(InsPlyIncome insPlyIncome, BatchModifyVo batchModifyVo) {
+        log.info("batchModifyVo.转换百分比之前的数据=【{}】", JSONUtil.toJsonStr(batchModifyVo));
+        batchModifyVo.divide100();
+        PtlAgreementCostRatioVo vo = new PtlAgreementCostRatioVo();
+        vo.setOrderNo(insPlyIncome.getOrderNo());
+
+        // 加投费比例
+//        vo.setJqAdditionalRatio(insPlyIncome.getJqAdditionalRatio());
+//        vo.setSyAdditionalRatio(insPlyIncome.getSyAdditionalRatio());
+//        vo.setJyAdditionalRatio(insPlyIncome.getJyAdditionalRatio());
+
+        this.calCommissionAndFollowAndInlet(vo, batchModifyVo, insPlyIncome);
+
+        // 出口比例
+//        vo.setJqExportRatio(insPlyIncome.getJqExportRatio());
+//        vo.setSyExportRatio(insPlyIncome.getSyExportRatio());
+//        vo.setJyExportRatio(insPlyIncome.getJyExportRatio());
+
+        // 留点比例
+//        vo.setJqKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.divide(vo.getJqInletRatio(),taxFactor) , vo.getJqAdditionalRatio()),vo.getJqExportRatio()));
+//        vo.setSyKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.divide(vo.getSyInletRatio(),taxFactor), vo.getSyAdditionalRatio()),vo.getSyExportRatio()));
+//        vo.setJyKeepPointRatio(BigDecimalUtil.subtract(BigDecimalUtil.add(BigDecimalUtil.divide(vo.getJyInletRatio(),taxFactor), vo.getJyAdditionalRatio()),vo.getJyExportRatio()));
+
+        // 出口留点比例
+//        vo.setJqExportKeepPointRatio(insPlyIncome.getJqExportKeepPointRatio());
+//        vo.setSyExportKeepPointRatio(insPlyIncome.getSyExportKeepPointRatio());
+//        vo.setJyExportKeepPointRatio(insPlyIncome.getJyExportKeepPointRatio());
+        log.info("insPlyIncome调整前的比例:fee=[{}]", JSONUtil.toJsonStr(insPlyIncome));
+        log.info("insPlyIncome调整后的比例信息:vo=[{}]", JSONUtil.toJsonStr(vo));
+        return vo;
+    }
+
+
     /**
      * 私有协议批量修改
      *      修改手续费比例(商业险手续费比例, 交强险手续费比例)
@@ -2358,22 +2491,28 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             String updateFlag = batchModifyVo.getUpdateFlag();
 
             // 根据 updateFlag 处理不同的更新逻辑
-            if ("1".equals(updateFlag)) {
-                // 修改手续费
-                hasUpdate = handleSuperviseCosts(updateIncome, income, batchModifyVo, taxRate);
-            } else if ("2".equals(updateFlag)) {
-                // 修改跟单费
-                hasUpdate = handleOtherCosts(updateIncome, income, batchModifyVo, taxRate);
-            } else if ("3".equals(updateFlag)) {
-                // 修改驾意险费用
-                hasUpdate = handleJyCosts(updateIncome, income, batchModifyVo, taxRate);
-            } else if ("4".equals(updateFlag)) {
-                // 修改所有
-                boolean superviseUpdated = handleSuperviseCosts(updateIncome, income, batchModifyVo, taxRate);
-                boolean otherUpdated = handleOtherCosts(updateIncome, income, batchModifyVo, taxRate);
-                boolean jyUpdated = handleJyCosts(updateIncome, income, batchModifyVo, taxRate);
-                hasUpdate = superviseUpdated || otherUpdated || jyUpdated;
-            }
+//            if ("1".equals(updateFlag)) {
+//                // 修改手续费
+//                hasUpdate = handleSuperviseCosts(updateIncome, income, batchModifyVo, taxRate);
+//            } else if ("2".equals(updateFlag)) {
+//                // 修改跟单费
+//                hasUpdate = handleOtherCosts(updateIncome, income, batchModifyVo, taxRate);
+//            } else if ("3".equals(updateFlag)) {
+//                // 修改驾意险费用
+//                hasUpdate = handleJyCosts(updateIncome, income, batchModifyVo, taxRate);
+//            } else if ("4".equals(updateFlag)) {
+//                // 修改所有
+//                boolean superviseUpdated = handleSuperviseCosts(updateIncome, income, batchModifyVo, taxRate);
+//                boolean otherUpdated = handleOtherCosts(updateIncome, income, batchModifyVo, taxRate);
+//                boolean jyUpdated = handleJyCosts(updateIncome, income, batchModifyVo, taxRate);
+//                hasUpdate = superviseUpdated || otherUpdated || jyUpdated;
+//            }
+
+            // 计算比例
+            PtlAgreementCostRatioVo ptlAgreementCostRatioVo = this.calRatio(income, batchModifyVo);
+            // 根据比例计算金额
+            this.calPremium(updateIncome,ptlAgreementCostRatioVo);
+            hasUpdate = true;
 
             // 处理公共字段更新
             if (batchModifyVo.getSigningTime() != null) {
@@ -2407,6 +2546,59 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         return true;
     }
 
+    /**
+     * 根据比例计算入口费用,入口手续费,入口跟单费
+     *
+     * @author lipf
+     * @date 2026/6/24 16:36
+     */
+    private void calPremium(InsPlyIncome updateIncome, PtlAgreementCostRatioVo ratioVo) {
+        log.info("根据入口比例等比例值计算对应的金额。 ptlAgreementCostRatioVo=[{}], updateIncome=[{}]", JSONUtil.toJsonStr(ratioVo), JSONUtil.toJsonStr(updateIncome));
+
+        BigDecimal jqPremium = BigDecimalUtil.toZero(updateIncome.getJqPremium());
+        BigDecimal syPremium = BigDecimalUtil.toZero(updateIncome.getSyPremium()) ;
+        BigDecimal jyPremium = BigDecimalUtil.toZero(updateIncome.getJyPremium());
+
+
+        BigDecimal jqInletPremium = BigDecimalUtil.multiply(jqPremium,ratioVo.getJqInletRatio());
+        BigDecimal syInletPremium = BigDecimalUtil.multiply(syPremium,ratioVo.getSyInletRatio());
+        BigDecimal jyInletPremium = BigDecimalUtil.multiply(jyPremium,ratioVo.getJyInletRatio());
+
+        BigDecimal jqCommissionPremium = BigDecimalUtil.multiply(jqPremium,ratioVo.getJqCommissionRatio());
+        BigDecimal syCommissionPremium = BigDecimalUtil.multiply(syPremium,ratioVo.getSyCommissionRatio());
+        BigDecimal jyCommissionPremium = BigDecimalUtil.multiply(jyPremium,ratioVo.getJyCommissionRatio());
+
+        BigDecimal jqOtherPremium = BigDecimalUtil.subtract(jqInletPremium,jqCommissionPremium);
+        BigDecimal syOtherPremium = BigDecimalUtil.subtract(syInletPremium,syCommissionPremium);
+        BigDecimal jyOtherPremium = BigDecimalUtil.subtract(jyInletPremium,jyCommissionPremium);
+
+        // 设置应收
+        updateIncome.setJqReceivablePremium(jqInletPremium.toString());
+        updateIncome.setSyReceivablePremium(syInletPremium.toString());
+        updateIncome.setJyReceivablePremium(jyPremium.toString());
+
+        // 设置手续费比例
+        updateIncome.setJqSuperviseCostsProportion(BigDecimalUtil.toString(ratioVo.getJqCommissionRatio()));
+        updateIncome.setSySuperviseCostsProportion(BigDecimalUtil.toString(ratioVo.getSyCommissionRatio()));
+        updateIncome.setJySuperviseCostsProportion(BigDecimalUtil.toString(ratioVo.getJyCommissionRatio()));
+
+        // 设置手续费
+        updateIncome.setJqSuperviseCostsPremiums(BigDecimalUtil.toString(jqCommissionPremium));
+        updateIncome.setSySuperviseCostsPremiums(BigDecimalUtil.toString(syCommissionPremium));
+        updateIncome.setJySuperviseCostsPremiums(BigDecimalUtil.toString(jyCommissionPremium));
+
+        // 设置跟单费比例
+        updateIncome.setJqOtherCostsProportion(BigDecimalUtil.toString(ratioVo.getJqFollowRatio()));
+        updateIncome.setSyOtherCostsProportion(BigDecimalUtil.toString(ratioVo.getSyFollowRatio()));
+        updateIncome.setJyOtherCostsProportion(BigDecimalUtil.toString(ratioVo.getJyFollowRatio()));
+
+        // 设置跟单费
+        updateIncome.setJqOtherCostsPremiums(BigDecimalUtil.toString(jqOtherPremium));
+        updateIncome.setSyOtherCostsPremiums(BigDecimalUtil.toString(syOtherPremium));
+        updateIncome.setJyOtherCostsPremiums(BigDecimalUtil.toString(jyOtherPremium));
+
+    }
+
     /**
      * 处理手续费更新
      */