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

Merge remote-tracking branch 'origin/master'

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

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

@@ -58,9 +58,6 @@ public final class ChengTaiAPIQuoteResultsVoBuild {
         // 费用因子
 //        List<ExpenseFactor> expenseFactors = buildExpenseFactor(calculatePremiumResponse.getPriceInfoList());
 //        quoteResultsVo.setExpenseFactors(expenseFactors);
-
-
-
         return quoteResultsVo;
     }
 

+ 56 - 1
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/component/ChengTaiRequestApiComponent.java

@@ -19,7 +19,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.redisson.api.RLock;
 import org.redisson.api.RMap;
 import org.redisson.api.RedissonClient;
-import org.springframework.beans.BeanUtils;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
@@ -372,4 +371,60 @@ public class ChengTaiRequestApiComponent {
         res.setMessage(response.getMessage());
         return res;
     }
+
+    /**
+     * 保单查询
+     * @param downLoadDocumentUrlRequest
+     * @param httpHeaders
+     * @param partnerCode
+     * @return
+     */
+    public DownLoadDocumentUrlResponse downLoadDocumentUrl(DownLoadDocumentUrlRequest downLoadDocumentUrlRequest, HttpHeaders httpHeaders, String partnerCode) {
+        DownLoadDocumentUrlResponse response = requestRequestUrl(RequestUrl.Z00011,
+                downLoadDocumentUrlRequest,
+                DownLoadDocumentUrlResponse.class,
+                httpHeaders,
+                partnerCode);
+        DownLoadDocumentUrlResponse res = JSON.parseObject(response.getDecodeData()).toJavaObject(DownLoadDocumentUrlResponse.class);
+        res.setCode(response.getCode());
+        res.setMessage(response.getMessage());
+        return res;
+    }
+
+    /**
+     * 投保结果查询
+     * @param submitVerifyResultRequest
+     * @param httpHeaders
+     * @param partnerCode
+     * @return
+     */
+    public SubmitVerifyResultResponse auditSaveResult(SubmitVerifyResultRequest submitVerifyResultRequest, HttpHeaders httpHeaders, String partnerCode) {
+        SubmitVerifyResultResponse response = requestRequestUrl(RequestUrl.Z00009,
+                submitVerifyResultRequest,
+                SubmitVerifyResultResponse.class,
+                httpHeaders,
+                partnerCode);
+        SubmitVerifyResultResponse res = JSON.parseObject(response.getDecodeData()).toJavaObject(SubmitVerifyResultResponse.class);
+        res.setCode(response.getCode());
+        res.setMessage(response.getMessage());
+        return res;
+    }
+
+    /**
+     * @param underwritingResultRequest
+     * @param httpHeaders
+     * @param partnerCode
+     * @return
+     */
+    public UnderwritingResultResponse auditResult(UnderwritingResultRequest underwritingResultRequest, HttpHeaders httpHeaders, String partnerCode) {
+        UnderwritingResultResponse response = requestRequestUrl(RequestUrl.Z00008,
+                underwritingResultRequest,
+                UnderwritingResultResponse.class,
+                httpHeaders,
+                partnerCode);
+        UnderwritingResultResponse res = JSON.parseObject(response.getDecodeData()).toJavaObject(UnderwritingResultResponse.class);
+        res.setCode(response.getCode());
+        res.setMessage(response.getMessage());
+        return res;
+    }
 }

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

