shenweidong 1 год назад
Родитель
Сommit
5acaa14b96

+ 113 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/build/ZmCrawlerQuoteResultVoBuild.java

@@ -0,0 +1,113 @@
+package com.jzg.quote.zhongmei.crawler.build;
+
+import com.jzg.commons.constants.ProductsType;
+import com.jzg.commons.entity.quote.vo.KindInfoVo;
+import com.jzg.commons.entity.quote.vo.RiskInfoVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quote.zhongmei.crawler.entity.Response.ZmCrawlerQuotedPriceResponse;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.stream.Collectors;
+
+/**
+ * @description: 中煤财险 处理爬虫报价返回的数据
+ * @author: shenwd
+ * @date: 2025/3/27 08:59
+ **/
+public final class ZmCrawlerQuoteResultVoBuild {
+    private ZmCrawlerQuoteResultVoBuild() {throw new IllegalStateException("Utility class");}
+    public static QuoteResultsVo build(QuoteVo quoteVo, ZmCrawlerQuotedPriceResponse quotedPriceResponse) {
+        QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
+        quoteResultsVo.setOrdersNo(quoteVo.getOrder().getOrdersNo());
+        //交强险
+        quoteResultsVo.setCiRiskInfoVo(buildCiInfo(quotedPriceResponse));
+        //商业险
+        quoteResultsVo.setBiRiskInfoVo(buildbiInfo(quotedPriceResponse));
+        quoteResultsVo.setKindInfoVo(buildKindInfoList(quotedPriceResponse, quoteVo));
+        //设置保费,车船税,投保单号
+        buildParams(quotedPriceResponse, quoteResultsVo);
+        return quoteResultsVo;
+    }
+
+    public static RiskInfoVo buildCiInfo(ZmCrawlerQuotedPriceResponse quotedPriceResponse) {
+        RiskInfoVo ciRiskInfoVo = new RiskInfoVo();
+        List<ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO> contractDTOList = quotedPriceResponse.getBussinessMain().getContract();
+        contractDTOList.forEach(contract -> {
+            ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO.ContractMainDTO contractMain = contract.getContractMain();
+            if (contractMain.getRiskCode().equals(ProductsType.PT_0330.getCode())) {
+               ciRiskInfoVo.setRiskCode(contractMain.getRiskCode());
+               ciRiskInfoVo.setStartDate(contractMain.getValidDate());
+               ciRiskInfoVo.setEndDate(contractMain.getExpiryDate());
+               ciRiskInfoVo.setInstantFlag("1".equals(contractMain.getReinsuranceFlag()) ? true : false);
+           }
+        });
+        return ciRiskInfoVo;
+    }
+
+    public static RiskInfoVo buildbiInfo(ZmCrawlerQuotedPriceResponse quotedPriceResponse) {
+        RiskInfoVo biRiskInfoVo = new RiskInfoVo();
+        List<ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO> contractDTOList = quotedPriceResponse.getBussinessMain().getContract();
+        contractDTOList.forEach(contract -> {
+            ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO.ContractMainDTO contractMain = contract.getContractMain();
+            if (!contractMain.getRiskCode().equals(ProductsType.PT_0330.getCode())) {
+                biRiskInfoVo.setRiskCode(contractMain.getRiskCode());
+                biRiskInfoVo.setStartDate(contractMain.getValidDate());
+                biRiskInfoVo.setEndDate(contractMain.getExpiryDate());
+                biRiskInfoVo.setInstantFlag("1".equals(contractMain.getReinsuranceFlag()) ? true : false);
+            }
+        });
+        return biRiskInfoVo;
+    }
+
+    public static List<KindInfoVo> buildKindInfoList(ZmCrawlerQuotedPriceResponse quotedPriceResponse, QuoteVo quoteVo) {
+        List<KindInfoVo> kindInfoVoList = quoteVo.getKindInfoVo();
+
+        List<ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO> contractDTOList = quotedPriceResponse.getBussinessMain().getContract();
+        contractDTOList.forEach(contract -> {
+            ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO.ContractMainDTO contractMain = contract.getContractMain();
+            if (!contractMain.getRiskCode().equals(ProductsType.PT_0330.getCode())) {
+                List<ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO.CoverageDTO> coverageDTOList = contract.getCoverage();
+                //将报价返回的商业险数据转为map
+                Map<String, ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO.CoverageDTO> collect = coverageDTOList.stream().collect(Collectors.toMap(ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO.CoverageDTO::getKindCode, coverageDTO -> coverageDTO));
+
+                kindInfoVoList.forEach(kind -> {
+                    ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO.CoverageDTO coverageDTO = collect.get(kind.getKindCode());
+                    kind.setAmount(String.valueOf(coverageDTO.getAmount()));
+                    kind.setPremium(String.valueOf(coverageDTO.getCoveragePremium()));
+                    kind.setUnitAmount(String.valueOf(coverageDTO.getUnitAmount()));
+                    kind.setQuantity(String.valueOf(coverageDTO.getQuantity()));
+                    kind.setDeductibleRate(String.valueOf(coverageDTO.getDeductibleRate()));
+                });
+            }
+        });
+        return kindInfoVoList;
+    }
+
+    public static void buildParams(ZmCrawlerQuotedPriceResponse quotedPriceResponse, QuoteResultsVo quoteResultsVo) {
+        List<ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO> contractDTOList = quotedPriceResponse.getBussinessMain().getContract();
+        contractDTOList.forEach(contract -> {
+            ZmCrawlerQuotedPriceResponse.BussinessMainDTO.ContractDTO.ContractMainDTO contractMain = contract.getContractMain();
+            if (!contractMain.getRiskCode().equals(ProductsType.PT_0330.getCode())) {//设置商业险数据
+                quoteResultsVo.setBiPremium(String.valueOf(contractMain.getTotalPremium()));
+                quoteResultsVo.setBiPolicyNumber(contractMain.getContractNo());
+            } else {//设置交强险数据
+                quoteResultsVo.setCiPremium(String.valueOf(contractMain.getTotalPremium()));
+                quoteResultsVo.setCiPolicyNumber(contractMain.getContractNo());
+                quoteResultsVo.setVvTax(String.valueOf(contract.getTax().getSumTax()));
+            }
+        });
+        //设置非车保费
+        List<ZmCrawlerQuotedPriceResponse.BussinessMainDTO.AccidentDTO> accidentDTOList = quotedPriceResponse.getBussinessMain().getAccident();
+        if (accidentDTOList != null && !accidentDTOList.isEmpty()) {
+            AtomicReference<Double> niPremium = new AtomicReference<>(0d);
+            accidentDTOList.forEach(accident -> {
+                niPremium.updateAndGet(v -> v + accident.getSumPremium());
+            });
+            quoteResultsVo.setNiPremium(String.valueOf(niPremium));
+        }
+    }
+
+}

+ 42 - 7
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/component/ZmCrawlerRequestComponent.java

@@ -11,13 +11,8 @@ import com.jzg.quotation.commons.standard.CrawlerRequestUrlStandard;
 import com.jzg.quote.zhongmei.api.entity.BaseRequestHead;
 import com.jzg.quote.zhongmei.api.entity.request.BaseRequest;
 import com.jzg.quote.zhongmei.crawler.constant.enums.RequestUrl;
-import com.jzg.quote.zhongmei.crawler.entity.Request.ZmCrawlerAuthenticateRequest;
-import com.jzg.quote.zhongmei.crawler.entity.Request.ZmCrawlerModelQueryRequest;
-import com.jzg.quote.zhongmei.crawler.entity.Request.ZmCrawlerNetpointQueryRequest;
-import com.jzg.quote.zhongmei.crawler.entity.Response.ZmCrawlerAuthenticateResponse;
-import com.jzg.quote.zhongmei.crawler.entity.Response.ZmCrawlerCaptchaResponse;
-import com.jzg.quote.zhongmei.crawler.entity.Response.ZmCrawlerModelQueryResponse;
-import com.jzg.quote.zhongmei.crawler.entity.Response.ZmCrawlerNetpointQueryResponse;
+import com.jzg.quote.zhongmei.crawler.entity.Request.*;
+import com.jzg.quote.zhongmei.crawler.entity.Response.*;
 import com.jzg.quote.zhongmei.crawler.entity.ZmCrawlerConfigureParameters;
 import com.jzg.quote.zhongmei.crawler.entity.dto.SaleInfoDTO;
 import com.jzg.quote.zhongmei.crawler.properties.ZmCrawlerProperties;
@@ -91,6 +86,7 @@ public class ZmCrawlerRequestComponent {
     private Map<String, String> buildCache(ZmCrawlerAuthenticateResponse authenticateResponse) {
         Map<String, String> authorizationMap = new HashMap<>();
         authorizationMap.put(AUTHORIZATION, authenticateResponse.getHead().getToken());
+        authorizationMap.put(USER_CODE, authenticateResponse.getUserCode());
         return authorizationMap;
     }
 
@@ -154,6 +150,26 @@ public class ZmCrawlerRequestComponent {
         throw new SystemException("");
     }
 
+    /**
+     * 通过用户名获取userCode
+     *
+     * @param username 用户名
+     * @return userCode
+     */
+    public String getUserCode(String username) {
+        return (String) redissonClient.getMap(CacheConstant.ZHONGMEI_AUTHORIZATION + username).get(USER_CODE);
+    }
+
+    /**
+     * 获取授权信息
+     *
+     * @param username 用户名
+     * @return 授权token
+     */
+    public String getAuthorization(String username) {
+        return (String) redissonClient.getMap(CacheConstant.ZHONGMEI_AUTHORIZATION + username).get(AUTHORIZATION);
+    }
+
     /**
      * 请求
      * @param standard 访问的url
@@ -189,6 +205,7 @@ public class ZmCrawlerRequestComponent {
 
     /**
      * 处理网点查询返回数据
+     * 归属机构信息
      * @param parameters
      * @param baseRequestHead
      * @return
@@ -199,4 +216,22 @@ public class ZmCrawlerRequestComponent {
         ZmCrawlerNetpointQueryResponse netpointQueryResponse = netpointQuery(netpointQueryRequest);
         return new SaleInfoDTO(netpointQueryResponse, parameters);
     }
+
+    /**
+     * 获取折旧价
+     * @param actualValueRequest
+     * @return
+     */
+    public ZmCrawlerActualValueResponse getActualValue(ZmCrawlerActualValueRequest actualValueRequest) {
+        return request(RequestUrl.ACTUAL_VALUE, actualValueRequest, ZmCrawlerActualValueResponse.class);
+    }
+
+    /**
+     * 报价
+     * @param quotedPriceRequest
+     * @return
+     */
+    public ZmCrawlerQuotedPriceResponse quotedPrice(ZmCrawlerQuotedPriceRequest quotedPriceRequest) {
+        return request(RequestUrl.QUOTED_PRICE, quotedPriceRequest, ZmCrawlerQuotedPriceResponse.class);
+    }
 }

+ 122 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/entity/Request/ZmCrawlerActualValueRequest.java

@@ -0,0 +1,122 @@
+package com.jzg.quote.zhongmei.crawler.entity.Request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.commons.entity.quote.vo.CarInfoVo;
+import com.jzg.quotation.commons.utils.DateUtil;
+import com.jzg.quote.zhongmei.api.entity.request.BaseRequest;
+import com.jzg.quote.zhongmei.crawler.entity.ZmCrawlerConfigureParameters;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.util.Date;
+
+/**
+ * @description: 中煤财险 获取折旧价 入参
+ * @author: shenwd
+ * @date: 2025/3/24 08:38
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ZmCrawlerActualValueRequest extends BaseRequest {
+    @Serial
+    private static final long serialVersionUID = -6164231953450179070L;
+
+    /**
+     * 核定载客量
+     */
+    private Integer approvedPassengersCapacity;
+
+    /**
+     * 请求日期
+     */
+    private String validDate;
+
+    /**
+     * 新车购置价
+     */
+    private Integer purchasePrice;
+
+    /**
+     * 使用性质
+     */
+    private String motorUsageTypeCode;
+
+    /**
+     * 车辆类型
+     */
+    private String motorTypeCode;
+
+    /**
+     * 初登日期
+     */
+    private String registerDate;
+
+    /**
+     * 车辆用途
+     */
+    private String carUseType;
+
+    /**
+     * 险种编码
+     */
+    private String riskCode;
+
+    /**
+     * 车辆大类
+     */
+    private String motorMainType;
+
+    /**
+     * 车辆细类
+     */
+    private String motorSubType;
+
+    /**
+     * 报价类型编码
+     */
+    private String planCode;
+
+    /**
+     * 能源种类
+     */
+    private String energyTypeCode;
+
+    public ZmCrawlerActualValueRequest(CarInfoVo carInfoVo, ZmCrawlerConfigureParameters parameters) {
+        this.approvedPassengersCapacity = Integer.parseInt(carInfoVo.getSeatCount());
+        this.validDate = DateUtil.getDateFormat(new Date(), DateUtil.FULL_TIME_SPLIT_PATTERN);
+        this.purchasePrice = Integer.parseInt(carInfoVo.getPurchasePrice());
+        this.motorUsageTypeCode = carInfoVo.getCarNatureCode();
+        this.motorTypeCode = carInfoVo.getCarTypeCode();
+        this.registerDate = carInfoVo.getRegisterDate();
+        this.carUseType = carInfoVo.getVehicleUseCode();
+        this.riskCode = parameters.getRiskCode();
+        this.motorMainType = carInfoVo.getCarKindCode();
+        this.motorSubType = carInfoVo.getCarKindDetailIdCode();
+        this.planCode = parameters.getPlanCode();
+        this.energyTypeCode = carInfoVo.getEnergyTypeCode();
+    }
+
+    /** 请求数据示例
+     * {
+     * "head":{
+     * "TransCode":"ActualValue"
+     * "TransType":"Req"
+     * "token":"sinnK2bzos20250321084215617oftC3Dj2"
+     * "source":"2"
+     * }
+     * "approvedPassengersCapacity":5
+     * "validDate":"2025-03-22 00:00:00"
+     * "purchasePrice":78900
+     * "motorUsageTypeCode":"02"
+     * "motorTypeCode":"11"
+     * "registerDate":"2022-07-12 00:00:00"
+     * "carUseType":"01"
+     * "riskCode":"0361"
+     * "motorMainType":"100"
+     * "motorSubType":"101"
+     * "planCode":"1379"
+     * "energyTypeCode":"0"
+     * }
+     */
+}

+ 1453 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/entity/Request/ZmCrawlerQuotedPriceRequest.java

