haogh 8 mēneši atpakaļ
vecāks
revīzija
d16073c6ab

+ 16 - 2
src/main/java/com/qmth/exam/reserve/service/impl/StudentApplyServiceImpl.java

@@ -39,6 +39,7 @@ import com.qmth.exam.reserve.template.execute.StudentApplyNoFinishExportService;
 import com.qmth.exam.reserve.util.DateUtil;
 import com.qmth.exam.reserve.util.JsonHelper;
 import com.qmth.exam.reserve.util.PageUtil;
+import com.qmth.exam.reserve.util.UnionUtil;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.time.DateUtils;
@@ -530,13 +531,16 @@ public class StudentApplyServiceImpl extends ServiceImpl<StudentApplyDao, Studen
 
 
     private Map<Long, Map<String, TimePeriodEntity>> getTimePeriodExamSiteCache(Long taskId) {
+        //学校管理员设置的所有预约时段
+        List<TimePeriodExamSiteBean> timePeriodList = timePeriodService.listTimePeriodByTask(taskId);
+
         Map<Long, Map<String, TimePeriodEntity>> timePeriodExamSiteCache = new HashMap<>();
         List<TimePeriodExamSiteBean> timePeriodExamSiteBeans = timePeriodService.listTimePeriodByExamSiteId(taskId, null);
 
-        // 过滤开启的预约时段
+        /*// 过滤开启的预约时段
         timePeriodExamSiteBeans = timePeriodExamSiteBeans.stream()
                 .filter(TimePeriodExamSiteBean::getEnable)
-                .collect(Collectors.toList());
+                .collect(Collectors.toList());*/
 
         // 按照考点分组
         Map<Long, List<TimePeriodExamSiteBean>> timePeriodMap = timePeriodExamSiteBeans.stream()
@@ -546,11 +550,21 @@ public class StudentApplyServiceImpl extends ServiceImpl<StudentApplyDao, Studen
         for (Map.Entry<Long, List<TimePeriodExamSiteBean>> entry : entries) {
             Long examSiteId = entry.getKey();
             List<TimePeriodExamSiteBean> timePeriodExamSiteBeansList = entry.getValue();
+
+            //取并集
+            timePeriodExamSiteBeansList = UnionUtil.unionByAttribute(timePeriodExamSiteBeansList, timePeriodList, TimePeriodExamSiteBean::getTimePeriodId);
+
+            // 过滤开启的预约时段
+            timePeriodExamSiteBeansList = timePeriodExamSiteBeansList.stream()
+                    .filter(TimePeriodExamSiteBean::getEnable)
+                    .collect(Collectors.toList());
+
             // 时段转换为Map key: start_time + end_time
             Map<String, TimePeriodEntity> map = getStringTimePeriodEntityMap(timePeriodExamSiteBeansList);
 
             timePeriodExamSiteCache.put(examSiteId, map);
         }
+
         return timePeriodExamSiteCache;
     }