Răsfoiți Sursa

修改出口费率 入口费率是否加税调整

785834757 2 ani în urmă
părinte
comite
deee35ba69

+ 91 - 74
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java

@@ -2631,39 +2631,13 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         jqEntranceFee.setInsuranceType("交强险");  // 险种
         jqEntranceFee.setPremium(insFeeOrderNew.getJqPremium());  //保费
         jqEntranceFee.setTotalAmount(insFeeOrderNew.getJqCostsPremiums());   //总费用
-        jqEntranceFee.setTotalProportion(insFeeOrderNew.getJqCostsProportion()); //总保费
+        jqEntranceFee.setTotalProportion(insFeeOrderNew.getJqCostsProportion()); //总比例
         jqEntranceFee.setSySuperviseCostsPremiums(insFeeOrderNew.getJqSuperviseCostsPremiums());   //手续费
         jqEntranceFee.setOtherCostsProportion(insFeeOrderNew.getJqOtherCostsProportion());   // 跟单比例
         jqEntranceFee.setOtherCostsPremiums(insFeeOrderNew.getJqOtherCostsPremiums());      // 跟单费
         jqEntranceFee.setSuperviseCosts(insFeeOrderNew.getJqSuperviseCostsProportion());  // 手续费比例
         entranceFeeList.add(jqEntranceFee);
 
-        //出口费用
-        jqExportFee.setInsuranceType("交强险");  // 险种
-        BigDecimal sumJqDeptPremiums = insFeeOrderNew.getJqDeptPremiumsLevel1()
-                .add(insFeeOrderNew.getJqDeptPremiumsLevel2())
-                .add(insFeeOrderNew.getJqDeptPremiumsLevel3())
-                .add(insFeeOrderNew.getJqDeptPremiumsLevel4())
-                .add(insFeeOrderNew.getJqDeptPremiumsLevel5());
-        BigDecimal jqProportion = insFeeOrderNew.getJqDeptProportionLevel1()
-                .add(insFeeOrderNew.getJqDeptProportionLevel2())
-                .add(insFeeOrderNew.getJqDeptProportionLevel3())
-                .add(insFeeOrderNew.getJqDeptProportionLevel4())
-                .add(insFeeOrderNew.getJqDeptProportionLevel5());
-        jqExportFee.setTotalAmount(sumJqDeptPremiums);
-        jqExportFee.setTotalProportion(jqProportion);
-        if(sumJqDeptPremiums.compareTo(new BigDecimal(4)) > 0) {
-            jqExportFee.setSuperviseCosts(new BigDecimal(4));
-            jqExportFee.setSuperviseCostsPremiums(insFeeOrderNew.getJqPremium().multiply(new BigDecimal(4).divide(new BigDecimal(100))));
-            jqExportFee.setOtherCostsProportion(jqProportion.subtract(new BigDecimal(4)));
-            jqExportFee.setOtherCostsPremiums(sumJqDeptPremiums.subtract(jqExportFee.getSuperviseCostsPremiums()));
-        }else{
-            jqExportFee.setSuperviseCosts(jqProportion);
-            jqExportFee.setSuperviseCostsPremiums(sumJqDeptPremiums);
-            jqExportFee.setOtherCostsProportion(new BigDecimal(0));
-            jqExportFee.setOtherCostsPremiums(new BigDecimal(0));
-        }
-        exportFeeList.add(jqExportFee);
 
         // 机构管理费
         jqDeptManagerFee.setInsuranceType("交强险");
@@ -2679,6 +2653,44 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         jqDeptManagerFee.setDeptPremiumsLevelFive(insFeeOrderNew.getJqDeptPremiumsLevel5());
         deptManagerFeeList.add(jqDeptManagerFee);
 
