Просмотр исходного кода

Merge remote-tracking branch 'origin/test' into test

ligang134 3 лет назад
Родитель
Сommit
8edd3165ac

+ 3 - 10
src/main/java/com/ydtech/modules/fee/service/FeeRuleSchemeService.java

@@ -11,20 +11,13 @@ import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
  * 跟单费用的获取、跟单费用的拆分等
  */
 public interface FeeRuleSchemeService {
-    /**
-     * 根据跟单信息,以及配置的费用因子,获取合适的跟单费用
-     * @param feeSchemeReqDto
-     * @return
-     */
-    public FeeSchemeResDto matchTheAppropriateFees(FeeSchemeReqDto feeSchemeReqDto);
 
     /**
-     * 根据跟单信息,组装费用匹配入参
+     * 总处理费用匹配方法
      * @param quoteInfoVo
      * @param quoteRespVo
      * @param agreementId
-     * @param productId
-     * @return
+     * @param businessNo
      */
-    FeeSchemeReqDto getFeeSchemeInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId, String productId);
+    public void dealFeeOrderInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId,String businessNo);
 }

+ 232 - 17
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceImpl.java

@@ -1,6 +1,14 @@
 package com.ydtech.modules.fee.service.impl;
 
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.model.SysDept;
+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;
@@ -8,17 +16,22 @@ 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.ins.service.InsOrderService;
+import com.ydtech.modules.order.entity.InsFeeOrder;
+import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
+import com.ydtech.modules.order.service.InsFeeOrderService;
+import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
 import com.ydtech.modules.protocol.service.PtlAgreementProductCostsService;
+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 java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 费用接口中相关功能的实现类
@@ -27,13 +40,24 @@ import java.util.Map;
 public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
     @Autowired
     private   PtlAgreementProductCostsService ptlAgreementProductCostsService;
+    @Autowired
+    private InsOrdersService insOrdersService;
+    @Autowired
+    private InsFeeOrderService insFeeOrderService;
+    @Autowired
+    private SysUserService sysUserService;
+    @Autowired
+    private SysDeptService sysDeptService;
+    @Autowired
+    private EsmRetailService esmRetailService;
+    @Autowired
+    private EsmUserReferrerService esmUserReferrerService;
 
     /**
      * 根据跟单信息,以及配置的费用因子,获取合适的跟单费用
      * @param feeSchemeReqDto
      * @return
      */