@@ -0,0 +1,56 @@
+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;
+
+/**
+ * 诚泰图片类型枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum ImageTypeEnum {
+
+    IT_1("1", "行驶证正面",new String[]{
+            InsuranceImageEnum.C01.getCode(),
+    }),
+    IT_11("11", "行驶证反面",new String[]{
+            InsuranceImageEnum.D01.getCode(),
+    }),
+
+    IT_2("2", "车主身份证正面",new String[]{
+            InsuranceImageEnum.C02.getCode(), InsuranceImageEnum.Y02.getCode()
+    }),
+    IT_3("3", "车主身份证反面",new String[]{
+            InsuranceImageEnum.D02.getCode(),
+    }),
+
+    IT_4("4", "投保人身份证正面",new String[]{
+            InsuranceImageEnum.C03.getCode(), InsuranceImageEnum.Y03.getCode()
+    }),
+    IT_5("5", "投保人身份证反面",new String[]{
+            InsuranceImageEnum.D03.getCode(),
+    }),
+
+    IT_6("6", "被保人身份证正面",new String[]{
+            InsuranceImageEnum.C04.getCode(), InsuranceImageEnum.Y04.getCode()
+    }),
+    IT_7("7", "被保人身份证反面",new String[]{
+            InsuranceImageEnum.D04.getCode(),
+    }),
+
+    IT_20("20", "购车发票", new String[]{
+            InsuranceImageEnum.GC00.getCode()
+    }),
+
+    IT_21("21", "验车照", new String[]{"C05"}),
+    IT_22("22", "其他影像资料",new String[]{}),
+    IT_30("30", "验车视频",new String[]{});
+    private final String code;
+
+    private final String desc;
+
+    private final String[] imagesType;
+
+}

+ 21 - 0
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/request/DownLoadDocumentUrlRequest.java

@@ -0,0 +1,21 @@
+package com.jzg.quotation.chengtai.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 【保单下载】请求实体
+ */
+@NoArgsConstructor
+@Data
+public class DownLoadDocumentUrlRequest extends BaseRequest{
+
+    @JsonProperty("policyNo")
+    private String policyNo;
+
+    public DownLoadDocumentUrlRequest(String ppartnerCode, String policyNo) {
+        super(ppartnerCode);
+        this.policyNo = policyNo;
+    }
+}

+ 21 - 0
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/request/UnderwritingResultRequest.java

@@ -0,0 +1,21 @@
+package com.jzg.quotation.chengtai.api.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 【核保结果查询】请求实体
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class UnderwritingResultRequest extends BaseRequest{
+
+    @JsonProperty("orderId")
+    private String orderId;
+
+    public UnderwritingResultRequest(String partnerCode, String orderId) {
+        super(partnerCode);
+        this.orderId = orderId;
+    }
+}

+ 40 - 37
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/request/UploadFileRequest.java

@@ -1,11 +1,14 @@
 package com.jzg.quotation.chengtai.api.entity.request;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.chengtai.api.entity.constants.enums.ImageTypeEnum;
