wanghao 3 kuukautta sitten
vanhempi
commit
3036f2d847

+ 38 - 0
tenant/insurance/quotation-renbaonew/src/main/java/com/jzg/quotation/renbaonew/crawler/component/RenBaoNewCrawlerRequestComponent.java

@@ -1005,4 +1005,42 @@ public class RenBaoNewCrawlerRequestComponent {
         log.info("Form data post to: {}", url);
         log.info("Form data post to: {}", url);
         return requestComponent.formData(url, parts, String.class, headers);
         return requestComponent.formData(url, parts, String.class, headers);
     }
     }
+
+    /**
+     * 查询投保单信息(获取评分)
+     *
+     * <p>对应Python的queryProposalInfo方法,用于获取商业险和交强险的评分</p>
+     *
+     * @param proposalNoDAA 商业险投保单号
+     * @param proposalNoDZA 交强险投保单号
+     * @param headers 请求头
+     * @param username 用户名
+     * @return 投保单信息(包含评分)
+     */
+    public Map<String, Object> queryProposalInfo(String proposalNoDAA, String proposalNoDZA,
+                                                 HttpHeaders headers, String username) {
+        String url = buildUrl(RequestUrl.QUERY_PROPOSAL_INFO.getUrl());
+
+        Map<String, Object> requestData = new HashMap<>();
+        requestData.put("proposalNoDAA", proposalNoDAA != null ? proposalNoDAA : "");
+        requestData.put("proposalNoDZA", proposalNoDZA != null ? proposalNoDZA : "");
+        requestData.put("proposalNoDDA", "");
+        requestData.put("proposalNoYEL", "");
+        requestData.put("proposalNoEAD", "");
+        requestData.put("proposalNo", "");
+        requestData.put("riskCode", "DAA");
+        requestData.put("userCode", "");
+        requestData.put("comCode", "");
+        requestData.put("pageNo", "0");
+        requestData.put("pageSize", "0");
+        requestData.put("proposalNoUnion", new String[]{});
+        requestData.put("editType", "query");
+
+        log.info("Query proposal info for DAA: {}, DZA: {}", proposalNoDAA, proposalNoDZA);
+        ResponseEntity<String> responseEntity = requestComponent.stringPost(url, requestData, String.class, headers);
+
+        updateTokenFromResponse(responseEntity.getHeaders(), username);
+
+        return JSON.parseObject(responseEntity.getBody(), new TypeReference<Map<String, Object>>() {});
+    }
 }
 }

+ 6 - 1
tenant/insurance/quotation-renbaonew/src/main/java/com/jzg/quotation/renbaonew/crawler/constant/enums/RequestUrl.java