-    @Override
     public FeeSchemeResDto matchTheAppropriateFees(FeeSchemeReqDto feeSchemeReqDto) {
         FeeSchemeResDto feeSchemeResDto=new FeeSchemeResDto();
 
@@ -44,7 +68,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
             throw new SystemException("未查询到费用配置,请先配置该协议的费用方案!");
         }else{
             //符合跟单信息的方案列表
-            List validSchemeList=new ArrayList();
+            List<PtlAgreementProductCosts> validSchemeList=new ArrayList();
             //循环符合的方案列表,再进行细化的因子匹配,获取最终可以匹配到的方案
             for(int i=0;i<ptlAgreementProductCosts.size();i++){
                 PtlAgreementProductCosts factorCost=ptlAgreementProductCosts.get(i);
@@ -61,6 +85,12 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
             }
 
             if(validSchemeList.size()>0){
+                //先判断匹配到的是不是只有兜底类型,如果不是则过滤掉兜底类型的费用,优先以跟单的为准,如果只有兜底类型,则按同样逻辑进行筛选
+                //根据ProductId去重后的结果集
+                List tempList=validSchemeList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(PtlAgreementProductCosts :: getProductId))), ArrayList::new));
+                if(tempList.size()>1){//如果有多种类型,则过滤掉兜底类型的
+                    validSchemeList=validSchemeList.stream().filter(x -> !"039999".equals(x.getProductId())).collect(Collectors.toList());
+                }
                 //匹配到唯一一条费用方案,直接用这条
                 if(validSchemeList.size()==1){
                     //进行费用比例赋值,给返回对象
@@ -269,11 +299,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         factor0.setFactorName("是否过户");
         factor0.setMatchType("1");
         factor0.setMatchSequence(0);
-        if(factorCost.getTransfer()!=null){
+        if(factorCost.getTransfer()!=null&&factorCost.getTransfer()!=9){
             factor0.setNeedMatch(true);
             factor0.setSingleSelectVal(String.valueOf(factorCost.getTransfer()));
         }else{
-            //如果方案中未录入,则不校验该项因子
+            //如果方案中未录入(是空或为9时),则不校验该项因子
             factor0.setNeedMatch(false);
         }
         resultMqp.put(0,factor0);
@@ -282,11 +312,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         factor1.setFactorName("新旧车");
         factor1.setMatchType("1");
         factor1.setMatchSequence(1);
-        if(factorCost.getOldAndNew()!=null){
+        if(factorCost.getOldAndNew()!=null&&factorCost.getOldAndNew()!=9){
             factor1.setNeedMatch(true);
             factor1.setSingleSelectVal(String.valueOf(factorCost.getOldAndNew()));
         }else{
-            //如果方案中未录入,则不校验该项因子
+            //如果方案中未录入(是空或为9时),则不校验该项因子
             factor1.setNeedMatch(false);
         }
         resultMqp.put(1,factor1);
@@ -295,11 +325,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         factor2.setFactorName("是否新能源");
         factor2.setMatchType("1");
         factor2.setMatchSequence(2);
-        if(factorCost.getNewEnergy()!=null){
+        if(factorCost.getNewEnergy()!=null&&factorCost.getNewEnergy()!=9){
             factor2.setNeedMatch(true);
             factor2.setSingleSelectVal(String.valueOf(factorCost.getNewEnergy()));
         }else{
-            //如果方案中未录入,则不校验该项因子
+            //如果方案中未录入(是空或为9时),则不校验该项因子
             factor2.setNeedMatch(false);
         }
         resultMqp.put(2,factor2);
@@ -308,11 +338,11 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         factor3.setFactorName("是否续保");
         factor3.setMatchType("1");
         factor3.setMatchSequence(3);
-        if(factorCost.getRenewal()!=null){
+        if(factorCost.getRenewal()!=null&&factorCost.getRenewal()!=9){
             factor3.setNeedMatch(true);
             factor3.setSingleSelectVal(String.valueOf(factorCost.getRenewal()));
         }else{
-            //如果方案中未录入,则不校验该项因子
+            //如果方案中未录入(是空或为9时),则不校验该项因子
             factor3.setNeedMatch(false);
         }
         resultMqp.put(3,factor3);
@@ -566,8 +596,8 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         String isTransfer = "0";
         String isNewCar = "0";
         String isRenewal = "0";
-        String useNature = "";
-        String carType="";
+        String useNature = "家庭自用";
+        String carType="客车";
         String isNewEnergy = "0";
         feeSchemeReqDto.setBusType(productId);//"业务类型:单交0330、单商034001、单三034002、交三0330034002、交商0330034001"
         feeSchemeReqDto.setAgreementId(agreementId);//协议ID
@@ -585,7 +615,7 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         feeSchemeReqDto.setIsNewEnergy(isNewEnergy);//是否新能源    1是  0否
         feeSchemeReqDto.setIsRenewal("0");//是否续保    1是  0否    续保取值有争议 默认送否 暂时搁置
         //页面要素及中煤交互请求返参没有,先默认写死
-        if("A0".equals(carInfoVo.getCartype())){
+        if("A0".equals(carInfoVo.getCimodelclass())){
             carType="客车";
         }
         feeSchemeReqDto.setVehicleCategory(carType);//车辆大类: 客车、货车、特种车、挂车、摩托车、拖拉机
@@ -612,4 +642,189 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         }
         return feeSchemeReqDto;
     }
+
+    public void dealFeeOrderInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId,String businessNo){
+        BigDecimal jqNoTaxPremium = new BigDecimal(0);
+        BigDecimal syNoTaxPremium = new BigDecimal(0);
+        InsOrders insOrders = insOrdersService.getById(quoteRespVo.getOrderno());
+        FeeSchemeReqDto feeSchemeReqDto = this.getFeeSchemeInfo(quoteInfoVo,quoteRespVo,agreementId,insOrders.getProductid());
+        FeeSchemeResDto feeSchemeResDto = this.matchTheAppropriateFees(feeSchemeReqDto);
+        InsFeeOrder insFeeOrder = new InsFeeOrder(feeSchemeReqDto,feeSchemeResDto,businessNo);
+        //先通过含税保费计算出不含税保费 公式 总保费/(1+增值税率) 目前增值税率是0.06
+        if(insFeeOrder.getJqPremium().doubleValue()>0){
+            jqNoTaxPremium = insFeeOrder.getJqPremium().divide(new BigDecimal(1+0.06),BigDecimal.ROUND_HALF_UP,2);
+            insFeeOrder.setJqNoTaxPremium(jqNoTaxPremium);
+            //交强险总费用
+            insFeeOrder.setJqCostsPremiums(getPremium(jqNoTaxPremium,insFeeOrder.getJqCostsProportion()));
+            //监管费比例
+            if("1".equals(feeSchemeReqDto.getIsNewCar())){
+                insFeeOrder.setJqSuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqNewCarCostsProportion()));
+            }else if("0".equals(feeSchemeReqDto.getIsNewCar())){
+                insFeeOrder.setJqSuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqOldCarCostsProportion()));
+            }else{
+                insFeeOrder.setJqSuperviseCostsProportion(new BigDecimal(0));
+            }
+            //监管费
+            insFeeOrder.setJqSuperviseCostsPremiums(getPremium(jqNoTaxPremium,insFeeOrder.getJqSuperviseCostsProportion()));
+            //溢出费比例 先搁置放0
+            insFeeOrder.setJqSpilloverProportion(new BigDecimal(feeSchemeResDto.getJqSpilloverProportion()));
+            //溢出费 先搁置放0
+            insFeeOrder.setJqSpilloverPremiums(getPremium(jqNoTaxPremium,insFeeOrder.getJqSpilloverProportion()));
+        }
+        if(insFeeOrder.getSyPremium().doubleValue()>0){
+            syNoTaxPremium = insFeeOrder.getJqPremium().divide(new BigDecimal(1+0.06),BigDecimal.ROUND_HALF_UP,2);
+            insFeeOrder.setSyNoTaxPremium(syNoTaxPremium);
+            //商业险总费用
+            insFeeOrder.setSyCostsPremiums(getPremium(syNoTaxPremium,insFeeOrder.getJqCostsProportion()));
+            //监管费比例
+            if("1".equals(feeSchemeReqDto.getIsNewCar())){
+                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqNewCarCostsProportion()));
+            }else if("0".equals(feeSchemeReqDto.getIsNewCar())){
+                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(feeSchemeResDto.getJqOldCarCostsProportion()));
+            }else{
+                insFeeOrder.setSySuperviseCostsProportion(new BigDecimal(0));
+            }
+            //监管费
+            insFeeOrder.setSySuperviseCostsPremiums(getPremium(syNoTaxPremium,insFeeOrder.getJqSuperviseCostsProportion()));
+            //溢出费比例 先搁置放0
+            insFeeOrder.setSySpilloverProportion(new BigDecimal(feeSchemeResDto.getJqSpilloverProportion()));
+            //溢出费 先搁置放0
+            insFeeOrder.setSySpilloverPremiums(getPremium(syNoTaxPremium,insFeeOrder.getJqSpilloverProportion()));
+        }
+
+        if(jqNoTaxPremium.doubleValue() >0 || syNoTaxPremium.doubleValue() >0){
+            BigDecimal totalNoTaxPremium = jqNoTaxPremium.add(syNoTaxPremium);
+            SysUser sysUser = sysUserService.findByUserId(insOrders.getUserid());
+            /**
+             * 机构管理费比例逻辑
+             * 当前出单员的机构编码找他的上一级就是五级
+             * 机构层级划分方式
+             * 99 总公司              一级
+             * 9914山西分公司         二级
+             * 991401太原中支         三级
+             * 99140105小店中支       四级
+             * 9914010501 营销服务部  五级
+             *            1团队       无机构层级
+             */
+            SysDept sysDept = sysDeptService.getById(sysUser.getDeptId());
+            if(StringUtils.isNotEmpty(sysDept.getComlevel())){
+                throw new SystemException("当前出单员归属团队有误,请检查机构层级配置!");
+            }
+            //得到五级机构
+            SysDept sysDeptFifth = sysDeptService.getById(sysDept.getParentId());
+            SysDept sysDeptForth = sysDeptService.getById(sysDeptFifth.getParentId());
+            SysDept sysDeptThird = sysDeptService.getById(sysDeptForth.getParentId());
+            SysDept sysDeptSecond = sysDeptService.getById(sysDeptThird.getParentId());
+            SysDept sysDeptFirst = sysDeptService.getById(sysDeptSecond.getParentId());
+            //五级机构管理费用比例
+            if(sysDeptFifth!=null && "5".equals(sysDeptFifth.getComlevel())){
+                insFeeOrder.setFifthDeptProportion(new BigDecimal(sysDeptFifth.getManagementFee()));
+                insFeeOrder.setFifthDeptPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getFifthDeptProportion()));
+            }
+            //四级机构管理费用比例
+            if(sysDeptForth!=null && "4".equals(sysDeptForth.getComlevel())){
+                insFeeOrder.setForthDeptProportion(new BigDecimal(sysDeptForth.getManagementFee()));
+                insFeeOrder.setForthDeptPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getForthDeptProportion()));
+            }
+            //三级机构管理费用比例
+            if(sysDeptThird!=null && "3".equals(sysDeptThird.getComlevel())){
+                insFeeOrder.setThirdDeptProportion(new BigDecimal(sysDeptThird.getManagementFee()));
+                insFeeOrder.setThirdDeptPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getThirdDeptProportion()));
+            }
+            //二级机构管理费用比例
+            if(sysDeptSecond!=null && "2".equals(sysDeptSecond.getComlevel())){
+                insFeeOrder.setSecondDeptProportion(new BigDecimal(sysDeptSecond.getManagementFee()));
+                insFeeOrder.setSecondDeptPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getSecondDeptProportion()));
+            }
+            //一级机构管理费用比例
+            if(sysDeptFirst!=null && "1".equals(sysDeptFirst.getComlevel())){
+                insFeeOrder.setFirstDeptProportion(new BigDecimal(sysDeptFirst.getManagementFee()));
+                insFeeOrder.setFirstDeptPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getFirstDeptProportion()));
+            }
+            //一级分销比例   推荐人
+            //二级分销比例
+            //三级分销比例
+            /**
+             * 分销一级、二级、三级存值取团队配置的分销佣金比例,若该团队走三级分销模式,当前出单员出单时,跟单的分销取值方式为:
+             * 根据出单员的推荐人向上找三级,若可以找到,则跟单存一、二、三分销比例;
+             * 若向上只能找到一级或者二级,则跟单存一级或者一级、二级
+             * 比如 A 1 B 2 C 3 D  若D出单 则给 C 3个 B 2个 A 1个;C出单给 B 3个 A 2个
+             * 第一步,先判断团队配置的分销模式
+             * 第二步,根据分销模式找上级存值相应分销比例
+             * 第三步,仅有一个上级的情况分销比例存啥
+             */
+            List<EsmRetail> esmRetailList = esmRetailService.selectList(" where t.deptid=? and t.status = '1' ", new Object[]{sysUser.getDeptId()});
+
+            if(esmRetailList!=null && esmRetailList.size()>0){
+                EsmRetail esmRetail = esmRetailList.get(0);
+                if(esmRetail!=null){
+                    int cycleIndex = 0;
+                    if("3".equals(esmRetail.getRetailtype())){//团队配置了三级分销模式
+                        cycleIndex = 3;
+                    }else if("2".equals(esmRetail.getRetailtype())){//团队配置了二级分销模式
+                        cycleIndex = 2;
+                    }else if("1".equals(esmRetail.getRetailtype())){//团队配置了一级分销模式
+                        cycleIndex = 1;
+                    }else if("0".equals(esmRetail.getRetailtype())){//团队没有配置分销模式
+                        cycleIndex = 0;
+                    }
+
+                    //利用当前工号,循环向上找推荐人
+                    String userId = sysUser.getId();
+                    int breakCycle = 99999999;
+                    for(int i=0;i<=cycleIndex;i++){
+                        EsmUserReferrer userReferrer = esmUserReferrerService.getById(userId);
+                        if(userReferrer.getReferrerId().equals(userReferrer.getId())){//团队长,没有上级
+                            //跳出循环
+                            breakCycle = i;
+                            break;
+                        }else {
+                            userId = userReferrer.getReferrerId();
+                        }
+                    }
+                    //breakCycle是3,当前工号的上级的上级的上级就是团队长
+                    //breakCycle是2,当前工号的上级的上级就是团队长
+                    //breakCycle是1,当前工号的上级就是团队长
+                    //breakCycle是0,当前工号就是团队长
+
+                    if("3".equals(esmRetail.getRetailtype())){//团队配置了三级分销模式
+                        if(breakCycle==99999999||breakCycle==3){
+                            insFeeOrder.setFirstRetailProportion(new BigDecimal(esmRetail.getDisrate1()));
+                            insFeeOrder.setSecondRetailProportion(new BigDecimal(esmRetail.getDisrate2()));
+                            insFeeOrder.setThirdRetailProportion(new BigDecimal(esmRetail.getDisrate3()));
+                        }else if(breakCycle==2){
+                            insFeeOrder.setSecondRetailProportion(new BigDecimal(esmRetail.getDisrate2()));
+                            insFeeOrder.setThirdRetailProportion(new BigDecimal(esmRetail.getDisrate3()));
+                        }else if(breakCycle==1){
+                            insFeeOrder.setThirdRetailProportion(new BigDecimal(esmRetail.getDisrate3()));
+                        }
+                    }else if("2".equals(esmRetail.getRetailtype())){//团队配置了二级分销模式
+                        if(breakCycle==99999999||breakCycle==3 || breakCycle==2){
+                            insFeeOrder.setFirstRetailProportion(new BigDecimal(esmRetail.getDisrate1()));
+                            insFeeOrder.setSecondRetailProportion(new BigDecimal(esmRetail.getDisrate2()));
+                        }else if(breakCycle==1){
+                            insFeeOrder.setSecondRetailProportion(new BigDecimal(esmRetail.getDisrate2()));
+                        }
+                    }else if("1".equals(esmRetail.getRetailtype())){//团队配置了一级分销模式
+                        if(breakCycle==99999999||breakCycle==3 || breakCycle==2||breakCycle==1){
+                            insFeeOrder.setFirstRetailProportion(new BigDecimal(esmRetail.getDisrate1()));
+                        }
+                    }
+                    insFeeOrder.setFirstRetailPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getFirstRetailProportion()));
+                    insFeeOrder.setSecondRetailPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getSecondRetailProportion()));
+                    insFeeOrder.setThirdRetailPremiums(getPremium(totalNoTaxPremium,insFeeOrder.getThirdRetailProportion()));
+
+                }
+            }
+        }
+        insFeeOrderService.insertCompanyAndOrders(insFeeOrder);
+    }
+
+    private BigDecimal getPremium(BigDecimal noTaxPremium,BigDecimal costsProportion){
+        BigDecimal premium = new BigDecimal(0);
+        if(costsProportion!=null && costsProportion.doubleValue()>0){
+            premium = noTaxPremium.multiply(costsProportion).divide(new BigDecimal(100),4,BigDecimal.ROUND_HALF_UP);
+        }
+        return premium;
+    }
 }