@@ -0,0 +1,1453 @@
+package com.jzg.quote.zhongmei.crawler.entity.Request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.commons.entity.quote.vo.*;
+import com.jzg.quotation.commons.constant.enums.quote.PropertyCode;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.utils.DateUtil;
+import com.jzg.quote.zhongmei.api.constant.enums.ContractEnum;
+import com.jzg.quote.zhongmei.api.entity.BaseRequestHead;
+import com.jzg.quote.zhongmei.api.entity.request.BaseRequest;
+import com.jzg.quote.zhongmei.crawler.entity.Response.ZmCrawlerActualValueResponse;
+import com.jzg.quote.zhongmei.crawler.entity.Response.ZmCrawlerModelQueryResponse;
+import com.jzg.quote.zhongmei.crawler.entity.ZmCrawlerConfigureParameters;
+import com.jzg.quote.zhongmei.crawler.entity.dto.SaleInfoDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.BeanUtils;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @description: 中煤财险 报价请求 入参
+ * @author: shenwd
+ * @date: 2025/3/24 09:55
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
+
+    @Serial
+    private static final long serialVersionUID = 351543645639341186L;
+
+    @JsonProperty("loginCom")
+    private String loginCom;
+
+    @JsonProperty("userCode")
+    private String userCode;
+
+    @JsonProperty("comeCode")
+    private String comeCode;
+
+    @JsonProperty("agentCode")
+    private String agentCode;
+
+    @JsonProperty("businessData")
+    private BusinessDataDTO businessData;
+
+    @Data
+    @RequiredArgsConstructor
+    public static class BusinessDataDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = -7139170169024318223L;
+
+        @JsonProperty("imageSrcxszzm")
+        private String imageSrcxszzm;
+
+        @JsonProperty("imageSrcxszzm")
+        private String imageSrcxszName;
+
+        @JsonProperty("businessMain")
+        private BusinessMainDTO businessMain;
+
+        @JsonProperty("insuredObject")
+        private InsuredObjectDTO insuredObject;
+
+        @JsonProperty("antiMoney")
+        private AntiMoneyDTO antiMoney;
+
+        /**
+         * 归属机构信息
+         */
+        @JsonProperty("saleInfo")
+        private SaleInfoDTO saleInfo;
+
+        @JsonProperty("contract")
+        private List<ContractDTO> contract;
+
+        @JsonProperty("customer")
+        private List<CustomerDTO> customer;
+
+        @JsonProperty("accident")
+        private List<AccidentDTO> accident;
+
+        public List<ContractDTO> buildContractList(QuoteVo quoteVo) {
+            List<ContractDTO> contracts = new ArrayList<>();
+            String date = DateUtil.getDateFormat(new Date(), DateUtil.FULL_TIME_SPLIT_PATTERN);
+            ContractDTO ciContract = buildCiContract(quoteVo, date);
+            ContractDTO biContract = buildBiContract(quoteVo, date);
+            contracts.add(ciContract);
+            contracts.add(biContract);
+            return contracts;
+        }
+
+        /**
+         * 处理交强数据
+         * @param quoteVo
+         * @param productionDate
+         * @return
+         */
+        public ContractDTO buildCiContract(QuoteVo quoteVo, String productionDate) {
+            ContractDTO contract = new ContractDTO();
+
+            RiskInfoVo ciRiskInfoVo = quoteVo.getCiRiskInfoVo();
+            ContractDTO.ContractMainDTO contractMain = new ContractDTO.ContractMainDTO(ciRiskInfoVo, productionDate);
+            contract.setContractMain(contractMain);
+
+            VehicleAndVesselTaxVo taxVo = quoteVo.getVehicleAndVesselTax();
+            ContractDTO.TaxDTO taxDTO = new ContractDTO.TaxDTO(taxVo);
+            contract.setTax(taxDTO);
+
+            ContractDTO.CoverageDTO coverageDTO = new ContractDTO.CoverageDTO();
+            coverageDTO.setValidDate(ciRiskInfoVo.getStartDate());
+            coverageDTO.setExpiryDate(ciRiskInfoVo.getEndDate());
+            coverageDTO.setKindCode(ContractEnum.C_BZ.getKindCode());
+            coverageDTO.setKindName(ContractEnum.C_BZ.getKindName());
+            List<ContractDTO.CoverageDTO> coverageDTOList = new ArrayList<>();
+            coverageDTOList.add(coverageDTO);
+            contract.setCoverage(coverageDTOList);
+
+            return contract;
+        }
+
+        /**
+         * 处理商业险数据
+         * @param quoteVo
+         * @param productionDate
+         * @return
+         */
+        public ContractDTO buildBiContract(QuoteVo quoteVo, String productionDate) {
+            ContractDTO contract = new ContractDTO();
+            RiskInfoVo biRiskInfoVo = quoteVo.getBiRiskInfoVo();
+            ContractDTO.ContractMainDTO contractMain = new ContractDTO.ContractMainDTO(biRiskInfoVo, productionDate);
+            contract.setContractMain(contractMain);
+
+            ContractDTO.ApmServiceFeeBeanDTO apmServiceFeeBeanDTO = new ContractDTO.ApmServiceFeeBeanDTO();
+            apmServiceFeeBeanDTO.setHopeCostRate(-1);
+            contract.setApmServiceFeeBean(apmServiceFeeBeanDTO);
+
+            List<ContractDTO.CoverageDTO> coverageDTOList = new ArrayList<>();
+            List<KindInfoVo> kindInfoVoList = quoteVo.getKindInfoVo();
+            kindInfoVoList.forEach(kindInfoVo -> {
+                ContractDTO.CoverageDTO coverageDTO = new ContractDTO.CoverageDTO();
+                coverageDTO.setChoosed(true);
+                coverageDTO.setKindCode(kindInfoVo.getKindCode());
+                coverageDTO.setKindName(kindInfoVo.getKindName());
+                coverageDTO.setCalculateFlag("Y");
+                coverageDTO.setOptNotDeductibleFlag(1);
+                coverageDTO.setNotDeductibleFlag(true);
+                coverageDTO.setAmount(Double.parseDouble(kindInfoVo.getAmount()));
+                coverageDTO.setUnitAmount(Integer.parseInt(kindInfoVo.getUnitAmount()));
+                coverageDTO.setQuantity(kindInfoVo.getQuantity());
+                coverageDTO.setValidDate(biRiskInfoVo.getStartDate());
+                coverageDTO.setExpiryDate(biRiskInfoVo.getEndDate());
+                coverageDTOList.add(coverageDTO);
+            });
+            contract.setCoverage(coverageDTOList);
+            return contract;
+        }
+
+        public List<CustomerDTO> buildCustomerList (QuoteVo quoteVo) {
+            List<CustomerDTO> customerDTOList = new ArrayList<>();
+            CustomerDTO ownerDTO = transferCustomer(quoteVo.getOwnersInfo());
+            CustomerDTO policyDTO = transferCustomer(quoteVo.getPolicyHolderInfo());
+            CustomerDTO insuredDTO = transferCustomer(quoteVo.getInsuredPersonInfo());
+            customerDTOList.add(ownerDTO);
+            customerDTOList.add(policyDTO);
+            customerDTOList.add(insuredDTO);
+            return customerDTOList;
+        }
+
+        /**
+         * 转换客户数据
+         * @param customerInfoVo
+         * @return
+         */
+        public CustomerDTO transferCustomer (CustomerInfoVo customerInfoVo) {
+            CustomerDTO customerDTO = new CustomerDTO();
+            CustomerDTO.ContactDTO contactDTO = new CustomerDTO.ContactDTO();
+            contactDTO.setAddr(customerInfoVo.getAddr());
+            contactDTO.setMobile(customerInfoVo.getMobile());
+            contactDTO.setName(customerInfoVo.getName());
+            contactDTO.setLinkName(customerInfoVo.getName());
+            contactDTO.setMobile1(customerInfoVo.getMobile());
+            contactDTO.setRelated("01");
+            customerDTO.getContact().add(contactDTO);
+
+            customerDTO.setAge(Integer.parseInt(customerInfoVo.getAge()));
+            customerDTO.setContactAddr_app(customerInfoVo.getAddr());
+            customerDTO.setBirthday(customerInfoVo.getBirthday());
+            customerDTO.setSex(customerInfoVo.getGender());
+            customerDTO.setPayMobile(customerInfoVo.getMobile());
+            if (PropertyCode.PROPERTY_CODE_1.getCode().equals(customerInfoVo.getProperty())) {//个人
+                customerDTO.setName(customerInfoVo.getName());
+                customerDTO.setIdentifyType("01");
+                customerDTO.setIdentifyNumber(customerInfoVo.getIdentifyNumber());
+                customerDTO.setPayIdentifyNumber(customerInfoVo.getIdentifyNumber());
+                customerDTO.setIdentifyValidDate(customerInfoVo.getIdentifyValidDate());
+                customerDTO.setIdentifyValidEndDate(customerInfoVo.getIdentifyValidEndDate());
+            } else {//法人
+                customerDTO.setIdentifyType("02");
+                customerDTO.setIdentifyNumber(customerInfoVo.getLeaderIdentifyNumber());
+                customerDTO.setName(customerInfoVo.getLegalPerson());
+                customerDTO.setPayIdentifyNumber(customerInfoVo.getLeaderIdentifyNumber());
+                customerDTO.setIdentifyValidEndDate(customerInfoVo.getLeaderOtherEffectiveDate());
+            }
+
+            return customerDTO;
+        }
+
+        /**
+         * 处理意外险
+         * @param quoteVo
+         * @return
+         */
+        public List<AccidentDTO> buildAccidentList (QuoteVo quoteVo) {
+            List<AccidentDTO> accidentDTOList = new ArrayList<>();
+            quoteVo.getAccidentalDrivings().forEach(accidentalDrivingVo -> {
+                AccidentDTO accidentDTO = new AccidentDTO(accidentalDrivingVo);
+                accidentDTOList.add(accidentDTO);
+            });
+            return accidentDTOList;
+        }
+
+        public BusinessDataDTO(ZmCrawlerConfigureParameters parameters, QuoteVo quoteVo,
+                               SaleInfoDTO saleInfoDTO, ZmCrawlerModelQueryResponse.FullCarDataDTO fullCarDataDTO,
+                               ZmCrawlerActualValueResponse actualValueResponse, String userCode) {
+            this.imageSrcxszzm = "";
+            this.imageSrcxszName = "";
+            this.businessMain = new BusinessMainDTO(parameters, userCode);
+            this.insuredObject = new InsuredObjectDTO(fullCarDataDTO, quoteVo, actualValueResponse);
+            this.antiMoney = new AntiMoneyDTO();
+            this.saleInfo = saleInfoDTO;
+            //处理险种信息
+            this.contract = buildContractList(quoteVo);
+            //处理投保人,被保人,车主信息
+            this.customer = buildCustomerList(quoteVo);
+            //处理意外险
+            this.accident = buildAccidentList(quoteVo);
+        }
+
+        @Data
+        @EqualsAndHashCode
+        public static class BusinessMainDTO implements Serializable {
+
+            @Serial
+            private static final long serialVersionUID = -7839257467679605493L;
+
+            @JsonProperty("appointAreaCode")
+            private String appointAreaCode;
+
+            @JsonProperty("businessType")
+            private String businessType;
+
+            @JsonProperty("makeCom")
+            private String makeCom;
+
+            @JsonProperty("operateDateTime")
+            private String operateDateTime;
+
+            @JsonProperty("planCode")
+            private String planCode;
+
+            @JsonProperty("recordTime")
+            private String recordTime;
+
+            @JsonProperty("oneForOneFlag")
+            private String oneForOneFlag;
+
+            @JsonProperty("calculateTime")
+            private String calculateTime;
+
+            @JsonProperty("operatorCode")
+            private String operatorCode;
+
+            public BusinessMainDTO(ZmCrawlerConfigureParameters parameters, String userCode) {
+                this.appointAreaCode = "";
+                this.businessType = "T";
+                this.makeCom = parameters.getComCode();
+                this.operateDateTime = "";
+                this.planCode = parameters.getPlanCode();
+                this.recordTime = "";
+                this.oneForOneFlag = "1";
+                this.calculateTime = "";
+                this.operatorCode = userCode;
+            }
+
+        }
+
+        @Data
+        @EqualsAndHashCode
+        public static class InsuredObjectDTO implements Serializable {
+
+            @Serial
+            private static final long serialVersionUID = -8991842919710754312L;
+
+            @JsonProperty("platformCar")
+            private PlatformCarDTO platformCar;
+
+            @JsonProperty("platformCar")
+            private PolicyCarDTO policyCar;
+
+            @JsonProperty("simpleStadarCar")
+            private SimpleStadarCarDTO simpleStadarCar;
+
+            @JsonProperty("specializedDevice")
+            private SpecializedDeviceDTO specializedDevice;
+
+            @JsonProperty("charging")
+            private List<String> charging;
+
+            @JsonProperty("modelDetails")
+            private ModelDetailsDTO modelDetails;
+
+            public InsuredObjectDTO(ZmCrawlerModelQueryResponse.FullCarDataDTO fullCarDataDTO, QuoteVo quoteVo, ZmCrawlerActualValueResponse actualValueResponse) {
+                SimpleStadarCarDTO stadarCarDTO = new SimpleStadarCarDTO();
+                BeanUtils.copyProperties(fullCarDataDTO, stadarCarDTO);
+                stadarCarDTO.setBrand(fullCarDataDTO.getFullCarData().getModelName());
+                stadarCarDTO.setDisplacement((double)fullCarDataDTO.getFullCarData().getDisplacement()/1000);
+                stadarCarDTO.setPrintBrandName(fullCarDataDTO.getFullCarData().getModelName());
+                stadarCarDTO.setPurchasePriceCopy(fullCarDataDTO.getFullCarData().getPurchasePrice());
+                this.simpleStadarCar = stadarCarDTO;
+
+                PlatformCarDTO platformCarDTO = new PlatformCarDTO();
+                platformCarDTO.setDeptCode(fullCarDataDTO.getPlatFormCar().getDeptCode());
+                this.platformCar = platformCarDTO;
+
+                CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
+                this.policyCar = new PolicyCarDTO(carInfoVo, actualValueResponse);
+
+                this.modelDetails = new ModelDetailsDTO(fullCarDataDTO);
+
+                //specializedDevice   charging 稍后补充
+
+            }
+
+            @Data
+            @EqualsAndHashCode
+            @NoArgsConstructor
+            public static class PlatformCarDTO implements Serializable {
+
+                @Serial
+                private static final long serialVersionUID = 3260634360115325904L;
+
+                @JsonProperty("deptCode")
+                private String deptCode;
+
+                @JsonProperty("deptName")
+                private String deptName;
+
+                @JsonProperty("carName")
+                private String carName;
+            }
+
+            @Data
+            @EqualsAndHashCode
+            public static class PolicyCarDTO implements Serializable {
+
+                @Serial
+                private static final long serialVersionUID = -4697883593408114826L;
+                @JsonProperty("checkFlag")
+                private String checkFlag;
+
+                @JsonProperty("hKFlag")
+                private Boolean hKFlag;
+
+                @JsonProperty("HKPlateNo")
+                private String HKPlateNo;
+
+                @JsonProperty("vIN")
+                private String vIN;
+
+                @JsonProperty("actualValue")
+                private Double actualValue;
+
+                @JsonProperty("carCheckReason")
+                private String carCheckReason;
+
+                @JsonProperty("carCheckStatus")
+                private String carCheckStatus;
+
+                @JsonProperty("carCheckTime")
+                private String carCheckTime;
+
+                @JsonProperty("carChecker")
+                private String carChecker;
+
+                @JsonProperty("repairTime")
+                private String repairTime;
+
+                @JsonProperty("personLiable")
+                private String personLiable;
+
+                @JsonProperty("contrastFlag")
+                private Boolean contrastFlag;
+
+                @JsonProperty("engine")
+                private String engine;
+
+                @JsonProperty("fleetNo")
+                private String fleetNo;
+
+                @JsonProperty("issueDate")
+                private String issueDate;
+
+                @JsonProperty("loanVehicleFlag")
+                private Boolean loanVehicleFlag;
+
+                @JsonProperty("model")
+                private String model;
+
+                @JsonProperty("carUseType")
+                private String carUseType;
+
+                @JsonProperty("motorType")
+                private String motorType;
+
+                @JsonProperty("motorTypeCode")
+                private String motorTypeCode;
+
+                @JsonProperty("motorUsageTypeCode")
+                private String motorUsageTypeCode;
+
+                @JsonProperty("newCarSign")
+                private Boolean newCarSign;
+
+                @JsonProperty("noDamageYears")
+                private String noDamageYears;
+
+                @JsonProperty("noLicenseFlag")
+                private Boolean noLicenseFlag;
+
+                @JsonProperty("plateNo")
+                private String plateNo;
+
+                @JsonProperty("plateType")
+                private String plateType;
+
+                @JsonProperty("pmQueryNo")
+                private String pmQueryNo;
+
+                @JsonProperty("registerDate")
+                private String registerDate;
+
+                @JsonProperty("damagedFactorGrade")
+                private String damagedFactorGrade;
+
+                @JsonProperty("runArea")
+                private String runArea;
+
+                @JsonProperty("runMiles")
+                private String runMiles;
+
+                @JsonProperty("taxInclued")
+                private Boolean taxInclued;
+
+                @JsonProperty("transferDate")
+                private String transferDate;
+
+                @JsonProperty("useYears")
+                private Integer useYears;
+
+                @JsonProperty("vehicleType")
+                private String vehicleType;
+
+                @JsonProperty("chgOwnerFlag")
+                private String chgOwnerFlag;
+
+                @JsonProperty("lossInsuranceModel")
+                private String lossInsuranceModel;
+
+                @JsonProperty("nolocalCarFlag")
+                private String nolocalCarFlag;
+
+                @JsonProperty("plateColorCode")
+                private String plateColorCode;
+
+                @JsonProperty("secondhandCarFlag")
+                private String secondhandCarFlag;
+
+                @JsonProperty("shortPeriodReason")
+                private String shortPeriodReason;
+
+                @JsonProperty("carQueryCheckCode")
+                private String carQueryCheckCode;
+
+                @JsonProperty("splitChgOwner")
+                private String splitChgOwner;
+
+                @JsonProperty("aheadRule")
+                private String aheadRule;
+
+                @JsonProperty("motorMainType")
+                private String motorMainType;
+
+                @JsonProperty("motorSubType")
+                private String motorSubType;
+
+                @JsonProperty("isrelief")
+                private String isrelief;
+
+                @JsonProperty("contrastprice")
+                private Integer contrastprice;
+
+                public PolicyCarDTO (CarInfoVo carInfoVo, ZmCrawlerActualValueResponse actualValueResponse) {
+                    this.checkFlag = "0";
+                    this.hKFlag = false;
+                    this.HKPlateNo = "";
+                    this.vIN = carInfoVo.getVinNo();
+                    this.actualValue = actualValueResponse.getActualValue();
+                    this.carCheckReason = "";
+                    this.carCheckStatus = "2";
+                    this.carCheckTime = "";
+                    this.carChecker = "";
+                    this.repairTime = "";
+                    this.personLiable = "";
+                    this.contrastFlag = false;
+                    this.engine = carInfoVo.getEngineNo();
+                    this.fleetNo = "";
+                    this.issueDate = carInfoVo.getIssueDate();
+                    this.loanVehicleFlag = carInfoVo.isLoanStatus();
+                    this.model = "";
+                    this.carUseType = carInfoVo.getVehicleUseCode();
+                    this.motorType = "";
+                    this.motorTypeCode = carInfoVo.getCarKindDetailIdCode();
+                    this.motorUsageTypeCode = carInfoVo.getCarNatureCode();
+                    this.newCarSign = false;
+                    this.noDamageYears = "";
+                    this.noLicenseFlag = false;
+                    this.plateNo = carInfoVo.getLicenseNo();
+                    this.plateType = carInfoVo.getLicenseKindCode();
+                    this.pmQueryNo = carInfoVo.getCarTypeCode();
+                    this.registerDate = carInfoVo.getRegisterDate();
+                    this.damagedFactorGrade = "";
+                    this.runArea = "";
+                    this.runMiles = "10000";
+                    this.taxInclued = false;
+                    this.transferDate = carInfoVo.getTransferDate();
+                    this.useYears = actualValueResponse.getUseYears();
+                    this.vehicleType = carInfoVo.getCarTypeCode();
+                    this.chgOwnerFlag = "0";
+                    this.lossInsuranceModel = "01";
+                    this.nolocalCarFlag = "0";
+                    this.plateColorCode = carInfoVo.getLicenseColorCode();
+                    this.secondhandCarFlag = "0";
+                    this.shortPeriodReason = "0";
+                    this.carQueryCheckCode = "";
+                    this.splitChgOwner = "0";
+                    this.aheadRule = "1";
+                    this.motorMainType = carInfoVo.getCarKindCode();
+                    this.motorSubType = carInfoVo.getCarKindDetailIdCode();
+                    this.isrelief = "0";
+                    this.contrastprice = 0;
+                }
+            }
+
+            @Data
+            @EqualsAndHashCode
+            public static class SimpleStadarCarDTO implements Serializable {
+
+                @Serial
+                private static final long serialVersionUID = 508837339620381049L;
+
+                @JsonProperty("analogyPrice")
+                private Integer analogyPrice;
+
+                @JsonProperty("analogyPriceTax")
+                private Integer analogyPriceTax;
+
+                @JsonProperty("approvedLoad")
+                private Integer approvedLoad;
+
+                @JsonProperty("approvedPassengersCapacity")
+                private Integer approvedPassengersCapacity;
+
+                @JsonProperty("brand")
+                private String brand;
+
+                @JsonProperty("carAlias")
+                private String carAlias;
+
+                @JsonProperty("carKind")
+                private String carKind;
+
+                @JsonProperty("carType")
+                private String carType;
+
+                @JsonProperty("carYear")
+                private String carYear;
+
+                @JsonProperty("createDate")
+                private String createDate;
+
+                @JsonProperty("displacement")
+                private Double displacement;
+
+                @JsonProperty("energyTypes")
+                private String energyTypes;
+
+                @JsonProperty("factory")
+                private String factory;
+
+                @JsonProperty("fuelType")
+                private String fuelType;
+
+                @JsonProperty("fuelTypeCode")
+                private String fuelTypeCode;
+
+                @JsonProperty("isrelief")
+                private String isrelief;
+
+                @JsonProperty("jqxClassId")
+                private String jqxClassId;
+
+                @JsonProperty("jqxClassName")
+                private String jqxClassName;
+
+                @JsonProperty("localModelCode")
+                private String localModelCode;
+
+                @JsonProperty("modelName")
+                private String modelName;
+
+                @JsonProperty("motorType")
+                private Integer motorType;
+
+                @JsonProperty("newVehicleClass")
+                private String newVehicleClass;
+
+                @JsonProperty("newVehicleClassCode")
+                private String newVehicleClassCode;
+
+                @JsonProperty("originalPurchasePrice")
+                private Integer originalPurchasePrice;
+
+                @JsonProperty("power")
+                private Integer power;
+
+                @JsonProperty("purchasePrice")
+                private Integer purchasePrice;
+
+                @JsonProperty("purchasePriceTax")
+                private Integer purchasePriceTax;
+
+                @JsonProperty("qualityMax")
+                private Integer qualityMax;
+
+                @JsonProperty("qualityMin")
+                private Integer qualityMin;
+
+                @JsonProperty("remark")
+                private String remark;
+
+                @JsonProperty("searchCodeAlias")
+                private String searchCodeAlias;
+
+                @JsonProperty("shortHandCode")
+                private String shortHandCode;
+
+                @JsonProperty("status")
+                private String status;
+
+                @JsonProperty("syxClassName")
+                private String syxClassName;
+
+                @JsonProperty("syxClassid")
+                private String syxClassid;
+
+                @JsonProperty("taxReliefFlag")
+                private String taxReliefFlag;
+
+                @JsonProperty("transmissionType")
+                private String transmissionType;
+
+                @JsonProperty("unladenMass")
+                private Double unladenMass;
+
+                @JsonProperty("updateDate")
+                private String updateDate;
+
+                @JsonProperty("vehicleSeatMax")
+                private Integer vehicleSeatMax;
+
+                @JsonProperty("vehicleSeatMin")
+                private Integer vehicleSeatMin;
+
+                @JsonProperty("printBrandName")
+                private String printBrandName;
+
+                @JsonProperty("purchasePriceCopy")
+                private Integer purchasePriceCopy;
+            }
+
+            @Data
+            public static class SpecializedDeviceDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 3770591887273714919L;
+            }
+
+            @Data
+            @NoArgsConstructor
+            public static class ModelDetailsDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = -6088426890828162251L;
+
+                @JsonProperty("modelName")
+                private String modelName;
+
+                @JsonProperty("approvedLoad")
+                private String approvedLoad;
+
+                @JsonProperty("approvedPassengersCapacity")
+                private String approvedPassengersCapacity;
+
+                @JsonProperty("brand")
+                private String brand;
+
+                @JsonProperty("carAlias")
+                private String carAlias;
+
+                @JsonProperty("displacement")
+                private Double displacement;
+
+                @JsonProperty("grossMass")
+                private String grossMass;
+
+                @JsonProperty("localModelCode")
+                private String localModelCode;
+
+                @JsonProperty("power")
+                private Integer power;
+
+                @JsonProperty("purchasePrice")
+                private Integer purchasePrice;
+
+                @JsonProperty("deptCode")
+                private String deptCode;
+
+                @JsonProperty("remark")
+                private String remark;
+
+                @JsonProperty("series")
+                private String series;
+
+                @JsonProperty("unladenMass")
+                private Double unladenMass;
+
+                @JsonProperty("transmissionType")
+                private String transmissionType;
+
+                @JsonProperty("carType")
+                private String carType;
+
+                @JsonProperty("fuelType")
+                private String fuelType;
+
+                @JsonProperty("newVehicleClass")
+                private String newVehicleClass;
+
+                @JsonProperty("taxReliefFlag")
+                private String taxReliefFlag;
+
+                @JsonProperty("platSeriesGroup")
+                private String platSeriesGroup;
+
+                @JsonProperty("modelCode")
+                private String modelCode;
+
+                @JsonProperty("groupName")
+                private String groupName;
+
+                @JsonProperty("carYear")
+                private String carYear;
+
+                @JsonProperty("vehicleRisk")
+                private VehicleRiskDTO vehicleRisk;
+
+                public ModelDetailsDTO(ZmCrawlerModelQueryResponse.FullCarDataDTO fullCarDataDTO) {
+                    ModelDetailsDTO modelDetailsDTO = new ModelDetailsDTO();
+                    ZmCrawlerModelQueryResponse.FullCarDataDTO.FullCarData fullCarData = fullCarDataDTO.getFullCarData();
+                    BeanUtils.copyProperties(fullCarData, modelDetailsDTO);
+                    modelDetailsDTO.setBrand(fullCarData.getModelName());
+                    modelDetailsDTO.setDisplacement((double)fullCarData.getDisplacement()/1000);
+                    modelDetailsDTO.setGrossMass("--");
+                    modelDetailsDTO.setDeptCode(fullCarDataDTO.getPlatFormCar().getDeptCode());
+                    modelDetailsDTO.setPlatSeriesGroup("--");
+                    modelDetailsDTO.setModelCode("--");
+                    modelDetailsDTO.setGroupName("--");
+                }
+
+                @Data
+                public static class VehicleRiskDTO implements Serializable {
+                    @Serial
+                    private static final long serialVersionUID = -2716161680101534800L;
+                }
+            }
+        }
+
+        @Data
+        public static class AntiMoneyDTO implements Serializable {
+
+            @Serial
+            private static final long serialVersionUID = 8330538000653585540L;
+
+            @JsonProperty("channel")
+            private String channel;//1
+
+            @JsonProperty("idtype")
+            private String idtype;//1
+
+            @JsonProperty("traderecords")
+            private String traderecords;//1
+
+            @JsonProperty("age")
+            private String age;//1
+
+            @JsonProperty("riskinfo")
+            private String riskinfo;//1
+
+            @JsonProperty("insurcerisk")
+            private String insurcerisk;//1
+
+            @JsonProperty("nationality")
+            private String nationality;//1
+
+            @JsonProperty("jobrisk")
+            private String jobrisk;//1
+
+            @JsonProperty("foreignpd")
+            private String foreignpd;//1
+
+            @JsonProperty("proposalholderinfo")
+            private String proposalholderinfo;//1
+
+            @JsonProperty("agencyagreement")
+            private String agencyagreement;//1
+
+            @JsonProperty("identityinfo")
+            private String identityinfo;//1
+
+            @JsonProperty("phonenumber")
+            private String phonenumber;//1
+
+            @JsonProperty("matpremium")
+            private String matpremium;//1
+
+            @JsonProperty("clienthimself")
+            private String clienthimself;//1
+
+            @JsonProperty("doubttrade")
+            private String doubttrade;//1
+
+            @JsonProperty("abnormal")
+            private String abnormal;//1
+
+            @JsonProperty("score")
+            private String score;
+
+            @JsonProperty("grade")
+            private String grade;
+
+            @JsonProperty("accessInfo")
+            private String accessInfo;//1
+
+            @JsonProperty("controlStruct")
+            private String controlStruct;//1
+
+            @JsonProperty("clientname")
+            private String clientname;
+
+            @JsonProperty("clientCode")
+            private String clientCode;
+
+            @JsonProperty("backupsflag")
+            private String backupsflag;
+
+            @JsonProperty("moneylaundercode")
+            private String moneylaundercode;
+
+            @JsonProperty("savetime")
+            private String savetime;
+
+            @JsonProperty("insuredTypeFlag")
+            private String insuredTypeFlag;
+
+            @JsonProperty("assessorga")
+            private String assessorga;
+
+            public AntiMoneyDTO() {
+                this.channel = "1";
+                this.idtype = "1";
+                this.traderecords = "1";
+                this.age = "1";
+                this.riskinfo = "1";
+                this.insurcerisk = "1";
+                this.nationality = "1";
+                this.jobrisk = "1";
+                this.foreignpd = "1";
+                this.proposalholderinfo = "1";
+                this.agencyagreement = "1";
+                this.identityinfo = "1";
+                this.phonenumber = "1";
+                this.matpremium = "1";
+                this.clienthimself = "1";
+                this.doubttrade = "1";
+                this.abnormal = "1";
+                this.score = "";
+                this.grade = "";
+                this.accessInfo = "1";
+                this.controlStruct = "1";
+                this.clientname = "";
+                this.clientCode = "";
+                this.backupsflag = "";
+                this.moneylaundercode = "";
+                this.savetime = "";
+                this.insuredTypeFlag = "";
+                this.assessorga = "";
+            }
+        }
+
+        @Data
+        public static class ContractDTO implements Serializable {
+
+            @Serial
+            private static final long serialVersionUID = 8269275676466097707L;
+
+            @JsonProperty("contractMain")
+            private ContractMainDTO contractMain;
+
+            @JsonProperty("coinsInfoBean")
+            private List<String> coinsInfoBean;
+
+            @JsonProperty("plantFormMessageBean")
+            private PlantFormMessageBeanDTO plantFormMessageBean;
+
+            @JsonProperty("apmServiceFeeBean")
+            private ApmServiceFeeBeanDTO apmServiceFeeBean;
+
+            @JsonProperty("coverage")
+            private List<CoverageDTO> coverage;
+
+            @JsonProperty("engage")
+            private List<String> engage;
+
+            @JsonProperty("tax")
+            private TaxDTO tax;
+
+            @Data
+            public static class ContractMainDTO implements Serializable {
+
+                @Serial
+                private static final long serialVersionUID = -6454194140352420595L;
+
+                @JsonProperty("contractNo")
+                private String contractNo;
+
+                @JsonProperty("riskCode")
+                private String riskCode;
+
+                @JsonProperty("expiryDate")
+                private String expiryDate;
+
+                @JsonProperty("validDate")
+                private String validDate;
+
+                /**
+                 * 续保标志
+                 */
+                @JsonProperty("reinsuranceFlag")
+                private String reinsuranceFlag;
+
+                @JsonProperty("coinsFlag")
+                private String coinsFlag;
+
+                @JsonProperty("totalAdjustRate")
+                private String totalAdjustRate;
+
+                @JsonProperty("totalAdjustRateB")
+                private String totalAdjustRateB;
+
+                @JsonProperty("totalPremium")
+                private String totalPremium;
+
+                @JsonProperty("appointAreaCode")
+                private String appointAreaCode;
+
+                @JsonProperty("argueSolution")
+                private String argueSolution;
+
+                @JsonProperty("renewalFlag")
+                private Boolean renewalFlag;
+
+                @JsonProperty("productionDate")
+                private String productionDate;
+
+                public ContractMainDTO (RiskInfoVo riskInfoVo, String productionDate) {
+                    this.riskCode = riskInfoVo.getRiskCode();
+                    this.validDate = riskInfoVo.getStartDate();
+                    this.expiryDate = riskInfoVo.getEndDate();
+                    this.argueSolution = "1";
+                    this.reinsuranceFlag = "0";
+                    this.coinsFlag = "0";
+                    this.renewalFlag = false;
+                    this.productionDate =  productionDate;
+                }
+            }
+
+            @Data
+            public static class PlantFormMessageBeanDTO implements Serializable {
+
+                @Serial
+                private static final long serialVersionUID = -2554294149574938544L;
+
+                @JsonProperty("answer")
+                private String answer;
+
+                @JsonProperty("expireDate")
+                private String expireDate;
+
+                @JsonProperty("queryDate")
+                private String queryDate;
+
+                @JsonProperty("platformCar")
+                private String platformCar;
+
+                @JsonProperty("querySequenceNo")
+                private String querySequenceNo;
+
+                @JsonProperty("question")
+                private String question;
+            }
+
+            @Data
+            public static class ApmServiceFeeBeanDTO implements Serializable {
+
+                @Serial
+                private static final long serialVersionUID = 4339900901992352781L;
+
+                @JsonProperty("hopeRate")
+                private String hopeRate;
+
+                @JsonProperty("syxAdviceSalesFeeRateMax")
+                private String syxAdviceSalesFeeRateMax;
+
+                @JsonProperty("hopeCostRate")
+                private Integer hopeCostRate;
+            }
+
+            @Data
+            public static class CoverageDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = -6820144850152402510L;
+
+                @JsonProperty("choosed")
+                private Boolean choosed;
+
+                @JsonProperty("kindCode")
+                private String kindCode;
+
+                @JsonProperty("kindName")
+                private String kindName;
+
+                @JsonProperty("calculateFlag")
+                private String calculateFlag;
+
+                @JsonProperty("optNotDeductibleFlag")
+                private Integer optNotDeductibleFlag;
+
+                @JsonProperty("notDeductibleFlag")
+                private Boolean notDeductibleFlag;
+
+                @JsonProperty("deductible")
+                private Integer deductible;
+
+                @JsonProperty("commission")
+                private String commission;
+
+                @JsonProperty("profitRate")
+                private String profitRate;
+
+                @JsonProperty("perRate")
+                private String perRate;
+
+                @JsonProperty("coverageAdjustRate")
+                private String coverageAdjustRate;
+
+                @JsonProperty("coveragePremium")
+                private String coveragePremium;
+
+                @JsonProperty("coverageRiskPremium")
+                private Integer coverageRiskPremium;
+
+                @JsonProperty("expiryDate")
+                private String expiryDate;
+
+                @JsonProperty("kindNo")
+                private Integer kindNo;
+
+                @JsonProperty("modeCode")
+                private String modeCode;
+
+                @JsonProperty("modeName")
+                private String modeName;
+
+                @JsonProperty("operateType")
+                private String operateType;
+
+                @JsonProperty("quantity")
+                private String quantity;
+
+                @JsonProperty("unitAmount")
+                private Integer unitAmount;
+
+                @JsonProperty("validDate")
+                private String validDate;
+
+                @JsonProperty("nonDeductibleKindCode")
+                private String nonDeductibleKindCode;
+
+                @JsonProperty("amount")
+                private Double amount;
+
+                @JsonProperty("basePremium")
+                private String basePremium;
+
+                @JsonProperty("coveragePremiumRange")
+                private String coveragePremiumRange;
+
+                @JsonProperty("coverageStandardPremium")
+                private String coverageStandardPremium;
+
+                @JsonProperty("kindType")
+                private String kindType;
+
+                @JsonProperty("rate")
+                private Integer rate;
+
+                @JsonProperty("shortRate")
+                private Integer shortRate;
+
+                @JsonProperty("shortRateType")
+                private Integer shortRateType;
+
+                @JsonProperty("flag")
+                private String flag;
+
+                @JsonProperty("valueAddedTax")
+                private String valueAddedTax;
+
+                @JsonProperty("noTaxPremium")
+                private String noTaxPremium;
+
+                @JsonProperty("remark1")
+                private String remark1;
+            }
+
+            @Data
+            public static class TaxDTO implements Serializable {
+
+                @Serial
+                private static final long serialVersionUID = -4961015015751434054L;
+
+                @JsonProperty("calculateMode")
+                private String calculateMode;
+
+                @JsonProperty("calculateMode1")
+                private String calculateMode1;
+
+                @JsonProperty("taxConditionCode")
+                private String taxConditionCode;
+
+                @JsonProperty("lastPaidYear")
+                private String lastPaidYear;
+
+                @JsonProperty("taxSub")
+                private List<String> taxSub;
+
+                @JsonProperty("paidFeeFlag")
+                private String paidFeeFlag;
+
+                @JsonProperty("taxRegisterNumber")
+                private String taxRegisterNumber;
+
+                @JsonProperty("annualTaxDue")
+                private String annualTaxDue;
+
+                @JsonProperty("sumTax")
+                private String sumTax;
+
+                @JsonProperty("sumOverdue")
+                private String sumOverdue;
+
+                @JsonProperty("taxPayerName")
+                private String taxPayerName;
+
+                @JsonProperty("taxPayerIdentityType")
+                private String taxPayerIdentityType;
+
+                @JsonProperty("taxPayerIdentityNo")
+                private String taxPayerIdentityNo;
+
+                @JsonProperty("taxPayerIdentificationCode")
+                private String taxPayerIdentificationCode;
+
+                public TaxDTO (VehicleAndVesselTaxVo taxVo) {
+                    this.calculateMode = "4";
+                    this.calculateMode1 = "4";
+                    this.taxConditionCode = "02";
+                    Calendar calendar = Calendar.getInstance();
+                    int year = calendar.get(Calendar.YEAR);
+                    this.lastPaidYear = year-1 + "";
+                    this.paidFeeFlag = "";
+                    this.taxRegisterNumber = "";
+                    this.annualTaxDue = "";
+                    this.sumTax = "";
+                    this.sumOverdue = "";
+                    this.taxPayerName = taxVo.getTaxpayerName();
+                    this.taxPayerIdentityType = taxVo.getTaxpayerIdentifier();
+                    this.taxPayerIdentityNo = taxVo.getIdentifyNumber();
+                    this.taxConditionCode = taxVo.getIdentifyNumber();
+                }
+            }
+
+        }
+
+        @Data
+        public static class CustomerDTO implements Serializable {
+            @Serial
+            private static final long serialVersionUID = 5658490070796856929L;
+
+            @JsonProperty("id")
+            private String id;
+
+            @JsonProperty("age")
+            private Integer age;
+
+            @JsonProperty("name")
+            private String name;
+
+            @JsonProperty("contactAddr_app")
+            private String contactAddr_app;
+
+            @JsonProperty("countryCode")
+            private String countryCode;
+
+            @JsonProperty("countryName")
+            private String countryName;
+
+            @JsonProperty("identifyType")
+            private String identifyType;
+
+            @JsonProperty("identifyNumber")
+            private String identifyNumber;
+
+            @JsonProperty("invocieType")
+            private String invocieType;
+
+            @JsonProperty("sex")
+            private String sex;
+
+            @JsonProperty("birthday")
+            private String birthday;
+
+            @JsonProperty("type")
+            private String type;
+
+            @JsonProperty("status")
+            private String status;
+
+            @JsonProperty("carInsuredRelation")
+            private String carInsuredRelation;
+
+            @JsonProperty("moneyLaunderingInd")
+            private String moneyLaunderingInd;
+
+            @JsonProperty("appliGuRelatedPartyCountryCode")
+            private String appliGuRelatedPartyCountryCode;
+
+            @JsonProperty("appliGuRelatedPartyCountryCodeCName")
+            private String appliGuRelatedPartyCountryCodeCName;
+
+            @JsonProperty("isClaimRights")
+            private String isClaimRights;
+
+            @JsonProperty("claimRightsName")
+            private String claimRightsName;
+
+            @JsonProperty("claimRightsIdentifyNumber")
+            private String claimRightsIdentifyNumber;
+
+            @JsonProperty("realName")
+            private String realName;
+
+            @JsonProperty("payIdentifyNumber")
+            private String payIdentifyNumber;
+
+            @JsonProperty("payIdentifyType")
+            private String payIdentifyType;
+
+            @JsonProperty("payMobile")
+            private String payMobile;
+
+            @JsonProperty("emailInvoice")
+            private String emailInvoice;
+
+            @JsonProperty("taxperNumber")
+            private String taxperNumber;
+
+            @JsonProperty("scorecustomerinfo")
+            private String scorecustomerinfo;
+
+            @JsonProperty("identifyValidDate")
+            private String identifyValidDate;
+
+            @JsonProperty("identifyValidEndDate")
+            private String identifyValidEndDate;
+
+            @JsonProperty("clientJobCode")
+            private String clientJobCode;
+
+            @JsonProperty("clientJobName")
+            private String clientJobName;
+
+            @JsonProperty("contacttype")
+            private String contacttype;
+
+            @JsonProperty("jobRisk")
+            private String jobRisk;
+
+            @JsonProperty("role")
+            private String role;
+
+            @JsonProperty("contact")
+            private List<ContactDTO> contact;
+
+            @Data
+            public static class ContactDTO implements Serializable {
+
+                @Serial
+                private static final long serialVersionUID = -1062779400597484777L;
+
+                @JsonProperty("addr")
+                private String addr;
+
+                @JsonProperty("mobile")
+                private String mobile;
+
+                @JsonProperty("name")
+                private String name;
+
+                @JsonProperty("postCode")
+                private String postCode;
+
+                @JsonProperty("province")
+                private String province;
+
+                @JsonProperty("district")
+                private String district;
+
+                @JsonProperty("related")
+                private String related;
+
+                @JsonProperty("tel")
+                private String tel;
+
+                @JsonProperty("linkName")
+                private String linkName;
+
+                @JsonProperty("mobile1")
+                private String mobile1;
+            }
+        }
+
+        @Data
+        public static class AccidentDTO implements Serializable {
+
+            @Serial
+            private static final long serialVersionUID = 395371203132071622L;
+
+            @JsonProperty("applyInvoiceFlag")
+            private Boolean applyInvoiceFlag;
+
+            @JsonProperty("attribute2")
+            private String attribute2;
+
+            @JsonProperty("attribute3")
+            private String attribute3;
+
+            @JsonProperty("insuranceAmount")
+            private String insuranceAmount;
+
+            @JsonProperty("premiumType")
+            private String premiumType;
+
+            @JsonProperty("premiumUpdate")
+            private String premiumUpdate;
+
+            @JsonProperty("quantity")
+            private String quantity;
+
+            @JsonProperty("rideRiskCode")
+            private String rideRiskCode;
+
+            @JsonProperty("rideRiskName")
+            private String rideRiskName;
+
+            @JsonProperty("sumPremium")
+            private String sumPremium;
+
+            @JsonProperty("unitPremium")
+            private String unitPremium;
+
+            @JsonProperty("unitPremiumOld")
+            private String unitPremiumOld;
+
+            @JsonProperty("unitType")
+            private String unitType;
+
+            @JsonProperty("validInd")
+            private String validInd;
+
+            @JsonProperty("disabledAI")
+            private Boolean disabledAI;
+
+            public AccidentDTO(AccidentalDrivingVo accidentalVo) {
+                this.attribute2 = accidentalVo.getProductCode();
+                this.rideRiskCode = accidentalVo.getRiskCode();
+                this.rideRiskName = accidentalVo.getRiskName();
+                this.sumPremium = accidentalVo.getSumPremium();
+                this.insuranceAmount = accidentalVo.getSumAmount();
+                this.quantity = String.valueOf(accidentalVo.getQuantity());
+            }
+        }
+    }
+
+    public ZmCrawlerQuotedPriceRequest (ZmCrawlerConfigureParameters parameters, QuoteVo quoteVo,
+                                        SaleInfoDTO saleInfoDTO, ZmCrawlerModelQueryResponse.FullCarDataDTO fullCarDataDTO,
+                                        ZmCrawlerActualValueResponse actualValueResponse,String userCode, BaseRequestHead head) {
+        this.setHead(head);
+        this.loginCom = parameters.getComCode();
+        this.userCode = userCode;
+        this.comeCode = parameters.getComCode();
+        this.agentCode = parameters.getHandlerCode();
+        this.businessData = new BusinessDataDTO(parameters, quoteVo, saleInfoDTO, fullCarDataDTO, actualValueResponse, userCode);
+    }
+}

