Bläddra i källkod

二维码调整,报价流程完善

785834757 1 år sedan
förälder
incheckning
b9772705b3
36 ändrade filer med 712 tillägg och 123 borttagningar
  1. 40 0
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersPdfUrl.java
  2. 24 0
      commons/src/main/java/com/jzg/commons/entity/orders/vo/HistoryQuoteResultVo.java
  3. 1 1
      commons/src/main/java/com/jzg/commons/entity/quote/vo/CarInfoVo.java
  4. 62 0
      platform/src/main/java/com/jzg/controller/FileUploadController.java
  5. 3 2
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/api/service/impl/ChengTaiApiRequestImpl.java
  6. 3 2
      tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/crawler/service/ChengTaiCrawlerRequestService.java
  7. 9 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/PlatformClient.java
  8. 24 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/DownloadPolicyResultVo.java
  9. 28 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/DownloadPolicyVo.java
  10. 1 1
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/service/QuotationBaseService.java
  11. 3 3
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/api/service/impl/DaJiaApiRequestImpl.java
  12. 3 2
      tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java
  13. 5 5
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/api/service/Impl/GuoRenApiRequestImpl.java
  14. 4 3
      tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/service/impl/HuaNongCrawlerRequestImpl.java
  15. 4 4
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quote/huatai/api/service/Impl/HuaTaiApiRequestImpl.java
  16. 28 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java
  17. 38 6
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/QrCodeController.java
  18. 37 11
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  19. 37 4
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/factory/CompanyFactory.java
  20. 5 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersMapper.java
  21. 9 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersPdfUrlMapper.java
  22. 4 3
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarInfoService.java
  23. 4 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersRiskService.java
  24. 9 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java
  25. 0 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/CarModelServiceImpl.java
  26. 5 6
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarInfoServiceImpl.java
  27. 4 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersQrcodeServiceImpl.java
  28. 6 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersRiskServiceImpl.java
  29. 96 50
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  30. 20 0
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  31. 3 3
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKQuotationBaseServiceImpl.java
  32. 3 2
      tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/service/impl/YangGuangApiRequestImpl.java
  33. 9 9
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/components/YcRequestApiComponents.java
  34. 73 0
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/DownloadPolicyRequest.java
  35. 43 0
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/response/DownloadPolicyResponse.java
  36. 65 2
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/service/impl/YongChengApiRequestImpl.java

+ 40 - 0
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersPdfUrl.java

@@ -0,0 +1,40 @@
+package com.jzg.commons.entity.orders.po;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@Schema(description = "保单存储")
+public class InsOrdersPdfUrl {
+
+    @Schema(description = "订单号")
+    private String orderNo;
+
+    @Schema(description = "险种信息")
+    private String riskCode;
+
+    @Schema(description = "交强保单号")
+    private BigDecimal jqNo;
+
+    @Schema(description = "商业保单号")
+    private String syNo;
+
+    @Schema(description = "驾意保单号")
+    private String jyNo;
+
+    @Schema(description = "交强保单路径")
+    private String jqUrl;
+
+    @Schema(description = "商业保单路径")
+    private String syUrl;
+
+    @Schema(description = "驾意保单路径")
+    private String jyUrl;
+
+    @Schema(description = "交强标志路径")
+    private Integer jqSignUrl;
+}

+ 24 - 0
commons/src/main/java/com/jzg/commons/entity/orders/vo/HistoryQuoteResultVo.java

@@ -0,0 +1,24 @@
+package com.jzg.commons.entity.orders.vo;
+
+import com.jzg.commons.entity.orders.po.InsOrders;
+import lombok.Data;
+
+import java.util.List;
+
+
+/**
+ * 获取历史报价信息
+ */
+@Data
+public class HistoryQuoteResultVo {
+
+    /**
+     * 订单号
+     */
+    private String orderNo;
+
+    /**
+     * 车牌号
+     */
+    private String licenseNo;
+}

+ 1 - 1
commons/src/main/java/com/jzg/commons/entity/quote/vo/CarInfoVo.java

