Эх сурвалжийг харах

紫金财险
1.修改车型不一致选择正确车型
2.验证码识别不正确

wks 3 жил өмнө
parent
commit
8d42da4580

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

@@ -19,7 +19,6 @@ import java.util.regex.Pattern;
  * @author: wenks
  * @date: 2023/9/20 9:05
  **/
-
 @Slf4j
 @Component
 public class ZijinDuplicateInsuranceComponents {
@@ -48,7 +47,7 @@ public class ZijinDuplicateInsuranceComponents {
         if (b) {
             return m.group(2) + ":00";
         }
-        return "";
+        throw new SystemException(message);
     }
 
     /**

+ 0 - 3
src/main/java/com/ydtech/modules/order/components/zj/ZijinReinsuranceComponents.java

@@ -2,14 +2,12 @@ package com.ydtech.modules.order.components.zj;
 
 
 import com.ydtech.modules.order.components.VerificationCodeIdentification;
-import com.ydtech.modules.order.entity.api.zj.constants.enums.CalculateFlagEnum;
 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.response.CalculatePremiumResponse;
 import com.ydtech.modules.order.entity.crawler.request.RecognitionRequest;
 import com.ydtech.modules.order.entity.crawler.response.RecognitionResponse;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Component;
 
@@ -19,7 +17,6 @@ import org.springframework.stereotype.Component;
  * @author: wenks
  * @date: 2023/9/20 9:44
  **/
-
 @Slf4j
 @Component
 public class ZijinReinsuranceComponents {

+ 6 - 1
src/main/java/com/ydtech/modules/order/components/zj/ZijinRequestApiComponents.java

@@ -15,6 +15,7 @@ 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;
@@ -53,12 +54,16 @@ public class ZijinRequestApiComponents {
 
     private static final String USER_ID = "28317480921155536850";
 
-    public ZijinRequestApiComponents(InsCrawlerOrderComponents insCrawlerOrderComponents, ZjApiConfigurationProperties zjApiConfigurationProperties, ConfigureParametersComponents configureParametersComponents, StringRedisTemplate redisTemplate, RedissonClient redissonClient) {
+    private final ZijinVehicleTypeErrorComponents zijinVehicleTypeErrorComponents;
+
+
+    public ZijinRequestApiComponents(InsCrawlerOrderComponents insCrawlerOrderComponents, ZjApiConfigurationProperties zjApiConfigurationProperties, ConfigureParametersComponents configureParametersComponents, StringRedisTemplate redisTemplate, RedissonClient redissonClient, ZijinVehicleTypeErrorComponents zijinVehicleTypeErrorComponents) {
         this.insCrawlerOrderComponents = insCrawlerOrderComponents;
         this.zjApiConfigurationProperties = zjApiConfigurationProperties;
         this.configureParametersComponents = configureParametersComponents;
         this.redisTemplate = redisTemplate;
         this.redissonClient = redissonClient;
+        this.zijinVehicleTypeErrorComponents = zijinVehicleTypeErrorComponents;
     }
 
     public <T, B extends BaseResponse> B request(String url, String desc, T requestBody, Class<B> responseType, HttpHeaders httpHeaders) {

+ 86 - 0
src/main/java/com/ydtech/modules/order/components/zj/ZijinVehicleTypeErrorComponents.java

@@ -0,0 +1,86 @@
+package com.ydtech.modules.order.components.zj;
+
+
+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.response.BaseResponse;
+import com.ydtech.modules.order.entity.api.zj.response.CalculatePremiumResponse;
+import com.ydtech.modules.order.entity.api.zj.response.ModelQueryResponse;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpHeaders;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 您录入的车型与平台返回的不一致,请核实车辆信息是否准确或提交电子联系单处理!
+ * 平台返回的车型如下:厂牌车型:吉利HQ6453C03多用途乘用车  新车购置价:108800 车型代码:BYD1012ZJJ 行业车型编码:BJLHBBUB0004;
+ *
+ * @description: 紫金财险车型错误
+ * @author: wenks
+ * @date: 2023/9/20 9:05
+ **/
+@Slf4j
+@Component
+public class ZijinVehicleTypeErrorComponents {
+
+    public static final String CAR_ERROR_REGEX = "车型代码:(.+?) 行业车型编码:(.+?); ";
+
+    private final ZijinRequestApiComponents zijinRequestApiComponents;
+
+    public ZijinVehicleTypeErrorComponents(ZijinRequestApiComponents zijinRequestApiComponents) {
+        this.zijinRequestApiComponents = zijinRequestApiComponents;
+    }
+
+    /**
+     * 获取车型不一致信息
+     *
+     * @param message
+     * @return
+     */
+    public static CarType getCarInconsistentInformation(String message) {
+        Pattern pattern = Pattern.compile(CAR_ERROR_REGEX);
+        Matcher m = pattern.matcher(message);
+        boolean b = m.find();
+        if (b) {
+            return new CarType(m.group(1), m.group(2));
+        }
+        throw new SystemException(message);
+    }
+
+    /**
+     * 修改正确车型报价
+     */
+    public CalculatePremiumResponse modification(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, List<ModelQueryResponse.VehicleModelInfosDTO> vehicleModelInfosDTOS) {
+        if (ResultEnum.R_1557.getCode().equals(calculatePremiumResponse.getRtnCode())) {
+            CarType carType = getCarInconsistentInformation(calculatePremiumResponse.getRtnMsg());
+            ModelQueryResponse.VehicleModelInfosDTO vehicleModelInfosDTO = vehicleModelInfosDTOS.stream().filter(x -> x.getModelCode().equals(carType.modelCode) && x.getPlatVehicleCode().equals(carType.platVehicleCode)).findFirst().get();
+            calculatePremiumRequest.modificationOfVehicleType(vehicleModelInfosDTO);
+            return zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders);
+        }
+        return calculatePremiumResponse;
+    }
+
+
+    @AllArgsConstructor
+    @Data
+    public static class CarType {
+
+        /**
+         * 车型代码
+         */
+        private String modelCode;
+        /**
+         * 行业车型编码
+         */
+        private String platVehicleCode;
+
+    }
+
+
+}

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

@@ -20,16 +20,16 @@ public enum ResultEnum {
     R_0000("0000", "成功"),
     R_4001("4001", "重复投保标志"),
     R_9980("9980", "转保标志"),
+    R_1557("1557", "车型不一致"),
     R_9999("9999", "系统异常"),
-    R_999("999", "系统异常");
+    R_999("999", "中保信异常");
 
     private final String code;
 
     private final String desc;
 
-
     public static void verify(String rtnCode, String rtnMsg) {
-        String[] s = new String[]{"0000", "4001", "9980"};
+        String[] s = new String[]{"0000", "4001", "9980", "1557"};
         List<String> list = Arrays.asList(s);
         if (!list.contains(rtnCode)) {
             throw new SystemException(rtnMsg);

+ 20 - 1
src/main/java/com/ydtech/modules/order/entity/api/zj/request/CalculatePremiumRequest.java

@@ -130,6 +130,10 @@ public class CalculatePremiumRequest implements Serializable {
         this.taxRelifInfo = new TaxRelifInfoDTO();
     }
 
+    public void modificationOfVehicleType(ModelQueryResponse.VehicleModelInfosDTO vehicleModelInfosDTO){
+        this.vehicleInfo.modificationOfVehicleType(vehicleModelInfosDTO);
+    }
+
     /**
      * 基本信息
      */
@@ -764,7 +768,6 @@ public class CalculatePremiumRequest implements Serializable {
             this.oriModelName = vehicleModelInfosDTO.getModelName();
             this.vehicleStyleUniqueId = vehicleModelInfosDTO.getVehicleId();
             this.isInvokeJingYou = "1";
-
         }
 
         public String getCarKindDetailId(int seatCount) {
@@ -781,6 +784,22 @@ public class CalculatePremiumRequest implements Serializable {
             }
         }
 
+        public void modificationOfVehicleType(ModelQueryResponse.VehicleModelInfosDTO vehicleModelInfosDTO) {
+            this.modelCode = vehicleModelInfosDTO.getModelCode();
+            this.purchasePrice = vehicleModelInfosDTO.getPurchasePrice();
+            this.vehicleId = vehicleModelInfosDTO.getVehicleId();
+            this.brandName = vehicleModelInfosDTO.getBrand();
+            this.exhaustCapacity = vehicleModelInfosDTO.getExhaustCapacity();
+            this.platVehicleCode = vehicleModelInfosDTO.getPlatVehicleCode();
+            this.modelEnergyType = vehicleModelInfosDTO.getPowerTypeCode();
+            this.printModelName = vehicleModelInfosDTO.getModelName();
+            this.power = vehicleModelInfosDTO.getPower();
+            this.oriPurchasePrice = vehicleModelInfosDTO.getPurchasePrice();
+            this.oriBrandName = vehicleModelInfosDTO.getBrand();
+            this.oriModelName = vehicleModelInfosDTO.getModelName();
+            this.vehicleStyleUniqueId = vehicleModelInfosDTO.getVehicleId();
+        }
+
     }
 
     /**

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

@@ -155,9 +155,15 @@ public class CalculatePremiumResponse extends BaseResponse implements Serializab
         @JsonProperty("comCode")
         private String comCode;
 
+        /**
+         * 商业险投保查询码
+         */
         @JsonProperty("demandNo")
         private String demandNo;
 
+        /**
+         * 交强险投保查询码
+         */
         @JsonProperty("demandNoCI")
         private String demandNoCI;
 
@@ -206,9 +212,15 @@ public class CalculatePremiumResponse extends BaseResponse implements Serializab
         @JsonProperty("proposalCheckNo")
         private String proposalCheckNo;
 
+        /**
+         * 商业险转保校验码
+         */
         @JsonProperty("question")
         private String question;
 
+        /**
+         * 交强险转保校验码
+         */
         @JsonProperty("questionCI")
         private String questionCI;
 

+ 2 - 2
src/main/java/com/ydtech/modules/order/entity/api/zj/response/ModelQueryResponse.java

@@ -162,7 +162,7 @@ public class ModelQueryResponse extends BaseResponse implements Serializable {
         @JsonProperty("marketYear")
         private String marketYear;
         /**
-         *
+         * 车型代码
          */
         @JsonProperty("modelCode")
         private String modelCode;
@@ -197,7 +197,7 @@ public class ModelQueryResponse extends BaseResponse implements Serializable {
         @JsonProperty("platPublicMode")
         private String platPublicMode;
         /**
-         *
+         * 行业车型编码
          */
         @JsonProperty("platVehicleCode")
         private String platVehicleCode;

+ 12 - 4
src/main/java/com/ydtech/modules/order/entity/crawler/response/RecognitionResponse.java

@@ -4,6 +4,7 @@ package com.ydtech.modules.order.entity.crawler.response;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.Setter;
 
 import java.io.Serializable;
 
@@ -23,9 +24,8 @@ public class RecognitionResponse extends CrawlerBaseResponse implements Serializ
     @JsonProperty("data")
     private Code data;
 
-
-    @Data
-    public static class Code implements Serializable{
+    @Setter
+    public static class Code implements Serializable {
 
         private static final long serialVersionUID = 794225022248404083L;
         /**
@@ -39,8 +39,16 @@ public class RecognitionResponse extends CrawlerBaseResponse implements Serializ
          */
         @JsonProperty(value = "syImageCode")
         private String syImageCode;
-    }
 
 
+        public String getJqImageCode() {
+            return jqImageCode.replace("0", "o");
+        }
+
+        public String getSyImageCode() {
+            return syImageCode.replace("0", "o");
+        }
+    }
+
 
 }

+ 7 - 1
src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java

@@ -14,6 +14,7 @@ import com.ydtech.modules.order.components.ConfigureParametersComponents;
 import com.ydtech.modules.order.components.zj.ZijinDuplicateInsuranceComponents;
 import com.ydtech.modules.order.components.zj.ZijinReinsuranceComponents;
 import com.ydtech.modules.order.components.zj.ZijinRequestApiComponents;
+import com.ydtech.modules.order.components.zj.ZijinVehicleTypeErrorComponents;
 import com.ydtech.modules.order.constants.InsuranceTypeCorrespondence;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
@@ -71,7 +72,9 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
 
     private final ZijinReinsuranceComponents zijinReinsuranceComponents;
 
-    public ZijinOrderApiServiceImpl(ZijinRequestApiComponents zijinRequestApiComponents, InsAreaCompanyService insAreaCompanyService, InsOrdersService insOrdersService, InsTaskImagesService insTaskImagesService, PtlAgreementAttributionService ptlAgreementAttributionService, ConfigureParametersComponents configureParametersComponents, ZijinDuplicateInsuranceComponents zijinDuplicateInsuranceComponents, ZijinReinsuranceComponents zijinReinsuranceComponents) {
+    private final ZijinVehicleTypeErrorComponents zijinVehicleTypeErrorComponents;
+
+    public ZijinOrderApiServiceImpl(ZijinRequestApiComponents zijinRequestApiComponents, InsAreaCompanyService insAreaCompanyService, InsOrdersService insOrdersService, InsTaskImagesService insTaskImagesService, PtlAgreementAttributionService ptlAgreementAttributionService, ConfigureParametersComponents configureParametersComponents, ZijinDuplicateInsuranceComponents zijinDuplicateInsuranceComponents, ZijinReinsuranceComponents zijinReinsuranceComponents, ZijinVehicleTypeErrorComponents zijinVehicleTypeErrorComponents) {
         this.zijinRequestApiComponents = zijinRequestApiComponents;
         this.insAreaCompanyService = insAreaCompanyService;
         this.insOrdersService = insOrdersService;
@@ -80,6 +83,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
         this.configureParametersComponents = configureParametersComponents;
         this.zijinDuplicateInsuranceComponents = zijinDuplicateInsuranceComponents;
         this.zijinReinsuranceComponents = zijinReinsuranceComponents;
+        this.zijinVehicleTypeErrorComponents = zijinVehicleTypeErrorComponents;
     }
 
 
@@ -137,6 +141,8 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
         calculatePremiumResponse = zijinDuplicateInsuranceComponents.duplicate(calculatePremiumRequest, calculatePremiumResponse, httpHeaders);
         // 6. 转保标志
         calculatePremiumResponse = zijinReinsuranceComponents.reinsurance(calculatePremiumRequest, calculatePremiumResponse, httpHeaders);
+        // 7. 车型不一致
+        calculatePremiumResponse = zijinVehicleTypeErrorComponents.modification(calculatePremiumRequest, calculatePremiumResponse, httpHeaders, modelQueryResponse.getVehicleModelInfos());
 
         QuoteRespVo quoteRespVo = getQuoteRespVo(calculatePremiumResponse, quoteInfoVo, quoteVo.getAccidentalDrivingVo());
         return responseOrder(calculatePremiumResponse, quoteRespVo, ptlAgreementAttribution, modelQueryResponse.getOrderId(), modelQueryResponse.getOrderNo());