Răsfoiți Sursa

渤海报价报错bug处理
ESB车型及纯风险保费查询服务返回错误信息_选择车辆的行业车型编码(BBWABBUA0005)在平台不存在!请使用正确的行业车型编码(BBWABBUB0007)"

hxl13994548489 2 ani în urmă
părinte
comite
ad592435f9

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

@@ -128,7 +128,8 @@ public class BoHaiRequestApiComponent {
         if (ResponseCode.R_Z00001.getCode().equals(response.getResponseCode())) {
             return response;
         }
-        throw new SystemException(response.getResponseMsg());
+       // throw new SystemException(response.getResponseMsg());
+        return response;
     }
 
     /**

+ 6 - 1
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/VehicleTypeQueryRequest.java

@@ -1,7 +1,6 @@
 package com.ydtech.modules.order.entity.api.bohai.request;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
 import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -50,6 +49,12 @@ public class VehicleTypeQueryRequest extends BoHaiBaseRequest {
     @JsonProperty("newVehicleFlag")
     private String newVehicleFlag;
 
+    /**
+      * add by hxl  2024-04-03  添加行业车型编码
+     */
+    @JsonProperty("modelCode")
+    private String modelCode;
+
     public VehicleTypeQueryRequest(BoHaiConfigureParameters parameters, String vehicleBrandModelKey, String orderNo) {
         this.setBaseParam(parameters, orderNo);
         this.vehicleBrandModelKey = vehicleBrandModelKey;

+ 48 - 16
src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java

@@ -30,6 +30,7 @@ import com.ydtech.modules.order.service.BoHaiOrderApiService;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.order.service.InsTaskImagesService;
+import com.ydtech.modules.order.utils.StringSubStringUtils;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.utils.CalculateUtils;
@@ -38,9 +39,7 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -108,13 +107,50 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         GenerateOrderNoResponse generateOrderNoResponse = boHaiRequestApiComponent.generateOrderNo(generateOrderNoRequest,
                 parameters.getSysSourceCode());
         String orderNo = generateOrderNoResponse.getData().getOrderNo();
-
-        // 2 车型查询接口
         CarInfoVo carInfo = quoteInfoVo.getCarInfo();
         VehicleTypeQueryRequest vehicleTypeQueryRequest = new VehicleTypeQueryRequest(parameters, carInfo.getModelcname(), orderNo);
-        VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO =
-                boHaiRequestApiComponent.vehicleTypeQuery(vehicleTypeQueryRequest, parameters.getSysSourceCode(), carInfo);
+        //add by hxl   2024-04-03   调用车辆型号查询
+        // 调用 车辆查询和车辆确认接口
+        VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO=new VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO();
+        Map<String,Object> map= getVehicleConfirmationResponse(quoteInfoVo, parameters, carInfo, orderNo,vehicleTypeQueryRequest);
+        //调用车型号查询可能会出现多条数据,导致车辆确认报错  ESB车型及纯风险保费查询服务返回错误信息_选择车辆的行业车型编码(BBWABBUA0005)在平台不存在!请使用正确的行业车型编码(BBWABBUB0007)"
+        //通过报错信息截取出正确的行业车型编
+        vehicleModelsDTO = (VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO) map.get("vehicleModelsDTO");
+        VehicleConfirmationResponse vehicleConfirmationResponse= (VehicleConfirmationResponse) map.get("vehicleConfirmationResponse");
+        if (ResponseCode.R_Z00004.getCode().equals(vehicleConfirmationResponse.getResponseCode())) {
+            String responseMsg = vehicleConfirmationResponse.getResponseMsg();
+            if(responseMsg.contains("行业车型编码")){
+                String modelCode = StringSubStringUtils.extractLastParenthesesContent(responseMsg);
+                //清空车辆型号  添加行业车型编码确定唯一车型
+                vehicleTypeQueryRequest.setVehicleBrandModelKey(null);
+                vehicleTypeQueryRequest.setModelCode(modelCode);
+                // 重新调用 车辆查询和车辆确认接口
+                Map<String,Object> map_two= getVehicleConfirmationResponse(quoteInfoVo, parameters, carInfo, orderNo,vehicleTypeQueryRequest);
+                vehicleModelsDTO = (VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO) map_two.get("vehicleModelsDTO");
+                vehicleConfirmationResponse= (VehicleConfirmationResponse) map_two.get("vehicleConfirmationResponse");
+            }
+        }
+
+        // 车辆实际价值
+        String currentValue = vehicleConfirmationResponse.getData().getVehicleModels().get(0).getCurrentValue();
 
+        // 4. 报价接口
+        QuotationRequest quotationRequest = new QuotationRequest(parameters, quoteInfoVo.getRiskList(), quoteInfoVo.getKindList(),
+                currentValue, orderNo, carInfo, quoteVo.getAccidentalDrivingVo());
+        QuotationResponse response = boHaiRequestApiComponent.quotation(quotationRequest, parameters.getSysSourceCode());
+        List<BoHaiQuoteAccidentVo> accidentalDrivingVo = quoteVo.getAccidentalDrivingVo();
+
+        return getQuoteRespVo(response, quoteInfoVo, vehicleModelsDTO, ptlAgreementAttribution, orderNo, accidentalDrivingVo);
+    }
+    /**
+     *  @version 调用车型查询和车辆确认
+     *  @author: hxl
+     *  @Date: 2024/4/3 16:03
+     *  @Description:
+     */
+    public  Map<String,Object>  getVehicleConfirmationResponse(BaseQuoteInfoVo quoteInfoVo, BoHaiConfigureParameters parameters,CarInfoVo carInfo,String orderNo,VehicleTypeQueryRequest vehicleTypeQueryRequest) throws Exception {
+        // 2 车型查询接口
+        VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO = boHaiRequestApiComponent.vehicleTypeQuery(vehicleTypeQueryRequest, parameters.getSysSourceCode(), carInfo);
         // 3 车辆确认接口
         // 车主信息
         CustomerInfoVo ownerInfo = quoteInfoVo.getOwnerInfo();
@@ -130,17 +166,13 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
                 orderNo, ownerInfoArea, insuredPersonArea, policyHolderArea);
         VehicleConfirmationResponse vehicleConfirmationResponse = boHaiRequestApiComponent.vehicleConfirmation(vehicleConfirmationReqeust
                 , parameters.getSysSourceCode());