+ 18 - 0
src/main/java/com/ydtech/modules/order/dao/InsFeeOrderSubMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.order.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.order.entity.InsFeeOrderSub;
+
+/**
+ * @author CXP
+ * @description 针对表【ins_agreement_order_sub(报价渠道)】的数据库操作Mapper
+ * @createDate 2023-01-31 15:51:19
+ * @Entity generator.domain.InsAgreementOrder
+ */
+public interface InsFeeOrderSubMapper extends BaseMapper<InsFeeOrderSub> {
+
+}
+
+
+
+

+ 172 - 4
src/main/java/com/ydtech/modules/order/entity/InsFeeOrder.java

@@ -3,14 +3,19 @@ package com.ydtech.modules.order.entity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ydtech.modules.fee.dto.FeeSchemeReqDto;
 import com.ydtech.modules.fee.dto.FeeSchemeResDto;
+import com.ydtech.utils.BigDecimalUtils;
 import com.ydtech.utils.idgen.IdGenerate;
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
 
 /**
  * 订单费用跟单表
@@ -42,13 +47,174 @@ public class InsFeeOrder implements Serializable {
      * 交强险费用比例
      */
     @TableField(value = "jq_costs_proportion")
-    private String jqCostsProportion;
+    private BigDecimal jqCostsProportion;
 
     /**
      * 商业险费用比例
      */
     @TableField(value = "sy_costs_proportion")