+import com.jzg.quotation.commons.constant.enums.base.InsuranceImageEnum;
 import com.jzg.quotation.commons.entity.vo.image.InsuranceImageVo;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -49,39 +52,39 @@ public class UploadFileRequest extends BaseRequest{
         this.orderId = orderNo;
         String imageType = insuranceImageVo.getImageType();
 
-//        InsuranceImageEnum insuranceImageEnum = Enum.valueOf(InsuranceImageEnum.class, imageType);
+        InsuranceImageEnum insuranceImageEnum = Enum.valueOf(InsuranceImageEnum.class, imageType);
 
-//        for (ImageTypeEnum imageTypeEnum : ImageTypeEnum.values()) {
-//            boolean contains = Arrays.asList(imageTypeEnum.getImagesType()).contains(insuranceImageEnum.getCode());
-//            if(contains){
-//                this.imageType = imageTypeEnum.getCode();
-//                this.fileList = Arrays.asList(new FileListDTO(insTaskImagesBase64, imageTypeEnum));
-//                if(InsuranceImageEnum.C01.getCode().equals(this.imageType)){
-//                    this.imageObjType = "1";
-//                }else if(InsuranceImageEnum.D01.getCode().equals(this.imageType)){
-//                    this.imageObjType = "11";
-//                }else if(InsuranceImageEnum.C02.getCode().equals(this.imageType)
-//                    || InsuranceImageEnum.Y02.getCode().equals(this.imageType)
-//                ){
-//                    this.imageObjType = "2";
-//                } else if(InsuranceImageEnum.D02.getCode().equals(this.imageType)){
-//                    this.imageObjType = "3";
-//                } else if(InsuranceImageEnum.C03.getCode().equals(this.imageType)
-//                        || InsuranceImageEnum.Y03.getCode().equals(this.imageType)
-//                ){
-//                    this.imageObjType = "4";
-//                } else if(InsuranceImageEnum.D03.getCode().equals(this.imageType)){
-//                    this.imageObjType = "5";
-//                } else if(InsuranceImageEnum.C04.getCode().equals(this.imageType)
-//                        || InsuranceImageEnum.Y04.getCode().equals(this.imageType)
-//                ){
-//                    this.imageObjType = "6";
-//                } else if(InsuranceImageEnum.D04.getCode().equals(this.imageType)){
-//                    this.imageObjType = "7";
-//                }
-//                break;
-//            }
-//        }
+        for (ImageTypeEnum imageTypeEnum : ImageTypeEnum.values()) {
+            boolean contains = Arrays.asList(imageTypeEnum.getImagesType()).contains(insuranceImageEnum.getCode());
+            if(contains){
+                this.imageType = imageTypeEnum.getCode();
+                this.fileList = Arrays.asList(new FileListDTO(insuranceImageVo.getImageBase64List().get(0), imageTypeEnum));
+                if(InsuranceImageEnum.C01.getCode().equals(this.imageType)){
+                    this.imageObjType = "1";
+                }else if(InsuranceImageEnum.D01.getCode().equals(this.imageType)){
+                    this.imageObjType = "11";
+                }else if(InsuranceImageEnum.C02.getCode().equals(this.imageType)
+                    || InsuranceImageEnum.Y02.getCode().equals(this.imageType)
+                ){
+                    this.imageObjType = "2";
+                } else if(InsuranceImageEnum.D02.getCode().equals(this.imageType)){
+                    this.imageObjType = "3";
+                } else if(InsuranceImageEnum.C03.getCode().equals(this.imageType)
+                        || InsuranceImageEnum.Y03.getCode().equals(this.imageType)
+                ){
+                    this.imageObjType = "4";
+                } else if(InsuranceImageEnum.D03.getCode().equals(this.imageType)){
+                    this.imageObjType = "5";
+                } else if(InsuranceImageEnum.C04.getCode().equals(this.imageType)
+                        || InsuranceImageEnum.Y04.getCode().equals(this.imageType)
+                ){
+                    this.imageObjType = "6";
+                } else if(InsuranceImageEnum.D04.getCode().equals(this.imageType)){
+                    this.imageObjType = "7";
+                }
+                break;
+            }
+        }
     }
 
     @NoArgsConstructor
@@ -94,10 +97,10 @@ public class UploadFileRequest extends BaseRequest{
         @JsonProperty("fileId")
         private String fileId;
 
-//        public FileListDTO(InsTaskImagesBase64 insTaskImagesBase64, ImageTypeEnum imageTypeEnum){
-//            String suffix = insTaskImagesBase64.getFileName().substring(insTaskImagesBase64.getFileName().lastIndexOf("."));
-//            this.fileName = imageTypeEnum.getDesc() + suffix;
-//            this.fileContent = insTaskImagesBase64.getBase64String();
-//        }
+        public FileListDTO(InsuranceImageVo.ImageDTO imageDTO, ImageTypeEnum imageTypeEnum){
+            String suffix = imageDTO.getImageName().substring(imageDTO.getImageName().lastIndexOf("."));
+            this.fileName = imageTypeEnum.getDesc() + suffix;
+            this.fileContent = imageDTO.getImageBase64Str();
+        }
     }
 }

+ 29 - 0
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/response/DownLoadDocumentUrlResponse.java

@@ -0,0 +1,29 @@
+package com.jzg.quotation.chengtai.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+@Data
+public class DownLoadDocumentUrlResponse extends BaseResponse{
+
+    @JsonProperty("ciDownLoad")
+    private String ciDownLoad;
+    @JsonProperty("ciDownloadResponseCode")
+    private String ciDownloadResponseCode;
+    @JsonProperty("biDownloadResponseCode")
+    private String biDownloadResponseCode;
+    @JsonProperty("biDownLoad")
+    private String biDownLoad;
+    @JsonProperty("businessType")
+    private String businessType;
+    @JsonProperty("contractNoBi")
+    private String contractNoBi;
+    @JsonProperty("contractNoCi")
+    private String contractNoCi;
+    @JsonProperty("ahiDownLoad")
+    private String ahiDownLoad;
+
+
+}

