785834757 2 سال پیش
والد
کامیت
1afce0b0ba
16فایلهای تغییر یافته به همراه1127 افزوده شده و 0 حذف شده
  1. 55 0
      src/main/java/com/ydtech/modules/fee/dto/vo/DeptManagerFee.java
  2. 31 0
      src/main/java/com/ydtech/modules/fee/dto/vo/EntranceFee.java
  3. 27 0
      src/main/java/com/ydtech/modules/fee/dto/vo/ExportFee.java
  4. 46 0
      src/main/java/com/ydtech/modules/fee/dto/vo/RetailStoreFee.java
  5. 60 0
      src/main/java/com/ydtech/modules/fee/service/CostsCalcService.java
  6. 178 0
      src/main/java/com/ydtech/modules/fee/service/impl/CostsCalServiceImpl.java
  7. 28 0
      src/main/java/com/ydtech/modules/order/entity/vo/FeeOrderNewRecordVo.java
  8. 6 0
      src/main/java/com/ydtech/modules/order/entity/vo/FeeOrderNewVo.java
  9. 1 0
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  10. 8 0
      src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java
  11. 19 0
      src/main/java/com/ydtech/modules/protocols/dao/InsFeeOrderNewRecordMapper.java
  12. 324 0
      src/main/java/com/ydtech/modules/protocols/entity/po/InsFeeOrderNewRecord.java
  13. 15 0
      src/main/java/com/ydtech/modules/protocols/service/InsFeeOrderNewRecordService.java
  14. 9 0
      src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java
  15. 22 0
      src/main/java/com/ydtech/modules/protocols/service/impl/InsFeeOrderNewRecordServiceImpl.java
  16. 298 0
      src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java

+ 55 - 0
src/main/java/com/ydtech/modules/fee/dto/vo/DeptManagerFee.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.fee.dto.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 部门管理费用
+ */
+@Data
+public class DeptManagerFee {
+    @ApiModelProperty("险种")
+    private String insuranceType;
+
+    @ApiModelProperty("总管理比例")
+    private BigDecimal deptManagerRadio;
+
+    @ApiModelProperty("总管理费")
+    private BigDecimal deptManagerFee;
+
+    @ApiModelProperty("一级管理费比例")
+    private BigDecimal deptManagerRadioLevel1;
+
+    @ApiModelProperty("二级管理费比例")
+    private BigDecimal deptManagerRadioLevel2;
+
+    @ApiModelProperty("三级管理费比例")
+    private BigDecimal deptManagerRadioLevel3;
+
+    @ApiModelProperty("四级管理费比例")
+    private BigDecimal deptManagerRadioLevel4;
+
+    @ApiModelProperty("五级管理费比例")
+    private BigDecimal deptManagerRadioLevel5;
+
+    @ApiModelProperty("一级管理费")
+    private BigDecimal deptManagerFeeLevel1;
+
+    @ApiModelProperty("二级管理费")
+    private BigDecimal deptManagerFeeLevel2;
+
+    @ApiModelProperty("三级管理费")
+    private BigDecimal deptManagerFeeLevel3;
+
+    @ApiModelProperty("四级管理费")
+    private BigDecimal deptManagerFeeLevel4;
+
+    @ApiModelProperty("五级管理费")
+    private BigDecimal deptManagerFeeLevel5;
+
+
+
+}

+ 31 - 0
src/main/java/com/ydtech/modules/fee/dto/vo/EntranceFee.java

@@ -0,0 +1,31 @@
+package com.ydtech.modules.fee.dto.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 入口费用
+ */
+@Data
+public class EntranceFee {
+    @ApiModelProperty("险种")
+    private String insuranceType;
+    @ApiModelProperty("保费")
+    private BigDecimal premium;
+    @ApiModelProperty("总比例")
+    private BigDecimal totalProportion;
+    @ApiModelProperty("总费用")
+    private BigDecimal totalAmount;
+    @ApiModelProperty("手续费比例")
+    private BigDecimal superviseCosts;
+    @ApiModelProperty("手续费")
+    private BigDecimal sySuperviseCostsPremiums;
+    @ApiModelProperty("跟单比例")
+    private BigDecimal otherCostsProportion;
+    @ApiModelProperty("跟单费")
+    private BigDecimal otherCostsPremiums;
+    @ApiModelProperty("出口手续费比例")
+    private BigDecimal exportSuperviseCosts;
+}

+ 27 - 0
src/main/java/com/ydtech/modules/fee/dto/vo/ExportFee.java

@@ -0,0 +1,27 @@
+package com.ydtech.modules.fee.dto.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 出口费用
+ */
+@Data
+public class ExportFee {
+    @ApiModelProperty("险种")
+    private String insuranceType;
+    @ApiModelProperty("总比例")
+    private BigDecimal totalProportion;
+    @ApiModelProperty("总费用")
+    private BigDecimal totalAmount;
+    @ApiModelProperty("手续费比例")
+    private BigDecimal superviseCosts;
+    @ApiModelProperty("手续费")
+    private BigDecimal superviseCostsPremiums;
+    @ApiModelProperty("跟单比例")
+    private BigDecimal otherCostsProportion;
+    @ApiModelProperty("跟单费")
+    private BigDecimal otherCostsPremiums;
+}

+ 46 - 0
src/main/java/com/ydtech/modules/fee/dto/vo/RetailStoreFee.java

@@ -0,0 +1,46 @@
+package com.ydtech.modules.fee.dto.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 分销费用
+ */
+@Data
+public class RetailStoreFee {
+    @ApiModelProperty("总分销比例")
+    private BigDecimal retailStoreRadio;
+
+    @ApiModelProperty("总分销费用")
+    private BigDecimal retailStoreFee;
+
+    @ApiModelProperty("一级分销比例")
+    private BigDecimal retailStoreRadioLevel1;
+
+    @ApiModelProperty("二级分销比例")
+    private BigDecimal retailStoreRadioLevel2;
+
+    @ApiModelProperty("三级分销比例")
+    private BigDecimal retailStoreRadioLevel3;
+
+    @ApiModelProperty("一级分销费")
+    private BigDecimal retailStoreFeeLevel1;
+
+    @ApiModelProperty("二级分销费")
+    private BigDecimal retailStoreFeeLevel2;
+
+    @ApiModelProperty("三级分销费")
+    private BigDecimal retailStoreFeeLevel3;
+
+    @ApiModelProperty("一级分销用户id")
+    private String retailStoreUserIdLevel1;
+
+    @ApiModelProperty("二级分销用户id")
+    private String retailStoreUserIdLevel2;
+
+    @ApiModelProperty("三级分销用户id")
+    private String retailStoreUserIdLevel3;
+
+}

+ 60 - 0
src/main/java/com/ydtech/modules/fee/service/CostsCalcService.java

