Jelajahi Sumber

1. 泰康:解决选择三者险300万进行报价时,依然提示:规则管控提示$商业三者险保额请选择300万以上问题

wangrq 2 bulan lalu
induk
melakukan
6ab69afb3c

+ 26 - 0
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/ConvertUtil.java

@@ -1,5 +1,8 @@
 package com.jzg.quotation.taikang.crawler;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+
 public class ConvertUtil {
 
     /**
@@ -20,4 +23,27 @@ public class ConvertUtil {
             return 0.0;
         }
     }
+
+    /**
+     * 将数字字符串转换为*万格式,如10000转换为1万,63177.4转换为6.32万
+     * 入参是字符串数字(整数 / 小数都支持,如 "10000"、"63177.4"、"1000")
+     * 数值 ≥10000:除以 10000,保留 2 位小数,拼接「万」
+     * 数值 <10000:原样返回原字符串
+     * @param quoteAmount
+     * @return
+     */
+    public static String simpleConvert(String quoteAmount) {
+        if (quoteAmount == null || quoteAmount.isBlank()) return quoteAmount;
+        BigDecimal num;
+        try {
+            num = new BigDecimal(quoteAmount.trim());
+        } catch (Exception e) {
+            return quoteAmount;
+        }
+        if (num.compareTo(new BigDecimal("10000")) < 0) {
+            return quoteAmount;
+        }
+        BigDecimal res = num.divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP);
+        return res + "万";
+    }
 }

+ 3 - 3
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/build/TkCrawlerQuoteResultsBuild.java

@@ -61,9 +61,9 @@ public class TkCrawlerQuoteResultsBuild {
 
         if (other.getVehicleOwnerMessage() != null) {
             errorMessage = other.getVehicleOwnerMessage();
-        } else if (other.getMessageBZ() != null && other.getMessageBZ().size() >= 2) {
-            errorMessage = other.getMessageBZ().get(0) + "\n" + other.getMessageBZ().get(1);
-        }
+        } else if ((other.getMessageBZ() instanceof List<?>) && ((List<?>) other.getMessageBZ()).size() >= 2) {
+            errorMessage = ((List<?>) other.getMessageBZ()).get(0) + "\n" + ((List<?>) other.getMessageBZ()).get(1);
+        } else
 
         // 初始化有提示跳过,应该属于警告信息(目前只遇到选择的三者险是300万,初始化依然提示:规则管控提示$商业三者险保额请选择300万以上),后续看是否有其他情况影响报价,如果出现其他情况,对这个提示单独处理放行
         if (!initFlag && preciseInitResult.getPremium() == null) {

+ 1 - 1
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/model/entity/TKFlag.java

@@ -134,7 +134,7 @@ public class TKFlag extends UnknownFieldEntity {
      */
     private String isStaffCar;
     /**
-     *
+     * 价格差异标志
      */
     private String priceDifferFlag;
 }

+ 5 - 2
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/model/entity/TKOther.java

@@ -50,7 +50,7 @@ public class TKOther extends UnknownFieldEntity {
     /**
      * 商业保险消息
      */
-    private List<String> messageBZ;
+    private Object messageBZ;
     /**
      * 通知信息
      */
@@ -80,7 +80,7 @@ public class TKOther extends UnknownFieldEntity {
     /**
      * 商业险消息
      */
-    private List<String> messageCI;
+    private Object messageCI;
 
     /**
      * 来源ID
@@ -92,6 +92,9 @@ public class TKOther extends UnknownFieldEntity {
      */
     private String vehicleOwnerMessage;
 
+    /**
+     * 价格差异标志
+     */
     private String priceDifferFlag;
 
 }

+ 10 - 5
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java

@@ -5,6 +5,7 @@ import com.jzg.commons.entity.quote.vo.*;
 
 import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.taikang.crawler.CodeUtil;
+import com.jzg.quotation.taikang.crawler.ConvertUtil;
 import com.jzg.quotation.taikang.crawler.model.TKLoginSession;
 import com.jzg.quotation.taikang.crawler.model.api.*;
 import com.jzg.quotation.taikang.crawler.model.entity.*;
@@ -31,6 +32,7 @@ public class TKSimpleService {
 
     /**
      * 车船税减免标志映射表:公司系统标志 -> 保司系统标志
+     * 1-正常交税; 2-免税; 3-减税; 4-完税
      */
     private static final Map<String, String> TAX_RELIEF_FLAG_MAP = Map.of(
             "1", "T",
@@ -952,9 +954,9 @@ public class TKSimpleService {
                 TKFlag::new
         );
         flag.setVipWeekFlag("0");
-        flag.setQuoteLinkageFlag("0");
-        flag.setInstantInsureBZAllowed("0");
-        flag.setPriceDifferFlag("0");
+        // flag.setQuoteLinkageFlag("0"); //解决选择三者险300万进行报价时,依然提示:规则管控提示$商业三者险保额请选择300万以上问题,测试正常,不行完了放开
+        // flag.setInstantInsureBZAllowed("0");//解决选择三者险300万进行报价时,依然提示:规则管控提示$商业三者险保额请选择300万以上问题,测试正常,不行完了放开
+        // flag.setPriceDifferFlag("0");//解决选择三者险300万进行报价时,依然提示:规则管控提示$商业三者险保额请选择300万以上问题,测试正常,不行完了放开
 
         // 无商业险时设置商业险标志为"0"
         if (CollectionUtils.isEmpty(commonQuoteVo.getKindInfoVo())) {
@@ -969,6 +971,9 @@ public class TKSimpleService {
         );
         other.setFromID(fromId);
         other.setChannelCode("OffWeb");
+        other.setMessageBZ("");
+        other.setMessageCI("");
+        other.setPriceDifferFlag("0");
 
         // 获取时间参数对象(保司系统已初始化,无需创建)
         TKDateInfo date = preciseInitParam.getDate();
@@ -1037,7 +1042,7 @@ public class TKSimpleService {
                     TKCiKindsVo tkCiKindVo = tkCiKindsVoMap.get(commonBiKindInfoVo.getKindCode());
                     tkCiKindVo.setIsSelect("1");
                     tkCiKindVo.setQuoteAmount(commonBiKindInfoVo.getAmount());
-                    tkCiKindVo.setQuoteAmountCN(commonBiKindInfoVo.getAmount());
+                    tkCiKindVo.setQuoteAmountCN(ConvertUtil.simpleConvert(commonBiKindInfoVo.getAmount()));
 
                     if (StringUtils.isNotBlank(commonBiKindInfoVo.getUnitAmount())) {
                         tkCiKindVo.setUnitAmount(new BigDecimal(commonBiKindInfoVo.getUnitAmount()));
@@ -1133,7 +1138,7 @@ public class TKSimpleService {
         // ========== 8. 调用报价接口 ==========
 
         // 设置请求参数
-        preciseInitParam.setChannelCode("OffWeb");
+        // preciseInitParam.setChannelCode("OffWeb");// 这个值第二次请求不需要,并且多了版本号orderVersion:"2"
         preciseInitParam.setInitFlag("quote");
         preciseInitParam.setTplatformId(tplatformId);
         preciseInitParam.setTplatLoginKey(tplatLoginKey);