Browse Source

费用计算调整 承包规则日志

785834757 2 years ago
parent
commit
35e6958693

+ 20 - 22
src/main/java/com/ydtech/modules/fee/service/impl/CostsCalServiceImpl.java

@@ -65,6 +65,9 @@ public class CostsCalServiceImpl implements CostsCalcService {
     @Autowired
     private PtlAgreementService ptlAgreementService;
 
+    @Autowired
+    private FeeRuleSchemeService feeRuleSchemeService;
+
 
     @Override
     public EntranceFee getEntranceFee(String insuranceType, BigDecimal jqPremium, BigDecimal feeRadio, BigDecimal documentFeeRadio) {
@@ -196,32 +199,27 @@ public class CostsCalServiceImpl implements CostsCalcService {
 
         //交强机构管理费
         BigDecimal jqDeptProportion = insFeeOrderNew.getJqDeptProportionLevel1().add(insFeeOrderNew.getJqDeptProportionLevel2()).add(insFeeOrderNew.getJqDeptProportionLevel3()).add(insFeeOrderNew.getJqDeptProportionLevel4()).add(insFeeOrderNew.getJqDeptProportionLevel5());
-
-        //交强入口比例总和
-        BigDecimal jqEntranceProportion = insFeeOrderNew.getJqSuperviseCostsProportion().add(insFeeOrderNew.getJqOtherCostsProportion()).divide(taxRadio,2, RoundingMode.HALF_DOWN);
-
-        //交强出口总比例
-        BigDecimal jqExportProportion = jqEntranceProportion.subtract(jqDeptProportion).subtract(retailStoreProportion);
-        //交强出口金额
-        subOrderExportFeeVo.setJqExportCosts(insFeeOrderNew.getJqPremium().multiply(jqExportProportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
-
-        //商业入口比例总和
-        BigDecimal syEntranceProportion = insFeeOrderNew.getSySuperviseCostsProportion().add(insFeeOrderNew.getSyOtherCostsProportion()).divide(taxRadio,2, RoundingMode.HALF_DOWN);
         //商业部门管理比例总和
         BigDecimal syDeptProportion = insFeeOrderNew.getSyDeptProportionLevel1().add(insFeeOrderNew.getSyDeptProportionLevel2()).add(insFeeOrderNew.getSyDeptProportionLevel3()).add(insFeeOrderNew.getSyDeptProportionLevel4()).add(insFeeOrderNew.getSyDeptProportionLevel5());
-        //商业出口比例总和
-        BigDecimal syExportProportion = syEntranceProportion.subtract(syDeptProportion).subtract(retailStoreProportion);
-        //商业出口金额
-        subOrderExportFeeVo.setSyExportCosts(insFeeOrderNew.getSyPremium().multiply(syExportProportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
-
-        //非车入口比例总和
-        BigDecimal noEntranceProportion = insFeeOrderNew.getNoSuperviseCostsProportion().add(insFeeOrderNew.getNoOtherCostsProportion()).divide(taxRadio,2, RoundingMode.HALF_DOWN);
         //非车部门比例总和
         BigDecimal noDeptProportion = insFeeOrderNew.getNoDeptProportionLevel1().add(insFeeOrderNew.getNoDeptProportionLevel2()).add(insFeeOrderNew.getNoDeptProportionLevel3()).add(insFeeOrderNew.getNoDeptProportionLevel4()).add(insFeeOrderNew.getNoDeptProportionLevel5());
-        //非车出口比例总和
-        BigDecimal noExportProportion = noEntranceProportion.subtract(noDeptProportion).subtract(retailStoreProportion);
-        //非车出口金额
-        subOrderExportFeeVo.setNoExportCosts(insFeeOrderNew.getNoPremium().multiply(noExportProportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
+
+        //交强出口费用
+        FeeOrderNewVo.ExportFee jqExportFee = feeRuleSchemeService.calcExportFee(insFeeOrderNew.getJqPremium(), insFeeOrderNew.getJqCostsExportProportion(),
+                insFeeOrderNew.getJqCostsProportion(), jqDeptProportion, retailStoreProportion, taxRadio);
+        subOrderExportFeeVo.setJqExportCosts(jqExportFee.getTotalAmount());
+
+        //商业出口费用
+        FeeOrderNewVo.ExportFee syExportFee = feeRuleSchemeService.calcExportFee(insFeeOrderNew.getSyPremium(), insFeeOrderNew.getSyCostsExportProportion(),
+                insFeeOrderNew.getSyCostsProportion(), syDeptProportion, retailStoreProportion, taxRadio);
+        subOrderExportFeeVo.setSyExportCosts(syExportFee.getTotalAmount());
+
+        //非车出口费用
+        FeeOrderNewVo.ExportFee noExportFee = feeRuleSchemeService.calcExportFee(insFeeOrderNew.getNoPremium(), insFeeOrderNew.getNoCostsExportProportion(),
+                insFeeOrderNew.getNoCostsProportion(), noDeptProportion, retailStoreProportion, taxRadio);
+        subOrderExportFeeVo.setNoExportCosts(noExportFee.getTotalAmount());
+
+
 
         return subOrderExportFeeVo;
     }

+ 102 - 217
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -15,6 +15,7 @@ import com.ydtech.modules.esm.service.EsmRetailService;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
 import com.ydtech.modules.fee.dto.vo.RuleAttrMappingVo;
 import com.ydtech.modules.fee.service.FeeRuleSchemeNewService;
+import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.vo.*;
@@ -87,6 +88,9 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
     @Autowired
     private PtlAgreementService ptlAgreementService;
 
+    @Autowired
+    private FeeRuleSchemeService feeRuleSchemeService;
+
 
     @Override
     public QueryOrderFeeVo queryFeeOrderInfo(String companyId) {
@@ -140,8 +144,6 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
      */
     @Override
     public void verificationRuleFactor(InsAreaCompany insAreaCompany, InsOrders insOrders) {
-
-
         List<PtlAgreementUndwrtRulesNew> ptlAgreementUndwrtRules = ptlAgreementUndwrtRulesNewService.rulesList(insAreaCompany.getAgreementId());
         verificationRules(ptlAgreementUndwrtRules, insAreaCompany,insOrders);
     }
@@ -163,6 +165,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         //查找入口与出口费用比例
         //入口配置
         PtlAgreementProductCostsNew ptlAgreementProductCostsNew = ptlAgreementProductCostsNewService.getById(costsId);
+
         //出口配置
         PtlAgreementProductCostsExport ptlAgreementProductCostsExport = ptlAgreementProductCostsExportService.getOne(new LambdaQueryWrapper<PtlAgreementProductCostsExport>().eq(PtlAgreementProductCostsExport::getCostsId, costsId));
         InsFeeOrderNew insFeeOrderNew = new InsFeeOrderNew();
@@ -172,6 +175,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         insFeeOrderNew.setJqCostsExportProportion(new BigDecimal(ptlAgreementProductCostsNew.getJqCostsExportProportion()));
         insFeeOrderNew.setSyCostsExportProportion(new BigDecimal(ptlAgreementProductCostsNew.getSyCostsExportProportion()));
         insFeeOrderNew.setNoCostsExportProportion(new BigDecimal(ptlAgreementProductCostsNew.getNoCostsExportProportion()));
+
         //存储部门id与用户id
         InsOrders order = insOrdersService.getById(insAreaCompany.getOrderno());
         InsFeeOrderNew insFeeOrderNewByCompanyId = insFeeOrderNewService.getInsFeeOrderNewByCompanyId(insAreaCompany.getId());
@@ -191,204 +195,38 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 
         //region 计算入口费用
 
-        //交强险总费用比例 + 加投比例
-        insFeeOrderNew.setJqCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getJqCostsProportion()));
-        BigDecimal jqCostsProportion = new BigDecimal(ptlAgreementProductCostsNew.getJqCostsProportion());
-        jqCostsProportion = isContainNonCar(insAreaCompany) ?
-                jqCostsProportion.add(new BigDecimal(ptlAgreementProductCostsNew.getJqCostsProportionAddInvsestment())).divide(new BigDecimal("100")) :
-                jqCostsProportion.divide(new BigDecimal("100"));
-        insFeeOrderNew.setJqCostsPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(jqCostsProportion));
-
-
-
-        //商业险总费用比例 + 加投比例
-        insFeeOrderNew.setSyCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportion()));
-        BigDecimal syCostsProportion = new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportion());
-        syCostsProportion = isContainNonCar(insAreaCompany) ?
-                syCostsProportion.add(new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportionAddInvsestment())).divide(new BigDecimal("100")) :
-                syCostsProportion.divide(new BigDecimal("100"));
-        insFeeOrderNew.setSyCostsPremiums(insFeeOrderNew.getSyNoTaxPremium().multiply(syCostsProportion));
-
-        //非车险总费用比例
-        insFeeOrderNew.setNoCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getNoCostsProportion()));
-        insFeeOrderNew.setNoCostsPremiums(insFeeOrderNew.getNoNoTaxPremium().multiply
-                (new BigDecimal(ptlAgreementProductCostsNew.getNoCostsProportion()).divide(new BigDecimal("100"))));
-
-
-
-        //交强监管费比例
-        insFeeOrderNew.setJqSuperviseCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getJqCarCostsProportion()));
-        insFeeOrderNew.setJqSuperviseCostsPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(
-                new BigDecimal(ptlAgreementProductCostsNew.getJqCarCostsProportion()).divide(new BigDecimal("100"))
-        ));
-
-        //商业监管费比例
-        insFeeOrderNew.setSySuperviseCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getSyCarCostsProportion()));
-        insFeeOrderNew.setSySuperviseCostsPremiums(insFeeOrderNew.getSyNoTaxPremium().multiply(
-                new BigDecimal(ptlAgreementProductCostsNew.getSyCarCostsProportion()).divide(new BigDecimal("100"))
-        ));
-
-        //非车监管费比例
-        insFeeOrderNew.setNoSuperviseCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getNoCarCostsProportion()));
-        insFeeOrderNew.setNoSuperviseCostsPremiums(insFeeOrderNew.getNoNoTaxPremium().multiply(
-                new BigDecimal(ptlAgreementProductCostsNew.getNoCarCostsProportion()).divide(new BigDecimal("100"))
-        ));
-
-
-        //交强其他费用比例
-        insFeeOrderNew.setJqOtherCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getJqCarOtherCostsProportion()));
-        insFeeOrderNew.setJqOtherCostsPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(
-                new BigDecimal(ptlAgreementProductCostsNew.getJqCarOtherCostsProportion()).divide(new BigDecimal("100"))
-        ));
-
-        //商业其他费用比例
-        insFeeOrderNew.setSyOtherCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getSyCarOtherCostsProportion()));
-        insFeeOrderNew.setSyOtherCostsPremiums(insFeeOrderNew.getSyNoTaxPremium().multiply(
-                new BigDecimal(ptlAgreementProductCostsNew.getSyCarOtherCostsProportion()).divide(new BigDecimal("100"))
-        ));
-
-        //非车其他费用比例
-        insFeeOrderNew.setNoOtherCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getNoCarOtherCostsProportion()));
-        insFeeOrderNew.setNoOtherCostsPremiums(insFeeOrderNew.getNoNoTaxPremium().multiply(
-                new BigDecimal(ptlAgreementProductCostsNew.getNoCarOtherCostsProportion()).divide(new BigDecimal("100"))
-        ));
-
-
-        //交强加投比例
-        insFeeOrderNew.setJqInvestmentCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getJqCostsProportionAddInvsestment()));
-        insFeeOrderNew.setJqInvestmentCostsPremiums(insFeeOrderNew.getJqNoTaxPremium().multiply(
-                new BigDecimal(ptlAgreementProductCostsNew.getJqCostsProportionAddInvsestment()).divide(new BigDecimal("100"))
-        ));
-
-        //商业加投比例
-        insFeeOrderNew.setSyInvestmentCostsProportion(new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportionAddInvsestment()));
-        insFeeOrderNew.setSyInvestmentCostsPremiums(insFeeOrderNew.getSyNoTaxPremium().multiply(
-                new BigDecimal(ptlAgreementProductCostsNew.getSyCostsProportionAddInvsestment()).divide(new BigDecimal("100"))
-        ));
-        //endregion
-
-        //region 设置出口费用
-        //设置出口费用
-        //每级的加投费用为 计算出每级管理费的占比   *   加投费用
-        //(一级管理费比例 / 总费用比例) * 加投费用
-        BigDecimal jqInvestmentCostsLevel1 = new BigDecimal(0);
-        BigDecimal jqInvestmentCostsLevel2 = new BigDecimal(0);
-        BigDecimal jqInvestmentCostsLevel3 = new BigDecimal(0);
-        BigDecimal jqInvestmentCostsLevel4 = new BigDecimal(0);
-        BigDecimal jqInvestmentCostsLevel5 = new BigDecimal(0);
-        BigDecimal syInvestmentCostsLevel1 = new BigDecimal(0);
-        BigDecimal syInvestmentCostsLevel2 = new BigDecimal(0);
-        BigDecimal syInvestmentCostsLevel3 = new BigDecimal(0);
-        BigDecimal syInvestmentCostsLevel4 = new BigDecimal(0);
-        BigDecimal syInvestmentCostsLevel5 = new BigDecimal(0);
-        if(insFeeOrderNew.getJqInvestmentCostsProportion().compareTo(BigDecimal.ZERO) != 0)
-        {
-            jqInvestmentCostsLevel1 =  ptlAgreementProductCostsExport.getJqExportRadioLevel1().divide(insFeeOrderNew.getJqCostsProportion()).multiply(insFeeOrderNew.getJqInvestmentCostsPremiums());
-            jqInvestmentCostsLevel2 =  ptlAgreementProductCostsExport.getJqExportRadioLevel2().divide(insFeeOrderNew.getJqCostsProportion()).multiply(insFeeOrderNew.getJqInvestmentCostsPremiums());
-            jqInvestmentCostsLevel3 =  ptlAgreementProductCostsExport.getJqExportRadioLevel3().divide(insFeeOrderNew.getJqCostsProportion()).multiply(insFeeOrderNew.getJqInvestmentCostsPremiums());
-            jqInvestmentCostsLevel4 =  ptlAgreementProductCostsExport.getJqExportRadioLevel4().divide(insFeeOrderNew.getJqCostsProportion()).multiply(insFeeOrderNew.getJqInvestmentCostsPremiums());
-            jqInvestmentCostsLevel5 =  ptlAgreementProductCostsExport.getJqExportRadioLevel5().divide(insFeeOrderNew.getJqCostsProportion()).multiply(insFeeOrderNew.getJqInvestmentCostsPremiums());
-        }
-        if(insFeeOrderNew.getSyInvestmentCostsProportion().compareTo(BigDecimal.ZERO) != 0)
-        {
-            syInvestmentCostsLevel1 =  ptlAgreementProductCostsExport.getSyExportRadioLevel1().divide(insFeeOrderNew.getSyCostsProportion()).multiply(insFeeOrderNew.getSyInvestmentCostsPremiums());
-            syInvestmentCostsLevel2 =  ptlAgreementProductCostsExport.getSyExportRadioLevel2().divide(insFeeOrderNew.getSyCostsProportion()).multiply(insFeeOrderNew.getSyInvestmentCostsPremiums());
-            syInvestmentCostsLevel3 =  ptlAgreementProductCostsExport.getSyExportRadioLevel3().divide(insFeeOrderNew.getSyCostsProportion()).multiply(insFeeOrderNew.getSyInvestmentCostsPremiums());
-            syInvestmentCostsLevel4 =  ptlAgreementProductCostsExport.getSyExportRadioLevel4().divide(insFeeOrderNew.getSyCostsProportion()).multiply(insFeeOrderNew.getSyInvestmentCostsPremiums());
-            syInvestmentCostsLevel5 =  ptlAgreementProductCostsExport.getSyExportRadioLevel5().divide(insFeeOrderNew.getSyCostsProportion()).multiply(insFeeOrderNew.getSyInvestmentCostsPremiums());
-        }
-
-
-        //交强管理比例
-        insFeeOrderNew.setJqDeptProportionLevel1(ptlAgreementProductCostsExport.getJqExportRadioLevel1());
-        insFeeOrderNew.setJqDeptPremiumsLevel1(
-                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel1()).divide(new BigDecimal("100")).add(jqInvestmentCostsLevel1)
-        );
-
-        insFeeOrderNew.setJqDeptProportionLevel2(ptlAgreementProductCostsExport.getJqExportRadioLevel2());
-        insFeeOrderNew.setJqDeptPremiumsLevel2(
-                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel2()).divide(new BigDecimal("100")).add(jqInvestmentCostsLevel2)
-        );
-
-        insFeeOrderNew.setJqDeptProportionLevel3(ptlAgreementProductCostsExport.getJqExportRadioLevel3());
-        insFeeOrderNew.setJqDeptPremiumsLevel3(
-                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel3()).divide(new BigDecimal("100")).add(jqInvestmentCostsLevel3)
-        );
-
-        insFeeOrderNew.setJqDeptProportionLevel4(ptlAgreementProductCostsExport.getJqExportRadioLevel4());
-        insFeeOrderNew.setJqDeptPremiumsLevel4(
-                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel4()).divide(new BigDecimal("100")).add(jqInvestmentCostsLevel4)
-        );
-
-        insFeeOrderNew.setJqDeptProportionLevel5(ptlAgreementProductCostsExport.getJqExportRadioLevel5());
-        insFeeOrderNew.setJqDeptPremiumsLevel5(
-                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel5()).divide(new BigDecimal("100")).add(jqInvestmentCostsLevel5)
-        );
-
-//        insFeeOrderNew.setJqExportInvestmentProportion(ptlAgreementProductCostsExport.getJqExportInvestmentRadio());
-//        insFeeOrderNew.setJqExportInvestmentPremiums(
-//                insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqExportInvestmentProportion()).divide(new BigDecimal("100"))
-//        );
-
-        //商业管理比例
-        insFeeOrderNew.setSyDeptProportionLevel1(ptlAgreementProductCostsExport.getSyExportRadioLevel1());
-        insFeeOrderNew.setSyDeptPremiumsLevel1(
-                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel1()).divide(new BigDecimal("100")).add(syInvestmentCostsLevel1)
-        );
-
-        insFeeOrderNew.setSyDeptProportionLevel2(ptlAgreementProductCostsExport.getSyExportRadioLevel2());
-        insFeeOrderNew.setSyDeptPremiumsLevel2(
-                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel2()).divide(new BigDecimal("100")).add(syInvestmentCostsLevel2)
-        );
-
-        insFeeOrderNew.setSyDeptProportionLevel3(ptlAgreementProductCostsExport.getSyExportRadioLevel3());
-        insFeeOrderNew.setSyDeptPremiumsLevel3(
-                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel3()).divide(new BigDecimal("100")).add(syInvestmentCostsLevel3)
-        );
-
-
-        insFeeOrderNew.setSyDeptProportionLevel4(ptlAgreementProductCostsExport.getSyExportRadioLevel4());
-        insFeeOrderNew.setSyDeptPremiumsLevel4(
-                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel4()).divide(new BigDecimal("100")).add(syInvestmentCostsLevel4)
-        );
-
-        insFeeOrderNew.setSyDeptProportionLevel5(ptlAgreementProductCostsExport.getSyExportRadioLevel5());
-        insFeeOrderNew.setSyDeptPremiumsLevel5(
-                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyDeptProportionLevel5()).divide(new BigDecimal("100")).add(syInvestmentCostsLevel5)
-        );
-
-//        insFeeOrderNew.setSyExportInvestmentProportion(ptlAgreementProductCostsExport.getSyExportInvestmentRadio());
-//        insFeeOrderNew.setSyExportInvestmentPremiums(
-//                insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSyExportInvestmentProportion()).divide(new BigDecimal("100"))
-//        );
-
-
-        //非车管理比例
-        insFeeOrderNew.setNoDeptProportionLevel1(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1());
-        insFeeOrderNew.setNoDeptPremiumsLevel1(
-                insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel1()).divide(new BigDecimal("100"))
-        );
-
-        insFeeOrderNew.setNoDeptProportionLevel2(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2());
-        insFeeOrderNew.setNoDeptPremiumsLevel2(
-                insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel2()).divide(new BigDecimal("100"))
-        );
-
-        insFeeOrderNew.setNoDeptProportionLevel3(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3());
-        insFeeOrderNew.setNoDeptPremiumsLevel3(
-                insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel3()).divide(new BigDecimal("100"))
-        );
-
-
-        insFeeOrderNew.setNoDeptProportionLevel4(ptlAgreementProductCostsExport.getNoCarExportRadioLevel4());
-        insFeeOrderNew.setNoDeptPremiumsLevel4(
-                insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel4()).divide(new BigDecimal("100"))
-        );
-
-        insFeeOrderNew.setNoDeptProportionLevel5(ptlAgreementProductCostsExport.getNoCarExportRadioLevel5());
-        insFeeOrderNew.setNoDeptPremiumsLevel5(
-                insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel5()).divide(new BigDecimal("100"))
-        );
+        //交强入口信息
+        FeeOrderNewVo.EntranceFee jqEntranceFee = feeRuleSchemeService.calcEntranceFee(insFeeOrderNew.getJqPremium(),
+                new BigDecimal(ptlAgreementProductCostsNew.getJqCarCostsProportion()),
+                new BigDecimal(ptlAgreementProductCostsNew.getJqCarOtherCostsProportion()), taxRadio);
+        insFeeOrderNew.setJqCostsProportion(jqEntranceFee.getTotalProportion());
+        insFeeOrderNew.setJqCostsPremiums(jqEntranceFee.getTotalAmount());
+        insFeeOrderNew.setJqSuperviseCostsProportion(jqEntranceFee.getSuperviseCosts());
+        insFeeOrderNew.setJqSuperviseCostsPremiums(jqEntranceFee.getSuperviseCostsPremiums());
+        insFeeOrderNew.setJqOtherCostsProportion(jqEntranceFee.getOtherCostsProportion());
+        insFeeOrderNew.setJqOtherCostsPremiums(jqEntranceFee.getOtherCostsPremiums());
+
+        //商业入口信息
+        FeeOrderNewVo.EntranceFee syEntranceFee = feeRuleSchemeService.calcEntranceFee(insFeeOrderNew.getSyPremium(),
+                new BigDecimal(ptlAgreementProductCostsNew.getSyCarCostsProportion()),
+                new BigDecimal(ptlAgreementProductCostsNew.getSyCarOtherCostsProportion()), taxRadio);
+        insFeeOrderNew.setSyCostsProportion(syEntranceFee.getTotalProportion());
+        insFeeOrderNew.setSyCostsPremiums(syEntranceFee.getTotalAmount());
+        insFeeOrderNew.setSySuperviseCostsProportion(syEntranceFee.getSuperviseCosts());
+        insFeeOrderNew.setSySuperviseCostsPremiums(syEntranceFee.getSuperviseCostsPremiums());
+        insFeeOrderNew.setSyOtherCostsProportion(syEntranceFee.getOtherCostsProportion());
+        insFeeOrderNew.setSyOtherCostsPremiums(syEntranceFee.getOtherCostsPremiums());
+
+        //非车入口信息
+        FeeOrderNewVo.EntranceFee noEntranceFee = feeRuleSchemeService.calcEntranceFee(insFeeOrderNew.getNoPremium(),
+                new BigDecimal(ptlAgreementProductCostsNew.getNoCarCostsProportion()),
+                new BigDecimal(ptlAgreementProductCostsNew.getNoCarOtherCostsProportion()), taxRadio);
+        insFeeOrderNew.setNoCostsProportion(noEntranceFee.getTotalProportion());
+        insFeeOrderNew.setNoCostsPremiums(noEntranceFee.getTotalAmount());
+        insFeeOrderNew.setNoSuperviseCostsProportion(noEntranceFee.getSuperviseCosts());
+        insFeeOrderNew.setNoSuperviseCostsPremiums(noEntranceFee.getSuperviseCostsPremiums());
+        insFeeOrderNew.setNoOtherCostsProportion(noEntranceFee.getOtherCostsProportion());
+        insFeeOrderNew.setNoOtherCostsPremiums(noEntranceFee.getOtherCostsPremiums());
 
         //endregion
 