@@ -0,0 +1,60 @@
+package com.ydtech.modules.fee.service;
+
+
+import com.ydtech.modules.fee.dto.vo.DeptManagerFee;
+import com.ydtech.modules.fee.dto.vo.EntranceFee;
+import com.ydtech.modules.fee.dto.vo.ExportFee;
+import com.ydtech.modules.fee.dto.vo.RetailStoreFee;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
+import com.ydtech.modules.order.entity.vo.QueryOrderFeeVo;
+
+import java.math.BigDecimal;
+
+/**
+ * 该类中只要包含费用的一些相关接口
+ * 跟单费用的获取、跟单费用的拆分等
+ */
+public interface CostsCalcService {
+
+    /**
+     * 计算交强入口费用
+     * @param insuranceType  险种
+     * @param jqPremium  总交强保费  去税保费
+     * @param feeRadio  手续费比例
+     * @Param documentFeeRadio 跟单比例
+     * @return
+     */
+    EntranceFee getEntranceFee(String insuranceType, BigDecimal jqPremium, BigDecimal feeRadio, BigDecimal documentFeeRadio);
+
+    /**
+     * 获取机构管理费
+     * @param insuranceType  险种
+     * @param premium   保险费用
+     * @param deptRadioLevel1 一级机构管理费比例
+     * @param deptRadioLevel2 二级机构管理费比例
+     * @param deptRadioLevel3 三级机构管理费比例
+     * @param deptRadioLevel4 四级机构管理费比例
+     * @param deptRadioLevel5 五级机构管理费比例
+     * @return
+     */
+    DeptManagerFee getDeptManagerFee(String insuranceType, BigDecimal premium, BigDecimal deptRadioLevel1, BigDecimal deptRadioLevel2, BigDecimal deptRadioLevel3, BigDecimal deptRadioLevel4, BigDecimal deptRadioLevel5);
+
+    /**
+     * 分销费用计算
+     * @param userId   出单用户id
+     * @param sumPremium   总保费
+     * @return
+     */
+    RetailStoreFee getRetailStoreFee(String userId,BigDecimal sumPremium);
+
+    /**
+     * 获取出口费用
+     * @param insuranceType 险种
+     * @param entranceFee 入口费用
+     * @param deptManagerFee 部门管理费用
+     * @param retailStoreFee 分销费用
+     * @param exportProceduresRadio 出口手续费比例
+     * @return
+     */
+    ExportFee getExportFee(String insuranceType,EntranceFee entranceFee,DeptManagerFee deptManagerFee, RetailStoreFee retailStoreFee,BigDecimal exportProceduresRadio);
+}

+ 178 - 0
src/main/java/com/ydtech/modules/fee/service/impl/CostsCalServiceImpl.java

