Qchen 1 год назад
Родитель
Сommit
9ff051c068

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

@@ -86,14 +86,37 @@ public final class YangGuangApiQuoteResultsVoBuild {
     }
 
     private static void buildPremium(QuoteResultsVo quoteResultsVo, YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse) {
-        quoteResultsVo.getCosts().setCiPremium(yangGuangAccuracyCalculateResponse.getCiSumPremium());
-        quoteResultsVo.getCosts().setBiPremium(yangGuangAccuracyCalculateResponse.getBiSumPremium());
-        quoteResultsVo.getCosts().setVvTax(yangGuangAccuracyCalculateResponse.getSumPayTax());
+        String defaultPremium = "0.00";
+        quoteResultsVo.getCosts().setCiPremium(yangGuangAccuracyCalculateResponse.getCiSumPremium() != null ? yangGuangAccuracyCalculateResponse.getCiSumPremium() : defaultPremium);
+        quoteResultsVo.getCosts().setBiPremium(yangGuangAccuracyCalculateResponse.getBiSumPremium() != null ? yangGuangAccuracyCalculateResponse.getBiSumPremium() : defaultPremium);
+        quoteResultsVo.getCosts().setVvTax(yangGuangAccuracyCalculateResponse.getSumPayTax() != null ? yangGuangAccuracyCalculateResponse.getSumPayTax() : defaultPremium);
         // 驾意险
         List<YangGuangAccuracyCalculateResponse.PtptNonVehicleProductInformationList> notCarList = yangGuangAccuracyCalculateResponse.getPtptNonVehicleProductInformationList();
         //驾意险价格
-        BigDecimal bigDecimal = YangGuangAccuracyCalculateResponse.PtptNonVehicleProductInformationList.sumPremium(notCarList);
-        quoteResultsVo.getCosts().setNiPremium(bigDecimal.toString());
+        BigDecimal jyPremium = YangGuangAccuracyCalculateResponse.PtptNonVehicleProductInformationList.sumPremium(notCarList);
+        quoteResultsVo.getCosts().setNiPremium(jyPremium.toString());
+        if (quoteResultsVo.getCosts().getNiPremium().equals("0")) {
+            quoteResultsVo.getCosts().setNiPremium(defaultPremium);
+        }
+        // 2. 字符串转BigDecimal
+        BigDecimal ci = toBigDecimal(yangGuangAccuracyCalculateResponse.getCiSumPremium(), defaultPremium);
+        BigDecimal bi = toBigDecimal(yangGuangAccuracyCalculateResponse.getBiSumPremium(), defaultPremium);
+        BigDecimal vvTax = toBigDecimal(yangGuangAccuracyCalculateResponse.getSumPayTax(), defaultPremium);
+        BigDecimal ni = toBigDecimal(jyPremium.toString(), defaultPremium);
+        quoteResultsVo.getCosts().setSumPremium(ci.add(bi).add(vvTax).add(ni).toString());
+    }
+
+    private static BigDecimal toBigDecimal(String str, String defaultValue) {
+        if (str == null || str.trim().isEmpty()) {
+            return new BigDecimal(defaultValue);
+        }
+        try {
+            return new BigDecimal(str.trim());
+        } catch (NumberFormatException e) {
+            // 日志记录错误,使用默认值
+            System.err.println("保费格式错误: " + str + ", 使用默认值: " + defaultValue);
+            return new BigDecimal(defaultValue);
+        }
     }
 
     /**