+ 41 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/entity/Response/ZmCrawlerActualValueResponse.java

@@ -0,0 +1,41 @@
+package com.jzg.quote.zhongmei.crawler.entity.Response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quote.zhongmei.api.entity.response.BaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+
+/**
+ * @description: 中煤财险 获取折旧价 返参
+ * @author: shenwd
+ * @date: 2025/3/24 09:13
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ZmCrawlerActualValueResponse extends BaseResponse {
+    @Serial
+    private static final long serialVersionUID = -921517080932326597L;
+
+    @JsonProperty("actualValue")
+    private Double actualValue;
+
+    @JsonProperty("useYears")
+    private Integer useYears;
+    /**
+     * {
+     * "actualValue":63751.2
+     * "head":{
+     * "errorCode":""
+     * "logId":"5702025032109591033089"
+     * "returnCode":"0"
+     * "returnMessage":"成功"
+     * "token":"sinnK2bzos20250321084215617oftC3Dj2"
+     * "transCode":"ACTUALVALUE"
+     * "transType":"RES"
+     * }
+     * "useYears":2
+     * }
+     */
+}

+ 4 - 4
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/entity/Response/ZmCrawlerModelQueryResponse.java

@@ -53,7 +53,7 @@ public class ZmCrawlerModelQueryResponse extends BaseResponse {
          */
         @Override
         public String getCarYear() {
-            return fullCarData.getCarYear();
+            return this.fullCarData.getCarYear();
         }
 
         /**
@@ -62,7 +62,7 @@ public class ZmCrawlerModelQueryResponse extends BaseResponse {
          */
         @Override
         public String getPurchasePrice() {
-            return fullCarData.getPurchasePrice();
+            return String.valueOf(this.fullCarData.getPurchasePrice());
         }
 
         @NoArgsConstructor
@@ -83,7 +83,7 @@ public class ZmCrawlerModelQueryResponse extends BaseResponse {
             private String carType;
             private String carYear;
             private String createDate;
-            private String displacement;
+            private Integer displacement;
             private String energyTypes;
             private String factory;
             private String fuelType;
@@ -98,7 +98,7 @@ public class ZmCrawlerModelQueryResponse extends BaseResponse {
             private String newVehicleClassCode;
             private String originalPurchasePrice;
             private String power;
-            private String purchasePrice;
+            private Integer purchasePrice;
             private String purchasePriceTax;
             private String qualityMax;
             private String qualityMin;

+ 2075 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/entity/Response/ZmCrawlerQuotedPriceResponse.java

@@ -0,0 +1,2075 @@
+package com.jzg.quote.zhongmei.crawler.entity.Response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quote.zhongmei.api.entity.response.BaseResponse;
+import com.jzg.quote.zhongmei.crawler.entity.Request.ZmCrawlerQuotedPriceRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * @description: 中煤财险 报价 返参
+ * @author: shenwd
+ * @date: 2025/3/24 10:27
+ **/
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class ZmCrawlerQuotedPriceResponse extends BaseResponse {
+    @Serial
+    private static final long serialVersionUID = 5929122714197549712L;
+
+    @JsonProperty("bussinessMain")
+    private BussinessMainDTO bussinessMain;
+
+    @Data
+    public static class BussinessMainDTO implements Serializable {
+
+        @JsonProperty("accident")
+        private List<AccidentDTO> accident;
+
+        @JsonProperty("antiMoney")
+        private AntiMoneyDTO antiMoney;
+
+        @JsonProperty("busDemandPayCount")
+        private String busDemandPayCount;
+
+        @JsonProperty("bzDemandPayCount")
+        private String bzDemandPayCount;
+
+        @JsonProperty("businessMain")
+        private BusinessMainDTO businessMain;
+
+        @JsonProperty("carNviScheme")
+        private Object carNviScheme;
+
+        @JsonProperty("contract")
+        private List<ContractDTO> contract;
+
+        @JsonProperty("contractMainNo")
+        private String contractMainNo;
+
+        @JsonProperty("customer")
+        private List<CustomerDTO> customer;
+
+        @JsonProperty("insuranceMessage")
+        private Object insuranceMessage;
+
+        @JsonProperty("insuredObject")
+        private InsuredObjectDTO insuredObject;
+
+        @JsonProperty("otherMessage")
+        private List<String> otherMessage;
+
+        @JsonProperty("saleInfo")
+        private SaleInfoDTO saleInfo;
+
+        @JsonProperty("simpleInsuranceFeeSchemes")
+        private List<Object> simpleInsuranceFeeSchemes;
+
+        @JsonProperty("simpleInsuranceScheme")
+        private SimpleInsuranceSchemeDTO simpleInsuranceScheme;
+
+        @JsonProperty("sumDemandPayCount")
+        private String sumDemandPayCount;
+
+        @Data
+        public static class AccidentDTO implements Serializable {
+
+            @Serial
+            private static final long serialVersionUID = 5222779049351519573L;
+
+            @JsonProperty("applyInvoiceFlag")
+            private String applyInvoiceFlag = "1";
+
+            /**
+             * 非车险 险种类型编码
+             */
+            @JsonProperty("attribute2")
+            private String attribute2;
+
+            /**
+             * 保额
+             */
+            @JsonProperty("insuranceAmount")
+            private String insuranceAmount;
+
+            /**
+             * 份数
+             */
+            @JsonProperty("quantity")
+            private Integer quantity;
+
+            /**
+             * 险种编码
+             */
+            @JsonProperty("rideRiskCode")
+            private String rideRiskCode;
+
+            /**
+             * 险种名称
+             */
+            @JsonProperty("rideRiskName")
+            private String rideRiskName;
+
+            /**
+             * 总保费
+             */
+            @JsonProperty("sumPremium")
+            private Double sumPremium;
+
+            /**
+             * 单位保费
+             */
+            @JsonProperty("unitPremium")
+            private Double unitPremium;
+
+            /**
+             * 家财险 房屋类型编码
+             */
+            @JsonProperty("attribute3")
+            private String attribute3;
+
+            /**
+             * 家财险 房屋地址
+             */
+            @JsonProperty("attribute4")
+            private String attribute4;
+
+        }
+
+        @Data
+        public static class AntiMoneyDTO implements Serializable {
+
+            @Serial
+            private static final long serialVersionUID = -325303996606123207L;
+
+            @JsonProperty("abnormal")
+            private String abnormal;
+
+            @JsonProperty("age")
+            private String age;
+
+            @JsonProperty("agencyagreement")
+            private String agencyagreement;
+
+            @JsonProperty("assessorga")
+            private String assessorga;
+
+            @JsonProperty("assessorgaName")
+            private String assessorgaName;
+
+            @JsonProperty("backupsflag")
+            private String backupsflag;
+
+            @JsonProperty("bussinessno")
+            private String bussinessno;
+
+            @JsonProperty("channel")
+            private String channel;
+
+            @JsonProperty("clientCode")
+            private String clientCode;
+
+            @JsonProperty("clienthimself")
+            private String clienthimself;
+
+            @JsonProperty("clientname")
+            private String clientname;
+
+            @JsonProperty("customerDeal")
+            private String customerDeal;
+
+            @JsonProperty("doubttrade")
+            private String doubttrade;
+
+            @JsonProperty("flag")
+            private String flag;
+
+            @JsonProperty("foreignpd")
+            private String foreignpd;
+
+            @JsonProperty("grade")
+            private String grade;
+
+            @JsonProperty("identityinfo")
+            private String identityinfo;
+
+            @JsonProperty("idtype")
+            private String idtype;
+
+            @JsonProperty("insurcerisk")
+            private String insurcerisk;
+
+            @JsonProperty("insuredTypeFlag")
+            private String insuredTypeFlag;
+
+            @JsonProperty("jobrisk")
+            private String jobrisk;
+
+            @JsonProperty("matpremium")
+            private String matpremium;
+
+            @JsonProperty("moneylaundercode")
+            private String moneylaundercode;
+
+            @JsonProperty("nationality")
+            private String nationality;
+
+            @JsonProperty("phonenumber")
+            private String phonenumber;
+
+            @JsonProperty("riskinfo")
+            private String riskinfo;
+
+            @JsonProperty("savetime")
+            private Date savetime;
+
+            @JsonProperty("score")
+            private String score;
+
+            @JsonProperty("traderecords")
+            private String traderecords;
+        }
+
+        @Data
+        public static class BusinessMainDTO implements Serializable {
+            @Serial
+            private static final long serialVersionUID = -4336927702479910996L;
+
+            @JsonProperty("appointAreaCode")
+            private String appointAreaCode;
+
+            @JsonProperty("businessType")
+            private String businessType;
+
+            @JsonProperty("calculateTime")
+            private String calculateTime;
+
+            @JsonProperty("doubrFulBusReason")
+            private String doubrFulBusReason;
+
+            @JsonProperty("mainPort")
+            private String mainPort;
+
+            @JsonProperty("makeCom")
+            private String makeCom;
+
+            @JsonProperty("oneForOneFlag")
+            private String oneForOneFlag;
+
+            @JsonProperty("operateDateTime")
+            private String operateDateTime;
+
+            @JsonProperty("operatorCode")
+            private String operatorCode;
+
+            @JsonProperty("planCode")
+            private String planCode;
+
+            @JsonProperty("recordTime")
+            private String recordTime;
+
+            @JsonProperty("wechatHiddenFee")
+            private String wechatHiddenFee;
+        }
+
+        @Data
+        public static class ContractDTO implements Serializable {
+
+            @Serial
+            private static final long serialVersionUID = -6478328868996717968L;
+
+            @JsonProperty("aPQtnResultXom")
+            private APQtnResultXomDTO aPQtnResultXom;
+
+            @JsonProperty("accidentBeanlist")
+            private List<Object> accidentBeanlist;
+
+            @JsonProperty("adjust")
+            private List<AdjustDTO> adjust;
+
+            @JsonProperty("apmServiceFeeBean")
+            private ApmServiceFeeBeanDTO apmServiceFeeBean;
+
+            @JsonProperty("coinsInfoBean")
+            private Object coinsInfoBean;
+
+            @JsonProperty("contractMain")
+            private ContractMainDTO contractMain;
+
+            @JsonProperty("coverage")
+            private List<CoverageDTO> coverage;
+
+            @JsonProperty("engage")
+            private List<EngageDTO> engage;
+
+            @JsonProperty("feeProperty")
+            private FeePropertyDTO feeProperty;
+
+            @JsonProperty("lastCoverages")
+            private Object lastCoverages;
+
+            @JsonProperty("plantFormMessageBean")
+            private PlantFormMessageBeanDTO plantFormMessageBean;
+
+            @JsonProperty("riskItemBeanlist")
+            private PlantFormMessageBeanDTO riskItemBeanlist;
+
+            @JsonProperty("resinsureCIInfo")
+            private ResinsureCIInfoDTO resinsureCIInfo;
+
+            @JsonProperty("tax")
+            private TaxDTO tax;
+
+            @JsonProperty("trafficDetail")
+            private List<TrafficDetailDTO> trafficDetail;
+
+            @Data
+            public static class APQtnResultXomDTO implements Serializable {
+
+                @Serial
+                private static final long serialVersionUID = -5040040784693277083L;
+
+                @JsonProperty("billCOMCOR")
+                private String billCOMCOR;
+
+                @JsonProperty("billCOMCommission")
+                private Integer billCOMCommission;
+
+                @JsonProperty("billCOMELR")
+                private Double billCOMELR;
+
+                @JsonProperty("billCOR")
+                private Double billCOR;
+
+                @JsonProperty("billCTPCOR")
+                private Double billCTPCOR;
+
+                @JsonProperty("billCTPELR")
+                private Double billCTPELR;
+
+                @JsonProperty("billCommission")
+                private Double billCommission;
+
+                @JsonProperty("billELR")
+                private Double billELR;
+
+                @JsonProperty("billELRNauto")
+                private Integer billELRNauto;
+
+                @JsonProperty("billELRori")
+                private Double billELRori;
+
+                @JsonProperty("billELRtot")
+                private Double billELRtot;
+
+                @JsonProperty("comCostPrem")
+                private Double comCostPrem;
+
+                @JsonProperty("comCostPrem2")
+                private Double comCostPrem2;
+
+                @JsonProperty("comCostPrem3")
+                private Double comCostPrem3;
+
+                @JsonProperty("ctpCostPrem")
+                private Double ctpCostPrem;
+
+                @JsonProperty("ctpCostPrem2")
+                private Double ctpCostPrem2;
+
+                @JsonProperty("ctpCostPrem3")
+                private Double ctpCostPrem3;
+
+                @JsonProperty("ctpCostPremFlag")
+                private Integer ctpCostPremFlag;
+
+                @JsonProperty("distributionDiscount")
+                private Integer distributionDiscount;
+
+                @JsonProperty("distributionDiscount2")
+                private Integer distributionDiscount2;
+
+                @JsonProperty("entireDiscount")
+                private Double entireDiscount;
+
+                @JsonProperty("entireExpDiscount")
+                private Integer entireExpDiscount;
+
+                @JsonProperty("entireFitDiscAdj")
+                private Double entireFitDiscAdj;
+
+                @JsonProperty("entireInitialDiscount")
+                private Double entireInitialDiscount;
+
+                @JsonProperty("entireRawInitialDiscount")
+                private Double entireRawInitialDiscount;
+
+                @JsonProperty("entireRecommenDiscount")
+                private Double entireRecommenDiscount;
+
+                @JsonProperty("entireRecommenDiscount1")
+                private Double entireRecommenDiscount1;
+
+                @JsonProperty("entireRecommenDiscount2")
+                private Double entireRecommenDiscount2;
+
+                @JsonProperty("entireRecommenDiscountNauto")
+                private Integer entireRecommenDiscountNauto;
+
+                @JsonProperty("entireRecommenDiscountOri")
+                private Double entireRecommenDiscountOri;
+
+                @JsonProperty("entireUWritingDiscount")
+                private Integer entireUWritingDiscount;
+
+                @JsonProperty("exceptionflag")
+                private String exceptionflag;
+
+                @JsonProperty("id")
+                private String id;
+
+                @JsonProperty("isPrice")
+                private String isPrice;
+
+                @JsonProperty("jsCostRate")
+                private Double jsCostRate;
+
+                @JsonProperty("nCDBpremELR")
+                private Double nCDBpremELR;
+
+                @JsonProperty("reneProtectDiscLimit")
+                private Integer reneProtectDiscLimit;
+
+                @JsonProperty("strategyAdj")
+                private Integer strategyAdj;
+
+                @JsonProperty("sunlightScore")
+                private Integer sunlightScore;
+
+                @JsonProperty("tradeType")
+                private String tradeType;
+
+                @JsonProperty("uWDiscFixed")
+                private Integer uWDiscFixed;
+
+                @JsonProperty("uWDiscFloor")
+                private Integer uWDiscFloor;
+
+                @JsonProperty("uWDiscLimit")
+                private Integer uWDiscLimit;
+
+                @JsonProperty("uWPolicyType")
+                private String uWPolicyType;
+
+                @JsonProperty("aPQtnBillFactorDtoList")
+                private List<APQtnFactorDTO> aPQtnBillFactorDtoList;
+
+                @Data
+                public static class APQtnFactorDTO implements Serializable {
+
+                    @Serial
+                    private static final long serialVersionUID = 1618083748297441780L;
+
+                    @JsonProperty("factorcode")
+                    private String factorcode;
+
+                    @JsonProperty("optioncde")
+                    private String optioncde;
+
+                    @JsonProperty("optionflag")
+                    private String optionflag;
+
+                    @JsonProperty("optionnme")
+                    private String optionnme;
+
+                    @JsonProperty("proposalno")
+                    private String proposalno;
+
+                    @JsonProperty("value")
+                    private Double value;
+                }
+
+                @JsonProperty("aPQtnCheckRuleDtoList")
+                private List<APQtnCheckRuleDTO> aPQtnCheckRuleDtoList;
+
+                @Data
+                public static class APQtnCheckRuleDTO implements Serializable {
+
+                    @Serial
+                    private static final long serialVersionUID = 1608250438711364415L;
+                }
+
+                @JsonProperty("aPQtnCvrgInfoDtoList")
+                private List<APQtnCvrgInfoDTO> aPQtnCvrgInfoDtoList;
+
+                @Data
+                public static class APQtnCvrgInfoDTO implements Serializable {
+
+                    @Serial
+                    private static final long serialVersionUID = -2227322829575003623L;
+
+                    @JsonProperty("costprem")
+                    private Double costprem;
+
+                    @JsonProperty("costprem2")
+                    private Double costprem2;
+
+                    @JsonProperty("costprem3")
+                    private Double costprem3;
+
+                    @JsonProperty("cvrgcde")
+                    private String cvrgcde;
+
+                    @JsonProperty("cvrgnme")
+                    private String cvrgnme;
+
+                    @JsonProperty("proposalno")
+                    private String proposalno;
+                }
+
+                @JsonProperty("aPQtnExpectFactorDtoList")
+                private List<Object> aPQtnExpectFactorDtoList;
+
+                @JsonProperty("aPQtnInitialFactorDtoList")
+                private List<APQtnFactorDTO> aPQtnInitialFactorDtoList;
+
+                @JsonProperty("aPQtnRecommenFactorDtoList")
+                private List<APQtnFactorDTO> aPQtnRecommenFactorDtoList;
+
+                @JsonProperty("aPQtnUWFactorDtoList")
+                private List<Object> aPQtnUWFactorDtoList;
+
+                @JsonProperty("effectInfoDtoList")
+                private List<EffectInfoDTO> effectInfoDtoList;
+
+                @Data
+                public static class EffectInfoDTO implements Serializable {
+
+                    @Serial
+                    private static final long serialVersionUID = -3074571146709633258L;
+
+                    @JsonProperty("effectcode")
+                    private String effectcode;
+
+                    @JsonProperty("effectname")
+                    private String effectname;
+
+                    @JsonProperty("effectvalue")
+                    private String effectvalue;
+
+                    @JsonProperty("proposalno")
+                    private String proposalno;
+
+                    @JsonProperty("remark4")
+                    private String remark4;
+                }
+
+                @JsonProperty("guSunlightResWithScoreDtoList")
+                private List<GuSunlightResWithScoreDTO> guSunlightResWithScoreDtoList;
+
+                @Data
+                public static class GuSunlightResWithScoreDTO implements Serializable {
+
+                    @Serial
+                    private static final long serialVersionUID = 3162485542533367589L;
+
+                    @JsonProperty("ctpOnlyELR")
+                    private Double ctpOnlyELR;
+
+                    @JsonProperty("ctpOnlyGrade")
+                    private String ctpOnlyGrade;
+
+                    @JsonProperty("ctpOnlyScore")
+                    private Double ctpOnlyScore;
+
+                    @JsonProperty("frameNo")
+                    private String frameNo;
+
+                    @JsonProperty("fullCoverageELR")
+                    private Double fullCoverageELR;
+
+                    @JsonProperty("fullCoverageGrade")
+                    private String fullCoverageGrade;
+
+                    @JsonProperty("fullCoverageScore")
+                    private Double fullCoverageScore;
+
+                    @JsonProperty("id")
+                    private String id;
+
+                    @JsonProperty("insertTime")
+                    private Date insertTime;
+
+                    @JsonProperty("isFromApps")
+                    private String isFromApps;
+
+                    @JsonProperty("liabilityOnlyELR")
+                    private Double liabilityOnlyELR;
+
+                    @JsonProperty("liabilityOnlyGrade")
+                    private String liabilityOnlyGrade;
+
+                    @JsonProperty("liabilityOnlyScore")
+                    private Double liabilityOnlyScore;
+
+                    @JsonProperty("orderId")
+                    private String orderId;
+
+                    @JsonProperty("productCde")
+                    private String productCde;
+
+                    @JsonProperty("proposalNo")
+                    private String proposalNo;
+
+                    @JsonProperty("sunlightStatus")
+                    private String sunlightStatus;
+                }
+
+                @JsonProperty("gusunlightresultmainDto")
+                private GusunlightresultmainDTO gusunlightresultmainDto;
+
+                @Data
+                public static class GusunlightresultmainDTO implements Serializable {
+
+                    @Serial
+                    private static final long serialVersionUID = -8331306385370640056L;
+
+                    @JsonProperty("areaScore")
+                    private String areaScore;
+
+                    @JsonProperty("billCarXlr")
+                    private Double billCarXlr;
+
+                    @JsonProperty("billNoCarlr")
+                    private Double billNoCarlr;
+
+                    @JsonProperty("billcomelr")
+                    private Double billcomelr;
+
+                    @JsonProperty("billelr")
+                    private Double billelr;
+
+                    @JsonProperty("carnviPolicyRate")
+                    private Double carnviPolicyRate;
+
+                    @JsonProperty("csAdjustFactorMultiply")
+                    private String csAdjustFactorMultiply;
+
+                    @JsonProperty("evScore")
+                    private String evScore;
+
+                    @JsonProperty("fcCostRate")
+                    private Double fcCostRate;
+
+                    @JsonProperty("fcSCfeeRate")
+                    private Double fcSCfeeRate;
+
+                    @JsonProperty("finalDiscount")
+                    private Double finalDiscount;
+
+                    @JsonProperty("jqAdjustFactorMultiply")
+                    private String jqAdjustFactorMultiply;
+
+                    @JsonProperty("jqCostRate")
+                    private Double jqCostRate;
+
+                    @JsonProperty("jqFscFee")
+                    private Double jqFscFee;
+
+                    @JsonProperty("jsCostRate")
+                    private Double jsCostRate;
+
+                    @JsonProperty("jsFscTotalRate")
+                    private Double jsFscTotalRate;
+
+                    @JsonProperty("jsScTotalRate")
+                    private Double jsScTotalRate;
+
+                    @JsonProperty("jsTotalScfeeRate")
+                    private Double jsTotalScfeeRate;
+
+                    @JsonProperty("regionalDiscFloor")
+                    private Double regionalDiscFloor;
+
+                    @JsonProperty("regionalDiscLimit")
+                    private Double regionalDiscLimit;
+
+                    @JsonProperty("standardCommissionCom")
+                    private Double standardCommissionCom;
+
+                    @JsonProperty("standardCommissionCtp")
+                    private Double standardCommissionCtp;
+
+                    @JsonProperty("sumFeePremiumX")
+                    private Double sumFeePremiumX;
+
+                    @JsonProperty("sumNotTaxPremiumX")
+                    private Double sumNotTaxPremiumX;
+
+                    @JsonProperty("sunlightscore")
+                    private Double sunlightscore;
+
+                    @JsonProperty("syCostRate")
+                    private Double syCostRate;
+
+                    @JsonProperty("syFscFee")
+                    private Double syFscFee;
+
+                    @JsonProperty("szAdjustFactorMultiply")
+                    private String szAdjustFactorMultiply;
+
+                    @JsonProperty("zmScore")
+                    private Integer zmScore;
+
+                    @JsonProperty("zmScoreTranche")
+                    private String zmScoreTranche;
+
+                    @JsonProperty("zmScorecx")
+                    private Integer zmScorecx;
+                }
+            }
+
+            @Data
+            public static class AdjustDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 6126212932071006973L;
+
+                @JsonProperty("adjustClass")
+                private String adjustClass;
+
+                @JsonProperty("adjustCode")
+                private String adjustCode;
+
+                @JsonProperty("adjustName")
+                private String adjustName;
+
+                @JsonProperty("adjustRate")
+                private Double adjustRate;
+
+                @JsonProperty("claimTimes")
+                private Integer claimTimes;
+
+                @JsonProperty("insureYears")
+                private Integer insureYears;
+
+                @JsonProperty("maxRate")
+                private Integer maxRate;
+
+                @JsonProperty("minRate")
+                private Integer minRate;
+
+                @JsonProperty("oriRate")
+                private Integer oriRate;
+
+                @JsonProperty("status")
+                private String status;
+
+                @JsonProperty("stepValue")
+                private Double stepValue;
+
+                @JsonProperty("subProfitCode")
+                private String subProfitCode;
+
+                @JsonProperty("subProfitName")
+                private String subProfitName;
+            }
+
+            @Data
+            public static class ApmServiceFeeBeanDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = -6901134627430765348L;
+
+                @JsonProperty("encourageFee")
+                private Double encourageFee;
+
+                @JsonProperty("finalRate")
+                private Double finalRate;
+
+                @JsonProperty("firstfloorFee")
+                private Double firstfloorFee;
+
+                @JsonProperty("hopeCostRate")
+                private Double hopeCostRate;
+
+                @JsonProperty("hopeRate")
+                private Double hopeRate;
+
+                @JsonProperty("iTFee")
+                private Double iTFee;
+
+                @JsonProperty("platformRetention")
+                private Double platformRetention;
+
+                @JsonProperty("projectOperation")
+                private Double projectOperation;
+
+                @JsonProperty("secondfloorFee")
+                private Double secondfloorFee;
+
+                @JsonProperty("singleFee")
+                private Double singleFee;
+
+                @JsonProperty("spreadFee")
+                private Double spreadFee;
+
+                @JsonProperty("sumAllFee")
+                private Double sumAllFee;
+
+                @JsonProperty("syxAdviceSalesFeeRateMax")
+                private Double syxAdviceSalesFeeRateMax;
+
+                @JsonProperty("twoLevelProjectOperation")
+                private Double twoLevelProjectOperation;
+
+                @JsonProperty("twoLevelSingleFee")
+                private Double twoLevelSingleFee;
+
+                @JsonProperty("twoLevelencourageFee")
+                private Double twoLevelencourageFee;
+
+                @JsonProperty("twolevelTotalcostpercent")
+                private Double twolevelTotalcostpercent;
+
+                @JsonProperty("warningsRuleInfo")
+                private String warningsRuleInfo;
+            }
+
+            @Data
+            public static class ContractMainDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 4458020846741834950L;
+
+                @JsonProperty("amount")
+                private Integer amount;
+
+                @JsonProperty("argueSolution")
+                private String argueSolution;
+
+                @JsonProperty("chgPremium")
+                private Double chgPremium;
+
+                @JsonProperty("coinsFlag")
+                private String coinsFlag;
+
+                @JsonProperty("commissionAmount")
+                private Double commissionAmount;
+
+                @JsonProperty("commissionAmountRange")
+                private Double commissionAmountRange;
+
+                @JsonProperty("commissionRate")
+                private Double commissionRate;
+
+                @JsonProperty("contractNo")
+                private String contractNo;
+
+                @JsonProperty("damagedTimes")
+                private Integer damagedTimes;
+
+                @JsonProperty("expectedTotalAdjustRate")
+                private Double expectedTotalAdjustRate;
+
+                @JsonProperty("expenseAmount")
+                private Double expenseAmount;
+
+                @JsonProperty("expenseAmountRange")
+                private Double expenseAmountRange;
+
+                @JsonProperty("expenseRate")
+                private Double expenseRate;
+
+                @JsonProperty("expiryDate")
+                private String expiryDate;
+
+                @JsonProperty("isBlackListFlag")
+                private String isBlackListFlag;
+
+                @JsonProperty("lastYearPolicyNo")
+                private String lastYearPolicyNo;
+
+                @JsonProperty("md5Xml")
+                private String md5Xml;
+
+                @JsonProperty("newFlag")
+                private String newFlag;
+
+                @JsonProperty("performanceRate")
+                private Double performanceRate;
+
+                @JsonProperty("premiumCount")
+                private Double premiumCount;
+
+                @JsonProperty("productionDate")
+                private String productionDate;
+
+                @JsonProperty("reinsuranceFlag")
+                private String reinsuranceFlag;
+
+                @JsonProperty("relatedType")
+                private String relatedType;
+
+                @JsonProperty("renewYears")
+                private String renewYears;
+
+                @JsonProperty("renewalFlag")
+                private Boolean renewalFlag;
+
+                @JsonProperty("repeatInfo")
+                private String repeatInfo;
+
+                @JsonProperty("repeatInfoOrigin")
+                private String repeatInfoOrigin;
+
+                @JsonProperty("riskCode")
+                private String riskCode;
+
+                @JsonProperty("ruleId")
+                private String ruleId;
+
+                @JsonProperty("specialContractFlag")
+                private String specialContractFlag;
+
+                @JsonProperty("specialContractNo")
+                private String specialContractNo;
+
+                @JsonProperty("status")
+                private String status;
+
+                @JsonProperty("suggestedTotalAjdustRate")
+                private Double suggestedTotalAjdustRate;
+
+                @JsonProperty("sumAdjustValue")
+                private Double sumAdjustValue;
+
+                @JsonProperty("sumnotaxPremium")
+                private Double sumnotaxPremium;
+
+                @JsonProperty("sumvalueAddedTax")
+                private Double sumvalueAddedTax;
+
+                @JsonProperty("totalAdjustRate")
+                private Double totalAdjustRate;
+
+                @JsonProperty("totalAdjustRateB")
+                private Double totalAdjustRateB;
+
+                @JsonProperty("totalPremium")
+                private Double totalPremium;
+
+                @JsonProperty("totalPremiumRange")
+                private Double totalPremiumRange;
+
+                @JsonProperty("totalRiskPremium")
+                private Double totalRiskPremium;
+
+                @JsonProperty("totalRiskPremiumRange")
+                private Double totalRiskPremiumRange;
+
+                @JsonProperty("totalStandardPremium")
+                private Double totalStandardPremium;
+
+                @JsonProperty("totalStandardPremiumRange")
+                private Double totalStandardPremiumRange;
+
+                @JsonProperty("trafficOverLawRate")
+                private Double trafficOverLawRate;
+
+                @JsonProperty("validDate")
+                private String validDate;
+            }
+
+            @Data
+            public static class CoverageDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = -8585442498749218109L;
+
+                @JsonProperty("amount")
+                private Double amount;
+
+                @JsonProperty("basePremium")
+                private Double basePremium;
+
+                @JsonProperty("benchmarkPremium")
+                private Double benchmarkPremium;
+
+                @JsonProperty("benchmarkPremiumAtSix")
+                private Double benchmarkPremiumAtSix;
+
+                @JsonProperty("calculateInd")
+                private String calculateInd;
+
+                @JsonProperty("commission")
+                private Double commission;
+
+                @JsonProperty("commissionAmount")
+                private Double commissionAmount;
+
+                @JsonProperty("coverageAdjustRate")
+                private Double coverageAdjustRate;
+
+                @JsonProperty("coveragePremium")
+                private Double coveragePremium;
+
+                @JsonProperty("coveragePremiumRange")
+                private Double coveragePremiumRange;
+
+                @JsonProperty("coverageRiskPremium")
+                private Double coverageRiskPremium;
+
+                @JsonProperty("coverageRiskPremiumRange")
+                private Double coverageRiskPremiumRange;
+
+                @JsonProperty("coverageStandardPremium")
+                private Double coverageStandardPremium;
+
+                @JsonProperty("currency")
+                private String currency;
+
+                @JsonProperty("deductible")
+                private Double deductible;
+
+                @JsonProperty("deductibleRate")
+                private Double deductibleRate;
+
+                @JsonProperty("distinguish")
+                private String distinguish;
+
+                @JsonProperty("expiryDate")
+                private String expiryDate;
+
+                @JsonProperty("franchise")
+                private Double franchise;
+
+                @JsonProperty("kindCode")
+                private String kindCode;
+
+                @JsonProperty("kindName")
+                private String kindName;
+
+                @JsonProperty("kindNo")
+                private Double kindNo;
+
+                @JsonProperty("kindType")
+                private String kindType;
+
+                @JsonProperty("modeCode")
+                private String modeCode;
+
+                @JsonProperty("modeName")
+                private String modeName;
+
+                @JsonProperty("netPremium")
+                private Double netPremium;
+
+                @JsonProperty("noTaxPremium")
+                private Double noTaxPremium;
+
+                @JsonProperty("orgCommissionAmount")
+                private Double orgCommissionAmount;
+
+                @JsonProperty("quantity")
+                private Integer quantity;
+
+                @JsonProperty("rate")
+                private Double rate;
+
+                @JsonProperty("remark1")
+                private String remark1;
+
+                @JsonProperty("ruleId")
+                private String ruleId;
+
+                @JsonProperty("shortRate")
+                private Double shortRate;
+
+                @JsonProperty("shortRateType")
+                private String shortRateType;
+
+                @JsonProperty("unitAmount")
+                private Double unitAmount;
+
+                @JsonProperty("validDate")
+                private String validDate;
+
+                @JsonProperty("valueAddedTax")
+                private Double valueAddedTax;
+            }
+
+            @Data
+            public static class EngageDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 7513626517194552640L;
+
+                @JsonProperty("addAutomaticFlag")
+                private String addAutomaticFlag;
+
+                @JsonProperty("chooseFlag")
+                private String chooseFlag;
+
+                @JsonProperty("engageCode")
+                private String engageCode;
+
+                @JsonProperty("engageCodeDetail")
+                private String engageCodeDetail;
+
+                @JsonProperty("engageName")
+                private String engageName;
+
+                @JsonProperty("engageText")
+                private String engageText;
+
+                @JsonProperty("modifyInd")
+                private String modifyInd;
+
+                @JsonProperty("riskCode")
+                private String riskCode;
+
+                @JsonProperty("sequenceNo")
+                private String sequenceNo;
+            }
+
+            @Data
+            public static class FeePropertyDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = -6791653654028705814L;
+
+                @JsonProperty("fee33")
+                private Double fee33;
+
+                @JsonProperty("fee34")
+                private Double fee34;
+
+                @JsonProperty("fee35")
+                private Double fee35;
+
+                @JsonProperty("plancode")
+                private String plancode;
+
+                @JsonProperty("proposalno")
+                private String proposalno;
+
+                @JsonProperty("riskcode")
+                private String riskcode;
+
+                @JsonProperty("serialno")
+                private String serialno;
+
+                @JsonProperty("staticpropertyf16")
+                private Double staticpropertyf16;
+
+                @JsonProperty("staticpropertyf17")
+                private Double staticpropertyf17;
+
+                @JsonProperty("staticpropertyf18")
+                private Double staticpropertyf18;
+
+                @JsonProperty("staticpropertyf19")
+                private Double staticpropertyf19    ;
+
+                @JsonProperty("staticpropertyf20")
+                private Double staticpropertyf20;
+
+                @JsonProperty("staticpropertyf21")
+                private Double staticpropertyf21;
+
+                @JsonProperty("staticpropertyf22")
+                private Double staticpropertyf22;
+
+                @JsonProperty("staticpropertyf23")
+                private Double staticpropertyf23;
+
+                @JsonProperty("staticpropertyf24")
+                private Double staticpropertyf24;
+
+                @JsonProperty("staticpropertyf25")
+                private Double staticpropertyf25;
+
+                @JsonProperty("staticpropertyf26")
+                private Double staticpropertyf26;
+
+                @JsonProperty("staticpropertyf27")
+                private Double staticpropertyf27;
+
+                @JsonProperty("staticpropertyf28")
+                private Double staticpropertyf28;
+
+                @JsonProperty("staticpropertyf29")
+                private Double staticpropertyf29;
+
+                @JsonProperty("staticpropertyf30")
+                private Double staticpropertyf30;
+
+                @JsonProperty("staticpropertyf31")
+                private Double staticpropertyf31;
+
+                @JsonProperty("staticpropertyf32")
+                private Double staticpropertyf32;
+
+                @JsonProperty("staticpropertyf33")
+                private Double staticpropertyf33;
+
+                @JsonProperty("staticpropertyf34")
+                private Double staticpropertyf34;
+
+                @JsonProperty("staticpropertyf35")
+                private Double staticpropertyf35;
+
+                @JsonProperty("staticpropertyf36")
+                private Double staticpropertyf36;
+
+                @JsonProperty("staticpropertyf37")
+                private Double staticpropertyf37;
+
+                @JsonProperty("staticpropertyf38")
+                private Double staticpropertyf38;
+
+                @JsonProperty("staticpropertyf39")
+                private Double staticpropertyf39;
+
+                @JsonProperty("staticpropertyf40")
+                private Double staticpropertyf40;
+
+                @JsonProperty("staticpropertyf42")
+                private Double staticpropertyf42;
+
+                @JsonProperty("staticpropertyf43")
+                private Double staticpropertyf43;
+
+                @JsonProperty("staticpropertyf44")
+                private Double staticpropertyf44;
+
+                @JsonProperty("subproposalno")
+                private String subproposalno;
+            }
+
+            @Data
+            public static class PlantFormMessageBeanDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 2318635843771667077L;
+
+                @JsonProperty("querySequenceNo")
+                private String querySequenceNo;
+
+                @JsonProperty("score")
+                private Integer score;
+
+                @JsonProperty("updateTime")
+                private String updateTime;
+            }
+
+            @Data
+            public static class ResinsureCIInfoDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = -395471810788381952L;
+                @JsonProperty("reinsureRepeatFlag")
+                private String reinsureRepeatFlag;
+            }
+
+            @Data
+            public static class TaxDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = -5058376897187886178L;
+
+                @JsonProperty("annualTaxAmount")
+                private Integer annualTaxAmount;
+
+                @JsonProperty("annualTaxDue")
+                private Integer annualTaxDue;
+
+                @JsonProperty("calculateMode")
+                private String calculateMode;
+
+                @JsonProperty("calculateflag")
+                private String calculateflag;
+
+                @JsonProperty("changeAnnualTaxDue")
+                private Double changeAnnualTaxDue;
+
+                @JsonProperty("changeOverdue")
+                private Double changeOverdue;
+
+                @JsonProperty("changeSumTaxDefault")
+                private Double changeSumTaxDefault;
+
+                @JsonProperty("changeTaxAmount")
+                private Double changeTaxAmount;
+
+                @JsonProperty("commission")
+                private Double commission;
+
+                @JsonProperty("deduction")
+                private Double deduction;
+
+                @JsonProperty("deductionDueProportion")
+                private Double deductionDueProportion;
+
+                @JsonProperty("documentNumber")
+                private String documentNumber;
+
+                @JsonProperty("exceedDaysCount")
+                private String exceedDaysCount;
+
+                @JsonProperty("lastPaidYear")
+                private String lastPaidYear;
+
+                @JsonProperty("paidFeeFlag")
+                private String paidFeeFlag;
+
+                @JsonProperty("sumOverdue")
+                private Double sumOverdue;
+
+                @JsonProperty("sumTax")
+                private Double sumTax;
+
+                @JsonProperty("sumTaxDefault")
+                private Double sumTaxDefault;
+
+                @JsonProperty("taxConditionCode")
+                private String taxConditionCode;
+
+                @JsonProperty("taxDepartment")
+                private String taxDepartment;
+
+                @JsonProperty("taxDepartmentCode")
+                private String taxDepartmentCode;
+
+                @JsonProperty("taxEndDate")
+                private String taxEndDate;
+
+                @JsonProperty("taxItemCode")
+                private String taxItemCode;
+
+                @JsonProperty("taxItemName")
+                private String taxItemName;
+
+                @JsonProperty("taxPaidAreaCode")
+                private String taxPaidAreaCode;
+
+                @JsonProperty("taxPayerIdentificationCode")
+                private String taxPayerIdentificationCode;
+
+                @JsonProperty("taxPayerIdentityNo")
+                private String taxPayerIdentityNo;
+
+                @JsonProperty("taxPayerIdentityType")
+                private String taxPayerIdentityType;
+
+                @JsonProperty("taxPayerName")
+                private String taxPayerName;
+
+                @JsonProperty("taxRegisterNumber")
+                private String taxRegisterNumber;
+
+                @JsonProperty("taxStartDate")
+                private String taxStartDate;
+
+                @JsonProperty("unit")
+                private String unit;
+
+                @JsonProperty("taxSub")
+                private List<TaxSubDTO> taxSub;
+
+                @Data
+                public static class TaxSubDTO implements Serializable {
+                    @Serial
+                    private static final long serialVersionUID = 7033107959696511150L;
+
+                    @JsonProperty("annualtaxamount")
+                    private String annualtaxamount;
+
+                    @JsonProperty("deduction")
+                    private String deduction;
+
+                    @JsonProperty("deductionDocumentNumber")
+                    private String deductionDocumentNumber;
+
+                    @JsonProperty("deductionDueProportion")
+                    private String deductionDueProportion;
+
+                    @JsonProperty("exceedDate")
+                    private String exceedDate;
+
+                    @JsonProperty("exceedDaysCount")
+                    private String exceedDaysCount;
+
+                    @JsonProperty("itemNo")
+                    private String itemNo;
+
+                    @JsonProperty("lineNo")
+                    private String lineNo;
+
+                    @JsonProperty("overDue")
+                    private String overDue;
+
+                    @JsonProperty("rowType")
+                    private String rowType;
+
+                    @JsonProperty("taxDue")
+                    private String taxDue;
+
+                    @JsonProperty("taxEndDate")
+                    private String taxEndDate;
+
+                    @JsonProperty("taxLocationCode")
+                    private String taxLocationCode;
+
+                    @JsonProperty("taxRateEndDate")
+                    private String taxRateEndDate;
+
+                    @JsonProperty("taxRateStartDate")
+                    private String taxRateStartDate;
+
+                    @JsonProperty("taxStartDate")
+                    private String taxStartDate;
+
+                    @JsonProperty("taxUnitTypeCode")
+                    private String taxUnitTypeCode;
+
+                    @JsonProperty("totalAmount")
+                    private String totalAmount;
+
+                    @JsonProperty("unitRate")
+                    private String unitRate;
+                }
+            }
+
+            @Data
+            public static class TrafficDetailDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 4647174578939600794L;
+
+                @JsonProperty("businessType")
+                private String businessType;
+
+                @JsonProperty("trafficCode")
+                private String trafficCode;
+
+                @JsonProperty("trafficType")
+                private String trafficType;
+            }
+        }
+
+        @Data
+        public static class CustomerDTO implements Serializable {
+            @Serial
+            private static final long serialVersionUID = -5922379988229426793L;
+
+            @JsonProperty("age")
+            private Integer age;
+
+            @JsonProperty("birthday")
+            private String birthday;
+
+            @JsonProperty("carInsuredRelation")
+            private String carInsuredRelation;
+
+            @JsonProperty("claimRightsIdentifyNumber")
+            private String claimRightsIdentifyNumber;
+
+            @JsonProperty("claimRightsName")
+            private String claimRightsName;
+
+            @JsonProperty("clientJobCode")
+            private String clientJobCode;
+
+            @JsonProperty("clientJobName")
+            private String clientJobName;
+
+            @JsonProperty("contactAddr_app")
+            private String contactAddr_app;
+
+            @JsonProperty("countryCode")
+            private String countryCode;
+
+            @JsonProperty("countryName")
+            private String countryName;
+
+            @JsonProperty("driveYear")
+            private String driveYear;
+
+            @JsonProperty("emailInvoice")
+            private String emailInvoice;
+
+            @JsonProperty("id")
+            private String id;
+
+            @JsonProperty("identifyNumber")
+            private String identifyNumber;
+
+            @JsonProperty("identifyType")
+            private String identifyType;
+
+            @JsonProperty("identifyValidDate")
+            private String identifyValidDate;
+
+            @JsonProperty("identifyValidEndDate")
+            private String identifyValidEndDate;
+
+            @JsonProperty("invocieType")
+            private String invocieType;
+
+            @JsonProperty("isClaimRights")
+            private String isClaimRights;
+
+            @JsonProperty("jobRisk")
+            private String jobRisk;
+
+            @JsonProperty("moneyLaunderingInd")
+            private String moneyLaunderingInd;
+
+            @JsonProperty("name")
+            private String name;
+
+            @JsonProperty("ocrNation")
+            private String ocrNation;
+
+            @JsonProperty("operperson")
+            private String operperson;
+
+            @JsonProperty("payIdentifyNumber")
+            private String payIdentifyNumber;
+
+            @JsonProperty("payIdentifyType")
+            private String payIdentifyType;
+
+            @JsonProperty("payMobile")
+            private String payMobile;
+
+            @JsonProperty("realName")
+            private String realName;
+
+            @JsonProperty("role")
+            private String role;
+
+            @JsonProperty("scorecustomerinfo")
+            private String scorecustomerinfo;
+
+            @JsonProperty("sex")
+            private String sex;
+
+            @JsonProperty("taxperNumber")
+            private String taxperNumber;
+
+            @JsonProperty("type")
+            private String type;
+
+            @JsonProperty("contact")
+            private List<ContactDTO> contact;
+
+            @Data
+            public static class ContactDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = -1941719314107200081L;
+
+                @JsonProperty("addr")
+                private String addr;
+
+                @JsonProperty("city")
+                private String city;
+
+                @JsonProperty("district")
+                private String district;
+
+                @JsonProperty("linkName")
+                private String linkName;
+
+                @JsonProperty("mobile")
+                private String mobile;
+
+                @JsonProperty("name")
+                private String name;
+
+                @JsonProperty("postCode")
+                private String postCode;
+
+                @JsonProperty("province")
+                private String province;
+
+                @JsonProperty("related")
+                private String related;
+
+                @JsonProperty("tel")
+                private String tel;
+            }
+        }
+
+        @Data
+        public static class InsuredObjectDTO implements Serializable {
+            @Serial
+            private static final long serialVersionUID = -3434845938641516448L;
+
+            @JsonProperty("charging")
+            private List<Object> charging;
+
+            @JsonProperty("platformCar")
+            private platformCarDTO platformCar;
+
+            @JsonProperty("platformReturnCarModeInfo")
+            private List<PlatformReturnCarModeInfoDTO> platformReturnCarModeInfo;
+
+            @JsonProperty("policyCar")
+            private PolicyCarDTO policyCar;
+
+            @JsonProperty("simpleStadarCar")
+            private SimpleStadarCarDTO simpleStadarCar;
+
+            @JsonProperty("specializedDevice")
+            private List<Object> specializedDevice;
+
+            @Data
+            public static class platformCarDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 3364453351248135067L;
+
+                @JsonProperty("carName")
+                private String carName;
+
+                @JsonProperty("deptCode")
+                private String deptCode;
+
+                @JsonProperty("deptName")
+                private String deptName;
+
+                @JsonProperty("platSeriesGroup")
+                private String platSeriesGroup;
+            }
+
+            @Data
+            public static class PlatformReturnCarModeInfoDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 19286470039041805L;
+
+                @JsonProperty("brand")
+                private String brand;
+
+                @JsonProperty("brandCode")
+                private String brandCode;
+
+                @JsonProperty("carName")
+                private String carName;
+
+                @JsonProperty("categoryCode")
+                private String categoryCode;
+
+                @JsonProperty("categoryName")
+                private String categoryName;
+
+                @JsonProperty("configType")
+                private String configType;
+
+                @JsonProperty("dataSource")
+                private String dataSource;
+
+                @JsonProperty("demandNo")
+                private String demandNo;
+
+                @JsonProperty("deptCode")
+                private String deptCode;
+
+                @JsonProperty("deptName")
+                private String deptName;
+
+                @JsonProperty("modelCode")
+                private String modelCode;
+
+                @JsonProperty("modelCodeChecked")
+                private Boolean modelCodeChecked;
+
+                @JsonProperty("modelEnergyType")
+                private String modelEnergyType;
+
+                @JsonProperty("modelFlag")
+                private String modelFlag;
+
+                @JsonProperty("modelidCode")
+                private String modelidCode;
+
+                @JsonProperty("noticeType")
+                private String noticeType;
+
+                @JsonProperty("pureRiskPremium")
+                private String pureRiskPremium;
+
+                @JsonProperty("series")
+                private String series;
+
+                @JsonProperty("seriesCode")
+                private String seriesCode;
+
+                @JsonProperty("tradeCode")
+                private String tradeCode;
+
+                @JsonProperty("tradeName")
+                private String tradeName;
+
+            }
+
+            @Data
+            public static class PolicyCarDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = -3580287238236305562L;
+
+                @JsonProperty("actualValue")
+                private String actualValue;
+
+                @JsonProperty("aheadRule")
+                private String aheadRule;
+
+                @JsonProperty("carCheckReason")
+                private String carCheckReason;
+
+                @JsonProperty("carCheckStatus")
+                private String carCheckStatus;
+
+                @JsonProperty("carChecker")
+                private String carChecker;
+
+                @JsonProperty("carQueryCheckCode")
+                private String carQueryCheckCode;
+
+                @JsonProperty("carUseType")
+                private String carUseType;
+
+                @JsonProperty("chgOwnerFlag")
+                private String chgOwnerFlag;
+
+                @JsonProperty("contrastFlag")
+                private Boolean contrastFlag;
+
+                @JsonProperty("engine")
+                private String engine;
+
+                @JsonProperty("fleetNo")
+                private String fleetNo;
+
+                @JsonProperty("hKFlag")
+                private Boolean hKFlag;
+
+                @JsonProperty("hKPlateNo")
+                private String hKPlateNo;
+
+                @JsonProperty("isrelief")
+                private String isrelief;
+
+                @JsonProperty("issueDate")
+                private String issueDate;
+
+                @JsonProperty("loanVehicleFlag")
+                private Boolean loanVehicleFlag;
+
+                @JsonProperty("lossInsuranceModel")
+                private String lossInsuranceModel;
+
+                @JsonProperty("model")
+                private String model;
+
+                @JsonProperty("monthDepRate")
+                private Double monthDepRate;
+
+                @JsonProperty("motorMainType")
+                private String motorMainType;
+
+                @JsonProperty("motorSubType")
+                private String motorSubType;
+
+                @JsonProperty("motorType")
+                private String motorType;
+
+                @JsonProperty("motorTypeCode")
+                private String motorTypeCode;
+
+                @JsonProperty("motorUsageTypeCode")
+                private String motorUsageTypeCode;
+
+                @JsonProperty("newCarSign")
+                private Boolean newCarSign;
+
+                @JsonProperty("noDamageYears")
+                private String noDamageYears;
+
+                @JsonProperty("noLicenseFlag")
+                private Boolean noLicenseFlag;
+
+                @JsonProperty("nolocalCarFlag")
+                private String nolocalCarFlag;
+
+                @JsonProperty("personLiable")
+                private String personLiable;
+
+                @JsonProperty("plateColorCode")
+                private String plateColorCode;
+
+                @JsonProperty("plateNo")
+                private String plateNo;
+
+                @JsonProperty("plateType")
+                private String plateType;
+
+                @JsonProperty("pmQueryNo")
+                private String pmQueryNo;
+
+                @JsonProperty("registerDate")
+                private String registerDate;
+
+                @JsonProperty("repairTime")
+                private String repairTime;
+
+                @JsonProperty("runArea")
+                private String runArea;
+
+                @JsonProperty("runMiles")
+                private String runMiles;
+
+                @JsonProperty("secondhandCarFlag")
+                private String secondhandCarFlag;
+
+                @JsonProperty("shortPeriodReason")
+                private String shortPeriodReason;
+
+                @JsonProperty("splitChgOwner")
+                private String splitChgOwner;
+
+                @JsonProperty("taxInclued")
+                private Boolean taxInclued;
+
+                @JsonProperty("useYears")
+                private Integer useYears;
+
+                @JsonProperty("vIN")
+                private String vIN;
+
+                @JsonProperty("vehicleType")
+                private String vehicleType;
+
+            }
+
+            @Data
+            public static class SimpleStadarCarDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 2418995715974627860L;
+
+                @JsonProperty("approvedLoad")
+                private String approvedLoad;
+
+                @JsonProperty("approvedPassengersCapacity")
+                private Integer approvedPassengersCapacity;
+
+                @JsonProperty("brand")
+                private String brand;
+
+                @JsonProperty("carType")
+                private String carType;
+
+                @JsonProperty("displacement")
+                private Double displacement;
+
+                @JsonProperty("energyTypes")
+                private String energyTypes;
+
+                @JsonProperty("fuelType")
+                private String fuelType;
+
+                @JsonProperty("grossMass")
+                private String grossMass;
+
+                @JsonProperty("localModelCode")
+                private String localModelCode;
+
+                @JsonProperty("modelCode")
+                private String modelCode;
+
+                @JsonProperty("newPlatModelCode")
+                private String newPlatModelCode;
+
+                @JsonProperty("newVehicleClassCode")
+                private String newVehicleClassCode;
+
+                @JsonProperty("originalPurchasePrice")
+                private Integer originalPurchasePrice;
+
+                @JsonProperty("power")
+                private Integer power;
+
+                @JsonProperty("priceEnd")
+                private String priceEnd;
+
+                @JsonProperty("priceStart")
+                private String priceStart;
+
+                @JsonProperty("printBrandName")
+                private String printBrandName;
+
+                @JsonProperty("purchasePrice")
+                private Integer purchasePrice;
+
+                @JsonProperty("tractionMass")
+                private String tractionMass;
+
+                @JsonProperty("unladenMass")
+                private Double unladenMass;
+
+            }
+        }
+
+        @Data
+        public static class SaleInfoDTO implements Serializable {
+            @Serial
+            private static final long serialVersionUID = 7721021781737082425L;
+
+            @JsonProperty("accountUser")
+            private String accountUser;
+
+            @JsonProperty("accountUserName")
+            private String accountUserName;
+
+            @JsonProperty("agentCode")
+            private String agentCode;
+
+            @JsonProperty("agreementNo")
+            private String agreementNo;
+
+            @JsonProperty("channelCode")
+            private String channelCode;
+
+            @JsonProperty("channelName")
+            private String channelName;
+
+            @JsonProperty("channelSubCode")
+            private String channelSubCode;
+
+            @JsonProperty("channelSubName")
+            private String channelSubName;
+
+            @JsonProperty("city")
+            private String city;
+
+            @JsonProperty("comCode")
+            private String comCode;
+
+            @JsonProperty("comName")
+            private String comName;
+
+            @JsonProperty("corpsFlag")
+            private String corpsFlag;
+
+            @JsonProperty("district")
+            private String district;
+
+            @JsonProperty("easyMarketFlag")
+            private String easyMarketFlag;
+
+            @JsonProperty("handlerPersonCode")
+            private String handlerPersonCode;
+
+            @JsonProperty("learnAdvance")
+            private String learnAdvance;
+
+            @JsonProperty("learnScore")
+            private String learnScore;
+
+            @JsonProperty("learnScorePA")
+            private String learnScorePA;
+
+            @JsonProperty("netPointCode")
+            private String netPointCode;
+
+            @JsonProperty("netPointPropertyCode")
+            private String netPointPropertyCode;
+
+            @JsonProperty("netPointPropertyCode_New")
+            private String netPointPropertyCode_New;
+
+            @JsonProperty("netPointPropertyName")
+            private String netPointPropertyName;
+
+            @JsonProperty("netPointPropertyName_New")
+            private String netPointPropertyName_New;
+
+            @JsonProperty("producerCode")
+            private String producerCode;
+
+            @JsonProperty("producerDetailCode")
+            private String producerDetailCode;
+
+            @JsonProperty("producerDetailName")
+            private String producerDetailName;
+
+            @JsonProperty("producerDetailThreeCode")
+            private String producerDetailThreeCode;
+
+            @JsonProperty("producerDetailThreeName")
+            private String producerDetailThreeName;
+
+            @JsonProperty("producerSubCode")
+            private String producerSubCode;
+
+            @JsonProperty("producerSubName")
+            private String producerSubName;
+
+            @JsonProperty("province")
+            private String province;
+
+            @JsonProperty("saleSys")
+            private String saleSys;
+
+            @JsonProperty("saleUserCode")
+            private String saleUserCode;
+
+            @JsonProperty("saleUserName")
+            private String saleUserName;
+
+            @JsonProperty("salesClerk")
+            private String salesClerk;
+
+            @JsonProperty("teamCode")
+            private String teamCode;
+
+            @JsonProperty("teamManager")
+            private String teamManager;
+
+            @JsonProperty("teamName")
+            private String teamName;
+
+            @JsonProperty("salesman")
+            private SalesmanDTO salesman;
+
+            @Data
+            public static class SalesmanDTO implements Serializable {
+                @Serial
+                private static final long serialVersionUID = 9201048869767867394L;
+
+                @JsonProperty("comcode")
+                private String comCode;
+
+                @JsonProperty("guidanceRate")
+                private String guidanceRate;
+
+                @JsonProperty("handleRate")
+                private String handleRate;
+
+                @JsonProperty("handlerCode")
+                private String handlerCode;
+
+                @JsonProperty("handlerName")
+                private String handlerName;
+            }
+        }
+
+        public static class SimpleInsuranceSchemeDTO implements Serializable {
+            @Serial
+            private static final long serialVersionUID = 6589305741668216679L;
+
+            @JsonProperty("schemeFlag")
+            private String schemeFlag;
+
+            @JsonProperty("schemeMessage")
+            private String schemeMessage;
+        }
+    }
+}

