lipf 2 месяцев назад
Родитель
Сommit
7ca3d1428b

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

@@ -14,9 +14,9 @@ import java.util.List;
 public class BigDecimalUtil {
 
     /** 默认除法运算精度(保留小数点后几位) */
-    private static final int DEF_DIV_SCALE = 2;
+    private static final int DEF_DIV_SCALE = 5;
     /** 默认舍入模式:四舍五入 */
-    private static final RoundingMode DEF_ROUNDING_MODE = RoundingMode.HALF_UP;
+    private static final RoundingMode DEF_ROUNDING_MODE = RoundingMode.HALF_EVEN;
 
     // 私有构造器,防止被实例化
     private BigDecimalUtil() {}

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

@@ -2511,7 +2511,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             // 计算比例
             PtlAgreementCostRatioVo ptlAgreementCostRatioVo = this.calRatio(income, batchModifyVo);
             // 根据比例计算金额
-            this.calPremium(updateIncome,ptlAgreementCostRatioVo);
+            this.calPremium(updateIncome,ptlAgreementCostRatioVo, taxRate);
             hasUpdate = true;
 
             // 处理公共字段更新
@@ -2552,7 +2552,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      * @author lipf
      * @date 2026/6/24 16:36
      */
-    private void calPremium(InsPlyIncome updateIncome, PtlAgreementCostRatioVo ratioVo) {
+    private void calPremium(InsPlyIncome updateIncome, PtlAgreementCostRatioVo ratioVo, BigDecimal taxRate) {
         log.info("根据入口比例等比例值计算对应的金额。 ptlAgreementCostRatioVo=[{}], updateIncome=[{}]", JSONUtil.toJsonStr(ratioVo), JSONUtil.toJsonStr(updateIncome));
 
         BigDecimal jqPremium = BigDecimalUtil.toZero(updateIncome.getJqPremium());
@@ -2560,13 +2560,13 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         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 jqInletPremium = BigDecimalUtil.divide(BigDecimalUtil.multiply(jqPremium,ratioVo.getJqInletRatio()), taxRate);
+        BigDecimal syInletPremium = BigDecimalUtil.divide(BigDecimalUtil.multiply(syPremium,ratioVo.getSyInletRatio()), taxRate);
+        BigDecimal jyInletPremium = BigDecimalUtil.divide(BigDecimalUtil.multiply(jyPremium,ratioVo.getJyInletRatio()), taxRate);
 
-        BigDecimal jqCommissionPremium = BigDecimalUtil.multiply(jqPremium,ratioVo.getJqCommissionRatio());
-        BigDecimal syCommissionPremium = BigDecimalUtil.multiply(syPremium,ratioVo.getSyCommissionRatio());
-        BigDecimal jyCommissionPremium = BigDecimalUtil.multiply(jyPremium,ratioVo.getJyCommissionRatio());
+        BigDecimal jqCommissionPremium = BigDecimalUtil.divide(BigDecimalUtil.multiply(jqPremium,ratioVo.getJqCommissionRatio()), taxRate);
+        BigDecimal syCommissionPremium = BigDecimalUtil.divide(BigDecimalUtil.multiply(syPremium,ratioVo.getSyCommissionRatio()), taxRate);
+        BigDecimal jyCommissionPremium = BigDecimalUtil.divide(BigDecimalUtil.multiply(jyPremium,ratioVo.getJyCommissionRatio()), taxRate);
 
         BigDecimal jqOtherPremium = BigDecimalUtil.subtract(jqInletPremium,jqCommissionPremium);
         BigDecimal syOtherPremium = BigDecimalUtil.subtract(syInletPremium,syCommissionPremium);