|
|
@@ -45,11 +45,9 @@ import org.springframework.web.bind.annotation.*;
|
|
|
import javax.validation.Valid;
|
|
|
import java.io.ByteArrayOutputStream;
|
|
|
import java.io.IOException;
|
|
|
-import java.time.DayOfWeek;
|
|
|
-import java.time.Duration;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.time.ZoneId;
|
|
|
+import java.time.*;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
+import java.time.temporal.TemporalAdjusters;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
|
@@ -215,7 +213,6 @@ public class ScheduleController {
|
|
|
return RT.ok("ok");
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@GetMapping(value = "/getCourseNames")
|
|
|
@ApiOperation(value = "查询课程接口")
|
|
|
@SaCheckPermission("schedule:getcoursenames")
|
|
|
@@ -249,7 +246,6 @@ public class ScheduleController {
|
|
|
return RT.ok(result);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@GetMapping(value = "/getCourseInfo")
|
|
|
@ApiOperation(value = "根据课程id获取课程相关信息")
|
|
|
@SaCheckPermission("schedule:getcourseinfo")
|
|
|
@@ -302,9 +298,6 @@ public class ScheduleController {
|
|
|
return RT.ok(resultVo);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 顶课预检查
|
|
|
*
|
|
|
@@ -412,7 +405,6 @@ public class ScheduleController {
|
|
|
@SaCheckPermission("schedule:weeklist")
|
|
|
@XjrLog(value = "获取周次列表")
|
|
|
public RT<List<ScheduleWeekVo>> weekList(@Valid ScheduleWeekDto dto) {
|
|
|
-
|
|
|
BaseSemester baseSemester;
|
|
|
if (dto.getSemesterId() != null) {
|
|
|
baseSemester = semesterService.getById(dto.getSemesterId());
|
|
|
@@ -422,27 +414,66 @@ public class ScheduleController {
|
|
|
return RT.ok(new ArrayList<>());
|
|
|
}
|
|
|
}
|
|
|
- LocalDateTime startDateTime = LocalDateTime.ofInstant(baseSemester.getTeachingStart().toInstant(), ZoneId.systemDefault());
|
|
|
- LocalDateTime endDateTime = LocalDateTime.ofInstant(baseSemester.getTeachingEnd().toInstant(), ZoneId.systemDefault());
|
|
|
- Duration between = Duration.between(startDateTime, endDateTime);
|
|
|
- long days = between.toDays();
|
|
|
- int weeks = (int) Math.ceil((double) days / 7);
|
|
|
- List<ScheduleWeekVo> result = new ArrayList<>();
|
|
|
- for (int i = 0; i < weeks; i++) {
|
|
|
- LocalDateTime startDate = startDateTime.plusDays(i * 7L).withHour(0).withMinute(0).withSecond(0).withNano(0);
|
|
|
- LocalDateTime endDate = startDate.plusDays(6).withHour(23).withMinute(59).withSecond(59).withNano(9999);
|
|
|
- int week = i + 1;
|
|
|
- result.add(
|
|
|
- new ScheduleWeekVo() {{
|
|
|
- setWeek(week);
|
|
|
- setWeekCn("第" + week + "周");
|
|
|
- setStartDate(startDate.toLocalDate());
|
|
|
- setEndDate(endDate.toLocalDate());
|
|
|
- }}
|
|
|
- );
|
|
|
+ LocalDate startDate = LocalDate.ofInstant(baseSemester.getTeachingStart().toInstant(), ZoneId.systemDefault());
|
|
|
+ LocalDate endDate = LocalDate.ofInstant(baseSemester.getTeachingEnd().toInstant(), ZoneId.systemDefault());
|
|
|
+ List<ScheduleWeekVo> weeks = calculateSemesterWeeks(startDate, endDate);
|
|
|
+
|
|
|
+ return RT.ok(weeks);
|
|
|
+// Duration between = Duration.between(startDateTime, endDateTime);
|
|
|
+// long days = between.toDays();
|
|
|
+// int weeks = (int) Math.ceil((double) days / 7);
|
|
|
+// List<ScheduleWeekVo> result = new ArrayList<>();
|
|
|
+// for (int i = 0; i < weeks; i++) {
|
|
|
+// LocalDateTime startDate = startDateTime.plusDays(i * 7L).withHour(0).withMinute(0).withSecond(0).withNano(0);
|
|
|
+// LocalDateTime endDate = startDate.plusDays(6).withHour(23).withMinute(59).withSecond(59).withNano(9999);
|
|
|
+// int week = i + 1;
|
|
|
+// result.add(
|
|
|
+// new ScheduleWeekVo() {{
|
|
|
+// setWeek(week);
|
|
|
+// setWeekCn("第" + week + "周");
|
|
|
+// setStartDate(startDate.toLocalDate());
|
|
|
+// setEndDate(endDate.toLocalDate());
|
|
|
+// }}
|
|
|
+// );
|
|
|
+// }
|
|
|
+//
|
|
|
+// return RT.ok(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算学期的自然周列表
|
|
|
+ * @param semesterStart 学期开始日期
|
|
|
+ * @param semesterEnd 学期结束日期
|
|
|
+ * @return 周次信息列表
|
|
|
+ */
|
|
|
+ private List<ScheduleWeekVo> calculateSemesterWeeks(LocalDate semesterStart, LocalDate semesterEnd) {
|
|
|
+ List<ScheduleWeekVo> weekList = new ArrayList<>();
|
|
|
+
|
|
|
+ // 调整开始日期到本周星期一
|
|
|
+ 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++) {
|
|
|
+ LocalDate weekStart = adjustedStart.plusWeeks(i);
|
|
|
+ LocalDate weekEnd = weekStart.plusDays(6); // 一周结束是星期日
|
|
|
+
|
|
|
+ ScheduleWeekVo weekVo = new ScheduleWeekVo();
|
|
|
+ weekVo.setWeek(i + 1); // 周次从1开始
|
|
|
+ weekVo.setWeekCn("第" + (i + 1) + "周");
|
|
|
+ weekVo.setStartDate(weekStart);
|
|
|
+ weekVo.setEndDate(weekEnd);
|
|
|
+
|
|
|
+ weekList.add(weekVo);
|
|
|
}
|
|
|
|
|
|
- return RT.ok(result);
|
|
|
+ return weekList;
|
|
|
}
|
|
|
|
|
|
@GetMapping(value = "/class-list")
|