-    private String syCostsProportion;
+    private BigDecimal syCostsProportion;
+
+    /**
+     * 交强险总费用
+     */
+    @TableField(value = "jq_costs_premiums")
+    private BigDecimal jqCostsPremiums;
+
+    /**
+     * 商业险总费用
+     */
+    @TableField(value = "sy_costs_premiums")
+    private BigDecimal syCostsPremiums;
+    /**
+     * 交强险保费
+     */
+    @TableField(value = "jq_premium")
+    private BigDecimal jqPremium;
+
+    /**
+     * 商业险保费
+     */
+    @TableField(value = "sy_premium")
+    private BigDecimal syPremium;
+    /**
+     * 交强险不含税保费
+     */
+    @TableField(value = "jq_no_tax_premium")
+    private BigDecimal jqNoTaxPremium;
+
+    /**
+     * 商业险不含税保费
+     */
+    @TableField(value = "sy_no_tax_premium")
+    private BigDecimal syNoTaxPremium;
+    /**
+     * 交强监管费比例
+     */
+    @TableField(value = "jq_supervise_costs_proportion")
+    private BigDecimal jqSuperviseCostsProportion;
+
+    /**
+     * 交强监管费
+     */
+    @TableField(value = "jq_supervise_costs_premiums")
+    private BigDecimal jqSuperviseCostsPremiums;
+    /**
+     * 商业监管费比例
+     */
+    @TableField(value = "sy_supervise_costs_proportion")
+    private BigDecimal sySuperviseCostsProportion;
+    /**
+     * 商业监管费
+     */
+    @TableField(value = "sy_supervise_costs_premiums")
+    private BigDecimal sySuperviseCostsPremiums;
+    /**
+     * 交强溢出比例
+     */
+    @TableField(value = "jq_spillover_proportion")
+    private BigDecimal jqSpilloverProportion;
+    /**
+     * 交强溢出费用
+     */
+    @TableField(value = "jq_spillover_premiums")
+    private BigDecimal jqSpilloverPremiums;
+    /**
+     * 商业溢出比例
+     */
+    @TableField(value = "sy_spillover_proportion")
+    private BigDecimal sySpilloverProportion;
+    /**
+     * 商业溢出费用
+     */
+    @TableField(value = "sy_spillover_premiums")
+    private BigDecimal sySpilloverPremiums;
+    /**
+     * 一级机构管理费比例
+     */
+    @TableField(value = "first_dept_proportion")
+    private BigDecimal firstDeptProportion;
+    /**
+     * 一级机构管理费
+     */
+    @TableField(value = "first_dept_premiums")
+    private BigDecimal firstDeptPremiums;
+    /**
+     * 二级机构管理费比例
+     */
+    @TableField(value = "second_dept_proportion")
+    private BigDecimal secondDeptProportion;
+    /**
+     * 二级机构管理费
+     */
+    @TableField(value = "second_dept_premiums")
+    private BigDecimal secondDeptPremiums;
+    /**
+     * 三级机构管理费比例
+     */
+    @TableField(value = "third_dept_proportion")
+    private BigDecimal thirdDeptProportion;
+    /**
+     * 三级机构管理费
+     */
+    @TableField(value = "third_dept_premiums")
+    private BigDecimal thirdDeptPremiums;
+    /**
+     * 四级机构管理费比例
+     */
+    @TableField(value = "forth_dept_proportion")
+    private BigDecimal forthDeptProportion;
+    /**
+     * 四级机构管理费
+     */
+    @TableField(value = "forth_dept_premiums")
+    private BigDecimal forthDeptPremiums;
+    /**
+     * 五级机构管理费比例
+     */
+    @TableField(value = "fifth_dept_proportion")
+    private BigDecimal fifthDeptProportion;
+    /**
+     * 五级机构管理费
+     */
+    @TableField(value = "fifth_dept_premiums")
+    private BigDecimal fifthDeptPremiums;
+    /**
+     * 一级分销比例
+     */
+    @TableField(value = "first_detail_proportion")
+    private BigDecimal firstRetailProportion;
+    /**
+     * 一级分销费
+     */
+    @TableField(value = "first_detail_premiums")
+    private BigDecimal firstRetailPremiums;
+    /**
+     * 二级分销比例
+     */
+    @TableField(value = "second_detail_proportion")
+    private BigDecimal secondRetailProportion;
+    /**
+     * 二级分销费
+     */
+    @TableField(value = "second_detail_premiums")
+    private BigDecimal secondRetailPremiums;
+    /**
+     * 三级分销比例
+     */
+    @TableField(value = "third_detail_proportion")
+    private BigDecimal thirdRetailProportion;
+    /**
+     * 三级分销费
+     */
+    @TableField(value = "third_detail_premiums")
+    private BigDecimal thirdRetailPremiums;
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
 
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
@@ -57,8 +223,10 @@ public class InsFeeOrder implements Serializable {
         this.id = IdGenerate.nextId();
         this.insOrderNo = insOrderNo;
         this.agreementId = feeSchemeReqDto.getAgreementId();
-        this.jqCostsProportion = feeSchemeResDto.getJqCostsProportion();
-        this.syCostsProportion = feeSchemeResDto.getSyCostsProportion();
+        this.jqCostsProportion = BigDecimalUtils.transferToBigDecmail(feeSchemeResDto.getJqCostsProportion());
+        this.syCostsProportion = BigDecimalUtils.transferToBigDecmail(feeSchemeResDto.getSyCostsProportion());
+        this.jqPremium = BigDecimalUtils.transferToBigDecmail(feeSchemeReqDto.getJqPremium());
+        this.syPremium = BigDecimalUtils.transferToBigDecmail(feeSchemeReqDto.getSyPremium());
     }
 
 }

