Ver Fonte

报价流程完善

785834757 há 1 ano atrás
pai
commit
b78daaf416
29 ficheiros alterados com 406 adições e 93 exclusões
  1. 30 0
      commons/src/main/java/com/jzg/commons/constants/dict/CarKindCode.java
  2. 6 0
      commons/src/main/java/com/jzg/commons/entity/dto/InsOrdersParam.java
  3. 2 2
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersPdfUrl.java
  4. 0 22
      commons/src/main/java/com/jzg/commons/entity/orders/vo/InsOrdersListVo.java
  5. 57 0
      commons/src/main/java/com/jzg/commons/entity/orders/vo/OrderListVo.java
  6. 22 4
      commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlSchemeSaveVo.java
  7. 21 0
      platform/src/main/java/com/jzg/controller/EsmInsCompanyController.java
  8. 2 0
      platform/src/main/java/com/jzg/service/EsmInsCompanyService.java
  9. 6 0
      platform/src/main/java/com/jzg/service/impl/EsmInsCompanyServiceImpl.java
  10. 3 3
      tenant/costsorrule/src/main/java/com/jzg/costsorrule/model/ValidateSchemeRuleVo.java
  11. 8 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/PlatformClient.java
  12. 27 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/aggregated/QuoteEchoVo.java
  13. 3 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/orders/InsOrdersVo.java
  14. 7 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java
  15. 9 7
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/QrCodeController.java
  16. 62 9
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  17. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/converter/QuoteInfoConverter.java
  18. 4 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersMapper.java
  19. 3 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersPdfUrlMapper.java
  20. 9 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/SysUploadFilesMapper.java
  21. 10 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersPdfUrlService.java
  22. 3 3
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java
  23. 10 3
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersKindServiceImpl.java
  24. 24 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersPdfUrlServiceImpl.java
  25. 19 29
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  26. 43 0
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  27. 4 1
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/QuoteRequest.java
  28. 3 0
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/service/impl/YongChengApiRequestImpl.java
  29. 8 6
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

+ 30 - 0
commons/src/main/java/com/jzg/commons/constants/dict/CarKindCode.java

@@ -0,0 +1,30 @@
+package com.jzg.commons.constants.dict;
+
+import com.jzg.commons.constants.DictEnum;
+import com.jzg.commons.constants.IBaseEnum;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+@DictEnum(key = "carKindCode", desc = "车辆种类")
+public enum CarKindCode implements IBaseEnum {
+
+    A0("A0", "客车"),
+    A1("A1", "货车");
+
+    private final String code;
+
+    private final String desc;
+
+    @Override
+    public Integer getSort() {
+        return null;
+    }
+
+    @Override
+    public Integer getStatus() {
+        return null;
+    }
+}
+

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/dto/InsOrdersParam.java

