xuqiang 8 月之前
父節點
當前提交
acac9607bd

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

@@ -179,7 +179,7 @@ public class ZmCrawlerQuotedPriceRequest extends BaseRequest {
                 coverageDTO.setProjectCode("0");
                 coverageDTO.setAmount(kindInfoVo.getAmount());
                 coverageDTO.setUnitAmount(Integer.parseInt(kindInfoVo.getUnitAmount()));
-                coverageDTO.setQuantity(Integer.parseInt(kindInfoVo.getQuantity()));
+                coverageDTO.setQuantity(Objects.isNull(kindInfoVo.getQuantity()) ? 0 : Integer.parseInt(kindInfoVo.getQuantity()));
                 coverageDTO.setValidDate(biRiskInfoVo.getStartDate());
                 coverageDTO.setExpiryDate(biRiskInfoVo.getEndDate());
                 coverageDTOList.add(coverageDTO);

+ 2 - 4
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/Request/ZmCrawlerRideAccidentRequest.java

@@ -8,13 +8,11 @@ import com.jzg.quotation.zhongmei.api.constant.enums.ContractEnum;
 import com.jzg.quotation.zhongmei.api.constant.enums.MotorSubTypeEnum;
 import com.jzg.quotation.zhongmei.api.entity.BaseRequestHead;
 import com.jzg.quotation.zhongmei.api.entity.request.BaseRequest;
-import com.jzg.quotation.zhongmei.api.entity.response.ModelsQueryResponse;
 import com.jzg.quotation.zhongmei.crawler.entity.Response.ZmCrawlerModelQueryResponse;
 import com.jzg.quotation.zhongmei.crawler.entity.dto.SaleInfoDTO;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -189,8 +187,8 @@ public class ZmCrawlerRideAccidentRequest extends BaseRequest {
             coverageDTO.setNotDeductibleFlag(true);
             coverageDTO.setProjectCode("0");
             coverageDTO.setAmount(kindInfoVo.getAmount());
-            coverageDTO.setUnitAmount(Integer.parseInt(kindInfoVo.getUnitAmount()));
-            coverageDTO.setQuantity(Integer.parseInt(kindInfoVo.getQuantity()));
+            coverageDTO.setUnitAmount(Objects.isNull(kindInfoVo.getUnitAmount()) ? 0 : Integer.parseInt(kindInfoVo.getUnitAmount()));
+            coverageDTO.setQuantity(Objects.isNull(kindInfoVo.getQuantity()) ? 0 : Integer.parseInt(kindInfoVo.getQuantity()));
             coverageDTO.setValidDate(biRiskInfoVo.getStartDate());
             coverageDTO.setExpiryDate(biRiskInfoVo.getEndDate());
             coverageDTOList.add(coverageDTO);

+ 4 - 3
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/entity/dto/SaleInfoDTO.java

@@ -10,6 +10,7 @@ import java.io.Serial;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @description: 归属信息
@@ -285,7 +286,7 @@ public class SaleInfoDTO implements Serializable {
         ZmCrawlerNetpointQueryResponse.BaseInformationBeanDTO.AgentBeanDTO agentBeanDTO = baseInformationBeanDTO.getAgentBean().get(0);
         ZmCrawlerNetpointQueryResponse.BaseInformationBeanDTO.HandlerBeanDTO handlerBeanDTO = baseInformationBeanDTO.getHandlerBean().get(0);
         ZmCrawlerNetpointQueryResponse.BaseInformationBeanDTO.NetPointBeanDTO netPointBeanDTO = baseInformationBeanDTO.getNetPointBean().get(0);
-        ZmCrawlerNetpointQueryResponse.BaseInformationBeanDTO.SaleUserBeanDTO saleUserBeanDTO = baseInformationBeanDTO.getSaleUserBean().get(0);
+        ZmCrawlerNetpointQueryResponse.BaseInformationBeanDTO.SaleUserBeanDTO saleUserBeanDTO = Objects.isNull(baseInformationBeanDTO.getSaleUserBean()) ? null : baseInformationBeanDTO.getSaleUserBean().get(0);
 
         this.agentCode = agentBeanDTO.getAgentCode();
         this.agreementNo = agentBeanDTO.getAgreementNo();
@@ -309,8 +310,8 @@ public class SaleInfoDTO implements Serializable {
         this.netPointPropertyCode_New = netPointBeanDTO.getNetPointPropertyCode_New();
         this.netPointPropertyName_New = netPointBeanDTO.getNetPointPropertyName_New();
         this.saleSys = "";
-        this.saleUserCode = saleUserBeanDTO.getSaleUserCode();
-        this.saleUserName = saleUserBeanDTO.getSaleUserName();
+        this.saleUserCode = Objects.isNull(saleUserBeanDTO) ? "" : saleUserBeanDTO.getSaleUserCode();
+        this.saleUserName = Objects.isNull(saleUserBeanDTO) ? "" : saleUserBeanDTO.getSaleUserName();
         this.teamCode = handlerBeanDTO.getTeamCode();
         this.teamName = handlerBeanDTO.getSaleTeam();
         this.teamManager = "";

+ 56 - 54
tenant/insurance/quotation-zhongmei/src/main/java/com/jzg/quotation/zhongmei/crawler/service/Impl/ZhongMeiCrawlerRequestImpl.java

@@ -1,19 +1,16 @@
 package com.jzg.quotation.zhongmei.crawler.service.Impl;
 
-import cn.hutool.crypto.digest.MD5;
-import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.jzg.commons.entity.quote.vo.AccidentalDrivingVo;
 import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
 import com.jzg.commons.entity.quote.vo.CarInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.aggregated.*;
-import com.jzg.commons.exception.SystemException;
+import com.jzg.commons.entity.quote.vo.base.LoginBase;
+import com.jzg.commons.entity.quote.vo.base.OrderBase;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.quotation.commons.annotation.QuoteCrawlerService;
 import com.jzg.quotation.commons.constant.InsuranceCode;
-import com.jzg.commons.entity.quote.vo.base.LoginBase;
-import com.jzg.commons.entity.quote.vo.base.OrderBase;
 import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
 import com.jzg.quotation.zhongmei.api.entity.BaseRequestHead;
@@ -33,10 +30,10 @@ import lombok.RequiredArgsConstructor;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import java.util.stream.Collectors;
 
 /**
  * @description: 中煤财险 爬虫报价
@@ -71,54 +68,59 @@ public class ZhongMeiCrawlerRequestImpl implements ZhongMeiCrawlerRequest {
      */
     @Override
     public QuoteResultsVo quote(QuoteVo quoteVo) throws JsonProcessingException {
-        // 1.0获取token的请求头
-        AttributionInformationVo attributionInformationVo = quoteVo
-                .getOrder()
-                .getAttributionInformationVo();
-        String authorization = zmCrawlerRequestComponent.getAuthorization(attributionInformationVo);
-        String userCode = zmCrawlerRequestComponent.getUserCode(attributionInformationVo.getUsername());
-        // 1.1 配置信息
-        ZmCrawlerConfigureParameters zmCrawlerConfigureParameters = ConfigureParametersConversion.conversionEntity(ZmCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
-        BaseRequestHead head = new BaseRequestHead(authorization, "2");
-        // 1.2 获取归属信息
-        SaleInfoDTO saleInfoDTO = zmCrawlerRequestComponent.getSaleInfoDTO(zmCrawlerConfigureParameters, head);
-        // 2.0 车型查询
-        CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
-        ZmCrawlerModelQueryRequest modelQueryRequest = new ZmCrawlerModelQueryRequest(saleInfoDTO,head,carInfoVo);
-        List<ZmCrawlerModelQueryResponse.FullCarDataDTO> fullCarDataDTOS = zmCrawlerRequestComponent.modelQuery(modelQueryRequest);
-        // 2.1 获取相同的车型
-        ZmCrawlerModelQueryResponse.FullCarDataDTO fullCarDataDTO = CarModelsFilterUtils.to(fullCarDataDTOS, quoteVo.getCarInfoVo());
-        // 2.2 计算折旧价格
-        ZmCrawlerActualValueRequest actualValueRequest = new ZmCrawlerActualValueRequest(quoteVo.getCarInfoVo(),head);
-        ZmCrawlerActualValueResponse actualValueResponse = zmCrawlerRequestComponent.getActualValue(actualValueRequest);
-        List<ZmCrawlerRideAccidentResponse.BaseInfoDTO> accident = new ArrayList<>();
-        if (quoteVo.getAccidentalDrivings() != null) {
-            // 获取非车列表
-            ZmCrawlerRideAccidentRequest rideAccidentRequest = new ZmCrawlerRideAccidentRequest(quoteVo,saleInfoDTO,fullCarDataDTO,head);
-            ZmCrawlerRideAccidentResponse rideAccidentResponse = zmCrawlerRequestComponent.rideAccident(rideAccidentRequest);
-            matchingAccident(quoteVo, rideAccidentResponse,accident);
-        }
-        // 3.0 保费计算
-        ZmCrawlerQuotedPriceRequest quotedPriceRequest = new ZmCrawlerQuotedPriceRequest(zmCrawlerConfigureParameters, quoteVo, saleInfoDTO, fullCarDataDTO, actualValueResponse, userCode, head,accident);
-        ZmCrawlerQuotedPriceResponse quotedPriceResponse = zmCrawlerRequestComponent.quotedPrice(quotedPriceRequest);
-        // 重复投保处理
-        if (quotedPriceResponse.getHead().getReturnCode().equals("-1") && quotedPriceResponse.getHead().getReturnMessage().contains("重复投保")) {
-            String startTime = extractDuplicateEndTime(quotedPriceResponse.getHead().getReturnMessage());
-            String endTime = calculateEndTime(startTime);
-            List<ZmCrawlerQuotedPriceRequest.BusinessDataDTO.ContractDTO> contract =quotedPriceRequest.getBusinessData().getContract();
-            contract.forEach(contractDTO -> {
-                contractDTO.getContractMain().setValidDate(startTime);
-                contractDTO.getContractMain().setExpiryDate(endTime);
-            });
-            quotedPriceResponse = zmCrawlerRequestComponent.quotedPrice(quotedPriceRequest);
-        }
-        // 3.1 缓存数据
-        if(quotedPriceResponse.getHead().getReturnCode().equals("0")){
-            zmCrawlerRequestComponent.cacheZmCrawlerSaveResponse(quotedPriceResponse, quotedPriceResponse.getBussinessMain().getContractMainNo());
-            // 4.0 保存数据
-            zmCrawlerOrderService.save(quoteVo,quotedPriceResponse);
+        try {
+            // 1.0获取token的请求头
+            AttributionInformationVo attributionInformationVo = quoteVo
+                    .getOrder()
+                    .getAttributionInformationVo();
+            String authorization = zmCrawlerRequestComponent.getAuthorization(attributionInformationVo);
+            String userCode = zmCrawlerRequestComponent.getUserCode(attributionInformationVo.getUsername());
+            // 1.1 配置信息
+            ZmCrawlerConfigureParameters zmCrawlerConfigureParameters = ConfigureParametersConversion.conversionEntity(ZmCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
+            BaseRequestHead head = new BaseRequestHead(authorization, "2");
+            // 1.2 获取归属信息
+            SaleInfoDTO saleInfoDTO = zmCrawlerRequestComponent.getSaleInfoDTO(zmCrawlerConfigureParameters, head);
+            // 2.0 车型查询
+            CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
+            ZmCrawlerModelQueryRequest modelQueryRequest = new ZmCrawlerModelQueryRequest(saleInfoDTO,head,carInfoVo);
+            List<ZmCrawlerModelQueryResponse.FullCarDataDTO> fullCarDataDTOS = zmCrawlerRequestComponent.modelQuery(modelQueryRequest);
+            // 2.1 获取相同的车型
+            ZmCrawlerModelQueryResponse.FullCarDataDTO fullCarDataDTO = CarModelsFilterUtils.to(fullCarDataDTOS, quoteVo.getCarInfoVo());
+            // 2.2 计算折旧价格
+            ZmCrawlerActualValueRequest actualValueRequest = new ZmCrawlerActualValueRequest(quoteVo.getCarInfoVo(),head);
+            ZmCrawlerActualValueResponse actualValueResponse = zmCrawlerRequestComponent.getActualValue(actualValueRequest);
+            List<ZmCrawlerRideAccidentResponse.BaseInfoDTO> accident = new ArrayList<>();
+            if (quoteVo.getAccidentalDrivings() != null) {
+                // 获取非车列表
+                ZmCrawlerRideAccidentRequest rideAccidentRequest = new ZmCrawlerRideAccidentRequest(quoteVo,saleInfoDTO,fullCarDataDTO,head);
+                ZmCrawlerRideAccidentResponse rideAccidentResponse = zmCrawlerRequestComponent.rideAccident(rideAccidentRequest);
+                matchingAccident(quoteVo, rideAccidentResponse,accident);
+            }
+            // 3.0 保费计算
+            ZmCrawlerQuotedPriceRequest quotedPriceRequest = new ZmCrawlerQuotedPriceRequest(zmCrawlerConfigureParameters, quoteVo, saleInfoDTO, fullCarDataDTO, actualValueResponse, userCode, head,accident);
+            ZmCrawlerQuotedPriceResponse quotedPriceResponse = zmCrawlerRequestComponent.quotedPrice(quotedPriceRequest);
+            // 重复投保处理
+            if (quotedPriceResponse.getHead().getReturnCode().equals("-1") && quotedPriceResponse.getHead().getReturnMessage().contains("重复投保")) {
+                String startTime = extractDuplicateEndTime(quotedPriceResponse.getHead().getReturnMessage());
+                String endTime = calculateEndTime(startTime);
+                List<ZmCrawlerQuotedPriceRequest.BusinessDataDTO.ContractDTO> contract =quotedPriceRequest.getBusinessData().getContract();
+                contract.forEach(contractDTO -> {
+                    contractDTO.getContractMain().setValidDate(startTime);
+                    contractDTO.getContractMain().setExpiryDate(endTime);
+                });
+                quotedPriceResponse = zmCrawlerRequestComponent.quotedPrice(quotedPriceRequest);
+            }
+            // 3.1 缓存数据
+            if(quotedPriceResponse.getHead().getReturnCode().equals("0")){
+                zmCrawlerRequestComponent.cacheZmCrawlerSaveResponse(quotedPriceResponse, quotedPriceResponse.getBussinessMain().getContractMainNo());
+                // 4.0 保存数据
+                zmCrawlerOrderService.save(quoteVo,quotedPriceResponse);
+            }
+            return ZmCrawlerQuoteResultVoBuild.build(quoteVo, quotedPriceResponse);
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new RuntimeException("报价异常,请联系管理员");
         }
-        return ZmCrawlerQuoteResultVoBuild.build(quoteVo, quotedPriceResponse);
     }
 
     // 非车险匹配