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

安盛添加车损报价失败问题解决

xuqiang 1 месяц назад
Родитель
Сommit
76df3da1b8

+ 5 - 0
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/build/AnShengCrawlerApplyApplicationRequestBuild.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.ansheng.crawler.build;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.google.common.collect.Lists;
 import com.jzg.quotation.ansheng.crawler.entity.request.AnShengCrawlerApplyApplicationRequest;
@@ -18,6 +19,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 public final class AnShengCrawlerApplyApplicationRequestBuild {
@@ -413,6 +415,9 @@ public final class AnShengCrawlerApplyApplicationRequestBuild {
         policyCoveragesDTO.setNoFaultDieAmount(policyCoveragesDTORequest.getNoFaultDieAmount());
         policyCoveragesDTO.setNoFaultMedicalAmount(policyCoveragesDTORequest.getNoFaultMedicalAmount());
         policyCoveragesDTO.setNoFaultPropertyAmount(policyCoveragesDTORequest.getNoFaultPropertyAmount());
+        if (Set.of("AOD", "NEAOD").contains(policyCoveragesResponse.getDutyCode())){
+            policyCoveragesDTO.setPureRiskPremiumItemList(BeanUtil.copyToList(policyCoveragesResponse.getPureRiskPremiumItemList(), AnShengCrawlerApplyApplicationRequest.ContractsDTO.PolicyCoveragesDTO.RiskPremiumItem.class));
+        }
         return policyCoveragesDTO;
     }
 

+ 40 - 15
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/build/AnShengCrawlerQuoteResultsVoBuild.java

@@ -50,9 +50,15 @@ public final class AnShengCrawlerQuoteResultsVoBuild {
             String message = calculatePremiumApply.getMessage();
             quoteResultsVo.setErrorMessage(message.contains("。") ? message.substring(0, message.indexOf("。")) : message);
             return quoteResultsVo;
+        }else {
+            String repeatFlag = calculatePremiumApply.getData().getContracts().stream().map(c -> c.getPolicyBase().getRepeatFlag()).filter(StringUtils::isNotEmpty).findFirst().orElse(null);
+            if (StringUtils.isNotEmpty(repeatFlag)) {
+                quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.QUOTE_FAIL);
+                quoteResultsVo.setErrorMessage("重复投保!此次投保与投保单号:" + repeatFlag + "相同,请去核心处理!");
+                return quoteResultsVo;
+            }
         }