@@ -14,9 +14,15 @@ public class InsOrdersParam extends PageRequest {
     @Schema(description = "订单号")
     private String orderNo;
 
+    @Schema(description = "车牌号")
+    private String licenseNo;
+
     @Schema(description = "是否暂存 0-否;1-是")
     private int isTemporarily;
 
+    @Schema(description = "订单状态")
+    private String orderStatus;
+
     @Schema(description = "保险公司")
     private String companyName;
 

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

@@ -18,7 +18,7 @@ public class InsOrdersPdfUrl {
     private String riskCode;
 
     @Schema(description = "交强保单号")
-    private BigDecimal jqNo;
+    private String jqNo;
 
     @Schema(description = "商业保单号")
     private String syNo;
@@ -36,5 +36,5 @@ public class InsOrdersPdfUrl {
     private String jyUrl;
 
     @Schema(description = "交强标志路径")
-    private Integer jqSignUrl;
+    private String jqSignUrl;
 }

+ 0 - 22
commons/src/main/java/com/jzg/commons/entity/orders/vo/InsOrdersListVo.java

@@ -1,22 +0,0 @@
-package com.jzg.commons.entity.orders.vo;
-
-import lombok.Data;
-
-import java.time.LocalDateTime;
-
-@Data
-public class InsOrdersListVo {
-    private String id;
-    private String productCode;
-    private String productName;
-    private String userName;
-    private String userId;
-    private String orderStatus;
-    private String companyId;
-    private String companyName;
-    private String licenseNo;
-    private String vinNo;
-    private String insuredName;
-    private LocalDateTime createTime;
-    private LocalDateTime signingTime;
-}

+ 57 - 0
commons/src/main/java/com/jzg/commons/entity/orders/vo/OrderListVo.java

@@ -0,0 +1,57 @@
+package com.jzg.commons.entity.orders.vo;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * 订单列表Vo
+ */
+@Data
+public class OrderListVo {
+    /**
+     * 订单号
+     */
+    private String orderNo;
+
+    private String companyId;
+
+    private String companyName;
+
+    /**
+     * 险种code
+     */
+    private String productCode;
+    /**
+     * 险种名称
+     */
+    private String productName;
+    //订单状态
+    private String orderStatus;
+    //车牌号
+    private String licenseNo;
+
+    //车主姓名
+    private String ownerName;
+
+    //车主手机号
+    private String ownerMobile;
+
+    //投保人姓名
+    private String policyName;
+
+    //投保人手机号
+    private String policyMobile;
+
+    //被保人姓名
+    private String insurName;
+
+    //被保人手机号
+    private String insurMobile;
+
+    //交强险起保时间
+    private LocalDateTime ciStartDate;
+
+    //商业险起保时间
+    private LocalDateTime biStartDate;
+}

+ 22 - 4
commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlSchemeSaveVo.java

@@ -120,14 +120,32 @@ public class PtlSchemeSaveVo {
         ptlScheme.setProductName(ProductsType.getByCode(productId).getDesc());
         List<PtlAgreementUndwrtRulesAttr> collect = ruleAttrs.stream().filter(x ->
                 x.getAttrCode().equals("NewEnergyMark") ||
-                x.getAttrCode().equals("VehicleUseCode") ||
-                x.getAttrCode().equals("CarTypeCode")).collect(Collectors.toList());
+                x.getAttrCode().equals("CarNatureCode") ||
+                x.getAttrCode().equals("CarKindCode")).collect(Collectors.toList());
         if(collect.size() != 3){
             throw new ValidateException("方案规则不完整");
         }
         ptlScheme.setEnergyType(collect.stream().filter(x->x.getAttrCode().equals("NewEnergyMark")).findFirst().get().getMin());
-        ptlScheme.setCarnature(collect.stream().filter(x->x.getAttrCode().equals("VehicleUseCode")).findFirst().get().getMin());
-        ptlScheme.setVehicleType(collect.stream().filter(x->x.getAttrCode().equals("CarTypeCode")).findFirst().get().getMin());
+//        ptlScheme.setCarnature(collect.stream().filter(x->x.getAttrCode().equals("CarNatureCode")).findFirst().get().getMin());
+
+        ptlScheme.setCarnature(
+                collect.stream()
+                .filter(x -> "CarNatureCode".equals(x.getAttrCode()))
+                .findFirst()
+                .map(x -> x.getDictLabal().stream()
+                        .filter(label -> Arrays.asList(x.getMinArray()).contains(label.getName()))
+                        .map(label -> label.getCode())
+                        .collect(Collectors.joining(",")))
+                .orElse(""));
+        ptlScheme.setVehicleType(
+                collect.stream()
+                .filter(x -> "CarKindCode".equals(x.getAttrCode()))
+                .findFirst()
+                .map(x -> x.getDictLabal().stream()
+                        .filter(label -> Arrays.asList(x.getMinArray()).contains(label.getName()))
+                        .map(label -> label.getCode())
+                        .collect(Collectors.joining(",")))
+                .orElse(""));
         ptlScheme.setRuleDesc(buildDesc(this.getRuleAttrs(), undwrtRulesAttrList));
 
         return ptlScheme;

+ 21 - 0
platform/src/main/java/com/jzg/controller/EsmInsCompanyController.java

@@ -6,14 +6,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.EsmInsCompanyAdd;
 import com.jzg.commons.entity.dto.EsmInsCompanyEnd;
+import com.jzg.commons.entity.po.SysUploadFiles;
 import com.jzg.commons.entity.vo.EsmInsCompanyReq;
 import com.jzg.commons.entity.vo.EsmInsCompanyResVo;
 import com.jzg.commons.entity.vo.EsmInsCompanyVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.ConvertUtils;
+import com.jzg.commons.util.MinioUtils;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.constants.ManagementSourceEnum;
+import com.jzg.mapper.SysUploadFilesMapper;
 import com.jzg.service.EsmInsCompanyService;
 import io.swagger.v3.oas.annotations.Operation;
 import com.jzg.commons.core.base.BaseController;
@@ -21,6 +24,7 @@ import com.jzg.commons.entity.po.EsmInsCompany;
 import com.jzg.commons.request.RequestSingleParam;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -41,6 +45,13 @@ public class EsmInsCompanyController extends BaseController {
     @Autowired
     private EsmInsCompanyService esmInsCompanyService;
 
+    @Autowired
+    private SysUploadFilesMapper sysUploadFilesMapper;
+
+    @Value("${minio.bucket-name}")
+    private String bucketName;
+
+
 
     @PostMapping("leftList")
     @Operation(summary = "获取顶级保险公司列表")
@@ -141,6 +152,16 @@ public class EsmInsCompanyController extends BaseController {
         return HttpResult.ok(esmInsCompanyService.getById(id));
     }
 
+    @Operation(summary = "根据主键查询 替换Logo")
+    @GetMapping(value = "/findLogoById")
+    public HttpResult<EsmInsCompany> findLogoById(@RequestParam String id) {
+        EsmInsCompany esmInsCompany = esmInsCompanyService.getByCompanyCode(id);
+        SysUploadFiles sysUploadFiles = sysUploadFilesMapper.selectById(esmInsCompany.getLogo());
+        String presignedObjectUrl = MinioUtils.getPresignedObjectUrl(bucketName, sysUploadFiles.getFileName());
+        esmInsCompany.setLogo(presignedObjectUrl);
+        return HttpResult.ok(esmInsCompany);
+    }
+
     /**
      * 基础分页查询
      *

+ 2 - 0
platform/src/main/java/com/jzg/service/EsmInsCompanyService.java

@@ -109,6 +109,8 @@ public interface EsmInsCompanyService extends IService<EsmInsCompany> {
     List<EsmInsCompanyResVo> findOrderPartnerCompanyList();
 
     List<EsmInsCompanyResVo> leftList(EsmInsCompanyReq req);
+
+    EsmInsCompany getByCompanyCode(String companyCode);
 }
 
 

+ 6 - 0
platform/src/main/java/com/jzg/service/impl/EsmInsCompanyServiceImpl.java

@@ -247,6 +247,12 @@ public class EsmInsCompanyServiceImpl extends ServiceImpl<EsmInsCompanyMapper, E
     public List<EsmInsCompanyResVo> leftList(EsmInsCompanyReq req) {
         return  baseMapper.leftList(req);
     }
+
+    @Override
+    public EsmInsCompany getByCompanyCode(String companyCode) {
+        EsmInsCompany esmInsCompany = baseMapper.selectOne(new LambdaQueryWrapper<EsmInsCompany>().eq(EsmInsCompany::getCompanyCode, companyCode));
+        return esmInsCompany;
+    }
 }
 
 

+ 3 - 3
tenant/costsorrule/src/main/java/com/jzg/costsorrule/model/ValidateSchemeRuleVo.java

@@ -46,9 +46,9 @@ public class ValidateSchemeRuleVo {
                 energyTypeCode.stream().filter(x->x.getValue().equals(this.quoteVo.getCarInfoVo().getEnergyTypeCode())).findFirst().get().getLabel()
         );
 
-        RList<SysDict> vehicleUseCode = redissonClient.getList(DICT_REDIS_KEY + "vehicle_use_code");
-        this.quoteVo.getCarInfoVo().setVehicleUseCode(
-                vehicleUseCode.stream().filter(x->x.getValue().equals(this.quoteVo.getCarInfoVo().getVehicleUseCode())).findFirst().get().getLabel()
+        RList<SysDict> vehicleUseCode = redissonClient.getList(DICT_REDIS_KEY + "car_kind_code");
+        this.quoteVo.getCarInfoVo().setCarKindCode(
+                vehicleUseCode.stream().filter(x->x.getValue().equals(this.quoteVo.getCarInfoVo().getCarKindCode())).findFirst().get().getLabel()
         );
 
 

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

@@ -32,6 +32,14 @@ public interface PlatformClient {
             @RequestParam("id") String id,
             @RequestHeader("Authorization") String authToken);
 
+    @GetMapping("/esmInsCompany/findLogoById")
+    public HttpResult<EsmInsCompany> findLogoById(
+            @RequestParam("id") String id,
+            @RequestHeader("Authorization") String authToken);
+
+
+
+
 
     // 获取二维码配置
     @GetMapping("/qrBarcode/queryByCompanyCode")

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

@@ -4,7 +4,10 @@ package com.jzg.quotation.commons.entity.vo.aggregated;
 import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
 import com.jzg.commons.entity.orders.po.InsOrdersCosts;
 import com.jzg.commons.entity.orders.po.InsOrdersPolicy;
+import com.jzg.commons.entity.po.EsmInsCompany;
 import com.jzg.commons.entity.quote.vo.*;
+import com.jzg.commons.entity.scheme.vo.PtlAgreementInsCompanyVo;
+import com.jzg.commons.entity.vo.EsmInsCompanyVo;
 import com.jzg.commons.util.IDCardUtils;
 import com.jzg.quotation.commons.constant.enums.quote.RiskCode;
 import com.jzg.quotation.commons.entity.vo.base.OrderBase;
@@ -17,6 +20,7 @@ import lombok.NoArgsConstructor;
 import java.io.Serial;
 import java.io.Serializable;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
@@ -51,6 +55,11 @@ public class QuoteEchoVo extends QuoteVo {
     //保单号信息
     private InsOrdersPolicy policy;
 
+    /**
+     * 编辑时候显示保司
+     */
+    private List<PtlAgreementInsCompanyVo> insCompanyVo;
+
 
     /**
      * 订单数据库查询数据转 QuoteVo对象
@@ -62,7 +71,9 @@ public class QuoteEchoVo extends QuoteVo {
         }
         this.getOrder().setOrdersNo(insOrdersVo.getId());
         this.getOrder().setQuoteNo(insOrdersVo.getQuoteNo());
+        this.getOrder().setInsuranceCompanyCode(insOrdersVo.getCompanyId());
         this.getOrder().setCompanyName(insOrdersVo.getCompanyName());
+        this.getOrder().setProductsCode(insOrdersVo.getProductId());
         this.getOrder().setOrderStatus(insOrdersVo.getInsOrders().getOrderStatus());
 
         //车辆信息处理
@@ -107,4 +118,20 @@ public class QuoteEchoVo extends QuoteVo {
     }
 
 
+    public void setInsCompanyVo(EsmInsCompany esmInsCompany){
+        if(Objects.isNull(insCompanyVo)){
+            this.insCompanyVo = new ArrayList<>();
+        }
+        PtlAgreementInsCompanyVo ptlAgreementInsCompanyVo = new PtlAgreementInsCompanyVo();
+        ptlAgreementInsCompanyVo.setId(esmInsCompany.getId());
+        ptlAgreementInsCompanyVo.setCode(esmInsCompany.getCode());
+        ptlAgreementInsCompanyVo.setName(esmInsCompany.getName());
+        ptlAgreementInsCompanyVo.setParentId(esmInsCompany.getParentId());
+        ptlAgreementInsCompanyVo.setLogo(esmInsCompany.getLogo());
+        ptlAgreementInsCompanyVo.setCompanyCode(esmInsCompany.getCompanyCode());
+        ptlAgreementInsCompanyVo.setNameSimple(esmInsCompany.getNameSimple());
+        this.insCompanyVo.add(ptlAgreementInsCompanyVo);
+
+    }
+
 }

+ 3 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/orders/InsOrdersVo.java

@@ -26,6 +26,9 @@ public class InsOrdersVo extends QuoteVo {
     @Schema(description = "保险公司id")
     private String companyId;
 
+    @Schema(description = "险种code")
+    private String productId;
+
     @Schema(description = "保险公司名称")
     private String companyName;
 

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

@@ -2,6 +2,7 @@ package com.jzg.quotation.summary.controller;
 
 
 import com.jzg.commons.aop.OperatorTrajectory;
+import com.jzg.commons.aop.PremissionCheck;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.InsOrdersParam;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
@@ -102,6 +103,11 @@ public class InsOrdersController {
     public HttpResult getHistoryQuote(){
         return HttpResult.ok(insOrdersService.getHistoryQuote());
     }
-
+//
+//    @Operation(summary = "编辑订单")
+//    @GetMapping("/revise")
+//    public HttpResult revise(String orderNo) {
+//        return HttpResult.ok(insOrdersService.revise(orderNo));
+//    }
 
 }

+ 9 - 7
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/QrCodeController.java

@@ -69,11 +69,13 @@ public class QrCodeController extends BaseController {
         result.put("insuredName",insuredPersonInfo.getName());
         result.put("licenseNo",carInfo.getLicenseNo());
         result.put("jqPremium",insOrdersCosts.getJqPremium());
-        result.put("syPremium",insOrdersCosts.getSumPremium());
+        result.put("syPremium",insOrdersCosts.getSyPremium());
         result.put("jyPremium",insOrdersCosts.getJyPremium());
         result.put("taxPremium",insOrdersCosts.getTaxPremium());
         result.put("sumPremium",insOrdersCosts.getSumPremium());
-        result.put("createTime",orders.getCreateTime());
+        result.put("createTime",orders.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        result.put("jqStartTime","");
+        result.put("syStartTime","");
         insOrdersRiskList.forEach(risk->{
             if(risk.getRiskCode().equals(RiskCode.TRAFFIC.getCode())){
                 result.put("jqStartTime",risk.getStartDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
@@ -120,11 +122,11 @@ public class QrCodeController extends BaseController {
 //            //重定向到错误页面中
 //            return getModelAndView("费用失效,请重新报价。");
 //        }
-        boolean agreementBoo = insOrdersQrcodeService.agreementValidated(orders);
-        if(!agreementBoo){
-            //重定向到错误页面中
-            return getModelAndView("");
-        }
+//        boolean agreementBoo = insOrdersQrcodeService.agreementValidated(orders);
+//        if(!agreementBoo){
+//            //重定向到错误页面中
+//            return getModelAndView("");
+//        }
         // 获取二维码配置
         HttpResult<QrBarcodeConfig> result = platformClient.qrBarcodeByCompanyCode(
                 orders.getCompanyId(),

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

@@ -1,6 +1,7 @@
 package com.jzg.quotation.summary.controller;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.jzg.commons.constants.CompanyConstants;
@@ -26,6 +27,7 @@ import com.jzg.quotation.commons.utils.SnowFlakeUtil;
 import com.jzg.quotation.summary.converter.QuoteInfoConverter;
 import com.jzg.quotation.summary.entity.po.QuoteRuleMapping;
 import com.jzg.quotation.summary.factory.CompanyFactory;
+import com.jzg.quotation.summary.mapper.SysUploadFilesMapper;
 import com.jzg.quotation.summary.service.*;
 import com.jzg.quotation.summary.state.listener.OrderStateListener;
 import io.minio.MinioClient;
@@ -38,6 +40,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.io.IOUtils;
+import org.simpleframework.xml.ElementArray;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
@@ -104,6 +107,15 @@ public class UnifyOrderManager {
     @Autowired
     MinioClient minioClient;
 
+    @Autowired
+    MinioUtils minioUtils;
+
+    @Autowired
+    SysUploadFilesMapper sysUploadFilesMapper;
+
+    @Autowired
+    InsOrdersPdfUrlService insOrdersPdfUrlService;
+
     @Value("${minio.bucket-name}")
     private String bucketName;
 
@@ -211,7 +223,7 @@ public class UnifyOrderManager {
 
     @Operation(summary = "统一核保")
     @PostMapping("/underwriting")
-    public HttpResult underwriting(@RequestBody UnderwritingVo underwritingVo) throws JsonProcessingException {
+    public HttpResult underwriting(@RequestBody UnderwritingVo underwritingVo) throws Exception {
         //获取保司实体
         InsOrders insOrders = insOrdersService.getById(underwritingVo.getOrder().getOrdersNo());
         AssertionUtils.isFail(Objects.isNull(insOrders),"订单不存在");
@@ -327,18 +339,59 @@ public class UnifyOrderManager {
     public HttpResult downloadPolicy(@RequestBody DownloadPolicyVo downloadPolicyVo) throws IOException {
         //获取保司实体
         InsOrders insOrders = insOrdersService.getById(downloadPolicyVo.getOrder().getOrdersNo());
-//        InsOrdersPdfUrl insOrdersPdfUrl = insOrdersService.getById(insOrders.getId());
+        InsOrdersCarInfo carInfo = insOrdersCarInfoService.getByOrderId(insOrders.getId());
+        InsOrdersPdfUrl insOrdersPdfUrl = insOrdersPdfUrlService.getPdfUrlByOrderNo(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()
-        }
 
+        //如果pdf 查不到数据 就去下载
+        if(Objects.isNull(insOrdersPdfUrl)){
+            DownloadPolicyResultVo downloadPolicyResultVo = downloadPolicyService.downloadPolicy(downloadPolicyVo);
+            if(Objects.nonNull(downloadPolicyResultVo.getJqUrl()) || Objects.nonNull(downloadPolicyResultVo.getJqFlagUrl()) ||
+            Objects.nonNull(downloadPolicyResultVo.getSyUrl()) || Objects.nonNull(downloadPolicyResultVo.getJyUrl())){
+                insOrdersPdfUrl = new InsOrdersPdfUrl();
+                insOrdersPdfUrl.setOrderNo(insOrders.getId());
+                insOrdersPdfUrl.setRiskCode(insOrders.getProductId());
+                String jqUrl = downloadPolicyResultVo.getJqUrl();
+                if(Objects.nonNull(jqUrl)) {
+                    String fileName = carInfo.getLicenseNo() + DateTime.now() + "交强保单.pdf";
+                    HttpResult<SysUploadFiles> uploadResult = platformClient.uploadUrl(jqUrl, fileName);
+                    if(uploadResult.getCode() == 200){
+                        insOrdersPdfUrl.setJqNo(downloadPolicyVo.getPolicie().getJqPolicyNo());
+                        insOrdersPdfUrl.setJqUrl(uploadResult.getData().getDownloadUrl());
+                    }
+                }
+                String jqFlagUrl = downloadPolicyResultVo.getJqFlagUrl();
+                if(Objects.nonNull(jqFlagUrl)){
+                    String fileName = carInfo.getLicenseNo() + DateTime.now() + "交强标志.pdf";
+                    HttpResult<SysUploadFiles> uploadResult = platformClient.uploadUrl(jqFlagUrl, fileName);
+                    if(uploadResult.getCode() == 200){
+                        insOrdersPdfUrl.setJqSignUrl(uploadResult.getData().getDownloadUrl());
+                    }
+                }
+                String syUrl = downloadPolicyResultVo.getSyUrl();
+                if(Objects.nonNull(syUrl)){
+                    String fileName = carInfo.getLicenseNo() + DateTime.now() + "商业保单.pdf";
+                    HttpResult<SysUploadFiles> uploadResult = platformClient.uploadUrl(syUrl, fileName);
+                    if(uploadResult.getCode() == 200){
+                        insOrdersPdfUrl.setSyNo(downloadPolicyVo.getPolicie().getSyPolicyNo());
+                        insOrdersPdfUrl.setSyUrl(uploadResult.getData().getDownloadUrl());
+                    }
+                }
+                String jyUrl = downloadPolicyResultVo.getJyUrl();
+                if(Objects.nonNull(jyUrl)){
+                    String fileName = carInfo.getLicenseNo() + DateTime.now() + "驾意保单.pdf";
+                    HttpResult<SysUploadFiles> uploadResult = platformClient.uploadUrl(jyUrl, fileName);
+                    if(uploadResult.getCode() == 200){
+                        insOrdersPdfUrl.setJyNo(downloadPolicyVo.getPolicie().getJyPolicyNo());
+                        insOrdersPdfUrl.setJyUrl(uploadResult.getData().getDownloadUrl());
+                    }
+                }
+            }
+            insOrdersPdfUrlService.save(insOrdersPdfUrl);
+        }
 
-        return HttpResult.ok();
+        return HttpResult.ok(insOrdersPdfUrl);
     }
 }

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/converter/QuoteInfoConverter.java

@@ -77,7 +77,7 @@ public class QuoteInfoConverter {
                 .stream()
                 .collect(Collectors.toMap(QuoteRuleMapping::getPlatformCode, x -> x));
         kindInfoVo.forEach(kind -> {
-            QuoteRuleMapping quoteRuleMapping = ruleMappingMap.get(kind.getPlatformKindCode());
+            QuoteRuleMapping quoteRuleMapping = ruleMappingMap.get(kind.getKindCode());
             kind.setKindCode(quoteRuleMapping.getRuleCode());
             kind.setKindName(quoteRuleMapping.getRuleName());
         });

+ 4 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersMapper.java

@@ -7,9 +7,9 @@ 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.orders.vo.OrderListVo;
 import com.jzg.commons.entity.vo.OrdersListVo;
+import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -26,5 +26,7 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
 
     Page<InsOrdersVo> queryList(@Param("page") Page page, @Param("insOrdersParam") InsOrdersParam insOrdersParam);
 
+    Page<OrderListVo> queryOrderList(@Param("page") Page page, @Param("insOrdersParam") InsOrdersParam insOrdersParam);
+
     List<HistoryQuoteResultVo> getHistoryQuote(@Param("userName") String userName);
 }

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

@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.commons.entity.orders.po.InsOrdersPdfUrl;
 import org.apache.ibatis.annotations.Mapper;
 
+/**
+ * @author tz
+ */
 @Mapper
 public interface InsOrdersPdfUrlMapper extends BaseMapper<InsOrdersPdfUrl> {
 }

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

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

+ 10 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersPdfUrlService.java

@@ -0,0 +1,10 @@
+package com.jzg.quotation.summary.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.entity.orders.po.InsOrdersPdfUrl;
+import com.jzg.quotation.summary.mapper.InsOrdersPdfUrlMapper;
+
+public interface InsOrdersPdfUrlService extends IService<InsOrdersPdfUrl> {
+
+    InsOrdersPdfUrl getPdfUrlByOrderNo(String orderNo);
+}

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

@@ -7,7 +7,7 @@ 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.orders.vo.OrderListVo;
 import com.jzg.commons.entity.vo.OrdersListVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.*;
 
@@ -18,7 +18,6 @@ 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.commons.entity.vo.orders.InsOrdersVo;
-import com.jzg.quotation.yongcheng.api.entity.response.QuoteResponse;
 
 public interface InsOrdersService extends IService<InsOrders> {
 
@@ -63,7 +62,7 @@ public interface InsOrdersService extends IService<InsOrders> {
      * @param insOrdersParam
      * @return
      */
-    Page<QuoteEchoVo> queryList(InsOrdersParam insOrdersParam);
+    Page<OrderListVo> queryList(InsOrdersParam insOrdersParam);
 
     /**
      * 查询订单详情
@@ -77,4 +76,5 @@ public interface InsOrdersService extends IService<InsOrders> {
      * @return
      */
     List<HistoryQuoteResultVo> getHistoryQuote();
+
 }

+ 10 - 3
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersKindServiceImpl.java

@@ -12,6 +12,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 @Service
 public class InsOrdersKindServiceImpl extends ServiceImpl<InsOrdersKindMapper, InsOrdersKind> implements InsOrdersKindService {
@@ -25,9 +26,15 @@ public class InsOrdersKindServiceImpl extends ServiceImpl<InsOrdersKindMapper, I
                 insOrdersKind.setAmount(new BigDecimal(kindInfoVo1.getAmount()));
                 insOrdersKind.setKindCode(kindInfoVo1.getKindCode());
                 insOrdersKind.setKindName(kindInfoVo1.getKindName());
-                insOrdersKind.setServiceTimes(Integer.parseInt(kindInfoVo1.getServiceTimes()));
-                insOrdersKind.setUnitAmount(new BigDecimal(kindInfoVo1.getUnitAmount()));
-                insOrdersKind.setDeductibleRate(new BigDecimal(kindInfoVo1.getDeductibleRate()));
+                if(Objects.nonNull(kindInfoVo1.getServiceTimes())) {
+                    insOrdersKind.setServiceTimes(Integer.parseInt(kindInfoVo1.getServiceTimes()));
+                }
+                if(Objects.nonNull(kindInfoVo1.getUnitAmount())) {
+                    insOrdersKind.setUnitAmount(new BigDecimal(kindInfoVo1.getUnitAmount()));
+                }
+                if(Objects.nonNull(kindInfoVo1.getDeductibleRate())) {
+                    insOrdersKind.setDeductibleRate(new BigDecimal(kindInfoVo1.getDeductibleRate()));
+                }
                 insOrdersKinds.add(insOrdersKind);
             }
             this.saveBatch(insOrdersKinds);

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

@@ -0,0 +1,24 @@
+package com.jzg.quotation.summary.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.entity.orders.po.InsOrdersPdfUrl;
+import com.jzg.quotation.summary.mapper.InsOrdersPdfUrlMapper;
+import com.jzg.quotation.summary.service.InsOrdersPdfUrlService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author
+ * @date 2025/2/19 11:18
+ */
+
+@Service
+public class InsOrdersPdfUrlServiceImpl extends ServiceImpl<InsOrdersPdfUrlMapper, InsOrdersPdfUrl> implements InsOrdersPdfUrlService {
+
+
+    @Override
+    public InsOrdersPdfUrl getPdfUrlByOrderNo(String orderNo) {
+        return getBaseMapper().selectOne(new LambdaUpdateWrapper<InsOrdersPdfUrl>()
+                .eq(InsOrdersPdfUrl::getOrderNo,orderNo));
+    }
+}

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

@@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.jzg.commons.constants.CompanyConstants;
 import com.jzg.commons.constants.InsuranceRisk;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.core.base.StateResult;
@@ -20,7 +19,8 @@ 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.orders.vo.OrderListVo;
+import com.jzg.commons.entity.po.EsmInsCompany;
 import com.jzg.commons.entity.po.InsTaskImages;
 import com.jzg.commons.entity.po.SysMessageTemplate;
 import com.jzg.commons.entity.quote.vo.*;
@@ -33,11 +33,9 @@ import com.jzg.commons.util.MinioUtils;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.quotation.commons.client.OrgClient;
+import com.jzg.quotation.commons.client.PlatformClient;
 import com.jzg.quotation.commons.constant.enums.base.ProductsType;
-import com.jzg.quotation.commons.entity.vo.aggregated.QuoteEchoVo;
-import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
-import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
-import com.jzg.quotation.commons.entity.vo.aggregated.UnderwritingResultsVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.*;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersAdd;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersEnd;
 import com.jzg.quotation.commons.entity.vo.orders.InsOrdersVo;
@@ -51,7 +49,6 @@ 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;
 
@@ -91,6 +88,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     private final OrgClient orgClient;
 
+    private final PlatformClient platformClient;
+
     private final BaseController baseController;
 
     @Setter(onMethod_ = @Autowired)
@@ -666,34 +665,24 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
 
     @Override
-    public Page<QuoteEchoVo> queryList(InsOrdersParam insOrdersParam){
-        Page<InsOrdersVo> insOrdersVoPage = insOrdersMapper.queryList(insOrdersParam.getPage(), insOrdersParam);
-        Page<QuoteEchoVo> quoteEchoVoPage = new Page<>();
-        List<QuoteEchoVo> quoteEchoVos = new ArrayList<>();
-        quoteEchoVoPage.setPages(insOrdersVoPage.getPages());
-        quoteEchoVoPage.setCurrent(insOrdersVoPage.getCurrent());
-        quoteEchoVoPage.setSize(insOrdersVoPage.getSize());
-        quoteEchoVoPage.setTotal(insOrdersVoPage.getTotal());
-        insOrdersVoPage.getRecords().forEach(insOrdersVo -> {
-            if (CollectionUtil.isNotEmpty(insOrdersVo.getCarUserInfoList())) {
-                for (InsOrdersCarUserInfo carUserInfo : insOrdersVo.getCarUserInfoList()) {
-                    // 使用映射逻辑处理用户信息
-                    CustomerInfoVo customerInfoVo = mapCarUserInfoToCustomerInfo(carUserInfo);
-                    setPolicyPersonInfo(insOrdersVo, carUserInfo.getPolicyPersonType(), customerInfoVo);
-                }
-                insOrdersVo.setCarUserInfoList(null);
-            }
-            quoteEchoVos.add(new QuoteEchoVo(insOrdersVo));
-        });
-        quoteEchoVoPage.setRecords(quoteEchoVos);
-        return quoteEchoVoPage;
+    public Page<OrderListVo> queryList(InsOrdersParam insOrdersParam){
+        Page<OrderListVo> orderListVoPage = insOrdersMapper.queryOrderList(insOrdersParam.getPage(), insOrdersParam);
+
+        return orderListVoPage;
     }
 
     @Override
     public QuoteVo getOrderDetail(String ordersNo) {
         InsOrdersVo insOrdersVo = selectById(Long.parseLong(ordersNo));
         AssertionUtils.isFail(Objects.isNull(insOrdersVo),"订单不存在");
-        return new QuoteEchoVo(insOrdersVo);
+        QuoteEchoVo resultVo = new QuoteEchoVo(insOrdersVo);
+        //获取保司信息
+        String companyId = insOrdersVo.getInsOrders().getCompanyId();
+        HttpResult<EsmInsCompany> esmInsCompanyHttpResult = platformClient.findLogoById(companyId, baseController.getToken());
+        if(esmInsCompanyHttpResult.getCode()==200){
+            resultVo.setInsCompanyVo(esmInsCompanyHttpResult.getData());
+        }
+        return resultVo;
     }
 
     @Override
@@ -706,4 +695,5 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         return insOrdersMapper.getHistoryQuote(userName);
     }
 
+
 }

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

@@ -422,6 +422,49 @@
         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="queryOrderList" resultType="com.jzg.commons.entity.orders.vo.OrderListVo">
+        SELECT
+            io.id as order_no,
+            io.company_id,
+            io.company_name,
+            io.product_id as product_code,
+            io.product_name,
+            io.order_status,
+            ioci.license_no,
+            owner_u.name as owner_name,
+            owner_u.mobile as owner_mobile,
+            policy_u.name as policy_name,
+            policy_u.mobile as policy_mobile,
+            insur_u.name as insur_name,
+            insur_u.mobile as insur_mobile,
+            iorci.start_date as ci_start_date,
+            iorbi.start_date as bi_start_date
+        FROM
+            ins_orders io
+                LEFT JOIN ins_orders_car_info ioci ON ioci.order_no = io.id
+                LEFT JOIN
+            ins_orders_car_user_info owner_u on owner_u.order_no = io.id and owner_u.policy_person_type = 1
+                left JOIN
+            ins_orders_car_user_info policy_u on policy_u.order_no = io.id and policy_u.policy_person_type = 2
+                left JOIN
+            ins_orders_car_user_info insur_u on insur_u.order_no = io.id and insur_u.policy_person_type = 3
+                left join
+            ins_orders_risk iorci on iorci.order_no = io.id and iorci.risk_code = '0507'
+                left join
+            ins_orders_risk iorbi on iorbi.order_no = io.id and iorbi.risk_code = '0510'
+        where
+            1=1
+        <if test="insOrdersParam.orderNo != null and insOrdersParam.orderNo != ''">
+            AND io.id = #{insOrdersParam.orderNo}
+        </if>
+        <if test="insOrdersParam.licenseNo != null and insOrdersParam.licenseNo != ''">
+            AND ioci.license_no = #{insOrdersParam.licenseNo}
+        </if>
+        <if test="insOrdersParam.orderStatus!= null and insOrdersParam.orderStatus!= ''">
+            AND io.order_status = #{insOrdersParam.orderStatus}
+        </if>
+    </select>
+
     <select id="getHistoryQuote" resultType="com.jzg.commons.entity.orders.vo.HistoryQuoteResultVo">
         SELECT
             t.id as order_no,

+ 4 - 1
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/QuoteRequest.java

@@ -978,7 +978,10 @@ public class QuoteRequest {
                 String passenger = String.valueOf(Integer.parseInt(vhl.getNSeatNum()) - 1);
                 kindInfoVos.forEach(item->{
                     CvrgSY cvrgSY = new CvrgSY();
-                    String txt4 = (Double.parseDouble(item.getDeductibleRate()) / 100) + "";
+                    String txt4 = "";
+                    if(Objects.nonNull(item.getDeductibleRate())) {
+                        txt4 = (Double.parseDouble(item.getDeductibleRate()) / 100) + "";
+                    }
                     cvrgSY.setCCvrgNo(item.getKindCode());
                     if(item.getKindCode().equals("030006")){
                         cvrgSY.setNPerAmt(vhl.getNActualValue());

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

@@ -483,6 +483,9 @@ public class YongChengApiRequestImpl implements YongChengApiRequest {
         String biClaims = Optional.ofNullable(rd.getPrmCoef()).map(QuoteResponse.PrmCoefResponse::getNClaimTimes).orElse(null);
         quoteRespVo.setBiClaims(biClaims);
 
+        //光博分
+        quoteRespVo.getScoreVo().setScore(rd.getBase().getCWeRisk());
+
         //欠税信息
         if (null != rd.getTax()) {
             List<TaxInfoVo> taxArrearsList = new ArrayList<>();

+ 8 - 6
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

@@ -289,8 +289,8 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
         //根据基本规则 能源、车辆类型、使用性质获取方案
         List<PtlScheme> ptlSchemes = ptlSchemeMapper.selectList(new LambdaQueryWrapper<PtlScheme>()
                 .eq(PtlScheme::getEnergyType, schemeRuleFilterVo.getCarInfo().getEnergyTypeCode())
-                .eq(PtlScheme::getCarnature, schemeRuleFilterVo.getCarInfo().getCarNatureCode())
-                .eq(PtlScheme::getVehicleType, schemeRuleFilterVo.getCarInfo().getVehicleUseCode())
+                .like(PtlScheme::getCarnature, schemeRuleFilterVo.getCarInfo().getCarNatureCode())
+                .like(PtlScheme::getVehicleType, schemeRuleFilterVo.getCarInfo().getCarKindCode())
                 .eq(PtlScheme::getProductId,schemeRuleFilterVo.getProductId())
                 .eq(PtlScheme::getIsDelete, 0));
 
@@ -384,12 +384,14 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
 
         //自选方案
         SchemeResultVo.SchemeVo opSchemeVo = schemeInsuranceInfo.stream().filter(x -> x.getSchemeType().equals("2")).findFirst().orElse(null);
-        schemeResultVo.setOptionalScheme(opSchemeVo.getInfos().get(0));
+        if(Objects.nonNull(opSchemeVo)){
+            schemeResultVo.setOptionalScheme(opSchemeVo.getInfos().get(0));
+        }
 
         //排除交强险的险种
-        schemeResultVo.getSchemes().removeIf(schemeInfoVo ->
-                schemeInfoVo.getKinds().stream().anyMatch(kind -> "J1".equals(kind.getKindCode()))
-        );
+        schemeResultVo.getSchemes().stream().forEach(scheme->{
+            scheme.getKinds().removeIf(kind -> "J1".equals(kind.getKindCode()));
+        });
 
         SchemeResultVo.SchemeInfoVo optionalScheme = schemeResultVo.getOptionalScheme();
         if (optionalScheme != null && optionalScheme.getKinds() != null) {