Browse Source

华泰-核保、保单下载、订单状态接口调整

lixiaolong 2 tháng trước cách đây
mục cha
commit
80e244c829

+ 6 - 6
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/entity/Request/HtCrawlerSubmitRequest.java

@@ -29,7 +29,7 @@ public class HtCrawlerSubmitRequest implements Serializable {
         List<InsOrdersCarUserInfo> insOrdersCarUserInfoList = underwritingVo.getInsOrdersCarUserInfoList();
 
         InsOrdersCarUserInfo ownerInfo = null;
-        InsOrdersCarUserInfo applicantInfo = null;
+        InsOrdersCarUserInfo policyInfo = null;
         InsOrdersCarUserInfo insuredInfo = null;
 
         for (InsOrdersCarUserInfo userInfo : insOrdersCarUserInfoList) {
@@ -38,7 +38,7 @@ public class HtCrawlerSubmitRequest implements Serializable {
                     ownerInfo = userInfo;
                     break;
                 case 2:
-                    applicantInfo = userInfo;
+                    policyInfo = userInfo;
                     break;
                 case 3:
                     insuredInfo = userInfo;
@@ -130,10 +130,10 @@ public class HtCrawlerSubmitRequest implements Serializable {
             clauseDTOS.add(clauseDTO);
         }
 
-        boolean isOwnerSameAsInsured = (ownerInfo != null && insuredInfo != null &&
-                ownerInfo.getName().equals(insuredInfo.getName()));
+        boolean isOwnerSameAsPolicy = (ownerInfo != null && policyInfo != null &&
+                ownerInfo.getName().equals(policyInfo.getName()));
 
-        if (isOwnerSameAsInsured) {
+        if (isOwnerSameAsPolicy) {
             this.iisCarOwner = "Y";
             this.beibaorenId = "Y";
         }
@@ -147,7 +147,7 @@ public class HtCrawlerSubmitRequest implements Serializable {
         jxClause.setReadonly("1");
         clauseDTOS.add(jxClause);
 
-        if (!isOwnerSameAsInsured && ownerInfo != null) {
+        if (!isOwnerSameAsPolicy && ownerInfo != null) {
             ClauseDTO ownerClause = new ClauseDTO();
             ownerClause.setChosedE("T0028");
             ownerClause.setClausename("车主约定");

+ 4 - 0
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/entity/po/HtCrawlerOrder.java

@@ -51,5 +51,9 @@ public class HtCrawlerOrder {
      * 支付链接
      */
     private String paymentLink;
+    /**
+     * 投保人姓名
+     */
+    private String policyName;
 
 }

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

@@ -10,6 +10,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.ObjectReader;
 import com.jzg.commons.constants.ProductsType;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
+import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
 import com.jzg.commons.entity.po.jyxSetting;
 import com.jzg.commons.entity.quote.vo.AccidentalDrivingVo;
 import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
@@ -876,6 +877,14 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
 
         order.setJqPolicyno(r.getJqPolicyno());
         order.setSyPolicyno(r.getSyPolicyno());
+        InsOrdersCarUserInfo insOrdersCarUserInfo = null;
+        for (InsOrdersCarUserInfo userInfo : vo.getInsOrdersCarUserInfoList()) {
+            if(userInfo.getPolicyPersonType() == 2) {
+                insOrdersCarUserInfo = userInfo;
+                order.setPolicyName(insOrdersCarUserInfo.getName());
+                break;
+            }
+        }
         orderService.update(order);
         return r;
     }
@@ -982,10 +991,10 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
         String productId = vo.getOrder().getProductId();
         HtCrawlerOrder order = orderService.findByOrdersNo(vo.getOrder().getOrdersNo());
         return ProductsType.PT_0330.getCode().equals(productId)
-                ? downloadPolicy(order.getJqPolicyno(), true) : downloadPolicy(order.getSyPolicyno(), false);
+                ? downloadPolicy(vo, order, order.getJqPolicyno(), true) : downloadPolicy(vo, order, order.getSyPolicyno(), false);
     }
 
-    private DownloadPolicyResultVo downloadPolicy(String no, boolean jq) {
+    private DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo vo,HtCrawlerOrder order, String no, boolean jq) {
         MultiValueMap<String, String> fd = new LinkedMultiValueMap<>();
         fd.add("businessno", no);
         fd.add("riskcode", jq ? "1002" : "1251");
@@ -1012,9 +1021,72 @@ public class HuaTaiCrawlerRequestImpl implements HuaTaiCrawlerRequest {
                 log.info("下载商业保单地址:{}", r.getSyUrl());
             }
         }
+        if (StringUtils.isNotBlank(order.getJyPolicyno())) {
+            // 1. 构造请求头
+            HttpHeaders headers = getHeaders();
+
+            // 2. url + query params(cmd=perDocumentPrint)
+            String baseUrl = "https://cspxp.pc.ehuatai.com";
+            String path = "/htcsp/DocumentPrintAction.do";
+            UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(baseUrl + path);
+            uriBuilder.queryParam("cmd", "perDocumentPrint");
+            String fullUrl = uriBuilder.toUriString();
+
+            // 3. 构造POST表单data(MultiValueMap 对应 form-data)
+            MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
+            formData.add("businessno", order.getJyPolicyno() + ",");
+            formData.add("registeredxml", "");
+            formData.add("printSysflag", "7,");
+            AttributionInformationVo attr = vo.getOrder().getAttributionInformationVo();
+            HtCrawlerConfigureParameters params = ConfigureParametersConversion.conversionEntity(
+                    HtCrawlerConfigureParameters.class, attr.getConfigInfo());
+            // Businesscompanynodecode 传两个相同comCode,表单同一个key传多次
+            formData.add("Businesscompanynodecode", params.getComCode());
+            formData.add("Businesscompanynodecode", params.getComCode());
+            formData.add("productcode", "E007");
+            formData.add("noncarPrintflag", "10");
+            formData.add("documenttype", "3");
+            formData.add("documenttypecode", "");
+            formData.add("documentstartcode", "");
+            // peopleinfo 取 tb_uname
+            String tbUname = order.getPolicyName();
+            formData.add("payrefname", tbUname);
+
+            // 4. 发起POST 请求(复用类内已有的post工具方法)
+            String responseText = post(fullUrl, headers, formData);
+            log.info("feiche response:{}", responseText);
+
+            // 5. 解析返回JSON
+            Map<String, Object> respMap = null;
+            try {
+                respMap = MAPPER.readValue(responseText, new TypeReference<Map<String, Object>>() {});
+            } catch (JsonProcessingException e) {
+                throw new RuntimeException(e);
+            }
+            String printUrl = String.valueOf(respMap.get("printurl"));
+            // 替换 & 为 @
+            printUrl = printUrl.replace("&", "@");
+            // 拼接固定前缀赋值成员变量
+            String jyxPolicyUrl = "http://39.98.41.104:8088/ht/ht_bddownload?values=" + printUrl;
+            r.setJyUrl(jyxPolicyUrl);
+        }
         return r;
     }
 
+    @NotNull
+    private HttpHeaders getHeaders() {
+        HttpHeaders headers = new HttpHeaders();
+        headers.set("Accept", "application/json, text/javascript, */*; q=0.01");
+        headers.set("Accept-Language", "zh-CN,zh;q=0.9");
+        headers.set("Connection", "keep-alive");
+        headers.set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
+        headers.set("Origin", "https://cspxp.pc.ehuatai.com");
+        headers.set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36");
+        headers.set("X-Requested-With", "XMLHttpRequest");
+        headers.set("Cookie", req.getCookie());
+        return headers;
+    }
+
     // ====================== 查询订单状态 ======================
     @Override
     public OrderStatusResultVo queryOrderState(OrderStatusVo vo) {