Qchen 1 год назад
Родитель
Сommit
d657c44b52

+ 17 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/UnderwritingResultsVo.java

@@ -28,4 +28,21 @@ public class UnderwritingResultsVo implements Serializable {
      */
     private String underwritingResult;
 
+    /**
+     * 交强险投保单号
+     */
+    private String jqApplyNo;
+
+    /**
+     * 商业投保单号
+     */
+    private String syApplyNo;
+
+    /**
+     * 驾意险投保单号
+     */
+    private String jyApplyNo;
+
+
+
 }

+ 11 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -94,7 +94,6 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     private final OrderStateListener orderStateListener;
 
-    private final OrgClient orgClient;
 
 
 
@@ -556,6 +555,17 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         insOrders.setOrderStatus(String.valueOf(status));
 
         insOrdersMapper.updateById(insOrders);
+        InsOrdersPolicy insOrdersPolicy = insOrdersPolicyService.getOne(new LambdaQueryWrapper<InsOrdersPolicy>().eq(InsOrdersPolicy::getOrderNo,underwritingResultsVo.getOrdersNo()));
+        if (underwritingResultsVo.getJqApplyNo() != null) {
+            insOrdersPolicy.setJqApplyNo(underwritingResultsVo.getJqApplyNo());
+        }
+        if (underwritingResultsVo.getSyApplyNo() != null) {
+            insOrdersPolicy.setSyApplyNo(underwritingResultsVo.getSyApplyNo());
+        }
+        if (underwritingResultsVo.getJyApplyNo() != null) {
+            insOrdersPolicy.setJyApplyNo(underwritingResultsVo.getJyApplyNo());
+        }
+        insOrdersPolicyService.updateById(insOrdersPolicy);
     }
 
 

+ 102 - 0
tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/entity/request/YangGuangProposalStatusQueryRequest.java

@@ -0,0 +1,102 @@
+package com.jzg.quotation.yangguang.api.entity.request;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.jzg.commons.entity.orders.po.InsOrdersPolicy;
+import com.jzg.quotation.yangguang.api.entity.YangGuangConfigureParameters;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+/**
+ * @author quchen
+ * @date 2025/4/3 16:23
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+public class YangGuangProposalStatusQueryRequest extends YangGuangBaseRequest{
+    /**
+     * 请求时间
+     */
+    @JSONField(name = "RequestDate")
+    private String RequestDate;
+
+    /**
+     * 请求编码
+     */
+    @JSONField(name = "RequestNo")
+    private String RequestNo;
+
+    /**
+     * 出单机构
+     */
+    @JSONField(name = "ComCode")
+    private String ComCode;
+    /**
+     *  商业险投保单号
+     */
+    @JSONField(name = "BiProposalNo")
+    private String BiProposalNo;
+
+    /**
+     *  交强险投保单号
+     */
+    @JSONField(name = "CiProposalNo")
+    private String CiProposalNo;
+
+    /**
+     *  归属业务员 非必填,目前只有烽火台会传
+     */
+    @JSONField(name = "HandlerCode")
+    private String HandlerCode;
+
+    /**
+     *  服务区域代码(车商代码)
+     */
+    @JSONField(name = "ServiceArea")
+    private String ServiceArea;
+
+    /**
+     *  代理机构,出单机构存在多代理时需传入
+     */
+    @JSONField(name = "AgentCode")
+    private String AgentCode;
+
+    /**
+     *  提核标志(1:提核;0不提核)
+     */
+    @JSONField(name = "submitUnderFlag")
+    private String submitUnderFlag;
+
+    /**
+     *  线上线下标识:C-线上、B-线下,空值默认线下
+     */
+    @JSONField(name = "OnLineFlag")
+    private String OnLineFlag;
+
+    /**
+     *  当是线上业务的时候,项目品牌必传
+     */
+    @JSONField(name = "ProjectBrand")
+    private String ProjectBrand;
+
+    public YangGuangProposalStatusQueryRequest(InsOrdersPolicy insOrdersPolicy, YangGuangConfigureParameters yangGuangConfigureParameters) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        this.RequestNo = "proposalStatusQuery";
+        this.ComCode = yangGuangConfigureParameters.getComCode();
+        this.RequestDate = LocalDateTime.now().format(formatter);
+        this.AgentCode = yangGuangConfigureParameters.getAgentCode();
+        this.ServiceArea = yangGuangConfigureParameters.getServiceArea() == null ? "" : yangGuangConfigureParameters.getServiceArea();
+        if (insOrdersPolicy.getJqApplyNo() != null && !"".equals(insOrdersPolicy.getJqApplyNo())) {
+            this.CiProposalNo = insOrdersPolicy.getJqApplyNo();
+        }
+        if (insOrdersPolicy.getSyApplyNo() != null && !"".equals(insOrdersPolicy.getSyApplyNo())){
+            this.BiProposalNo = insOrdersPolicy.getSyApplyNo();
+        }
+
+    }
+}

+ 107 - 0
tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/entity/response/YangGuangProposalStatusQueryResponse.java