+        //交强机构管理费总数
+        BigDecimal jqAllDeptManagerFee = jqDeptManagerFee.getDeptProportionLevelOne().add(jqDeptManagerFee.getDeptProportionLevelTwo())
+                .add(jqDeptManagerFee.getDeptProportionLevelThree())
+                .add(jqDeptManagerFee.getDeptProportionLevelFoure())
+                .add(jqDeptManagerFee.getDeptProportionLevelFive());
+        //交强机构管理比例
+        BigDecimal jqAllDeptManagerProportion = jqDeptManagerFee.getDeptPremiumsLevelOne().add(jqDeptManagerFee.getDeptPremiumsLevelTwo())
+                .add(jqDeptManagerFee.getDeptPremiumsLevelThree())
+                .add(jqDeptManagerFee.getDeptPremiumsLevelFoure())
+                .add(jqDeptManagerFee.getDeptPremiumsLevelFive());
+
+        //出口费用
+        jqExportFee.setInsuranceType("交强险");  // 险种
+        BigDecimal sumJqDeptProportion = insFeeOrderNew.getJqDeptProportionLevel1()
+                .add(insFeeOrderNew.getJqDeptProportionLevel2())
+                .add(insFeeOrderNew.getJqDeptProportionLevel3())
+                .add(insFeeOrderNew.getJqDeptProportionLevel4())
+                .add(insFeeOrderNew.getJqDeptProportionLevel5());
+
+        //交强总出口费比例
+        BigDecimal jqExportTotalProportion = jqEntranceFee.getTotalProportion().subtract(sumJqDeptProportion);
+
+        //交强出口手续费比例
+        BigDecimal jqExportSuperviseCosts = jqExportTotalProportion.compareTo(new BigDecimal(4)) > 0 ? new BigDecimal(4.00) : jqExportTotalProportion;
+
+        //交强出口其他费比例
+        BigDecimal jqOtherCostsProportion = jqExportTotalProportion.compareTo(new BigDecimal(4)) > 0 ? jqExportTotalProportion.subtract(jqExportSuperviseCosts) : new BigDecimal(0);
+
+        jqExportFee.setSuperviseCosts(jqExportSuperviseCosts);
+        jqExportFee.setSuperviseCostsPremiums(insFeeOrderNew.getJqPremium().multiply(jqExportSuperviseCosts.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
+        jqExportFee.setOtherCostsProportion(jqOtherCostsProportion);
+        jqExportFee.setOtherCostsPremiums(insFeeOrderNew.getJqPremium().multiply(jqOtherCostsProportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
+        jqExportFee.setTotalProportion(jqExportFee.getSuperviseCosts().add(jqExportFee.getOtherCostsProportion()));
+        jqExportFee.setTotalAmount(jqExportFee.getSuperviseCostsPremiums().add(jqExportFee.getOtherCostsPremiums()));
+        exportFeeList.add(jqExportFee);
+
+
+
 
         //商业入口
         syEntranceFee.setInsuranceType("商业险");  // 险种
@@ -2691,30 +2703,6 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         syEntranceFee.setSuperviseCosts(insFeeOrderNew.getSySuperviseCostsProportion());  // 手续费比例
         entranceFeeList.add(syEntranceFee);
 
-        //商业出口
-        syExportFee.setInsuranceType("商业险");  // 险种
-        BigDecimal sumSyDeptPremiums = insFeeOrderNew.getSyDeptPremiumsLevel1()
-                .add(insFeeOrderNew.getSyDeptPremiumsLevel2())
-                .add(insFeeOrderNew.getSyDeptPremiumsLevel3())
-                .add(insFeeOrderNew.getSyDeptPremiumsLevel4())
-                .add(insFeeOrderNew.getSyDeptPremiumsLevel5());
-        BigDecimal syProportion = insFeeOrderNew.getSyPremium().multiply(sumSyDeptPremiums);
-        syExportFee.setTotalAmount(sumSyDeptPremiums);
-        syExportFee.setTotalProportion(syProportion);
-        if(sumSyDeptPremiums.compareTo(new BigDecimal(4)) > 0) {
-            syExportFee.setSuperviseCosts(new BigDecimal(4));
-            syExportFee.setSuperviseCostsPremiums(insFeeOrderNew.getSyPremium().multiply(new BigDecimal(4).divide(new BigDecimal(100))));
-            syExportFee.setOtherCostsProportion(syProportion.subtract(new BigDecimal(4)));
-            syExportFee.setOtherCostsPremiums(sumSyDeptPremiums.subtract(syExportFee.getSuperviseCostsPremiums()));
-        }else{
-            syExportFee.setSuperviseCosts(syProportion);
-            syExportFee.setSuperviseCostsPremiums(sumSyDeptPremiums);
-            syExportFee.setOtherCostsProportion(syProportion.subtract(new BigDecimal(0)));
-            syExportFee.setOtherCostsPremiums(sumSyDeptPremiums.subtract(new BigDecimal(0)));
-        }
-        exportFeeList.add(syExportFee);
-
-
         // 商业管理费
         syDeptManagerFee.setInsuranceType("商业险");
         syDeptManagerFee.setDeptProportionLevelOne(insFeeOrderNew.getSyDeptProportionLevel1());
@@ -2729,6 +2717,33 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         syDeptManagerFee.setDeptPremiumsLevelFive(insFeeOrderNew.getSyDeptPremiumsLevel5());
         deptManagerFeeList.add(syDeptManagerFee);
 
+        //商业出口
+        syExportFee.setInsuranceType("商业险");  // 险种
+        BigDecimal sumSyDeptProportion = insFeeOrderNew.getSyDeptProportionLevel1()
+                .add(insFeeOrderNew.getSyDeptProportionLevel2())
+                .add(insFeeOrderNew.getSyDeptProportionLevel3())
+                .add(insFeeOrderNew.getSyDeptProportionLevel4())
+                .add(insFeeOrderNew.getSyDeptProportionLevel5());
+
+        //商业总出口费比例
+        BigDecimal syExportTotalProportion = syEntranceFee.getTotalProportion().subtract(sumSyDeptProportion);
+
+        //商业出口手续费比例
+        BigDecimal syExportSuperviseCosts = jqExportTotalProportion.compareTo(new BigDecimal(4)) > 0 ? new BigDecimal(4.00) : jqExportTotalProportion;
+
+        //商业出口其他费比例
+        BigDecimal syOtherCostsProportion = syExportTotalProportion.compareTo(new BigDecimal(4)) > 0 ? syExportTotalProportion.subtract(syExportSuperviseCosts) : new BigDecimal(0);
+
+        syExportFee.setSuperviseCosts(syExportSuperviseCosts);
+        syExportFee.setSuperviseCostsPremiums(insFeeOrderNew.getSyPremium().multiply(syExportSuperviseCosts.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
+        syExportFee.setOtherCostsProportion(syOtherCostsProportion);
+        syExportFee.setOtherCostsPremiums(insFeeOrderNew.getSyPremium().multiply(syOtherCostsProportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
+        syExportFee.setTotalProportion(syExportFee.getSuperviseCosts().add(syExportFee.getOtherCostsProportion()));
+        syExportFee.setTotalAmount(syExportFee.getSuperviseCostsPremiums().add(syExportFee.getOtherCostsPremiums()));
+        exportFeeList.add(syExportFee);
+
+
+
 
         //非车入口
         nonEntranceFee.setInsuranceType("非车险");  // 险种
@@ -2741,29 +2756,6 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         nonEntranceFee.setSuperviseCosts(insFeeOrderNew.getNoSuperviseCostsProportion());  // 手续费比例
         entranceFeeList.add(nonEntranceFee);
 
-        //非车出口
-        nonExportFee.setInsuranceType("非车险");  // 险种
-        BigDecimal sumNonDeptPremiums = insFeeOrderNew.getNoDeptPremiumsLevel1()
-                .add(insFeeOrderNew.getNoDeptPremiumsLevel2())
-                .add(insFeeOrderNew.getNoDeptPremiumsLevel3())
-                .add(insFeeOrderNew.getNoDeptPremiumsLevel4())
-                .add(insFeeOrderNew.getNoDeptPremiumsLevel5());
-        BigDecimal nonProportion = insFeeOrderNew.getNoPremium().multiply(sumNonDeptPremiums);
-        nonExportFee.setTotalAmount(sumNonDeptPremiums);
-        nonExportFee.setTotalProportion(nonProportion);
-        if(sumNonDeptPremiums.compareTo(new BigDecimal(4)) > 0) {
-            nonExportFee.setSuperviseCosts(new BigDecimal(4));
-            nonExportFee.setSuperviseCostsPremiums(insFeeOrderNew.getNoPremium().multiply(new BigDecimal(4).divide(new BigDecimal(100))));
-            nonExportFee.setOtherCostsProportion(nonProportion.subtract(new BigDecimal(4)));
-            nonExportFee.setOtherCostsPremiums(sumNonDeptPremiums.subtract(nonExportFee.getSuperviseCostsPremiums()));
-        }else{
-            nonExportFee.setSuperviseCosts(nonProportion);
-            nonExportFee.setSuperviseCostsPremiums(sumNonDeptPremiums);
-            nonExportFee.setOtherCostsProportion(new BigDecimal(0));
-            nonExportFee.setOtherCostsPremiums(new BigDecimal(0));
-        }
-        exportFeeList.add(nonExportFee);
-
         // 五级管理费
         nonDeptManagerFee.setInsuranceType("非车险");
         nonDeptManagerFee.setDeptProportionLevelOne(insFeeOrderNew.getNoDeptProportionLevel1());
@@ -2779,6 +2771,31 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         deptManagerFeeList.add(nonDeptManagerFee);
 
 
+        //出口费用
+        nonExportFee.setInsuranceType("非车险");  // 险种
+        BigDecimal sumNonDeptProportion = insFeeOrderNew.getNoDeptProportionLevel1()
+                .add(insFeeOrderNew.getNoDeptProportionLevel2())
+                .add(insFeeOrderNew.getNoDeptProportionLevel3())
+                .add(insFeeOrderNew.getNoDeptProportionLevel4())
+                .add(insFeeOrderNew.getNoDeptProportionLevel5());
+
+        //非车总出口费比例
+        BigDecimal nonExportTotalProportion = nonEntranceFee.getTotalProportion().subtract(sumNonDeptProportion);
+
+        //非车出口手续费比例
+        BigDecimal nonExportSuperviseCosts = nonExportTotalProportion.compareTo(new BigDecimal(4)) > 0 ? new BigDecimal(4.00) : nonExportTotalProportion;
+
+        //非车出口其他费比例
+        BigDecimal nonOtherCostsProportion = nonExportTotalProportion.compareTo(new BigDecimal(4)) > 0 ? nonExportTotalProportion.subtract(nonExportSuperviseCosts) : new BigDecimal(0);
+
+        nonExportFee.setSuperviseCosts(nonExportSuperviseCosts);
+        nonExportFee.setSuperviseCostsPremiums(insFeeOrderNew.getNoPremium().multiply(nonExportSuperviseCosts.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
+        nonExportFee.setOtherCostsProportion(nonOtherCostsProportion);
+        nonExportFee.setOtherCostsPremiums(insFeeOrderNew.getNoPremium().multiply(nonOtherCostsProportion.divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN));
+        nonExportFee.setTotalProportion(nonExportFee.getSuperviseCosts().add(nonExportFee.getOtherCostsProportion()));
+        nonExportFee.setTotalAmount(nonExportFee.getSuperviseCostsPremiums().add(nonExportFee.getOtherCostsPremiums()));
+        exportFeeList.add(nonExportFee);
+
         feeOrderNewVo.setEntranceFee(entranceFeeList);
         feeOrderNewVo.setExportFee(exportFeeList);
         feeOrderNewVo.setDeptManagerFee(deptManagerFeeList);

+ 26 - 10
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -19,7 +19,9 @@ import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlNewCarJudgeRules;
+import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocol.service.PtlNewCarJudgeRulesService;
 import com.ydtech.modules.protocols.entity.po.*;
 import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
@@ -77,6 +79,9 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
     @Autowired
     private PtlNewCarJudgeRulesService ptlNewCarJudgeRulesService;
 
+    @Autowired
+    private PtlAgreementService ptlAgreementService;
+
 
     @Override
     public QueryOrderFeeVo queryFeeOrderInfo(String companyId) {
@@ -118,7 +123,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
             String costsId = verificationCosts(agreementProductCosts, insAreaCompany, insOrders);
             if(costsId != null) {
                 calcCosts(costsId, insAreaCompany);
-                log.debug("费用因子校验通过,子订单id:" + insAreaCompany.getId() + ",费用id:" + costsId);
+                System.out.printf("费用因子校验通过,子订单id:" + insAreaCompany.getId() + ",费用id:" + costsId);
             }
         }
     }
@@ -143,8 +148,13 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
      */
     @Override
     public void calcCosts(String costsId,InsAreaCompany insAreaCompany) {
+        //获取协议信息
+        PtlAgreement ptlAgreement = ptlAgreementService.getById(insAreaCompany.getAgreementId());
+        BigDecimal taxRadio = new BigDecimal("1.00");
+        if(ptlAgreement.getWithTax().equals("是")){
+            taxRadio = new BigDecimal("1.06");
+        }
         //税比例 固定1.06
-        BigDecimal taxRadio = new BigDecimal("1.06");
         //查找入口与出口费用比例
         //入口配置
         PtlAgreementProductCostsNew ptlAgreementProductCostsNew = ptlAgreementProductCostsNewService.getById(costsId);
@@ -246,6 +256,10 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         ));
 
 
+        //设置出口费用
+
+
+
         //设置出口费用
         //每级的加投费用为 计算出每级管理费的占比   *   加投费用
         //(一级管理费比例 / 总费用比例) * 加投费用
@@ -277,7 +291,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         }
 
 
-        //交强出口比例
+        //交强管理比例
         insFeeOrderNew.setJqDeptProportionLevel1(ptlAgreementProductCostsExport.getJqExportRadioLevel1());
         insFeeOrderNew.setJqDeptPremiumsLevel1(
                 insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqDeptProportionLevel1()).divide(new BigDecimal("100")).add(jqInvestmentCostsLevel1)
@@ -308,7 +322,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
                 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)
@@ -341,7 +355,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
         );
 
 
-        //非车出口比例
+        //非车管理比例
         insFeeOrderNew.setNoDeptProportionLevel1(ptlAgreementProductCostsExport.getNoCarExportRadioLevel1());
         insFeeOrderNew.setNoDeptPremiumsLevel1(
                 insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoDeptProportionLevel1()).divide(new BigDecimal("100"))
@@ -481,6 +495,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 //        }
         for (int i = 0; i < agreementProductCosts.size(); i++) {
             //判断是否匹配
+            System.out.printf("费用因子匹配开始:" + agreementProductCosts.get(i).getId() + "\n");
+            System.out.printf("费用因子备注:" + agreementProductCosts.get(i).getCostsDescription() + "\n");
             if (judgements(agreementProductCosts.get(i).getCostsAttrLinks(), undwrtRulesAttrList, ruleAttrMappingVoList)) {
                 //返回 费用id   如果需要匹配非车的情况  将返回值返回list 后赛选
                 return agreementProductCosts.get(i).getId();
@@ -532,8 +548,8 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 
             //如果查找不到 传值属性 直接费用对比失败
             if(ruleAttrMappingVo == null){
-                log.debug("规则匹配失败:" + ptlAgreementProductCostsAttrLinks.get(i).getAttrCode());
-                log.debug("传入的值找不到该属性:" + ptlAgreementProductCostsAttrLinks.get(finalI).getAttrCode());
+                System.out.printf("规则匹配失败:" + ptlAgreementProductCostsAttrLinks.get(i).getAttrCode()  + "\n");
+                System.out.printf("传入的值找不到该属性:" + ptlAgreementProductCostsAttrLinks.get(finalI).getAttrCode()  + "\n");
                 return false;
             }
 
@@ -542,9 +558,9 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
 
             useFlag = attrEqual(ptlAgreementProductCostsAttrLinks.get(i), ptlAgreementUndwrtRulesAttr, ruleAttrMappingVo.getValue());
             if(!useFlag){
-                log.debug("规则匹配失败:" + ptlAgreementProductCostsAttrLinks.get(i).getAttrCode());
-                log.debug("检验的值:" + ptlAgreementProductCostsAttrLinks.get(i).getMin());
-                log.debug("传入的值:" + ruleAttrMappingVo.getValue());
+                System.out.printf("规则匹配失败:" + ptlAgreementProductCostsAttrLinks.get(i).getAttrCode() + "\n");
+                System.out.printf("检验的值:" + ptlAgreementProductCostsAttrLinks.get(i).getMin() + "\n");
+                System.out.printf("传入的值:" + ruleAttrMappingVo.getValue() + "\n");
                 return false;
             }