Bläddra i källkod

重复投保信息返回

wks 2 år sedan
förälder
incheckning
35aedf8a4d

+ 1 - 1
src/main/java/com/ydtech/modules/order/components/zj/ResponseMessageAbstractHandler.java

@@ -22,7 +22,7 @@ public abstract class ResponseMessageAbstractHandler {
      * @param modelQueryRequest        车型请求体
      * @return 报价响应参数
      */
-    public abstract CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest);
+    public abstract CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest, String message) ;
 
 
 }

+ 4 - 2
src/main/java/com/ydtech/modules/order/components/zj/ZijinDuplicateInsuranceComponents.java

@@ -89,10 +89,11 @@ public class ZijinDuplicateInsuranceComponents extends ResponseMessageAbstractHa
 
 
     @Override
-    public CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
+    public CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest,  String message) {
         InsuranceLog.infoLog(InsuranceEnum.ZKIC.getPinyin(), "\n\t---------> {}\n\t---------> {}", "紫金财险重复投保处理", calculatePremiumResponse.getRtnMsg());
         String rtnMsg = calculatePremiumResponse.getRtnMsg();
         CalculatePremiumRequest.BaseInfoDTO baseInfo = calculatePremiumRequest.getBaseInfo();
+        message = rtnMsg;
 
         String jqEndDate = "";
         String syEndDate = "";
@@ -120,7 +121,8 @@ public class ZijinDuplicateInsuranceComponents extends ResponseMessageAbstractHa
 
         baseInfo.setTrafficTime(jqEndDate);
         baseInfo.setBusinessTime(syEndDate);
-        return zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest);
+        calculatePremiumResponse = zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest, message);
+        return calculatePremiumResponse;
     }
 
 }

+ 2 - 2
src/main/java/com/ydtech/modules/order/components/zj/ZijinReinsuranceComponents.java

@@ -44,7 +44,7 @@ public class ZijinReinsuranceComponents extends ResponseMessageAbstractHandler {
      * @return CalculatePremiumResponse
      */
     @Override
-    public CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
+    public CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest, String message) {
         InsuranceLog.infoLog(InsuranceEnum.ZKIC.getPinyin(), "\n\t---------> {}\n\t---------> {}", "紫金财险转保处理", calculatePremiumResponse.getRtnMsg());
         CalculatePremiumResponse.BasePartDTO basePart = calculatePremiumResponse.getBasePart();
         RecognitionRequest recognitionRequest = new RecognitionRequest();
@@ -65,6 +65,6 @@ public class ZijinReinsuranceComponents extends ResponseMessageAbstractHandler {
         baseInfo.setAnswerCI(recognition.getData().getJqImageCode());
         baseInfo.setAnswer(recognition.getData().getSyImageCode());
 
-        return zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest);
+        return zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest, message);
     }
 }

+ 3 - 3
src/main/java/com/ydtech/modules/order/components/zj/ZijinRequestApiComponents.java

@@ -233,15 +233,15 @@ public class ZijinRequestApiComponents {
      * 保费计算
      *
      * @param calculatePremiumRequest 紫金财险 保费计算 入参实体
+     * @param message                 传输信息
      * @return 出参实体
      */
-    public CalculatePremiumResponse calculatePremium(CalculatePremiumRequest calculatePremiumRequest, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
+    public CalculatePremiumResponse calculatePremium(CalculatePremiumRequest calculatePremiumRequest, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest, String message) {
         CalculatePremiumResponse calculatePremiumResponse = requestQuotation(RequestUrl.CALCULATE_PREMIUM, calculatePremiumRequest, CalculatePremiumResponse.class, httpHeaders);
-
         // 通过状态码获取处理器处理
         ResponseMessageAbstractHandler responseMessageAbstractHandler = handlerMap.get(calculatePremiumResponse.getRtnCode());
         if (!ObjectUtils.isEmpty(responseMessageAbstractHandler)) {
-            calculatePremiumResponse = responseMessageAbstractHandler.messageHandler(calculatePremiumRequest, calculatePremiumResponse, httpHeaders, modelQueryRequest);
+            calculatePremiumResponse = responseMessageAbstractHandler.messageHandler(calculatePremiumRequest, calculatePremiumResponse, httpHeaders, modelQueryRequest, message);
         }
         return calculatePremiumResponse;
     }

+ 1 - 1
src/main/java/com/ydtech/modules/order/components/zj/ZijinSystemExceptionComponents.java

@@ -35,7 +35,7 @@ public class ZijinSystemExceptionComponents extends ResponseMessageAbstractHandl
     }
 
     @Override
-    public CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
+    public CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest, String message) {
         InsuranceLog.infoLog(InsuranceEnum.ZKIC.getPinyin(), "\n\t---------> {}\n\t---------> {}", "紫金财险 999 异常处理", calculatePremiumResponse.getRtnMsg());
         String rtnMsg = calculatePremiumResponse.getRtnMsg();
 

+ 2 - 2
src/main/java/com/ydtech/modules/order/components/zj/ZijinVehicleTypeErrorComponents.java

@@ -60,7 +60,7 @@ public class ZijinVehicleTypeErrorComponents extends ResponseMessageAbstractHand
      * 修改正确车型报价
      */
     @Override
-    public CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest) {
+    public CalculatePremiumResponse messageHandler(CalculatePremiumRequest calculatePremiumRequest, CalculatePremiumResponse calculatePremiumResponse, HttpHeaders httpHeaders, ModelQueryRequest modelQueryRequest,  String message) {
         InsuranceLog.infoLog(InsuranceEnum.ZKIC.getPinyin(), "\n\t---------> {}\n\t---------> {}", "紫金财险转修改正确车型报价", calculatePremiumResponse.getRtnMsg());
         CarType carType = getCarInconsistentInformation(calculatePremiumResponse.getRtnMsg());
 
@@ -72,7 +72,7 @@ public class ZijinVehicleTypeErrorComponents extends ResponseMessageAbstractHand
                 .collect(Collectors.toList()).get(0);
 
         calculatePremiumRequest.modificationOfVehicleType(vehicleModelInfosDTO);
-        return zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest);
+        return zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest, message);
     }
 
     @Data