-        List<AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO> contracts = calculatePremiumApply.getData()
-                .getContracts();
+        List<AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO> contracts = calculatePremiumApply.getData().getContracts();
 
         contracts.forEach(contract -> {
             // 交强险
@@ -148,20 +154,39 @@ public final class AnShengCrawlerQuoteResultsVoBuild {
                 "scoreKey", "bussinessLevel",
                 "score", data.getBussinessLevel()
         );
-        for (AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO contract : data.getContracts()) {
-            JSONObject jsonObject = new JSONObject();
-            if (StringUtils.equals("105",contract.getPlanDefine().getPlanCode())){
-                jsonObject.put("scoreName","交强存在费用");
-                jsonObject.put("scoreKey","compulsoryInsure");
-                jsonObject.put("score",contract.getPlanDefine().getCompulsoryInsure() ? "是" : "否");
-            }else if (StringUtils.equals("109",contract.getPlanDefine().getPlanCode())){
-                jsonObject.put("scoreName","商业存在费用");
-                jsonObject.put("scoreKey","businessInsure");
-                jsonObject.put("score",contract.getPlanDefine().getBusinessInsure() ? "是" : "否");
-            }
 
-            scoreArray.add(jsonObject);
-        }
+
+        AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO contractsDTO =
+                data.getContracts().stream()
+                        .filter(c -> c.getPlanDefine() != null)
+                        .filter(c -> "105".equals(c.getPlanDefine().getPlanCode()))
+                        .findAny()
+                        .orElseThrow(() -> new IllegalStateException("未找到 planCode=105 的合约"));
+        JSONObject compulsoryInsure = new JSONObject();
+        compulsoryInsure.put("scoreName","交强存在费用");
+        compulsoryInsure.put("scoreKey","compulsoryInsure");
+        compulsoryInsure.put("score",contractsDTO.getPlanDefine().getCompulsoryInsure() ? "是" : "否");
+        scoreArray.add(compulsoryInsure);
+
+        JSONObject businessInsure = new JSONObject();
+        businessInsure.put("scoreName","商业存在费用");
+        businessInsure.put("scoreKey","businessInsure");
+        businessInsure.put("score",contractsDTO.getPlanDefine().getBusinessInsure() ? "是" : "否");
+        scoreArray.add(businessInsure);
+//        for (AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO contract : data.getContracts()) {
+//            JSONObject jsonObject = new JSONObject();
+//            if (StringUtils.equals("105",contract.getPlanDefine().getPlanCode())){
+//                jsonObject.put("scoreName","交强存在费用");
+//                jsonObject.put("scoreKey","compulsoryInsure");
+//                jsonObject.put("score",contract.getPlanDefine().getCompulsoryInsure() ? "是" : "否");
+//            }else if (StringUtils.equals("109",contract.getPlanDefine().getPlanCode())){
+//                jsonObject.put("scoreName","商业存在费用");
+//                jsonObject.put("scoreKey","businessInsure");
+//                jsonObject.put("score",contract.getPlanDefine().getBusinessInsure() ? "是" : "否");
+//            }
+//
+//            scoreArray.add(jsonObject);
+//        }
         scoreArray.add(bussinessLevel);
         scoreVo.setScoreJson(scoreArray);
         return scoreVo;

+ 15 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/request/AnShengCrawlerApplyApplicationRequest.java

@@ -662,7 +662,7 @@ public class AnShengCrawlerApplyApplicationRequest {
             @JsonProperty("dutyChineseName")
             private String dutyChineseName;
             @JsonProperty("insuredAmount")
-            private Integer insuredAmount;
+            private Double insuredAmount;
             @JsonProperty("equipmentInsureAmount")
             private String equipmentInsureAmount;
             @JsonProperty("premiumRate")
@@ -715,6 +715,20 @@ public class AnShengCrawlerApplyApplicationRequest {
             private String noFaultMedicalAmount;
             @JsonProperty("noFaultPropertyAmount")
             private String noFaultPropertyAmount;
+            @JsonProperty("pureRiskPremiumItemList")
+            private List<PolicyCoveragesDTO.RiskPremiumItem> pureRiskPremiumItemList;
+
+
+            @NoArgsConstructor
+            @AllArgsConstructor
+            @Data
+            public static class RiskPremiumItem{
+                private String modelCode;
+                private String pureRiskPremium;
+                private String pureRiskPremiumFlag;
+            }
+
+
         }
 
         @NoArgsConstructor

+ 18 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/entity/response/AnShengCrawlerCalculatePremiumApplyResponse.java

@@ -1,6 +1,7 @@
 package com.jzg.quotation.ansheng.crawler.entity.response;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -235,6 +236,8 @@ public class AnShengCrawlerCalculatePremiumApplyResponse  implements Serializabl
                 private String factorScale;
                 @JsonProperty("minRatioMode")
                 private String minRatioMode;
+                @JsonProperty("repeatFlag")
+                private String repeatFlag;
             }
 
             @NoArgsConstructor
@@ -1346,7 +1349,7 @@ public class AnShengCrawlerCalculatePremiumApplyResponse  implements Serializabl
                 @JsonProperty("allAmount")
                 private Double allAmount;
                 @JsonProperty("insuredAmount")
-                private Integer insuredAmount;
+                private Double insuredAmount;
                 @JsonProperty("totalStandardPremium")
                 private Double totalStandardPremium;
                 @JsonProperty("totalAgreePremium")
@@ -1391,6 +1394,20 @@ public class AnShengCrawlerCalculatePremiumApplyResponse  implements Serializabl
                 private String priority;
                 @JsonProperty("ariExpense")
                 private Integer ariExpense;
+                @JsonProperty("pureRiskPremiumItemList")
+                private List<PolicyCoveragesDTO.RiskPremiumItem> pureRiskPremiumItemList;
+
+
+                @NoArgsConstructor
+                @AllArgsConstructor
+                @Data
+                public static class RiskPremiumItem{
+                    private String modelCode;
+                    private String pureRiskPremium;
+                    private String pureRiskPremiumFlag;
+                }
+
+
             }
 
             @NoArgsConstructor

+ 2 - 1
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/service/impl/AnShengCrawlerRequestImpl.java

@@ -411,7 +411,8 @@ public class AnShengCrawlerRequestImpl implements AnShengCrawlerRequest {
         AnShengCrawlerOrder anShengCrawlerOrder = anShengCrawlerOrderService.getById(ordersNo);
         PaymentLinkResultsVo paymentLinkResultsVo;
         if (!applyApplicationResponse.getCode().equals(200)) {
-            underwritingResultsVo.setUnderwritingResult(applyApplicationResponse.getMessage());
+            String errMsg = StringUtils.isNotEmpty(applyApplicationResponse.getMessage()) ? applyApplicationResponse.getMessage() : StringUtils.isNotEmpty(applyApplicationResponse.getSimpleMessage()) ? applyApplicationResponse.getSimpleMessage() : "申请核保错误";
+            underwritingResultsVo.setUnderwritingResult(errMsg);
             underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
             return underwritingResultsVo;
         }