Procházet zdrojové kódy

fix 大地非车险保费不显示 问题

Liub před 5 dny
rodič
revize
14408ecabc

+ 25 - 4
tenant/insurance/quotation-dadi/src/main/java/com/jzg/quotation/dadi/crawler/build/DaDiCrawlerQuoteResultVoBuild.java

@@ -205,15 +205,16 @@ public class DaDiCrawlerQuoteResultVoBuild {
         int sumPayment = daDiQuoteResponse.getInsurancePlan().getTax().getSumPayment();
         quoteResultsVo.getCosts().setVvTax(String.valueOf(sumPayment));
         int niPremium = 0;
-        //设置非车保费
+
+        //设置非车保费:优先取保险计划的 wealthAccPremium,取不到(为0)时兜底取保险责任项(jointSalesSolutionItems)的 defaultValue 之和
         if (daDiQuoteResponse.getInsurancePlan().getAccidentInsure() != null && daDiQuoteResponse.getInsurancePlan().getAccidentInsure().size() > 0) {
-            niPremium = daDiQuoteResponse.getInsurancePlan().getAccidentInsure().get(0).getWealthAccPremium();
+            niPremium = calcNonVehiclePremium(daDiQuoteResponse.getInsurancePlan().getAccidentInsure());
             quoteResultsVo.getCosts().setNiPremium(String.valueOf(niPremium));
         } else if (daDiQuoteResponse.getInsurancePlan().getHealthInsurance() != null && daDiQuoteResponse.getInsurancePlan().getHealthInsurance().size() > 0) {
-            niPremium = daDiQuoteResponse.getInsurancePlan().getHealthInsurance().get(0).getWealthAccPremium();
+            niPremium = calcNonVehiclePremium(daDiQuoteResponse.getInsurancePlan().getHealthInsurance());
             quoteResultsVo.getCosts().setNiPremium(String.valueOf(niPremium));
         } else if (daDiQuoteResponse.getInsurancePlan().getPropertyInsurance() != null && daDiQuoteResponse.getInsurancePlan().getPropertyInsurance().size() > 0) {
-            niPremium = daDiQuoteResponse.getInsurancePlan().getPropertyInsurance().get(0).getWealthAccPremium();
+            niPremium = calcNonVehiclePremium(daDiQuoteResponse.getInsurancePlan().getPropertyInsurance());
             quoteResultsVo.getCosts().setNiPremium(String.valueOf(niPremium));
         }
 
@@ -227,4 +228,24 @@ public class DaDiCrawlerQuoteResultVoBuild {
         quoteResultsVo.getCosts().setSumPremium(String.valueOf(sumPremium));
     }
 
+    /**
+     * 计算非车险(联合销售/驾意险)保费
+     * 优先取保险计划的 wealthAccPremium,取不到(为0)时兜底取保险责任项(jointSalesSolutionItems)的 defaultValue 之和
+     */
+    private static int calcNonVehiclePremium(List<DaDiQuoteResponse.InsurancePlanDTO.AccidentInsureDTO> insuranceList) {
+        if (insuranceList == null || insuranceList.isEmpty()) {
+            return 0;
+        }
+        int premium = insuranceList.get(0).getWealthAccPremium();
+        if (premium <= 0) {
+            premium = insuranceList.stream()
+                    .filter(Objects::nonNull)
+                    .filter(item -> item.getJointSalesSolutionItems() != null)
+                    .flatMap(item -> item.getJointSalesSolutionItems().stream())
+                    .mapToInt(DaDiQuoteResponse.InsurancePlanDTO.AccidentInsureDTO.JointSalesSolutionItemsDTO::getDefaultValue)
+                    .sum();
+        }
+        return premium;
+    }
+
 }