فهرست منبع

fix 大地财险返回C标指数,如发证日期和注册日期不一致且发证日期距报价日期不满1年则标记为过户车计算过户费用

liub 3 هفته پیش
والد
کامیت
706b7ba277

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

@@ -148,6 +148,10 @@ public class DaDiCrawlerQuoteResultVoBuild {
                     .fluentPut("scoreName", "违章等级")
                     .fluentPut("scoreKey", "violationLevel")
                     .fluentPut("score", insurancePlan.getViolationLevel()));
+            scoreJson.add(new JSONObject()
+                    .fluentPut("scoreName", "C标指数")
+                    .fluentPut("scoreKey", "mainCStandardRate")
+                    .fluentPut("score", insurancePlan.getMainCStandardRate()));
             scoreJson.add(new JSONObject()
                     .fluentPut("scoreName", "商业险折扣率")
                     .fluentPut("scoreKey", "cDiscountRate")

+ 39 - 2
tenant/insurance/quotation-dadi/src/main/java/com/jzg/quotation/dadi/utils/DaDiVehicleUtils.java

@@ -71,8 +71,8 @@ public class DaDiVehicleUtils {
         String transferDate = "";
         String transferVehicleType = "";
         String specialCarFlag = "0";
-        boolean transferFlagBi = Boolean.TRUE.equals(carInfo.isTransferBi());
-        boolean transferFlag = Boolean.TRUE.equals(carInfo.isTransfer());
+        boolean transferFlagBi = carInfo.isTransferBi();
+        boolean transferFlag = carInfo.isTransfer();
 
         if (transferFlagBi || transferFlag) {
             chgOwnerFlag = "1";
@@ -85,10 +85,47 @@ public class DaDiVehicleUtils {
             } else {
                 transferVehicleType = "TI";
             }
+        } else if (isAutoTransferVehicle(carInfo)) {
+            // 自动判定过户车:发证日期与注册日期不一致,且发证日期距报价日期不满1年
+            chgOwnerFlag = "1";
+            transferDate = carInfo.getIssueDate();
+            specialCarFlag = "1";
+            transferVehicleType = "TI";
         }
         return new String[]{chgOwnerFlag, transferDate, transferVehicleType, specialCarFlag};
     }
 
+    /**
+     * 自动判定过户车:发证日期与注册日期不一致,且发证日期距报价日期(当前日期)不满1年
+     */
+    private static boolean isAutoTransferVehicle(CarInfoVo carInfo) {
+        LocalDate issueDate = parseLocalDate(carInfo.getIssueDate());
+        LocalDate registerDate = parseLocalDate(carInfo.getRegisterDate());
+        if (issueDate == null || registerDate == null || issueDate.isEqual(registerDate)) {
+            return false;
+        }
+        // 发证日期距报价日期不满1年:发证日期+1年 > 当前日期
+        return issueDate.plusYears(1).isAfter(LocalDate.now());
+    }
+
+    /**
+     * 解析日期字符串,兼容 yyyy-MM-dd / yyyy/M/d 格式
+     */
+    private static LocalDate parseLocalDate(String dateStr) {
+        if (dateStr == null || dateStr.isEmpty()) {
+            return null;
+        }
+        try {
+            return LocalDate.parse(dateStr.replace("-", "/"), DateTimeFormatter.ofPattern("yyyy/M/d"));
+        } catch (Exception e) {
+            try {
+                return LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            } catch (Exception ex) {
+                return null;
+            }
+        }
+    }
+
     /**
      * 计算车辆使用年限和月份
      * 对应 Python calc_use_years()