Prechádzať zdrojové kódy

修改获取当前周

snihwxf 2 mesiacov pred
rodič
commit
9f4aeb22cb

+ 1 - 1
src/main/java/com/xjrsoft/module/courseTable/service/ICourseTableService.java

@@ -67,5 +67,5 @@ public interface ICourseTableService extends IService<CourseTable> {
 
     CurrentWeekVo getCurrentWeek(CourseTableDto dto);
 
-
+    CurrentWeekVo getCurrentWeekNew(CourseTableDto dto);
 }

+ 39 - 0
src/main/java/com/xjrsoft/module/courseTable/service/impl/CourseTableServiceImpl.java

@@ -1524,4 +1524,43 @@ public class CourseTableServiceImpl extends ServiceImpl<CourseTableMapper, Cours
         return null;
     }
 
+    @Override
+    public CurrentWeekVo getCurrentWeekNew(CourseTableDto dto) {
+        BaseSemester baseSemester = baseSemesterService.getCurrentSemester();
+        if (baseSemester == null) {
+            return null;
+        }
+        LocalDateTime now = LocalDateTime.now();
+        if (dto.getScheduleDate() != null) {
+            now = dto.getScheduleDate();
+        }
+
+        LocalDate semesterStart = LocalDate.ofInstant(baseSemester.getTeachingStart().toInstant(), ZoneId.systemDefault());
+        LocalDate semesterEnd = LocalDate.ofInstant(baseSemester.getTeachingEnd().toInstant(), ZoneId.systemDefault());
+
+        // 调整开始日期到本周星期一
+        LocalDate adjustedStart = semesterStart.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
+        // 调整结束日期到本周星期日
+        LocalDate adjustedEnd = semesterEnd.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
+
+        // 计算总周数
+        long totalDays = java.time.temporal.ChronoUnit.DAYS.between(adjustedStart, adjustedEnd) + 1;
+        int totalWeeks = (int) (totalDays / 7);
+
+        // 生成每一周的信息
+        for (int i = 0; i < totalWeeks; i++) {
+            LocalDateTime startDate = adjustedStart.plusWeeks(i).atStartOfDay();//.atTime(0, 0, 0);
+            LocalDateTime endDate = startDate.plusDays(6).withHour(23).withMinute(59).withSecond(59).withNano(9999);
+
+            if (now.isAfter(startDate) && now.isBefore(endDate)) {
+                CurrentWeekVo currentWeekVo = new CurrentWeekVo();
+                currentWeekVo.setWeek(i + 1);
+                currentWeekVo.setStartDate(startDate.toLocalDate());
+                currentWeekVo.setEndDate(endDate.toLocalDate());
+                return currentWeekVo;
+            }
+        }
+        return null;
+    }
+
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/schedule/controller/ScheduleController.java

@@ -158,7 +158,7 @@ public class ScheduleController {
     @SaCheckPermission("schedule:currentweek")
     @XjrLog(value = "获取当前周次", saveResponseData = true)
     public RT<Integer> currentWeek(CourseTableDto dto) {
-        CurrentWeekVo currentWeek = courseTableService.getCurrentWeek(dto);
+        CurrentWeekVo currentWeek = courseTableService.getCurrentWeekNew(dto);
         if(currentWeek != null){
             return RT.ok(currentWeek.getWeek());
         }

+ 1 - 1
src/test/java/com/xjrsoft/module/system/controller/LoginControllerTest.java

@@ -45,7 +45,7 @@ class LoginControllerTest {
 
     @Test
     void testToken() {
-        User user = userService.getById("1000000000000000000");
+        User user = userService.getById("14954809128646");
         LoginVo pc = loginService.getLoginInfo(user, "PC");
         System.out.println(pc);
     }