Преглед на файлове

解决泰康核保提示订单状态异常,请联系管理员问题

wangrq преди 3 седмици
родител
ревизия
627b713610

+ 5 - 5
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKHttpAPIService.java

@@ -938,7 +938,7 @@ public class TKHttpAPIService {
      *
      * @return
      */
-    public TKEntranceFor000038Result entranceFor000038(String token, String tplatformId, String fromId, String orderId) {
+    public TKEntranceFor000038Result.Response entranceFor000038(String token, String tplatformId, String fromId, String orderId) {
         TKEntranceFor000038Param param = new TKEntranceFor000038Param();
         param.setChannelCode("OffWeb");
         param.setTplatformId(tplatformId);
@@ -952,12 +952,12 @@ public class TKHttpAPIService {
         param.setChannelEngages(new ArrayList<>());
 
         TKEntranceFor000038Result.Response response = entranceForDecrypt(token, param, "000038", TKEntranceFor000038Result.Response.class);
-        if (response.getStatus() != 1) {
-            throw new SystemException(response.getMessage());
-        }
+        // if (response.getStatus() != 1) {
+        //     throw new SystemException(response.getMessage());
+        // }
 
         checkResponseUnknownField(response);
-        return response.getData();
+        return response;
     }
 
 

+ 2 - 12
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java

@@ -1185,7 +1185,7 @@ public class TKSimpleService {
      * @param insureInfo
      * @return
      */
-    public TKEntranceFor000038Result orderSubmit(TKLoginSession session, String mainOrderId, TKInsureInfo insureInfo) {
+    public TKEntranceFor000038Result.Response orderSubmit(TKLoginSession session, String mainOrderId, TKInsureInfo insureInfo) {
         // 方法入口日志:打印订单号便于追踪整个核保提交流程
         log.info("orderSubmit 开始执行,mainOrderId={}", mainOrderId);
 
@@ -1211,19 +1211,9 @@ public class TKSimpleService {
 
         // 步骤3:调用 entranceFor000038,获取核保结果
         log.info("orderSubmit 开始调用 entranceFor000038,mainOrderId={}", mainOrderId);
-        TKEntranceFor000038Result tkEntranceFor000038Result = httpService.entranceFor000038(token, tplatformId, fromId, mainOrderId);
+        TKEntranceFor000038Result.Response tkEntranceFor000038Result = httpService.entranceFor000038(token, tplatformId, fromId, mainOrderId);
         log.info("orderSubmit entranceFor000038 调用完成,tkEntranceFor000038Result={}", JSONObject.toJSONString(tkEntranceFor000038Result));
 
-        // 步骤4:调用 entranceFor000021,为获取支付链接做预处理 TODO
-        log.info("orderSubmit 开始调用 entranceFor000021(支付链接预处理),mainOrderId={}", mainOrderId);
-        TKEntranceFor000021Result tkEntranceFor000021Result = httpService.entranceFor000021(token, fromId, mainOrderId);
-        log.info("orderSubmit entranceFor000021 调用完成,tkEntranceFor000021Result={}", JSONObject.toJSONString(tkEntranceFor000021Result));
-
-        // 步骤5:调用 entranceFor000052,基于核保结果做后续处理
-        log.info("orderSubmit 开始调用 entranceFor000052,mainOrderId={}", mainOrderId);
-        TKEntranceFor000052Result tkEntranceFor000052Result = httpService.entranceFor000052(token, tkEntranceFor000038Result);
-        log.info("orderSubmit entranceFor000052 调用完成,tkEntranceFor000052Result={}", JSONObject.toJSONString(tkEntranceFor000052Result));
-
         // 方法出口日志:标记整个流程执行结束
         log.info("orderSubmit 执行完成,mainOrderId={}", mainOrderId);
         return tkEntranceFor000038Result;

+ 20 - 8
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/impl/TKQuotationBaseServiceImpl.java

@@ -43,6 +43,7 @@ import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 @QuoteCrawlerService(value = InsuranceCode.INSURANCE_TKIC)
 @RequiredArgsConstructor
@@ -187,24 +188,35 @@ public class TKQuotationBaseServiceImpl implements TKQuotationBaseService {
         TKInsureInfo insureInfo = tkSimpleService.dataCreateInsureInfo(initProposalResult, insOrdersCarUserInfo);
         log.info("车主信息:{}", new Gson().toJson(insureInfo));
         // # 车险投保单报价下单
-        TKEntranceFor000038Result tkEntranceFor000038Result = tkSimpleService.orderSubmit(session, preciseInitResult.getMainOrderId(), insureInfo);
+        TKEntranceFor000038Result.Response tkEntranceFor000038Result = tkSimpleService.orderSubmit(session, preciseInitResult.getMainOrderId(), insureInfo);
         UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
-        if (tkEntranceFor000038Result == null) {
-            underwritingResultsVo.setUnderwritingResult("核保失败");
+        if (tkEntranceFor000038Result == null || tkEntranceFor000038Result.getStatus() == 0) {
+            underwritingResultsVo.setUnderwritingResult("核保失败: " + Objects.requireNonNull(tkEntranceFor000038Result).getMessage());
             underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
             tkCrawlerOrderService.save(underwritingVo, underwritingResultsVo, preciseInitResult.getMainOrderId(), false);
             return underwritingResultsVo;
         }
+
+        // 调用 entranceFor000021,为获取支付链接做预处理 TODO
+        log.info("orderSubmit 开始调用 entranceFor000021(支付链接预处理),mainOrderId={}", preciseInitResult.getMainOrderId());
+        TKEntranceFor000021Result tkEntranceFor000021Result = httpService.entranceFor000021(session.getToken(), session.getFromid(), preciseInitResult.getMainOrderId());
+        log.info("orderSubmit entranceFor000021 调用完成,tkEntranceFor000021Result={}", JSONObject.toJSONString(tkEntranceFor000021Result));
+
+        // 调用 entranceFor000052,基于核保结果做后续处理
+        log.info("orderSubmit 开始调用 entranceFor000052,mainOrderId={}", preciseInitResult.getMainOrderId());
+        TKEntranceFor000052Result tkEntranceFor000052Result = httpService.entranceFor000052(session.getToken(), tkEntranceFor000038Result.getData());
+        log.info("orderSubmit entranceFor000052 调用完成,tkEntranceFor000052Result={}", JSONObject.toJSONString(tkEntranceFor000052Result));
+
         // 获取核保返回数据
-        TKOrderData tkOrderData = tkEntranceFor000038Result.getData();
+        TKOrderData tkOrderData = tkEntranceFor000038Result.getData().getData();
 
         // 检查 resultType 判断核保是否自核通过(与Python逻辑一致)
         String resultType = tkOrderData.getResultType();
         if (!"自核通过".equals(resultType)) {
             // 非自核通过,判定为人工核保或其他状态
             String spResMsg = tkOrderData.getSpResMsg();
-            String checkReason = tkEntranceFor000038Result.getCheckReason() != null
-                    ? tkEntranceFor000038Result.getCheckReason().toString()
+            String checkReason = tkEntranceFor000038Result.getData().getCheckReason() != null
+                    ? tkEntranceFor000038Result.getData().getCheckReason().toString()
                     : "";
             String msg = (spResMsg != null && !spResMsg.isEmpty()) ? spResMsg : ("请联系运维人员处理" + checkReason);
             underwritingResultsVo.setUnderwritingResult("人工审核返回:" + msg);
@@ -230,8 +242,8 @@ public class TKQuotationBaseServiceImpl implements TKQuotationBaseService {
         // 核保状态
         underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
         // 验车标志,需要验车,需要上传影像(仅检查 checkCarFlag 是否为 1)
-        if ("1".equals(tkEntranceFor000038Result.getCheckCarFlag())) {
-            buildCheckCar(tkEntranceFor000038Result, underwritingVo, preciseInitResult, underwritingResultsVo);
+        if ("1".equals(tkEntranceFor000038Result.getData().getCheckCarFlag())) {
+            buildCheckCar(tkEntranceFor000038Result.getData(), underwritingVo, preciseInitResult, underwritingResultsVo);
         }
         tkCrawlerOrderService.save(underwritingVo, underwritingResultsVo, preciseInitResult.getMainOrderId(), true);
         log.info("泰康核保流程结束,结果:{}", JSONObject.toJSONString(underwritingResultsVo));