Browse Source

增加获取周次列表接口

dzx 6 months ago
parent
commit
627944fa26

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

@@ -21,12 +21,14 @@ import com.xjrsoft.module.courseTable.service.ICourseTableService;
 import com.xjrsoft.module.schedule.dto.CourseTableAdjustDto;
 import com.xjrsoft.module.schedule.dto.CourseTableDto;
 import com.xjrsoft.module.schedule.dto.CourseTablePreCheckDto;
+import com.xjrsoft.module.schedule.dto.ScheduleWeekDto;
 import com.xjrsoft.module.schedule.dto.ScheduleWeekExportQueryDto;
 import com.xjrsoft.module.schedule.entity.CourseReceiveMsg;
 import com.xjrsoft.module.schedule.service.ICourseReceiveMsgService;
 import com.xjrsoft.module.schedule.util.ScheduleUtil;
 import com.xjrsoft.module.schedule.vo.CourseListVo;
 import com.xjrsoft.module.schedule.vo.CourseTableVo;
+import com.xjrsoft.module.schedule.vo.ScheduleWeekVo;
 import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
 import com.xjrsoft.module.student.service.IBaseStudentSchoolRollService;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
@@ -51,6 +53,7 @@ import java.time.Duration;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -308,4 +311,36 @@ public class ScheduleController {
             return RT.error(e.getMessage());
         }
     }
+
+    @GetMapping(value = "/week-list")
+    @ApiOperation(value="获取周次列表")
+    @SaCheckPermission("room:detail")
+    public RT<List<ScheduleWeekVo>> weekList(@Valid ScheduleWeekDto dto){
+        List<BaseSemester> semesterList = semesterService.list(new QueryWrapper<BaseSemester>().lambda().orderByDesc(BaseSemester::getStartDate));
+        BaseSemester baseSemester = semesterList.get(0);
+        if(dto.getSemesterId() != null){
+            baseSemester = semesterService.getById(dto.getSemesterId());
+        }
+        LocalDateTime startDateTime = LocalDateTime.ofInstant(baseSemester.getStartDate().toInstant(), ZoneId.systemDefault());
+        LocalDateTime endDateTime = LocalDateTime.ofInstant(baseSemester.getEndDate().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 * 6).withHour(0).withMinute(0).withSecond(0).withNano(0);
+            LocalDateTime endDate = startDateTime.plusDays((i + 1) * 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);
+    }
 }

+ 24 - 0
src/main/java/com/xjrsoft/module/schedule/dto/ScheduleWeekDto.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.schedule.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+
+/**
+* @title: 寝室
+* @Author dzx
+* @Date: 2023-12-27
+* @Version 1.0
+*/
+@Data
+public class ScheduleWeekDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("学期管理")
+    private Long semesterId;
+
+}

+ 2 - 2
src/main/java/com/xjrsoft/module/schedule/vo/CourseTableVo.java

@@ -36,9 +36,9 @@ public class CourseTableVo {
     @ApiModelProperty("第几周")
     private String week;
 
-    @ApiModelProperty("第几周")
+    @ApiModelProperty("开始时间")
     private LocalDate startDate;
 
-    @ApiModelProperty("第几周")
+    @ApiModelProperty("结束时间")
     private LocalDate endDate;
 }

+ 24 - 0
src/main/java/com/xjrsoft/module/schedule/vo/ScheduleWeekVo.java

@@ -0,0 +1,24 @@
+package com.xjrsoft.module.schedule.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+/**
+ * 周课表导出
+ */
+@Data
+public class ScheduleWeekVo {
+    @ApiModelProperty("周次(数字)")
+    private Integer week;
+
+    @ApiModelProperty("周次-中文(第几周)")
+    private String weekCn;
+
+    @ApiModelProperty("开始时间")
+    private LocalDate startDate;
+
+    @ApiModelProperty("结束时间")
+    private LocalDate endDate;
+}

+ 1 - 1
src/main/resources/application.yml

@@ -5,7 +5,7 @@ server:
 spring:
   # 环 io境 dev|pre|prod
   profiles:
-    active: pre
+    active: dev
   # jackson时间格式化
   jackson:
     time-zone: GMT+8