فهرست منبع

中煤费用因子匹配所需参数组装及跟单费用表创建

cuixinpeng 3 سال پیش
والد
کامیت
53253cadd6

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

@@ -3,6 +3,8 @@ package com.ydtech.modules.fee.service;
 
 import com.ydtech.modules.fee.dto.FeeSchemeReqDto;
 import com.ydtech.modules.fee.dto.FeeSchemeResDto;
+import com.ydtech.modules.ins.model.vo.QuoteRespVo;
+import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 
 /**
  * 该类中只要包含费用的一些相关接口
@@ -15,4 +17,14 @@ public interface FeeRuleSchemeService {
      * @return
      */
     public FeeSchemeResDto matchTheAppropriateFees(FeeSchemeReqDto feeSchemeReqDto);
+
+    /**
+     * 根据跟单信息,组装费用匹配入参
+     * @param quoteInfoVo
+     * @param quoteRespVo
+     * @param agreementId
+     * @param productId
+     * @return
+     */
+    FeeSchemeReqDto getFeeSchemeInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId, String productId);
 }

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

@@ -5,6 +5,10 @@ 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.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.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
 import com.ydtech.modules.protocol.service.PtlAgreementProductCostsService;
 import org.apache.commons.lang3.math.NumberUtils;
@@ -537,4 +541,64 @@ public class FeeRuleSchemeServiceImpl implements FeeRuleSchemeService {
         }
         return result;
     }
+
+
+
+
+    //----------------------------------------------分割线
+
+    public FeeSchemeReqDto getFeeSchemeInfo(BaseQuoteInfoVo quoteInfoVo, QuoteRespVo quoteRespVo, String agreementId, String productId){
+        CarInfoVo carInfoVo = quoteInfoVo.getCarInfo();
+        List<KindInfoVo> kindList = quoteInfoVo.getKindList();
+        String thirdPartyInsurance = "";
+        if(kindList!=null && kindList.size()>0){
+            for(KindInfoVo kindInfoVo:kindList){
+                if("B".equals(kindInfoVo.getKindCode())){
+                    thirdPartyInsurance = String.valueOf(kindInfoVo.getAmount());
+                }
+            }
+        }
+        FeeSchemeReqDto feeSchemeReqDto = new FeeSchemeReqDto();
+        String isTransfer = "0";
+        String isNewCar = "0";
+        String isRenewal = "0";
+        String useNature = "";
+        String isNewEnergy = "0";
+        feeSchemeReqDto.setBusType(productId);//"业务类型:单交0330、单商034001、单三034002、交三0330034002、交商0330034001"
+        feeSchemeReqDto.setAgreementId(agreementId);//协议ID
+        if(carInfoVo.isTransferFlag()){
+            isTransfer = "1";
+        }
+        feeSchemeReqDto.setIsTransfer(isTransfer);//是否过户    1是  0否"
+        if(!carInfoVo.isUsedCar()){
+            isNewCar = "1";
+        }
+        feeSchemeReqDto.setIsNewCar(isNewCar);//是否新车    1是  0否
+        if("1".equals(carInfoVo.getPowertype())||"2".equals(carInfoVo.getPowertype())||"3".equals(carInfoVo.getPowertype())){
+            isNewEnergy = "1";
+        }
+        feeSchemeReqDto.setIsNewEnergy(isNewEnergy);//是否新能源    1是  0否
+        feeSchemeReqDto.setIsRenewal("0");//是否续保    1是  0否    续保取值有争议 默认送否 暂时搁置
+        //页面要素及中煤交互请求返参没有,先默认写死
+        feeSchemeReqDto.setVehicleCategory(carInfoVo.getCartype());//车辆大类: 客车、货车、特种车、挂车、摩托车、拖拉机
+        if("8A".equals(carInfoVo.getCarnature())){
+            useNature = "家庭自用";
+        }
+        feeSchemeReqDto.setUseNature(useNature);//使用性质: 营业出租、营业租赁、营业公交、营业客运、营业货运、营业旅游、家庭自用、非营业机关事业、非营业企业、非营业个人
+        feeSchemeReqDto.setSeatNum(String.valueOf(carInfoVo.getSeatCount()));//座位数 大概率准
+        feeSchemeReqDto.setPurchasePrice(carInfoVo.getPurchasePrice());//新车购置价  可能再次新车筛选的时候送保司和页面带入有差异
+        feeSchemeReqDto.setApprovedLoadCapacity(String.valueOf(carInfoVo.getLimitLoad()));//核定载质量  可能再次新车筛选的时候送保司和页面带入有差异
+        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(carInfoVo.getLicenseNo());//车牌号
+
+        return feeSchemeReqDto;
+    }
 }

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

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