-        // 车辆实际价值
-        String currentValue = vehicleConfirmationResponse.getData().getVehicleModels().get(0).getCurrentValue();
+        Map<String,Object> map=new HashMap<>();
+        map.put("vehicleModelsDTO",vehicleModelsDTO);
+        map.put("vehicleConfirmationResponse",vehicleConfirmationResponse);
+        return map;
+    }
 
-        // 4. 报价接口
-        QuotationRequest quotationRequest = new QuotationRequest(parameters, quoteInfoVo.getRiskList(), quoteInfoVo.getKindList(),
-                currentValue, orderNo, carInfo, quoteVo.getAccidentalDrivingVo());
-        QuotationResponse response = boHaiRequestApiComponent.quotation(quotationRequest, parameters.getSysSourceCode());
-        List<BoHaiQuoteAccidentVo> accidentalDrivingVo = quoteVo.getAccidentalDrivingVo();
 
-        return getQuoteRespVo(response, quoteInfoVo, vehicleModelsDTO, ptlAgreementAttribution, orderNo, accidentalDrivingVo);
-    }
 
     @Override
     public HttpResult<Object> submitImage(String subOrderNo) throws Exception {

+ 23 - 0
src/main/java/com/ydtech/modules/order/utils/StringSubStringUtils.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.order.utils;
+/**
+ *  @version  截取字符串括号的内容用于渤海提取错误信息中的内容
+ *  @author: hxl
+ *  @Date: 2024/4/3 16:17
+ *  @Description:
+ */
+public class StringSubStringUtils {
+    public static void main(String[] args) {
+        String input = "ESB车型及纯风险保费查询服务返回错误信息_选择车辆的行业车型编码(BBWABBUA0005)在平台不存在!请使用正确的行业车型编码(BBWABBUB0007)";
+        String result = extractLastParenthesesContent(input);
+        System.out.println(result);
+    }
+
+    public static String extractLastParenthesesContent(String str) {
+        int startIndex = str.lastIndexOf("(");
+        int endIndex = str.lastIndexOf(")");
+        if (startIndex != -1 && endIndex != -1 && startIndex < endIndex) {
+            return str.substring(startIndex + 1, endIndex);
+        }
+        return "";
+    }
+}