785834757 1 anno fa
parent
commit
25c3a94af8
23 ha cambiato i file con 201 aggiunte e 83 eliminazioni
  1. 2 0
      authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java
  2. 11 20
      commons/src/main/java/com/jzg/commons/constants/dict/InsOrderStatusEnum.java
  3. 2 3
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrders.java
  4. 2 2
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCarInfo.java
  5. 2 2
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCarUserInfo.java
  6. 1 1
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCosts.java
  7. 4 4
      commons/src/main/java/com/jzg/commons/entity/quote/vo/CarInfoVo.java
  8. 1 1
      commons/src/main/java/com/jzg/commons/entity/quote/vo/RiskInfoVo.java
  9. 2 0
      commons/src/main/java/com/jzg/commons/entity/scheme/vo/SchemeResultVo.java
  10. 2 2
      commons/src/main/java/com/jzg/commons/exception/TokenExpireException.java
  11. 6 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/PlatformClient.java
  12. 5 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/base/OrderBase.java
  13. 50 4
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  14. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarInfoService.java
  15. 2 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarUserInfoService.java
  16. 11 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java
  17. 9 7
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarInfoServiceImpl.java
  18. 8 6
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersCarUserInfoServiceImpl.java
  19. 36 5
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  20. 2 1
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/PriceDiscountRatioRequest.java
  21. 6 6
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/QuoteRequest.java
  22. 20 15
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java
  23. 16 1
      tenant/organization/src/main/resources/mapper/PtlSchemeMapper.xml

+ 2 - 0
authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java

@@ -6,6 +6,7 @@ import com.jzg.commons.entity.po.SysRoleDataScope;
 import com.jzg.commons.entity.po.SysRoleDataScopeLink;
 import com.jzg.commons.entity.po.SysSystem;
 import com.jzg.commons.entity.vo.SysRoleDataScopeVo;