+ 64 - 0
src/main/java/com/ydtech/modules/order/entity/InsAgreementOrder.java

@@ -0,0 +1,64 @@
+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.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;
+
+/**
+ * 订单费用跟单表
+ *
+ * @TableName ins_agreement_order
+ */
+@TableName(value = "ins_agreement_order", autoResultMap = true)
+@Data
+@ApiModel(value = "报价渠道")
+@NoArgsConstructor
+public class InsAgreementOrder implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(value = "id")
+    private String id;
+    /**
+     * 订单号
+     */
+    @TableField(value = "orderno")
+    private String orderno;
+    /**
+     * 协议id
+     */
+    @TableField(value = "agreement_id")
+    private String agreementId;
+
+    /**
+     * 交强险费用比例
+     */
+    @TableField(value = "jqCostRate")
+    private String jqCostRate;
+
+    /**
+     * 商业险费用比例
+     */
+    @TableField(value = "syCostRate")
+    private String syCostRate;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    public InsAgreementOrder(FeeSchemeReqDto feeSchemeReqDto, FeeSchemeResDto feeSchemeResDto,String orderno) {
+        this.id = IdGenerate.nextId();
+        this.orderno = orderno;
+        this.agreementId = feeSchemeReqDto.getAgreementId();
+        this.jqCostRate = feeSchemeResDto.getJqCostsProportion();
+        this.syCostRate = feeSchemeResDto.getSyCostsProportion();
+    }
+
+}

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

@@ -9,6 +9,7 @@ import com.ydtech.constants.enums.InsuranceRisk;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.fee.dto.FeeSchemeReqDto;
+import com.ydtech.modules.fee.dto.FeeSchemeResDto;
 import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.ins.model.request.Response;
 import com.ydtech.modules.ins.model.vo.*;
@@ -18,6 +19,7 @@ import com.ydtech.modules.order.components.ConfigureParametersComponents;
 import com.ydtech.modules.order.components.ZhongmeiRequestApiComponents;
 import com.ydtech.modules.order.constants.InsuranceTypeCorrespondence;
 import com.ydtech.modules.order.convert.SimpleStadarCarDTOConvert;
+import com.ydtech.modules.order.entity.InsAgreementOrder;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.TaxArrears;
@@ -150,9 +152,9 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
 
         //这里调用费用匹配功能
         InsOrders insOrders = insOrdersService.getById(quoteRespVo.getOrderno());
-        List<KindInfoVo> kindInfoVoList = quoteInfo.getKindList();
-        FeeSchemeReqDto feeSchemeReqDto = getFeeSchemeInfo(quotedPriceRequest,quotedPriceResponse,quoteRespVo,ptlAgreementAttribution.getId(),insOrders.getProductid(),kindInfoVoList);
-        feeRuleSchemeService.matchTheAppropriateFees(feeSchemeReqDto);
+        FeeSchemeReqDto feeSchemeReqDto = feeRuleSchemeService.getFeeSchemeInfo(quoteInfo,quoteRespVo,ptlAgreementAttribution.getId(),insOrders.getProductid());
+        FeeSchemeResDto feeSchemeResDto = feeRuleSchemeService.matchTheAppropriateFees(feeSchemeReqDto);
+        InsAgreementOrder insAgreementOrder = new InsAgreementOrder(feeSchemeReqDto,feeSchemeResDto,quotedPriceResponse.getBusinessNo());
         return responseOrder(quotedPriceResponse, quoteRespVo, ptlAgreementAttribution);
     }
 