+ 10 - 0
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/entity/ZmCrawlerConfigureParameters.java

@@ -69,4 +69,14 @@ public class ZmCrawlerConfigureParameters implements ConfigureParameters {
      * 经办人名称
      */
     private String handlerName;
+
+    /**
+     * 商业险险种编码
+     */
+    private String riskCode;
+
+    /**
+     * 产品组合代码
+     */
+    private String planCode;
 }

+ 16 - 2
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quote/zhongmei/crawler/service/Impl/ZhongMeiCrawlerRequestImpl.java

@@ -12,9 +12,14 @@ import com.jzg.quotation.commons.entity.vo.base.OrderBase;
 import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
 import com.jzg.quote.zhongmei.api.entity.BaseRequestHead;
+import com.jzg.quote.zhongmei.crawler.build.ZmCrawlerQuoteResultVoBuild;
 import com.jzg.quote.zhongmei.crawler.component.ZmCrawlerRequestComponent;
+import com.jzg.quote.zhongmei.crawler.entity.Request.ZmCrawlerActualValueRequest;
 import com.jzg.quote.zhongmei.crawler.entity.Request.ZmCrawlerModelQueryRequest;
+import com.jzg.quote.zhongmei.crawler.entity.Request.ZmCrawlerQuotedPriceRequest;
+import com.jzg.quote.zhongmei.crawler.entity.Response.ZmCrawlerActualValueResponse;
 import com.jzg.quote.zhongmei.crawler.entity.Response.ZmCrawlerModelQueryResponse;