+ 110 - 0
src/main/java/com/ydtech/modules/order/entity/InsFeeOrderSub.java

@@ -0,0 +1,110 @@
+package com.ydtech.modules.order.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ydtech.modules.fee.dto.FeeSchemeReqDto;
+import com.ydtech.modules.fee.dto.FeeSchemeResDto;
+import com.ydtech.utils.idgen.IdGenerate;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 订单费用跟单子表
+ *
+ * @TableName ins_fee_order_sub
+ */
+@TableName(value = "ins_fee_order_sub", autoResultMap = true)
+@Data
+@ApiModel(value = "报价渠道")
+@NoArgsConstructor
+public class InsFeeOrderSub implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id")
+    private String id;
+    /**
+     * 订单号
+     */
+    @TableField(value = "ins_order_no")
+    private String insOrderNo;
+    /**
+     * 非车订单号
+     */
+    @TableField(value = "fc_ins_order_no")
+    private String fcInsOrderNo;
+    /**
+     * 协议id
+     */
+    @TableField(value = "agreement_id")
+    private String agreementId;
+
+    /**
+     * 非车费用比例
+     */
+    @TableField(value = "fc_costs_proportion")
+    private BigDecimal fcCostsProportion;
+
+    /**
+     * 非车总费用
+     */
+    @TableField(value = "fc_costs_premiums")
+    private BigDecimal fcCostsPremiums;
+
+    /**
+     * 非车险保费
+     */
+    @TableField(value = "fc_premium")
+    private BigDecimal fcPremium;
+
+    /**
+     * 非车不含税保费
+     */
+    @TableField(value = "fc_no_tax_premium")
+    private BigDecimal fcNoTaxPremium;
+    /**
+     * 非车监管费比例
+     */
+    @TableField(value = "fc_supervise_costs_proportion")
+    private BigDecimal fcSuperviseCostsProportion;
+
+    /**
+     * 非车监管费
+     */
+    @TableField(value = "fc_supervise_costs_premiums")
+    private BigDecimal fcSuperviseCostsPremiums;
+    /**
+     * 非车溢出比例
+     */
+    @TableField(value = "fc_spillover_proportion")
+    private BigDecimal fcSpilloverProportion;
+    /**
+     * 非车溢出费用
+     */
+    @TableField(value = "fc_spillover_premiums")
+    private BigDecimal fcSpilloverPremiums;
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    public InsFeeOrderSub(FeeSchemeReqDto feeSchemeReqDto, FeeSchemeResDto feeSchemeResDto, String insOrderNo) {
+        this.id = IdGenerate.nextId();
+        this.insOrderNo = insOrderNo;
+        this.agreementId = feeSchemeReqDto.getAgreementId();
+        this.fcPremium = new BigDecimal(feeSchemeReqDto.getNoCarPremium());
+    }
+
+}

+ 51 - 0
src/main/java/com/ydtech/modules/order/entity/api/zm/response/QuotedPriceResponse.java