@@ -130,7 +130,12 @@ public enum RequestUrl {
     /**
     /**
      * 影像单一上传接口(只有交强险或商业险)
      * 影像单一上传接口(只有交强险或商业险)
      */
      */
-    IMAGE_OCR_UPLOAD("/front/019K0000003/yxgl/imageOCRUpload");
+    IMAGE_OCR_UPLOAD("/front/019K0000003/yxgl/imageOCRUpload"),
+
+    /**
+     * 查询投保单信息接口(获取评分)
+     */
+    QUERY_PROPOSAL_INFO("/front/019K0000003/ipdi/queryProposalInfo");
 
 
     /**
     /**
      * 接口URL路径
      * 接口URL路径

+ 5 - 0
tenant/insurance/quotation-renbaonew/src/main/java/com/jzg/quotation/renbaonew/crawler/entity/response/RenBaoNewCrawlerQuoteResponse.java

@@ -344,6 +344,11 @@ public class RenBaoNewCrawlerQuoteResponse {
          * 被保险人信息列表
          * 被保险人信息列表
          */
          */
         private List<Object> prpInsuredVos;
         private List<Object> prpInsuredVos;
+
+        /**
+         * 人保评分
+         */
+        private String piccscore;
     }
     }
 
 
     /**
     /**

+ 31 - 16
tenant/insurance/quotation-renbaonew/src/main/java/com/jzg/quotation/renbaonew/crawler/service/impl/RenBaoNewCrawlerRequestBuilder.java

@@ -8,6 +8,7 @@ import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
 import com.jzg.commons.entity.quote.vo.image.InsuranceImageVo;
 import com.jzg.commons.entity.vo.ImagesVo;
 import com.jzg.commons.entity.vo.ImagesVo;
 import com.jzg.commons.entity.vo.InsTaskImagesVo;
 import com.jzg.commons.entity.vo.InsTaskImagesVo;
+import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.commons.util.MinioUtils;
 import com.jzg.quotation.renbaonew.crawler.component.RenBaoNewCrawlerRequestComponent;
 import com.jzg.quotation.renbaonew.crawler.component.RenBaoNewCrawlerRequestComponent;
 import com.jzg.quotation.renbaonew.mapper.RenBaoImageMapper;
 import com.jzg.quotation.renbaonew.mapper.RenBaoImageMapper;
@@ -176,9 +177,6 @@ public class RenBaoNewCrawlerRequestBuilder {
             }
             }
         }
         }
 
 
-        // 设置顶层参数
-        buildTopLevelParameters(request);
-
         // =====================================================================
         // =====================================================================
         // 步骤2.2:查询归属人信息(业务归属)
         // 步骤2.2:查询归属人信息(业务归属)
         // =====================================================================
         // =====================================================================
@@ -293,6 +291,10 @@ public class RenBaoNewCrawlerRequestBuilder {
         // 0=燃油, 1=纯电动, 2=燃料电池, 3=插电混动, 4=其他混动, 9=其他
         // 0=燃油, 1=纯电动, 2=燃料电池, 3=插电混动, 4=其他混动, 9=其他
         // =====================================================================
         // =====================================================================
         String energyTypePlat = calculateEnergyTypePlat(fuelType);
         String energyTypePlat = calculateEnergyTypePlat(fuelType);
+        String isEnergyCar = carInfo.getEnergyTypeCode() != null && carInfo.getEnergyTypeCode().equals("1") ? "1" : "0";
+
+        // 设置顶层参数
+        buildTopLevelParameters(request, isEnergyCar, energyTypePlat);
 
 
         // =====================================================================
         // =====================================================================
         // 步骤4:计算车辆实际价值(车损险保额计算基础)
         // 步骤4:计算车辆实际价值(车损险保额计算基础)
@@ -343,7 +345,7 @@ public class RenBaoNewCrawlerRequestBuilder {
                 seatCount,                                // 座位数
                 seatCount,                                // 座位数
                 vehicleTonnage,                           // 核定载质量(货车用)
                 vehicleTonnage,                           // 核定载质量(货车用)
                 energyTypePlat,                           // 能源类型平台代码
                 energyTypePlat,                           // 能源类型平台代码
-                carInfo.getEnergyTypeCode() != null && carInfo.getEnergyTypeCode().equals("1") ? "1" : "0",  // 是否新能源
+                isEnergyCar,                              // 是否新能源
                 startDate,                                // 起保日期
                 startDate,                                // 起保日期
                 gscomCode,                                // 归属部门代码
                 gscomCode,                                // 归属部门代码
                 headers,
                 headers,
@@ -416,13 +418,13 @@ public class RenBaoNewCrawlerRequestBuilder {
                 handlerCodeUni, handler1CodeUni, useYear, cqpCount, linkerName));
                 handlerCodeUni, handler1CodeUni, useYear, cqpCount, linkerName));
         request.setPrpCitemCar(buildPrpCitemCar(carInfo, actualValueStr, vehicleModelCode,
         request.setPrpCitemCar(buildPrpCitemCar(carInfo, actualValueStr, vehicleModelCode,
                 vehicleId, vehicleModelCode, useNatureCode, vehicleClassPicc, fuelType, clauseType, vehicleFgwCode, purchasePrice,
                 vehicleId, vehicleModelCode, useNatureCode, vehicleClassPicc, fuelType, clauseType, vehicleFgwCode, purchasePrice,
-                gscomCode, loginInfo.getUserCode(), headers, username, queryArea));
+                gscomCode, loginInfo.getUserCode(), headers, username, queryArea, isEnergyCar, energyTypePlat));
         request.setPrpCinsureds(buildPrpCinsureds(quoteVo,customerResponse));
         request.setPrpCinsureds(buildPrpCinsureds(quoteVo,customerResponse));
 
 
         // 价格系数默认使用1.0(与Python保持一致)
         // 价格系数默认使用1.0(与Python保持一致)
         String priceCoefficient = "1.0";
         String priceCoefficient = "1.0";
         List<Map<String, Object>> kindMapList = convertKindInfoToMapList(quoteVo.getKindInfoVo());
         List<Map<String, Object>> kindMapList = convertKindInfoToMapList(quoteVo.getKindInfoVo());
-        request.setPrpCitemKindsTemp(buildPrpCitemKindsTemp(kindMapList, actualValueStr, priceCoefficient, seatCount));
+        request.setPrpCitemKindsTemp(buildPrpCitemKindsTemp(kindMapList, actualValueStr, priceCoefficient, seatCount, isEnergyCar));
 
 
         request.setPrpCitemKindCI(buildPrpCitemKindCI(quoteVo));
         request.setPrpCitemKindCI(buildPrpCitemKindCI(quoteVo));
         request.setPrpCcarShipTax(buildPrpCcarShipTax(customerResponse, carInfo));
         request.setPrpCcarShipTax(buildPrpCcarShipTax(customerResponse, carInfo));
@@ -518,7 +520,7 @@ public class RenBaoNewCrawlerRequestBuilder {
      * 构建顶层参数 - 规整所有顶级字段
      * 构建顶层参数 - 规整所有顶级字段
      *
      *
      */
      */