@@ -233,7 +233,7 @@ public class CarInfoVo implements Serializable {
         this.carYear = carInfo.getCarYear();
         this.seatCount = String.valueOf(carInfo.getSeatCount());
         this.completeKerbMass = String.valueOf(carInfo.getCompleteKerbMass());
-        this.limitLoad = String.valueOf(carInfo.getLimitLoad());
+        this.limitLoad = carInfo.getLimitLoad() != null ? String.valueOf(carInfo.getLimitLoad()) : null;
         this.powerScale = String.valueOf(carInfo.getPowerScale());
         this.purchasePrice = String.valueOf(carInfo.getPurchasePrice());
         this.carNatureCode = carInfo.getCarNatureCode();

+ 62 - 0
platform/src/main/java/com/jzg/controller/FileUploadController.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.po.SysUploadFiles;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.commons.request.RequestSingleParam;
 import com.jzg.commons.util.FileUtils;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.commons.util.idgen.IdGenerate;
@@ -18,7 +20,12 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLDecoder;
 import java.time.LocalDateTime;
 
 /**
@@ -66,6 +73,37 @@ public class FileUploadController extends BaseController {
         }
     }
 
+    @PostMapping("/uploadUrl")
+    @Operation(summary = "网络文件上传接口", description = "文件上传接口")
+    public HttpResult<SysUploadFiles> uploadUrlFile(String urlString, String fileName) {
+        SysUploadFiles sysUploadFiles = new SysUploadFiles();
+        try {
+            URL url = new URL(URLDecoder.decode(urlString));
+            URLConnection connection = url.openConnection();
+            // 获取文件大小
+            long contentLength = connection.getContentLengthLong();
+            // 获取文件类型
+            String contentType = connection.getContentType();
+            String extension = "";
+
+            if(contentType.contains("application/pdf") || contentType.contains("text/html"))
+            {
+                extension = ".pdf";
+            }
+            try (InputStream inputStream = connection.getInputStream()) {
+                sysUploadFiles = uploadFileToMinIo(inputStream, fileName, contentLength, contentType, extension);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }catch (MalformedURLException e){
+            throw new RuntimeException("url格式错误");
+        } catch (IOException e) {
+            throw new SystemException("url错误");
+        }
+        return HttpResult.ok(sysUploadFiles);
+    }
+
+
     private String getFileExtension(String fileName) {
         return fileName.substring(fileName.lastIndexOf("."));
     }
@@ -135,4 +173,28 @@ public class FileUploadController extends BaseController {
         sysUploadFilesMapper.insert(sysUploadFiles);
         return sysUploadFiles;
     }
+
+
+    private SysUploadFiles uploadFileToMinIo(InputStream fileInputStream, String objectName, Long contentLength, String contentType, String extension) throws Exception {
+        // 上传到minio
+        ObjectWriteResponse objectWriteResponse = minioClient.putObject(PutObjectArgs.builder()
+                .bucket(bucketName)
+                .object(objectName)
+                .stream(fileInputStream, contentLength, -1)
+                .contentType(contentType)
+                .build());
+
+        SysUploadFiles sysUploadFiles = new SysUploadFiles();
+        sysUploadFiles.setId(IdGenerate.nextId());
+        sysUploadFiles.setFileName(objectName);
+        sysUploadFiles.setFileType(extension.substring(1));
+        StatObjectResponse fileContent = MinioUtils.getFileStatusInfo(bucketName,objectName);
+        sysUploadFiles.setFileSize(fileContent.size() + "");
+        sysUploadFiles.setBucketName(bucketName);
+        sysUploadFiles.setEtag(objectWriteResponse.etag());
+        sysUploadFiles.setCreateTime(LocalDateTime.now());
+        sysUploadFiles.setDownloadUrl(MinioUtils.getPresignedObjectUrl(bucketName,objectName));
+        sysUploadFilesMapper.insert(sysUploadFiles);
+        return sysUploadFiles;
+    }
 }

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

@@ -384,8 +384,9 @@ public class ChengTaiApiRequestImpl implements ChengTaiApiRequest {
     }
 
     @Override
-    public void downloadPolicy(OrderBase orderBase) {
-        ChengTaiApiOrder chengTaiApiOrder = chengTaiCrawlerOrderService.getById(orderBase.getOrdersNo());
+    public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo orderBase) {
+        ChengTaiApiOrder chengTaiApiOrder = chengTaiCrawlerOrderService.getById(orderBase.getOrder().getOrdersNo());
+        return null;
     }
 
     @Override

+ 3 - 2
tenant/insurance/quotation-chengtai/src/main/java/com/jzg/quotation/chengtai/crawler/service/ChengTaiCrawlerRequestService.java

@@ -766,10 +766,10 @@ public class ChengTaiCrawlerRequestService implements QuotationApiBaseService {
     }
 
     @Override
-    public void downloadPolicy(OrderBase orderBase) {
+    public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
         String token = login();
 
-        String ordersNo = orderBase.getOrdersNo();
+        String ordersNo = downloadPolicyVo.getOrder().getOrdersNo();
 
         ChengTaiPremiumcalParam param = chengTaiPremiumcalRepository.findByOrdersNo(ordersNo);
 
@@ -801,6 +801,7 @@ public class ChengTaiCrawlerRequestService implements QuotationApiBaseService {
 
             System.out.println("下载链接:" + downLoadURL);
         }
+        return null;
     }
 
 

+ 9 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/PlatformClient.java

@@ -4,9 +4,11 @@ import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.agreement.po.PtlAgreementAttribution;
 import com.jzg.commons.entity.po.EsmInsCompany;
 import com.jzg.commons.entity.po.QrBarcodeConfig;
+import com.jzg.commons.entity.po.SysUploadFiles;
 import com.jzg.commons.entity.vo.PersonAreaVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -38,4 +40,11 @@ public interface PlatformClient {
             @RequestParam("apiType") String apiType,
             @RequestHeader("Authorization") String authToken);
 
+    //上传保单
+    @PostMapping("/file/uploadUrl")
+    public HttpResult<SysUploadFiles> uploadUrl(
+            @RequestParam("urlString") String urlString,
+            @RequestParam("fileName") String fileName
+    );
+
 }

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

@@ -0,0 +1,24 @@
+package com.jzg.quotation.commons.entity.vo.aggregated;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 车险保单返回
+ */
+@Data
+public class DownloadPolicyResultVo {
+
+
+    @Schema(description = "交强险标志地址")
+    private String jqFlagUrl;
+
+    @Schema(description = "交强险保单地址")
+    private String jqUrl;
+
+    @Schema(description = "商业险保单地址")
+    private String syUrl;
+
+    @Schema(description = "保单地址")
+    private String jyUrl;
+}

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

@@ -0,0 +1,28 @@
+package com.jzg.quotation.commons.entity.vo.aggregated;
+
+import com.jzg.commons.entity.orders.po.InsOrdersPolicy;
+import com.jzg.commons.entity.orders.po.InsOrdersRisk;
+import com.jzg.quotation.commons.entity.vo.base.OrderBase;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Data
+public class DownloadPolicyVo {
+
+    private OrderBase order;
+
+    /**
+     * 险种信息
+     */
+    private List<InsOrdersRisk> risks;
+
+    /**
+     * 投保单号信息
+     */
+    private InsOrdersPolicy policie;
+}

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

@@ -37,7 +37,7 @@ public interface QuotationBaseService {
     /**
      * 下载保单
      */
-    void downloadPolicy(OrderBase orderBase);
+    DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo);
     /**
      * 查询订单状态
      */

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

@@ -171,9 +171,9 @@ public class DaJiaApiRequestImpl implements DaJiaApiRequest {
     }
 
     @Override
-    public void downloadPolicy(OrderBase orderBase) {
-        DaJiaApiOrder daJiaApiOrder = daJiaCrawlerOrderService.getById(orderBase.getOrdersNo());
-
+    public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
+        DaJiaApiOrder daJiaApiOrder = daJiaCrawlerOrderService.getById(downloadPolicyVo.getOrder().getOrdersNo());
+        return null;
     }
 
     @Override

+ 3 - 2
tenant/insurance/quotation-dajia/src/main/java/com/jzg/quotation/dajia/crawler/service/impl/DaJiaCrawlerRequestImpl.java

@@ -144,12 +144,13 @@ public class DaJiaCrawlerRequestImpl implements DaJiaCrawlerRequest {
     }
 
     @Override
-    public void downloadPolicy(OrderBase orderBase) {
-        AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
+    public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo orderBase) {
+        AttributionInformationVo attributionInformationVo = orderBase.getOrder().getAttributionInformationVo();
         HttpHeaders headers = daJiaCrawlerRequestComponent.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
 
         DaJiaCrawlerDownloadRequest daJiaCrawlerDownloadRequest = new DaJiaCrawlerDownloadRequest();
         DaJiaCrawlerDownloadResponse response = daJiaCrawlerRequestComponent.electronPolicyIODownload(daJiaCrawlerDownloadRequest, headers);
+        return null;
     }
 
     @Override

+ 5 - 5
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/api/service/Impl/GuoRenApiRequestImpl.java

@@ -189,12 +189,12 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
      * @param orderBase
      */
     @Override
-    public void downloadPolicy(OrderBase orderBase) {
+    public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
         //配置信息
-        GuoRenConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(GuoRenConfigureParameters.class, orderBase.getAttributionInformationVo().getConfigInfo());
+        GuoRenConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(GuoRenConfigureParameters.class, downloadPolicyVo.getOrder().getAttributionInformationVo().getConfigInfo());
 
         String policyPrintType = "";//以后增加赋值
-        GuoRenApiOrder guoRenApiOrder = guoRenApiOrderService.findByOrdersNo(orderBase.getOrdersNo());
+        GuoRenApiOrder guoRenApiOrder = guoRenApiOrderService.findByOrdersNo(downloadPolicyVo.getOrder().getOrdersNo());
         String riskCode = "";
         String templateName;
         String busNo = "";
@@ -217,12 +217,12 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
         } else if (InsuranceRisk.ACCIDENT.getCode().equals(riskCode)) {
             //busNo = policyPrintVo.getPolicyNumber();
             url = guoRenRequestApiComponent.noCarElectronicPolicy(properties.getChannelCode(),
-                    orderBase.getOrdersNo(), busNo);//以后需观察参数是否正确
+                    downloadPolicyVo.getOrder().getOrdersNo(), busNo);//以后需观察参数是否正确
             templateName = busNo + "-非车险保单.pdf";
         } else {
             throw new SystemException("保险编号异常");
         }
