Переглянути джерело

华泰-报价、核保逻辑优化

lixiaolong 3 місяців тому
батько
коміт
e9e9192de5

+ 19 - 13
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/service/Impl/HuaTaiCrawlerRequestImpl.java

@@ -823,7 +823,9 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
         HtCrawlerConfigureParameters params = ConfigureParametersConversion.conversionEntity(
                 HtCrawlerConfigureParameters.class, attr.getConfigInfo());
         doLoginCookie(attr);
-
+        UnderwritingResultsVo r = new UnderwritingResultsVo();
+        r.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
+        r.setUnderwritingResult("核保失败");
         HtCrawlerOrder order = orderService.findByOrdersNo(vo.getOrder().getOrdersNo());
         if("N".equals(order.getCiCategory()) || "6C".equals(order.getCiCategory())) throw new SystemException("核保失败-------强制下发修改意见,1.N类、6C类业务,请确认业务类别后再提交核保。");
         vo.getOrder().setQuoteNo(order.getQuotationRelaNo());
@@ -833,12 +835,14 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
         String res = req.submit2(submit, req.getHeaders());
         log.info("提交核保结果: {}", res);
 
-        if(res.contains("<html>")) throw new SystemException("核保失败, 服务器繁忙, 请稍后重试");
-
+        if(res.contains("<html>")) {
+            r.setUnderwritingResult("核保失败, 服务器繁忙, 请稍后重试");
+            return r;
+        }
         if (res.contains("起保时间不正确")) {
-            throw new SystemException("起保时间不正确-------即时起保分钟数必须为00/15/30/45\n请重新选择起保时间!");
+            r.setUnderwritingResult("起保时间不正确-------即时起保分钟数必须为00/15/30/45\n请重新选择起保时间!");
+            return r;
         }
-
         Map<String, Object> map = new HashMap<>();
         try {
             // 忽略未知字段
@@ -858,18 +862,18 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
 
             map = reader.readValue(res);
         } catch (JsonProcessingException e) {
-            throw new SystemException("核保失败, {}", convertResponseMsg(res));
+            r.setUnderwritingResult(convertResponseMsg(res));
+            return r;
         }
+        if (res.contains("已通过核保未实收") || "Y".equals(str(map, "isPassHB"))) return handlePassedUnderwriting(order, params, vo, map);
 
         if (!"1,2,3,4,Y1,Y2,Y3".contains(order.getCiCategory()) || "Y".equals(str(map, "isOver")) || "Y".equals(str(map, "isOver1"))
                 || "重新计算保费".equals(str(map, "MSG")) || (res.contains("下发修改意见") && !res.contains("isPassHB")) || res.contains("转人工意见")) {
-            throw new SystemException("核保失败-------" + convertResponseMsg(res));
+            r.setUnderwritingResult("核保失败-------" + convertResponseMsg(res));
+            return r;
         }
-        if (res.contains("转人工")) return handleManualUnderwriting(order, params);
-        if (res.contains("已通过核保未实收") || "Y".equals(str(map, "isPassHB"))) return handlePassedUnderwriting(order, params, vo);
-
-        UnderwritingResultsVo r = new UnderwritingResultsVo();
-        r.setUnderwritingStatus(InsOrderStatusEnum.WAIT_AUDIT);
+        // 转人工处理
+        if (res.contains("infomsg\":\"") && res.contains("htmlMsgTeam\":\"")) return handleManualUnderwriting(order, params);
         return r;
     }
 
@@ -905,7 +909,7 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
         } catch (Exception e) { throw new SystemException(e.getMessage()); }
     }
 
-    private UnderwritingResultsVo handlePassedUnderwriting(HtCrawlerOrder order, HtCrawlerConfigureParameters params, UnderwritingVo vo) {
+    private UnderwritingResultsVo handlePassedUnderwriting(HtCrawlerOrder order, HtCrawlerConfigureParameters params, UnderwritingVo vo, Map<String, Object> map) {
         HtCrawlerPaymentLinkResponse pl = queryPaymentLink(order, params, new PaymentLinkVo());
         log.info("paymentLinkResponse: {}", JSONObject.toJSONString(pl));
         vo.getInsOrders().setPayLink(pl.getImg());
@@ -913,6 +917,8 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
         vo.getInsOrders().setCompanyOrderNo(order.getQuotationRelaNo());
         UnderwritingResultsVo r = new UnderwritingResultsVo();
         r.setPaymentLink(pl.getImg());
+        r.setJqPolicyno(map.get("jqProposalno") == null ? "" : map.get("jqProposalno").toString());
+        r.setSyPolicyno(map.get("syProposalno") == null ? "" : map.get("syProposalno").toString());
         r.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
         return r;
     }