-    private void buildTopLevelParameters(RenBaoNewCrawlerQuoteRequest request) {
+    private void buildTopLevelParameters(RenBaoNewCrawlerQuoteRequest request, String isEnergyCar, String energyTypePlat) {
         // ========== req2.json 独有的字段 ==========
         // ========== req2.json 独有的字段 ==========
         // 注意:userName, userCode 在调用处单独设置,因为需要 loginInfo
         // 注意:userName, userCode 在调用处单独设置,因为需要 loginInfo
         request.setUserSonType(null);
         request.setUserSonType(null);
@@ -526,8 +528,8 @@ public class RenBaoNewCrawlerRequestBuilder {
         request.setProfitinfoFlag(true);
         request.setProfitinfoFlag(true);
         request.setTaskNo("");
         request.setTaskNo("");
         request.setDmFlag("");
         request.setDmFlag("");
-        request.setEnergyFlag("0");
-        request.setEnergyTypePlat("0");
+        request.setEnergyFlag(isEnergyCar != null ? isEnergyCar : "0");
+        request.setEnergyTypePlat(energyTypePlat != null ? energyTypePlat : "0");
         request.setIsForbiddenFlag("0");
         request.setIsForbiddenFlag("0");
         request.setIsBusinessType("I");
         request.setIsBusinessType("I");
         request.setLastDamagedBI("");
         request.setLastDamagedBI("");
@@ -655,9 +657,11 @@ public class RenBaoNewCrawlerRequestBuilder {
 
 
                     if (addResponse != null && "Success".equals(addResponse.getMessage())) {
                     if (addResponse != null && "Success".equals(addResponse.getMessage())) {
                         log.info("Customer add success: {}", customerInfo.getName());
                         log.info("Customer add success: {}", customerInfo.getName());
-                        if (addResponse.getData() != null) {
+                        if (addResponse.getData() != null && addResponse.getData().get("errorMessage").equals("")) {
                             customerData = JSON.parseObject(JSON.toJSONString(addResponse.getData()),
                             customerData = JSON.parseObject(JSON.toJSONString(addResponse.getData()),
                                     RenBaoNewCrawlerCustomerResponse.CustomerData.class);
                                     RenBaoNewCrawlerCustomerResponse.CustomerData.class);
+                        }else{
+                            throw new SystemException(addResponse.getData().get("errorMessage")+"");
                         }
                         }
                         return customerData;
                         return customerData;
                     } else {
                     } else {
@@ -1578,7 +1582,7 @@ public class RenBaoNewCrawlerRequestBuilder {
                                                 String carKindCode, String fuelType, String clauseType,
                                                 String carKindCode, String fuelType, String clauseType,
                                                 String vehicleFgwCode, BigDecimal purchasePrice,
                                                 String vehicleFgwCode, BigDecimal purchasePrice,
                                                 String comCode, String userCode, HttpHeaders headers, String username,
                                                 String comCode, String userCode, HttpHeaders headers, String username,
-                                                String queryArea) {
+                                                String queryArea, String isEnergyCar, String energyTypePlat) {
         Map<String, Object> prpCitemCar = new HashMap<>();
         Map<String, Object> prpCitemCar = new HashMap<>();
         String formattedRegisterDate = formatDateWithTimezone(carInfo.getRegisterDate());
         String formattedRegisterDate = formatDateWithTimezone(carInfo.getRegisterDate());
 
 
@@ -1639,7 +1643,7 @@ public class RenBaoNewCrawlerRequestBuilder {
         prpCitemCar.put("modelCode", finalVehicleId != null && !finalVehicleId.isEmpty() ? finalVehicleId : carInfo.getCarModelNo());
         prpCitemCar.put("modelCode", finalVehicleId != null && !finalVehicleId.isEmpty() ? finalVehicleId : carInfo.getCarModelNo());
         prpCitemCar.put("ModelCodePlat", finalVehicleModelCode != null ? finalVehicleModelCode : "");
         prpCitemCar.put("ModelCodePlat", finalVehicleModelCode != null ? finalVehicleModelCode : "");
         prpCitemCar.put("useNatureCode", useNatureCode != null && !useNatureCode.isEmpty() ? useNatureCode : "211");
         prpCitemCar.put("useNatureCode", useNatureCode != null && !useNatureCode.isEmpty() ? useNatureCode : "211");
-        prpCitemCar.put("licenseType", "02");
+        prpCitemCar.put("licenseType", "1".equals(isEnergyCar) ? "52" : "02");
         prpCitemCar.put("carKindCode", carKindCode != null ? carKindCode : "A01");
         prpCitemCar.put("carKindCode", carKindCode != null ? carKindCode : "A01");
         prpCitemCar.put("clauseType", clauseType != null ? clauseType : "F42");
         prpCitemCar.put("clauseType", clauseType != null ? clauseType : "F42");
         prpCitemCar.put("clauseTypeOld", clauseType != null ? clauseType : "F42");
         prpCitemCar.put("clauseTypeOld", clauseType != null ? clauseType : "F42");
@@ -1685,7 +1689,8 @@ public class RenBaoNewCrawlerRequestBuilder {
             }
             }
         }
         }
         prpCitemCar.put("carLotEquQuality", carLotEquQuality != null ? carLotEquQuality : "");
         prpCitemCar.put("carLotEquQuality", carLotEquQuality != null ? carLotEquQuality : "");
-        prpCitemCar.put("isEnergyCar", matchedIsEnergyCar != null ? matchedIsEnergyCar : "0");
+        String finalIsEnergyCar = matchedIsEnergyCar != null ? matchedIsEnergyCar : isEnergyCar;
+        prpCitemCar.put("isEnergyCar", finalIsEnergyCar != null ? finalIsEnergyCar : "0");
         prpCitemCar.put("isDangerous", "0");
         prpCitemCar.put("isDangerous", "0");
         prpCitemCar.put("isDropinVisitInsure", "0");
         prpCitemCar.put("isDropinVisitInsure", "0");
         prpCitemCar.put("indexn", "");
         prpCitemCar.put("indexn", "");
@@ -1715,9 +1720,9 @@ public class RenBaoNewCrawlerRequestBuilder {
 
 
         // ========== 车辆基本属性 ==========
         // ========== 车辆基本属性 ==========
         prpCitemCar.put("licenseFlag", "1");
         prpCitemCar.put("licenseFlag", "1");
-        prpCitemCar.put("energyFlag", "0");
+        prpCitemCar.put("energyFlag", finalIsEnergyCar != null ? finalIsEnergyCar : "0");
         prpCitemCar.put("energyTypePlatCode", "");
         prpCitemCar.put("energyTypePlatCode", "");
-        prpCitemCar.put("energyTypePlat", calculateEnergyTypePlat(fuelType));
+        prpCitemCar.put("energyTypePlat", energyTypePlat != null ? energyTypePlat : calculateEnergyTypePlat(fuelType));
         prpCitemCar.put("energyTypePlatQ39", "");
         prpCitemCar.put("energyTypePlatQ39", "");
         prpCitemCar.put("vehicleFgwCode", vehicleFgwCode != null ? vehicleFgwCode : "");
         prpCitemCar.put("vehicleFgwCode", vehicleFgwCode != null ? vehicleFgwCode : "");
         prpCitemCar.put("modelCodeAlias", "");
         prpCitemCar.put("modelCodeAlias", "");
@@ -2387,10 +2392,12 @@ public class RenBaoNewCrawlerRequestBuilder {
      * @param actualValue 车辆真实价值
      * @param actualValue 车辆真实价值
      * @param priceCoefficient 价格系数
      * @param priceCoefficient 价格系数
      * @param seatCount 座位数
      * @param seatCount 座位数
+     * @param isEnergyCar 是否新能源车
      * @return 商业险险种信息列表
      * @return 商业险险种信息列表
      */
      */
     public List<Map<String, Object>> buildPrpCitemKindsTemp(List<Map<String, Object>> kindList,
     public List<Map<String, Object>> buildPrpCitemKindsTemp(List<Map<String, Object>> kindList,
-                                                            String actualValue, String priceCoefficient, Integer seatCount) {
+                                                            String actualValue, String priceCoefficient, Integer seatCount,
+                                                            String isEnergyCar) {
         List<Map<String, Object>> kindsTemp = new ArrayList<>();
         List<Map<String, Object>> kindsTemp = new ArrayList<>();
 
 
         if (kindList == null || kindList.isEmpty()) {
         if (kindList == null || kindList.isEmpty()) {
@@ -2436,6 +2443,14 @@ public class RenBaoNewCrawlerRequestBuilder {
             // 深拷贝映射模板
             // 深拷贝映射模板
             Map<String, Object> kind = new HashMap<>(zgRbMap.get(zgKindCode));
             Map<String, Object> kind = new HashMap<>(zgRbMap.get(zgKindCode));
 
 
+            // 根据车辆类型动态选择险种名称
+            if ("1".equals(isEnergyCar) && kind.containsKey("energKindName")) {
+                String energKindName = (String) kind.get("energKindName");
+                if (energKindName != null && !energKindName.isEmpty()) {
+                    kind.put("kindName", energKindName);
+                }
+            }
+
             // 通用处理
             // 通用处理
             kind.put("chooseFlag", "on");
             kind.put("chooseFlag", "on");
             kind.put("newInsertFlag", "");
             kind.put("newInsertFlag", "");

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

@@ -98,7 +98,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);
+        QuoteResultsVo resultsVo = buildQuoteResultsVo(quoteVo, quoteRequest, saveResponse, headers, username);
 
 
         // 5. 保存订单信息
         // 5. 保存订单信息
         orderService.saveOrder(
         orderService.saveOrder(
@@ -176,9 +176,10 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
                     continue;
                     continue;
                 } else {
                 } else {
                     // 无法解析日期,直接退出
                     // 无法解析日期,直接退出
-                    break;
+                    throw new SystemException( response.getData().getError());
                 }
                 }
             }
             }
+            throw new SystemException( response.getData().getError());
         }
         }
         throw new SystemException("报价重试失败");
         throw new SystemException("报价重试失败");
     }
     }
@@ -461,25 +462,43 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
      * @param quoteVo 报价请求
      * @param quoteVo 报价请求
      * @param quoteRequest 报价请求参数
      * @param quoteRequest 报价请求参数
      * @param saveResponse 保存响应
      * @param saveResponse 保存响应
+     * @param headers 请求头
+     * @param username 用户名
      * @return 报价结果VO
      * @return 报价结果VO
      */
      */
     private QuoteResultsVo buildQuoteResultsVo(QuoteVo quoteVo, RenBaoNewCrawlerQuoteRequest quoteRequest,
     private QuoteResultsVo buildQuoteResultsVo(QuoteVo quoteVo, RenBaoNewCrawlerQuoteRequest quoteRequest,
-                                               RenBaoNewCrawlerSaveResponse saveResponse) {
+                                               RenBaoNewCrawlerSaveResponse saveResponse,
+                                               HttpHeaders headers, String username) {
         QuoteResultsVo resultsVo = new QuoteResultsVo();
         QuoteResultsVo resultsVo = new QuoteResultsVo();
         resultsVo.setOrdersNo(quoteVo.getOrder().getOrdersNo());
         resultsVo.setOrdersNo(quoteVo.getOrder().getOrdersNo());
         RiskInfoVo ciRisk = quoteVo.getCiRiskInfoVo() != null ?quoteVo.getCiRiskInfoVo() : new RiskInfoVo();
         RiskInfoVo ciRisk = quoteVo.getCiRiskInfoVo() != null ?quoteVo.getCiRiskInfoVo() : new RiskInfoVo();
         if(quoteRequest.getPrpCmainCI().get("startDate") != null && quoteRequest.getPrpCmainCI().get("endDate") != null){
         if(quoteRequest.getPrpCmainCI().get("startDate") != null && quoteRequest.getPrpCmainCI().get("endDate") != null){
             ciRisk.setStartDate(quoteRequest.getPrpCmainCI().get("startDate")+"");
             ciRisk.setStartDate(quoteRequest.getPrpCmainCI().get("startDate")+"");
+            if(ciRisk.getStartDate().length()<11){
+                ciRisk.setStartDate(quoteRequest.getPrpCmainCI().get("startDate")+" 00:00:00");
+            }
             ciRisk.setEndDate(quoteRequest.getPrpCmainCI().get("endDate")+"");
             ciRisk.setEndDate(quoteRequest.getPrpCmainCI().get("endDate")+"");
+            if(ciRisk.getEndDate().length()<11){
+                ciRisk.setEndDate(quoteRequest.getPrpCmainCI().get("endDate")+" 00:00:00");
+            }
         }
         }
         RiskInfoVo biRisk = quoteVo.getBiRiskInfoVo() != null ?quoteVo.getBiRiskInfoVo() : new RiskInfoVo();
         RiskInfoVo biRisk = quoteVo.getBiRiskInfoVo() != null ?quoteVo.getBiRiskInfoVo() : new RiskInfoVo();
         if(quoteRequest.getPrpCmain().get("startDate") != null && quoteRequest.getPrpCmainCI().get("endDate") != null){
         if(quoteRequest.getPrpCmain().get("startDate") != null && quoteRequest.getPrpCmainCI().get("endDate") != null){
             biRisk.setStartDate(quoteRequest.getPrpCmainCI().get("startDate")+"");
             biRisk.setStartDate(quoteRequest.getPrpCmainCI().get("startDate")+"");
+            if(biRisk.getStartDate().length()<11){
+                biRisk.setStartDate(quoteRequest.getPrpCmainCI().get("startDate")+" 00:00:00");
+            }
             biRisk.setEndDate(quoteRequest.getPrpCmainCI().get("endDate")+"");
             biRisk.setEndDate(quoteRequest.getPrpCmainCI().get("endDate")+"");
+            if(biRisk.getEndDate().length()<11){
+                biRisk.setEndDate(quoteRequest.getPrpCmainCI().get("endDate")+" 00:00:00");
+            }
         }
         }
         resultsVo.setCiRiskInfoVo(ciRisk);
         resultsVo.setCiRiskInfoVo(ciRisk);
         resultsVo.setBiRiskInfoVo(biRisk);
         resultsVo.setBiRiskInfoVo(biRisk);
 
 
+        String proposalNoDAA = "";
+        String proposalNoDZA = "";
+
         if (saveResponse != null && saveResponse.getData() != null &&
         if (saveResponse != null && saveResponse.getData() != null &&
                 saveResponse.getData().getCarQuoteTransProposalRspList() != null) {
                 saveResponse.getData().getCarQuoteTransProposalRspList() != null) {
 
 
@@ -496,8 +515,10 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
                 if (proposalNo != null) {
                 if (proposalNo != null) {
                     if (proposalNo.contains("DAA")) {
                     if (proposalNo.contains("DAA")) {
                         resultsVo.setBiPolicyNumber(proposalNo);
                         resultsVo.setBiPolicyNumber(proposalNo);
+                        proposalNoDAA = proposalNo;
                     } else if (proposalNo.contains("DZA")) {
                     } else if (proposalNo.contains("DZA")) {
                         resultsVo.setCiPolicyNumber(proposalNo);
                         resultsVo.setCiPolicyNumber(proposalNo);
+                        proposalNoDZA = proposalNo;
                     }
                     }
                 }
                 }
 
 
@@ -549,6 +570,37 @@ public class RenBaoNewCrawlerRequestImpl implements RenBaoNewCrawlerRequest {
             costs.setVvTax(vvTax.toString());
             costs.setVvTax(vvTax.toString());
             resultsVo.setCosts(costs);
             resultsVo.setCosts(costs);
         }
         }
+
+        // 获取评分
+        if (!proposalNoDAA.isEmpty() || !proposalNoDZA.isEmpty()) {
+            try {
+                Map<String, Object> proposalInfo = requestComponent.queryProposalInfo(
+                        proposalNoDAA, proposalNoDZA, headers, username);
+                if (proposalInfo != null && proposalInfo.containsKey("data")) {
+                    Map<String, Object> data = (Map<String, Object>) proposalInfo.get("data");
+                    if (data != null) {
+                        QuoteResultsVo.ScoreVo scoreVo = resultsVo.getScoreVo();
+                        if (scoreVo == null) {
+                            scoreVo = new QuoteResultsVo.ScoreVo();
+                            resultsVo.setScoreVo(scoreVo);
+                        }
+                        // 获取商业险评分
+                        Map<String, Object> prpCmain = (Map<String, Object>) data.get("PrpCmain");
+                        if (prpCmain != null && prpCmain.get("piccscore") != null) {
+                            scoreVo.setSyLossRation(prpCmain.get("piccscore").toString());
+                        }
+                        // 获取交强险评分
+                        Map<String, Object> prpCmainCI = (Map<String, Object>) data.get("prpCmainCI");
+                        if (prpCmainCI != null && prpCmainCI.get("piccscore") != null) {
+                            scoreVo.setJqLossRation(prpCmainCI.get("piccscore").toString());
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                log.warn("获取人保评分失败: {}", e.getMessage());
+            }
+        }
+
         resultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
         resultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
         return resultsVo;
         return resultsVo;
     }
     }

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 3808 - 0
tenant/insurance/quotation-renbaonew/src/main/renbao.py


+ 33 - 0
tenant/insurance/quotation-renbaonew/src/main/req2.json

@@ -0,0 +1,33 @@
+"newPhone": [
+{
+"mobilephoneNumber": "15934102105",
+"phoneNumber": "",
+"phoneExtensionIntl": "",
+"phoneExtension": "",
+"extensionNumber": "",
+"phoneType": "1",
+"versionNo": "",
+"phoneProperties": "01",
+"isDefault": true,
+"indexNum": 0,
+"phoneSeqNo": 1,
+"delFlag": false,
+"addFlag": false
+}
+],"newPhone": [
+{
+"mobilephoneNumber": "15934102105",
+"phoneNumber": "",
+"phoneExtensionIntl": "",
+"phoneExtension": "",
+"extensionNumber": "",
+"phoneType": "1",
+"versionNo": null,
+"phoneProperties": "01",
+"isDefault": true,
+"indexNum": 0,
+"phoneSeqNo": 1,
+"delFlag": false,
+"addFlag": false
+}
+],

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä