|
@@ -637,27 +637,37 @@ public class PtlSchemeServiceImpl extends ServiceImpl<PtlSchemeMapper, PtlScheme
|
|
|
driving.setCoverage(setting.getCoverage() != null ? setting.getCoverage().toString() : null);
|
|
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 合并
|
|
// 遍历 schemeInsuranceInfo,把 drivings 合并
|
|
|
|
|
+ // 自选方案(schemeType=2)按 settingList 里的座位数过滤驾意险;settingList 为空表示无座位数限制,不过滤
|
|
|
for (SchemeResultVo.SchemeVo insuranceScheme : schemeInsuranceInfo) {
|
|
for (SchemeResultVo.SchemeVo insuranceScheme : schemeInsuranceInfo) {
|
|
|
for (SchemeResultVo.SchemeInfoVo info : insuranceScheme.getInfos()) {
|
|
for (SchemeResultVo.SchemeInfoVo info : insuranceScheme.getInfos()) {
|
|
|
List<SchemeResultVo.Driving> drivings = drivingMap.get(info.getId());
|
|
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
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|