@@ -27,6 +27,12 @@ public class QuotedPriceResponse extends BaseResponse {
     private String businessNo;
     @JsonProperty("forcePrimium")
     private ForcePrimiumDTO forcePrimium;
+    @JsonProperty("forcePlatformMsg")
+    private PlatformMessage forcePlatformMsg;
+    @JsonProperty("bizPlatformMsg")
+    private PlatformMessage bizPlatformMsg;
+    @JsonProperty("bizPlatformMsg")
+    private AccidentPrimium rideAccidentPrimium;
     @JsonProperty("insuranceScheme")
     private InsuranceSchemeDTO insuranceScheme;
     @JsonProperty("platMain")
@@ -138,4 +144,49 @@ public class QuotedPriceResponse extends BaseResponse {
         @JsonProperty("sumPayTax")
         private double sumPayTax;
     }
+    @NoArgsConstructor
+    @Data
+    public static class PlatformMessage {
+        @JsonProperty("question")
+        private String question;
+        @JsonProperty("answer")
+        private String answer;
+        @JsonProperty("demandNo")
+        private String demandNo;
+    }
+    @NoArgsConstructor
+    @Data
+    public static class AccidentPrimium {
+        /**
+         * 方案代码
+         */
+        @JsonProperty("rideRiskCode")
+        private String rideRiskCode;
+        /**
+         *方案名称
+         */
+        @JsonProperty("rideRiskName")
+        private String rideRiskName;
+        /**
+         *  总费用
+         */
+        @JsonProperty("sumPremium")
+        private double sumPremium;
+        /**
+         *  单位保费
+         */
+        @JsonProperty("unitPremium")
+        private double unitPremium;
+        /**
+         * 总保额
+         */
+        @JsonProperty("insuranceAmount")
+        private double insuranceAmount;
+        /**
+         * 份数
+         */
+        @JsonProperty("quantity")
+        private double quantity;
+    }
+
 }

+ 44 - 0
src/main/java/com/ydtech/modules/order/service/InsFeeOrderSubService.java

@@ -0,0 +1,44 @@
+package com.ydtech.modules.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.order.entity.InsFeeOrder;
+import com.ydtech.modules.order.entity.InsFeeOrderSub;
+
+/**
+ * @author CXP
+ * @description 针对表【ins_area_company(费用跟单)】的数据库操作Service
+ * @createDate 2023-9-12 21:30:24
+ */
+public interface InsFeeOrderSubService extends IService<InsFeeOrderSub> {
+
+    /**
+     * 通过子订单查询费用跟单表
+     *
+     * @param companyId 子订单
+     * @return InsAreaCompany
+     */
+    InsFeeOrderSub getByIdIsExist(String companyId);
+
+
+    /**
+     * 通过 保险公司订单号查询费用跟单表
+     *
+     * @param insOrderNo 保险公司订单号
+     * @return InsAreaCompany
+     */
+    InsFeeOrderSub getByInsOrderNo(String insOrderNo);
+
+    /**
+     * 修改费用跟单表
+     *
+     * @param insFeeOrder
+     */
+    void updateCompanyAndOrders(InsFeeOrderSub insFeeOrder);
+
+    /**
+     * 插入费用跟单表
+     *
+     * @param insFeeOrder
+     */
+    void insertCompanyAndOrders(InsFeeOrderSub insFeeOrder);
+}

+ 55 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsFeeOrderSubServiceImpl.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.order.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.order.dao.InsFeeOrderMapper;
+import com.ydtech.modules.order.dao.InsFeeOrderSubMapper;
+import com.ydtech.modules.order.entity.InsFeeOrder;
+import com.ydtech.modules.order.entity.InsFeeOrderSub;
+import com.ydtech.modules.order.service.InsFeeOrderService;
+import com.ydtech.modules.order.service.InsFeeOrderSubService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+
+/**
+ * @author CXP
+ * @description 针对表【ins_agreement_order(费用跟单)】的数据库操作Service实现
+ * @createDate 2023-9-12 21:29:23
+ */
+@Service
+public class InsFeeOrderSubServiceImpl extends ServiceImpl<InsFeeOrderSubMapper, InsFeeOrderSub>
+        implements InsFeeOrderSubService {
+
+
+    @Override
+    public InsFeeOrderSub getByIdIsExist(String companyId) {
+        InsFeeOrderSub insFeeOrderSub = this.getById(companyId);
+        if (ObjectUtils.isEmpty(insFeeOrderSub)) {
+            throw new SystemException("费用跟单表不存在");
+        }
+        return insFeeOrderSub;
+    }
+
+    @Override
+    public InsFeeOrderSub getByInsOrderNo(String insOrderNo) {
+        return baseMapper.selectOne(new LambdaQueryWrapper<InsFeeOrderSub>().eq(InsFeeOrderSub::getInsOrderNo, insOrderNo));
+    }
+
+    @Override
+    @Transactional
+    public void updateCompanyAndOrders(InsFeeOrderSub insFeeOrderSub) {
+        baseMapper.updateById(insFeeOrderSub);
+    }
+
+    @Override
+    public void insertCompanyAndOrders(InsFeeOrderSub insFeeOrderSub) {
+        baseMapper.insert(insFeeOrderSub);
+    }
+
+}
+
+
+
+

+ 7 - 60
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java

@@ -42,6 +42,7 @@ import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.utils.CalculateUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
@@ -151,13 +152,13 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
 
         QuotedPriceResponse quotedPriceResponse = zhongmeiRequestApiComponents.quotedPrice(quotedPriceRequest, QuotedPriceResponse.class);
         QuoteRespVo quoteRespVo = getQuoteRespVo(quotedPriceResponse, quoteInfo);
-
+        if(quotedPriceResponse.getBizPlatformMsg()!=null && StringUtils.isNotEmpty(quotedPriceResponse.getBizPlatformMsg().getAnswer())){
+            if(quotedPriceResponse.getBizPlatformMsg().getAnswer().contains("起保日期")&&quotedPriceResponse.getBizPlatformMsg().getAnswer().contains("终保日期")){
+                return HttpResult.error(quotedPriceResponse.getBizPlatformMsg().getAnswer());
+            }
+        }
         //这里调用费用匹配功能
-        /*InsOrders insOrders = insOrdersService.getById(quoteRespVo.getOrderno());
-        FeeSchemeReqDto feeSchemeReqDto = feeRuleSchemeService.getFeeSchemeInfo(quoteInfo,quoteRespVo,ptlAgreementAttribution.getId(),insOrders.getProductid());
-        FeeSchemeResDto feeSchemeResDto = feeRuleSchemeService.matchTheAppropriateFees(feeSchemeReqDto);
-        InsFeeOrder insFeeOrder = new InsFeeOrder(feeSchemeReqDto,feeSchemeResDto,quotedPriceResponse.getBusinessNo());
-        insFeeOrderService.insertCompanyAndOrders(insFeeOrder);*/
+        //feeRuleSchemeService.dealFeeOrderInfo(quoteInfo,quoteRespVo,ptlAgreementAttribution.getId(),quotedPriceResponse.getBusinessNo());
         return responseOrder(quotedPriceResponse, quoteRespVo, ptlAgreementAttribution);
     }
 
