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

人保修复返回商业险各费用详情

wanghao 3 месяцев назад
Родитель
Сommit
b6cf0de3f8

+ 57 - 2
tenant/insurance/quotation-renbaonew/src/main/java/com/jzg/quotation/renbaonew/crawler/constant/InsuranceKindCodeMapping.java

@@ -153,8 +153,13 @@ public class InsuranceKindCodeMapping {
     private static final Map<String, String> KIND_NAME_MAP = new HashMap<>();
     private static final Map<String, String> KIND_NAME_MAP = new HashMap<>();
     private static final Map<String, String> KIND_ENERGY_NAME_MAP = new HashMap<>();
     private static final Map<String, String> KIND_ENERGY_NAME_MAP = new HashMap<>();
 
 
+    /** 反向映射:人保险种代码 → 掌柜鼎平台险种代码 */
+    private static final Map<String, String> REVERSE_KIND_CODE_MAP = new HashMap<>();
+    /** 人保险种代码 → 险种名称 */
+    private static final Map<String, String> RB_CODE_NAME_MAP = new HashMap<>();
+
     static {
     static {
-        // 初始化险种代码映射
+        // 初始化险种代码映射(平台 → 人保)
         KIND_CODE_MAP.put(KIND_A, CODE_A);
         KIND_CODE_MAP.put(KIND_A, CODE_A);
         KIND_CODE_MAP.put(KIND_B, CODE_B);
         KIND_CODE_MAP.put(KIND_B, CODE_B);
         KIND_CODE_MAP.put(KIND_D3, CODE_D3);
         KIND_CODE_MAP.put(KIND_D3, CODE_D3);
@@ -169,7 +174,22 @@ public class InsuranceKindCodeMapping {
         KIND_CODE_MAP.put(KIND_TY3, CODE_TY3);
         KIND_CODE_MAP.put(KIND_TY3, CODE_TY3);
         KIND_CODE_MAP.put(KIND_TY4, CODE_TY4);
         KIND_CODE_MAP.put(KIND_TY4, CODE_TY4);
 
 
-        // 初始化险种名称映射
+        // 初始化反向映射(人保 → 平台)
+        REVERSE_KIND_CODE_MAP.put(CODE_A, KIND_A);
+        REVERSE_KIND_CODE_MAP.put(CODE_B, KIND_B);
+        REVERSE_KIND_CODE_MAP.put(CODE_D3, KIND_D3);
+        REVERSE_KIND_CODE_MAP.put(CODE_D4, KIND_D4);
+        REVERSE_KIND_CODE_MAP.put(CODE_L, KIND_L);
+        REVERSE_KIND_CODE_MAP.put(CODE_BD, KIND_BD);
+        REVERSE_KIND_CODE_MAP.put(CODE_YBW1, KIND_YBW1);
+        REVERSE_KIND_CODE_MAP.put(CODE_YBW3, KIND_YBW3);
+        REVERSE_KIND_CODE_MAP.put(CODE_YBW2, KIND_YBW2);
+        REVERSE_KIND_CODE_MAP.put(CODE_TY1, KIND_TY1);
+        REVERSE_KIND_CODE_MAP.put(CODE_TY2, KIND_TY2);
+        REVERSE_KIND_CODE_MAP.put(CODE_TY3, KIND_TY3);
+        REVERSE_KIND_CODE_MAP.put(CODE_TY4, KIND_TY4);
+
+        // 初始化险种名称映射(平台 → 名称)
         KIND_NAME_MAP.put(KIND_A, NAME_A);
         KIND_NAME_MAP.put(KIND_A, NAME_A);
         KIND_NAME_MAP.put(KIND_B, NAME_B);
         KIND_NAME_MAP.put(KIND_B, NAME_B);
         KIND_NAME_MAP.put(KIND_D3, NAME_D3);
         KIND_NAME_MAP.put(KIND_D3, NAME_D3);
@@ -184,6 +204,21 @@ public class InsuranceKindCodeMapping {
         KIND_NAME_MAP.put(KIND_TY3, NAME_TY3);
         KIND_NAME_MAP.put(KIND_TY3, NAME_TY3);
         KIND_NAME_MAP.put(KIND_TY4, NAME_TY4);
         KIND_NAME_MAP.put(KIND_TY4, NAME_TY4);
 
 
+        // 初始化人保编码 → 名称映射
+        RB_CODE_NAME_MAP.put(CODE_A, NAME_A);
+        RB_CODE_NAME_MAP.put(CODE_B, NAME_B);
+        RB_CODE_NAME_MAP.put(CODE_D3, NAME_D3);
+        RB_CODE_NAME_MAP.put(CODE_D4, NAME_D4);
+        RB_CODE_NAME_MAP.put(CODE_L, NAME_L);
+        RB_CODE_NAME_MAP.put(CODE_BD, NAME_BD);
+        RB_CODE_NAME_MAP.put(CODE_YBW1, NAME_YBW1);
+        RB_CODE_NAME_MAP.put(CODE_YBW3, NAME_YBW3);
+        RB_CODE_NAME_MAP.put(CODE_YBW2, NAME_YBW2);
+        RB_CODE_NAME_MAP.put(CODE_TY1, NAME_TY1);
+        RB_CODE_NAME_MAP.put(CODE_TY2, NAME_TY2);
+        RB_CODE_NAME_MAP.put(CODE_TY3, NAME_TY3);
+        RB_CODE_NAME_MAP.put(CODE_TY4, NAME_TY4);
+
         // 初始化新能源险种名称映射
         // 初始化新能源险种名称映射
         KIND_ENERGY_NAME_MAP.put(KIND_A, ENERGY_NAME_A);
         KIND_ENERGY_NAME_MAP.put(KIND_A, ENERGY_NAME_A);
         KIND_ENERGY_NAME_MAP.put(KIND_B, ENERGY_NAME_B);
         KIND_ENERGY_NAME_MAP.put(KIND_B, ENERGY_NAME_B);
@@ -202,6 +237,26 @@ public class InsuranceKindCodeMapping {
         return KIND_CODE_MAP.getOrDefault(kindCode, kindCode);
         return KIND_CODE_MAP.getOrDefault(kindCode, kindCode);
     }
     }
 
 
+    /**
+     * 根据人保险种代码获取掌柜鼎平台险种代码(反向映射)
+     *
+     * @param rbKindCode 人保险种代码(如"051050")
+     * @return 平台险种代码(如"A"),未匹配则返回原值
+     */
+    public static String getPlatformKindCode(String rbKindCode) {
+        return REVERSE_KIND_CODE_MAP.getOrDefault(rbKindCode, rbKindCode);
+    }
+
+    /**
+     * 根据人保险种代码获取险种名称
+     *
+     * @param rbKindCode 人保险种代码(如"051050")
+     * @return 险种名称(如"车损险"),未匹配则返回原值
+     */
+    public static String getKindNameByRbCode(String rbKindCode) {
+        return RB_CODE_NAME_MAP.getOrDefault(rbKindCode, rbKindCode);
+    }
+
     /**
     /**
      * 根据掌柜险种代码获取险种名称
      * 根据掌柜险种代码获取险种名称
      */
      */

+ 23 - 1
tenant/insurance/quotation-renbaonew/src/main/java/com/jzg/quotation/renbaonew/crawler/service/impl/RenBaoNewCrawlerRequestImpl.java

@@ -18,6 +18,7 @@ import com.jzg.quotation.commons.entity.GetCaptchaResponse;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
 import com.jzg.quotation.renbaonew.crawler.component.RenBaoNewCrawlerCacheComponent;
 import com.jzg.quotation.renbaonew.crawler.component.RenBaoNewCrawlerCacheComponent;
 import com.jzg.quotation.renbaonew.crawler.component.RenBaoNewCrawlerRequestComponent;
 import com.jzg.quotation.renbaonew.crawler.component.RenBaoNewCrawlerRequestComponent;
+import com.jzg.quotation.renbaonew.crawler.constant.InsuranceKindCodeMapping;
 import com.jzg.quotation.renbaonew.crawler.entity.RenBaoNewCrawlerConfigureParameters;
 import com.jzg.quotation.renbaonew.crawler.entity.RenBaoNewCrawlerConfigureParameters;
 import com.jzg.quotation.renbaonew.crawler.entity.bo.LoginInfoBO;
 import com.jzg.quotation.renbaonew.crawler.entity.bo.LoginInfoBO;
 import com.jzg.quotation.renbaonew.crawler.entity.response.*;
 import com.jzg.quotation.renbaonew.crawler.entity.response.*;
@@ -113,7 +114,7 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
         RenBaoNewCrawlerSaveResponse saveResponse = requestComponent.saveAsProposal(saveRequest, headers);
         RenBaoNewCrawlerSaveResponse saveResponse = requestComponent.saveAsProposal(saveRequest, headers);
 
 
         // 4. 构建结果
         // 4. 构建结果
-        QuoteResultsVo resultsVo = buildQuoteResultsVo(quoteVo, quoteRequest, saveResponse, headers, username);
+        QuoteResultsVo resultsVo = buildQuoteResultsVo(quoteVo, quoteRequest, quoteResponse, saveResponse, headers, username);
 
 
         // 5. 保存订单信息
         // 5. 保存订单信息
         orderService.saveOrder(
         orderService.saveOrder(
@@ -726,6 +727,7 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
      * @return 报价结果VO
      * @return 报价结果VO
      */
      */
     private QuoteResultsVo buildQuoteResultsVo(QuoteVo quoteVo, RenBaoNewCrawlerQuoteRequest quoteRequest,
     private QuoteResultsVo buildQuoteResultsVo(QuoteVo quoteVo, RenBaoNewCrawlerQuoteRequest quoteRequest,
+                                               RenBaoNewCrawlerQuoteResponse quoteResponse,
                                                RenBaoNewCrawlerSaveResponse saveResponse,
                                                RenBaoNewCrawlerSaveResponse saveResponse,
                                                HttpHeaders headers, String username) {
                                                HttpHeaders headers, String username) {
         QuoteResultsVo resultsVo = new QuoteResultsVo();
         QuoteResultsVo resultsVo = new QuoteResultsVo();
@@ -832,6 +834,26 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
             resultsVo.setCosts(costs);
             resultsVo.setCosts(costs);
         }
         }
 
 
+        // 商业险种信息赋值:从报价响应的prpQitemKindVos中提取,人保kindCode转为平台编码
+        if (quoteResponse != null && quoteResponse.getData() != null
+                && quoteResponse.getData().getPrpQmain() != null
+                && quoteResponse.getData().getPrpQmain().getPrpQitemKindVos() != null) {
+            List<KindInfoVo> kindInfoVoList = new ArrayList<>();
+            for (RenBaoNewCrawlerQuoteResponse.PrpQitemKindVo item :
+                    quoteResponse.getData().getPrpQmain().getPrpQitemKindVos()) {
+                // 人保kindCode → 平台编码(如 051050 → A)
+                String platformKindCode = InsuranceKindCodeMapping.getPlatformKindCode(item.getKindCode());
+                for(KindInfoVo kindInfo :quoteVo.getKindInfoVo()){
+                    if(kindInfo.getKindCode().equals(platformKindCode)){
+                        kindInfo.setPremium(item.getPremium() != null ? String.valueOf(item.getPremium()) : null);
+                        kindInfo.setAmount(item.getAmount() != null ? String.valueOf(item.getAmount()) : null);
+                    }
+                }
+
+            }
+            resultsVo.setKindInfoVo(quoteVo.getKindInfoVo());
+        }
+
         // 获取评分
         // 获取评分
         if (!proposalNoDAA.isEmpty() || !proposalNoDZA.isEmpty()) {
         if (!proposalNoDAA.isEmpty() || !proposalNoDZA.isEmpty()) {
             try {
             try {