@@ -400,7 +238,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         List<EsmRetail> esmRetailList = esmRetailService.selectList(" where t.deptid=? and t.status = '1' ",
                 new Object[]{sysUser.getDeptId()});
 
-
+        //分销总比例
+        BigDecimal retailRadio = new BigDecimal("0");
         if (esmRetailList != null && !esmRetailList.isEmpty()) {
             EsmRetail esmRetail = esmRetailList.get(0);
             //分销等级
@@ -412,6 +251,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 BigDecimal sumPremium = insFeeOrderNew.getJqPremium().add(insFeeOrderNew.getSyPremium()).add(insFeeOrderNew.getNoPremium());
                 if(Integer.parseInt(esmRetail.getRetailtype()) >= 3){
                     insFeeOrderNew.setThirdDetailProportion(new BigDecimal(esmRetail.getDisrate3()));
+                    retailRadio.add(insFeeOrderNew.getThirdDetailProportion());
                     insFeeOrderNew.setThirdDetailPremiums(sumPremium.multiply(new BigDecimal(esmRetail.getDisrate3())).divide(new BigDecimal("100")));
                     if(parents != null && parents.size() > 2){
                         insFeeOrderNew.setThreeLevelUserId(parents.get(2).getId());
@@ -419,6 +259,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 }
                 if(Integer.parseInt(esmRetail.getRetailtype()) >= 2){
                     insFeeOrderNew.setSecondDetailProportion(new BigDecimal(esmRetail.getDisrate2()));
+                    retailRadio.add(insFeeOrderNew.getSecondDetailProportion());
                     insFeeOrderNew.setSecondDetailPremiums(sumPremium.multiply(new BigDecimal(esmRetail.getDisrate2())).divide(new BigDecimal("100")));
                     if(parents != null && parents.size() > 1){
                         insFeeOrderNew.setTwoLevelUserId(parents.get(1).getId());
@@ -426,6 +267,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 }
                 if(Integer.parseInt(esmRetail.getRetailtype()) >= 1){
                     insFeeOrderNew.setFirstDetailProportion(new BigDecimal(esmRetail.getDisrate1()));
+                    retailRadio.add(insFeeOrderNew.getFirstDetailProportion());
                     insFeeOrderNew.setFirstDetailPremiums(sumPremium.multiply(new BigDecimal(esmRetail.getDisrate1())).divide(new BigDecimal("100")));
                     if(parents != null && parents.size() > 0) {
                         insFeeOrderNew.setFirstLevelUserId(parents.get(0).getId());
@@ -434,8 +276,57 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
             }
         }
 
+
+        //endregion
+
+
+        //region 设置机构管理费
+
+        //交强机构管理费
+        BigDecimal jqDeptRadio = ptlAgreementProductCostsExport.getJqExportRadioLevel1().add(ptlAgreementProductCostsExport.getJqExportRadioLevel2()).add(ptlAgreementProductCostsExport.getJqExportRadioLevel3()).add(ptlAgreementProductCostsExport.getJqExportRadioLevel4()).add(ptlAgreementProductCostsExport.getJqExportRadioLevel5());
+        FeeOrderNewVo.DeptManagerFee jqDeptManagerFee = feeRuleSchemeService.calcDeptManagerFee(insFeeOrderNew.getJqPremium(), ptlAgreementProductCostsExport.getJqExportRadioLevel1(), ptlAgreementProductCostsExport.getJqExportRadioLevel2(), ptlAgreementProductCostsExport.getJqExportRadioLevel3(), ptlAgreementProductCostsExport.getJqExportRadioLevel4(), ptlAgreementProductCostsExport.getJqExportRadioLevel5());
+        insFeeOrderNew.setJqDeptProportionLevel1(jqDeptManagerFee.getDeptProportionLevelOne());
+        insFeeOrderNew.setJqDeptPremiumsLevel1(jqDeptManagerFee.getDeptPremiumsLevelOne());
+        insFeeOrderNew.setJqDeptProportionLevel2(jqDeptManagerFee.getDeptProportionLevelTwo());
+        insFeeOrderNew.setJqDeptPremiumsLevel2(jqDeptManagerFee.getDeptPremiumsLevelTwo());
+        insFeeOrderNew.setJqDeptProportionLevel3(jqDeptManagerFee.getDeptProportionLevelThree());
+        insFeeOrderNew.setJqDeptPremiumsLevel3(jqDeptManagerFee.getDeptPremiumsLevelThree());
+        insFeeOrderNew.setJqDeptProportionLevel4(jqDeptManagerFee.getDeptProportionLevelFoure());
+        insFeeOrderNew.setJqDeptPremiumsLevel4(jqDeptManagerFee.getDeptPremiumsLevelFoure());
+        insFeeOrderNew.setJqDeptProportionLevel5(jqDeptManagerFee.getDeptProportionLevelFive());
+        insFeeOrderNew.setJqDeptPremiumsLevel5(jqDeptManagerFee.getDeptPremiumsLevelFive());
+
+        BigDecimal syDeptRadio = ptlAgreementProductCostsExport.getSyExportRadioLevel1().add(ptlAgreementProductCostsExport.getSyExportRadioLevel2()).add(ptlAgreementProductCostsExport.getSyExportRadioLevel3()).add(ptlAgreementProductCostsExport.getSyExportRadioLevel4()).add(ptlAgreementProductCostsExport.getSyExportRadioLevel5());
+        FeeOrderNewVo.DeptManagerFee syDeptManagerFee = feeRuleSchemeService.calcDeptManagerFee(insFeeOrderNew.getSyPremium(), ptlAgreementProductCostsExport.getSyExportRadioLevel1(), ptlAgreementProductCostsExport.getSyExportRadioLevel2(), ptlAgreementProductCostsExport.getSyExportRadioLevel3(), ptlAgreementProductCostsExport.getSyExportRadioLevel4(), ptlAgreementProductCostsExport.getSyExportRadioLevel5());
+        insFeeOrderNew.setSyDeptProportionLevel1(syDeptManagerFee.getDeptProportionLevelOne());
+        insFeeOrderNew.setSyDeptPremiumsLevel1(syDeptManagerFee.getDeptPremiumsLevelOne());
+        insFeeOrderNew.setSyDeptProportionLevel2(syDeptManagerFee.getDeptProportionLevelTwo());
+        insFeeOrderNew.setSyDeptPremiumsLevel2(syDeptManagerFee.getDeptPremiumsLevelTwo());
+        insFeeOrderNew.setSyDeptProportionLevel3(syDeptManagerFee.getDeptProportionLevelThree());
+        insFeeOrderNew.setSyDeptPremiumsLevel3(syDeptManagerFee.getDeptPremiumsLevelThree());
+        insFeeOrderNew.setSyDeptProportionLevel4(syDeptManagerFee.getDeptProportionLevelFoure());
+        insFeeOrderNew.setSyDeptPremiumsLevel4(syDeptManagerFee.getDeptPremiumsLevelFoure());
+        insFeeOrderNew.setSyDeptProportionLevel5(syDeptManagerFee.getDeptProportionLevelFive());
+        insFeeOrderNew.setSyDeptPremiumsLevel5(syDeptManagerFee.getDeptPremiumsLevelFive());
+
+        BigDecimal noDeptRadio = ptlAgreementProductCostsExport.getNoCarExportRadioLevel1().add(ptlAgreementProductCostsExport.getNoCarExportRadioLevel2()).add(ptlAgreementProductCostsExport.getNoCarExportRadioLevel3()).add(ptlAgreementProductCostsExport.getNoCarExportRadioLevel4()).add(ptlAgreementProductCostsExport.getNoCarExportRadioLevel5());
+        FeeOrderNewVo.DeptManagerFee noDeptManagerFee = feeRuleSchemeService.calcDeptManagerFee(insFeeOrderNew.getNoPremium(), ptlAgreementProductCostsExport.getNoCarExportRadioLevel1(), ptlAgreementProductCostsExport.getNoCarExportRadioLevel2(), ptlAgreementProductCostsExport.getNoCarExportRadioLevel3(), ptlAgreementProductCostsExport.getNoCarExportRadioLevel4(), ptlAgreementProductCostsExport.getNoCarExportRadioLevel5());
+        insFeeOrderNew.setNoDeptProportionLevel1(noDeptManagerFee.getDeptProportionLevelOne());
+        insFeeOrderNew.setNoDeptPremiumsLevel1(noDeptManagerFee.getDeptPremiumsLevelOne());
+        insFeeOrderNew.setNoDeptProportionLevel2(noDeptManagerFee.getDeptProportionLevelTwo());
+        insFeeOrderNew.setNoDeptPremiumsLevel2(noDeptManagerFee.getDeptPremiumsLevelTwo());
+        insFeeOrderNew.setNoDeptProportionLevel3(noDeptManagerFee.getDeptProportionLevelThree());
+        insFeeOrderNew.setNoDeptPremiumsLevel3(noDeptManagerFee.getDeptPremiumsLevelThree());
+        insFeeOrderNew.setNoDeptProportionLevel4(noDeptManagerFee.getDeptProportionLevelFoure());
+        insFeeOrderNew.setNoDeptPremiumsLevel4(noDeptManagerFee.getDeptPremiumsLevelFoure());
+        insFeeOrderNew.setNoDeptProportionLevel5(noDeptManagerFee.getDeptProportionLevelFive());
+        insFeeOrderNew.setNoDeptPremiumsLevel5(noDeptManagerFee.getDeptPremiumsLevelFive());
+
         //endregion
 
+
+
+
         insFeeOrderNewService.saveOrUpdate(insFeeOrderNew);
     }
 
@@ -526,6 +417,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 
 
     private boolean verificationRules(List<PtlAgreementUndwrtRulesNew> ptlAgreementUndwrtRulesNews,InsAreaCompany insAreaCompany,InsOrders insOrders){
+
+        StringBuilder logs = new StringBuilder();
         //匹配承保规则
         //获取所有承保规则属性
         List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList = ptlAgreementUndwrtRulesAttrService.getUndwrtRulesAttrList();
@@ -535,10 +428,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 
         for (int i = 0; i < ptlAgreementUndwrtRulesNews.size(); i++) {
             //判断是否匹配
-            System.out.printf("费用因子匹配开始:" + ptlAgreementUndwrtRulesNews.get(i).getId() + "\n");
-            System.out.println("费用因子备注:" + ptlAgreementUndwrtRulesNews.get(i).getRuleDescription() + "\n");
-            if (!judgementsRules(ptlAgreementUndwrtRulesNews.get(i).getRulesAttrList(), undwrtRulesAttrList, ruleAttrMappingVoList)) {
-                throw new SystemException("承保规则校验失败");
+            if (!judgementsRules(ptlAgreementUndwrtRulesNews.get(i).getRulesAttrList(), undwrtRulesAttrList, ruleAttrMappingVoList, logs)) {
+                throw new SystemException(logs.toString());
             }
         }
         return true;
@@ -608,7 +499,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
      * @return
      */
     private boolean judgementsRules(List<PtlAgreementUndwrtRulesAttrLink> ptlAgreementUndwrtRulesAttrLinks,
-                                    List<PtlAgreementUndwrtRulesAttr> rulesAttrs, List<RuleAttrMappingVo> ruleAttrMappingVoList){
+                                    List<PtlAgreementUndwrtRulesAttr> rulesAttrs, List<RuleAttrMappingVo> ruleAttrMappingVoList,
+                                    StringBuilder logs){
         boolean useFlag = true;
 
         for(int i=0;i<ptlAgreementUndwrtRulesAttrLinks.size();i++){
@@ -620,9 +512,6 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 
             //如果查找不到 传值属性 直接费用对比失败
             if(ruleAttrMappingVo == null) {
-                System.out.printf("规则匹配失败:" + ptlAgreementUndwrtRulesAttrLinks.get(i).getAttrCode() + "\n");
-                System.out.printf("传入的值找不到该属性:" + ptlAgreementUndwrtRulesAttrLinks.get(finalI).getAttrCode() + "\n");
-                //找不到属性则直接跳过该条承保规则
                 return true;
             }
             //查找 费用因子规则
@@ -646,15 +535,11 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
             useFlag = attrEqual(ptlAgreementUndwrtRulesAttrLinks.get(i), ptlAgreementUndwrtRulesAttr, ruleAttrMappingVo.getValue());
             if(useFlag){
                 return true;
+            }else{
+                logs.append("规则匹配失败:" + ptlAgreementUndwrtRulesAttrLinks.get(i).getAttrCode() + "\n");
+                logs.append("校验的值:" + ptlAgreementUndwrtRulesAttrLinks.get(i).getMin() + "\n");
+                logs.append("传入的值:" + ruleAttrMappingVo.getValue());
             }
-//            if(!useFlag)
-//            {
-//                System.out.printf("规则匹配失败:" + ptlAgreementUndwrtRulesAttrLinks.get(i).getAttrCode() + "\n");
-//                System.out.printf("检验的值:" + ptlAgreementUndwrtRulesAttrLinks.get(i).getMin() + "\n");
-//                System.out.printf("传入的值:" + ruleAttrMappingVo.getValue() + "\n");
-//                return false;
-//
-//            }
         }
         return useFlag;
     }