测试住宿:覆盖跨计划床位时间冲突与并发分配

This commit is contained in:
wangzhibiao committed 2026-09-21 16:14:27 +08:00
1 parent fbfec1a2ec
commit b0917fc36f
5 files changed
+857 -2

No files matched your search

@@ -127,6 +127,7 @@ public class DmsConsistencyHardeningPackageA1Test {
setPrivateField(accommodationService, "trainAccommodationMapper", createMockAccommodationMapper());
setPrivateField(accommodationService, "trainEnrollmentMapper", createMockEnrollmentMapper());
setPrivateField(accommodationService, "trainDormitoryInfoMapper", createMockDormitoryInfoMapper());
setPrivateField(accommodationService, "trainClassPlanMapper", createMockClassPlanMapper());
orchestrator = new AccessAuthorizationOrchestrator(
createMockEnrollmentMapper(),
@@ -756,6 +757,20 @@ public class DmsConsistencyHardeningPackageA1Test {
&& a.getAccommodationStatus() != null && (a.getAccommodationStatus() == 0 || a.getAccommodationStatus() == 1))
.count();
}
if ("countOverlappingActiveBedReservations".equals(name)) {
String dormId = (String) args[0];
String bedNo = (String) args[1];
Long excludeId = (Long) args[4];
if (dormId == null || bedNo == null || bedNo.trim().isEmpty()) return 0;
return (int) accommodationDb.values().stream()
.filter(a -> (excludeId == null || !excludeId.equals(a.getAccommodationId()))
&& dormId.equals(a.getDormId()) && bedNo.equals(a.getBedNo())
&& a.getAccommodationStatus() != null && (a.getAccommodationStatus() == 0 || a.getAccommodationStatus() == 1))
.count();
}
if ("countUnresolvedActiveBedReservations".equals(name)) {
return 0;
}
if ("countActiveByDormId".equals(name)) {
String dormId = (String) args[0];
return (int) accommodationDb.values().stream()
@@ -952,7 +967,7 @@ public class DmsConsistencyHardeningPackageA1Test {
getClass().getClassLoader(),
new Class<?>[]{TrainDormitoryInfoMapper.class},
(proxy, method, args) -> {
if ("selectTrainDormitoryInfoByDormId".equals(method.getName())) {
if ("selectTrainDormitoryInfoByDormId".equals(method.getName()) || "selectTrainDormitoryInfoForUpdate".equals(method.getName())) {
String dormId = (String) args[0];
TrainDormitoryInfo d = new TrainDormitoryInfo();
d.setDormId(dormId);