Bläddra i källkod

Merge branch 'refs/heads/test' into master-20240326

wks 2 år sedan
förälder
incheckning
d8d87b41b6

+ 12 - 0
src/main/java/com/ydtech/modules/fee/service/FeeRuleSchemeService.java

@@ -95,4 +95,16 @@ public interface FeeRuleSchemeService {
 
     FeeOrderNewVo.ExportFee assignExportFee(String title,BigDecimal premium,BigDecimal superviseCostsProportion,BigDecimal otherCostsProportion,
                                             BigDecimal superviseCostsPremiums,BigDecimal otherCostsPremiums);
+
+
+    /**
+     * 推算比例是否正确
+     * @param entranceFee     入口
+     * @param deptManagerFee  机构管理
+     * @param exportFee       出口
+     * @param retailRadio     分销比例
+     * @param premiums        保费
+     * @return
+     */
+    boolean calculateProportion(FeeOrderNewVo.EntranceFee entranceFee,FeeOrderNewVo.DeptManagerFee deptManagerFee,FeeOrderNewVo.ExportFee exportFee,BigDecimal retailRadio,BigDecimal taxRadio,BigDecimal premiums);
 }

+ 24 - 0
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java

@@ -2921,4 +2921,28 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         exportFee.setTotalAmount(superviseCostsPremiums.add(otherCostsPremiums));
         return exportFee;
     }
+
+    /**
+     * 推算比例是否正确
+     * @param entranceFee     入口
+     * @param deptManagerFee  机构管理
+     * @param exportFee       出口
+     * @param retailRadio     分销比例
+     * @param premiums        保费
+     * @return
+     */
+    @Override
+    public boolean calculateProportion(FeeOrderNewVo.EntranceFee entranceFee, FeeOrderNewVo.DeptManagerFee deptManagerFee, FeeOrderNewVo.ExportFee exportFee, BigDecimal retailRadio,BigDecimal taxRadio, BigDecimal premiums) {
+        if(entranceFee.getTotalAmount().compareTo(BigDecimal.ZERO) == 0)
+            return true;
+        //去税入口比例
+        BigDecimal noTaxEntranceTotalProportion = entranceFee.getTotalProportion().divide(taxRadio,2,BigDecimal.ROUND_DOWN);
+        if(noTaxEntranceTotalProportion.subtract(exportFee.getTotalProportion()).subtract(deptManagerFee.getDeptProportionLevelOne())
+                .subtract(deptManagerFee.getDeptProportionLevelTwo()).subtract(deptManagerFee.getDeptProportionLevelThree())
+                .subtract(deptManagerFee.getDeptProportionLevelFoure()).subtract(deptManagerFee.getDeptProportionLevelFive())
+                .subtract(retailRadio).compareTo(BigDecimal.ZERO) == 0){
+            return true;
+        }
+        return false;
+    }
 }

+ 15 - 2
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -381,8 +381,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 
         //endregion
 
-        //region 重新计算一级机构管理费
-        //入口 - 出口 - 机构管理费 2-4级 - 分销费  = 差值  + 一级管理费
+        //region 计算利润差值
+        //入口 - 出口 - 机构管理费 1-5级 - 分销费  = 差值
 
         //分销交强费用
         BigDecimal jqFenXiao = insFeeOrderNew.getJqPremium().multiply(retailRadio.divide(new BigDecimal(100)));
@@ -419,6 +419,19 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 
         //endregion
 
+        //region 比例逆推是否等于0
+
+        if(!feeRuleSchemeService.calculateProportion(jqEntranceFee,jqDeptManagerFee,jqExportFee,retailRadio,taxRadio,insFeeOrderNew.getJqPremium()))
+            throw new SystemException("交强比例异常");
+
+        if(!feeRuleSchemeService.calculateProportion(syEntranceFee,syDeptManagerFee,syExportFee,retailRadio,taxRadio,insFeeOrderNew.getSyPremium()))
+            throw new SystemException("商业比例异常");
+
+        if(!feeRuleSchemeService.calculateProportion(noEntranceFee,noDeptManagerFee,noExportFee,retailRadio,taxRadio,insFeeOrderNew.getNoPremium()))
+            throw new SystemException("非车比例异常");
+
+        //endregion
+
         insFeeOrderNewService.saveOrUpdate(insFeeOrderNew);
     }