+import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.entity.SysRolePerms;
@@ -101,6 +102,7 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
         String name = "",workNumber = "",headSculpture = "";
         if(!system.equals(SystemConstants.SYSTEM_PLATFORM.getCode())){
             SysUserJzgVo jzgUserInfo = sysUserService.getJzgUserInfo(byId.getId(),system);
+            AssertionUtils.isFail(Objects.isNull(jzgUserInfo),"暂无权限登录系统");
             name = jzgUserInfo.getName();
             workNumber = jzgUserInfo.getWorkNumber();
         }else{

+ 11 - 20
commons/src/main/java/com/jzg/commons/constants/dict/InsOrderStatusEnum.java

@@ -13,28 +13,19 @@ import java.util.Objects;
 public enum InsOrderStatusEnum implements IBaseEnum {
 
     //所有未提交核保的均为报价中(包括拒保订单 )
-    QUOTE_ING("0", "报价完成", 1, 0),
+    QUOTE_ING("0", "订单已提交", 1, 0),
 
     //已提交核保,并转人工核保状态
     WAIT_AUDIT("1", "待核保", 2, 0),
 
     //自动核保或者人工核保审核通过
-    WAIT_PAY("2", "已核保待缴费", 3, 0),
-
-    //客户缴费完成生成保单状态
-    ACCEPT_INSURANCE("3", "已承保", 4, 0),
-
-    //人工核保退回状态,直至再次提交核保,状态修改为待核保
-    TO_BACK("4", "核保退回", 6, 0),
-
-    //报价失败
-    QUOTE_FAILED("10","报价失败",8,0),
-
-    //重复投保
-    REPEAT_INSURE("11","重复投保",9,0)
-
-    //撤回二维码
-//    BACK_QR_CODE("5", "撤销二维码", 7, 0),
+    AUDIT_ING("2", "核保中", 3, 0),
+    STAFF_PROCESS("3", "人工处理", 3, 0),
+    PAY_PENDING("4", "待缴费", 3, 0),
+    UNDERWRITED("5", "已承保", 3, 0),
+    QUOTE_FAIL("6", "报价失败", 3, 0),
+    AUDIT_FAIL("7", "核保失败", 3, 0),
+    ORDER_CLOSE("8", "订单关闭", 3, 0),
     ;
 
 
@@ -58,8 +49,8 @@ public enum InsOrderStatusEnum implements IBaseEnum {
         return result;
     }
 
-    public static String[] getRefuseUnderwriting() {
-        return new String[]{WAIT_AUDIT.getCode(), TO_BACK.getCode()};
-    }
+//    public static String[] getRefuseUnderwriting() {
+//        return new String[]{WAIT_AUDIT.getCode(), TO_BACK.getCode()};
+//    }
 
 }

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

@@ -15,10 +15,10 @@ public class InsOrders extends BaseModel {
 
     @Schema(description = "订单ID")
     @TableId(value = "id", type = IdType.ASSIGN_ID)
-    private Long id;
+    private String id;
 
     @Schema(description = "报价订单号")
-    private Long quoteNo;
+    private String quoteNo;
 
     @Schema(description = "协议ID")
     private String agreementId;
@@ -83,5 +83,4 @@ public class InsOrders extends BaseModel {
     @Schema(description = "审核意见")
     private String auditComments;
 
-
 }

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

@@ -13,10 +13,10 @@ import java.time.LocalDateTime;
 public class InsOrdersCarInfo extends BaseModel {
 
     @Schema(description = "订单号")
-    private Long orderNo;
+    private String orderNo;
 
     @Schema(description = "是否已上牌")
-    private int isRegistered;
+    private boolean isRegistered;
 
     @Schema(description = "车牌号")
     private String licenseNo;

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

@@ -15,9 +15,9 @@ import java.time.LocalDateTime;
 public class InsOrdersCarUserInfo extends BaseModel {
     @Schema(description = "主键id")
     @TableId(value = "id", type = IdType.ASSIGN_ID)
-    private Long id;
+    private String id;
     @Schema(description = "订单号")
-    private Long orderNo;
+    private String orderNo;
 
     @Schema(description = "保单人员类型 1 车主 2 投保人 3 被保人")
     private Integer policyPersonType;

+ 1 - 1
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCosts.java

@@ -14,7 +14,7 @@ public class InsOrdersCosts {
 
     @Id
     @Schema(description = "订单号")
-    private Long orderNo;
+    private String orderNo;
 
     @Schema(description = "交强险保费")
     private BigDecimal jqPremium;

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

@@ -138,19 +138,19 @@ public class CarInfoVo implements Serializable {
     /**
      * 过户车(如果存在交强险商业险分开的情况是转为交强险过户)
      */
-    private boolean transfer;
+    private boolean transfer = false;
     /**
      * 商业险过户
      */
-    private boolean biTransfer;
+    private boolean ciTransfer = false;
     /**
      * 是否贷款车 true 贷款车
      */
-    private boolean loanStatus;
+    private boolean loanStatus = false;
     /**
      * 新能源标志 true 新能源
      */
-    private boolean newEnergyMark;
+    private boolean newEnergyMark = false;
 
     /**
      * 过户日期:发证日期的正确格式为yyyy-MM-dd

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

@@ -41,7 +41,7 @@ public class RiskInfoVo implements Serializable {
      * 是否及时起保
      * true 及时起保 false 不及时起保
      */
-    private boolean instantFlag;
+    private boolean instantFlag = false;
 
 
 }

+ 2 - 0
commons/src/main/java/com/jzg/commons/entity/scheme/vo/SchemeResultVo.java

@@ -1,5 +1,6 @@
 package com.jzg.commons.entity.scheme.vo;
 
+import com.jzg.commons.entity.po.JyxBlame;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -94,5 +95,6 @@ public class SchemeResultVo {
         private String coverage;
         private String premium;
         private String quantity;
+        private List<JyxBlame> blames = new ArrayList<>();
     }
 }

+ 2 - 2
commons/src/main/java/com/jzg/commons/exception/TokenExpireException.java

@@ -9,13 +9,13 @@ public class TokenExpireException extends RuntimeException {
 
     public TokenExpireException() {
         super("token过期,请重新登录");
-        this.code = "400";
+        this.code = "401";
 
     }
 
     public TokenExpireException(String message) {
         super(message);
-        this.code = "400";
+        this.code = "401";
     }
 
     public TokenExpireException(String code, String message) {

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

@@ -2,6 +2,7 @@ package com.jzg.quotation.commons.client;
 
 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.vo.PersonAreaVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -22,4 +23,9 @@ public interface PlatformClient {
             @RequestParam("agreementId") String agreementId,
             @RequestHeader("Authorization") String authToken);
 
+    @GetMapping("/esmInsCompany/findById")
+    public HttpResult<EsmInsCompany> findById(
+            @RequestParam("id") String id,
+            @RequestHeader("Authorization") String authToken);
+
 }

+ 5 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/entity/vo/base/OrderBase.java

@@ -24,6 +24,11 @@ public class OrderBase implements Serializable {
      */
     private String ordersNo;
 
+    /**
+     * 报价号 用于处理影像上传
+     */
+    private String quoteNo;
+
     /**
      * 保险公司代码
      */

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

@@ -1,25 +1,38 @@
 package com.jzg.quotation.summary.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
+import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.po.EsmInsCompany;
+import com.jzg.commons.util.AssertionUtils;
+import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
 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.UnderwritingVo;
 import com.jzg.quotation.commons.service.QuotationApiBaseService;
 import com.jzg.quotation.commons.client.PlatformClient;
+import com.jzg.quotation.commons.utils.SnowFlakeUtil;
 import com.jzg.quotation.summary.factory.CompanyFactory;
 import com.jzg.quotation.summary.service.*;
+import com.jzg.quotation.summary.service.InsOrdersCarInfoService;
+import com.jzg.quotation.summary.service.InsOrdersService;
+import com.jzg.quotation.summary.service.InsOrdersService;
+import com.jzg.quotation.summary.service.SysQuoteConfigService;
+import com.jzg.quotation.summary.service.SysQuoteRedisService;
+import com.thoughtworks.xstream.mapper.LambdaMapper;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Objects;
 
 import java.util.List;
 
@@ -50,16 +63,49 @@ public class UnifyOrderManager {
     @Autowired
     InsOrdersCarInfoService insOrdersCarInfoService;
 
+
     @Autowired
     InsOrdersCarUserInfoService insOrdersCarUserInfoService;
 
+
+    /**\
+     * 获取报价号
+     * @param licenseNo
+     * @param vinNo
+     * @param engineNo
+     * @return
+     */
+    @Operation(summary = "获取报价号")
+    @GetMapping("/getQuoteNo")
+    public HttpResult getQuoteNo(@Schema(description = "车牌号") String licenseNo,
+                                 @Schema(description = "车架号") String vinNo,
+                                 @Schema(description = "发动机号") String engineNo) {
+        String quoteNo = String.valueOf(SnowFlakeUtil.getSnowFlakeId());
+        InsOrdersCarInfo carInfo = insOrdersCarInfoService.getOne(new LambdaQueryWrapper<InsOrdersCarInfo>()
+                .eq(InsOrdersCarInfo::getLicenseNo, licenseNo)
+                .eq(InsOrdersCarInfo::getVinNo, vinNo)
+                .eq(InsOrdersCarInfo::getEngineNo, engineNo));
+        if(Objects.nonNull(carInfo)){
+            InsOrders insOrders = insOrdersService.getById(carInfo.getOrderNo());
+            if(Objects.nonNull(insOrders)){
+                quoteNo = String.valueOf(insOrders.getQuoteNo());
+            }
+        }
+        return HttpResult.ok(quoteNo);
+    }
+
+
     /**
      * 统一报价
      * @param quoteVo
      * @return
      */
+    @Operation(summary = "统一报价")
     @PostMapping("/quote")
     public HttpResult quote(@RequestBody QuoteVo quoteVo) throws JsonProcessingException {
+        HttpResult<EsmInsCompany> esmInsCompanyHttpResult = platformClient.findById(quoteVo.getOrder().getInsuranceCompanyCode(), baseController.getToken());
+        AssertionUtils.isFail(esmInsCompanyHttpResult.getCode() != 200,esmInsCompanyHttpResult.getMsg());
+        quoteVo.getOrder().setInsuranceCompanyCode(esmInsCompanyHttpResult.getData().getCompanyCode());
         //获取保司实体
         QuotationApiBaseService quoteService = companyFactory.getQuoteService(
                 quoteVo.getOrder().getInsuranceCompanyCode(),

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

@@ -12,5 +12,5 @@ import java.util.List;
 public interface InsOrdersCarInfoService extends IService<InsOrdersCarInfo> {
     InsOrdersCarInfo createCarInfo(InsOrders insOrders, CarInfoVo carInfoVo, DateTimeFormatter formatter);
 
-    InsOrdersCarInfo getByOrderId(Long orderId);
+    InsOrdersCarInfo getByOrderId(String orderId);
 }

+ 2 - 2
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersCarUserInfoService.java

@@ -9,8 +9,8 @@ import java.time.format.DateTimeFormatter;
 import java.util.List;
 
 public interface InsOrdersCarUserInfoService extends IService<InsOrdersCarUserInfo> {
-    InsOrdersCarUserInfo createUserInfo(Long orderNo, CustomerInfoVo customerInfoVo, DateTimeFormatter formatter,Integer policyPersonType);
+    InsOrdersCarUserInfo createUserInfo(String orderNo, CustomerInfoVo customerInfoVo, DateTimeFormatter formatter,Integer policyPersonType);
 
 
-    List<InsOrdersCarUserInfo> getByOrderId(Long orderId);
+    List<InsOrdersCarUserInfo> getByOrderId(String orderId);
 }

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

@@ -10,6 +10,9 @@ import com.jzg.commons.entity.vo.InsOrdersVo;
 import com.jzg.commons.entity.vo.OrdersListVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 
+import java.lang.reflect.InvocationTargetException;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+
 public interface InsOrdersService extends IService<InsOrders> {
 
 
@@ -30,6 +33,14 @@ public interface InsOrdersService extends IService<InsOrders> {
 
     void generateOrders(QuoteVo quoteVo);
 
+    /**
+     * 保存报价的订单
+     * @return
+     */
+    boolean saveQuoteOrders(QuoteVo quoteVo) throws InvocationTargetException, IllegalAccessException;
+
+
+
 
 
 

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

@@ -1,5 +1,6 @@
 package com.jzg.quotation.summary.service.impl;
 
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.entity.orders.po.InsOrders;
@@ -12,9 +13,11 @@ import com.jzg.quotation.summary.service.InsOrdersCarInfoService;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
+import java.util.Objects;
 
 @Service
 public class InsOrdersCarInfoServiceImpl extends ServiceImpl<InsOrdersCarInfoMapper, InsOrdersCarInfo> implements InsOrdersCarInfoService {
@@ -25,8 +28,7 @@ public class InsOrdersCarInfoServiceImpl extends ServiceImpl<InsOrdersCarInfoMap
         info.setOrderNo(insOrders.getId());
         info.setBrandName(carInfoVo.getBrandName());
         info.setLicenseNo(carInfoVo.getLicenseNo());
-        info.setIsRegistered(carInfoVo.getLicenseNo() == null
-                || carInfoVo.getLicenseNo().isEmpty() ? 1 : 0);
+        info.setRegistered(Objects.isNull(carInfoVo.getLicenseNo()) && carInfoVo.getLicenseNo().isEmpty());
         info.setVinNo(carInfoVo.getVinNo());
         info.setEngineNo(carInfoVo.getEngineNo());
         info.setCarYear(carInfoVo.getCarYear());
@@ -45,21 +47,21 @@ public class InsOrdersCarInfoServiceImpl extends ServiceImpl<InsOrdersCarInfoMap
         info.setLicenseColorCode(carInfoVo.getLicenseColorCode());
         info.setCarKindDetailIdCode(carInfoVo.getCarKindDetailIdCode());
         info.setLicenseKindCode(carInfoVo.getLicenseKindCode());
-        info.setRegisterDate(LocalDateTime.parse(carInfoVo.getRegisterDate(),formatter));
-        info.setIssueDate(LocalDateTime.parse(carInfoVo.getIssueDate(),formatter));
+        info.setRegisterDate(LocalDate.parse(carInfoVo.getRegisterDate(), formatter).atStartOfDay());
+        info.setIssueDate(LocalDate.parse(carInfoVo.getIssueDate(),formatter).atStartOfDay());
         info.setTransfer(carInfoVo.isTransfer() ? "1" : "0");
         if (info.getTransfer().equals("1")) {
-            info.setTransferDate(LocalDateTime.parse(carInfoVo.getTransferDate(),formatter));
+            info.setTransferDate(LocalDate.parse(carInfoVo.getTransferDate(),formatter).atStartOfDay());
         } else {
             info.setTransferDate(null);
         }
-        info.setTransferBi(carInfoVo.isBiTransfer() ? "1" : "0");
+        info.setTransferBi(carInfoVo.isCiTransfer() ? "1" : "0");
         this.save(info);
         return info;
     }
 
     @Override
-    public InsOrdersCarInfo getByOrderId(Long orderId) {
+    public InsOrdersCarInfo getByOrderId(String orderId) {
         return baseMapper.selectOne(new LambdaQueryWrapper<InsOrdersCarInfo>()
                 .eq(InsOrdersCarInfo::getOrderNo, orderId));
     }

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

@@ -7,8 +7,10 @@ import com.jzg.commons.entity.orders.po.InsOrdersCarUserInfo;
 import com.jzg.commons.entity.quote.vo.CustomerInfoVo;
 import com.jzg.quotation.summary.mapper.InsOrdersCarUserInfoMapper;
 import com.jzg.quotation.summary.service.InsOrdersCarUserInfoService;
+import net.sf.cglib.core.Local;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
@@ -16,18 +18,18 @@ import java.util.List;
 @Service
 public class InsOrdersCarUserInfoServiceImpl extends ServiceImpl<InsOrdersCarUserInfoMapper, InsOrdersCarUserInfo> implements InsOrdersCarUserInfoService {
     @Override
-    public InsOrdersCarUserInfo createUserInfo(Long orderNo, CustomerInfoVo customerInfoVo, DateTimeFormatter formatter, Integer policyPersonType) {
+    public InsOrdersCarUserInfo createUserInfo(String orderNo, CustomerInfoVo customerInfoVo, DateTimeFormatter formatter, Integer policyPersonType) {
         InsOrdersCarUserInfo info = new InsOrdersCarUserInfo();
         info.setOrderNo(orderNo);
         info.setPolicyPersonType(policyPersonType); // 车主
         info.setPersonType(Integer.parseInt(customerInfoVo.getProperty()));
         info.setName(customerInfoVo.getName());
         info.setIdentifyNumber(customerInfoVo.getIdentifyNumber());
-        info.setAge(Integer.parseInt(customerInfoVo.getAge()));
-        info.setGender(customerInfoVo.getGender());
+//        info.setAge(Integer.parseInt(customerInfoVo.getAge()));
+//        info.setGender(customerInfoVo.getGender());
         info.setAddr(customerInfoVo.getAddr());
-        info.setIdentifyValidDate(LocalDateTime.parse(customerInfoVo.getIdentifyValidDate(), formatter));
-        info.setIdentifyValidEndDate(LocalDateTime.parse(customerInfoVo.getIdentifyValidEndDate(), formatter));
+        info.setIdentifyValidDate(LocalDate.parse(customerInfoVo.getIdentifyValidDate(), formatter).atStartOfDay());
+        info.setIdentifyValidEndDate(LocalDate.parse(customerInfoVo.getIdentifyValidEndDate(), formatter).atStartOfDay());
         info.setMobile(customerInfoVo.getMobile());
         info.setEmail(customerInfoVo.getEmail());
 
@@ -43,7 +45,7 @@ public class InsOrdersCarUserInfoServiceImpl extends ServiceImpl<InsOrdersCarUse
     }
 
     @Override
-    public List<InsOrdersCarUserInfo> getByOrderId(Long orderId) {
+    public List<InsOrdersCarUserInfo> getByOrderId(String orderId) {
         return baseMapper.selectList(new LambdaQueryWrapper<InsOrdersCarUserInfo>().eq(InsOrdersCarUserInfo::getOrderNo, orderId));
     }
 

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

@@ -17,9 +17,12 @@ import com.jzg.commons.util.StringUtils;
 import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.quotation.commons.constant.enums.base.ProductsType;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.commons.util.idgen.IdGenerate;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.commons.utils.SnowFlakeUtil;
 import com.jzg.quotation.summary.mapper.InsOrdersMapper;
 import com.jzg.quotation.summary.service.*;
+import org.apache.commons.beanutils.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -28,6 +31,7 @@ import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.lang.reflect.InvocationTargetException;
 import java.util.List;
 
 @Service
@@ -81,7 +85,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             if (quoteNo == null) {
                 return HttpResult.error("生成引用编号失败");
             }
-            insOrders.setQuoteNo(quoteNo);
+            insOrders.setQuoteNo(String.valueOf(quoteNo));
 
             // 插入订单信息,如果插入失败,则返回错误信息
             int insertResult = insOrdersMapper.insert(insOrders);
@@ -92,13 +96,13 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
             // 获取车辆信息对象,并设置订单编号,然后保存车辆信息
             InsOrdersCarInfo carInfoVo = ordersAdd.getCarInfoVo();
-            carInfoVo.setOrderNo(quoteNo);
+            carInfoVo.setOrderNo(String.valueOf(quoteNo));
             ordersCarInfoService.save(carInfoVo);
 
             // 获取用户信息对象,并设置订单编号,然后保存用户信息
             List<InsOrdersCarUserInfo> carUserInfoList = ordersAdd.getCarUserInfoList();
             for (InsOrdersCarUserInfo carUserInfo : carUserInfoList) {
-                carUserInfo.setOrderNo(quoteNo);
+                carUserInfo.setOrderNo(String.valueOf(quoteNo));
             }
             ordersCarUserInfoService.saveBatch(carUserInfoList);
 
@@ -145,6 +149,33 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         return null;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean saveQuoteOrders(QuoteVo quoteVo) throws InvocationTargetException, IllegalAccessException {
+        InsOrders insOrders = new InsOrders();
+        insOrders.setId(IdGenerate.nextId());
+        insOrders.setQuoteNo(quoteVo.getOrder().getQuoteNo());
+        insOrders.setOrderStatus(InsOrderStatusEnum.QUOTE_ING.getCode());
+        insOrders.setCompanyId(quoteVo.getOrder().getInsuranceCompanyCode());
+        insOrders.setProductId(quoteVo.getOrder().getProductsCode());
+//        insOrdersMapper.insert(insOrders);
+
+        InsOrdersCarInfo carInfo = new InsOrdersCarInfo();
+        BeanUtils.copyProperties(carInfo,quoteVo.getCarInfoVo());
+        carInfo.setOrderNo(insOrders.getId());
+
+        InsOrdersCarUserInfo ownersInfo = new InsOrdersCarUserInfo();
+        BeanUtils.copyProperties(ownersInfo,quoteVo.getOwnersInfo());
+
+        InsOrdersCarUserInfo insuredPersonInfo = new InsOrdersCarUserInfo();
+        BeanUtils.copyProperties(insuredPersonInfo,quoteVo.getInsuredPersonInfo());
+
+        InsOrdersCarUserInfo policyHolderInfo = new InsOrdersCarUserInfo();
+        BeanUtils.copyProperties(policyHolderInfo,quoteVo.getPolicyHolderInfo());
+
+        return true;
+    }
+
 
     @Override
     public IPage<OrdersListVo> pageList(InsOrdersParam insOrdersParam) {
@@ -160,10 +191,10 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     @Override
     public void generateOrders(QuoteVo quoteVo) {
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         // 保存主订单信息
         InsOrders insOrders = new InsOrders();
-        insOrders.setQuoteNo(SnowFlakeUtil.getSnowFlakeId());
+        insOrders.setQuoteNo(String.valueOf(SnowFlakeUtil.getSnowFlakeId()));
         insOrders.setAgreementId(quoteVo.getOrder().getAgreementId());
         insOrders.setOrderStatus(InsOrderStatusEnum.QUOTE_ING.getCode()); // 订单状态 报价中
         insOrders.setApiType(String.valueOf(quoteVo.getOrder().getApiType()));

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

@@ -11,6 +11,7 @@ import lombok.Data;
 
 import java.io.Serializable;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @author quchen
@@ -99,7 +100,7 @@ public class PriceDiscountRatioRequest implements Serializable {
                 this.CFstRegYm = carInfoVo.getRegisterDate();
                 this.TInsrncBgnTm = startTime;
                 this.IsContainDamage = "1";
-                if (!kindInfoVoList.isEmpty()) {
+                if (Objects.nonNull(kindInfoVoList) && !kindInfoVoList.isEmpty()) {
                     this.CProdNo = "0364";
                     kindInfoVoList.forEach(kindInfoVo -> {
                             if (kindInfoVo.getKindCode().equals(KindCode.A.getCode())) {

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

@@ -1094,8 +1094,8 @@ public class QuoteRequest {
 
             @JsonProperty("CvrgJQ")
             @JacksonXmlElementWrapper(useWrapping = false)
-            @JacksonXmlProperty(localName = "CvrgJQ")
-            private List<CvrgJQ> CvrgJQ;
+            @JacksonXmlProperty(localName = "cvrgJQ")
+            private List<CvrgJQ> cvrgJQ;
 
             @Data
             public static class CvrgJQ {
@@ -1640,7 +1640,7 @@ public class QuoteRequest {
             @JacksonXmlProperty(localName = "CMassCarMrk")
             private String CMassCarMrk;
 
-            public Applicant(CustomerInfoVo ownerInfo, CustomerInfoVo policyHolderInfo) {
+            public Applicant(CustomerInfoVo ownerInfo, CustomerInfoVo policyHolderInfo,YcApiConfigurationProperties ycApiConfigurationProperties) {
 
                 //投保人类型: 0:法人 1:个人(中国籍) 2: 个人(非中国籍)
                 String property = policyHolderInfo.getProperty();
@@ -1679,7 +1679,7 @@ public class QuoteRequest {
                     this.setCSex(IDCardUtils.GetYcSex(policyHolderInfo.getIdentifyNumber()));
                     this.setCCntrNme(policyHolderInfo.getName());
                     // 增加团车标志
-//                    applicant.setCMassCarMrk(ycConfigureParameters.getCCntrNme());
+                    this.setCMassCarMrk(ycApiConfigurationProperties.getCCntrNme());
                     name = policyHolderInfo.getName();
                     //投保人客户分类
                     this.setCClntMrk("1");
@@ -1988,7 +1988,7 @@ public class QuoteRequest {
                 this.setCAreaCde("103132");
 
                 this.setTCertfClsValiDate(insuredPersonInfo.getIdentifyValidEndDate());
-//        insured.setCCntrNme(insuredPersonInfo.getName());
+//                insured.setCCntrNme(insuredPersonInfo.getName());
                 this.setCRelCdes(ownerInfo.getName().equals(insuredPersonInfo.getName()) ? "601005" : "601008");
 
             }
@@ -2230,7 +2230,7 @@ public class QuoteRequest {
          * 投保人信息
          * 代码:applicant
          */
-        Condition.Applicant applicant = new Condition.Applicant(ownerInfo,policyHolderInfo);
+        Condition.Applicant applicant = new Condition.Applicant(ownerInfo,policyHolderInfo,ycApiConfigurationProperties);
         condition.setApplicant(applicant);
 
         /**

+ 20 - 15
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

@@ -369,29 +369,34 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
         SchemeResultVo schemeResultVo = new SchemeResultVo();
         //基础方案
         SchemeResultVo.SchemeVo schemeVo = schemeInsuranceInfo.stream().filter(x -> x.getSchemeType().equals("1")).findFirst().orElse(null);
-        schemeResultVo.setSchemes(schemeVo.getInfos());
-        //把基础方案的商业险的value 赋值
-        schemeResultVo.getSchemes().forEach(schemeInfoVo -> {
-            schemeInfoVo.getKinds().forEach(kind -> {
-                kind.setAmount(kind.getOptions().get(0).getValue());
-                kind.setUnitAmount(kind.getOptions().get(0).getValue());
-                kind.setServiceTimes(kind.getOptions().get(0).getValue());
+        if(Objects.nonNull(schemeVo)) {
+            schemeResultVo.setSchemes(schemeVo.getInfos());
+            //把基础方案的商业险的value 赋值
+            schemeResultVo.getSchemes().forEach(schemeInfoVo -> {
+                schemeInfoVo.getKinds().forEach(kind -> {
+                    kind.setAmount(kind.getOptions().get(0).getValue());
+                    kind.setUnitAmount(kind.getOptions().get(0).getValue());
+                    kind.setServiceTimes(kind.getOptions().get(0).getValue());
+                });
             });
-        });
+        }
 
         //自选方案
         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.SchemeInfoVo optionalScheme = schemeResultVo.getOptionalScheme();
+            if (optionalScheme != null && optionalScheme.getKinds() != null) {
+                optionalScheme.getKinds().removeIf(kind -> "J1".equals(kind.getKindCode()));
+            }
+        }
 
         //排除交强险的险种
-        schemeResultVo.getSchemes().removeIf(schemeInfoVo ->
-                schemeInfoVo.getKinds().stream().anyMatch(kind -> "J1".equals(kind.getKindCode()))
+        schemeResultVo.getSchemes().forEach(schemeInfoVo ->
+                schemeInfoVo.getKinds().removeIf(kind -> "J1".equals(kind.getKindCode()))
         );
 
-        SchemeResultVo.SchemeInfoVo optionalScheme = schemeResultVo.getOptionalScheme();
-        if (optionalScheme != null && optionalScheme.getKinds() != null) {
-            optionalScheme.getKinds().removeIf(kind -> "J1".equals(kind.getKindCode()));
-        }
+
 
         return schemeResultVo;
     }

+ 16 - 1
tenant/organization/src/main/resources/mapper/PtlSchemeMapper.xml

@@ -36,12 +36,19 @@
             <result column="scheme_type" property="schemeType"/>
             <result column="description" property="description"/>
             <collection property="drivings" ofType="com.jzg.commons.entity.scheme.vo.SchemeResultVo$Driving">
+                <result column="driving_id" property="id"/>
                 <result column="product_name" property="productName"/>
                 <result column="product_code" property="productCode"/>
                 <result column="alias" property="alias"/>
                 <result column="grouping" property="grouping"/>
                 <result column="premium" property="premium"/>
                 <result column="quantity" property="quantity"/>
+                <collection property="blames" ofType="com.jzg.commons.entity.po.JyxBlame">
+                    <result column="blame" property="blame"/>
+                    <result column="blameCode" property="blame_code"/>
+                    <result column="blameCoverage" property="blame_coverage"/>
+                    <result column="blamePremium" property="blame_premium"/>
+                </collection>
             </collection>
         </collection>
     </resultMap>
@@ -135,6 +142,7 @@
         WHERE
             ps.company_id = #{companyId}
             AND ps.product_id = #{productId}
+        ORDER BY ibi.sort asc
     </select>
 
     <select id="getSchemeDrivingInfo" resultMap="SchemeDrivingVo">
@@ -144,17 +152,24 @@
             psi.scheme_id,
             psi.scheme_type,
             psi.scheme_name,
+            jc.id AS driving_id,
             jc.product_name,
             jc.alias,
             jc.product_code,
+            jc.premium_setting,
             jc.coverage,
             jc.premium,
-            psidi.quantity
+            psidi.quantity,
+            jb.blame,
+            jb.blame_code,
+            jb.blame_coverage,
+            jb.blame_premium
         FROM
             ptl_scheme ps
                 INNER JOIN ptl_scheme_info psi ON ps.id = psi.scheme_id
                 INNER JOIN ptl_scheme_insurance_driving_intention psidi ON psidi.scheme_info_id = psi.id
                 INNER JOIN jyx_config jc ON psidi.driving_intention_id = jc.id
+                left join  jyx_blame jb on jc.id = jb.jyx_config_id
         WHERE
             ps.company_id = #{companyId}
         AND