+import com.jzg.quote.zhongmei.crawler.entity.Response.ZmCrawlerQuotedPriceResponse;
 import com.jzg.quote.zhongmei.crawler.entity.ZmCrawlerConfigureParameters;
 import com.jzg.quote.zhongmei.crawler.entity.dto.SaleInfoDTO;
 import com.jzg.quote.zhongmei.crawler.service.ZhongMeiCrawlerRequest;
@@ -54,9 +59,11 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
         AttributionInformationVo attributionInformationVo = quoteVo
                 .getOrder()
                 .getAttributionInformationVo();
+        String userCode = zmCrawlerRequestComponent.getUserCode(attributionInformationVo.getUsername());
+        String authorization = zmCrawlerRequestComponent.getAuthorization(attributionInformationVo.getUsername());
         //获取配置信息
         ZmCrawlerConfigureParameters zmCrawlerConfigureParameters = ConfigureParametersConversion.conversionEntity(ZmCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
-        BaseRequestHead head = new BaseRequestHead(zmCrawlerConfigureParameters.getToken(), zmCrawlerConfigureParameters.getSource());
+        BaseRequestHead head = new BaseRequestHead(authorization, zmCrawlerConfigureParameters.getSource());
         //获取归属信息
         SaleInfoDTO saleInfoDTO = zmCrawlerRequestComponent.getSaleInfoDTO(zmCrawlerConfigureParameters, head);
         //车型查询
@@ -66,8 +73,15 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
         //过滤车型
         ZmCrawlerModelQueryResponse.FullCarDataDTO fullCarDataDTO = CarModelsFilterUtils.to(fullCarDataDTOS, quoteVo.getCarInfoVo());
         //获取实际价值
+        ZmCrawlerActualValueRequest actualValueRequest = new ZmCrawlerActualValueRequest(quoteVo.getCarInfoVo(), zmCrawlerConfigureParameters);
+        actualValueRequest.setHead(head);
+        ZmCrawlerActualValueResponse actualValueResponse = zmCrawlerRequestComponent.getActualValue(actualValueRequest);
 
-        return null;
+        //报价
+        ZmCrawlerQuotedPriceRequest quotedPriceRequest = new ZmCrawlerQuotedPriceRequest(zmCrawlerConfigureParameters, quoteVo, saleInfoDTO, fullCarDataDTO, actualValueResponse, userCode, head);
+        ZmCrawlerQuotedPriceResponse quotedPriceResponse = zmCrawlerRequestComponent.quotedPrice(quotedPriceRequest);
+
+        return ZmCrawlerQuoteResultVoBuild.build(quoteVo, quotedPriceResponse);
     }
 
     /**