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

Merge remote-tracking branch 'origin/master'

dongxin 1 год назад
Родитель
Сommit
03abee0b86

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

@@ -51,6 +51,11 @@ public class UnderwritingVo {
      */
     private List<InsOrdersCarUserInfo> insOrdersCarUserInfoList;
 
+    /**
+     * 订单费用信息
+     */
+    private InsOrdersCosts insOrdersCosts;
+
     /**
      * 保单号
      */

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

@@ -235,6 +235,7 @@ public class UnifyOrderManager {
         List<InsOrdersRisk> riskList = insOrdersRiskService.list(new LambdaQueryWrapper<InsOrdersRisk>()
                 .eq(InsOrdersRisk::getOrderNo, insOrders.getId()));
 
+        InsOrdersCosts insOrdersCosts = insOrdersCostsService.getById(insOrders.getId());
         InsOrdersPolicy insOrdersPolicy = insOrdersPolicyService.getById(insOrders.getId());
         //核保之前更新订单为待核保
         StateResult stateResult = orderStateListener.statusChange(InsOrderStatusEnum.AUDIT_ING, insOrders.getOrderStatus());
@@ -246,6 +247,7 @@ public class UnifyOrderManager {
         underwritingVo.setInsOrdersCarInfo(insOrdersCarInfo);
         underwritingVo.setInsOrdersCarUserInfoList(insOrdersCarUserInfos);
         underwritingVo.setInsOrdersRiskList(riskList);
+        underwritingVo.setInsOrdersCosts(insOrdersCosts);
         underwritingVo.setPolicy(insOrdersPolicy);
         underwritingVo.getOrder().setCompanyOrderNo(insOrders.getCompanyOrderNo());
 

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

@@ -485,6 +485,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         StateResult stateResult = orderStateListener.statusChange(quoteResponse.getQuoteStatus(), insOrders.getOrderStatus());
         insOrders.setOrderStatus(String.valueOf(stateResult.getCurrentState()));
 
+        // 保司订单交易号
+        insOrders.setCompanyOrderNo(quoteResponse.getCompanyOrderNo());
+
         baseMapper.updateById(insOrders);
         // 判断状态 是否是成功  如何成功则处理下面的流程
         if(stateResult.getCurrentState() == Integer.parseInt(InsOrderStatusEnum.WAIT_AUDIT.getCode())) {

+ 4 - 3
tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/build/YangGuangApiQuoteResultsVoBuild.java

@@ -20,9 +20,10 @@ import java.util.stream.Collectors;
  */
 
 public final class YangGuangApiQuoteResultsVoBuild {
-    public static QuoteResultsVo buildQuoteResultsVo(String orderNo, QuoteVo quoteVo, YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse) {
+    public static QuoteResultsVo buildQuoteResultsVo(QuoteVo quoteVo, YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse) {
         QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
-        quoteResultsVo.setOrdersNo(orderNo);
+        // 交易流水号
+        quoteResultsVo.setCompanyOrderNo(yangGuangAccuracyCalculateResponse.getInfotransNo());
         // 交强险
         quoteResultsVo.setCiRiskInfoVo(buildCiRiskInfoVo(yangGuangAccuracyCalculateResponse));
         // 商业险
@@ -85,7 +86,7 @@ public final class YangGuangApiQuoteResultsVoBuild {
     }
 
     /**
-     * 处理交强险数据
+     * 处理商业险数据
      * @param quotationResponse
      * @return
      */

+ 5 - 0
tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/entity/po/YangGuangApiOrder.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.yangguang.api.entity.po;
 
+import com.alibaba.fastjson.JSONArray;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -27,4 +28,8 @@ public class YangGuangApiOrder {
      * 产品代码
      */
     private String productsCode;
+    /**
+     * 非车信息
+     */
+    private JSONArray crossInsurance;
 }

+ 14 - 8
tenant/insurance/quotation-yangguang/src/main/java/com/jzg/quotation/yangguang/api/entity/request/YangGuangSubmitRequest.java

@@ -1,17 +1,22 @@
 package com.jzg.quotation.yangguang.api.entity.request;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.TypeReference;
 import com.alibaba.fastjson.annotation.JSONField;
 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.InsOrdersCosts;
 import com.jzg.quotation.commons.entity.vo.aggregated.UnderwritingVo;
 import com.jzg.quotation.commons.entity.vo.base.OrderBase;
 import com.jzg.quotation.yangguang.api.entity.YangGuangConfigureParameters;
+import com.jzg.quotation.yangguang.api.entity.po.YangGuangApiOrder;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
@@ -130,7 +135,7 @@ public class YangGuangSubmitRequest extends YangGuangBaseRequest{
     @JSONField(name = "NonVehicleProductInformationList")
     private List<NonVehicleProductInformationList> NonVehicleProductInformationList;
 
-    public YangGuangSubmitRequest(UnderwritingVo underwritingVo, YangGuangConfigureParameters ygConfigureParameters) {
+    public YangGuangSubmitRequest(UnderwritingVo underwritingVo, YangGuangConfigureParameters ygConfigureParameters, YangGuangApiOrder yangGuangApiOrder) {
         InsOrders insOrders = underwritingVo.getInsOrders();
         InsOrdersCarInfo insOrdersCarInfo = underwritingVo.getInsOrdersCarInfo();
         InsOrdersCarUserInfo owner = underwritingVo.getInsOrdersCarUserInfoList()
@@ -151,7 +156,7 @@ public class YangGuangSubmitRequest extends YangGuangBaseRequest{
         this.ComCode = ygConfigureParameters.getComCode();
         this.HandlerCode = ygConfigureParameters.getHandlerCode();
         this.RequestDate = LocalDateTime.now().format(formatter);
-        this.InfotransNo = insOrders.getInsOrderNo(); //交易流水号
+        this.InfotransNo = insOrders.getCompanyOrderNo(); //交易流水号
         String productId = insOrders.getProductId();
         if (productId.equals("034001")) {
             this.PolicyType = "1";
@@ -160,12 +165,13 @@ public class YangGuangSubmitRequest extends YangGuangBaseRequest{
         } else {
             this.PolicyType = "3";
         }
-//        if (insAreaCompany.getAccidentInfo() != null) {
-//            this.NonVehicleProductInformationList = JSONArray.parseObject(insAreaCompany.getAccidentInfo().toJSONString(), new TypeReference<List<NonVehicleProductInformationList>>(){});
-//            this.CasualtyFlag = "1";
-//        } else {
-//            this.CasualtyFlag = "0";
-//        }
+        InsOrdersCosts insOrdersCosts = underwritingVo.getInsOrdersCosts();
+        if (insOrdersCosts.getJyPremium().compareTo(BigDecimal.ZERO) > 0) {
+            this.NonVehicleProductInformationList = JSONArray.parseArray(yangGuangApiOrder.getCrossInsurance().toJSONString(), YangGuangSubmitRequest.NonVehicleProductInformationList.class);
+            this.CasualtyFlag = "1";
+        } else {
+            this.CasualtyFlag = "0";
+        }
     }
 
     /**

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

@@ -2,6 +2,7 @@ package com.jzg.quotation.yangguang.api.service;
 
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.yangguang.api.entity.po.YangGuangApiOrder;
+import com.jzg.quotation.yangguang.api.entity.response.YangGuangAccuracyCalculateResponse;
 import com.jzg.quotation.yangguang.api.entity.response.YangGuangQueryVehicleModelResponse;
 
 public interface YangGuangCrawlerOrderService {
@@ -10,9 +11,9 @@ public interface YangGuangCrawlerOrderService {
      * 存储订单信息
      *
      * @param quoteVo            报价信息
-     * @param modelQueryResponse 车辆信息
+     * @param yangGuangAccuracyCalculateResponse 车辆信息
      */
-    void saveOrderInfo(QuoteVo quoteVo, YangGuangQueryVehicleModelResponse modelQueryResponse);
+    void saveOrderInfo(QuoteVo quoteVo, YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse);
 
     /**
      * 获取mongo中的订单信息

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

@@ -89,21 +89,13 @@ public class YangGuangApiRequestImpl implements YangGuangApiRequest {
                 newRequest.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
                 return recursiveQuote(newRequest, carModel, yangGuangQueryVehicleModelResponse,quoteVo, parameters);
             }
-            handleFailedQuote(response, quoteVo, parameters);
+            handleFailedQuote(response);
         }
-        // 单商 交三 交商有投保车辆损失险 需要获取车辆实际价值 进行二次报价
-//        if (quoteVo.getOrder().getProductsCode().equals("034001") || quoteVo.getOrder().getProductsCode().equals("0330034001") || quoteVo.getOrder().getProductsCode().equals("0330034002")) {
-//            YangGuangAccuracyCalculateResponse.itemcar itemcar = response.getItemcar();
-//            String actualValue = itemcar.getActualValue();
-//            YangGuangAccuracyCalculateRequest newRequest = new YangGuangAccuracyCalculateRequest(quoteVo,);
-//            newRequest.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
-//            return recursiveQuote(newRequest, carModel,yangGuangQueryVehicleModelResponse,quoteVo, parameters);
-//        }
 
-        return handleSuccessfulQuote(response, quoteVo, yangGuangQueryVehicleModelResponse);
+        return handleSuccessfulQuote(response, quoteVo);
     }
 
-    private void handleFailedQuote(YangGuangAccuracyCalculateResponse response,QuoteVo quoteVo, YangGuangConfigureParameters parameters) {
+    private void handleFailedQuote(YangGuangAccuracyCalculateResponse response) {
         if (response.getErrorMessage().contains("重复投保")) {
 //            insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
             throw new SystemException(response.getErrorMessage());
@@ -111,9 +103,9 @@ public class YangGuangApiRequestImpl implements YangGuangApiRequest {
         throw new SystemException(response.getErrorMessage());
     }
 
-    private QuoteResultsVo handleSuccessfulQuote(YangGuangAccuracyCalculateResponse response, QuoteVo quoteVo, YangGuangQueryVehicleModelResponse yangGuangQueryVehicleModelResponse) {
-        yangGuangCrawlerOrderService.saveOrderInfo(quoteVo, yangGuangQueryVehicleModelResponse);
-        return YangGuangApiQuoteResultsVoBuild.buildQuoteResultsVo(yangGuangQueryVehicleModelResponse.getInfotransNo(), quoteVo, response);
+    private QuoteResultsVo handleSuccessfulQuote(YangGuangAccuracyCalculateResponse response, QuoteVo quoteVo) {
+        yangGuangCrawlerOrderService.saveOrderInfo(quoteVo,response);
+        return YangGuangApiQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo, response);
     }
 
     // 提取从响应中获取终保日期的逻辑为方法
@@ -140,12 +132,13 @@ public class YangGuangApiRequestImpl implements YangGuangApiRequest {
     @Override
     public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) throws JsonProcessingException {
         OrderBase orderBase = underwritingVo.getOrder();
+        YangGuangApiOrder yangGuangApiOrder = yangGuangCrawlerOrderService.getById(orderBase.getOrdersNo());
         // 账号配置信息
         YangGuangConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(YangGuangConfigureParameters.class, orderBase
                 .getAttributionInformationVo()
                 .getConfigInfo());
         // 根据订单号获取车辆信息
-        YangGuangSubmitRequest yangGuangSubmitRequest = new YangGuangSubmitRequest(underwritingVo,parameters);
+        YangGuangSubmitRequest yangGuangSubmitRequest = new YangGuangSubmitRequest(underwritingVo,parameters,yangGuangApiOrder);
         YangGuangSubmitResponse yangGuangSubmitResponse = yangGuangApiRequestComponent.submit(yangGuangSubmitRequest);
         UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
         if (yangGuangSubmitResponse.getErrorCode().equals("0")) {
@@ -185,7 +178,8 @@ public class YangGuangApiRequestImpl implements YangGuangApiRequest {
             }
 
         } else {
-            throw new SystemException("核保失败" + yangGuangSubmitResponse.getErrorMessage());
+            underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
+            underwritingResultsVo.setUnderwritingResult(yangGuangSubmitResponse.getErrorMessage());
         }
         return underwritingResultsVo;
     }

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

@@ -1,13 +1,19 @@
 package com.jzg.quotation.yangguang.api.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.yangguang.api.entity.po.YangGuangApiOrder;
+import com.jzg.quotation.yangguang.api.entity.response.YangGuangAccuracyCalculateResponse;
 import com.jzg.quotation.yangguang.api.entity.response.YangGuangQueryVehicleModelResponse;
+import com.jzg.quotation.yangguang.api.entity.response.YangGuangSubmitResponse;
 import com.jzg.quotation.yangguang.api.repository.YangGuangApiOrderRepository;
 import com.jzg.quotation.yangguang.api.service.YangGuangCrawlerOrderService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * @author quchen
  * @date 2025/3/7 15:35
@@ -19,10 +25,13 @@ public class YangGuangCrawlerOrderServiceImpl implements YangGuangCrawlerOrderSe
     private final YangGuangApiOrderRepository yangGuangApiOrderRepository;
 
     @Override
-    public void saveOrderInfo(QuoteVo quoteVo, YangGuangQueryVehicleModelResponse yangGuangQueryVehicleModelResponse) {
+    public void saveOrderInfo(QuoteVo quoteVo, YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse) {
         YangGuangApiOrder yangGuangApiOrder = new YangGuangApiOrder();
-        yangGuangApiOrder.setOrdersNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
+        yangGuangApiOrder.setOrdersNo(quoteVo.getOrder().getOrdersNo());
         yangGuangApiOrder.setProductsCode(quoteVo.getOrder().getProductsCode());
+        List<YangGuangAccuracyCalculateResponse.PtptNonVehicleProductInformationList> list = yangGuangAccuracyCalculateResponse.getPtptNonVehicleProductInformationList();
+        JSONArray array = JSONArray.parseArray(JSON.toJSONString(list));
+        yangGuangApiOrder.setCrossInsurance(array);
         yangGuangApiOrderRepository.save(yangGuangApiOrder);
     }