فهرست منبع

处理驾意险自定义无法按座位配置驾意险导致有些车无法算价按照座位数筛选一遍的问题

lixiaolong 2 ماه پیش
والد
کامیت
fae8705d2d
1فایلهای تغییر یافته به همراه22 افزوده شده و 12 حذف شده
  1. 22 12
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

+ 22 - 12
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlSchemeServiceImpl.java

@@ -637,27 +637,37 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
                         driving.setCoverage(setting.getCoverage() != null ? setting.getCoverage().toString() : null);
                     }
                 });
-                // 根据座位数范围过滤驾意险:只保留座位数在 minSeatCount~maxSeatCount 范围内的
-                drivings.removeIf(driving -> {
-                    if (driving.getMinSeatCount() != null && seats < driving.getMinSeatCount()) {
-                        return true;
-                    }
-                    if (driving.getMaxSeatCount() != null && seats > driving.getMaxSeatCount()) {
-                        return true;
-                    }
-                    return false;
-                });
             });
         }
 
+        // 解析座位数,备用
+        Integer parsedSeats = StrUtil.isNotBlank(seatCount) ? Integer.parseInt(seatCount) : null;
 
         // 遍历 schemeInsuranceInfo,把 drivings 合并
+        // 自选方案(schemeType=2)按 settingList 里的座位数过滤驾意险;settingList 为空表示无座位数限制,不过滤
         for (SchemeResultVo.SchemeVo insuranceScheme : schemeInsuranceInfo) {
             for (SchemeResultVo.SchemeInfoVo info : insuranceScheme.getInfos()) {
                 List<SchemeResultVo.Driving> drivings = drivingMap.get(info.getId());
-                if (drivings != null) {
-                    info.getDrivings().addAll(drivings); // 合并 drivings
+                if (drivings == null) {
+                    continue;
+                }
+                List<SchemeResultVo.Driving> toAdd = drivings;
+                // 用 SchemeInfoVo.schemeType 判断自选方案(来自 SQL 映射,初始就有值;SchemeVo.schemeType 在合并 drivings 之后才赋值)
+                if ("2".equals(info.getSchemeType()) && parsedSeats != null) {
+                    int seats = parsedSeats;
+                    toAdd = drivings.stream()
+                            .filter(driving -> {
+                                // settingList 为空视为没有座位数限制,不过滤
+                                List<jyxSetting> settings = driving.getSettingList();
+                                if (settings == null || settings.isEmpty()) {
+                                    return true;
+                                }
+                                // settingList 里能找到匹配座位数则保留,否则过滤
+                                return settings.stream().anyMatch(s -> s.getSeats() == seats);
+                            })
+                            .collect(Collectors.toList());
                 }
+                info.getDrivings().addAll(toAdd); // 合并 drivings
             }
         }