+ 60 - 0
src/main/java/com/ydtech/modules/order/entity/crawler/response/CrawlerQuoteResponse.java

@@ -1,13 +1,17 @@
 package com.ydtech.modules.order.entity.crawler.response;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.ins.model.vo.AccidentResponseVo;
+import com.ydtech.modules.order.entity.api.zj.response.CalculatePremiumResponse;
 import lombok.*;
 import org.springframework.util.ObjectUtils;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 @EqualsAndHashCode(callSuper = true)
 @Data
@@ -79,6 +83,12 @@ public class CrawlerQuoteResponse extends CrawlerBaseResponse {
     @JsonProperty(value = "other")
     private OtherDto other;
 
+    /**
+     * 非车险价格列表
+     */
+    @JsonProperty(value = "drivingInsurances")
+    private List<DivingInsurancesDto> drivingInsurances;
+
     /**
      * 交叉销售 价格
      *
@@ -87,6 +97,12 @@ public class CrawlerQuoteResponse extends CrawlerBaseResponse {
     @JsonProperty("crossSellingPremium")
     private Double crossSellingPremium;
 
+    @JsonProperty("jq_repeatinfo")
+    private String jqRepeatInfo;
+
+    @JsonProperty("sy_repeatinfo")
+    private String syRepeatInfo;
+
     public Double getCrossSellingPremium() {
         return crossSellingPremium == null ? 0 : crossSellingPremium;
     }
@@ -107,6 +123,50 @@ public class CrawlerQuoteResponse extends CrawlerBaseResponse {
         return ObjectUtils.isEmpty(taxArrears) ? Collections.emptyList() : taxArrears;
     }
 
+    @NoArgsConstructor
+    @Data
+    public static class DivingInsurancesDto implements Serializable {
+
+        private static final long serialVersionUID = 4310946042191016305L;
+        /**
+         * 非车险险种名称
+         */
+        @JsonProperty("name")
+        private String name;
+        /**
+         * 非车险投保单号
+         */
+        @JsonProperty("policy")
+        private String policy;
+        /**
+         * 非车险价格
+         */
+        @JsonProperty("price")
+        private String price;
+
+        public static List<AccidentResponseVo> toAccidentResponseVoList(List<DivingInsurancesDto> drivingInsurances) {
+           return drivingInsurances.stream().map(DivingInsurancesDto::toAccidentResponseVo).collect(Collectors.toList());
+        }
+
+        public static AccidentResponseVo toAccidentResponseVo(DivingInsurancesDto drivingInsurance) {
+            AccidentResponseVo accidentResponseVo = new AccidentResponseVo();
+            accidentResponseVo.setProjectName(drivingInsurance.getName());
+            accidentResponseVo.setActualPremium(drivingInsurance.getPrice());
+            accidentResponseVo.setProjectCode(drivingInsurance.getPolicy());
+            return accidentResponseVo;
+        }
+
+        public static BigDecimal sumPremium(List<DivingInsurancesDto> divingInsurancesDtos) {
+            BigDecimal bigDecimal = new BigDecimal(0);
+            for (DivingInsurancesDto divingInsurancesDto : divingInsurancesDtos) {
+                bigDecimal = bigDecimal.add(new BigDecimal(divingInsurancesDto.getPrice()));
+            }
+            return bigDecimal;
+        }
+
+    }
+
+
     @NoArgsConstructor
     @Data
     public static class TaxArrearsDto implements Serializable {

+ 28 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java

@@ -29,12 +29,14 @@ import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocol.service.PtlCrawlerApiService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.CalculateUtils;
+import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.baidu.FileUtil;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -206,6 +208,7 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
         String orderNo = yaQuoteInfoVo.getOrderNo();
         double jqPremium = response.getForceCarInsureRisk();
         double syPremium = response.getBusinessTotalPremium();
+        double jyPremium = 0;
 
         QuoteRespVo quoteRespVo = new QuoteRespVo();
         List<QuoteKindRespVo> kindList1 = new ArrayList<>();
@@ -236,6 +239,20 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
             }
             kindList1.add(kind);
         }
