Jelajahi Sumber

报价优化

dongxin 1 tahun lalu
induk
melakukan
33fa5d8c15
17 mengubah file dengan 795 tambahan dan 56 penghapusan
  1. 1 0
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/build/ChengTaiAPIQuoteResultsVoBuild.java
  2. 0 1
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/constants/enums/ImageTypeEnum.java
  3. 8 7
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/service/impl/ChengTaiApiRequestImpl.java
  4. 1 1
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationBaseService.java
  5. 78 10
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/build/DaJiaAPIQuoteResultsVoBuild.java
  6. 27 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/compoment/DaJiaApiRequestComponent.java
  7. 9 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/po/DaJiaApiOrder.java
  8. 49 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/NVHLODR2007Request.java
  9. 7 6
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1013Request.java
  10. 49 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR2010Request.java
  11. 50 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/VHLINS2005Request.java
  12. 84 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/NVHLODR2007Response.java
  13. 125 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR2010Response.java
  14. 62 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/VHLINS2005Response.java
  15. 9 0
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/impl/DaJiaApiOrderServiceImpl.java
  16. 235 30
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/impl/DaJiaApiRequestImpl.java
  17. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

+ 1 - 0
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/build/ChengTaiAPIQuoteResultsVoBuild.java

@@ -48,6 +48,7 @@ public final class ChengTaiAPIQuoteResultsVoBuild {
         buildPremium(quoteResultsVo, insurePremiumResponse);
         quoteResultsVo.setCompanyOrderNo(insurePremiumResponse.getOrderId());
         quoteResultsVo.setOrdersNo(ordersNo);
+
         // 商业险险种信息
         if(Objects.nonNull(insurePremiumResponse.getBiContract())){
             List<KindInfoVo> kindInfoVo = buildKindInfoVo(quoteVo.getKindInfoVo(), insurePremiumResponse.getBiContract().getCoverage());

+ 0 - 1
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/constants/enums/ImageTypeEnum.java

@@ -1,7 +1,6 @@
 package com.jzg.quotation.chengtai.api.entity.constants.enums;
 
 import com.jzg.quotation.commons.constant.enums.base.InsuranceImageEnum;
-import com.ydtech.constants.InsuranceImageEnum;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 

+ 8 - 7
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/service/impl/ChengTaiApiRequestImpl.java

@@ -328,9 +328,10 @@ public class ChengTaiApiRequestImpl implements ChengTaiApiRequest {
             }
             underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
             // 获取支付链接
-            PayUrlRequest payUrlRequest = new PayUrlRequest(chengTaiApiProperties.getPartnerCode(),submitVerifyResponse.getOrderId());
-            PayUrlResponse payUrlResponse = chengTaiRequestApiComponent.getPayUrl(payUrlRequest, httpHeaders,chengTaiApiProperties.getPartnerCode());
-            underwritingResultsVo.setPaymentLink(payUrlResponse.getSmsUrl());
+            PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
+            paymentLinkVo.setOrder(underwritingVo.getOrder());
+            PaymentLinkResultsVo paymentLinkResultsVo = getPaymentLink(paymentLinkVo);
+            underwritingResultsVo.setPaymentLink(paymentLinkResultsVo.getPaymentLink());
         }else{
             if(OrderStatusEnum.A2002.getCode().equals(underwritingResponse.getFinalRuleResult())){
                 underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.STAFF_PROCESS);
@@ -461,10 +462,10 @@ public class ChengTaiApiRequestImpl implements ChengTaiApiRequest {
         if (OrderStatusEnum.A7005.getCode().equals(submitVerifyResultResponse.getPolicyProsts())
                 || OrderStatusEnum.A7004.getCode().equals(submitVerifyResultResponse.getPolicyProsts())) {
             // 获取支付链接
-            PayUrlRequest payUrlRequest = new PayUrlRequest(chengTaiApiProperties.getPartnerCode(),orderStatusVo.getOrder().getCompanyOrderNo());
-            PayUrlResponse payUrlResponse = chengTaiRequestApiComponent.getPayUrl(payUrlRequest, httpHeaders,chengTaiApiProperties.getPartnerCode());
-            orderStatusResultVo.setOrderStatus(InsOrderStatusEnum.PAY_PENDING);
-            orderStatusResultVo.setPaymentLink(payUrlResponse.getSmsUrl());
+            PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
+            paymentLinkVo.setOrder(orderStatusVo.getOrder());
+            PaymentLinkResultsVo paymentLinkResultsVo = getPaymentLink(paymentLinkVo);
+            orderStatusResultVo.setPaymentLink(paymentLinkResultsVo.getPaymentLink());
 
             List<SubmitVerifyResultResponse.DataDTO> data = submitVerifyResultResponse.getData();
             if(CollUtil.isNotEmpty(data)){

+ 1 - 1
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationBaseService.java

@@ -27,7 +27,7 @@ public interface QuotationBaseService {
     /**
      * 获取支付链接
      */
-    PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) throws JsonProcessingException;
+    PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) throws Exception;
 
     /**
      * 上传影像

+ 78 - 10
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/build/DaJiaAPIQuoteResultsVoBuild.java

@@ -1,5 +1,7 @@
 package com.jzg.quotation.dajia.api.build;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.quotation.commons.constant.enums.quote.KindCode;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
@@ -13,6 +15,7 @@ import com.jzg.quotation.dajia.api.entity.response.ODR1009Response;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 public final class DaJiaAPIQuoteResultsVoBuild {
@@ -21,38 +24,103 @@ public final class DaJiaAPIQuoteResultsVoBuild {
         throw new IllegalStateException("Utility class");
     }
 
-    public static QuoteResultsVo buildQuoteResultsVo(QuoteVo quoteVo, ODR1009Response odr1009Response, NVHLODR1001Response nvhlodr1001Response) {
+    public static QuoteResultsVo buildQuoteResultsVo(QuoteVo quoteVo, ODR1009Response odr1009Response, NVHLODR1001Response nvhlodr1001Response, String orderNo) {
         QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
         quoteResultsVo.setOrdersNo(quoteVo.getOrder().getOrdersNo());
+
         // 交强险
-        quoteResultsVo.setCiRiskInfoVo(new RiskInfoVo());
+        quoteResultsVo.setCiRiskInfoVo(quoteVo.getCiRiskInfoVo());
         // 商业险
-        quoteResultsVo.setBiRiskInfoVo(new RiskInfoVo());
+        quoteResultsVo.setBiRiskInfoVo(quoteVo.getBiRiskInfoVo());
+        quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
+        if(!Message.M0000.getCode().equals(odr1009Response.getStatus())) {
+            quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.QUOTE_FAIL);
+            quoteResultsVo.setErrorMessage(odr1009Response.getMessage());
+            return quoteResultsVo;
+        }
         // 商业险险种信息
         List<KindInfoVo> kindInfoVo = buildKindInfoVo(quoteVo.getKindInfoVo(), odr1009Response.getResult().getCoverageList());
         quoteResultsVo.setKindInfoVo(kindInfoVo);
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.PAY_PENDING);
-        if(!Message.M0000.getCode().equals(odr1009Response.getStatus())) {
-            quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.QUOTE_FAIL);
-            quoteResultsVo.setErrorMessage(odr1009Response.getMessage());
+
+        //交强投保单号
+        if (!Objects.isNull(odr1009Response.getResult().getBasePart().getJqProposalNo())) {
+            quoteResultsVo.setCiPolicyNumber(odr1009Response.getResult().getBasePart().getJqProposalNo().toString());
         }
+        //商业投保单号
+        if (!Objects.isNull(odr1009Response.getResult().getBasePart().getSyProposalNo())) {
+            quoteResultsVo.setBiPolicyNumber(odr1009Response.getResult().getBasePart().getSyProposalNo().toString());
+        }
+
+        quoteResultsVo.setCompanyOrderNo(orderNo);
         // 费用因子
 //        List<ExpenseFactor> expenseFactors = buildExpenseFactor(calculatePremiumResponse.getPriceInfoList());
 //        quoteResultsVo.setExpenseFactors(expenseFactors);
         // 交强保费 车船税 商业保费
         buildPremium(quoteResultsVo, odr1009Response,nvhlodr1001Response);
+
+        String ciClaims = "";
+        // 交强出险次数
+        if (odr1009Response.getResult().getRiskRatio().getJqPreEscNum() != null && odr1009Response.getResult().getRiskRatio().getJqPreEscNum() > 0) {
+            ciClaims = odr1009Response.getResult().getRiskRatio().getJqPreEscNum().toString();
+        }
+        quoteResultsVo.getScoreVo().setCiClaims(ciClaims);
+        // 商业出险次数
+        String biClaims = "";
+        if (odr1009Response.getResult().getRiskRatio().getSyPreEscNum() != null && odr1009Response.getResult().getRiskRatio().getSyPreEscNum() > 0) {
+            biClaims = odr1009Response.getResult().getRiskRatio().getSyPreEscNum().toString();
+        }
+        quoteResultsVo.getScoreVo().setBiClaims(biClaims);
         return quoteResultsVo;
     }
 
     private static void buildPremium(QuoteResultsVo quoteResultsVo, ODR1009Response odr1009Response, NVHLODR1001Response nvhlodr1001Response) {
 
-        quoteResultsVo.getCosts().setCiPremium(odr1009Response.getResult().getBasePart().getJqPremium() + "");
-        quoteResultsVo.getCosts().setVvTax(odr1009Response.getResult().getBasePart().getJqPremiumVat() + "");
-        quoteResultsVo.getCosts().setBiPremium(odr1009Response.getResult().getBasePart().getSyPremium() + "");
+        // 交强
+        if (odr1009Response.getResult().getBasePart().getJqEffectiveDate() != null) {
+            quoteResultsVo.setCiStartDate(String.valueOf(odr1009Response.getResult().getBasePart().getJqEffectiveDate()));
+            quoteResultsVo.setCiEndDate(String.valueOf(odr1009Response.getResult().getBasePart().getJqExpireDate()));
+            quoteResultsVo.getCosts().setCiPremium(odr1009Response.getResult().getBasePart().getJqPremium() + "");
+            quoteResultsVo.getCosts().setVvTax(odr1009Response.getResult().getBasePart().getJqPremiumVat() + "");
+            quoteResultsVo.getScoreVo().setJqScore(String.valueOf(odr1009Response.getResult().getRiskRatio().getJqPubScores()));
+            quoteResultsVo.getScoreVo().setJqLossRation(odr1009Response.getResult().getRiskRatio().getBillCTPELR().toString());
+        }
+
+        // 商业
+        if (odr1009Response.getResult().getBasePart().getSyEffectiveDate() != null) {
+            quoteResultsVo.setBiStartDate(odr1009Response.getResult().getBasePart().getSyEffectiveDate());
+            quoteResultsVo.setBiEndDate(odr1009Response.getResult().getBasePart().getSyExpireDate());
+            quoteResultsVo.getCosts().setBiPremium(odr1009Response.getResult().getBasePart().getSyPremium() + "");
+            quoteResultsVo.getScoreVo().setSyScore(odr1009Response.getResult().getRiskRatio().getSyPubScores());
+            quoteResultsVo.getScoreVo().setSyLossRation(odr1009Response.getResult().getRiskRatio().getBillCOMELR().toString());
+        }
+        //整单预期赔付率
+        quoteResultsVo.getScoreVo().setLossRation(odr1009Response.getResult().getRiskRatio().getBillELR().toString());
+
+        double jqPremium = 0;
+        double syPremium = 0;
+        double sumPayTax = 0;
+        double jyPremium = 0;
+        if (!Objects.isNull(odr1009Response.getResult().getBasePart().getJqPremium())) {
+            jqPremium = Double.parseDouble(odr1009Response.getResult().getBasePart().getJqPremium().toString());
+        }
+        if (!Objects.isNull(odr1009Response.getResult().getBasePart().getSyPremium())) {
+            syPremium = Double.parseDouble(odr1009Response.getResult().getBasePart().getSyPremium().toString());
+        }
+        if (!Objects.isNull(odr1009Response.getResult().getVehicleTaxation())) {
+            sumPayTax = Double.parseDouble(odr1009Response.getResult().getVehicleTaxation().getTaxAggTax());
+        }
         if (!Objects.isNull(nvhlodr1001Response)) {
-            quoteResultsVo.getCosts().setNiPremium(nvhlodr1001Response.getOrderPrm());
+            jyPremium = Double.parseDouble(nvhlodr1001Response.getOrderPrm());
         }
 
+        quoteResultsVo.getCosts().setCiPremium(jqPremium + "");
+        quoteResultsVo.getCosts().setBiPremium(syPremium + "");
+        quoteResultsVo.getCosts().setVvTax(sumPayTax + "");
+        quoteResultsVo.getCosts().setNiPremium(jyPremium + "");
+
+        quoteResultsVo.getCosts().setSumPremium(String.valueOf(jqPremium + syPremium + jyPremium + sumPayTax));//总保费
+
     }
 
     private static List<KindInfoVo> buildKindInfoVo(List<KindInfoVo> kindInfoVo, List<ODR1009Response.ResultDTO.CoverageListDTO> itemKindList) {

+ 27 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/compoment/DaJiaApiRequestComponent.java

@@ -150,4 +150,31 @@ public class DaJiaApiRequestComponent {
     public ODR1011Response getPayNo(ODR1011Request odr1011Request) {
         return requestRequestUrl(RequestUrl.DJ_TQBD_100011, odr1011Request, ODR1011Response.class);
     }
+
+    /**
+     * 获取保单
+     * @param vhlins2005Request
+     * @return
+     */
+    public VHLINS2005Response obtainWarranty(VHLINS2005Request vhlins2005Request) {
+        return requestRequestUrl(RequestUrl.DJ_TQBD_200005, vhlins2005Request, VHLINS2005Response.class);
+    }
+
+    /**
+     * 获取驾意险保单
+     * @param nvhlodr2007Request
+     * @return
+     */
+    public NVHLODR2007Response accidentPremiumWarranty(NVHLODR2007Request nvhlodr2007Request) {
+        return requestRequestUrl(RequestUrl.DJ_TQBD_200007, nvhlodr2007Request, NVHLODR2007Response.class);
+    }
+
+    /**
+     * 查询订单状态
+     * @param odr2010Request
+     * @return
+     */
+    public ODR2010Response verifyPayment(ODR2010Request odr2010Request) {
+        return requestRequestUrl(RequestUrl.DJ_TQBD_200010, odr2010Request, ODR2010Response.class);
+    }
 }

+ 9 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/po/DaJiaApiOrder.java

@@ -37,4 +37,13 @@ public class DaJiaApiOrder {
      * 交叉销售保单信息
      */
     private String crossInsurance;
+
+    /**
+     * 交强投保单号
+     */
+    private String ciPolicyNumber;
+    /**
+     * 商业投保单号
+     */
+    private String biPolicyNumber;
 }

+ 49 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/NVHLODR2007Request.java

@@ -0,0 +1,49 @@
+package com.jzg.quotation.dajia.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.constant.ServiceCode;
+import com.jzg.quotation.dajia.api.entity.DaJiaApiConfigureParameters;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Objects;
+
+
+/**
+ * @description: 大家财险 驾意险保单查询 请求参数
+ * @author: wenks
+ * @date: 2023/11/14 16:28
+ **/
+@EqualsAndHashCode(callSuper = true)
+//@NoArgsConstructor
+@Data
+public class NVHLODR2007Request extends DaJiaBaseRequest {
+
+
+    private static final long serialVersionUID = 243809151769159227L;
+
+    @JsonProperty("body")
+    private BodyDTO body;
+
+    @NoArgsConstructor
+    @Data
+    public static class BodyDTO implements Serializable {
+        //投保单号
+        @JsonProperty("appNo")
+        private String appNo;
+
+    }
+
+    public NVHLODR2007Request(String appNo, DaJiaApiConfigureParameters parameters) {
+        super(parameters.getChannelCode(), ServiceCode.NVHLODR2007.getCode());
+        if(Objects.isNull(this.body)){
+            this.body = new BodyDTO();
+        }
+        //订单号
+        this.body.appNo = appNo;
+
+    }
+}

+ 7 - 6
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR1013Request.java

@@ -6,6 +6,7 @@ import com.jzg.quotation.commons.entity.vo.image.InsuranceImageVo;
 import com.jzg.quotation.dajia.api.constant.ServiceCode;
 import com.jzg.quotation.dajia.api.entity.DaJiaApiConfigureParameters;
 import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
+import com.jzg.quotation.dajia.api.entity.po.DaJiaApiOrder;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
@@ -33,14 +34,14 @@ public class ODR1013Request extends DaJiaBaseRequest {
     @JsonProperty("body")
     private BodyDTO body;
 
-    public ODR1013Request(OrderBase orderBase, DaJiaApiConfigureParameters parameters, List<InsuranceImageVo> insUploadImagesDtos) {
+    public ODR1013Request(OrderBase orderBase, DaJiaApiConfigureParameters parameters, List<InsuranceImageVo> insUploadImagesDtos, DaJiaApiOrder daJiaApiOrder) {
         super(parameters.getChannelCode(), ServiceCode.ODR1013.getCode());
         if(Objects.isNull(body)){
             body = new BodyDTO();
         }
         body.setOrderNo(orderBase.getOrdersNo());
-//        body.setJqProposalNo(insAreaCompany.getJqapplyno());
-//        body.setSyProposalNo(insAreaCompany.getSyapplyno());
+        body.setJqProposalNo(daJiaApiOrder.getCiPolicyNumber());
+        body.setSyProposalNo(daJiaApiOrder.getBiPolicyNumber());
         //业务类型  车险 默认80
         body.setAppType("80");
         //资料类型  车险 默认 8001
@@ -62,9 +63,9 @@ public class ODR1013Request extends DaJiaBaseRequest {
 
         insTaskImagesBase64s.forEach(item->{
             BodyDTO.ImageListDTO imageListDTO = new BodyDTO.ImageListDTO();
-//            imageListDTO.setBase64Img(item.getImageBase64List());
-//            imageListDTO.setFiledSuffix("jpg");
-//            imageListDTO.setImgName(item.getImageCode());
+            imageListDTO.setBase64Img(item.getImageBase64List().get(0).getImageBase64Str());
+            imageListDTO.setFiledSuffix("jpg");
+            imageListDTO.setImgName(item.getImageCode());
             this.body.imageList.add(imageListDTO);
         });
     }

+ 49 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/ODR2010Request.java

@@ -0,0 +1,49 @@
+package com.jzg.quotation.dajia.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.constant.ServiceCode;
+import com.jzg.quotation.dajia.api.entity.DaJiaApiConfigureParameters;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * @version 
+ * @description: 大家财险 查询订单状态轨迹 请求参数
+ * @author: wenks 
+ * @date: 2023/11/14 17:43
+ **/
+
+@EqualsAndHashCode(callSuper = true)
+//@NoArgsConstructor
+@Data
+public class ODR2010Request extends DaJiaBaseRequest {
+
+    private static final long serialVersionUID = -7892713641287949312L;
+
+    @JsonProperty("body")
+    private BodyDTO body;
+
+    public ODR2010Request(String orderNo, DaJiaApiConfigureParameters parameters) {
+        super(parameters.getChannelCode(), ServiceCode.ODR1014.getCode());
+        if(body == null){
+            body = new BodyDTO();
+        }
+        body.setOrderNo(orderNo);
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class BodyDTO implements Serializable {
+
+        private static final long serialVersionUID = -4592159874022566051L;
+
+        @JsonProperty("orderNo")
+        private String orderNo;
+
+    }
+}

+ 50 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/request/VHLINS2005Request.java

@@ -0,0 +1,50 @@
+package com.jzg.quotation.dajia.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.constant.ServiceCode;
+import com.jzg.quotation.dajia.api.entity.DaJiaApiConfigureParameters;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseRequest;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+
+/**
+ * @version 
+ * @description: 大家财险 获取保单 请求参数
+ * @author: wenks 
+ * @date: 2023/11/14 17:43
+ **/
+
+@EqualsAndHashCode(callSuper = true)
+//@NoArgsConstructor
+@Data
+public class VHLINS2005Request extends DaJiaBaseRequest {
+
+    private static final long serialVersionUID = -7892713641287949312L;
+
+    @JsonProperty("body")
+    private BodyDTO body;
+
+    public VHLINS2005Request(String[] plyNos, DaJiaApiConfigureParameters parameters) {
+        super(parameters.getChannelCode(), ServiceCode.VHL_INS2005.getCode());
+        if(body == null){
+            body = new BodyDTO();
+        }
+        body.setPlyNo(plyNos);
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class BodyDTO implements Serializable {
+
+        private static final long serialVersionUID = -4592159874022566051L;
+
+        //保单号
+        @JsonProperty("plyNo")
+        private String[] plyNo;
+
+    }
+}

+ 84 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/NVHLODR2007Response.java

@@ -0,0 +1,84 @@
+package com.jzg.quotation.dajia.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+
+/**
+ * @description: 大家财险 驾意险保单查询 响应参数
+ * @author: wenks
+ * @date: 2023/11/14 16:46
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class NVHLODR2007Response extends DaJiaBaseResponse {
+
+    private static final long serialVersionUID = -5345963590207304369L;
+
+    @JsonProperty("policyInfos")
+    private List<policyInfosDTO> policyInfos;
+
+    @NoArgsConstructor
+    @Data
+    public static class policyInfosDTO implements Serializable {
+
+        private static final long serialVersionUID = -8892193629620452567L;
+
+
+        //投保单号
+        @JsonProperty("CAppNo")
+        private String CAppNo;
+
+        //保单号
+        @JsonProperty("CPlyNo")
+        private String CPlyNo;
+
+        //产品代码
+        @JsonProperty("CProdNo")
+        private String CProdNo;
+
+        //产品名称
+        @JsonProperty("CProdName")
+        private String CProdName;
+
+        //产品保额
+        @JsonProperty("NAmt")
+        private String NAmt;
+
+        //产品保费
+        @JsonProperty("NPrm")
+        private String NPrm;
+
+        //产品投保日期
+        @JsonProperty("TAppTm")
+        private String TAppTm;
+
+        //产品签单日期
+        @JsonProperty("TIssueTm")
+        private String TIssueTm;
+
+        //产品保险起期
+        @JsonProperty("NVhlEffectiveDate")
+        private String NVhlEffectiveDate;
+
+        //产品保险止期
+        @JsonProperty("NVhlExpireDate")
+        private String NVhlExpireDate;
+
+        //投保单状态
+        @JsonProperty("CAppStatus")
+        private String CAppStatus;
+
+        //电子保单下载地址
+        @JsonProperty("CPdfUrl")
+        private String CPdfUrl;
+
+    }
+}

+ 125 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/ODR2010Response.java

@@ -0,0 +1,125 @@
+package com.jzg.quotation.dajia.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 大家财险 影像上传接口 响应参数
+ * @author: wenks
+ * @date: 2023/11/14 17:50
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class ODR2010Response extends DaJiaBaseResponse {
+
+    private static final long serialVersionUID = 272886779414029674L;
+
+    @JsonProperty("result")
+    private List<ResultDTO> result;
+
+    @NoArgsConstructor
+    @Data
+    public static class ResultDTO implements Serializable {
+
+        private static final long serialVersionUID = 2420666839215689701L;
+
+
+        //轨迹ID
+        @JsonProperty("notifyId")
+        private String notifyId;
+
+        //操作时间(投保单状态最新时间)
+        @JsonProperty("oprTime")
+        private String oprTime;
+
+        //通知事件类型
+        @JsonProperty("notifyType")
+        private String notifyType;
+
+        //系统来源
+        @JsonProperty("sysRes")
+        private String sysRes;
+
+        //申请单类型
+        @JsonProperty("appType")
+        private String appType;
+
+        //投保单号
+        @JsonProperty("appNo")
+        private String appNo;
+
+        //投保单状态
+        @JsonProperty("appStatus")
+        private String appStatus;
+
+        //保单号
+        @JsonProperty("plyNo")
+        private String plyNo;
+
+        //产品代码
+        @JsonProperty("prodNo")
+        private String prodNo;
+
+        //产品名称
+        @JsonProperty("prodName")
+        private String prodName;
+
+        //产品保额
+        @JsonProperty("amt")
+        private String amt;
+
+        //产品保费
+        @JsonProperty("prm")
+        private String prm;
+
+        //产品投保日期
+        @JsonProperty("appTm")
+        private String appTm;
+
+        //产品签单日期
+        @JsonProperty("issueTm")
+        private String issueTm;
+
+        //产品保险起期
+        @JsonProperty("effectiveDate")
+        private String effectiveDate;
+
+        //产品保险止期
+        @JsonProperty("expireDate")
+        private String expireDate;
+
+        //操作人代码
+        @JsonProperty("oprCde")
+        private String oprCde;
+
+        //操作人名称
+        @JsonProperty("oprCdeName")
+        private String oprCdeName;
+
+        //操作机构代码
+        @JsonProperty("oprDpt")
+        private String oprDpt;
+
+        //操作机构名称
+        @JsonProperty("oprDptName")
+        private String oprDptName;
+
+        //操作动作
+        @JsonProperty("oper")
+        private String oper;
+
+        //操作详细说明
+        @JsonProperty("oprDetail")
+        private String oprDetail;
+
+
+    }
+
+}

+ 62 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/entity/response/VHLINS2005Response.java

@@ -0,0 +1,62 @@
+package com.jzg.quotation.dajia.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.dajia.api.entity.DaJiaBaseResponse;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 大家财险 影像上传接口 响应参数
+ * @author: wenks
+ * @date: 2023/11/14 17:50
+ **/
+@EqualsAndHashCode(callSuper = true)
+@NoArgsConstructor
+@Data
+public class VHLINS2005Response extends DaJiaBaseResponse {
+
+    private static final long serialVersionUID = 272886779414029674L;
+
+    @JsonProperty("result")
+    private List<ResultDTO> result;
+
+    @NoArgsConstructor
+    @Data
+    public static class ResultDTO implements Serializable {
+
+        private static final long serialVersionUID = 2420666839215689701L;
+
+
+        //状态(成功/失败)
+        @JsonProperty("code")
+        private String code;
+
+        //错误信息
+        @JsonProperty("message")
+        private String message;
+
+        //保单号
+        @JsonProperty("plyNo")
+        private String plyNo;
+
+        //电子保单url
+        @JsonProperty("returnUrl")
+        private String returnUrl;
+
+        //电子标志url
+        @JsonProperty("returnBzUrl")
+        private String returnBzUrl;
+
+        //失效时间
+        @JsonProperty("expirationTme")
+        private String expirationTme;
+
+
+
+    }
+
+}

+ 9 - 0
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/impl/DaJiaApiOrderServiceImpl.java

@@ -24,6 +24,15 @@ public class DaJiaApiOrderServiceImpl implements DaJiaApiOrderService {
         DaJiaApiOrder daJiaApiOrder = new DaJiaApiOrder();
         daJiaApiOrder.setId(quoteVo.getOrder().getOrdersNo());
         daJiaApiOrder.setReptxt(JSON.toJSONString(odr1009Response));
+
+        //交强投保单号
+        if (!Objects.isNull(odr1009Response.getResult().getBasePart().getJqProposalNo())) {
+            daJiaApiOrder.setCiPolicyNumber(odr1009Response.getResult().getBasePart().getJqProposalNo().toString());
+        }
+        //商业投保单号
+        if (!Objects.isNull(odr1009Response.getResult().getBasePart().getSyProposalNo())) {
+            daJiaApiOrder.setBiPolicyNumber(odr1009Response.getResult().getBasePart().getSyProposalNo().toString());
+        }
         //驾意险信息
         if (!Objects.isNull(nvhlodr1001Response)) {
             daJiaApiOrder.setCrossInsurance(JSON.toJSONString(nvhlodr1001Response.getPolicyInfos()));

+ 235 - 30
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/impl/DaJiaApiRequestImpl.java

@@ -4,11 +4,13 @@ import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.jzg.commons.constants.InsuranceRisk;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.entity.quote.vo.AccidentalDrivingVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.AssertionUtils;
+import com.jzg.commons.util.StringUtils;
 import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.quotation.commons.entity.vo.aggregated.*;
 import com.jzg.quotation.commons.entity.vo.base.OrderBase;
@@ -19,6 +21,7 @@ import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversi
 import com.jzg.quotation.commons.utils.DateTimeUtil;
 import com.jzg.quotation.dajia.api.build.DaJiaAPIQuoteResultsVoBuild;
 import com.jzg.quotation.dajia.api.compoment.DaJiaApiRequestComponent;
+import com.jzg.quotation.dajia.api.constant.CProdNo;
 import com.jzg.quotation.dajia.api.constant.enums.Message;
 import com.jzg.quotation.dajia.api.entity.DaJiaApiConfigureParameters;
 import com.jzg.quotation.dajia.api.entity.po.DaJiaApiOrder;
@@ -37,6 +40,7 @@ import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 @Service
 @RequiredArgsConstructor
@@ -95,7 +99,7 @@ public class DaJiaApiRequestImpl implements DaJiaApiRequest {
             }
         }
         daJiaCrawlerOrderService.saveOrderInfo(quoteVo,odr1009Response,nvhlodr1001Response);
-        return DaJiaAPIQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo,odr1009Response,nvhlodr1001Response);
+        return DaJiaAPIQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo,odr1009Response,nvhlodr1001Response,orderNo);
     }
 
     /**
@@ -256,7 +260,7 @@ public class DaJiaApiRequestImpl implements DaJiaApiRequest {
     }
 
     @Override
-    public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) throws InterruptedException {
+    public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) throws Exception {
         OrderBase orderBase = underwritingVo.getOrder();
         DaJiaApiOrder daJiaApiOrder = daJiaCrawlerOrderService.getById(orderBase.getOrdersNo());
         // 配置信息
@@ -297,37 +301,48 @@ public class DaJiaApiRequestImpl implements DaJiaApiRequest {
 
             //核保成功  获取支付二维码
             //延迟3秒 等待生成
-            ODR1011Request odr1011Request = new ODR1011Request(orderBase.getCompanyOrderNo(), parameters, policyInfosDTOS);
-            ODR1011Response payNo = null;
-            boolean flag = true;
-            Integer frequencyControl = 0;
-            while (flag) {
-                payNo = daJiaApiRequestComponent.getPayNo(odr1011Request);
-                if ("0000".equals(payNo.getStatus())) {
-                    flag = false;
-                }
-                frequencyControl += 1;
-                if (frequencyControl > 20) {
-                    throw new RuntimeException("获取支付二维码失败");
-                }
-                Thread.sleep(500);
-            }
-
-            if (payNo.getStatus().equals(Message.M0000.getCode())) {
+            PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
+            paymentLinkVo.setOrder(underwritingVo.getOrder());
+            PaymentLinkResultsVo paymentLinkResultsVo = getPaymentLink(paymentLinkVo);
+            if(StringUtils.isNotEmpty(paymentLinkResultsVo.getPaymentLink())){
+                underwritingResultsVo.setPaymentLink(paymentLinkResultsVo.getPaymentLink());
                 underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
-                // 获取支付链接
-                underwritingResultsVo.setPaymentLink(payNo.getResult().getSignInfoUrl());
             }
         }
         return underwritingResultsVo;
     }
 
     @Override
-    public PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) throws JsonProcessingException {
+    public PaymentLinkResultsVo getPaymentLink(PaymentLinkVo paymentLinkVo) throws Exception {
         DaJiaApiOrder daJiaApiOrder = daJiaCrawlerOrderService.getById(paymentLinkVo.getOrder().getOrdersNo());
         DaJiaApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaApiConfigureParameters.class,
                 paymentLinkVo.getOrder().getAttributionInformationVo().getConfigInfo());
         PaymentLinkResultsVo resultsVo = new PaymentLinkResultsVo();
+
+        //驾意险 返回数据
+        List<NVHLODR1001Response.policyInfosDTO> policyInfosDTOS = null;
+        if (!Objects.isNull(daJiaApiOrder.getCrossInsurance())) {
+            policyInfosDTOS = JSON.parseArray(JSON.toJSONString(daJiaApiOrder.getCrossInsurance()), NVHLODR1001Response.policyInfosDTO.class);
+        }
+        ODR1011Request odr1011Request = new ODR1011Request(paymentLinkVo.getOrder().getCompanyOrderNo(), parameters, policyInfosDTOS);
+        ODR1011Response payNo = null;
+        boolean flag = true;
+        Integer frequencyControl = 0;
+        while (flag) {
+            payNo = daJiaApiRequestComponent.getPayNo(odr1011Request);
+            if ("0000".equals(payNo.getStatus())) {
+                flag = false;
+            }
+            frequencyControl += 1;
+            if (frequencyControl > 20) {
+                throw new RuntimeException("获取支付二维码失败");
+            }
+            Thread.sleep(500);
+        }
+
+        if (payNo.getStatus().equals(Message.M0000.getCode())) {
+            resultsVo.setPaymentLink(payNo.getResult().getSignInfoUrl());
+        }
         return resultsVo;
     }
 
@@ -339,23 +354,213 @@ public class DaJiaApiRequestImpl implements DaJiaApiRequest {
         // 配置信息
         DaJiaApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaApiConfigureParameters.class,
                 orderBase.getAttributionInformationVo().getConfigInfo());
-
         // 上传影像信息
         List<InsuranceImageVo> imageVoList = insuranceUploadImageVo.getImageVoList();
-
-        ODR1013Request odr1013Request = new ODR1013Request(orderBase, parameters, imageVoList);
-        ODR1013Response odr1013Response = daJiaApiRequestComponent.uploadImage(odr1013Request);
-
+        ODR1013Request odr1013Request = new ODR1013Request(orderBase, parameters, imageVoList,daJiaApiOrder);
+        try {
+            ODR1013Response odr1013Response = daJiaApiRequestComponent.uploadImage(odr1013Request);
+        } catch (Exception e) {
+            throw new SystemException("上传途中异常,请重新上传或截取图片上传");
+        }
     }
 
     @Override
     public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
-        DaJiaApiOrder daJiaApiOrder = daJiaCrawlerOrderService.getById(downloadPolicyVo.getOrder().getOrdersNo());
-        return null;
+        // 配置信息
+        DaJiaApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaApiConfigureParameters.class,
+                downloadPolicyVo.getOrder().getAttributionInformationVo().getConfigInfo());
+
+        DownloadPolicyResultVo downloadPolicyResultVo = new DownloadPolicyResultVo();
+
+        String jqPolicyNo = downloadPolicyVo.getPolicie().getJqPolicyNo();
+        if(Objects.nonNull(jqPolicyNo)) {
+            queryPolicy(jqPolicyNo,downloadPolicyResultVo,parameters, InsuranceRisk.TRAFFIC.getCode());
+        }
+        String syPolicyNo = downloadPolicyVo.getPolicie().getSyPolicyNo();
+        if(Objects.nonNull(syPolicyNo)) {
+            queryPolicy(syPolicyNo,downloadPolicyResultVo,parameters, InsuranceRisk.BUSINESS.getCode());
+        }
+        String jyPolicyNo = downloadPolicyVo.getPolicie().getJyPolicyNo();
+        if(Objects.nonNull(jyPolicyNo)) {
+            queryJyPolicy(jyPolicyNo,downloadPolicyResultVo,parameters);
+        }
+        return downloadPolicyResultVo;
+    }
+
+    /**
+     * 查询驾意险保单
+     * @param policyNo
+     * @param downloadPolicyResultVo
+     * @param parameters
+     */
+    private void queryJyPolicy(String policyNo, DownloadPolicyResultVo downloadPolicyResultVo, DaJiaApiConfigureParameters parameters) {
+
+        NVHLODR2007Request nvhlodr2007Request = new NVHLODR2007Request(policyNo, parameters);
+
+        try {
+            NVHLODR2007Response nvhlodr2007Response = daJiaApiRequestComponent.accidentPremiumWarranty(nvhlodr2007Request);
+            if ("2000".equals(nvhlodr2007Response.getStatus())) {
+                String jyUrl = nvhlodr2007Response.getPolicyInfos().get(0).getCPdfUrl();
+                downloadPolicyResultVo.setJyUrl(jyUrl);
+            }else {
+                throw new SystemException(nvhlodr2007Response.getMessage());
+            }
+        }catch (Exception exception) {
+            exception.printStackTrace();
+            throw new SystemException("获取保单链接失败");
+        }
+    }
+
+    /**
+     * 查询保单
+     * @param policyNo
+     * @param downloadPolicyResultVo
+     */
+    private void queryPolicy(String policyNo, DownloadPolicyResultVo downloadPolicyResultVo,DaJiaApiConfigureParameters parameters, String riskCode) {
+        ArrayList<String> warrantys = new ArrayList<String>();
+        warrantys.add(policyNo);
+        String[] warrantysArray = warrantys.toArray(new String[0]);
+        VHLINS2005Request vhlins2005Request = new VHLINS2005Request(warrantysArray, parameters);
+        try {
+            VHLINS2005Response vhlins2005Response = daJiaApiRequestComponent.obtainWarranty(vhlins2005Request);
+            if (vhlins2005Response.getStatus().equals(Message.M0000.getCode())) {
+                //标志
+                if (vhlins2005Response.getResult().size() > 0) {
+                    VHLINS2005Response.ResultDTO resultDTO = vhlins2005Response.getResult().get(0);
+                    if (InsuranceRisk.TRAFFIC.getCode().equals(riskCode)) {
+                        if(StringUtils.isNotEmpty(resultDTO.getReturnBzUrl())){
+                            String jqFlagUrl = resultDTO.getReturnBzUrl();
+                            downloadPolicyResultVo.setJqFlagUrl(jqFlagUrl);
+                        }
+                        if(StringUtils.isNotEmpty(resultDTO.getReturnUrl())){
+                            String jqUrl = resultDTO.getReturnUrl();
+                            downloadPolicyResultVo.setJqUrl(jqUrl);
+                        }
+                    }
+                    if (InsuranceRisk.BUSINESS.getCode().equals(riskCode)) {
+                        if(StringUtils.isNotEmpty(resultDTO.getReturnUrl())){
+                            String syUrl = resultDTO.getReturnUrl();
+                            downloadPolicyResultVo.setSyUrl(syUrl);
+                        }
+                    }
+                }
+            } else {
+                throw new SystemException(vhlins2005Response.getMessage());
+            }
+        } catch (Exception exception) {
+            exception.printStackTrace();
+            throw new SystemException("获取保单链接失败");
+        }
     }
 
     @Override
     public OrderStatusResultVo queryOrderState(OrderStatusVo orderStatusVo) {
-        return null;
+        OrderStatusResultVo orderStatusResultVo = new OrderStatusResultVo();
+        // 配置信息
+        DaJiaApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(DaJiaApiConfigureParameters.class,
+                orderStatusVo.getOrder().getAttributionInformationVo().getConfigInfo());
+        ODR2010Request odr2010Request = new ODR2010Request(orderStatusVo.getOrder().getCompanyOrderNo(), parameters);
+        try{
+            ODR2010Response odr2010Response = daJiaApiRequestComponent.verifyPayment(odr2010Request);
+            if (odr2010Response.getStatus().equals(Message.M0000.getCode())) {
+
+                List<ODR2010Response.ResultDTO> result = odr2010Response.getResult();
+                //是否存在保单生成
+                if (checkBdGen(result) && !InsOrderStatusEnum.PAY_PENDING.equals(orderStatusVo.getInsOrders().getOrderStatus())) {
+                    List<ODR2010Response.ResultDTO> collect = result.stream().filter(x -> x.getNotifyType().equals("2009")).collect(Collectors.toList());
+                    for (int i = 0, length = collect.size(); i < length; i++) {
+                        //交强或商业 的 保单号
+                        if (collect.get(i).getProdNo().equals(CProdNo.JQ.getCode())) {
+                            orderStatusResultVo.setJqPolicyno(collect.get(i).getPlyNo());
+                        } else if (collect.get(i).getProdNo().equals(CProdNo.SY.getCode())) {
+                            orderStatusResultVo.setSyPolicyno(collect.get(i).getPlyNo());
+                        } else if (collect.get(i).getProdNo().equals(CProdNo.SY_XNY.getCode())) {
+                            //新能源保单号
+                            orderStatusResultVo.setSyPolicyno(collect.get(i).getPlyNo());
+                        }
+                    }
+                    orderStatusResultVo.setOrderStatus(InsOrderStatusEnum.UNDERWRITED);
+                }
+                //是否人工核保
+                if (!checkArtificial(result)) {
+                    orderStatusResultVo.setOrderStatus(InsOrderStatusEnum.STAFF_PROCESS);
+                    return orderStatusResultVo;
+                }
+                //是否存在核保退回
+                if (checkBack(result)) {
+                    orderStatusResultVo.setOrderStatus(InsOrderStatusEnum.WAIT_AUDIT);
+                    return orderStatusResultVo;
+                }
+                //存在 核保通过 并且 不存在支付连接 则 生成支付连接
+                if (checkPayLink(result, orderStatusVo.getInsOrders().getPayLink())) {
+                    // 刷新支付连接
+                    PaymentLinkVo paymentLinkVo = new PaymentLinkVo();
+                    paymentLinkVo.setOrder(orderStatusVo.getOrder());
+                    PaymentLinkResultsVo paymentLink = getPaymentLink(paymentLinkVo);
+                    String paymentLinkUrl = paymentLink.getPaymentLink();
+                    if(StringUtils.isNotEmpty(paymentLinkUrl)){
+                        orderStatusResultVo.setOrderStatus(InsOrderStatusEnum.PAY_PENDING);
+                        orderStatusResultVo.setPaymentLink(paymentLinkUrl);
+                    }else {
+                        throw new SystemException("获取支付二维码失败");
+                    }
+                }
+            }
+
+        }catch (Exception exception) {
+            exception.printStackTrace();
+        }
+        return orderStatusResultVo;
+    }
+
+    /**
+     * 检测是否存在保单生成状态
+     * @param result
+     * @return
+     */
+    public boolean checkBdGen(List<ODR2010Response.ResultDTO> result) {
+        List<ODR2010Response.ResultDTO> collect = result.stream().filter(x -> x.getNotifyType().equals("2009")).collect(Collectors.toList());
+        return !collect.isEmpty();
+    }
+
+
+    /**
+     * 检测核保通过是否存在支付连接
+     * @param result
+     * @param payLink
+     * @return
+     */
+    public boolean checkPayLink(List<ODR2010Response.ResultDTO> result, String payLink) {
+        List<ODR2010Response.ResultDTO> traverseCollect = result.stream().filter(x -> x.getNotifyType().equals("2005")).collect(Collectors.toList());
+        if (!traverseCollect.isEmpty() && ("".equals(payLink) || payLink != null)) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 检测是否核保退回
+     * @param result
+     * @return
+     */
+    public boolean checkBack(List<ODR2010Response.ResultDTO> result) {
+        List<ODR2010Response.ResultDTO> backCollect = result.stream().filter(x -> x.getNotifyType().equals("2003") || x.getNotifyType().equals("2004")).collect(Collectors.toList());
+        if (!backCollect.isEmpty()) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 检测是否进入人工
+     * @param result
+     * @return
+     */
+    public boolean checkArtificial(List<ODR2010Response.ResultDTO> result) {
+        List<ODR2010Response.ResultDTO> artificialCollect = result.stream().filter(x -> x.getNotifyType().equals("2002")).collect(Collectors.toList());
+        if (!artificialCollect.isEmpty()) {
+            return true;
+        }
+        return false;
     }
 }

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -283,7 +283,7 @@ public class UnifyOrderManager {
      */
     @Operation(summary = "获取支付链接")
     @PostMapping("/getPaymentLink")
-    public HttpResult getPaymentLink(@RequestBody PaymentLinkVo paymentLinkVo) throws JsonProcessingException {
+    public HttpResult getPaymentLink(@RequestBody PaymentLinkVo paymentLinkVo) throws Exception {
         //获取保司实体
         InsOrders insOrders = insOrdersService.getById(paymentLinkVo.getOrder().getOrdersNo());
         AssertionUtils.isFail(Objects.isNull(insOrders),"订单不存在");