@@ -0,0 +1,178 @@
+package com.ydtech.modules.fee.service.impl;
+
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.service.SysDeptService;
+import com.ydtech.modules.admin.service.SysUserService;
+import com.ydtech.modules.esm.model.EsmRetail;
+import com.ydtech.modules.esm.model.EsmUserReferrer;
+import com.ydtech.modules.esm.service.EsmRetailService;
+import com.ydtech.modules.esm.service.EsmUserReferrerService;
+import com.ydtech.modules.fee.dto.FeeFactorInfoDto;
+import com.ydtech.modules.fee.dto.FeeSchemeReqDto;
+import com.ydtech.modules.fee.dto.FeeSchemeResDto;
+import com.ydtech.modules.fee.dto.vo.DeptManagerFee;
+import com.ydtech.modules.fee.dto.vo.EntranceFee;
+import com.ydtech.modules.fee.dto.vo.ExportFee;
+import com.ydtech.modules.fee.dto.vo.RetailStoreFee;
+import com.ydtech.modules.fee.service.CostsCalcService;
+import com.ydtech.modules.fee.service.FeeRuleSchemeService;
+import com.ydtech.modules.ins.model.vo.CarInfoVo;
+import com.ydtech.modules.ins.model.vo.KindInfoVo;
+import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.entity.InsCopyFeeOrder;
+import com.ydtech.modules.order.entity.InsFeeOrder;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.*;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsCopyFeeOrderService;
+import com.ydtech.modules.order.service.InsFeeOrderService;
+import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRules;
+import com.ydtech.modules.protocol.entity.po.PtlNewCarJudgeRules;
+import com.ydtech.modules.protocol.service.*;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
+import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 费用接口中相关功能的实现类
+ */
+@Service
+public class CostsCalServiceImpl implements CostsCalcService {
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @Autowired
+    private EsmRetailService esmRetailService;
+
+    @Autowired
+    private EsmUserReferrerService esmUserReferrerService;
+
+    @Override
+    public EntranceFee getEntranceFee(String insuranceType, BigDecimal jqPremium, BigDecimal feeRadio, BigDecimal documentFeeRadio) {
+        EntranceFee entranceFee = new EntranceFee();
+        entranceFee.setInsuranceType(insuranceType);
+        entranceFee.setPremium(jqPremium);
+        entranceFee.setTotalProportion(feeRadio.add(documentFeeRadio));
+        entranceFee.setTotalAmount(jqPremium.multiply(feeRadio.add(documentFeeRadio).divide(new BigDecimal(100),2)).setScale(2, BigDecimal.ROUND_DOWN));
+        entranceFee.setSuperviseCosts(feeRadio);
+        entranceFee.setSySuperviseCostsPremiums(jqPremium.multiply(feeRadio.divide(new BigDecimal(100),2)).setScale(2, BigDecimal.ROUND_DOWN));
+        entranceFee.setOtherCostsProportion(documentFeeRadio);
+        entranceFee.setOtherCostsPremiums(jqPremium.multiply(documentFeeRadio.divide(new BigDecimal(100),2)).setScale(2, BigDecimal.ROUND_DOWN));
+        entranceFee.setExportSuperviseCosts(BigDecimal.ZERO);
+        return entranceFee;
+    }
+
+    @Override
+    public DeptManagerFee getDeptManagerFee(String insuranceType, BigDecimal premium, BigDecimal deptRadioLevel1, BigDecimal deptRadioLevel2, BigDecimal deptRadioLevel3, BigDecimal deptRadioLevel4, BigDecimal deptRadioLevel5) {
+        DeptManagerFee deptManagerFee = new DeptManagerFee();
+        deptManagerFee.setInsuranceType(insuranceType);
+        deptManagerFee.setDeptManagerRadioLevel1(deptRadioLevel1);
+        deptManagerFee.setDeptManagerRadioLevel2(deptRadioLevel2);
+        deptManagerFee.setDeptManagerRadioLevel3(deptRadioLevel3);
+        deptManagerFee.setDeptManagerRadioLevel4(deptRadioLevel4);
+        deptManagerFee.setDeptManagerRadioLevel5(deptRadioLevel5);
+        deptManagerFee.setDeptManagerRadio(deptRadioLevel1.add(deptRadioLevel2).add(deptRadioLevel3).add(deptRadioLevel4).add(deptRadioLevel5));
+
+        deptManagerFee.setDeptManagerFeeLevel1(premium.multiply(deptRadioLevel1.divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        deptManagerFee.setDeptManagerFeeLevel2(premium.multiply(deptRadioLevel2.divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        deptManagerFee.setDeptManagerFeeLevel3(premium.multiply(deptRadioLevel3.divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        deptManagerFee.setDeptManagerFeeLevel4(premium.multiply(deptRadioLevel4.divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        deptManagerFee.setDeptManagerFeeLevel5(premium.multiply(deptRadioLevel5.divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        deptManagerFee.setDeptManagerFee(premium.multiply(deptManagerFee.getDeptManagerRadio().divide(new BigDecimal(100))).setScale(2, BigDecimal.ROUND_DOWN));
+        return deptManagerFee;
+    }
+
+    @Override
+    public RetailStoreFee getRetailStoreFee(String userId,BigDecimal sumPremium) {
+
+        RetailStoreFee retailStoreFee = new RetailStoreFee();
+        //计算分销费用
+        SysUser sysUser = sysUserService.findByUserId(userId);
+
+        //获取分销比例
+        List<EsmRetail> esmRetailList = esmRetailService.selectList(" where t.deptid=? and t.status = '1' ",
+                new Object[]{sysUser.getDeptId()});
+
+
+        if (esmRetailList != null && !esmRetailList.isEmpty()) {
+            EsmRetail esmRetail = esmRetailList.get(0);
+            //用户分销人员id
+            List<EsmUserReferrer> parents = esmUserReferrerService.findParents(sysUser.getId());
+            if (esmRetail != null) {
+//                BigDecimal sumPremium = insFeeOrderNew.getJqPremium().add(insFeeOrderNew.getSyPremium()).add(insFeeOrderNew.getNoPremium());
+                if (Integer.parseInt(esmRetail.getRetailtype()) >= 3) {
+                    retailStoreFee.setRetailStoreRadioLevel1(new BigDecimal(esmRetail.getDisrate1()));
+                    retailStoreFee.setRetailStoreFeeLevel1(sumPremium.multiply(new BigDecimal(esmRetail.getDisrate1())).divide(new BigDecimal("100")));
+                    if (parents != null && parents.size() > 2) {
+                        retailStoreFee.setRetailStoreUserIdLevel3(parents.get(2).getId());
+                    }
+                }
+                if (Integer.parseInt(esmRetail.getRetailtype()) >= 2) {
+                    retailStoreFee.setRetailStoreRadioLevel2(new BigDecimal(esmRetail.getDisrate2()));
+                    retailStoreFee.setRetailStoreFeeLevel2(sumPremium.multiply(new BigDecimal(esmRetail.getDisrate2())).divide(new BigDecimal("100")));
+                    if (parents != null && parents.size() > 1) {
+                        retailStoreFee.setRetailStoreUserIdLevel2(parents.get(1).getId());
+                    }
+                }
+                if (Integer.parseInt(esmRetail.getRetailtype()) >= 1) {
+                    retailStoreFee.setRetailStoreRadioLevel1(new BigDecimal(esmRetail.getDisrate1()));
+                    retailStoreFee.setRetailStoreFeeLevel1(sumPremium.multiply(new BigDecimal(esmRetail.getDisrate1())).divide(new BigDecimal("100")));
+                    if (parents != null && parents.size() > 0) {
+                        retailStoreFee.setRetailStoreUserIdLevel1(parents.get(0).getId());
+                    }
+                }
+            }
+        }else{
+            retailStoreFee.setRetailStoreFee(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreRadio(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreRadioLevel1(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreRadioLevel2(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreRadioLevel3(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreFeeLevel1(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreFeeLevel2(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreFeeLevel3(BigDecimal.ZERO);
+            retailStoreFee.setRetailStoreUserIdLevel1("");
+            retailStoreFee.setRetailStoreUserIdLevel2("");
+            retailStoreFee.setRetailStoreUserIdLevel3("");
+        }
+        return retailStoreFee;
+    }
+
+    @Override
+    public ExportFee getExportFee(String insuranceType,EntranceFee entranceFee,DeptManagerFee deptManagerFee, RetailStoreFee retailStoreFee,BigDecimal exportProceduresRadio) {
+        ExportFee exportFee = new ExportFee();
+        //计算出口费用
+        //出口比例
+        BigDecimal jqExportRadio = entranceFee.getTotalProportion().subtract(deptManagerFee.getDeptManagerRadio()).subtract(retailStoreFee.getRetailStoreRadio());
+        //出口费用
+        exportFee.setSuperviseCosts(exportProceduresRadio);
+        exportFee.setSuperviseCostsPremiums(entranceFee.getPremium().multiply(exportProceduresRadio));
+        //跟单比例
+        exportFee.setOtherCostsProportion(entranceFee.getTotalProportion().subtract(exportProceduresRadio));
+        //跟单费用
+        exportFee.setOtherCostsPremiums(entranceFee.getPremium().multiply(exportFee.getOtherCostsProportion()));
+        //总比例
+        exportFee.setTotalProportion(exportFee.getSuperviseCosts().add(exportFee.getOtherCostsProportion()));
+        //总费用
+        exportFee.setTotalAmount(exportFee.getSuperviseCostsPremiums().add(exportFee.getOtherCostsPremiums()));
+        return exportFee;
+    }
+}

+ 28 - 0
src/main/java/com/ydtech/modules/order/entity/vo/FeeOrderNewRecordVo.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.order.entity.vo;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+@ApiModel(description = "费用明细调整费用")
+@Data
+public class FeeOrderNewRecordVo implements Serializable {
+
+    @ApiModelProperty("费用id")
+    private String costsId;
+
+    @ApiModelProperty("feeId")
+    private String feeId;
+
+    @ApiModelProperty("修改前的费用")
+    private FeeOrderNewVo feeOrderNewVoOld;
+
+    @ApiModelProperty("修改后的费用")
+    private FeeOrderNewVo feeOrderNewVoNew;
+
+}

+ 6 - 0
src/main/java/com/ydtech/modules/order/entity/vo/FeeOrderNewVo.java

@@ -15,6 +15,11 @@ import java.util.List;
 @Data
 public class FeeOrderNewVo implements Serializable {
 
+    @ApiModelProperty("费用id")
+    private String costsId;
+
+    @ApiModelProperty("feeId")
+    private String feeId;
 
     @ApiModelProperty("入口费用")
     private List<EntranceFee> entranceFee;
@@ -49,6 +54,7 @@ public class FeeOrderNewVo implements Serializable {
         private BigDecimal otherCostsPremiums;
         @ApiModelProperty("出口手续费比例")
         private BigDecimal exportSuperviseCosts;
+
     }
 
     /**

+ 1 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -657,6 +657,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 //            List<FeeOrderNewVo> feeOrderNewVoList = feeRuleSchemeService.newConvertOrderFeeVoData(insFeeOrderNew);
 //            orderAndAreaCompany.setFeeOrderNewVoList(feeOrderNewVoList);
             FeeOrderNewVo  feeOrderNewVo =   feeRuleSchemeService.newConvertOrderFeeVoData(insFeeOrderNew,ptlAgreementProductCostsNew);
+            feeOrderNewVo.setFeeId(insFeeOrderNew.getId());
             orderAndAreaCompany.setFeeOrderNewVo(feeOrderNewVo);
             List<DistributionLevelVo> distributionLevelVoList = feeRuleSchemeService.converDistrbutionData(insFeeOrderNew);
             orderAndAreaCompany.setDistributionLevelVoList(distributionLevelVoList);

+ 8 - 0
src/main/java/com/ydtech/modules/protocols/controller/PtlNewAgreementController.java

@@ -7,6 +7,8 @@ import com.ydtech.core.page.PageRequest;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.fee.service.FeeRuleSchemeNewService;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewRecordVo;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementPageVo;
@@ -94,6 +96,12 @@ public class PtlNewAgreementController extends BaseController {
         return ptlAgreementProductCostsNewService.costsCopy(orgCostsId,newAgreementId) ? HttpResult.ok("复制协议费用成功") : HttpResult.error("复制协议费用失败");
     }
 
+    @ApiOperation(value = "调整费用")
+    @PostMapping("/costs/adjust")
+    public HttpResult costsAdjust(@RequestBody FeeOrderNewRecordVo feeOrderNewRecordVo){
+        return ptlAgreementProductCostsNewService.costsAdjust(feeOrderNewRecordVo) ? HttpResult.ok("调整费用成功") : HttpResult.error("调整费用失败");
+    }
+
     @ApiOperation(value = "费用审核")
     @PostMapping("/costs/audit")
     public HttpResult costsAudit(@RequestBody CostsAuditVo costsAuditVo){

+ 19 - 0
src/main/java/com/ydtech/modules/protocols/dao/InsFeeOrderNewRecordMapper.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.protocols.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNewRecord;
+
+
+/**
+ * @author tz
+ * @description 费用结算的数据库操作Mapper
+ * @createDate 2024-2-22 15:44:29
+ */
+public interface InsFeeOrderNewRecordMapper extends BaseMapper<InsFeeOrderNewRecord> {
+
+}
+
+
+
+

+ 324 - 0
src/main/java/com/ydtech/modules/protocols/entity/po/InsFeeOrderNewRecord.java

@@ -0,0 +1,324 @@
+package com.ydtech.modules.protocols.entity.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+*@author: tz
+*@description: 新的费用订单表历史记录
+*@create: 2024-2-29 08:36:53
+*/
+
+@TableName(value = "ins_fee_order_new_record", autoResultMap = true)
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class InsFeeOrderNewRecord {
+    @TableId(value = "id")
+    private String id;
+
+    @ApiModelProperty(value = "子订单id")
+    @TableField(value = "ins_order_no")
+    private String insOrderNo;
+
+    @ApiModelProperty(value = "费用id")
+    @TableField(value = "costs_id")
+    private String costsId;
+
+    @ApiModelProperty(value = "feeid")
+    @TableField(value = "fee_order_id")
+    private String feeOrderId;
+
+    @ApiModelProperty(value = "交强险费用比例历史")
+    @TableField(value = "jq_costs_proportion_old")
+    private BigDecimal jqCostsProportionOld;
+
+    @ApiModelProperty(value = "交强险费用比例")
+    @TableField(value = "jq_costs_proportion")
+    private BigDecimal jqCostsProportion;
+
+    @ApiModelProperty(value = "商业险费用比例历史")
+    @TableField(value = "sy_costs_proportion_old")
+    private BigDecimal syCostsProportionOld;
+
+    @ApiModelProperty(value = "商业险费用比例")
+    @TableField(value = "sy_costs_proportion")
+    private BigDecimal syCostsProportion;
+
+    @ApiModelProperty(value = "非车险费用比例历史")
+    @TableField(value = "no_costs_proportion_old")
+    private BigDecimal noCostsProportionOld;
+
+    @ApiModelProperty(value = "非车险费用比例")
+    @TableField(value = "no_costs_proportion")
+    private BigDecimal noCostsProportion;
+
+    @ApiModelProperty(value = "交强监管费比例历史")
+    @TableField(value = "jq_supervise_costs_proportion_old")
+    private BigDecimal jqSuperviseCostsProportionOld;
+
+    @ApiModelProperty(value = "交强监管费比例")
+    @TableField(value = "jq_supervise_costs_proportion")
+    private BigDecimal jqSuperviseCostsProportion;
+
+    @ApiModelProperty(value = "商业监管费比例")
+    @TableField(value = "sy_supervise_costs_proportion_old")
+    private BigDecimal sySuperviseCostsProportionOld;
+
+    @ApiModelProperty(value = "商业监管费比例")
+    @TableField(value = "sy_supervise_costs_proportion")
+    private BigDecimal sySuperviseCostsProportion;
+
+    @ApiModelProperty(value = "非车监管费比例")
+    @TableField(value = "no_supervise_costs_proportion_old")
+    private BigDecimal noSuperviseCostsProportionOld;
+
+    @ApiModelProperty(value = "非车监管费比例")
+    @TableField(value = "no_supervise_costs_proportion")
+    private BigDecimal noSuperviseCostsProportion;
+
+    @ApiModelProperty(value = "交强其他费用比例")
+    @TableField(value = "jq_other_costs_proportion_old")
+    private BigDecimal jqOtherCostsProportionOld;
+
+
+    @ApiModelProperty(value = "交强其他费用比例")
+    @TableField(value = "jq_other_costs_proportion")
+    private BigDecimal jqOtherCostsProportion;
+
+    @ApiModelProperty(value = "商业其他费用比例")
+    @TableField(value = "sy_other_costs_proportion_old")
+    private BigDecimal syOtherCostsProportionOld;
+
+    @ApiModelProperty(value = "商业其他费用比例")
+    @TableField(value = "sy_other_costs_proportion")
+    private BigDecimal syOtherCostsProportion;
+
+    @ApiModelProperty(value = "非车其他费用比例")
+    @TableField(value = "no_other_costs_proportion_old")
+    private BigDecimal noOtherCostsProportionOld;
+
+    @ApiModelProperty(value = "非车其他费用比例")
+    @TableField(value = "no_other_costs_proportion")
+    private BigDecimal noOtherCostsProportion;
+
+
+    @ApiModelProperty(value = "交强一级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_1_old")
+    private BigDecimal jqDeptProportionLevel1Old;
+
+    @ApiModelProperty(value = "交强二级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_2_old")
+    private BigDecimal jqDeptProportionLevel2Old;
+
+    @ApiModelProperty(value = "交强三级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_3_old")
+    private BigDecimal jqDeptProportionLevel3Old;
+
+    @ApiModelProperty(value = "交强四级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_4_old")
+    private BigDecimal jqDeptProportionLevel4Old;
+
+    @ApiModelProperty(value = "交强五级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_5_old")
+    private BigDecimal jqDeptProportionLevel5Old;
+
+    @ApiModelProperty(value = "商业一级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_1_old")
+    private BigDecimal syDeptProportionLevel1Old;
+
+    @ApiModelProperty(value = "商业二级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_2_old")
+    private BigDecimal syDeptProportionLevel2Old;
+
+    @ApiModelProperty(value = "商业三级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_3_old")
+    private BigDecimal syDeptProportionLevel3Old;
+
+    @ApiModelProperty(value = "商业四级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_4_old")
+    private BigDecimal syDeptProportionLevel4Old;
+
+    @ApiModelProperty(value = "商业五级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_5_old")
+    private BigDecimal syDeptProportionLevel5Old;
+
+    @ApiModelProperty(value = "非车一级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_1_old")
+    private BigDecimal noDeptProportionLevel1Old;
+
+    @ApiModelProperty(value = "非车二级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_2_old")
+    private BigDecimal noDeptProportionLevel2Old;
+
+    @ApiModelProperty(value = "非车三级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_3_old")
+    private BigDecimal noDeptProportionLevel3Old;
+
+    @ApiModelProperty(value = "非车四级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_4_old")
+    private BigDecimal noDeptProportionLevel4Old;
+
+    @ApiModelProperty(value = "非车五级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_5_old")
+    private BigDecimal noDeptProportionLevel5Old;
+
+
+
+
+
+    @ApiModelProperty(value = "交强一级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_1")
+    private BigDecimal jqDeptProportionLevel1;
+
+    @ApiModelProperty(value = "交强二级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_2")
+    private BigDecimal jqDeptProportionLevel2;
+
+    @ApiModelProperty(value = "交强三级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_3")
+    private BigDecimal jqDeptProportionLevel3;
+
+    @ApiModelProperty(value = "交强四级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_4")
+    private BigDecimal jqDeptProportionLevel4;
+
+    @ApiModelProperty(value = "交强五级机构管理费比例")
+    @TableField(value = "jq_dept_proportion_level_5")
+    private BigDecimal jqDeptProportionLevel5;
+
+    @ApiModelProperty(value = "商业一级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_1")
+    private BigDecimal syDeptProportionLevel1;
+
+    @ApiModelProperty(value = "商业二级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_2")
+    private BigDecimal syDeptProportionLevel2;
+
+    @ApiModelProperty(value = "商业三级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_3")
+    private BigDecimal syDeptProportionLevel3;
+
+    @ApiModelProperty(value = "商业四级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_4")
+    private BigDecimal syDeptProportionLevel4;
+
+    @ApiModelProperty(value = "商业五级机构管理费比例")
+    @TableField(value = "sy_dept_proportion_level_5")
+    private BigDecimal syDeptProportionLevel5;
+
+    @ApiModelProperty(value = "非车一级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_1")
+    private BigDecimal noDeptProportionLevel1;
+
+    @ApiModelProperty(value = "非车二级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_2")
+    private BigDecimal noDeptProportionLevel2;
+
+    @ApiModelProperty(value = "非车三级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_3")
+    private BigDecimal noDeptProportionLevel3;
+
+    @ApiModelProperty(value = "非车四级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_4")
+    private BigDecimal noDeptProportionLevel4;
+
+    @ApiModelProperty(value = "非车五级机构管理费比例")
+    @TableField(value = "no_dept_proportion_level_5")
+    private BigDecimal noDeptProportionLevel5;
+
+
+    @ApiModelProperty(value = "出口手续费比例")
+    @TableField(exist = false)
+    private BigDecimal jqCostsExportProportionOld;
+
+    @ApiModelProperty(value = "出口商业手续费比例")
+    @TableField(exist = false)
+    private BigDecimal syCostsExportProportionOld;
+
+    @ApiModelProperty(value = "出口非车手续费比例")
+    @TableField(exist = false)
+    private BigDecimal noCostsExportProportionOld;
+
+    @ApiModelProperty(value = "出口手续费比例")
+    @TableField(exist = false)
+    private BigDecimal jqCostsExportProportion;
+
+    @ApiModelProperty(value = "出口商业手续费比例")
+    @TableField(exist = false)
+    private BigDecimal syCostsExportProportion;
+
+    @ApiModelProperty(value = "出口非车手续费比例")
+    @TableField(exist = false)
+    private BigDecimal noCostsExportProportion;
+
+
+
+    @ApiModelProperty(value = "一级分销比例")
+    @TableField(value = "first_detail_proportion")
+    private BigDecimal firstDetailProportion;
+
+    @ApiModelProperty(value = "一级分销费用")
+    @TableField(value = "first_detail_premiums")
+    private BigDecimal firstDetailPremiums;
+
+    @ApiModelProperty(value = "二级分销比例")
+    @TableField(value = "second_detail_proportion")
+    private BigDecimal secondDetailProportion;
+
+    @ApiModelProperty(value = "二级分销费用")
+    @TableField(value = "second_detail_premiums")
+    private BigDecimal secondDetailPremiums;
+
+    @ApiModelProperty(value = "三级分销比例")
+    @TableField(value = "third_detail_proportion")
+    private BigDecimal thirdDetailProportion;
+
+    @ApiModelProperty(value = "三级分销费用")
+    @TableField(value = "third_detail_premiums")
+    private BigDecimal thirdDetailPremiums;
+
+    @ApiModelProperty(value = "一级分销用户id")
+    @TableField(value = "first_level_user_id")
+    private String firstLevelUserId;
+
+    @ApiModelProperty(value = "一级分销用户信息")
+    @TableField(exist = false)
+    private String firstLevelUserInfo;
+
+    @ApiModelProperty(value = "二级分销用户id")
+    @TableField(value = "two_level_user_id")
+    private String twoLevelUserId;
+
+    @ApiModelProperty(value = "二级分销用户信息")
+    @TableField(exist = false)
+    private String twoLevelUserInfo;
+
+    @ApiModelProperty(value = "三级分销用户id")
+    @TableField(value = "three_level_user_id")
+    private String threeLevelUserId;
+
+    @ApiModelProperty(value = "三级分销用户信息")
+    @TableField(exist = false)
+    private String threeLevelUserInfo;
+
+    @ApiModelProperty(value = "分销等级")
+    @TableField(value = "distribution_status")
+    private String distributionStatus;
+
+
+    @ApiModelProperty(value = "机构分销费用")
+    @TableField(value = "dept_distribution")
+    private BigDecimal deptDistribution;
+
+
+
+
+}

+ 15 - 0
src/main/java/com/ydtech/modules/protocols/service/InsFeeOrderNewRecordService.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.protocols.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNewRecord;
+
+/**
+*@author: tz
+*@description: 费用计算表 service
+*@create: 2024-2-22 15:44:29
+*/
+public interface InsFeeOrderNewRecordService extends IService<InsFeeOrderNewRecord> {
+
+
+}

+ 9 - 0
src/main/java/com/ydtech/modules/protocols/service/PtlAgreementProductCostsNewService.java

@@ -2,6 +2,8 @@ package com.ydtech.modules.protocols.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewRecordVo;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
 import com.ydtech.modules.protocols.entity.vo.AgreementProductCosts;
@@ -74,4 +76,11 @@ public interface PtlAgreementProductCostsNewService extends IService<PtlAgreemen
      * @return
      */
     boolean costsAudit(CostsAuditVo costsAuditVo);
+
+    /**
+     * 调整费用
+     * @param feeOrderNewRecordVo
+     * @return
+     */
+    boolean costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo);
 }

+ 22 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/InsFeeOrderNewRecordServiceImpl.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.protocols.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.protocols.dao.InsFeeOrderNewMapper;
+import com.ydtech.modules.protocols.dao.InsFeeOrderNewRecordMapper;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNewRecord;
+import com.ydtech.modules.protocols.service.InsFeeOrderNewRecordService;
+import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @description 费用结算表 service实现类
+ * @createDate 2024-2-22 15:44:29
+ * @Entity com.ydtech.modules.protocol.entity.po.PtlAgreementUndwrtRulesAttrMapper
+ */
+@Service
+public class InsFeeOrderNewRecordServiceImpl extends ServiceImpl<InsFeeOrderNewRecordMapper, InsFeeOrderNewRecord>
+        implements InsFeeOrderNewRecordService {
+
+}

+ 298 - 0
src/main/java/com/ydtech/modules/protocols/service/impl/PtlAgreementProductCostsNewServiceImpl.java

@@ -4,8 +4,23 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.fee.dto.vo.DeptManagerFee;
+import com.ydtech.modules.fee.dto.vo.EntranceFee;
+import com.ydtech.modules.fee.dto.vo.ExportFee;
+import com.ydtech.modules.fee.dto.vo.RetailStoreFee;
+import com.ydtech.modules.fee.service.CostsCalcService;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewRecordVo;
+import com.ydtech.modules.order.entity.vo.FeeOrderNewVo;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlAreaLicense;
+import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocol.service.PtlAreaLicenseService;
 import com.ydtech.modules.protocols.dao.PtlAgreementProductCostsNewMapper;
 import com.ydtech.modules.protocols.entity.po.*;
@@ -15,11 +30,13 @@ import com.ydtech.modules.protocols.entity.vo.AgreementProductQueryVo;
 import com.ydtech.modules.protocols.entity.vo.CostsAuditVo;
 import com.ydtech.modules.protocols.service.*;
 import com.ydtech.utils.idgen.IdGenerate;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -52,6 +69,12 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
     @Autowired
     PtlAgreementProductCostsAttrLinkHistoryService ptlAgreementProductCostsAttrLinkHistoryService;
 
+    @Autowired
+    InsFeeOrderNewRecordService insFeeOrderNewRecordService;
+
+    @Autowired
+    InsFeeOrderNewService insFeeOrderNewService;
+
     @Override
     public Page<PtlAgreementProductCostsNew> getByAgreementId(Page page, AgreementProductQueryVo agreementProductQueryVo) {
         LambdaQueryWrapper<PtlAgreementProductCostsNew> ptlAgreementProductCostsNewLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -636,4 +659,279 @@ public class PtlAgreementProductCostsNewServiceImpl extends ServiceImpl<PtlAgree
         ptlAgreementProductCostsNew.setAuditTime(LocalDateTime.now());
         return baseMapper.updateById(ptlAgreementProductCostsNew) > 0 ? true : false;
     }
+
+    @Autowired
+    PtlAgreementService ptlAgreementService;
+
+    @Autowired
+    CostsCalcService costsCalcService;
+
+    @Autowired
+    InsOrdersService insOrdersService;
+
+    @Autowired
+    SysUserService sysUserService;
+
+    @Autowired
+    InsAreaCompanyService insAreaCompanyService;
+
+    @Transactional
+    @Override
+    public boolean costsAdjust(FeeOrderNewRecordVo feeOrderNewRecordVo) {
+        String feeId = feeOrderNewRecordVo.getFeeId();
+        InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getById(feeId);
+        //查询协议是否包含税
+        PtlAgreement ptlAgreement = ptlAgreementService.getById(insFeeOrderNew.getAgreementId());
+        BigDecimal taxRadio = new BigDecimal("1.00");
+        if(ptlAgreement.getWithTax().equals("是")){
+            taxRadio = new BigDecimal("1.06");
+        }
+
+        InsFeeOrderNewRecord record = new InsFeeOrderNewRecord();
+        FeeOrderNewVo feeOrderNewVoOld = feeOrderNewRecordVo.getFeeOrderNewVoOld();
+        FeeOrderNewVo feeOrderNewVo = feeOrderNewRecordVo.getFeeOrderNewVoNew();
+
+        //交强入口费用
+        EntranceFee jqEntranceFee = costsCalcService.getEntranceFee("交强险", feeOrderNewVo.getEntranceFee().get(0).getPremium().divide(taxRadio,2),
+                feeOrderNewVo.getEntranceFee().get(0).getSuperviseCosts(), feeOrderNewVo.getEntranceFee().get(0).getOtherCostsProportion());
+
+        //商业入口费用
+        EntranceFee syEntranceFee = costsCalcService.getEntranceFee("商业险", feeOrderNewVo.getEntranceFee().get(1).getPremium().divide(taxRadio,2),
+                feeOrderNewVo.getEntranceFee().get(1).getSuperviseCosts(), feeOrderNewVo.getEntranceFee().get(1).getOtherCostsProportion());
+
+        //非车入口费用
+        EntranceFee noEntranceFee = costsCalcService.getEntranceFee("非车险", feeOrderNewVo.getEntranceFee().get(2).getPremium().divide(taxRadio,2),
+                feeOrderNewVo.getEntranceFee().get(2).getSuperviseCosts(), feeOrderNewVo.getEntranceFee().get(2).getOtherCostsProportion());
+
+        //交强部门管理费用
+        DeptManagerFee jqDeptManagerFee = costsCalcService.getDeptManagerFee("交强险", insFeeOrderNew.getJqPremium().divide(taxRadio,2),
+                insFeeOrderNew.getJqDeptProportionLevel1(), insFeeOrderNew.getJqDeptProportionLevel2(), insFeeOrderNew.getJqDeptProportionLevel3(),
+                insFeeOrderNew.getJqDeptProportionLevel4(), insFeeOrderNew.getJqDeptProportionLevel5());
+
+        //商业部门管理费用
+        DeptManagerFee syDeptManagerFee = costsCalcService.getDeptManagerFee("商业险", insFeeOrderNew.getSyPremium().divide(taxRadio,2),
+                insFeeOrderNew.getSyDeptProportionLevel1(), insFeeOrderNew.getSyDeptProportionLevel2(), insFeeOrderNew.getSyDeptProportionLevel3(),
+                insFeeOrderNew.getSyDeptProportionLevel4(), insFeeOrderNew.getSyDeptProportionLevel5());
+
+        //非车部门管理费用
+        DeptManagerFee noDeptManagerFee = costsCalcService.getDeptManagerFee("非车险", insFeeOrderNew.getNoPremium().divide(taxRadio,2),
+                insFeeOrderNew.getNoDeptProportionLevel1(), insFeeOrderNew.getNoDeptProportionLevel2(), insFeeOrderNew.getNoDeptProportionLevel3(),
+                insFeeOrderNew.getNoDeptProportionLevel4(), insFeeOrderNew.getNoDeptProportionLevel5());
+
+
+        //分销费用
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getById(insFeeOrderNew.getInsOrderNo());
+        InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
+        SysUser sysUser = sysUserService.findByUserId(insOrders.getUserid());
+        RetailStoreFee retailStoreFee = costsCalcService.getRetailStoreFee(sysUser.getId(),
+                insFeeOrderNew.getJqPremium().add(insFeeOrderNew.getSyPremium()).add(insFeeOrderNew.getNoPremium()));
+
+        //出口
+        ExportFee jqExportFee = costsCalcService.getExportFee("交强险",jqEntranceFee,jqDeptManagerFee,retailStoreFee,
+                feeOrderNewRecordVo.getFeeOrderNewVoNew().getExportFee().get(0).getSuperviseCosts());
+
+        ExportFee syExportFee = costsCalcService.getExportFee("商业险",syEntranceFee,syDeptManagerFee,retailStoreFee,
+                feeOrderNewRecordVo.getFeeOrderNewVoNew().getExportFee().get(1).getSuperviseCosts());
+
+        ExportFee noExportFee = costsCalcService.getExportFee("非车险",noEntranceFee,noDeptManagerFee,retailStoreFee,
+                feeOrderNewRecordVo.getFeeOrderNewVoNew().getExportFee().get(0).getSuperviseCosts());
+
+        //转换输出的格式
+        FeeOrderNewVo resultFeeOrderNewVo = new FeeOrderNewVo();
+        List<FeeOrderNewVo.EntranceFee> entranceFeeList = new ArrayList<>();
+        List<FeeOrderNewVo.DeptManagerFee> deptManagerFeeList = new ArrayList<>();
+        List<FeeOrderNewVo.ExportFee> exportFeeList = new ArrayList<>();
+
+
+        FeeOrderNewVo.EntranceFee jqEntranceFeeConv = new FeeOrderNewVo.EntranceFee();
+        BeanUtils.copyProperties(jqEntranceFee,jqEntranceFeeConv);
+        entranceFeeList.add(jqEntranceFeeConv);
+
+        FeeOrderNewVo.EntranceFee syEntranceFeeConv = new FeeOrderNewVo.EntranceFee();
+        BeanUtils.copyProperties(syEntranceFee,syEntranceFeeConv);
+        entranceFeeList.add(syEntranceFeeConv);
+
+        FeeOrderNewVo.EntranceFee noEntranceFeeConv = new FeeOrderNewVo.EntranceFee();
+        BeanUtils.copyProperties(noEntranceFee,noEntranceFeeConv);
+        entranceFeeList.add(noEntranceFeeConv);
+
+        resultFeeOrderNewVo.setEntranceFee(entranceFeeList);
+
+
+
+        FeeOrderNewVo.DeptManagerFee jqDeptManagerFeeConv = new FeeOrderNewVo.DeptManagerFee();
+        BeanUtils.copyProperties(jqDeptManagerFee,jqDeptManagerFeeConv);
+        deptManagerFeeList.add(jqDeptManagerFeeConv);
+
+        FeeOrderNewVo.DeptManagerFee syDeptManagerFeeConv = new FeeOrderNewVo.DeptManagerFee();
+        BeanUtils.copyProperties(syDeptManagerFee,syDeptManagerFeeConv);
+        deptManagerFeeList.add(syDeptManagerFeeConv);
+
+        FeeOrderNewVo.DeptManagerFee noDeptManagerFeeConv = new FeeOrderNewVo.DeptManagerFee();
+        BeanUtils.copyProperties(noDeptManagerFee,noDeptManagerFeeConv);
+        deptManagerFeeList.add(noDeptManagerFeeConv);
+
+        resultFeeOrderNewVo.setDeptManagerFee(deptManagerFeeList);
+
+
+
+        FeeOrderNewVo.ExportFee jqExportFeeConv = new FeeOrderNewVo.ExportFee();
+        BeanUtils.copyProperties(jqExportFee,jqExportFeeConv);
+        exportFeeList.add(jqExportFeeConv);
+
+        FeeOrderNewVo.ExportFee syExportFeeConv = new FeeOrderNewVo.ExportFee();
+        BeanUtils.copyProperties(syExportFee,syExportFeeConv);
+        exportFeeList.add(syExportFeeConv);
+
+        FeeOrderNewVo.ExportFee noExportFeeConv = new FeeOrderNewVo.ExportFee();
+        BeanUtils.copyProperties(noExportFee,noExportFeeConv);
+        exportFeeList.add(noExportFeeConv);
+
+        resultFeeOrderNewVo.setExportFee(exportFeeList);
+
+
+
+        //入口
+        record.setJqCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(0).getTotalProportion());
+        record.setSyCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(1).getTotalProportion());
+        record.setNoCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(2).getTotalProportion());
+        record.setJqSuperviseCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(0).getSuperviseCosts());
+        record.setSySuperviseCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(1).getSuperviseCosts());
+        record.setNoSuperviseCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(2).getSuperviseCosts());
+        record.setJqOtherCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(0).getOtherCostsProportion());
+        record.setSyOtherCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(1).getOtherCostsProportion());
+        record.setNoOtherCostsProportionOld(feeOrderNewVoOld.getEntranceFee().get(2).getOtherCostsProportion());
+
+        record.setJqCostsProportion(feeOrderNewVo.getEntranceFee().get(0).getTotalProportion());
+        record.setSyCostsProportion(feeOrderNewVo.getEntranceFee().get(1).getTotalProportion());
+        record.setNoCostsProportion(feeOrderNewVo.getEntranceFee().get(2).getTotalProportion());
+        record.setJqSuperviseCostsProportion(feeOrderNewVo.getEntranceFee().get(0).getSuperviseCosts());
+        record.setSySuperviseCostsProportion(feeOrderNewVo.getEntranceFee().get(1).getSuperviseCosts());
+        record.setNoSuperviseCostsProportion(feeOrderNewVo.getEntranceFee().get(2).getSuperviseCosts());
+        record.setJqOtherCostsProportion(feeOrderNewVo.getEntranceFee().get(0).getOtherCostsProportion());
+        record.setSyOtherCostsProportion(feeOrderNewVo.getEntranceFee().get(1).getOtherCostsProportion());
+        record.setNoOtherCostsProportion(feeOrderNewVo.getEntranceFee().get(2).getOtherCostsProportion());
+
+
+        //出口
+        record.setJqCostsExportProportionOld(feeOrderNewVoOld.getExportFee().get(0).getTotalProportion());
+        record.setSyCostsExportProportionOld(feeOrderNewVoOld.getExportFee().get(1).getTotalProportion());
+        record.setNoCostsExportProportionOld(feeOrderNewVoOld.getExportFee().get(2).getTotalProportion());
+
+        record.setJqCostsExportProportion(feeOrderNewVo.getExportFee().get(0).getTotalProportion());
+        record.setSyCostsExportProportion(feeOrderNewVo.getExportFee().get(1).getTotalProportion());
+        record.setNoCostsExportProportion(feeOrderNewVo.getExportFee().get(2).getTotalProportion());
+
+        //机构管理费 (交强)
+        //old
+        record.setJqDeptProportionLevel1Old(feeOrderNewVoOld.getDeptManagerFee().get(0).getDeptProportionLevelOne());
+        record.setJqDeptProportionLevel2Old(feeOrderNewVoOld.getDeptManagerFee().get(0).getDeptProportionLevelTwo());
+        record.setJqDeptProportionLevel3Old(feeOrderNewVoOld.getDeptManagerFee().get(0).getDeptProportionLevelThree());
+        record.setJqDeptProportionLevel4Old(feeOrderNewVoOld.getDeptManagerFee().get(0).getDeptProportionLevelFoure());
+        record.setJqDeptProportionLevel5Old(feeOrderNewVoOld.getDeptManagerFee().get(0).getDeptProportionLevelFive());
+
+        //new
+        record.setJqDeptProportionLevel1(feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelOne());
+        record.setJqDeptProportionLevel2(feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelTwo());
+        record.setJqDeptProportionLevel3(feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelThree());
+        record.setJqDeptProportionLevel4(feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelFoure());
+        record.setJqDeptProportionLevel5(feeOrderNewVo.getDeptManagerFee().get(0).getDeptProportionLevelFive());
+
+
+
+        //机构管理费 (商业)
+        //old
+        record.setSyDeptProportionLevel1Old(feeOrderNewVoOld.getDeptManagerFee().get(1).getDeptProportionLevelOne());
+        record.setSyDeptProportionLevel2Old(feeOrderNewVoOld.getDeptManagerFee().get(1).getDeptProportionLevelTwo());
+        record.setSyDeptProportionLevel3Old(feeOrderNewVoOld.getDeptManagerFee().get(1).getDeptProportionLevelThree());
+        record.setSyDeptProportionLevel4Old(feeOrderNewVoOld.getDeptManagerFee().get(1).getDeptProportionLevelFoure());
+        record.setSyDeptProportionLevel5Old(feeOrderNewVoOld.getDeptManagerFee().get(1).getDeptProportionLevelFive());
+
+        //new
+        record.setSyDeptProportionLevel1(feeOrderNewVo.getDeptManagerFee().get(1).getDeptProportionLevelOne());
+        record.setSyDeptProportionLevel2(feeOrderNewVo.getDeptManagerFee().get(1).getDeptProportionLevelTwo());
+        record.setSyDeptProportionLevel3(feeOrderNewVo.getDeptManagerFee().get(1).getDeptProportionLevelThree());
+        record.setSyDeptProportionLevel4(feeOrderNewVo.getDeptManagerFee().get(1).getDeptProportionLevelFoure());
+        record.setSyDeptProportionLevel5(feeOrderNewVo.getDeptManagerFee().get(1).getDeptProportionLevelFive());
+
+
+        //机构管理费 (非车)
+        //old
+        record.setNoDeptProportionLevel1Old(feeOrderNewVoOld.getDeptManagerFee().get(2).getDeptProportionLevelOne());
+        record.setNoDeptProportionLevel2Old(feeOrderNewVoOld.getDeptManagerFee().get(2).getDeptProportionLevelTwo());
+        record.setNoDeptProportionLevel3Old(feeOrderNewVoOld.getDeptManagerFee().get(2).getDeptProportionLevelThree());
+        record.setNoDeptProportionLevel4Old(feeOrderNewVoOld.getDeptManagerFee().get(2).getDeptProportionLevelFoure());
+        record.setNoDeptProportionLevel5Old(feeOrderNewVoOld.getDeptManagerFee().get(2).getDeptProportionLevelFive());
+
+        //new
+        record.setNoDeptProportionLevel1(feeOrderNewVo.getDeptManagerFee().get(2).getDeptProportionLevelOne());
+        record.setNoDeptProportionLevel2(feeOrderNewVo.getDeptManagerFee().get(2).getDeptProportionLevelTwo());
+        record.setNoDeptProportionLevel3(feeOrderNewVo.getDeptManagerFee().get(2).getDeptProportionLevelThree());
+        record.setNoDeptProportionLevel4(feeOrderNewVo.getDeptManagerFee().get(2).getDeptProportionLevelFoure());
+        record.setNoDeptProportionLevel5(feeOrderNewVo.getDeptManagerFee().get(2).getDeptProportionLevelFive());
+
+        //保存历史记录
+        record.setFeeOrderId(feeId);
+        insFeeOrderNewRecordService.save(record);
+
+
+        insFeeOrderNew.setJqCostsProportion(jqEntranceFee.getTotalProportion());
+        insFeeOrderNew.setJqCostsPremiums(jqEntranceFee.getTotalAmount());
+        insFeeOrderNew.setSyCostsProportion(syEntranceFee.getTotalProportion());
+        insFeeOrderNew.setSyCostsPremiums(syEntranceFee.getTotalAmount());
+        insFeeOrderNew.setNoCostsProportion(noEntranceFee.getTotalProportion());
+        insFeeOrderNew.setNoCostsPremiums(noEntranceFee.getTotalAmount());
+
+        insFeeOrderNew.setJqSuperviseCostsProportion(jqEntranceFee.getSuperviseCosts());
+        insFeeOrderNew.setJqSuperviseCostsPremiums(jqEntranceFee.getSySuperviseCostsPremiums());
+        insFeeOrderNew.setSySuperviseCostsProportion(syEntranceFee.getSuperviseCosts());
+        insFeeOrderNew.setSySuperviseCostsPremiums(syEntranceFee.getSySuperviseCostsPremiums());
+        insFeeOrderNew.setNoSuperviseCostsProportion(noEntranceFee.getSuperviseCosts());
+        insFeeOrderNew.setNoSuperviseCostsPremiums(noEntranceFee.getSySuperviseCostsPremiums());
+
+        insFeeOrderNew.setJqOtherCostsProportion(jqEntranceFee.getOtherCostsProportion());
+        insFeeOrderNew.setJqOtherCostsPremiums(jqEntranceFee.getOtherCostsPremiums());
+        insFeeOrderNew.setSyOtherCostsProportion(syEntranceFee.getOtherCostsProportion());
+        insFeeOrderNew.setSyOtherCostsPremiums(syEntranceFee.getOtherCostsPremiums());
+        insFeeOrderNew.setNoOtherCostsProportion(noEntranceFee.getOtherCostsProportion());
+        insFeeOrderNew.setNoOtherCostsPremiums(noEntranceFee.getOtherCostsPremiums());
+
+        insFeeOrderNew.setJqDeptProportionLevel1(jqDeptManagerFee.getDeptManagerRadioLevel1());
+        insFeeOrderNew.setJqDeptProportionLevel2(jqDeptManagerFee.getDeptManagerRadioLevel2());
+        insFeeOrderNew.setJqDeptProportionLevel3(jqDeptManagerFee.getDeptManagerRadioLevel3());
+        insFeeOrderNew.setJqDeptProportionLevel4(jqDeptManagerFee.getDeptManagerRadioLevel4());
+        insFeeOrderNew.setJqDeptProportionLevel5(jqDeptManagerFee.getDeptManagerRadioLevel5());
+        insFeeOrderNew.setJqDeptPremiumsLevel1(jqDeptManagerFee.getDeptManagerFeeLevel1());
+        insFeeOrderNew.setJqDeptPremiumsLevel2(jqDeptManagerFee.getDeptManagerFeeLevel2());
+        insFeeOrderNew.setJqDeptPremiumsLevel3(jqDeptManagerFee.getDeptManagerFeeLevel3());
+        insFeeOrderNew.setJqDeptPremiumsLevel4(jqDeptManagerFee.getDeptManagerFeeLevel4());
+        insFeeOrderNew.setJqDeptPremiumsLevel5(jqDeptManagerFee.getDeptManagerFeeLevel5());
+
+        insFeeOrderNew.setSyDeptProportionLevel1(syDeptManagerFee.getDeptManagerRadioLevel1());
+        insFeeOrderNew.setSyDeptProportionLevel2(syDeptManagerFee.getDeptManagerRadioLevel2());
+        insFeeOrderNew.setSyDeptProportionLevel3(syDeptManagerFee.getDeptManagerRadioLevel3());
+        insFeeOrderNew.setSyDeptProportionLevel4(syDeptManagerFee.getDeptManagerRadioLevel4());
+        insFeeOrderNew.setSyDeptProportionLevel5(syDeptManagerFee.getDeptManagerRadioLevel5());
+        insFeeOrderNew.setSyDeptPremiumsLevel1(syDeptManagerFee.getDeptManagerFeeLevel1());
+        insFeeOrderNew.setSyDeptPremiumsLevel2(syDeptManagerFee.getDeptManagerFeeLevel2());
+        insFeeOrderNew.setSyDeptPremiumsLevel3(syDeptManagerFee.getDeptManagerFeeLevel3());
+        insFeeOrderNew.setSyDeptPremiumsLevel4(syDeptManagerFee.getDeptManagerFeeLevel4());
+        insFeeOrderNew.setSyDeptPremiumsLevel5(syDeptManagerFee.getDeptManagerFeeLevel5());
+
+        insFeeOrderNew.setNoDeptProportionLevel1(noDeptManagerFee.getDeptManagerRadioLevel1());
+        insFeeOrderNew.setNoDeptProportionLevel2(noDeptManagerFee.getDeptManagerRadioLevel2());
+        insFeeOrderNew.setNoDeptProportionLevel3(noDeptManagerFee.getDeptManagerRadioLevel3());
+        insFeeOrderNew.setNoDeptProportionLevel4(noDeptManagerFee.getDeptManagerRadioLevel4());
+        insFeeOrderNew.setNoDeptProportionLevel5(noDeptManagerFee.getDeptManagerRadioLevel5());
+        insFeeOrderNew.setNoDeptPremiumsLevel1(noDeptManagerFee.getDeptManagerFeeLevel1());
+        insFeeOrderNew.setNoDeptPremiumsLevel2(noDeptManagerFee.getDeptManagerFeeLevel2());
+        insFeeOrderNew.setNoDeptPremiumsLevel3(noDeptManagerFee.getDeptManagerFeeLevel3());
+        insFeeOrderNew.setNoDeptPremiumsLevel4(noDeptManagerFee.getDeptManagerFeeLevel4());
+        insFeeOrderNew.setNoDeptPremiumsLevel5(noDeptManagerFee.getDeptManagerFeeLevel5());
+
+        //保存新的比例
+        insFeeOrderNewService.updateById(insFeeOrderNew);
+        return true;
+
+    }
 }