@@ -406,7 +408,7 @@ 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,List<KindInfoVo> kindInfoVoList){
+   /* 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();
@@ -459,7 +461,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         feeSchemeReqDto.setLicenseNo(policyCarDTO.getPlateNo());//车牌号
 
         return feeSchemeReqDto;
-    }
+    }*/
 
     @Override
     public HttpResult<Object> auditStatusQuery(String companyId) {

+ 16 - 1
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderServiceImpl.java

@@ -14,6 +14,9 @@ import com.ydtech.modules.esm.model.InsTaskImage;
 import com.ydtech.modules.esm.service.EsmInsAttributionService;
 import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.esm.service.InsTaskImageService;
+import com.ydtech.modules.fee.dto.FeeSchemeReqDto;
+import com.ydtech.modules.fee.dto.FeeSchemeResDto;
+import com.ydtech.modules.fee.service.FeeRuleSchemeService;
 import com.ydtech.modules.ins.model.request.Response;
 import com.ydtech.modules.ins.model.request.ZhongmeiQuoteResponse;
 import com.ydtech.modules.ins.model.vo.*;
@@ -22,6 +25,7 @@ import com.ydtech.modules.ins.model.vo.res.ZmVerifyPaymentVo;
 import com.ydtech.modules.ins.model.ya.CarModelDTO;
 import com.ydtech.modules.ins.model.ya.YaQuoteInfoVo;
 import com.ydtech.modules.ins.model.zm.ZmCarModel;
+import com.ydtech.modules.order.entity.InsAgreementOrder;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.TaxArrears;
@@ -62,7 +66,11 @@ public class ZhongMeiOrderServiceImpl implements ZhongMeiOrderService {
 
     private final SysUserService sysUserService;
 
-    public ZhongMeiOrderServiceImpl(InsAreaCompanyService insAreaCompanyService, ZhongmeiRequestComponents zhongmeiRequestComponents, InsOrdersService insOrdersService, InsTaskImageService insTaskImageService, EsmInsAttributionService esmInsAttributionService, SysUserService sysUserService, EsmInsCompanyService esmInsCompanyService) {
+    private final FeeRuleSchemeService feeRuleSchemeService;
+
+
+
+    public ZhongMeiOrderServiceImpl(InsAreaCompanyService insAreaCompanyService, ZhongmeiRequestComponents zhongmeiRequestComponents, InsOrdersService insOrdersService, InsTaskImageService insTaskImageService, EsmInsAttributionService esmInsAttributionService, SysUserService sysUserService, EsmInsCompanyService esmInsCompanyService, FeeRuleSchemeService feeRuleSchemeService) {
         this.insAreaCompanyService = insAreaCompanyService;
         this.zhongmeiRequestComponents = zhongmeiRequestComponents;
         this.insOrdersService = insOrdersService;
@@ -70,6 +78,7 @@ public class ZhongMeiOrderServiceImpl implements ZhongMeiOrderService {
         this.esmInsAttributionService = esmInsAttributionService;
         this.sysUserService = sysUserService;
         this.esmInsCompanyService = esmInsCompanyService;
+        this.feeRuleSchemeService = feeRuleSchemeService;
     }
 
     @Override
@@ -103,6 +112,12 @@ public class ZhongMeiOrderServiceImpl implements ZhongMeiOrderService {
         // 3.生成订单信息
         ZhongmeiQuoteResponse data = body.getData();
         QuoteRespVo quoteRespVo = getQuoteRespVo(orderNo, data, quoteInfoVo);
+
+        //这里调用费用匹配功能
+        InsOrders insOrders = insOrdersService.getById(quoteRespVo.getOrderno());
+        FeeSchemeReqDto feeSchemeReqDto = feeRuleSchemeService.getFeeSchemeInfo(quoteInfoVo,quoteRespVo,quoteVo.getAgreementId(),insOrders.getProductid());
+        FeeSchemeResDto feeSchemeResDto = feeRuleSchemeService.matchTheAppropriateFees(feeSchemeReqDto);
+        InsAgreementOrder insAgreementOrder = new InsAgreementOrder(feeSchemeReqDto,feeSchemeResDto,orderNo);
         // 4.插入订单
         return responseOrder(orderNo, esmInsAttribution.getId(), body, quoteRespVo, esmInsCompany);
     }

+ 20 - 0
src/main/resources/mapper/modules/order/InsAgreementOrder.xml

@@ -0,0 +1,20 @@
+<?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.InsAgreementOrderMapper">
+
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.order.entity.InsAgreementOrder">
+        <id property="id" column="id" jdbcType="VARCHAR"/>
+        <result property="orderno" column="orderno" jdbcType="VARCHAR"/>
+        <result property="agreementId" column="agreement_id" jdbcType="VARCHAR"/>
+        <result property="jqCostRate" column="jqCostRate" jdbcType="VARCHAR"/>
+        <result property="syCostRate" column="syCostRate" jdbcType="VARCHAR"/>
+
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,orderno,agreementId,jqCostRate,syCostRate
+    </sql>
+
+</mapper>