@@ -411,60 +412,6 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         quoteRespVo.setTaxArrears(taxArrearsList);
         return HttpResult.ok(quotedPriceResponse.getHead().getReturnMessage(), quoteRespVo);
     }
-   /* private FeeSchemeReqDto getFeeSchemeInfo(QuotedPriceRequest quotedPriceRequest,QuotedPriceResponse quotedPriceResponse, QuoteRespVo quoteRespVo,String agreementId,String productId){
-        QuotedPriceRequest.BusinessDataDTO.InsuredObjectDTO.PolicyCarDTO policyCarDTO = quotedPriceRequest.getBusinessData().getInsuredObject().getPolicyCar();
-        ModelsQueryResponse.SimpleStadarCarDTO simpleStadarCarDTO = quotedPriceRequest.getBusinessData().getInsuredObject().getSimpleStadarCar();
-        List<QuoteKindRespVo> kindList = quoteRespVo.getKindList();
-        String thirdPartyInsurance = "";
-        if(kindList!=null && kindList.size()>0){
-            for(QuoteKindRespVo quoteKindRespVo:kindList){
-                if("B".equals(quoteKindRespVo.getKindCode())){
-                    thirdPartyInsurance = String.valueOf(quoteKindRespVo.getAmount());
-                }
-            }
-        }
-        FeeSchemeReqDto feeSchemeReqDto = new FeeSchemeReqDto();
-        String isTransfer = "0";
-        String isNewCar = "0";
-        String isRenewal = "0";
-        String useNature = "";
-        feeSchemeReqDto.setBusType(productId);//"业务类型:单交0330、单商034001、单三034002、交三0330034002、交商0330034001"
-        feeSchemeReqDto.setAgreementId(agreementId);//协议ID
-        if(StringUtils.isNotEmpty(policyCarDTO.getChgOwnerFlag())&& "01".equals(policyCarDTO.getChgOwnerFlag())){
-            isTransfer = "1";
-        }
-        feeSchemeReqDto.setIsTransfer(isTransfer);//是否过户    1是  0否"
-        if(policyCarDTO.getNewCarSign()){
-            isNewCar = "1";
-        }
-        feeSchemeReqDto.setIsNewCar(isNewCar);//是否新车    1是  0否
-        feeSchemeReqDto.setIsNewEnergy("");//是否新能源    1是  0否
-        if(quotedPriceResponse.getBizPremium().getIsRenewal()){
-            isRenewal = "1";
-        }
-        feeSchemeReqDto.setIsRenewal(isRenewal);//是否续保    1是  0否
-        //页面要素及中煤交互请求返参没有,先默认写死
-        feeSchemeReqDto.setVehicleCategory("客车");//车辆大类: 客车、货车、特种车、挂车、摩托车、拖拉机
-        if("01".equals(policyCarDTO.getCarUseType())){
-            useNature = "家庭自用";
-        }
-        feeSchemeReqDto.setUseNature(useNature);//使用性质: 营业出租、营业租赁、营业公交、营业客运、营业货运、营业旅游、家庭自用、非营业机关事业、非营业企业、非营业个人
-        feeSchemeReqDto.setSeatNum(String.valueOf(simpleStadarCarDTO.getApprovedPassengersCapacity()));//座位数
-        feeSchemeReqDto.setPurchasePrice(simpleStadarCarDTO.getPurchasePrice());//新车购置价
-        feeSchemeReqDto.setApprovedLoadCapacity(String.valueOf(simpleStadarCarDTO.getApprovedLoad()));//核定载质量
-        feeSchemeReqDto.setJqPremium(String.valueOf(quoteRespVo.getJqPremium()));//交强保费
-        feeSchemeReqDto.setSyPremium(String.valueOf(quoteRespVo.getSyPremium()));//商业保费
-        feeSchemeReqDto.setSumPayTax(String.valueOf(quoteRespVo.getTaxAmount()));//车船税金额
-        feeSchemeReqDto.setThirdPartyInsurance(thirdPartyInsurance);//三者险保额
-        feeSchemeReqDto.setNoCarPremium("");//随车产品保费
-        feeSchemeReqDto.setSyDiscount("");//商业险折扣
-        feeSchemeReqDto.setJqDiscount("");//交强险折扣
-        feeSchemeReqDto.setInsuranceScore(quotedPriceResponse.getPlatMain().getZmScore());//保司评分 这里直接取中煤分
-        feeSchemeReqDto.setExpectedLossRate("");//预期赔付率
-        feeSchemeReqDto.setLicenseNo(policyCarDTO.getPlateNo());//车牌号
-
-        return feeSchemeReqDto;
-    }*/
 
     @Override
     public HttpResult<Object> auditStatusQuery(String companyId) {

+ 4 - 1
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementProductCostsServiceImpl.java

@@ -114,9 +114,12 @@ public class PtlAgreementProductCostsServiceImpl extends ServiceImpl<PtlAgreemen
         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String nowDate=sdf.format(date);
         //组织查询条件
+        List tempTypes=new ArrayList();
+        tempTypes.add(busType);//跟单类型
+        tempTypes.add("039999");//兜底类型
         LambdaQueryWrapper<PtlAgreementProductCosts> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(PtlAgreementProductCosts::getAgreementId, agreementId);
-        wrapper.eq(PtlAgreementProductCosts::getProductId,busType);
+        wrapper.in(PtlAgreementProductCosts::getProductId,tempTypes);
         wrapper.le(PtlAgreementProductCosts::getCostsStartDate,nowDate);//有效起期小于等于当前时间
         wrapper.ge(PtlAgreementProductCosts::getCostsEndDate,nowDate);//有效止期大于等于当前时间
         wrapper.eq(PtlAgreementProductCosts::getHistory, 0);//查询所有非历史记录的

+ 12 - 0
src/main/java/com/ydtech/utils/BigDecimalUtils.java

@@ -78,4 +78,16 @@ public class BigDecimalUtils {
         }
         return bigDecimal;
     }
