Просмотр исходного кода

解决泰康核保,系统订单状态与保司订单不一致问题

wangrq 1 месяц назад
Родитель
Сommit
b5ad58d51d

+ 3 - 0
tenant/insurance/quotation-summary/src/main/resources/application-dev.yaml

@@ -225,6 +225,9 @@ zijin:
     # 对接三方渠道验车链接接口
     sendCheckCarLink: http://open.zking.com/api/v1/open/open-aggregate/auth/wanJiaYun/sendCheckCarLink
 
+  crawler:
+    baseUrl: https://kscd.zking.com
+    cookie-path: https://test.baoxianzhanggui.com/ck-api/ck
 
 #    # 为接入方提供获取token服务
 #    accessTokenUrl: https://open.zking.com/api/v1/public/token/getAccessToken

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

@@ -174,6 +174,7 @@ public class TKQuotationBaseServiceImpl implements TKQuotationBaseService {
 
     @Override
     public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) {
+        log.info("泰康开始处理核保流程,参数:{}", JSONObject.toJSONString(underwritingVo));
         AttributionInformationVo attributionInformationVo = underwritingVo.getOrder().getAttributionInformationVo();
         TKLoginSession session = loginSession(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
         PreciseInitResult preciseInitResult = redisCacheUtil.getPreciseInitResult(underwritingVo.getOrder().getOrdersNo());
@@ -194,8 +195,26 @@ public class TKQuotationBaseServiceImpl implements TKQuotationBaseService {
             tkCrawlerOrderService.save(underwritingVo, underwritingResultsVo, preciseInitResult.getMainOrderId(), false);
             return underwritingResultsVo;
         }
-        // 核保通过
+        // 获取核保返回数据
         TKOrderData tkOrderData = tkEntranceFor000038Result.getData();
+
+        // 检查 resultType 判断核保是否自核通过(与Python逻辑一致)
+        String resultType = tkOrderData.getResultType();
+        if (!"自核通过".equals(resultType)) {
+            // 非自核通过,判定为人工核保或其他状态
+            String spResMsg = tkOrderData.getSpResMsg();
+            String checkReason = tkEntranceFor000038Result.getCheckReason() != null
+                    ? tkEntranceFor000038Result.getCheckReason().toString()
+                    : "";
+            String msg = (spResMsg != null && !spResMsg.isEmpty()) ? spResMsg : ("请联系运维人员处理" + checkReason);
+            underwritingResultsVo.setUnderwritingResult("人工审核返回:" + msg);
+            underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
+            tkCrawlerOrderService.save(underwritingVo, underwritingResultsVo, preciseInitResult.getMainOrderId(), true);
+            log.info("泰康核保流程结束(人工核保),结果:{}", JSONObject.toJSONString(underwritingResultsVo));
+            return underwritingResultsVo;
+        }
+
+        // 自核通过,继续处理
         // 核保成功,保单编号缓存
         redisCacheUtil.setCache(tkOrderData.getProposalNo(), underwritingVo.getOrder().getOrdersNo(), "HB");
         // 保司订单号
@@ -210,16 +229,12 @@ public class TKQuotationBaseServiceImpl implements TKQuotationBaseService {
         underwritingResultsVo.setUnderwritingResult("核保成功");
         // 核保状态
         underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
-        // 验车标志,需要验车,需要上传影像
-        if ("1".equals(tkEntranceFor000038Result.getCheckCarFlag()) && "9".equals(tkEntranceFor000038Result.getData().getUnderWriteFlag())) {
+        // 验车标志,需要验车,需要上传影像(仅检查 checkCarFlag 是否为 1)
+        if ("1".equals(tkEntranceFor000038Result.getCheckCarFlag())) {
             buildCheckCar(tkEntranceFor000038Result, underwritingVo, preciseInitResult, underwritingResultsVo);
         }
-        // 人工核保
-        if ("2".equals(tkOrderData.getCarCheckStatus())) {
-            underwritingResultsVo.setUnderwritingResult("人工审核返回:" + tkOrderData.getSpResMsg());
-            underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
-        }
         tkCrawlerOrderService.save(underwritingVo, underwritingResultsVo, preciseInitResult.getMainOrderId(), true);
+        log.info("泰康核保流程结束,结果:{}", JSONObject.toJSONString(underwritingResultsVo));
         return underwritingResultsVo;
     }