Browse Source

1. python 保险公司报价加评分
2. 紫金财险代码修改

wks 3 years ago
parent
commit
383eebcace

+ 9 - 3
src/main/java/com/ydtech/modules/ins/model/vo/QuoteRespVo.java

@@ -26,9 +26,6 @@ public class QuoteRespVo {
     @ApiModelProperty("车船税")
     private double taxAmount;
 
-    @ApiModelProperty("商业险折扣系数")
-    private double totalAdjustRate;
-
     @ApiModelProperty("评分")
     private String iLogPreUdwMess;
 
@@ -75,6 +72,15 @@ public class QuoteRespVo {
     @ApiModelProperty("子订单ID")
     private String companyId;
 
+    @ApiModelProperty("总折扣率")
+    private double totalAdjustRate;
+
+    @ApiModelProperty("交强险折扣率")
+    private String jqAdjustRate;
+
+    @ApiModelProperty("商业险折扣率")
+    private String syAdjustRate;
+
     @ApiModelProperty("欠税明细")
     private List<TaxArrears> taxArrears;
 

+ 0 - 1
src/main/java/com/ydtech/modules/order/components/InsOrdersComponents.java

@@ -7,7 +7,6 @@ import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.protocol.service.PtlAgreementUnderwritingRulesService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Component;

+ 1 - 2
src/main/java/com/ydtech/modules/order/components/VerificationCodeIdentification.java

@@ -16,11 +16,10 @@ import org.springframework.stereotype.Component;
 @Component
 public class VerificationCodeIdentification {
 
+    private final InsCrawlerOrderComponents insCrawlerOrderComponents;
     @Value("${image.identificationUrl}")
     private String identificationUrl;
 
-    private final InsCrawlerOrderComponents insCrawlerOrderComponents;
-
     public VerificationCodeIdentification(InsCrawlerOrderComponents insCrawlerOrderComponents) {
         this.insCrawlerOrderComponents = insCrawlerOrderComponents;
     }

+ 13 - 13
src/main/java/com/ydtech/modules/order/components/ZhongmeiRequestApiComponents.java

@@ -85,11 +85,11 @@ public class ZhongmeiRequestApiComponents {
      * @param verify  结果是否需要验证
      * @return 响应内容
      */
-    private <Q extends BaseRequest, S extends BaseResponse> S request(Q request, Class<S> tClass, boolean verify, String domain,String urlInterface) {
-        String url = domain ;
-        if(StringUtils.isNotEmpty(urlInterface)){
+    private <Q extends BaseRequest, S extends BaseResponse> S request(Q request, Class<S> tClass, boolean verify, String domain, String urlInterface) {
+        String url = domain;
+        if (StringUtils.isNotEmpty(urlInterface)) {
             url = url + urlInterface + ".do";
-        }else{
+        } else {
             url = url + request.getHead().getTransCode() + ".do";
         }
         S response = post(request, url, tClass);
@@ -104,8 +104,8 @@ public class ZhongmeiRequestApiComponents {
      * @param <S> Response 响应体
      *            常规
      */
-    private <Q extends BaseRequest, S extends BaseResponse> S routineRequest(Q request, Class<S> tClass, boolean verify,String urlInterface) {
-        return request(request, tClass, verify, properties.getUrl(),urlInterface);
+    private <Q extends BaseRequest, S extends BaseResponse> S routineRequest(Q request, Class<S> tClass, boolean verify, String urlInterface) {
+        return request(request, tClass, verify, properties.getUrl(), urlInterface);
     }
 
     /**
@@ -114,7 +114,7 @@ public class ZhongmeiRequestApiComponents {
      *            影像
      */
     private <Q extends BaseRequest, S extends BaseResponse> void imageRequest(Q request, Class<S> tClass, boolean verify) {
-        request(request, tClass, verify, properties.getUrl(),"");
+        request(request, tClass, verify, properties.getUrl(), "");
     }
 
     /**
@@ -123,7 +123,7 @@ public class ZhongmeiRequestApiComponents {
      *            短信
      */
     private <Q extends BaseRequest, S extends BaseResponse> S smsRequest(Q request, Class<S> tClass, boolean verify) {
-        return request(request, tClass, verify, properties.getSmsUrl(),"");
+        return request(request, tClass, verify, properties.getSmsUrl(), "");
     }
 
 
@@ -131,14 +131,14 @@ public class ZhongmeiRequestApiComponents {
      * 车型查询 传入必要车辆信息,返回车型列表给用户选择
      */
     public List<ModelsQueryResponse.SimpleStadarCarDTO> modelQuery(ModelsQueryRequest request, Class<ModelsQueryResponse> tClass) {
-        return routineRequest(request, tClass, true,"").getSimpleStadarCar();
+        return routineRequest(request, tClass, true, "").getSimpleStadarCar();
     }
 
     /**
      * 报价 传入必要投保方案信息,返回投保单保费及车船税
      */
     public QuotedPriceResponse quotedPrice(QuotedPriceRequest request, Class<QuotedPriceResponse> tClass) {
-        return routineRequest(request, tClass, true,"");
+        return routineRequest(request, tClass, true, "");
     }
 
     /**
@@ -148,7 +148,7 @@ public class ZhongmeiRequestApiComponents {
         request.setCallbackUrl(properties.getCallbackDomain() + properties.getCallbackUrl());
         request.setPageUrl(properties.getPageUrl());
         request.setPassMsgUrl(properties.getCallbackDomain() + properties.getPassMsgUrl());
-        return routineRequest(request, tClass, false,"");
+        return routineRequest(request, tClass, false, "");
     }
 
     /**
@@ -162,7 +162,7 @@ public class ZhongmeiRequestApiComponents {
      * 缴费查询
      */
     public OrderStatusResponse orderStatus(OrderStatusRequest request, Class<OrderStatusResponse> tClass) {
-        return routineRequest(request, tClass, true,"");
+        return routineRequest(request, tClass, true, "");
     }
 
     /**
@@ -176,7 +176,7 @@ public class ZhongmeiRequestApiComponents {
      * 电子保单下载 传入单号相关信息下载电子保单
      */
     public InsurancePolicyPrintResponse insurancePolicyPrint(InsurancePolicyPrintRequest request, Class<InsurancePolicyPrintResponse> tClass) {
-        return routineRequest(request, tClass, true,"");
+        return routineRequest(request, tClass, true, "");
     }
 
     /**

+ 28 - 0
src/main/java/com/ydtech/modules/order/components/zj/ResponseMessageAbstractHandler.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.order.components.zj;
+
+
+import com.ydtech.modules.order.entity.api.zj.request.CalculatePremiumRequest;
+import com.ydtech.modules.order.entity.api.zj.request.ModelQueryRequest;
+import com.ydtech.modules.order.entity.api.zj.response.CalculatePremiumResponse;
+import org.springframework.http.HttpHeaders;
+
+/**
+ * @description: 响应消息抽象 处理程序
+ * @author: wenks
+ * @date: 2023/9/26 9:16
+ **/
+public abstract class ResponseMessageAbstractHandler {
+
+    /**
+     * 消息处理
+     *
+     * @param calculatePremiumRequest  报价请求参数
+     * @param calculatePremiumResponse 报价响应参数
+     * @param httpHeaders              请求头
+     * @param modelQueryRequest        车型请求体
+     * @return 报价响应参数
+     */
+    public abstract CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest);
+
+
+}

+ 32 - 45
src/main/java/com/ydtech/modules/order/components/zj/ZijinDuplicateInsuranceComponents.java

@@ -10,12 +10,11 @@ import com.ydtech.modules.order.entity.api.zj.request.ModelQueryRequest;
 import com.ydtech.modules.order.entity.api.zj.response.CalculatePremiumResponse;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Component;
 
 import java.text.SimpleDateFormat;
-import java.util.Objects;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -26,8 +25,8 @@ import java.util.regex.Pattern;
  * @date: 2023/9/20 9:05
  **/
 @Slf4j
-@Component
-public class ZijinDuplicateInsuranceComponents {
+@Component(ResultEnum.C_4001)
+public class ZijinDuplicateInsuranceComponents extends ResponseMessageAbstractHandler {
 
     public static final String JQ_REGEX = "交强险.+?终保日期 (.+?);";
 
@@ -39,10 +38,9 @@ public class ZijinDuplicateInsuranceComponents {
 
     public static final String SY = "商业险";
 
-    private ZijinRequestApiComponents zijinRequestApiComponents;
+    private final ZijinRequestApiComponents zijinRequestApiComponents;
 
-    @Autowired
-    public void setZijinRequestApiComponents(ZijinRequestApiComponents zijinRequestApiComponents) {
+    public ZijinDuplicateInsuranceComponents(@Lazy ZijinRequestApiComponents zijinRequestApiComponents) {
         this.zijinRequestApiComponents = zijinRequestApiComponents;
     }
 
@@ -89,50 +87,39 @@ public class ZijinDuplicateInsuranceComponents {
         return "";
     }
 
-    /**
-     * 重复投保处理
-     *
-     * @param calculatePremiumRequest  报价请求
-     * @param calculatePremiumResponse 报价响应
-     * @param httpHeaders              请求头
-     * @return CalculatePremiumResponse
-     */
-    public CalculatePremiumResponse duplicate(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
-        InsuranceLog.infoLog(InsuranceEnum.ZKIC.getPinyin(), "\n\t---------> {}\n\t---------> {}", "紫金财险重复投保处理", calculatePremiumResponse.getRtnMsg());
-        if (ResultEnum.R_4001.getCode().equals(calculatePremiumResponse.getRtnCode())) {
-            String rtnMsg = calculatePremiumResponse.getRtnMsg();
-            CalculatePremiumRequest.BaseInfoDTO baseInfo = calculatePremiumRequest.getBaseInfo();
 
-            String jqEndDate = "";
-            String syEndDate = "";
+    @Override
+    public CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
+        InsuranceLog.infoLog(InsuranceEnum.ZKIC.getPinyin(), "\n\t---------> {}\n\t---------> {}", "紫金财险重复投保处理", calculatePremiumResponse.getRtnMsg());
+        String rtnMsg = calculatePremiumResponse.getRtnMsg();
+        CalculatePremiumRequest.BaseInfoDTO baseInfo = calculatePremiumRequest.getBaseInfo();
 
-            // 关联单标识
-            String calculateFlag = calculatePremiumRequest.getBaseInfo().getCalculateFlag();
+        String jqEndDate = "";
+        String syEndDate = "";
 
-            // 单交强
-            if (CalculateFlagEnum.CF_2.getCode().equals(calculateFlag)) {
-                jqEndDate = getEndDate(rtnMsg, DAN_JQ_REGEX);
-            }
-            // 交强险
-            else if (rtnMsg.contains(JQ)) {
-                jqEndDate = getEndDate(rtnMsg, JQ_REGEX);
-            }
+        // 关联单标识
+        String calculateFlag = calculatePremiumRequest.getBaseInfo().getCalculateFlag();
 
-            // 商业险
-            if (rtnMsg.contains(SY)) {
-                syEndDate = getEndDate(rtnMsg, SY_REGEX);
-            }
-
-            if (jqEndDate.isEmpty() && syEndDate.isEmpty()) {
-                throw new SystemException(rtnMsg);
-            }
+        // 单交强
+        if (CalculateFlagEnum.CF_2.getCode().equals(calculateFlag)) {
+            jqEndDate = getEndDate(rtnMsg, DAN_JQ_REGEX);
+        }
+        // 交强险
+        else if (rtnMsg.contains(JQ)) {
+            jqEndDate = getEndDate(rtnMsg, JQ_REGEX);
+        }
 
-            baseInfo.setTrafficTime(jqEndDate);
-            baseInfo.setBusinessTime(syEndDate);
-            return zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest);
+        // 商业险
+        if (rtnMsg.contains(SY)) {
+            syEndDate = getEndDate(rtnMsg, SY_REGEX);
         }
-        return calculatePremiumResponse;
-    }
 
+        if (jqEndDate.isEmpty() && syEndDate.isEmpty()) {
+            throw new SystemException(rtnMsg);
+        }
 
+        baseInfo.setTrafficTime(jqEndDate);
+        baseInfo.setBusinessTime(syEndDate);
+        return zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest);
+    }
 }

+ 25 - 31
src/main/java/com/ydtech/modules/order/components/zj/ZijinReinsuranceComponents.java

@@ -11,7 +11,7 @@ import com.ydtech.modules.order.entity.crawler.request.RecognitionRequest;
 import com.ydtech.modules.order.entity.crawler.response.RecognitionResponse;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Component;
 
@@ -22,23 +22,19 @@ import org.springframework.stereotype.Component;
  * @date: 2023/9/20 9:44
  **/
 @Slf4j
-@Component
-public class ZijinReinsuranceComponents {
-
-    private  ZijinRequestApiComponents zijinRequestApiComponents;
+@Component(value = ResultEnum.C_9980)
+public class ZijinReinsuranceComponents extends ResponseMessageAbstractHandler {
 
+    private final ZijinRequestApiComponents zijinRequestApiComponents;
 
     private final VerificationCodeIdentification verificationCodeIdentification;
 
-    public ZijinReinsuranceComponents(VerificationCodeIdentification verificationCodeIdentification) {
+    public ZijinReinsuranceComponents(VerificationCodeIdentification verificationCodeIdentification, @Lazy ZijinRequestApiComponents zijinRequestApiComponents) {
         this.verificationCodeIdentification = verificationCodeIdentification;
-    }
-
-    @Autowired
-    public void setZijinRequestApiComponents(ZijinRequestApiComponents zijinRequestApiComponents) {
         this.zijinRequestApiComponents = zijinRequestApiComponents;
     }
 
+
     /**
      * 转保处理
      *
@@ -47,30 +43,28 @@ public class ZijinReinsuranceComponents {
      * @param httpHeaders              请求头
      * @return CalculatePremiumResponse
      */
-    public CalculatePremiumResponse reinsurance(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
+    @Override
+    public CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
         InsuranceLog.infoLog(InsuranceEnum.ZKIC.getPinyin(), "\n\t---------> {}\n\t---------> {}", "紫金财险转保处理", calculatePremiumResponse.getRtnMsg());
-        if (ResultEnum.R_9980.getCode().equals(calculatePremiumResponse.getRtnCode())) {
-            CalculatePremiumResponse.BasePartDTO basePart = calculatePremiumResponse.getBasePart();
-            RecognitionRequest recognitionRequest = new RecognitionRequest();
-            CalculatePremiumRequest.BaseInfoDTO baseInfo = calculatePremiumRequest.getBaseInfo();
+        CalculatePremiumResponse.BasePartDTO basePart = calculatePremiumResponse.getBasePart();
+        RecognitionRequest recognitionRequest = new RecognitionRequest();
+        CalculatePremiumRequest.BaseInfoDTO baseInfo = calculatePremiumRequest.getBaseInfo();
 
-            //交强险
-            if ("1".equals(basePart.getRenewalFlagCI())) {
-                recognitionRequest.setJgImage(basePart.getQuestionCI());
-                baseInfo.setDemandNoCI(basePart.getDemandNoCI());
-            }
-            //商业险
-            if ("1".equals(basePart.getRenewalFlag())) {
-                recognitionRequest.setSyImage(basePart.getQuestion());
-                baseInfo.setDemandNo(basePart.getDemandNo());
-            }
+        //交强险
+        if ("1".equals(basePart.getRenewalFlagCI())) {
+            recognitionRequest.setJgImage(basePart.getQuestionCI());
+            baseInfo.setDemandNoCI(basePart.getDemandNoCI());
+        }
+        //商业险
+        if ("1".equals(basePart.getRenewalFlag())) {
+            recognitionRequest.setSyImage(basePart.getQuestion());
+            baseInfo.setDemandNo(basePart.getDemandNo());
+        }
 
-            RecognitionResponse recognition = verificationCodeIdentification.recognition(recognitionRequest);
-            baseInfo.setAnswerCI(recognition.getData().getJqImageCode());
-            baseInfo.setAnswer(recognition.getData().getSyImageCode());
+        RecognitionResponse recognition = verificationCodeIdentification.recognition(recognitionRequest);
+        baseInfo.setAnswerCI(recognition.getData().getJqImageCode());
+        baseInfo.setAnswer(recognition.getData().getSyImageCode());
 
-            return zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest);
-        }
-        return calculatePremiumResponse;
+        return zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest);
     }
 }

+ 11 - 42
src/main/java/com/ydtech/modules/order/components/zj/ZijinRequestApiComponents.java

@@ -15,7 +15,6 @@ import com.ydtech.modules.order.entity.config.ZjConfigureParameters;
 import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Component;
@@ -35,16 +34,15 @@ import java.util.concurrent.TimeUnit;
 public class ZijinRequestApiComponents {
 
 
+    // 递归层级
+    public static final int RECURSIVE_HIERARCHY = 3;
+
     private static final String AUTHORIZATION = "Authorization";
 
     private static final String ZKI_API_AUTHORIZATION = "ZKIApiAuthorization";
 
-    // 递归层级
-    public static final int RECURSIVE_HIERARCHY = 3;
-
     private static final String USER_ID = "28317480921155536850";
 
-
     private final InsCrawlerOrderComponents insCrawlerOrderComponents;
 
     private final ZjApiConfigurationProperties zjApiConfigurationProperties;
@@ -55,40 +53,17 @@ public class ZijinRequestApiComponents {
 
     private final RedissonClient redissonClient;
 
-    private ZijinDuplicateInsuranceComponents zijinDuplicateInsuranceComponents;
-
-    private ZijinReinsuranceComponents zijinReinsuranceComponents;
-
-    private ZijinVehicleTypeErrorComponents zijinVehicleTypeErrorComponents;
-
-    private ZijinSystemExceptionComponents zijinSystemExceptionComponents;
+    private final Map<String, ResponseMessageAbstractHandler> handlerMap;
 
-    @Autowired
-    public void setZijinDuplicateInsuranceComponents(ZijinDuplicateInsuranceComponents zijinDuplicateInsuranceComponents) {
-        this.zijinDuplicateInsuranceComponents = zijinDuplicateInsuranceComponents;
-    }
-
-    @Autowired
-    public void setZijinReinsuranceComponents(ZijinReinsuranceComponents zijinReinsuranceComponents) {
-        this.zijinReinsuranceComponents = zijinReinsuranceComponents;
-    }
-
-    @Autowired
-    public void setZijinVehicleTypeErrorComponents(ZijinVehicleTypeErrorComponents zijinVehicleTypeErrorComponents) {
-        this.zijinVehicleTypeErrorComponents = zijinVehicleTypeErrorComponents;
-    }
-
-    @Autowired
-    public void setZijinSystemExceptionComponents(ZijinSystemExceptionComponents zijinSystemExceptionComponents) {
-        this.zijinSystemExceptionComponents = zijinSystemExceptionComponents;
-    }
-
-    public ZijinRequestApiComponents(InsCrawlerOrderComponents insCrawlerOrderComponents, ZjApiConfigurationProperties zjApiConfigurationProperties, ConfigureParametersComponents configureParametersComponents, StringRedisTemplate redisTemplate, RedissonClient redissonClient) {
+    public ZijinRequestApiComponents(InsCrawlerOrderComponents insCrawlerOrderComponents, ZjApiConfigurationProperties zjApiConfigurationProperties,
+                                     ConfigureParametersComponents configureParametersComponents, StringRedisTemplate redisTemplate,
+                                     RedissonClient redissonClient, Map<String, ResponseMessageAbstractHandler> handlerMap) {
         this.insCrawlerOrderComponents = insCrawlerOrderComponents;
         this.zjApiConfigurationProperties = zjApiConfigurationProperties;
         this.configureParametersComponents = configureParametersComponents;
         this.redisTemplate = redisTemplate;
         this.redissonClient = redissonClient;
+        this.handlerMap = handlerMap;
     }
 
     public <T, B extends BaseResponse> B request(String url, String desc, T requestBody, Class<B> responseType, HttpHeaders httpHeaders) {
@@ -257,15 +232,9 @@ public class ZijinRequestApiComponents {
     public CalculatePremiumResponse calculatePremium(CalculatePremiumRequest calculatePremiumRequest, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
         CalculatePremiumResponse calculatePremiumResponse = request(RequestUrl.CALCULATE_PREMIUM, calculatePremiumRequest, CalculatePremiumResponse.class, httpHeaders);
 
-        // 1. 重复投保
-        calculatePremiumResponse = zijinDuplicateInsuranceComponents.duplicate(calculatePremiumRequest, calculatePremiumResponse, httpHeaders, modelQueryRequest);
-        // 2. 转保标志
-        calculatePremiumResponse = zijinReinsuranceComponents.reinsurance(calculatePremiumRequest, calculatePremiumResponse, httpHeaders, modelQueryRequest);
-        // 3. 车型不一致
-        calculatePremiumResponse = zijinVehicleTypeErrorComponents.modification(calculatePremiumRequest, calculatePremiumResponse, httpHeaders, modelQueryRequest);
-        // 4. 处理 93169 需要重新报价异常
-        calculatePremiumResponse = zijinSystemExceptionComponents.exceptionProcessing(calculatePremiumResponse);
-
+        // 通过状态码获取处理器处理
+        ResponseMessageAbstractHandler responseMessageAbstractHandler = handlerMap.get(calculatePremiumResponse.getRtnCode());
+        calculatePremiumResponse = responseMessageAbstractHandler.messageHandler(calculatePremiumRequest, calculatePremiumResponse, httpHeaders, modelQueryRequest);
         return calculatePremiumResponse;
     }
 

+ 11 - 11
src/main/java/com/ydtech/modules/order/components/zj/ZijinSystemExceptionComponents.java

@@ -3,14 +3,16 @@ package com.ydtech.modules.order.components.zj;
 
 import com.ydtech.constants.InsuranceEnum;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.order.entity.api.zj.constants.enums.ResultEnum;
 import com.ydtech.modules.order.entity.api.zj.request.CalculatePremiumRequest;
 import com.ydtech.modules.order.entity.api.zj.request.ModelQueryRequest;
 import com.ydtech.modules.order.entity.api.zj.response.CalculatePremiumResponse;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import lombok.AllArgsConstructor;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 import lombok.Getter;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Component;
 
@@ -21,25 +23,23 @@ import org.springframework.stereotype.Component;
  * @date: 2023/9/22 14:27
  **/
 
+@EqualsAndHashCode(callSuper = true)
 @Data
-@Component
-public class ZijinSystemExceptionComponents {
+@Component(ResultEnum.C_999)
+public class ZijinSystemExceptionComponents extends ResponseMessageAbstractHandler {
 
     private ZijinRequestApiComponents zijinRequestApiComponents;
 
-    @Autowired
-    public void setZijinRequestApiComponents(ZijinRequestApiComponents zijinRequestApiComponents) {
+    public ZijinSystemExceptionComponents(@Lazy ZijinRequestApiComponents zijinRequestApiComponents) {
         this.zijinRequestApiComponents = zijinRequestApiComponents;
     }
 
-    /**
-     * 处理 93169 需要重新报价异常
-     */
-    public CalculatePremiumResponse exceptionProcessing(CalculatePremiumResponse calculatePremiumResponse) {
+    @Override
+    public CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
         InsuranceLog.infoLog(InsuranceEnum.ZKIC.getPinyin(), "\n\t---------> {}\n\t---------> {}", "紫金财险 999 异常处理", calculatePremiumResponse.getRtnMsg());
         String rtnMsg = calculatePremiumResponse.getRtnMsg();
 
-        if (rtnMsg.contains(ResultEnum.R_93169.getCode())) {
+        if (rtnMsg.contains(ExceptionEnum.R_93169.getCode())) {
             throw new SystemException("稍等一会,再重新报价!");
         }
 
@@ -48,7 +48,7 @@ public class ZijinSystemExceptionComponents {
 
     @AllArgsConstructor
     @Getter
-    public enum ResultEnum {
+    public enum ExceptionEnum {
 
         R_93169("93169", "系统异常:93169:找不到投保询价待校验信息(投保询价信息不存在,或投保询价已经成功)。");
 

+ 16 - 26
src/main/java/com/ydtech/modules/order/components/zj/ZijinVehicleTypeErrorComponents.java

@@ -11,12 +11,10 @@ import com.ydtech.modules.order.entity.api.zj.response.ModelQueryResponse;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Component;
 
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -30,15 +28,14 @@ import java.util.stream.Collectors;
  * @date: 2023/9/20 9:05
  **/
 @Slf4j
-@Component
-public class ZijinVehicleTypeErrorComponents {
+@Component(ResultEnum.C_1557)
+public class ZijinVehicleTypeErrorComponents extends ResponseMessageAbstractHandler {
 
     public static final String CAR_ERROR_REGEX = "车型代码:(.+?) 行业车型编码:(.+?); ";
 
-    private ZijinRequestApiComponents zijinRequestApiComponents;
+    private final ZijinRequestApiComponents zijinRequestApiComponents;
 
-    @Autowired
-    public void setZijinRequestApiComponents(ZijinRequestApiComponents zijinRequestApiComponents) {
+    public ZijinVehicleTypeErrorComponents(@Lazy ZijinRequestApiComponents zijinRequestApiComponents) {
         this.zijinRequestApiComponents = zijinRequestApiComponents;
     }
 
@@ -58,28 +55,26 @@ public class ZijinVehicleTypeErrorComponents {
         throw new SystemException(message);
     }
 
+
     /**
      * 修改正确车型报价
      */
-    public CalculatePremiumResponse modification(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
+    @Override
+    public CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
         InsuranceLog.infoLog(InsuranceEnum.ZKIC.getPinyin(), "\n\t---------> {}\n\t---------> {}", "紫金财险转修改正确车型报价", calculatePremiumResponse.getRtnMsg());
-        if (ResultEnum.R_1557.getCode().equals(calculatePremiumResponse.getRtnCode())) {
-            CarType carType = getCarInconsistentInformation(calculatePremiumResponse.getRtnMsg());
+        CarType carType = getCarInconsistentInformation(calculatePremiumResponse.getRtnMsg());
 
-            modelQueryRequest.modificationModelQueryRequest(carType.modelCode);
-            ModelQueryResponse modelQueryResponse = zijinRequestApiComponents.modelQuery(modelQueryRequest, httpHeaders);
+        modelQueryRequest.modificationModelQueryRequest(carType.modelCode);
+        ModelQueryResponse modelQueryResponse = zijinRequestApiComponents.modelQuery(modelQueryRequest, httpHeaders);
 
-            ModelQueryResponse.VehicleModelInfosDTO vehicleModelInfosDTO = modelQueryResponse.getVehicleModelInfos().stream()
-                    .filter(x -> x.getModelCode().equals(carType.modelCode) && x.getPlatVehicleCode().equals(carType.platVehicleCode))
-                    .collect(Collectors.toList()).get(0);
+        ModelQueryResponse.VehicleModelInfosDTO vehicleModelInfosDTO = modelQueryResponse.getVehicleModelInfos().stream()
+                .filter(x -> x.getModelCode().equals(carType.modelCode) && x.getPlatVehicleCode().equals(carType.platVehicleCode))
+                .collect(Collectors.toList()).get(0);
 
-            calculatePremiumRequest.modificationOfVehicleType(vehicleModelInfosDTO);
-            return zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest);
-        }
-        return calculatePremiumResponse;
+        calculatePremiumRequest.modificationOfVehicleType(vehicleModelInfosDTO);
+        return zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest);
     }
 
-
     @Data
     public static class CarType {
 
@@ -98,10 +93,5 @@ public class ZijinVehicleTypeErrorComponents {
         }
     }
 
-    public static void main(String[] args) {
-
-
-    }
-
 
 }

+ 10 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/constants/enums/ResultEnum.java

@@ -28,6 +28,16 @@ public enum ResultEnum {
 
     private final String desc;
 
+    public static final String C_0000 = "0000";
+
+    public static final String C_4001 = "4001";
+
+    public static final String C_9980 = "9980";
+
+    public static final String C_1557 = "1557";
+
+    public static final String C_999 = "999";
+
     public static void verify(String rtnCode, String rtnMsg) {
         String[] s = new String[]{"0000", "4001", "9980", "1557", "999"};
         List<String> list = Arrays.asList(s);

+ 36 - 0
src/main/java/com/ydtech/modules/order/entity/api/zj/response/CalculatePremiumResponse.java

@@ -173,21 +173,39 @@ public class CalculatePremiumResponse extends BaseResponse implements Serializab
         @JsonProperty("discount")
         private String discount;
 
+        /**
+         * 商业险终保时间
+         */
         @JsonProperty("endDate")
         private String endDate;
 
+        /**
+         * 交强险终保时间
+         */
         @JsonProperty("endDateCI")
         private String endDateCI;
 
+        /**
+         * 商业险终保小时
+         */
         @JsonProperty("endHour")
         private String endHour;
 
+        /**
+         * 交强险终保小时
+         */
         @JsonProperty("endHourCI")
         private String endHourCI;
 
+        /**
+         * 商业险终保分钟
+         */
         @JsonProperty("endMinute")
         private String endMinute;
 
+        /**
+         * 交强险终保分钟
+         */
         @JsonProperty("endMinuteCI")
         private String endMinuteCI;
 
@@ -227,6 +245,9 @@ public class CalculatePremiumResponse extends BaseResponse implements Serializab
         @JsonProperty("questionCI")
         private String questionCI;
 
+        /**
+         * 重复投保信息
+         */
         @JsonProperty("reinsureMessage")
         private String reinsureMessage;
 
@@ -245,18 +266,33 @@ public class CalculatePremiumResponse extends BaseResponse implements Serializab
         @JsonProperty("startDate")
         private String startDate;
 
+        /**
+         * 交强险起保时间
+         */
         @JsonProperty("startDateCI")
         private String startDateCI;
 
+        /**
+         * 商业险起保小时
+         */
         @JsonProperty("startHour")
         private String startHour;
 
+        /**
+         * 交强险起保小时
+         */
         @JsonProperty("startHourCI")
         private String startHourCI;
 
+        /**
+         * 商业险起保分钟
+         */
         @JsonProperty("startMinute")
         private String startMinute;
 
+        /**
+         * 交强险起保分钟
+         */
         @JsonProperty("startMinuteCI")
         private String startMinuteCI;
 

+ 43 - 0
src/main/java/com/ydtech/modules/order/entity/crawler/response/CrawlerQuoteResponse.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.entity.crawler.response;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 import org.springframework.util.ObjectUtils;
 
 import java.io.Serializable;
@@ -73,35 +74,46 @@ public class CrawlerQuoteResponse extends CrawlerBaseResponse {
      */
     @JsonProperty(value = "tax_arrears")
     private List<TaxArrearsDto> taxArrears;
+    /**
+     * 其他信息
+     */
+    @JsonProperty(value = "other")
+    private OtherDto other;
 
     public List<TaxArrearsDto> getTaxArrears() {
         return ObjectUtils.isEmpty(taxArrears) ? Collections.emptyList() : taxArrears;
     }
 
+    @NoArgsConstructor
     @Data
     public static class TaxArrearsDto implements Serializable {
 
         private static final long serialVersionUID = -1251708327646266830L;
+
         /**
          * 历年滞纳金总金额
          */
         @JsonProperty(value = "all_late_fee")
         private double allLateFee;
+
         /**
          * 历年欠车船税加滞纳金总价
          */
         @JsonProperty(value = "late_chechuan")
         private double lateTax;
+
         /**
          * 车船税欠费起始日期
          */
         @JsonProperty(value = "start_day")
         private String startDay;
+
         /**
          * 车船税欠费结束日期
          */
         @JsonProperty(value = "end_day")
         private String endDay;
+
         /**
          * 历年车船税欠费金额
          */
@@ -111,4 +123,35 @@ public class CrawlerQuoteResponse extends CrawlerBaseResponse {
 
     }
 
+    @NoArgsConstructor
+    @Data
+    public static class OtherDto implements Serializable {
+
+        private static final long serialVersionUID = -7644262314380189512L;
+
+        /**
+         * 评分
+         */
+        @JsonProperty("mark")
+        private String mark;
+
+        /**
+         * 交强折扣
+         */
+        @JsonProperty("jq_discount")
+        private String jqDiscount;
+
+        /**
+         * 商业折扣
+         */
+        @JsonProperty("sy_discount")
+        private String syDiscount;
+
+        /**
+         * 是否需要验车
+         */
+        @JsonProperty("isQuoteGreenWay")
+        private String isQuoteGreenWay;
+    }
+
 }

+ 6 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java

@@ -206,8 +206,12 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
         quoteRespVo.setSumPermium(response.getCarInsureMain());//保费合计
         quoteRespVo.setTaxAmount(response.getCarInsureShipTax());//车船税
         quoteRespVo.setTaxArrears(TaxArrears.toTaxArrears(response.getTaxArrears()));
-        quoteRespVo.setTotalAdjustRate(1);
-        quoteRespVo.setILogPreUdwMess("0");//评分
+
+        //评分
+        CrawlerQuoteResponse.OtherDto other = response.getOther();
+        quoteRespVo.setILogPreUdwMess(other.getMark());
+        quoteRespVo.setJqAdjustRate(other.getJqDiscount());
+        quoteRespVo.setSyAdjustRate(other.getSyDiscount());
         quoteRespVo.setOrderno(orderNo); //订单号
 
         // 起保日期和终保日期