|
@@ -170,14 +170,45 @@ public class ExamRoomServiceImpl extends ServiceImpl<ExamRoomDao, ExamRoomEntity
|
|
|
oldCapacityMap.put(periodId, capacity);
|
|
|
}
|
|
|
|
|
|
+ Set<Long> periodIds = timePeriodExamSiteBeans.stream()
|
|
|
+ .map(TimePeriodExamSiteBean::getTimePeriodId)
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ //考场对应的时段Map
|
|
|
+ Map<Long, TimePeriodExamRoomEntity> timePeriodExamRoomMap = new HashMap<>();
|
|
|
+ if (!periodIds.isEmpty()) {
|
|
|
+ List<TimePeriodExamRoomEntity> timePeriodExamRoomList = timePeriodExamRoomService.listByExamRoomAndPeriodIds(beforeUpdateRoom.getId(), periodIds);
|
|
|
+ timePeriodExamRoomMap = timePeriodExamRoomList.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ TimePeriodExamRoomEntity::getTimePeriodId,
|
|
|
+ Function.identity(),
|
|
|
+ (existing, replacement) -> existing
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
for (TimePeriodExamSiteBean bean : timePeriodExamSiteBeans) {
|
|
|
+ //判断考场+时段的是否已经关闭
|
|
|
+ TimePeriodExamRoomEntity timePeriodExamRoom = timePeriodExamRoomMap.get(bean.getTimePeriodId());
|
|
|
+ //已关闭的考场时段不处理
|
|
|
+ if (timePeriodExamRoom != null && !timePeriodExamRoom.getEnable()) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
Long periodId = bean.getTimePeriodId();
|
|
|
//剩余的容量
|
|
|
int availableCount = cacheService.getApplyAvailableCount(beforeUpdateRoom.getExamSiteId(), periodId);
|
|
|
//修改前的容量
|
|
|
int oldCount = oldCapacityMap.getOrDefault(periodId, 0);
|
|
|
+ if (oldCount <= 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ log.warn("[考场容量检测]periodId:{}, availableCount:{}, oldCount:{}", periodId, availableCount, oldCount);
|
|
|
+
|
|
|
//已预约的容量
|
|
|
int haveApplyCount = oldCount - availableCount;
|
|
|
+ if (haveApplyCount <= 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
//即将更新之后的剩余容量
|
|
|
int remainCount = oldCount - decreaseCapacity;
|
|
|
if (haveApplyCount > remainCount) {
|