-
+        return null;
     }
 
     /**

+ 4 - 3
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quote/huanong/crawler/service/impl/HuaNongCrawlerRequestImpl.java

@@ -128,12 +128,12 @@ public class HuaNongCrawlerRequestImpl implements HuaNongCrawlerRequest {
     }
 
     @Override
-    public void downloadPolicy(OrderBase orderBase) {
+    public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
         // 获取token
-        AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
+        AttributionInformationVo attributionInformationVo = downloadPolicyVo.getOrder().getAttributionInformationVo();
         String token = huaNongCrawlerGetToken.getToken(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
         // 获取订单信息
-        HuaNongCrawlerOrder order = huaNongCrawlerOrderService.getById(orderBase.getOrdersNo());
+        HuaNongCrawlerOrder order = huaNongCrawlerOrderService.getById(downloadPolicyVo.getOrder().getOrdersNo());
         HttpHeaders httpHeaders = new HttpHeaders();
         HuaNongCrawlerFtpDownloadRequest huaNongCrawlerFtpDownloadRequest = new HuaNongCrawlerFtpDownloadRequest();
         // 交强保单 标志
@@ -157,6 +157,7 @@ public class HuaNongCrawlerRequestImpl implements HuaNongCrawlerRequest {
                             }
                     );
         });
+        return null;
     }
 
     @Override

+ 4 - 4
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quote/huatai/api/service/Impl/HuaTaiApiRequestImpl.java

@@ -262,11 +262,11 @@ public class HuaTaiApiRequestImpl implements HuaTaiApiRequest {
 
     /**
      * 下载保单
-     * @param orderBase
+     * @param downloadPolicyVo
      */
     @Override
-    public void downloadPolicy(OrderBase orderBase) {
-        AttributionInformationVo attributionInformationVo = orderBase.getAttributionInformationVo();
+    public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
+        AttributionInformationVo attributionInformationVo = downloadPolicyVo.getOrder().getAttributionInformationVo();
         //配置信息
         HuaTaiConfigureParameters huaTaiParameters = ConfigureParametersConversion.conversionEntity(HuaTaiConfigureParameters.class, attributionInformationVo.getConfigInfo());
 
@@ -276,7 +276,7 @@ public class HuaTaiApiRequestImpl implements HuaTaiApiRequest {
         request.setBusinessNo(policyNo);
 
         HuaTaiInsurancePolicyPrintResponse response = huataiRequestApiComponent.insurancePolicyPrint(request, HuaTaiInsurancePolicyPrintResponse.class, huaTaiParameters.getInsuredCode());
-
+        return null;
     }
 
     /**

+ 28 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java

@@ -4,15 +4,18 @@ package com.jzg.quotation.summary.controller;
 import com.jzg.commons.aop.OperatorTrajectory;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.InsOrdersParam;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersAdd;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersEnd;
 import com.jzg.quotation.summary.mapper.InsOrdersMapper;
+import com.jzg.quotation.summary.service.InsOrdersCarInfoService;
 import com.jzg.quotation.summary.service.InsOrdersService;
 import com.jzg.quotation.summary.service.InsTaskImagesService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.annotation.Resource;
 import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -31,6 +34,10 @@ public class InsOrdersController {
     @Resource
     private InsTaskImagesService insTaskImagesService;
 
+    @Autowired
+    private InsOrdersCarInfoService insOrdersCarInfoService;
+
+
     @OperatorTrajectory(moduleName = "车险订单/补录订单)",mapperClass = InsOrdersMapper.class,entityClass = InsOrdersAdd.class,isRecorded = "insOrders.isTemporarily")
     @Operation(summary = "录入订单新增")
     @PostMapping("saveOrders")
@@ -76,4 +83,25 @@ public class InsOrdersController {
         return HttpResult.ok(insOrdersService.getOrderDetail(ordersNo));
     }
 
+    /**
+     * 获取车辆档案
+     * @return
+     */
+    @Operation(summary = "获取车辆档案")
+    @GetMapping("/getCarRecord")
+    public HttpResult getCarRecord(String licenseNo,String carKindCode){
+        QuoteVo quoteVo = insOrdersCarInfoService.getCarRecord(licenseNo,carKindCode);
+        return HttpResult.ok(quoteVo);
+    }
+
+    /**
+     * 获取历史报价信息
+     */
+    @Operation(summary = "获取历史报价信息")
+    @GetMapping("/getHistoryQuote")
+    public HttpResult getHistoryQuote(){
+        return HttpResult.ok(insOrdersService.getHistoryQuote());
+    }
+
+
 }

+ 38 - 6
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/QrCodeController.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.summary.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.jzg.commons.constants.Constants;
 import com.jzg.commons.core.base.BaseController;
@@ -11,6 +12,7 @@ import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.LocalDateTimeUtils;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.quotation.commons.client.PlatformClient;
+import com.jzg.quotation.commons.constant.enums.quote.RiskCode;
 import com.jzg.quotation.summary.entity.vo.QrCodeVo;
 import com.jzg.quotation.summary.service.*;
 import io.swagger.v3.oas.annotations.Operation;