+
+    public static BigDecimal transferToBigDecmail(Object object) {
+        BigDecimal result = new BigDecimal(0.0);
+        if (object instanceof String){
+            String ex = (String)object;
+            if(StringUtils.isNotEmpty(ex)){
+                result = new BigDecimal(ex);
+            }
+        }
+        return result;
+    }
+
 }

+ 33 - 3
src/main/resources/mapper/modules/order/InsFeeOrder.xml

@@ -8,9 +8,39 @@
         <id property="id" column="id" jdbcType="VARCHAR"/>
         <result property="insOrderNo" column="ins_order_no" jdbcType="VARCHAR"/>
         <result property="agreementId" column="agreement_id" jdbcType="VARCHAR"/>
-        <result property="jqCostsProportion" column="jq_costs_proportion" jdbcType="VARCHAR"/>
-        <result property="syCostsProportion" column="sy_costs_proportion" jdbcType="VARCHAR"/>
-
+        <result property="jqCostsProportion" column="jq_costs_proportion" jdbcType="DECIMAL"/>
+        <result property="syCostsProportion" column="sy_costs_proportion" jdbcType="DECIMAL"/>
+        <result property="jqCostsPremiums" column="jq_costs_premiums" jdbcType="DECIMAL"/>
+        <result property="syCostsPremiums" column="sy_costs_premiums" jdbcType="DECIMAL"/>
+        <result property="jqPremium" column="jq_premium" jdbcType="DECIMAL"/>
+        <result property="syPremium" column="sy_premium" jdbcType="DECIMAL"/>
+        <result property="jqNoTaxPremium" column="jq_no_tax_premium" jdbcType="DECIMAL"/>
+        <result property="syNoTaxPremium" column="sy_no_tax_premium" jdbcType="DECIMAL"/>
+        <result property="jqSuperviseCostsProportion" column="jq_supervise_costs_proportion" jdbcType="DECIMAL"/>
+        <result property="jqSuperviseCostsPremiums" column="jq_supervise_costs_premiums" jdbcType="DECIMAL"/>
+        <result property="sySuperviseCostsProportion" column="sy_supervise_costs_proportion" jdbcType="DECIMAL"/>
+        <result property="sySuperviseCostsPremiums" column="sy_supervise_costs_premiums" jdbcType="DECIMAL"/>
+        <result property="jqSpilloverProportion" column="jq_spillover_proportion" jdbcType="DECIMAL"/>
+        <result property="jqSpilloverPremiums" column="jq_spillover_premiums" jdbcType="DECIMAL"/>
+        <result property="sySpilloverProportion" column="sy_spillover_proportion" jdbcType="DECIMAL"/>
+        <result property="sySpilloverPremiums" column="sy_spillover_premiums" jdbcType="DECIMAL"/>
+        <result property="firstDeptProportion" column="first_dept_proportion" jdbcType="DECIMAL"/>
+        <result property="firstDeptPremiums" column="first_dept_premiums" jdbcType="DECIMAL"/>
+        <result property="secondDeptProportion" column="second_dept_proportion" jdbcType="DECIMAL"/>
+        <result property="secondDeptPremiums" column="second_dept_premiums" jdbcType="DECIMAL"/>
+        <result property="thirdDeptProportion" column="third_dept_proportion" jdbcType="DECIMAL"/>
+        <result property="thirdDeptPremiums" column="third_dept_premiums" jdbcType="DECIMAL"/>
+        <result property="forthDeptProportion" column="forth_dept_proportion" jdbcType="DECIMAL"/>
+        <result property="forthDeptPremiums" column="forth_dept_premiums" jdbcType="DECIMAL"/>
+        <result property="fifthDeptProportion" column="fifth_dept_proportion" jdbcType="DECIMAL"/>
+        <result property="fifthDeptPremiums" column="fifth_dept_premiums" jdbcType="DECIMAL"/>
+        <result property="firstRetailProportion" column="first_detail_proportion" jdbcType="DECIMAL"/>
+        <result property="firstRetailPremiums" column="first_detail_premiums" jdbcType="DECIMAL"/>
+        <result property="secondRetailProportion" column="second_detail_proportion" jdbcType="DECIMAL"/>
+        <result property="secondRetailPremiums" column="second_detail_premiums" jdbcType="DECIMAL"/>
+        <result property="thirdRetailProportion" column="third_detail_proportion" jdbcType="DECIMAL"/>
+        <result property="thirdRetailPremiums" column="third_detail_premiums" jdbcType="DECIMAL"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
     </resultMap>
 
     <sql id="Base_Column_List">

+ 27 - 0
src/main/resources/mapper/modules/order/InsFeeOrderSub.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.order.dao.InsFeeOrderSubMapper">
+
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.order.entity.InsFeeOrderSub">
+        <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="insOrderNo" column="ins_order_no" jdbcType="VARCHAR"/>
+        <result property="fcInsOrderNo" column="fc_ins_order_no" jdbcType="VARCHAR"/>
+        <result property="agreementId" column="agreement_id" jdbcType="VARCHAR"/>
+        <result property="fcCostsProportion" column="fc_costs_proportion" jdbcType="DECIMAL"/>
+        <result property="fcCostsPremiums" column="fc_costs_premiums" jdbcType="DECIMAL"/>
+        <result property="fcPremium" column="fc_premium" jdbcType="DECIMAL"/>
+        <result property="fcNoTaxPremium" column="fc_no_tax_premium" jdbcType="DECIMAL"/>
+        <result property="fcSuperviseCostsProportion" column="fc_supervise_costs_proportion" jdbcType="DECIMAL"/>
+        <result property="fcSuperviseCostsPremiums" column="fc_supervise_costs_premiums" jdbcType="DECIMAL"/>
+        <result property="fcSpilloverProportion" column="fc_spillover_proportion" jdbcType="DECIMAL"/>
+        <result property="fcSpilloverPremiums" column="fc_spillover_premiums" jdbcType="DECIMAL"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,orderno,agreementId,jqPolicyNo,syPolicyNo,jqCostsProportion,syCostsProportion
+    </sql>
+
+</mapper>