소스 검색

修改国任财险报价问题

wks 2 년 전
부모
커밋
a39a9ba6e1

+ 2 - 0
src/main/java/com/ydtech/modules/ins/model/dto/CarInsDateDto.java

@@ -12,7 +12,9 @@ import lombok.Data;
 public class CarInsDateDto {
 public class CarInsDateDto {
 
 
     private String startDate;
     private String startDate;
+
     private String endDate;
     private String endDate;
+
     //是即时起保
     //是即时起保
     private boolean isForthwith = false;
     private boolean isForthwith = false;
 
 

+ 0 - 1
src/main/java/com/ydtech/modules/ins/model/guoren/InsuranceSlipReq.java

@@ -42,7 +42,6 @@ public class InsuranceSlipReq {
      */
      */
     @JsonIgnore
     @JsonIgnore
     public static InsuranceSlipReq buildParam(BaseQuoteInfoVo yaQuoteInfoVo, String carPriceNum, String orderCode) {
     public static InsuranceSlipReq buildParam(BaseQuoteInfoVo yaQuoteInfoVo, String carPriceNum, String orderCode) {
-
         //投保人
         //投保人
         CustomerInfoVo policyHolderInfo = yaQuoteInfoVo.getPolicyHolderInfo();
         CustomerInfoVo policyHolderInfo = yaQuoteInfoVo.getPolicyHolderInfo();
         //被保人
         //被保人

+ 26 - 20
src/main/java/com/ydtech/modules/ins/model/guoren/PremiumReq.java

@@ -59,7 +59,8 @@ public class PremiumReq {
      * @date: 2023年08月14日 0014
      * @date: 2023年08月14日 0014
      */
      */
     @JsonIgnore
     @JsonIgnore
-    public static PremiumReq buildQuoteParam(BaseQuoteInfoVo yaQuoteInfoVo, CarPriceResp.DataDTO carPriceResult, VinQueryResp.DataDTO vinQ, boolean isNoCar) {
+    public static PremiumReq buildQuoteParam(BaseQuoteInfoVo yaQuoteInfoVo, CarPriceResp.DataDTO carPriceResult,
+                                             VinQueryResp.DataDTO vinQ, boolean isNoCar) {
         CustomerInfoVo ownerInfo = yaQuoteInfoVo.getOwnerInfo();
         CustomerInfoVo ownerInfo = yaQuoteInfoVo.getOwnerInfo();
 
 
         List<RiskInfoVo> riskList = yaQuoteInfoVo.getRiskList();
         List<RiskInfoVo> riskList = yaQuoteInfoVo.getRiskList();
@@ -70,10 +71,12 @@ public class PremiumReq {
         riskList.forEach(a -> {
         riskList.forEach(a -> {
             if (a.getRiskCode().equals("0507")) {
             if (a.getRiskCode().equals("0507")) {
                 CiDTO ciDto = buildCiDto(ownerInfo, a, isNoCar);
                 CiDTO ciDto = buildCiDto(ownerInfo, a, isNoCar);
+                ciDto.setTrafficTime(a.getStartDate());
                 quoteReq.setCi(ciDto);
                 quoteReq.setCi(ciDto);
             }
             }
             if (a.getRiskCode().equals("0510")) {
             if (a.getRiskCode().equals("0510")) {
                 BiDTO biDto = buildBiDto(ownerInfo, a, kindInfoVList, carPriceResult, vinQ, isNoCar);
                 BiDTO biDto = buildBiDto(ownerInfo, a, kindInfoVList, carPriceResult, vinQ, isNoCar);
+                biDto.setBusinessTime(a.getStartDate());
                 quoteReq.setBi(biDto);
                 quoteReq.setBi(biDto);
             }
             }
         });
         });
@@ -132,18 +135,20 @@ public class PremiumReq {
         if (null != ciRiskInfo) {
         if (null != ciRiskInfo) {
             ciDto.setCalculateFlagCI("1");
             ciDto.setCalculateFlagCI("1");
             //构造保险日期
             //构造保险日期
-            CarInsDateDto cidd = InsUtils.buildCiInsDate(ciRiskInfo.getStartDate(), ciRiskInfo.getEndDate());
             ciDto.setInputRisk("1");
             ciDto.setInputRisk("1");
-            ciPrpTmain.setStartDate(cidd.getStartDate());
-            ciPrpTmain.setEndDate(cidd.getEndDate());
+
+//            CarInsDateDto cidd = InsUtils.buildCiInsDate(ciRiskInfo.getStartDate(), ciRiskInfo.getEndDate());
+//            ciPrpTmain.setStartDate(cidd.getStartDate());
+//            ciPrpTmain.setEndDate(cidd.getEndDate());
+//            //即时起保标识	immeValiFlag	字符串	N	即时起保必传1
+//            ciPrpTmain.setImmeValiFlag(cidd.isForthwith() ? "1" : "");
+//            //即时终保时间	immeValidEndDate	字符串	N	即时起保必传
+//            ciPrpTmain.setImmeValidStartDate(cidd.isForthwith() ? cidd.getStartDate() : "");
+//            //即时终保时间	immeValidEndDate	字符串	N	即时起保必传 (YYYY-MM-DD HH:MM:SS)
+//            ciPrpTmain.setImmeValidEndDate(cidd.isForthwith() ? cidd.getEndDate() : "");
+
             //转保验证码
             //转保验证码
             ciPrpTmain.setAnswer("");
             ciPrpTmain.setAnswer("");
-            //即时起保标识	immeValiFlag	字符串	N	即时起保必传1
-            ciPrpTmain.setImmeValiFlag(cidd.isForthwith() ? "1" : "");
-            //即时终保时间	immeValidEndDate	字符串	N	即时起保必传
-            ciPrpTmain.setImmeValidStartDate(cidd.isForthwith() ? cidd.getStartDate() : "");
-            //即时终保时间	immeValidEndDate	字符串	N	即时起保必传 (YYYY-MM-DD HH:MM:SS)
-            ciPrpTmain.setImmeValidEndDate(cidd.isForthwith() ? cidd.getEndDate() : "");
             if (isNoCar) {
             if (isNoCar) {
                 //非车标识      车+非车必传:1
                 //非车标识      车+非车必传:1
                 ciPrpTmain.setNoCarFlag("1");
                 ciPrpTmain.setNoCarFlag("1");
@@ -179,8 +184,6 @@ public class PremiumReq {
         ciPrpTitemCar.setOtherNature("0");
         ciPrpTitemCar.setOtherNature("0");
 
 
         ciDto.setPrpTitemCar(ciPrpTitemCar);
         ciDto.setPrpTitemCar(ciPrpTitemCar);
-
-
         ciDto.setPrptitemkindList(prptitemkindList);
         ciDto.setPrptitemkindList(prptitemkindList);
         ciDto.setPrpTmain(ciPrpTmain);
         ciDto.setPrpTmain(ciPrpTmain);
 //        /**
 //        /**
@@ -199,7 +202,8 @@ public class PremiumReq {
      * @date: 2023-08-15
      * @date: 2023-08-15
      */
      */
     @JsonIgnore
     @JsonIgnore
-    public static BiDTO buildBiDto(CustomerInfoVo ownerInfo, RiskInfoVo biRiskInfo, List<KindInfoVo> kindInfoVList, CarPriceResp.DataDTO carPriceResult, VinQueryResp.DataDTO vinQ, boolean isNoCar) {
+    public static BiDTO buildBiDto(CustomerInfoVo ownerInfo, RiskInfoVo biRiskInfo, List<KindInfoVo> kindInfoVList,
+                                   CarPriceResp.DataDTO carPriceResult, VinQueryResp.DataDTO vinQ, boolean isNoCar) {
         BiDTO biDto = new BiDTO();
         BiDTO biDto = new BiDTO();
         biDto.setPrpTmainRate(new BiDTO.PrpTmainRateDTO());
         biDto.setPrpTmainRate(new BiDTO.PrpTmainRateDTO());
         biDto.setPrpTChargingPostDataList(new ArrayList<>());
         biDto.setPrpTChargingPostDataList(new ArrayList<>());
@@ -229,7 +233,7 @@ public class PremiumReq {
         biPrpTitemCar.setOtherNature("0");
         biPrpTitemCar.setOtherNature("0");
 
 
         biPrpTitemCar.setCiInsureDemandPay(new ArrayList<>());
         biPrpTitemCar.setCiInsureDemandPay(new ArrayList<>());
-        biPrpTitemCar.setCiInsureDemandWarningClaim(new ArrayList());
+        biPrpTitemCar.setCiInsureDemandWarningClaim(new ArrayList<>());
         biPrpTitemCar.setPrpTrenewal("");
         biPrpTitemCar.setPrpTrenewal("");
         biPrpTitemCar.setPrptengageList("");
         biPrpTitemCar.setPrptengageList("");
         biPrpTitemCar.setPrpTmainRate("");
         biPrpTitemCar.setPrpTmainRate("");
@@ -248,9 +252,10 @@ public class PremiumReq {
             biPrpTmain.setInputDate(DateUtil.formatDate(new Date()));
             biPrpTmain.setInputDate(DateUtil.formatDate(new Date()));
             biPrpTmain.setSignDate(DateUtil.formatDate(new Date()));
             biPrpTmain.setSignDate(DateUtil.formatDate(new Date()));
 
 
-            CarInsDateDto biCidd = InsUtils.buildBiInsDate(biRiskInfo.getStartDate(), biRiskInfo.getEndDate());
-            biPrpTmain.setStartDate(biCidd.getStartDate());
-            biPrpTmain.setEndDate(biCidd.getEndDate());
+//            CarInsDateDto biCidd = InsUtils.buildBiInsDate(biRiskInfo.getStartDate(), biRiskInfo.getEndDate());
+//
+//            biPrpTmain.setStartDate(biCidd.getStartDate());
+//            biPrpTmain.setEndDate(biCidd.getEndDate());
 
 
             if (isNoCar) {
             if (isNoCar) {
                 // 非车标识      车+非车必传:1
                 // 非车标识      车+非车必传:1
@@ -286,7 +291,8 @@ public class PremiumReq {
         return biDto;
         return biDto;
     }
     }
 
 
-    private static List<BiDTO.PrptitemkindListDTO> buildBiKindList(List<KindInfoVo> kindInfoVList, CarPriceResp.DataDTO carPriceResult, RiskInfoVo biRiskInfo, VinQueryResp.DataDTO vinQ) {
+    private static List<BiDTO.PrptitemkindListDTO> buildBiKindList(List<KindInfoVo> kindInfoVList, CarPriceResp.DataDTO carPriceResult,
+                                                                   RiskInfoVo biRiskInfo, VinQueryResp.DataDTO vinQ) {
         List<BiDTO.PrptitemkindListDTO> prptitemkindList = new ArrayList<>();
         List<BiDTO.PrptitemkindListDTO> prptitemkindList = new ArrayList<>();
         kindInfoVList.forEach(k -> {
         kindInfoVList.forEach(k -> {
             BiDTO.PrptitemkindListDTO prptitemkind = new BiDTO.PrptitemkindListDTO();
             BiDTO.PrptitemkindListDTO prptitemkind = new BiDTO.PrptitemkindListDTO();
@@ -550,7 +556,7 @@ public class PremiumReq {
                 this.getPrpTmain().setStartHour(StringUtils.toString(start.getHour()));
                 this.getPrpTmain().setStartHour(StringUtils.toString(start.getHour()));
                 this.getPrpTmain().setEndHour(StringUtils.toString(start.getHour()));
                 this.getPrpTmain().setEndHour(StringUtils.toString(start.getHour()));
                 this.getPrpTmain().setImmeValidStartDate(newStartDate);
                 this.getPrpTmain().setImmeValidStartDate(newStartDate);
-                this.getPrpTmain().setImmeValidEndDate(newStartDate);
+                this.getPrpTmain().setImmeValidEndDate(newEndDate);
                 this.getPrpTmain().setImmeValiFlag("1");
                 this.getPrpTmain().setImmeValiFlag("1");
 
 
             } else {
             } else {
@@ -798,7 +804,7 @@ public class PremiumReq {
                 this.getPrpTmain().setStartHour(StringUtils.toString(start.getHour()));
                 this.getPrpTmain().setStartHour(StringUtils.toString(start.getHour()));
                 this.getPrpTmain().setEndHour(StringUtils.toString(start.getHour()));
                 this.getPrpTmain().setEndHour(StringUtils.toString(start.getHour()));
                 this.getPrpTmain().setImmeValidStartDate(newStartDate);
                 this.getPrpTmain().setImmeValidStartDate(newStartDate);
-                this.getPrpTmain().setImmeValidEndDate(newStartDate);
+                this.getPrpTmain().setImmeValidEndDate(newEndDate);
                 this.getPrpTmain().setImmeValiFlag("1");
                 this.getPrpTmain().setImmeValiFlag("1");
 
 
             } else {
             } else {

+ 81 - 6
src/main/java/com/ydtech/modules/order/components/gouren/GuorenDuplicateInsuranceComponent.java

@@ -1,11 +1,15 @@
 package com.ydtech.modules.order.components.gouren;
 package com.ydtech.modules.order.components.gouren;
 
 
 
 
+import cn.hutool.json.JSONUtil;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ydtech.exception.SystemException;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.ins.model.guoren.PremiumReq;
 import com.ydtech.modules.ins.model.guoren.PremiumReq;
 import com.ydtech.modules.ins.model.guoren.PremiumResp;
 import com.ydtech.modules.ins.model.guoren.PremiumResp;
+import com.ydtech.utils.HttpUtil;
+import com.ydtech.utils.JsonUtils;
+import lombok.Data;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.ObjectUtils;
 
 
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
@@ -20,7 +24,6 @@ import java.util.regex.Pattern;
  * @author: wenks
  * @author: wenks
  * @date: 2023/11/8 10:40
  * @date: 2023/11/8 10:40
  **/
  **/
-@Component
 public class GuorenDuplicateInsuranceComponent {
 public class GuorenDuplicateInsuranceComponent {
 
 
     public static final String THE_FIRST_REGEX = "终保日期(.+?);";
     public static final String THE_FIRST_REGEX = "终保日期(.+?);";
@@ -84,10 +87,19 @@ public class GuorenDuplicateInsuranceComponent {
         throw new SystemException(message);
         throw new SystemException(message);
     }
     }
 
 
-    public boolean processor(PremiumResp resp, List<String> requestInfoList, PremiumReq req) {
+
+    /**
+     * 重复投保
+     *
+     * @param resp            响应
+     * @param requestInfoList 返回重复信息
+     * @param req             重新构造请求
+     * @return 正确与否
+     */
+    public static boolean processor(PremiumResp resp, List<String> requestInfoList, PremiumReq req) {
         String syEndDate = "";
         String syEndDate = "";
         PremiumResp.DataDTO data = resp.getData();
         PremiumResp.DataDTO data = resp.getData();
-        if(ObjectUtils.isEmpty(data)){
+        if (ObjectUtils.isEmpty(data)) {
             throw new SystemException("程序异常请联系管理员");
             throw new SystemException("程序异常请联系管理员");
         }
         }
 
 
@@ -109,13 +121,13 @@ public class GuorenDuplicateInsuranceComponent {
                 syEndDate = getEndDate(resultMsg, THE_SECOND_REGEX);
                 syEndDate = getEndDate(resultMsg, THE_SECOND_REGEX);
             }
             }
 
 
-            if(StringUtils.isNotEmpty(syEndDate)){
+            if (StringUtils.isNotEmpty(syEndDate)) {
                 // 商业险
                 // 商业险
                 PremiumReq.BiDTO bi = req.getBi();
                 PremiumReq.BiDTO bi = req.getBi();
                 bi.setBusinessTime(syEndDate);
                 bi.setBusinessTime(syEndDate);
             }
             }
 
 
-            if(StringUtils.isNotEmpty(jqEndDate)){
+            if (StringUtils.isNotEmpty(jqEndDate)) {
                 // 交强
                 // 交强
                 PremiumReq.CiDTO ci = req.getCi();
                 PremiumReq.CiDTO ci = req.getCi();
                 ci.setTrafficTime(jqEndDate);
                 ci.setTrafficTime(jqEndDate);
@@ -127,5 +139,68 @@ public class GuorenDuplicateInsuranceComponent {
 
 
     }
     }
 
 
+    /**
+     * 校验码有误
+     *
+     * @param response 响应
+     * @return 正确与否
+     */
+    public static boolean theCheckCodeIsWrong(PremiumResp response) {
+        if (response.getResultMsg().contains("校验码有误")) {
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * 转保单
+     *
+     * @param resp            响应
+     * @param requestInfoList 返回重复信息
+     * @param req             重新构造请求
+     * @return 正确与否
+     */
+    public static boolean buildCheckCodeParam(PremiumResp resp, List<String> requestInfoList, PremiumReq req) {
+        String ciCheckCode = resp.getData().getCicheckCode();
+        String biCheckCode = resp.getData().getBicheckCode();
+        if (com.ydtech.utils.StringUtils.isNotEmpty(ciCheckCode) || com.ydtech.utils.StringUtils.isNotEmpty(biCheckCode)) {
+            CheckCodeResp ccResp = gainCheckCode(ciCheckCode, biCheckCode);
+            req.getCi().getPrpTmain().setAnswer(ccResp.getJqImageCode());
+            req.getBi().getPrpTmain().setAnswer(ccResp.getSyImageCode());
+            requestInfoList.add("转保单");
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 获取图片验证码 校验的code
+     *
+     * @author: lig
+     * @date: 2023年10月13日 0013
+     */
+    private static CheckCodeResp gainCheckCode(String jqImageStr, String syImageStr) {
+        Map<String, String> bodyMap = new HashMap<>();
+        bodyMap.put("jqImage", com.ydtech.utils.StringUtils.toString(jqImageStr, ""));
+        bodyMap.put("syImage", com.ydtech.utils.StringUtils.toString(syImageStr, ""));
+        String sendBody = JsonUtils.toJson(bodyMap);
+        String ocrStr = HttpUtil.sendPost("http://47.92.254.66:8088/getres", sendBody);
+        return JSONUtil.toBean(ocrStr, CheckCodeResp.class);
+
+    }
+
+
+    @Data
+    static class CheckCodeResp {
+
+        @JsonProperty(value = "jqImageCode")
+        String jqImageCode;
+
+        @JsonProperty(value = "syImageCode")
+        String syImageCode;
+
+    }
+
 
 
 }
 }

+ 45 - 74
src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java

@@ -3,7 +3,6 @@ package com.ydtech.modules.order.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.json.JSONUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ydtech.config.properties.GuorenApiConfigurationProperties;
 import com.ydtech.config.properties.GuorenApiConfigurationProperties;
@@ -29,12 +28,8 @@ import com.ydtech.modules.order.entity.api.guoren.constants.GoodsClassifyList;
 import com.ydtech.modules.order.entity.api.guoren.constants.PlatformInterfaceCode;
 import com.ydtech.modules.order.entity.api.guoren.constants.PlatformInterfaceCode;
 import com.ydtech.modules.order.entity.api.guoren.request.ApplicationDetailsRequest;
 import com.ydtech.modules.order.entity.api.guoren.request.ApplicationDetailsRequest;
 import com.ydtech.modules.order.entity.api.guoren.request.NonAutoInsuranceRequest;
 import com.ydtech.modules.order.entity.api.guoren.request.NonAutoInsuranceRequest;
-import com.ydtech.modules.order.entity.api.guoren.request.QueryNoCarPolicyNoRequest;
-import com.ydtech.modules.order.entity.api.guoren.request.SignatureRequest;
 import com.ydtech.modules.order.entity.api.guoren.response.NonAutoInsOrderResponse;
 import com.ydtech.modules.order.entity.api.guoren.response.NonAutoInsOrderResponse;
-import com.ydtech.modules.order.entity.api.guoren.response.QueryNoCarPolicyNoResponse;
 import com.ydtech.modules.order.entity.api.guoren.response.SignatureResponse;
 import com.ydtech.modules.order.entity.api.guoren.response.SignatureResponse;
-import com.ydtech.modules.order.entity.dto.DrivingInsuranceDto;
 import com.ydtech.modules.order.entity.dto.InsUploadImagesDto;
 import com.ydtech.modules.order.entity.dto.InsUploadImagesDto;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
@@ -55,7 +50,6 @@ import org.apache.commons.httpclient.methods.multipart.StringPart;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
@@ -100,9 +94,13 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
 
 
     private final GuorenRequestApiComponent guorenRequestApiComponent;
     private final GuorenRequestApiComponent guorenRequestApiComponent;
 
 
-    private final GuorenDuplicateInsuranceComponent guorenDuplicateInsuranceComponent;
 
 
-    public GuorenOrderApiServiceImpl(GuorenApiConfigurationProperties properties, InsOrdersComponents insOrdersComponents, GuorenRequestApiComponent guorenRequestApiComponent, InsAreaCompanyService insAreaCompanyService, InsOrdersService insOrdersService, EsmInsCompanyService esmInsCompanyService, ConfigureParametersComponents configureParametersComponents, InsTaskImagesMapper insTaskImagesMapper, GuorenDuplicateInsuranceComponent guorenDuplicateInsuranceComponent) {
+
+    public GuorenOrderApiServiceImpl(GuorenApiConfigurationProperties properties, InsOrdersComponents insOrdersComponents,
+                                     GuorenRequestApiComponent guorenRequestApiComponent, InsAreaCompanyService insAreaCompanyService,
+                                     InsOrdersService insOrdersService, EsmInsCompanyService esmInsCompanyService,
+                                     ConfigureParametersComponents configureParametersComponents, InsTaskImagesMapper insTaskImagesMapper
+            ) {
         this.properties = properties;
         this.properties = properties;
         this.insOrdersComponents = insOrdersComponents;
         this.insOrdersComponents = insOrdersComponents;
         this.guorenRequestApiComponent = guorenRequestApiComponent;
         this.guorenRequestApiComponent = guorenRequestApiComponent;
@@ -111,7 +109,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         this.esmInsCompanyService = esmInsCompanyService;
         this.esmInsCompanyService = esmInsCompanyService;
         this.configureParametersComponents = configureParametersComponents;
         this.configureParametersComponents = configureParametersComponents;
         this.insTaskImagesMapper = insTaskImagesMapper;
         this.insTaskImagesMapper = insTaskImagesMapper;
-        this.guorenDuplicateInsuranceComponent = guorenDuplicateInsuranceComponent;
+
     }
     }
 
 
     /**
     /**
@@ -170,7 +168,8 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         String orderCode = null;
         String orderCode = null;
         GuorenAccidentalDrivingVo accidentalDrivingVo = quoteVo.getAccidentalDrivingVo();
         GuorenAccidentalDrivingVo accidentalDrivingVo = quoteVo.getAccidentalDrivingVo();
         if (GoodsClassifyList.verificationGoodsCode(accidentalDrivingVo.getGoodsCode())) {
         if (GoodsClassifyList.verificationGoodsCode(accidentalDrivingVo.getGoodsCode())) {
-            NonAutoInsOrderResponse nonAutoInsOrderResponse = nonAutoInsOrder(yaQuoteInfoVo, accidentalDrivingVo, carPriceResult.getInputvo(), channelInfo, vinQ);
+            NonAutoInsOrderResponse nonAutoInsOrderResponse = nonAutoInsOrder(yaQuoteInfoVo, accidentalDrivingVo,
+                    carPriceResult.getInputvo(), channelInfo, vinQ);
             AssertionUtils.isEmpty(nonAutoInsOrderResponse.getData(), nonAutoInsOrderResponse.getMessage());
             AssertionUtils.isEmpty(nonAutoInsOrderResponse.getData(), nonAutoInsOrderResponse.getMessage());
             orderCode = nonAutoInsOrderResponse.getData().getOrderCode();
             orderCode = nonAutoInsOrderResponse.getData().getOrderCode();
             isNoCar = true;
             isNoCar = true;
@@ -295,8 +294,10 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         InsOrderStatusResp iosr = insOrderStatus(iac);
         InsOrderStatusResp iosr = insOrderStatus(iac);
 
 
         if (null != iosr && CollUtil.isNotEmpty(iosr.getData())) {
         if (null != iosr && CollUtil.isNotEmpty(iosr.getData())) {
-            InsOrderStatusResp.DataDTO jqDataDTO = iosr.getData().stream().filter(a -> a.getProposalNo().equals(iac.getJqapplyno())).findFirst().orElse(null);
-            InsOrderStatusResp.DataDTO syDataDTO = iosr.getData().stream().filter(b -> b.getProposalNo().equals(iac.getSyapplyno())).findFirst().orElse(null);
+            InsOrderStatusResp.DataDTO jqDataDTO =
+                    iosr.getData().stream().filter(a -> a.getProposalNo().equals(iac.getJqapplyno())).findFirst().orElse(null);
+            InsOrderStatusResp.DataDTO syDataDTO =
+                    iosr.getData().stream().filter(b -> b.getProposalNo().equals(iac.getSyapplyno())).findFirst().orElse(null);
 
 
             //待核保订单处理
             //待核保订单处理
             if (iac.getOrderstatus().equals(InsOrderStatusEnum.WAIT_AUDIT.getCode())) {
             if (iac.getOrderstatus().equals(InsOrderStatusEnum.WAIT_AUDIT.getCode())) {
@@ -305,7 +306,8 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
                 //单商
                 //单商
                 boolean syBoo = null != syDataDTO && null == jqDataDTO && syDataDTO.getUnderwriteFlag().equals("1");
                 boolean syBoo = null != syDataDTO && null == jqDataDTO && syDataDTO.getUnderwriteFlag().equals("1");
                 //交商
                 //交商
-                boolean jqSyBoo = null != syDataDTO && null != jqDataDTO && syDataDTO.getUnderwriteFlag().equals("1") && jqDataDTO.getUnderwriteFlag().equals("1");
+                boolean jqSyBoo =
+                        null != syDataDTO && null != jqDataDTO && syDataDTO.getUnderwriteFlag().equals("1") && jqDataDTO.getUnderwriteFlag().equals("1");
                 if (jqBoo || syBoo || jqSyBoo) {
                 if (jqBoo || syBoo || jqSyBoo) {
                     iac.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
                     iac.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
                     //更新支付链接
                     //更新支付链接
@@ -397,7 +399,9 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
             try {
             try {
                 FilePart file1 = new FilePart("file", new File(a.getFilePath()));
                 FilePart file1 = new FilePart("file", new File(a.getFilePath()));
 
 
-                Part[] parts = {file1, new StringPart("businessNo", formMap.get("businessNo").toString()), new StringPart("operatorCode", formMap.get("operatorCode").toString()), new StringPart("comCode", formMap.get("comCode").toString()), new StringPart("fileGroup", formMap.get("fileGroup").toString())};
+                Part[] parts = {file1, new StringPart("businessNo", formMap.get("businessNo").toString()), new StringPart("operatorCode",
+                        formMap.get("operatorCode").toString()), new StringPart("comCode", formMap.get("comCode").toString()),
+                        new StringPart("fileGroup", formMap.get("fileGroup").toString())};
 
 
                 String result = HttpUtil.sendPostFromFile(parts, properties.getUploadUrl());
                 String result = HttpUtil.sendPostFromFile(parts, properties.getUploadUrl());
                 if (StringUtils.isEmpty(result)) {
                 if (StringUtils.isEmpty(result)) {
@@ -808,20 +812,24 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
                 CarInfoVo carInfo = yaQuoteInfoVo.getCarInfo();
                 CarInfoVo carInfo = yaQuoteInfoVo.getCarInfo();
 //                //匹配车型
 //                //匹配车型
                 //车辆年款不能超过注册日期
                 //车辆年款不能超过注册日期
-                List<CarPriceMuchResp.DataDTO.CarsDTO> vehicleInfoList = respMuch.getData().getCars().stream().filter(a -> DateTimeUtil.dateIsAfter(carInfo.getRegisterDate(), a.getCarYear())).collect(Collectors.toList());
+                List<CarPriceMuchResp.DataDTO.CarsDTO> vehicleInfoList =
+                        respMuch.getData().getCars().stream().filter(a -> DateTimeUtil.dateIsAfter(carInfo.getRegisterDate(),
+                                a.getCarYear())).collect(Collectors.toList());
 
 
                 //匹配的车辆信息数据  为空
                 //匹配的车辆信息数据  为空
                 if (CollUtil.isEmpty(vehicleInfoList)) {
                 if (CollUtil.isEmpty(vehicleInfoList)) {
                     confirmCarMuch = respMuch.getData().getCars().get(0);
                     confirmCarMuch = respMuch.getData().getCars().get(0);
                 } else {
                 } else {
                     //匹配的车辆信息数据
                     //匹配的车辆信息数据
-                    CarPriceMuchResp.DataDTO.CarsDTO matchVehicleInfo = vehicleInfoList.stream().filter(a -> a.getCarYear().equals(carInfo.getPurchasePrice())).findFirst().orElse(null);
+                    CarPriceMuchResp.DataDTO.CarsDTO matchVehicleInfo =
+                            vehicleInfoList.stream().filter(a -> a.getCarYear().equals(carInfo.getPurchasePrice())).findFirst().orElse(null);
                     if (null != matchVehicleInfo) {
                     if (null != matchVehicleInfo) {
                         confirmCarMuch = matchVehicleInfo;
                         confirmCarMuch = matchVehicleInfo;
                     } else {
                     } else {
                         //匹配的车辆信息数据里  未匹配成功   默认选择第一条
                         //匹配的车辆信息数据里  未匹配成功   默认选择第一条
                         //排序  年款降序  金额升序
                         //排序  年款降序  金额升序
-                        vehicleInfoList = vehicleInfoList.stream().sorted(Comparator.comparing(CarPriceMuchResp.DataDTO.CarsDTO::getCarYear).thenComparing((o1, o2) -> Integer.compare(StringUtils.toInt(o2.getCarYear()), StringUtils.toInt(o1.getCarYear()))).reversed()).collect(Collectors.toList());
+                        vehicleInfoList =
+                                vehicleInfoList.stream().sorted(Comparator.comparing(CarPriceMuchResp.DataDTO.CarsDTO::getCarYear).thenComparing((o1, o2) -> Integer.compare(StringUtils.toInt(o2.getCarYear()), StringUtils.toInt(o1.getCarYear()))).reversed()).collect(Collectors.toList());
 
 
                         confirmCarMuch = vehicleInfoList.get(0);
                         confirmCarMuch = vehicleInfoList.get(0);
                     }
                     }
@@ -853,7 +861,8 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
     /**
     /**
      * 保费计算
      * 保费计算
      */
      */
-    public PremiumResp.DataDTO premiumQuery(BaseQuoteInfoVo yaQuoteInfoVo, CarPriceResp.DataDTO carPriceResult, VinQueryResp.DataDTO vinQ, boolean isNoCar) {
+    public PremiumResp.DataDTO premiumQuery(BaseQuoteInfoVo yaQuoteInfoVo, CarPriceResp.DataDTO carPriceResult, VinQueryResp.DataDTO vinQ
+            , boolean isNoCar) {
 
 
         //请求信息列表
         //请求信息列表
         List<String> requestInfoList = new ArrayList<>();
         List<String> requestInfoList = new ArrayList<>();
@@ -861,28 +870,28 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         //构造请求参数
         //构造请求参数
         PremiumReq req = PremiumReq.buildQuoteParam(yaQuoteInfoVo, carPriceResult, vinQ, isNoCar);
         PremiumReq req = PremiumReq.buildQuoteParam(yaQuoteInfoVo, carPriceResult, vinQ, isNoCar);
         PremiumResp resp;
         PremiumResp resp;
-        StringBuilder flag = new StringBuilder();
 
 
         for (; ; ) {
         for (; ; ) {
             resp = guorenRequestApiComponent.request(req, PlatformInterfaceCode.API_IIRBT00004, PremiumResp.class);
             resp = guorenRequestApiComponent.request(req, PlatformInterfaceCode.API_IIRBT00004, PremiumResp.class);
             req.getCi().getPrpTmain().setAnswer(null);
             req.getCi().getPrpTmain().setAnswer(null);
             req.getBi().getPrpTmain().setAnswer(null);
             req.getBi().getPrpTmain().setAnswer(null);
             //1、 交强险重复投保 替换时间
             //1、 交强险重复投保 替换时间
-            boo = guorenDuplicateInsuranceComponent.processor(resp, requestInfoList, req);
+            boo = GuorenDuplicateInsuranceComponent.processor(resp, requestInfoList, req);
             if (boo) {
             if (boo) {
-                flag.append("重复投保处理 |");
                 continue;
                 continue;
             }
             }
 
 
+            boo = GuorenDuplicateInsuranceComponent.theCheckCodeIsWrong(resp);
+            if (boo) {
+                continue;
+            }
             //2、 转保
             //2、 转保
-            boo = buildCheckCodeParam(resp, requestInfoList, req);
+            boo = GuorenDuplicateInsuranceComponent.buildCheckCodeParam(resp, requestInfoList, req);
             if (boo) {
             if (boo) {
-                flag.append("转保处理 |");
+                continue;
             }
             }
 
 
-            if (!boo) {
-                break;
-            }
+            break;
         }
         }
 
 
         resp.getData().setCiStartDate(req.getCi().getPrpTmain().getStartDate());
         resp.getData().setCiStartDate(req.getCi().getPrpTmain().getStartDate());
@@ -917,8 +926,10 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
     @Override
     @Override
     public List<NonAutoInsuranceList> gainNonAutoInsList(NonAutoInsuranceQueryVo nonAutoInsuranceQueryVo) {
     public List<NonAutoInsuranceList> gainNonAutoInsList(NonAutoInsuranceQueryVo nonAutoInsuranceQueryVo) {
         // 1 构造非车请求
         // 1 构造非车请求
-        NonAutoInsuranceRequest nonAutoInsuranceRequest = new NonAutoInsuranceRequest(nonAutoInsuranceQueryVo.getGoodsCode(), properties.getChannelCode());
-        NonAutoInsResp resp = guorenRequestApiComponent.request(nonAutoInsuranceRequest, PlatformInterfaceCode.API_IIIRBT00053, NonAutoInsResp.class);
+        NonAutoInsuranceRequest nonAutoInsuranceRequest = new NonAutoInsuranceRequest(nonAutoInsuranceQueryVo.getGoodsCode(),
+                properties.getChannelCode());
+        NonAutoInsResp resp = guorenRequestApiComponent.request(nonAutoInsuranceRequest, PlatformInterfaceCode.API_IIIRBT00053,
+                NonAutoInsResp.class);
         // 2 构造返回参数
         // 2 构造返回参数
         NonAutoInsResp.DataDTO data = resp.getData();
         NonAutoInsResp.DataDTO data = resp.getData();
         // 2.1 无法获取数据
         // 2.1 无法获取数据
@@ -931,7 +942,8 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
             BeanUtils.copyProperties(prodListDTO, nonAutoInsuranceList);
             BeanUtils.copyProperties(prodListDTO, nonAutoInsuranceList);
             NonAutoInsResp.DataDTO.ProdListDTO.ProdRiskListDTO prodRiskListDTO = prodListDTO.getProdRiskList().get(0);
             NonAutoInsResp.DataDTO.ProdListDTO.ProdRiskListDTO prodRiskListDTO = prodListDTO.getProdRiskList().get(0);
             String riskCode = prodRiskListDTO.getRiskCode();
             String riskCode = prodRiskListDTO.getRiskCode();
-            List<NonAutoInsResp.DataDTO.ProdListDTO.ProdRiskListDTO.ProdCvgLiabListDTO> prodCvgLiabList = prodRiskListDTO.getProdCvgLiabList();
+            List<NonAutoInsResp.DataDTO.ProdListDTO.ProdRiskListDTO.ProdCvgLiabListDTO> prodCvgLiabList =
+                    prodRiskListDTO.getProdCvgLiabList();
             nonAutoInsuranceList.setProdCvgLiabList(prodCvgLiabList);
             nonAutoInsuranceList.setProdCvgLiabList(prodCvgLiabList);
             nonAutoInsuranceList.setRiskCode(riskCode);
             nonAutoInsuranceList.setRiskCode(riskCode);
             nonAutoInsuranceLists.add(nonAutoInsuranceList);
             nonAutoInsuranceLists.add(nonAutoInsuranceList);
@@ -946,58 +958,17 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
      * @author: lig
      * @author: lig
      * @date: 2023-09-28
      * @date: 2023-09-28
      */
      */
-    public NonAutoInsOrderResponse nonAutoInsOrder(BaseQuoteInfoVo yaQuoteInfoVo, GuorenAccidentalDrivingVo accidentalDrivingVo, String carPriceUuid, ChannelInfoDto channelInfo, VinQueryResp.DataDTO vinQ) {
+    public NonAutoInsOrderResponse nonAutoInsOrder(BaseQuoteInfoVo yaQuoteInfoVo, GuorenAccidentalDrivingVo accidentalDrivingVo,
+                                                   String carPriceUuid, ChannelInfoDto channelInfo, VinQueryResp.DataDTO vinQ) {
         //构造请求参数
         //构造请求参数
-        NonAutoInsOrderReq nonAutoInsOrderReq = new NonAutoInsOrderReq(yaQuoteInfoVo, vinQ, accidentalDrivingVo, channelInfo, carPriceUuid, properties.getChannelCode());
+        NonAutoInsOrderReq nonAutoInsOrderReq = new NonAutoInsOrderReq(yaQuoteInfoVo, vinQ, accidentalDrivingVo, channelInfo,
+                carPriceUuid, properties.getChannelCode());
         return guorenRequestApiComponent.request(nonAutoInsOrderReq, PlatformInterfaceCode.API_IIIRBT00054, NonAutoInsOrderResponse.class);
         return guorenRequestApiComponent.request(nonAutoInsOrderReq, PlatformInterfaceCode.API_IIIRBT00054, NonAutoInsOrderResponse.class);
     }
     }
 
 
-    /**
-     * 构造交强险  商业险 转报code
-     *
-     * @author: lig
-     * @date: 2023年10月13日 0013
-     */
-    private boolean buildCheckCodeParam(PremiumResp resp, List<String> requestInfoList, PremiumReq req) {
-        String ciCheckCode = resp.getData().getCicheckCode();
-        String biCheckCode = resp.getData().getBicheckCode();
-        if (StringUtils.isNotEmpty(ciCheckCode) || StringUtils.isNotEmpty(biCheckCode)) {
-            CheckCodeResp ccResp = gainCheckCode(ciCheckCode, biCheckCode);
-            req.getCi().getPrpTmain().setAnswer(ccResp.getJqImageCode());
-            req.getBi().getPrpTmain().setAnswer(ccResp.getSyImageCode());
-            requestInfoList.add("转保单");
-            return true;
-        }
-        return false;
-
-
-    }
-
-    /**
-     * 获取图片验证码 校验的code
-     *
-     * @author: lig
-     * @date: 2023年10月13日 0013
-     */
-    private CheckCodeResp gainCheckCode(String jqImageStr, String syImageStr) {
-        Map<String, String> bodyMap = new HashMap<>();
-        bodyMap.put("jqImage", StringUtils.toString(jqImageStr, ""));
-        bodyMap.put("syImage", StringUtils.toString(syImageStr, ""));
-        String sendBody = JsonUtils.toJson(bodyMap);
-        String ocrStr = HttpUtil.sendPost("http://47.92.254.66:8088/getres", sendBody);
-        return JSONUtil.toBean(ocrStr, CheckCodeResp.class);
-
-    }
 
 
-    @Data
-    class CheckCodeResp {
 
 
-        @JsonProperty(value = "jqImageCode")
-        String jqImageCode;
 
 
-        @JsonProperty(value = "syImageCode")
-        String syImageCode;
 
 
-    }
 
 
 }
 }