+ 25 - 0
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/entity/response/UnderwritingResultResponse.java

@@ -0,0 +1,25 @@
+package com.jzg.quotation.chengtai.api.entity.response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor
+@Data
+public class UnderwritingResultResponse extends BaseResponse{
+
+    @JsonProperty("finalRuleResult")
+    private String finalRuleResult;
+    @JsonProperty("contractNoACCI")
+    private String contractNoACCI;
+    @JsonProperty("orderId")
+    private String orderId;
+    @JsonProperty("finalRuleResultMsg")
+    private String finalRuleResultMsg;
+    @JsonProperty("contractNoBI")
+    private String contractNoBI;
+    @JsonProperty("contractNoCI")
+    private String contractNoCI;
+    @JsonProperty("finalRuleResultEndDate")
+    private String finalRuleResultEndDate;
+}

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

@@ -3,6 +3,7 @@ package com.jzg.quotation.chengtai.api.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
 import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
@@ -382,19 +383,112 @@ public class ChengTaiApiRequestImpl implements ChengTaiApiRequest {
         List<InsuranceImageVo> imageVoList = insuranceUploadImageVo.getImageVoList();
         imageVoList.forEach(imageVo -> {
             UploadFileRequest uploadFileRequest = new UploadFileRequest(imageVo, chengTaiApiOrder.getOrderNo(), chengTaiApiProperties.getPartnerCode());
-            UploadFileResponse uploadFileResponse = chengTaiRequestApiComponent.submitImage(uploadFileRequest,httpHeaders,chengTaiApiProperties.getPartnerCode());
+            try {
+                UploadFileResponse uploadFileResponse = chengTaiRequestApiComponent.submitImage(uploadFileRequest,httpHeaders,chengTaiApiProperties.getPartnerCode());
+            } catch (Exception e) {
+                throw new SystemException("上传途中异常,请重新上传或截取图片上传");
+            }
         });
     }
 
     @Override
-    public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo orderBase) {
-        ChengTaiApiOrder chengTaiApiOrder = chengTaiCrawlerOrderService.getById(orderBase.getOrder().getOrdersNo());
-        return null;
+    public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
+        // 配置信息
+        ChengTaiApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ChengTaiApiConfigureParameters.class, downloadPolicyVo.getOrder()
+                .getAttributionInformationVo()
+                .getConfigInfo());
+        HttpHeaders httpHeaders = chengTaiRequestApiComponent.getHttpHeaders(parameters);
+
+        DownloadPolicyResultVo downloadPolicyResultVo = new DownloadPolicyResultVo();
+        String jqPolicyNo = downloadPolicyVo.getPolicie().getJqPolicyNo();
+        if(Objects.nonNull(jqPolicyNo)) {
+            queryPolicy(jqPolicyNo, chengTaiApiProperties.getPartnerCode(), httpHeaders,downloadPolicyResultVo);
+        }
+        String syPolicyNo = downloadPolicyVo.getPolicie().getSyPolicyNo();
+        if(Objects.nonNull(syPolicyNo)) {
+            queryPolicy(syPolicyNo,chengTaiApiProperties.getPartnerCode(), httpHeaders,downloadPolicyResultVo);
+        }
+        String jyPolicyNo = downloadPolicyVo.getPolicie().getJyPolicyNo();
+        if(Objects.nonNull(jyPolicyNo)) {
+            queryPolicy(jyPolicyNo,chengTaiApiProperties.getPartnerCode(), httpHeaders,downloadPolicyResultVo);
+        }
+
+        return downloadPolicyResultVo;
     }
 
