From 81a79cdc6aff1d797899680134372f24d44f24eb Mon Sep 17 00:00:00 2001 From: "hhb@hotmail.com" Date: Tue, 21 Jan 2025 12:29:28 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/service/impl/TeacherServiceImpl.java | 15 +++++++-------- .../repository/LessonRecordRepository.java | 8 ++++---- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/main/java/cn/teammodel/controller/admin/service/impl/TeacherServiceImpl.java b/src/main/java/cn/teammodel/controller/admin/service/impl/TeacherServiceImpl.java index c931247..406e44b 100644 --- a/src/main/java/cn/teammodel/controller/admin/service/impl/TeacherServiceImpl.java +++ b/src/main/java/cn/teammodel/controller/admin/service/impl/TeacherServiceImpl.java @@ -365,7 +365,7 @@ public class TeacherServiceImpl implements TeacherService { @Override public Map getTeacherByRecord(TeacherDto teacherDto) { - final int SLICE_SIZE = 100; + final int SLICE_SIZE = 10000; // 获取学期起止时间 List semesters = schoolRepository.findSemestersById(teacherDto.getCode(), teacherDto.getPeriodId()); SchoolDateUtil.semesterModel semesterModel = SchoolDateUtil.getSemesterByNow(semesters, LocalDate.now()); @@ -385,14 +385,14 @@ public class TeacherServiceImpl implements TeacherService { CosmosPageRequest pageRequest = new CosmosPageRequest(0, SLICE_SIZE, null); Slice slice; Map countByWeek = SchoolDateUtil.createEmptyWeekMap(totalWeek); - + String lessonRecordKey = String.format(PK.PK_LESSON_RECORD, teacherDto.getCode()); do { if(StringUtils.isNotEmpty(teacherDto.getGrade())) { - slice = lessonRecordRepository.findAllByGrade(String.format(PK.PK_LESSON_RECORD, teacherDto.getCode()), teacherDto.getGrade(),teacherDto.getSubjectId(),teacherDto.getPeriodId(),pageRequest); + slice = lessonRecordRepository.findAllByGrade(lessonRecordKey, teacherDto.getGrade(),teacherDto.getSubjectId(),teacherDto.getPeriodId(),pageRequest); } else if(StringUtils.isNotEmpty(teacherDto.getTmdId())) { - slice = lessonRecordRepository.findAllByAcademicYearId(String.format(PK.PK_LESSON_RECORD, teacherDto.getCode()), teacherDto.getTmdId(),teacherDto.getSubjectId(),teacherDto.getPeriodId(),pageRequest); + slice = lessonRecordRepository.findAllByAcademicYearId(lessonRecordKey, teacherDto.getTmdId(),teacherDto.getSubjectId(),teacherDto.getPeriodId(),pageRequest); } else { - slice = lessonRecordRepository.findAll(String.format(PK.PK_LESSON_RECORD, teacherDto.getCode()), teacherDto.getSubjectId(),teacherDto.getPeriodId(), pageRequest); + slice = lessonRecordRepository.findAll(lessonRecordKey, teacherDto.getSubjectId(),teacherDto.getPeriodId(), pageRequest); } List content = slice.getContent(); if (ObjectUtils.isEmpty(content)) { @@ -401,15 +401,14 @@ public class TeacherServiceImpl implements TeacherService { // 分批次计算 for (LessonRecord item : content) { - // 处理每周的课程数 long weekNum = calculateWeekNum(startDatetime, endDatetime, item.getStartTime()); - countByWeek.put(weekNum, countByWeek.getOrDefault(weekNum, 0) + 1); + countByWeek.merge(weekNum, 1, Integer::sum); // 使用 merge 方法简化代码 } if (slice.hasNext()) { pageRequest = (CosmosPageRequest) slice.nextPageable(); } - } while (slice.hasNext()); + } while (slice.hasNext() && !Thread.currentThread().isInterrupted()); countByWeek.entrySet().removeIf(entry -> entry.getKey() == -1); return countByWeek; } diff --git a/src/main/java/cn/teammodel/repository/LessonRecordRepository.java b/src/main/java/cn/teammodel/repository/LessonRecordRepository.java index b4bef45..f48e7cd 100644 --- a/src/main/java/cn/teammodel/repository/LessonRecordRepository.java +++ b/src/main/java/cn/teammodel/repository/LessonRecordRepository.java @@ -12,7 +12,7 @@ import java.util.List; @Repository public interface LessonRecordRepository extends CosmosRepository { - @Query("select * from LessonRecord as c where " + + @Query("select c.id from LessonRecord as c where " + "c.code = @code and " + "(IS_NULL(@startTime) or c.startTime >= @startTime) and " + "(IS_NULL(@endTime) or c.startTime <= @endTime) and "+ @@ -24,13 +24,13 @@ public interface LessonRecordRepository extends CosmosRepository getLessonsByConditions(String code, Long startTime, Long endTime,String subjectId,String tmdId,String grade,String periodId); - @Query("select * from LessonRecord as c where c.code = @code and c.expire<=0 and c.status<>404 and c.tmdid = @tmdId and c.periodId = @periodId and" + + @Query("select c.startTime from LessonRecord as c where c.code = @code and c.expire<=0 and c.status<>404 and c.tmdid = @tmdId and c.periodId = @periodId and" + "(IS_NULL(@subjectId) or c.subjectId = @subjectId) ") Slice findAllByAcademicYearId(String code, String tmdId,String subjectId,String periodId,Pageable pageable); - @Query("select * from LessonRecord as c where c.code = @code and c.expire<=0 and c.status<>404 and array_contains(c.grade,@grade) and c.periodId = @periodId and" + + @Query("select c.startTime from LessonRecord as c where c.code = @code and c.expire<=0 and c.status<>404 and array_contains(c.grade,@grade) and c.periodId = @periodId and" + "(IS_NULL(@subjectId) or c.subjectId = @subjectId) ") Slice findAllByGrade(String code, String grade,String subjectId,String periodId,Pageable pageable); - @Query("select * from LessonRecord as c where c.code = @code and c.expire<=0 and c.status<>404 and c.periodId = @periodId and" + + @Query("select c.startTime from LessonRecord as c where c.code = @code and c.expire<=0 and c.status<>404 and c.periodId = @periodId and" + "(IS_NULL(@subjectId) or c.subjectId = @subjectId) ") Slice findAll(String code,String subjectId,String periodId,Pageable pageable);