@@ -24,6 +26,7 @@ import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
 
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Objects;
@@ -53,12 +56,41 @@ public class QrCodeController extends BaseController {
     public ModelAndView getQrCode(@NotBlank(message = "订单号号不能为空") @RequestParam("orderNo") String orderNo) {
         // 获取保存支付url
         InsOrders orders = insOrdersService.getById(orderNo);
+        List<InsOrdersCarUserInfo> carUserInfoList = insOrdersCarUserInfoService.getByOrderId(orderNo);
+        List<InsOrdersRisk> insOrdersRiskList = insOrdersRiskService.getById(orderNo);
+        InsOrdersCarUserInfo ownerUserInfo = carUserInfoList.stream().filter(x -> x.getPolicyPersonType() == 1).findFirst().orElse(null);
+        InsOrdersCarUserInfo policyHolderInfo = carUserInfoList.stream().filter(x -> x.getPolicyPersonType() == 2).findFirst().orElse(null);
+        InsOrdersCarUserInfo insuredPersonInfo = carUserInfoList.stream().filter(x -> x.getPolicyPersonType() == 3).findFirst().orElse(null);
+        InsOrdersCarInfo carInfo = insOrdersCarInfoService.getByOrderId(orderNo);
+        InsOrdersCosts insOrdersCosts = insOrdersCostsService.getById(orderNo);
+        JSONObject result = new JSONObject();
+        result.put("ownerName",ownerUserInfo.getName());
+        result.put("policyName",policyHolderInfo.getName());
+        result.put("insuredName",insuredPersonInfo.getName());
+        result.put("licenseNo",carInfo.getLicenseNo());
+        result.put("jqPremium",insOrdersCosts.getJqPremium());
+        result.put("syPremium",insOrdersCosts.getSumPremium());
+        result.put("jyPremium",insOrdersCosts.getJyPremium());
+        result.put("taxPremium",insOrdersCosts.getTaxPremium());
+        result.put("sumPremium",insOrdersCosts.getSumPremium());
+        result.put("createTime",orders.getCreateTime());
+        insOrdersRiskList.forEach(risk->{
+            if(risk.getRiskCode().equals(RiskCode.TRAFFIC.getCode())){
+                result.put("jqStartTime",risk.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            }
+            if(risk.getRiskCode().equals(RiskCode.BUSINESS.getCode())){
+                result.put("syStartTime",risk.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            }
+        });
+
+
         insOrdersQrcodeService.getOneOrSave(orders);
         String qrCodeUrl = qrCodeGenAddress + "?orderNo=" + orders.getId();
+        result.put("qrcode",qrCodeUrl);
         ModelAndView modelAndView = new ModelAndView(new MappingJackson2JsonView());
         if (!Objects.isNull(orders)) {
             modelAndView.addObject("code", 200);
-            modelAndView.addObject("data", qrCodeUrl);
+            modelAndView.addObject("data", result);
         }else{
             modelAndView.addObject("code", 500);
             modelAndView.addObject("data", "");
@@ -83,11 +115,11 @@ public class QrCodeController extends BaseController {
     public Object index(@NotBlank(message = "订单号号不能为空") @RequestParam("orderNo") String orderNo){
         InsOrders orders = insOrdersService.getById(orderNo);
         // 费用校验
-        boolean costBoo = insOrdersQrcodeService.costValidated(orders);
-        if(!costBoo){
-            //重定向到错误页面中
-            return getModelAndView("费用失效,请重新报价。");
-        }
+//        boolean costBoo = insOrdersQrcodeService.costValidated(orders);
+//        if(!costBoo){
+//            //重定向到错误页面中
+//            return getModelAndView("费用失效,请重新报价。");
+//        }
         boolean agreementBoo = insOrdersQrcodeService.agreementValidated(orders);
         if(!agreementBoo){
             //重定向到错误页面中

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

@@ -11,8 +11,11 @@ import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.orders.po.*;
 import com.jzg.commons.entity.po.EsmInsCompany;
 import com.jzg.commons.entity.po.PtlAgreement;
+import com.jzg.commons.entity.po.SysUploadFiles;
 import com.jzg.commons.entity.vo.PersonAreaVo;
+import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.AssertionUtils;
+import com.jzg.commons.util.MinioUtils;
 import com.jzg.quotation.commons.client.OrgClient;
 import com.jzg.quotation.commons.client.PlatformClient;
 import com.jzg.quotation.commons.constant.enums.base.QuoteRuleCategory;
@@ -25,20 +28,28 @@ import com.jzg.quotation.summary.entity.po.QuoteRuleMapping;
 import com.jzg.quotation.summary.factory.CompanyFactory;
 import com.jzg.quotation.summary.service.*;
 import com.jzg.quotation.summary.state.listener.OrderStateListener;
+import io.minio.MinioClient;
+import io.minio.ObjectWriteResponse;
+import io.minio.PutObjectArgs;
+import io.minio.errors.*;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
+
 @RestController
 @RequestMapping("/unify/order")
 @Tag(name = "统一订单报价管理")
@@ -90,6 +101,12 @@ public class UnifyOrderManager {
     @Autowired
     OrderStateListener orderStateListener;
 
+    @Autowired
+    MinioClient minioClient;
+
+    @Value("${minio.bucket-name}")
+    private String bucketName;
+
 
     private String getSystemCode(){
         //如果是APP登录的话 则传递SystemCode的头部字段
@@ -228,7 +245,7 @@ public class UnifyOrderManager {
         if(underwritingResultsVo.getUnderwritingStatus().equals(InsOrderStatusEnum.PAY_PENDING)) {
             return HttpResult.ok("核保成功");
         }else{
-            return HttpResult.error(underwritingResultsVo.getUnderwritingResult());
+            throw new SystemException(underwritingResultsVo.getUnderwritingResult());
         }
     }
 
@@ -304,15 +321,24 @@ public class UnifyOrderManager {
         return HttpResult.ok("状态刷新成功");
     }
 
-    /**
-     * 获取车辆档案
-     * @return
-     */
-    @Operation(summary = "获取车辆档案")
-    @GetMapping("/getCarRecord")
-    public HttpResult getCarRecord(String licenseNo,String vinNo,String engineNo){
-        QuoteVo quoteVo = insOrdersCarInfoService.getCarRecord(licenseNo,vinNo,engineNo);
-        return HttpResult.ok(quoteVo);
-    }
 
+    @Operation(summary = "获取保单")
+    @PostMapping("/downloadPolicy")
+    public HttpResult downloadPolicy(@RequestBody DownloadPolicyVo downloadPolicyVo) throws IOException {
+        //获取保司实体
+        InsOrders insOrders = insOrdersService.getById(downloadPolicyVo.getOrder().getOrdersNo());
+//        InsOrdersPdfUrl insOrdersPdfUrl = insOrdersService.getById(insOrders.getId());
+        AssertionUtils.isFail(Objects.isNull(insOrders),"订单不存在");
+        QuotationApiBaseService downloadPolicyService = companyFactory.getDownloadPolicyService(
+                downloadPolicyVo,insOrders);
+        DownloadPolicyResultVo downloadPolicyResultVo = downloadPolicyService.downloadPolicy(downloadPolicyVo);
+        String jqUrl = downloadPolicyResultVo.getJqUrl();
+        HttpResult<SysUploadFiles> uploadResult = platformClient.uploadUrl(jqUrl, jqUrl);
+        if (uploadResult.getCode() == 200) {
+//            uploadResult.getData().getId()
+        }
+
+
+        return HttpResult.ok();
+    }
 }

+ 37 - 4
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/factory/CompanyFactory.java

@@ -10,15 +10,15 @@ import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
 import com.jzg.commons.entity.orders.po.InsOrdersRisk;
+import com.jzg.commons.entity.orders.po.*;
+import com.jzg.commons.entity.orders.po.*;
+import com.jzg.commons.entity.po.EsmInsCompany;
 import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
 import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.spring.SpringUtils;
 import com.jzg.quotation.chengtai.api.service.impl.ChengTaiApiRequestImpl;
 import com.jzg.quotation.commons.client.PlatformClient;
-import com.jzg.quotation.commons.entity.vo.aggregated.InsuranceUploadImageVo;
-import com.jzg.quotation.commons.entity.vo.aggregated.OrderStatusVo;
-import com.jzg.quotation.commons.entity.vo.aggregated.PaymentLinkVo;
-import com.jzg.quotation.commons.entity.vo.aggregated.UnderwritingVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.*;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
 import com.jzg.quotation.commons.service.QuotationApiBaseService;
 import com.jzg.quotation.dajia.api.service.impl.DaJiaApiRequestImpl;
@@ -82,6 +82,12 @@ public class CompanyFactory {
     @Autowired
     private InsTaskImagesService insTaskImagesService;
 
+    @Autowired
+    private InsOrdersPolicyService insOrdersPolicyService;
+
+    @Autowired
+    private BaseController baseController;
+
     @Value("${minio.bucket-name}")
     private String bucketName;
 
@@ -253,4 +259,31 @@ public class CompanyFactory {
         QuotationApiBaseService service = getService(orderStatusVo.getOrder().getInsuranceCompanyCode());
         return service;
     }
+
+    public QuotationApiBaseService getDownloadPolicyService(DownloadPolicyVo downloadPolicyVo,InsOrders insOrders) {
+        //设置归属信息
+        String token = baseController.getToken();
+        String systemCode = baseController.getAppSystemCode();
+        HttpResult<EsmInsCompany> esmInsCompanyHttpResult = platformClient.findById(insOrders.getCompanyId(), baseController.getToken());
+        AssertionUtils.isFail(esmInsCompanyHttpResult.getCode()!=200,"保司代码错误");
+        downloadPolicyVo.getOrder().setInsuranceCompanyCode(insOrders.getCompanyId());
+        downloadPolicyVo.setRisks(insOrdersRiskService.list(new LambdaUpdateWrapper<InsOrdersRisk>()
+               .eq(InsOrdersRisk::getOrderNo, insOrders.getId())));
+        downloadPolicyVo.setPolicie(insOrdersPolicyService.getOne(new LambdaUpdateWrapper<InsOrdersPolicy>()
+                .eq(InsOrdersPolicy::getOrderNo,insOrders.getId())));
+        HttpResult<PtlAgreementAttribution> agreementAttribution = platformClient.getAgreementAttribution(insOrders.getAgreementId(),token,systemCode);
+        AssertionUtils.isFail(agreementAttribution.getCode() == 500,"获取协议属性失败");
+        Map<String, String> fieldMap = agreementAttribution.getData().getFields().stream()
+                .map(obj -> new JSONObject((Map<String, Object>) obj))  // 转换为 JSONObject
+                .collect(Collectors.toMap(
+                        json -> json.getString("field"),    // 获取 key
+                        json -> json.getString("value")   // 获取 value
+                ));
+        AttributionInformationVo attributionInformationVo = new AttributionInformationVo();
+        attributionInformationVo.setConfigInfo(fieldMap);
+        downloadPolicyVo.getOrder().setAttributionInformationVo(attributionInformationVo);
+        QuotationApiBaseService service = getService(esmInsCompanyHttpResult.getData().getCompanyCode());
+        return service;
+
+    }
 }

+ 5 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersMapper.java

@@ -6,12 +6,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.entity.dto.InsOrdersParam;
 import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.orders.vo.HistoryQuoteResultVo;
 import com.jzg.commons.entity.orders.vo.InsOrdersListVo;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
 import com.jzg.commons.entity.vo.OrdersListVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 @Mapper
 public interface InsOrdersMapper extends BaseMapper<InsOrders> {
 
@@ -22,4 +25,6 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
     IPage<OrdersListVo> pageList(@Param("page") Page page, @Param("insOrdersParam") InsOrdersParam insOrdersParam);
 
     Page<InsOrdersVo> queryList(@Param("page") Page page, @Param("insOrdersParam") InsOrdersParam insOrdersParam);
+
+    List<HistoryQuoteResultVo> getHistoryQuote(@Param("userName") String userName);
 }

+ 9 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersPdfUrlMapper.java

@@ -0,0 +1,9 @@
+package com.jzg.quotation.summary.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jzg.commons.entity.orders.po.InsOrdersPdfUrl;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface InsOrdersPdfUrlMapper extends BaseMapper<InsOrdersPdfUrl> {
+}

+ 4 - 3
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarInfoService.java

@@ -22,9 +22,10 @@ public interface InsOrdersCarInfoService extends IService<InsOrdersCarInfo> {
     /**
      * 获取车辆档案信息
      * @param licenseNo
-     * @param vinNo
-     * @param engineNo
+     * @param carKindCode
      * @return
      */
-    QuoteVo getCarRecord(String licenseNo,String vinNo,String engineNo);
+    QuoteVo getCarRecord(String licenseNo,String carKindCode);
+
+
 }

+ 4 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersRiskService.java

@@ -5,10 +5,14 @@ import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersRisk;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 
+import java.util.List;
+
 public interface InsOrdersRiskService extends IService<InsOrdersRisk> {
 
 
     void deleteOrderNo(Long orderNo);
 
     void createRisk(InsOrders insOrders, RiskInfoVo ciRiskInfoVo, RiskInfoVo biRiskInfoVo);
+
+    List<InsOrdersRisk> getById(String orderNo);
 }

+ 9 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java

@@ -6,11 +6,14 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.InsOrdersParam;
 import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.orders.vo.HistoryQuoteResultVo;
 import com.jzg.commons.entity.orders.vo.InsOrdersListVo;
 import com.jzg.commons.entity.vo.OrdersListVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.*;
 
 import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersAdd;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersEnd;
@@ -68,4 +71,10 @@ public interface InsOrdersService extends IService<InsOrders> {
      * @return
      */
     QuoteVo getOrderDetail(String ordersNo);
+
+    /**
+     * 获取历史报价信息
+     * @return
+     */
+    List<HistoryQuoteResultVo> getHistoryQuote();
 }

+ 0 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/CarModelServiceImpl.java

@@ -6,7 +6,6 @@ import com.jzg.commons.constants.RedisKeyConstants;
 import com.jzg.commons.entity.vo.CarModelDTO;
 import com.jzg.quotation.summary.components.QueryVehicleComponents;
 import com.jzg.quotation.summary.service.CarModelService;
-import com.jzg.quotation.summary.service.InsOrdersService;
 import lombok.RequiredArgsConstructor;
 import okhttp3.*;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -24,7 +23,6 @@ public class CarModelServiceImpl implements CarModelService {
 
     //private final ZhongMeiOrderService zhongMeiOrderService;
 
-    private final InsOrdersService insOrdersService;
 
     private final StringRedisTemplate redisTemplate;
 

+ 5 - 6
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarInfoServiceImpl.java

@@ -85,15 +85,14 @@ public class InsOrdersCarInfoServiceImpl extends ServiceImpl<InsOrdersCarInfoMap
     }
 
     @Override
-    public QuoteVo getCarRecord(String licenseNo, String vinNo, String engineNo) {
+    public QuoteVo getCarRecord(String licenseNo, String carKindCode) {
         QuoteVo quoteVo = new QuoteVo();
-        InsOrdersCarInfo carInfo = this.baseMapper.selectOne(new LambdaQueryWrapper<InsOrdersCarInfo>()
+        List<InsOrdersCarInfo> carInfos = this.baseMapper.selectList(new LambdaQueryWrapper<InsOrdersCarInfo>()
                 .eq(InsOrdersCarInfo::getLicenseNo, licenseNo)
-                .or()
-                .eq(InsOrdersCarInfo::getVinNo, vinNo)
-                .or()
-                .eq(InsOrdersCarInfo::getEngineNo,engineNo)
+                .eq(InsOrdersCarInfo::getCarKindCode, carKindCode)
+                .orderByDesc(InsOrdersCarInfo::getCreateTime)
         );
+        InsOrdersCarInfo carInfo = carInfos.stream().findFirst().orElse(null);
         AssertionUtils.isFail(Objects.isNull(carInfo),"暂无此车档案信息");
         List<InsOrdersCarUserInfo> carUserInfoList = insOrdersCarUserInfoService.getByOrderId(carInfo.getOrderNo());
         quoteVo.setCarInfoVo(new CarInfoVo(carInfo));

+ 4 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersQrcodeServiceImpl.java

@@ -25,6 +25,7 @@ import com.jzg.quotation.summary.service.InsOrdersService;
 import io.netty.handler.codec.http.HttpUtil;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import java.net.URL;
@@ -41,8 +42,9 @@ import java.util.Objects;
 @RequiredArgsConstructor
 public class InsOrdersQrcodeServiceImpl extends ServiceImpl<InsOrdersQrcodeMapper, InsOrdersQrcode>
     implements InsOrdersQrcodeService {
+    @Autowired
+    InsOrdersService insOrdersService;
 
-    private final InsOrdersService insOrdersService;
     private final InsOrdersExternalFeeService insOrdersExternalFeeService;
     private final OrgClient orgClient;
     private final BaseController baseController;
@@ -82,7 +84,7 @@ public class InsOrdersQrcodeServiceImpl extends ServiceImpl<InsOrdersQrcodeMappe
     @Override
     public void destroyQrCode(String orderNo) {
         InsOrders orders = insOrdersService.getById(orderNo);
-        InsOrdersQrcode insOrdersQrcode = getIsExit(orders.getId());
+        InsOrdersQrcode insOrdersQrcode = getIsExit(orderNo);
         insOrdersQrcode.setQrcodeStatus(0);
         insOrdersQrcode.setDestructionCodeTime(LocalDateTime.now());
         this.updateById(insOrdersQrcode);

+ 6 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersRiskServiceImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.summary.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersRisk;
@@ -45,4 +46,9 @@ public class InsOrdersRiskServiceImpl extends ServiceImpl<InsOrdersRiskMapper, I
         }
         this.saveBatch(insOrdersRiskList);
     }
+
+    @Override
+    public List<InsOrdersRisk> getById(String orderNo) {
+        return baseMapper.selectList(new LambdaQueryWrapper<InsOrdersRisk>().eq(InsOrdersRisk::getOrderNo, orderNo));
+    }
 }

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

@@ -19,6 +19,7 @@ import com.jzg.commons.entity.dto.InsOrdersParam;
 import com.jzg.commons.entity.dto.InsTaskImagesAdd;
 import com.jzg.commons.entity.enums.MessageCodeEnum;
 import com.jzg.commons.entity.orders.po.*;
+import com.jzg.commons.entity.orders.vo.HistoryQuoteResultVo;
 import com.jzg.commons.entity.orders.vo.InsOrdersListVo;
 import com.jzg.commons.entity.po.InsTaskImages;
 import com.jzg.commons.entity.po.SysMessageTemplate;
@@ -43,17 +44,20 @@ import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
 import com.jzg.quotation.commons.utils.SnowFlakeUtil;
 import com.jzg.quotation.summary.consumer.template.OrderMessageTemplate;
 import com.jzg.quotation.summary.mapper.InsOrdersMapper;
+import com.jzg.quotation.summary.mapper.InsOrdersQrcodeMapper;
 import com.jzg.quotation.summary.service.*;
 import com.jzg.quotation.summary.state.listener.OrderStateListener;
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
 import org.apache.commons.beanutils.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
+import java.net.URL;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -94,6 +98,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     private final OrderStateListener orderStateListener;
 
+    @Autowired
+    private InsOrdersQrcodeMapper insOrdersQrcodeMapper;
+
 
 
 
@@ -480,59 +487,60 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         insOrders.setOrderStatus(String.valueOf(stateResult.getCurrentState()));
 
         baseMapper.updateById(insOrders);
-
-        // 更新起保终保时间
-        List<InsOrdersRisk> insOrdersRiskList = insOrdersRiskService.list(new LambdaQueryWrapper<InsOrdersRisk>().eq(InsOrdersRisk::getOrderNo, ordersNo));
-        if(Objects.nonNull(insOrdersRiskList) && !insOrdersRiskList.isEmpty()){
-            for (InsOrdersRisk insOrdersRisk : insOrdersRiskList) {
-                if(insOrdersRisk.getRiskCode().equals(InsuranceRisk.TRAFFIC.getCode())){
-                    insOrdersRisk.setStartDate(LocalDateTime.parse(quoteResponse.getCiRiskInfoVo().getStartDate(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-                    insOrdersRisk.setEndDate(LocalDateTime.parse(quoteResponse.getCiRiskInfoVo().getEndDate(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-                }
-                if(insOrdersRisk.getRiskCode().equals(InsuranceRisk.BUSINESS.getCode())){
-                    insOrdersRisk.setStartDate(LocalDateTime.parse(quoteResponse.getBiRiskInfoVo().getStartDate(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-                    insOrdersRisk.setEndDate(LocalDateTime.parse(quoteResponse.getBiRiskInfoVo().getEndDate(),DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        // 判断状态 是否是成功  如何成功则处理下面的流程
+        if(stateResult.getCurrentState() == Integer.parseInt(InsOrderStatusEnum.WAIT_AUDIT.getCode())) {
+            // 更新起保终保时间
+            List<InsOrdersRisk> insOrdersRiskList = insOrdersRiskService.list(new LambdaQueryWrapper<InsOrdersRisk>().eq(InsOrdersRisk::getOrderNo, ordersNo));
+            if (Objects.nonNull(insOrdersRiskList) && !insOrdersRiskList.isEmpty()) {
+                for (InsOrdersRisk insOrdersRisk : insOrdersRiskList) {
+                    if (insOrdersRisk.getRiskCode().equals(InsuranceRisk.TRAFFIC.getCode())) {
+                        insOrdersRisk.setStartDate(LocalDateTime.parse(quoteResponse.getCiRiskInfoVo().getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                        insOrdersRisk.setEndDate(LocalDateTime.parse(quoteResponse.getCiRiskInfoVo().getEndDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                    }
+                    if (insOrdersRisk.getRiskCode().equals(InsuranceRisk.BUSINESS.getCode())) {
+                        insOrdersRisk.setStartDate(LocalDateTime.parse(quoteResponse.getBiRiskInfoVo().getStartDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                        insOrdersRisk.setEndDate(LocalDateTime.parse(quoteResponse.getBiRiskInfoVo().getEndDate(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+                    }
                 }
             }
-        }
-        insOrdersRiskService.updateBatchById(insOrdersRiskList);
-
-        //更新费用
-        InsOrdersCosts ordersCosts = insOrdersCostsService.getOne(new LambdaQueryWrapper<InsOrdersCosts>()
-                .eq(InsOrdersCosts::getOrderNo,ordersNo));
-        if(Objects.isNull(ordersCosts)){
-            ordersCosts = new InsOrdersCosts();
-            ordersCosts.setOrderNo(ordersNo);
-        }
-        BigDecimal ciPremium = new BigDecimal(quoteResponse.getCiPremium());
-        BigDecimal biPremium = new BigDecimal(quoteResponse.getBiPremium());
-        BigDecimal niPremium = new BigDecimal(quoteResponse.getNiPremium());
-        BigDecimal vvTax = new BigDecimal(quoteResponse.getVvTax());
-        ordersCosts.setJqPremium(ciPremium);
-        ordersCosts.setSyPremium(biPremium);
-        ordersCosts.setJyPremium(niPremium);
-        ordersCosts.setTaxPremium(vvTax);
-        ordersCosts.setSumPremium(ciPremium.add(biPremium).add(niPremium).add(vvTax));
-        insOrdersCostsService.saveOrUpdate(ordersCosts);
-
-        //更新评分
-        InsOrdersOther ordersOther = insOrdersOtherService.getOne(new LambdaQueryWrapper<InsOrdersOther>().eq(InsOrdersOther::getOrderNo,ordersNo));
-        if(Objects.isNull(ordersOther)){
-            ordersOther = new InsOrdersOther();
-            ordersOther.setOrderNo(ordersNo);
-            ordersOther.setScore(quoteResponse.getScoreVo().getScore());
-            ordersOther.setJqScore(quoteResponse.getScoreVo().getJqScore());
-            ordersOther.setSyScore(quoteResponse.getScoreVo().getSyScore());
-            ordersOther.setTpColorScore(quoteResponse.getScoreVo().getTpColorScore());
-        }
-        insOrdersOtherService.saveOrUpdate(ordersOther);
-
-        //更新投保单号
-        InsOrdersPolicy ordersPolicy = insOrdersPolicyService.getOne(new LambdaQueryWrapper<InsOrdersPolicy>().eq(InsOrdersPolicy::getOrderNo,ordersNo));
-        ordersPolicy.setJqApplyNo(quoteResponse.getCiPolicyNumber());
-        ordersPolicy.setSyApplyNo(quoteResponse.getBiPolicyNumber());
-        insOrdersPolicyService.saveOrUpdate(ordersPolicy);
+            insOrdersRiskService.updateBatchById(insOrdersRiskList);
+
+            //更新费用
+            InsOrdersCosts ordersCosts = insOrdersCostsService.getOne(new LambdaQueryWrapper<InsOrdersCosts>()
+                    .eq(InsOrdersCosts::getOrderNo, ordersNo));
+            if (Objects.isNull(ordersCosts)) {
+                ordersCosts = new InsOrdersCosts();
+                ordersCosts.setOrderNo(ordersNo);
+            }
+            BigDecimal ciPremium = new BigDecimal(quoteResponse.getCiPremium());
+            BigDecimal biPremium = new BigDecimal(quoteResponse.getBiPremium());
+            BigDecimal niPremium = new BigDecimal(quoteResponse.getNiPremium());
+            BigDecimal vvTax = new BigDecimal(quoteResponse.getVvTax());
+            ordersCosts.setJqPremium(ciPremium);
+            ordersCosts.setSyPremium(biPremium);
+            ordersCosts.setJyPremium(niPremium);
+            ordersCosts.setTaxPremium(vvTax);
+            ordersCosts.setSumPremium(ciPremium.add(biPremium).add(niPremium).add(vvTax));
+            insOrdersCostsService.saveOrUpdate(ordersCosts);
+
+            //更新评分
+            InsOrdersOther ordersOther = insOrdersOtherService.getOne(new LambdaQueryWrapper<InsOrdersOther>().eq(InsOrdersOther::getOrderNo, ordersNo));
+            if (Objects.isNull(ordersOther)) {
+                ordersOther = new InsOrdersOther();
+                ordersOther.setOrderNo(ordersNo);
+                ordersOther.setScore(quoteResponse.getScoreVo().getScore());
+                ordersOther.setJqScore(quoteResponse.getScoreVo().getJqScore());
+                ordersOther.setSyScore(quoteResponse.getScoreVo().getSyScore());
+                ordersOther.setTpColorScore(quoteResponse.getScoreVo().getTpColorScore());
+            }
+            insOrdersOtherService.saveOrUpdate(ordersOther);
 
+            //更新投保单号
+            InsOrdersPolicy ordersPolicy = insOrdersPolicyService.getOne(new LambdaQueryWrapper<InsOrdersPolicy>().eq(InsOrdersPolicy::getOrderNo, ordersNo));
+            ordersPolicy.setJqApplyNo(quoteResponse.getCiPolicyNumber());
+            ordersPolicy.setSyApplyNo(quoteResponse.getBiPolicyNumber());
+            insOrdersPolicyService.saveOrUpdate(ordersPolicy);
+        }
 
     }
 
@@ -565,6 +573,34 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersPolicy.setJyApplyNo(underwritingResultsVo.getJyApplyNo());
         }
         insOrdersPolicyService.updateById(insOrdersPolicy);
+
+        //更新二维码
+        InsOrdersQrcode insOrdersQrcode = new InsOrdersQrcode();
+        insOrdersQrcode.setId(IdGenerate.nextId());
+        insOrdersQrcode.setOrderno(underwritingResultsVo.getOrdersNo());
+        String paylink = "";
+        if(isHttpUrl(insOrders.getPayLink())){
+            paylink = insOrders.getPayLink().replace("{", "").replace("}", "");
+            insOrdersQrcode.setJumpUrl(paylink);
+        }else{
+            if(paylink.contains("data:image/jpg;base64,")){
+                paylink = paylink.replace("data:image/jpg;base64,","");
+            }
+            insOrdersQrcode.setJumpUrl(paylink);
+        }
+        insOrdersQrcode.setQrcodeStatus(0);
+        insOrdersQrcode.setCreatetime(LocalDateTime.now());
+        insOrdersQrcodeMapper.insert(insOrdersQrcode);
+    }
+
+
+    private boolean isHttpUrl(String urls) {
+        try {
+            new URL(urls);
+            return true;
+        } catch (java.net.MalformedURLException e) {
+            return false;
+        }
     }
 
 
@@ -657,4 +693,14 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         return new QuoteEchoVo(insOrdersVo);
     }
 
+    @Override
+    /**
+     * 获取历史报价信息
+     * @return
+     */
+    public List<HistoryQuoteResultVo> getHistoryQuote(){
+        String userName = baseController.getUserName();
+        return insOrdersMapper.getHistoryQuote(userName);
+    }
+
 }

+ 20 - 0
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml

@@ -422,4 +422,24 @@
         select id, quote_no,company_name,audit_status,audit_comments,create_by,audit_id,audit_name from ins_orders order by create_time desc
     </select>
 
+    <select id="getHistoryQuote" resultType="com.jzg.commons.entity.orders.vo.HistoryQuoteResultVo">
+        SELECT
+            t.id as order_no,
+            t.license_no
+        FROM
+            (
+                SELECT
+                    io.id,
+                    ioci.license_no,
+                    ROW_NUMBER() OVER ( PARTITION BY ioci.license_no ORDER BY io.create_time DESC ) AS rn
+                FROM
+                    ins_orders io
+                        LEFT JOIN ins_orders_car_info ioci ON io.id = ioci.order_no
+                WHERE io.real_quote_user_id = #{userName}
+            ) t
+        WHERE
+            t.rn = 1
+        LIMIT 10
+    </select>
+
 </mapper>

+ 3 - 3
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKQuotationBaseServiceImpl.java

@@ -399,7 +399,7 @@ public class TKQuotationBaseServiceImpl implements QuotationBaseService {
     }
 
     @Override
-    public void downloadPolicy(OrderBase orderBase) {
+    public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo orderBase) {
         String token = "";
         String tplatformId = "";
         String proposalNo = "";
@@ -407,7 +407,7 @@ public class TKQuotationBaseServiceImpl implements QuotationBaseService {
         OrderCompleteAgentResult.OrderCompleteAgentResultEntity orderCompleteAgentResultEntity = httpService.orderCompleteAgent(token, tplatformId, proposalNo);
 
         if (orderCompleteAgentResultEntity == null) {
-            return;
+            return null;
         }
 
         // 投保单,base64
@@ -432,7 +432,7 @@ public class TKQuotationBaseServiceImpl implements QuotationBaseService {
             // 获取发票下载地址 url
             String pdf = httpService.imageGetInvoiceURL(subPolicyNoCi, "PDF");
         }
-
+        return null;
     }
 
     @Override

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

@@ -229,11 +229,12 @@ public class YangGuangApiRequestImpl implements YangGuangApiRequest {
     }
 
     @Override
-    public void downloadPolicy(OrderBase orderBase) {
-
+    public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
+        return null;
 
     }
 
+
     @Override
     public void queryOrderState(OrderStatusVo orderStatusVo) throws JsonProcessingException {
         OrderBase orderBase = orderStatusVo.getOrder();

+ 9 - 9
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/components/YcRequestApiComponents.java

@@ -211,15 +211,15 @@ public class YcRequestApiComponents {
 //        return post(accidentUnderwritingRequest, RequestUrl.API_SUBMIT_POLICY, AccidentUnderwritingResponse.class);
 //    }
 //
-//    /**
-//     * 电子保单
-//     *
-//     * @param policy 电子保单 入参实体
-//     * @return 出参实体
-//     */
-//    public PolicyResponse dzbdWeb(Policy policy) throws JsonProcessingException {
-//        return post(policy, RequestUrl.API_GUARANTEE_SLIP, PolicyResponse.class);
-//    }
+    /**
+     * 电子保单
+     *
+     * @param downloadPolicyRequest 电子保单 入参实体
+     * @return 出参实体
+     */
+    public DownloadPolicyResponse dzbdWeb(DownloadPolicyRequest downloadPolicyRequest) throws JsonProcessingException {
+        return post(downloadPolicyRequest, RequestUrl.API_GUARANTEE_SLIP, DownloadPolicyResponse.class);
+    }
 
     /**
      * 获取协商价折扣比例

+ 73 - 0
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/DownloadPolicyRequest.java

@@ -0,0 +1,73 @@
+package com.jzg.quotation.yongcheng.api.entity.request;
+
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import com.jzg.quotation.yongcheng.api.properties.AuthorityDataXml;
+import lombok.Data;
+
+import javax.validation.Valid;
+
+@Data
+@JacksonXmlRootElement(localName = "tns:dzbdUrl")
+public class DownloadPolicyRequest {
+
+
+    @JacksonXmlProperty(isAttribute = false, localName = "request")
+    private RequestLabel requestLabel;
+
+
+    @Data
+    public static class RequestLabel {
+        /**
+         * authorityData
+         */
+        @Valid
+        @JacksonXmlProperty(isAttribute = false, localName = "authorityData")
+        private AuthorityDataXml authorityData;
+
+        @JacksonXmlProperty(isAttribute = false, localName = "condition")
+        private Condition condition;
+
+
+    }
+
+
+    @Data
+    public static class Condition {
+
+        /**
+         * 保单号
+         */
+        @JacksonXmlProperty(localName = "policyNo")
+        private String policyNo;
+    }
+
+
+    /**
+     * 构造 请求参数
+     *
+     * @author: lig
+     * @date: 2023-02-15
+     */
+    public static DownloadPolicyRequest buildPolicyParam(String policyNo, AuthorityDataXml authorityDataXml) {
+
+
+        DownloadPolicyRequest m = new DownloadPolicyRequest();
+//
+        RequestLabel r = new RequestLabel();
+
+        r.setAuthorityData(authorityDataXml);
+
+        Condition c = new Condition();
+
+        c.setPolicyNo(policyNo);
+
+        r.setCondition(c);
+
+        m.setRequestLabel(r);
+
+        return m;
+    }
+
+
+}

+ 43 - 0
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/response/DownloadPolicyResponse.java

@@ -0,0 +1,43 @@
+package com.jzg.quotation.yongcheng.api.entity.response;
+
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import lombok.Data;
+
+@Data
+@JacksonXmlRootElement(localName = "packet")
+public class DownloadPolicyResponse {
+
+    @JacksonXmlProperty(localName = "head")
+    private Head head;
+
+    @JacksonXmlProperty(localName = "sypolicyUrl")
+    private String sypolicyUrl;
+
+    @JacksonXmlProperty(localName = "jqpolicyUrl")
+    private String jqpolicyUrl;
+
+    @JacksonXmlProperty(localName = "policyBZUrl")
+    private String policyBZUrl;
+
+    //非车险电子保单
+    @JacksonXmlProperty(localName = "ywpolicUrl")
+    private String ywpolicUrl;
+
+    @Data
+    public static class Head {
+        @JacksonXmlProperty(localName = "responseCompleteMessageStatus")
+        private ResponseCompleteMessageStatus responseCompleteMessageStatus;
+    }
+
+
+    @Data
+    public static class ResponseCompleteMessageStatus {
+        @JacksonXmlProperty(localName = "messageStatusCode")
+        private String messageStatusCode;
+
+        @JacksonXmlProperty(localName = "messageStatusDescription")
+        private String messageStatusDescription;
+    }
+
+}

+ 65 - 2
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/service/impl/YongChengApiRequestImpl.java

@@ -224,7 +224,8 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
                 }
                 underwritingResultsVo.setCompanyOrderNo(auditResponse.getOrderCode());
             } else {
-                throw new SystemException("核保失败," + auditResponse.getResponseHead().getReturnMessage());
+                underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
+                underwritingResultsVo.setUnderwritingResult(auditResponse.getResponseHead().getReturnMessage());
             }
 
         } catch (JsonProcessingException jsonProcessingException) {
@@ -282,8 +283,70 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
 
 
     @Override
-    public void downloadPolicy(OrderBase orderBase) {
+    public DownloadPolicyResultVo downloadPolicy(DownloadPolicyVo downloadPolicyVo) {
+        DownloadPolicyResultVo downloadPolicyResultVo = new DownloadPolicyResultVo();
+        // 获取协议配置信息
+        YcApiConfigurationProperties configurationProperties = ConfigureParametersConversion.conversionEntity(YcApiConfigurationProperties.class, downloadPolicyVo.getOrder().getAttributionInformationVo().getConfigInfo());
+
+        String jqPolicyNo = downloadPolicyVo.getPolicie().getJqPolicyNo();
+        if(Objects.nonNull(jqPolicyNo)) {
+            queryPolicy(jqPolicyNo, configurationProperties, downloadPolicyResultVo);
+        }
+        String syPolicyNo = downloadPolicyVo.getPolicie().getSyPolicyNo();
+        if(Objects.nonNull(syPolicyNo)) {
+            queryPolicy(syPolicyNo, configurationProperties, downloadPolicyResultVo);
+        }
+        String jyPolicyNo = downloadPolicyVo.getPolicie().getJyPolicyNo();
+        if(Objects.nonNull(jyPolicyNo)) {
+            queryPolicy(jyPolicyNo, configurationProperties, downloadPolicyResultVo);
+        }
+
+        return downloadPolicyResultVo;
+    }
 
+    /**
+     * 查询保单
+     * @param policyNo
+     * @param configurationProperties
+     * @param downloadPolicyResultVo
+     */
+    private void queryPolicy(String policyNo,YcApiConfigurationProperties configurationProperties,DownloadPolicyResultVo downloadPolicyResultVo){
+        DownloadPolicyRequest downloadPolicyRequest = DownloadPolicyRequest.buildPolicyParam(policyNo, configurationProperties.gainAuthorityDataXml());
+        try {
+            DownloadPolicyResponse pResp = ycRequestApiComponents.dzbdWeb(downloadPolicyRequest);
+            if (MessageStatusCode.E0000.getCode().equals(pResp.getHead().getResponseCompleteMessageStatus().getMessageStatusCode())) {
+
+                //标志
+                if (StringUtils.isNotEmpty(pResp.getPolicyBZUrl())) {
+                    String jqFlagUrl = pResp.getPolicyBZUrl().replaceAll(";pkid", "&pkid");
+                    downloadPolicyResultVo.setJqFlagUrl(jqFlagUrl);
+                }
+
+                //交强
+                if (StringUtils.isNotEmpty(pResp.getJqpolicyUrl())) {
+                    String jqUrl = pResp.getJqpolicyUrl().replace(";pkid", "&pkid");
+                    downloadPolicyResultVo.setJqUrl(jqUrl);
+                }
+
+                //商业
+                if (StringUtils.isNotEmpty(pResp.getSypolicyUrl())) {
+                    String syUrl = pResp.getSypolicyUrl().replace(";pkid", "&pkid");
+                    downloadPolicyResultVo.setSyUrl(syUrl);
+                }
+
+                // 非车险
+                if (StringUtils.isNotEmpty(pResp.getYwpolicUrl())) {
+                    String jyUrl = pResp.getYwpolicUrl().replace(";pkid", "&pkid");
+                    downloadPolicyResultVo.setJyUrl(jyUrl);
+                }
+
+            } else {
+                throw new SystemException(pResp.getHead().getResponseCompleteMessageStatus().getMessageStatusDescription());
+            }
+        } catch (JsonProcessingException jsonProcessingException) {
+            jsonProcessingException.printStackTrace();
+            throw new SystemException("获取支付连接失败");
+        }
     }
 
     @Override