@@ -0,0 +1,107 @@
+package com.jzg.quotation.yangguang.api.entity.response;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author quchen
+ * @date 2025/4/3 16:23
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+public class YangGuangProposalStatusQueryResponse extends YangGuangBaseResponse {
+    /**
+     *  商业险投保单号
+     */
+    @JSONField(name = "BiProposalNo")
+    private String BiProposalNo;
+
+    /**
+     *  交强险投保单号
+     */
+    @JSONField(name = "CiProposalNo")
+    private String CiProposalNo;
+
+    /**
+     *  商业险核保结果
+     */
+    @JSONField(name = "BiUnderWriteFlag")
+    private String BiUnderWriteFlag;
+
+    /**
+     *  交强险核保结果
+     */
+    @JSONField(name = "CiUnderWriteFlag")
+    private String CiUnderWriteFlag;
+
+    /**
+     *  商业险核保信息
+     */
+    @JSONField(name = "BiUnderWriteMsg")
+    private String BiUnderWriteMsg;
+
+    /**
+     *  交强险核保信息
+     */
+    @JSONField(name = "CiUnderWriteMsg")
+    private String CiUnderWriteMsg;
+
+    /**
+     *  商业险保单号
+     */
+    @JSONField(name = "BiPolicyNo")
+    private String BiPolicyNo;
+
+    /**
+     *  交强险保单号
+     */
+    @JSONField(name = "CiPolicyNo")
+    private String CiPolicyNo;
+
+    /**
+     *  商业险核保时间
+     */
+    @JSONField(name = "BiUnderWriteDate")
+    private String BiUnderWriteDate;
+
+    /**
+     *  交强险核保时间
+     */
+    @JSONField(name = "CiUnderWriteDate")
+    private String CiUnderWriteDate;
+
+    /**
+     *  商业险承保时间
+     */
+    @JSONField(name = "BiPolicyIssueDate")
+    private String BiPolicyIssueDate;
+
+    /**
+     *  交强险承保时间
+     */
+    @JSONField(name = "CiPolicyIssueDate")
+    private String CiPolicyIssueDate;
+
+    /**
+     *  商业险电子签名状态(0-未签署;1-已签署;2-无需签署)
+     */
+    @JSONField(name = "BiSignStatus")
+    private String BiSignStatus;
+
+    /**
+     *  交强险电子签名状态(0-未签署;1-已签署;2-无需签署)
+     */
+    @JSONField(name = "CiSignStatus")
+    private String CiSignStatus;
+
+    /**
+     *  非车险保单号
+     */
+    @JSONField(name = "FCPolicyNo")
+    private String FCPolicyNo;
+
+}

+ 42 - 2
tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/service/impl/YangGuangApiRequestImpl.java

@@ -1,7 +1,10 @@
 package com.jzg.quotation.yangguang.api.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.commons.entity.vo.aggregated.*;
 import com.jzg.quotation.commons.entity.vo.base.OrderBase;
@@ -30,6 +33,7 @@ import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 /**
  * @author quchen
@@ -137,7 +141,6 @@ public class YangGuangApiRequestImpl implements YangGuangApiRequest {
     @Override
     public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) throws JsonProcessingException {
         OrderBase orderBase = underwritingVo.getOrder();
-        YangGuangApiOrder yangGuangApiOrder = yangGuangCrawlerOrderService.getById(orderBase.getOrdersNo());
         // 账号配置信息
         YangGuangConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(YangGuangConfigureParameters.class, orderBase
                 .getAttributionInformationVo()
@@ -145,9 +148,46 @@ public class YangGuangApiRequestImpl implements YangGuangApiRequest {
         // 根据订单号获取车辆信息
         YangGuangSubmitRequest yangGuangSubmitRequest = new YangGuangSubmitRequest(underwritingVo,parameters);
         YangGuangSubmitResponse yangGuangSubmitResponse = yangGuangApiRequestComponent.submit(yangGuangSubmitRequest);
-
         UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
+        if (yangGuangSubmitResponse.getErrorCode().equals("0")) {
+            // 如果有驾意险 获取驾意险投保单号
+            if (yangGuangSubmitResponse.getPtptNonVehicleProductInformationList() != null) {
+                String jyApplyNo = yangGuangSubmitResponse.getPtptNonVehicleProductInformationList().get(0).getFcProposalNo(); // 驾意险投保单号
+                underwritingResultsVo.setJyApplyNo(jyApplyNo);
+            }
+            String statusSy = yangGuangSubmitResponse.getBiUnderWriteFlag();
+            String statusJq = yangGuangSubmitResponse.getCiUnderWriteFlag();
+            if ("3".equals(statusJq) || "3".equals(statusSy)) {
+                //人工核保
+                underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.STAFF_PROCESS);
+                underwritingResultsVo.setUnderwritingResult("人工处理");
+            } else if ("2".equals(statusJq) || "2".equals(statusSy)) {
+                // 核保失败
+                underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
+                StringBuilder sb = new StringBuilder();
+                if (null != yangGuangSubmitResponse.getCiUnderWriteMsg()) {
+                    sb.append(String.format("交强险提示信息:s%", yangGuangSubmitResponse.getBiUnderWriteMsg()));
+                }
+                if (null != yangGuangSubmitResponse.getBiUnderWriteMsg()) {
+                    sb.append(String.format(" 商业险提示信息:s%", yangGuangSubmitResponse.getBiUnderWriteMsg()));
+                }
+                underwritingResultsVo.setUnderwritingResult(sb.toString());
+            } else if ("1".equals(statusJq) || "1".equals(statusSy)) {
+                // 自动核保成功
+                underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
+                String jq = yangGuangSubmitResponse.getCiProposalNo(); // 交强险投保单号
+                String sy = yangGuangSubmitResponse.getBiProposalNo(); // 商业险投保单号
+                underwritingResultsVo.setJqApplyNo(jq);
+                underwritingResultsVo.setSyApplyNo(sy);
+                // 获取缴费地址
+                PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
+                paymentLinkVo.setOrder(underwritingVo.getOrder());
+                getPaymentLink(paymentLinkVo);
+            }
 
+        } else {
+            throw new SystemException("核保失败" + yangGuangSubmitResponse.getErrorMessage());
+        }
         return underwritingResultsVo;
     }