+
+        // 非车险
+        List<CrawlerQuoteResponse.DivingInsurancesDto> drivingInsurances = response.getDrivingInsurances();
+
+        if (drivingInsurances != null && !drivingInsurances.isEmpty()) {
+            List<AccidentResponseVo> accidentResponseVoList = CrawlerQuoteResponse.DivingInsurancesDto.toAccidentResponseVoList(drivingInsurances);
+            quoteRespVo.setAccident(accidentResponseVoList);
+            // 驾意险价格
+            BigDecimal bigDecimal = CrawlerQuoteResponse.DivingInsurancesDto.sumPremium(drivingInsurances);
+            jyPremium = bigDecimal.doubleValue();
+        }
+        quoteRespVo.setJyPremium(jyPremium);
+
+
         quoteRespVo.setRiskList(riskList1);
         quoteRespVo.setKindList(kindList1);
         quoteRespVo.setJqPremium(jqPremium);
@@ -259,6 +276,17 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
         quoteRespVo.setEndDateJq(response.getJqEndDate());
         quoteRespVo.setStartDateSy(response.getSyStartDate());
         quoteRespVo.setEndDateSy(response.getSyEndDate());
+
+        // 重复投保信息
+        ArrayList<String> strings = new ArrayList<>();
+        if (StringUtils.isEmpty(response.getJqRepeatInfo())) {
+            strings.add(response.getJqRepeatInfo());
+        }
+        if (StringUtils.isEmpty(response.getSyRepeatInfo())) {
+            strings.add(response.getSyRepeatInfo());
+        }
+        quoteRespVo.setWarnMessageList(strings);
+
         return quoteRespVo;
     }
 

+ 10 - 6
src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java

@@ -10,10 +10,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.ins.model.vo.*;
 import com.ydtech.modules.order.components.ConfigureParametersComponents;
-import com.ydtech.modules.order.components.zj.ZijinDuplicateInsuranceComponents;
-import com.ydtech.modules.order.components.zj.ZijinReinsuranceComponents;
 import com.ydtech.modules.order.components.zj.ZijinRequestApiComponents;
-import com.ydtech.modules.order.components.zj.ZijinVehicleTypeErrorComponents;
 import com.ydtech.modules.order.constants.InsuranceTypeCorrespondence;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
@@ -41,9 +38,9 @@ import com.ydtech.modules.order.service.ZijinOrderApiService;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.utils.CalculateUtils;
+import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.baidu.FileUtil;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
@@ -138,9 +135,16 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
         // 4. 报价
         CalculatePremiumRequest calculatePremiumRequest
                 = new CalculatePremiumRequest(quoteInfoVo, vehicleModelInfosDTO, queryActualValueResponse.getActualValue(), quoteVo.getAccidentalDrivingVo(), zjConfigureParameters, modelQueryResponse);
-        CalculatePremiumResponse calculatePremiumResponse = zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest);
 
+        String message = "";
+        CalculatePremiumResponse calculatePremiumResponse = zijinRequestApiComponents.calculatePremium(calculatePremiumRequest, httpHeaders, modelQueryRequest, message);
+        // 警告信息
         QuoteRespVo quoteRespVo = getQuoteRespVo(calculatePremiumResponse, quoteInfoVo, quoteVo.getAccidentalDrivingVo());
+        if (!StringUtils.isEmpty(message)) {
+            ArrayList<String> objects = new ArrayList<>();
+            objects.add(message);
+            quoteRespVo.setWarnMessageList(objects);
+        }
         return responseOrder(calculatePremiumResponse, quoteRespVo, ptlAgreementAttribution, modelQueryResponse.getOrderId(), modelQueryResponse.getOrderNo());
     }
 
@@ -447,7 +451,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
         quoteRespVo.setCompanyId(orderNo);
         // 车船税
         CalculatePremiumResponse.CarShipTaxDTO carShipTax = calculatePremiumResponse.getCarShipTax();
-        TaxArrears taxArrears = new TaxArrears("往年欠税",  Double.parseDouble(carShipTax.getPreviousPay()), Double.parseDouble(carShipTax.getLateFee()));
+        TaxArrears taxArrears = new TaxArrears("往年欠税", Double.parseDouble(carShipTax.getPreviousPay()), Double.parseDouble(carShipTax.getLateFee()));
         List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
         insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));