|
@@ -343,6 +343,37 @@ public class TimePeriodExamRoomServiceImpl extends ServiceImpl<TimePeriodExamRoo
|
|
|
resultList.add(item.getTimePeriodId());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 判断考场+时段是否在库中已经存在
|
|
|
+ if (CollectionUtils.isNotEmpty(toBeSaveList)) {
|
|
|
+ // 提取所有要检查的examRoomId和timePeriodId组合
|
|
|
+ List<Long> examRoomIds = toBeSaveList.stream()
|
|
|
+ .map(TimePeriodExamRoomEntity::getExamRoomId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<Long> timePeriodIds = toBeSaveList.stream()
|
|
|
+ .map(TimePeriodExamRoomEntity::getTimePeriodId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 批量查询已存在的记录
|
|
|
+ List<TimePeriodExamRoomEntity> existingRecords = getBaseMapper().listByExamRoomIdsAndTimePeriodIds(examRoomIds, timePeriodIds);
|
|
|
+
|
|
|
+ // 构建已存在的记录集合,用于快速查找
|
|
|
+ Set<String> existingKeySet = existingRecords.stream()
|
|
|
+ .map(e -> e.getExamRoomId() + "-" + e.getTimePeriodId())
|
|
|
+ .collect(Collectors.toSet());
|
|
|
+
|
|
|
+ // 检查是否有重复的记录
|
|
|
+ for (TimePeriodExamRoomEntity item : toBeSaveList) {
|
|
|
+ String key = item.getExamRoomId() + "-" + item.getTimePeriodId();
|
|
|
+ if (existingKeySet.contains(key)) {
|
|
|
+ log.error("[考场排班设置]保存失败,该时间段已存在: examRoomId={}, timePeriodId={}", item.getExamRoomId(), item.getTimePeriodId());
|
|
|
+ throw new StatusException("保存失败,该时间段已存在");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
canEdit(resultList, curApplyTask);
|
|
|
|
|
|
saveOrUpdateBatch(timePeriodExamRoomEntityList);
|