Parcourir la source

泰山-处理报价返回异常乱码信息未返回正确消息的问题

lixiaolong il y a 2 mois
Parent
commit
3bc93a4b59

+ 6 - 2
tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/component/TaiShanCrawlerRequestComponent.java

@@ -314,9 +314,13 @@ public class TaiShanCrawlerRequestComponent {
     public TaiShanCrawlerQuotationResponse quotation(TaiShanCrawlerQuotationRequest request, HttpHeaders headers, int repeatNumber) {
         TaiShanCrawlerQuotationResponse response = post(RequestUrl.PRICE, request, TaiShanCrawlerQuotationResponse.class, headers);
 
+        if (response.getResult() == null) {
+            throw new SystemException(response.getMessage() != null ? response.getMessage() : "报价接口返回异常,result为空");
+        }
+
         TaiShanCrawlerQuotationResponse.ResultDTO.ExceptionDTO exception = response.getResult().getException();
-        String errorMessage = response.getResult() != null ? exception.getMsg() : response.getMessage();
-        ResultEnum.verify(exception.getCode(), errorMessage);
+        String errorMessage = exception != null ? exception.getMsg() : response.getMessage();
+        ResultEnum.verify(exception != null ? exception.getCode() : null, errorMessage);
 
         // 通过状态码获取处理器处理
         ResponseMessageAbstractHandler responseMessageAbstractHandler =

+ 34 - 9
tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/service/impl/TaiShanCrawlerRequestImpl.java

@@ -113,6 +113,9 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
         // 2.2 计算折旧价格 获取车辆实际价值
         TaiShanCrawlerGetActualValueRequest taiShanCrawlerGetActualValueRequest = new TaiShanCrawlerGetActualValueRequest(quoteVo,modelsDTO);
         TaiShanCrawlerGetActualValueResponse taiShanCrawlerGetActualValueResponse = taiShanCrawlerRequestComponent.getActualValue(taiShanCrawlerGetActualValueRequest, headers);
+        if (taiShanCrawlerGetActualValueResponse.getResult() == null) {
+            throw new SystemException("获取车辆实际价值失败:" + taiShanCrawlerGetActualValueResponse.getMessage());
+        }
         String currentValue = taiShanCrawlerGetActualValueResponse.getResult().getActualValue();
         log.info("车辆当前价值:{}", currentValue);
 
@@ -135,12 +138,22 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
         log.info("taiShanCrawlerQuotationRequest参数的值:{}", JSON.toJSONString(taiShanCrawlerQuotationRequest));
         TaiShanCrawlerQuotationResponse taiShanCrawlerQuotationResponse = taiShanCrawlerRequestComponent.quotation(taiShanCrawlerQuotationRequest, headers,CIRCULATE_NUMBER);
         log.info("taiShanCrawlerQuotationResponse参数的值:{}", JSON.toJSONString(taiShanCrawlerQuotationResponse));
-        TaiShanCrawlerQuotationResponse.ResultDTO.ExceptionDTO exception = taiShanCrawlerQuotationResponse.getResult().getException();
         String errMsg = null;
         TaiShanCrawlerQuotationSaveResponse taiShanCrawlerQuotationSaveResponse = null;
         TaiShanCrawlerRiskManagementResponse taiShanCrawlerRiskManagementResponse = null;
         boolean success = false;
-        if (exception.getCode().equals("H1")){
+
+        if (taiShanCrawlerQuotationResponse.getResult() == null) {
+            errMsg = taiShanCrawlerQuotationResponse.getMessage();
+            throw new SystemException(errMsg != null ? errMsg : "报价接口返回异常,result为空");
+        }
+
+        TaiShanCrawlerQuotationResponse.ResultDTO.ExceptionDTO exception = taiShanCrawlerQuotationResponse.getResult().getException();
+        if (exception == null || exception.getCode() == null) {
+            throw new SystemException("报价接口返回异常:缺少异常信息");
+        }
+
+        if ("H1".equals(exception.getCode())){
             String colorCode = quoteVo.getCarInfoVo().getColorCode();
             if(org.apache.commons.lang3.StringUtils.isBlank(colorCode)){
                 taiShanCrawlerQuotationRequest.getVehicleInfo().setCarColor("01");
@@ -166,9 +179,13 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
                         // 重新报价
                         taiShanCrawlerQuotationResponse = taiShanCrawlerRequestComponent.quotation(taiShanCrawlerQuotationRequest, headers, CIRCULATE_NUMBER);
                         log.info("泰山报价重复投保后报价响应: {}", JSON.toJSONString(taiShanCrawlerQuotationResponse));
+                        if (taiShanCrawlerQuotationResponse.getResult() == null) {
+                            errMsg = taiShanCrawlerQuotationResponse.getMessage();
+                            throw new SystemException(errMsg != null ? errMsg : "重复投保后报价接口返回异常,result为空");
+                        }
                         exception = taiShanCrawlerQuotationResponse.getResult().getException();
-                        if (!exception.getCode().equals("H1")) {
-                            errMsg = exception.getMsg();
+                        if (exception == null || !"H1".equals(exception.getCode())) {
+                            errMsg = exception != null ? exception.getMsg() : "重复投保后报价失败";
                             return TaiShanCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo, null, null, errMsg, false);
                         }
                         // 更新报价信息
@@ -186,18 +203,22 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
             log.info("taiShanCrawlerQuotationSaveResponse参数的值:{}", JSON.toJSONString(taiShanCrawlerQuotationSaveResponse));
             if (taiShanCrawlerQuotationSaveResponse.getResult() != null) {
                 TaiShanCrawlerQuotationSaveResponse.Result.Exception saveException = taiShanCrawlerQuotationSaveResponse.getResult().getException();
-                if (saveException.getCode().equals("H1")){
+                if (saveException != null && "H1".equals(saveException.getCode())){
                     TaiShanCrawlerOrder taiShanCrawlerOrder = new TaiShanCrawlerOrder();
                     taiShanCrawlerOrder.setOrdersNo(quoteVo.getOrder().getOrdersNo());
                     taiShanCrawlerOrderService.save(taiShanCrawlerQuotationSaveResponse, taiShanCrawlerOrder);
                     success = true;
 
                     //风险管控
-                    String proposalNo = taiShanCrawlerQuotationSaveResponse.getResult().getCompulsoryInsurance().getProductInfo().getProposalNo();
+                    TaiShanCrawlerQuotationSaveResponse.Result.CompulsoryInsurance compulsoryIns = taiShanCrawlerQuotationSaveResponse.getResult().getCompulsoryInsurance();
+                    if (compulsoryIns == null || compulsoryIns.getProductInfo() == null) {
+                        throw new SystemException("保存报价成功但获取交强险产品信息失败");
+                    }
+                    String proposalNo = compulsoryIns.getProductInfo().getProposalNo();
                     TaiShanCrawlerRiskManagementRequest taiShanCrawlerRiskManagementRequest = new TaiShanCrawlerRiskManagementRequest(proposalNo);
                     taiShanCrawlerRiskManagementResponse = taiShanCrawlerRequestComponent.getRiskManagement(taiShanCrawlerRiskManagementRequest, headers);
                 }else{
-                    errMsg = saveException.getMsg();
+                    errMsg = saveException != null ? saveException.getMsg() : taiShanCrawlerQuotationSaveResponse.getMessage();
                     throw new SystemException(errMsg);
                 }
             }else {
@@ -205,7 +226,7 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
                 throw new SystemException(errMsg);
             }
         }else{
-            errMsg = taiShanCrawlerQuotationResponse.getResult() != null ? exception.getMsg() : taiShanCrawlerQuotationResponse.getMessage();
+            errMsg = exception != null ? exception.getMsg() : taiShanCrawlerQuotationSaveResponse.getMessage();
             throw new SystemException(errMsg);
         }
         return TaiShanCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo,
@@ -640,7 +661,11 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
         log.info("taiShanCrawlerOrderQueryResponse对象的值:{}", JSON.toJSONString(taiShanCrawlerOrderQueryResponse));
         OrderStatusResultVo orderStatusResultVo = new OrderStatusResultVo();
         if ("200".equals(taiShanCrawlerOrderQueryResponse.getCode())) {
-            //获取订单状态
+            if (taiShanCrawlerOrderQueryResponse.getResult() == null
+                    || taiShanCrawlerOrderQueryResponse.getResult().getList() == null
+                    || taiShanCrawlerOrderQueryResponse.getResult().getList().isEmpty()) {
+                return orderStatusResultVo;
+            }
             String orderStatus = taiShanCrawlerOrderQueryResponse.getResult().getList().get(0).getStatus();
             //将保司返回的订单状态转换为系统定义的订单状态枚举类型
             InsOrderStatusEnum orderStatusEnum = null;