+    /**
+     * 查询保单
+     * @param policyNo
+     * @param partnerCode
+     */
+    private void queryPolicy(String policyNo,String partnerCode,HttpHeaders httpHeaders, DownloadPolicyResultVo downloadPolicyResultVo){
+        DownLoadDocumentUrlRequest request = new DownLoadDocumentUrlRequest(chengTaiApiProperties.getPartnerCode(),policyNo);
+        DownLoadDocumentUrlResponse response = chengTaiRequestApiComponent.downLoadDocumentUrl(request, httpHeaders,partnerCode);
+        if(ResponseCode.R_000.getCode().equals(response.getCode())){
+            if (StringUtils.isNotEmpty(response.getCiDownLoad())) {
+                String jqUrl = response.getCiDownLoad();
+                downloadPolicyResultVo.setJqUrl(jqUrl);
+            }
+            if (StringUtils.isNotEmpty(response.getBiDownLoad())) {
+                String syUrl = response.getCiDownLoad();
+                downloadPolicyResultVo.setSyUrl(syUrl);
+            }
+            if (StringUtils.isNotEmpty(response.getAhiDownLoad())) {
+                String jyUrl = response.getAhiDownLoad();
+                downloadPolicyResultVo.setJyUrl(jyUrl);
+            }
+        } else {
+            throw new SystemException(response.message);
+        }
+    }
+
+
     @Override
     public OrderStatusResultVo queryOrderState(OrderStatusVo orderStatusVo) {
-        return null;
+        OrderStatusResultVo orderStatusResultVo = new OrderStatusResultVo();
+        // 配置信息
+        ChengTaiApiConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ChengTaiApiConfigureParameters.class, orderStatusVo.getOrder()
+                .getAttributionInformationVo()
+                .getConfigInfo());
+        HttpHeaders httpHeaders = chengTaiRequestApiComponent.getHttpHeaders(parameters);
+
+        SubmitVerifyResultRequest submitVerifyResultRequest = new SubmitVerifyResultRequest(chengTaiApiProperties.getPartnerCode(),orderStatusVo.getOrder().getCompanyOrderNo());
+        SubmitVerifyResultResponse submitVerifyResultResponse = chengTaiRequestApiComponent.auditSaveResult(submitVerifyResultRequest,httpHeaders,chengTaiApiProperties.getPartnerCode());
+
+        // 查询核保结果
+        UnderwritingResultRequest resultRequest = new UnderwritingResultRequest(chengTaiApiProperties.getPartnerCode(),orderStatusVo.getOrder().getCompanyOrderNo());
+        UnderwritingResultResponse underwritingResultResponse = chengTaiRequestApiComponent.auditResult(resultRequest,httpHeaders,chengTaiApiProperties.getPartnerCode());
+        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());
+
+            List<SubmitVerifyResultResponse.DataDTO> data = submitVerifyResultResponse.getData();
+            if(CollUtil.isNotEmpty(data)){
+                for (SubmitVerifyResultResponse.DataDTO dataDTO : data) {
+                    if(RiskCodeEnum.R1002.getCode().equals(dataDTO.getRiskCode())){
+                        orderStatusResultVo.setJqPolicyno(dataDTO.getPolicyCode());
+                        orderStatusResultVo.setJqApplyNo(dataDTO.getInsCode());
+                    }
+                    if (RiskCodeEnum.R0821.getCode().equals(dataDTO.getRiskCode())) {
+                        orderStatusResultVo.setSyPolicyno(dataDTO.getPolicyCode());
+                        orderStatusResultVo.setSyApplyNo(dataDTO.getInsCode());
+                    }
+                    if (RiskCodeEnum.R1116.getCode().equals(dataDTO.getRiskCode())) {
+                        orderStatusResultVo.setJyPolicyno(dataDTO.getPolicyCode());
+                        orderStatusResultVo.setJyApplyNo(dataDTO.getInsCode());
+                    }
+                }
+            }
+        }else{
+            //失败原因
+            orderStatusResultVo.setOrderStatus(InsOrderStatusEnum.AUDIT_FAIL);
+            orderStatusResultVo.setErrorMsg(submitVerifyResultResponse.getMessage());
+        }
+        return orderStatusResultVo;
     }
 
     @Data