supports = ssdksqMapper.selectLessonSupports(ids);
+ if (supports != null) {
+ for (AdjustableLessonVO.ChildRow row : supports) {
+ AdjustableLessonVO lesson = byId.get(row.getSskcbbh());
+ if (lesson == null || StringUtils.isEmpty(row.getBztgmxbh()) || row.getSl() == null) {
+ continue;
+ }
+ AdjustSupportDTO dto = new AdjustSupportDTO();
+ dto.setBztgmxbh(row.getBztgmxbh());
+ dto.setSl(row.getSl());
+ dto.setBz(row.getBz());
+ lesson.getSupportList().add(dto);
+ }
+ }
+ for (AdjustableLessonVO lesson : lessons) {
+ if (lesson.getRoomList() != null && !lesson.getRoomList().isEmpty()) {
+ if (StringUtils.isEmpty(lesson.getXjsbh())) {
+ lesson.setXjsbh(lesson.getRoomList().get(0).getJsbh());
+ }
+ if (StringUtils.isEmpty(lesson.getYjsbh())) {
+ lesson.setYjsbh(lesson.getRoomList().get(0).getJsbh());
+ }
+ if (StringUtils.isEmpty(lesson.getJsbh())) {
+ lesson.setJsbh(lesson.getRoomList().get(0).getJsbh());
+ }
+ } else if (StringUtils.isNotEmpty(lesson.getJsbh())) {
+ AdjustRoomDTO dto = new AdjustRoomDTO();
+ dto.setJsbh(lesson.getJsbh());
+ lesson.getRoomList().add(dto);
+ }
+ }
+ }
+
/**
* 教研室审批调课申请。
*
diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/KCBServiceImpl.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/KCBServiceImpl.java
index af08e13b1..1ad5c1bb9 100644
--- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/KCBServiceImpl.java
+++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/KCBServiceImpl.java
@@ -9,11 +9,14 @@ import com.roomroot.jwgl.mapper.KCBMapper;
import com.roomroot.jwgl.mapper.KcbTimetableMapper;
import com.roomroot.jwgl.mapper.SystemInitializationMapper;
import com.roomroot.jwgl.service.KCBService;
+import com.roomroot.jwgl.unit.BusinessException;
import com.roomroot.jwgl.unit.PageQuery;
import com.roomroot.jwgl.unit.PageResult;
import com.roomroot.jwgl.utils.UuidUtil;
+import com.roomroot.jwgl.utils.BasicManagementConstants;
import com.roomroot.jwgl.utils.JwglRoleHelper;
import com.roomroot.jwgl.vo.kcb.ClassTimetableVO;
+import com.roomroot.jwgl.vo.kcb.DailyWeeklyTimetableRangeVO;
import com.roomroot.jwgl.vo.kcb.DailyWeeklyTimetableVO;
import com.roomroot.jwgl.vo.kcb.SemesterGradeExportVO;
import com.roomroot.jwgl.vo.systeminitialization.SemesterInitializationVO;
@@ -25,6 +28,7 @@ import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
import java.util.List;
/**
@@ -85,20 +89,19 @@ public class KCBServiceImpl implements KCBService {
}
@Override
- public List listToday(TimetableQuery cond) {
- TimetableQuery filter = prepareFilter(cond);
- String today = LocalDate.now().format(DATE_FORMAT);
- return kcbTimetableMapper.selectLessonTimetable(filter, today, today);
+ public DailyWeeklyTimetableRangeVO listToday(String rq, Integer offset) {
+ int dayOffset = offset == null ? 0 : offset;
+ LocalDate day = parseViewDate(rq).plusDays(dayOffset);
+ return buildRangeResult(day, day, day);
}
@Override
- public List listWeek(TimetableQuery cond) {
- TimetableQuery filter = prepareFilter(cond);
- LocalDate today = LocalDate.now();
- LocalDate monday = today.with(DayOfWeek.MONDAY);
- LocalDate sunday = today.with(DayOfWeek.SUNDAY);
- return kcbTimetableMapper.selectLessonTimetable(filter,
- monday.format(DATE_FORMAT), sunday.format(DATE_FORMAT));
+ public DailyWeeklyTimetableRangeVO listWeek(String rq, Integer offset) {
+ int weekOffset = offset == null ? 0 : offset;
+ LocalDate day = parseViewDate(rq).plusWeeks(weekOffset);
+ LocalDate monday = day.with(DayOfWeek.MONDAY);
+ LocalDate sunday = day.with(DayOfWeek.SUNDAY);
+ return buildRangeResult(monday, monday, sunday);
}
@Override
@@ -136,6 +139,27 @@ public class KCBServiceImpl implements KCBService {
util.exportExcel(response, list, "班次课程列表");
}
+ private LocalDate parseViewDate(String rq) {
+ if (StringUtils.isEmpty(rq)) {
+ return LocalDate.now();
+ }
+ try {
+ return LocalDate.parse(rq.trim(), DATE_FORMAT);
+ } catch (DateTimeParseException e) {
+ throw new BusinessException(BasicManagementConstants.BAD_REQUEST, "日期格式应为 yyyy-MM-dd");
+ }
+ }
+
+ private DailyWeeklyTimetableRangeVO buildRangeResult(LocalDate viewDate, LocalDate start, LocalDate end) {
+ DailyWeeklyTimetableRangeVO result = new DailyWeeklyTimetableRangeVO();
+ result.setRq(viewDate.format(DATE_FORMAT));
+ result.setStartDate(start.format(DATE_FORMAT));
+ result.setEndDate(end.format(DATE_FORMAT));
+ result.setList(kcbTimetableMapper.selectLessonTimetable(
+ null, result.getStartDate(), result.getEndDate()));
+ return result;
+ }
+
/**
* 未传年度时按当前学期填充;队别班次名称去空白。
* 学员强制只看本人所在学员队课表。
diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/vo/courserunning/AdjustableLessonVO.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/vo/courserunning/AdjustableLessonVO.java
index 3ab6b942e..6ff86926d 100644
--- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/vo/courserunning/AdjustableLessonVO.java
+++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/vo/courserunning/AdjustableLessonVO.java
@@ -1,52 +1,114 @@
package com.roomroot.jwgl.vo.courserunning;
+import com.roomroot.jwgl.dto.courserunning.AdjustRoomDTO;
+import com.roomroot.jwgl.dto.courserunning.AdjustSupportDTO;
+import com.roomroot.jwgl.dto.courserunning.AdjustTeacherDTO;
+import com.roomroot.jwgl.dto.courserunning.AdjustTeamDTO;
import lombok.Data;
+import java.time.LocalDateTime;
+import java.util.List;
+
/**
- * 可供调课的课次,来自学员队任务表,并关联课表、课程表。
+ * 可供调课的课次。
+ *
+ * 字段与 {@code /adjust/submit} 入参对齐:除事由、备注等需用户填写的项外,
+ * 其余提交字段均带出当前课次默认值,前端可直接用于新增调课申请。
+ *
*/
@Data
public class AdjustableLessonVO {
- /** 实施_课程表编号(实施_调课申请主关联) */
+ /** 实施_课程表编号,对应提交参数 sskcbbh */
private String sskcbbh;
- /** 原上课日期 */
- private java.time.LocalDateTime rq;
+ /** 当前上课日期,作为提交参数 rq 的默认值 */
+ private LocalDateTime rq;
- /** 原节次 */
+ /** 当前节次,作为提交参数 jc 的默认值 */
private Integer jc;
- /** 学员队任务表编号 */
+ /** 年度,对应提交参数 nd */
+ private Integer nd;
+
+ /** 申请教员编号,对应提交参数 sqjybh */
+ private String sqjybh;
+
+ /** 学员队任务表编号,对应提交参数 xydrwbh */
private String xydrwbh;
- /** 课表.课编号 */
+ /** 课表.课编号,对应提交参数 kbh */
private String kbh;
- /** 课程名称 */
+ /** 课程表编号,对应提交参数 kcbbh */
+ private String kcbbh;
+
+ /** 拟调整教室编号,默认当前教室,对应提交参数 xjsbh */
+ private String xjsbh;
+
+ /** 当前教学内容,对应提交参数 jxnr */
+ private String jxnr;
+
+ /** 当前教学要点,对应提交参数 jxyd */
+ private String jxyd;
+
+ /** 当前教学方法,对应提交参数 jxff */
+ private String jxff;
+
+ /** 当前教学保障备注,对应提交参数 jxbzbz */
+ private String jxbzbz;
+
+ /** 当前用车信息,对应提交参数 ycxx */
+ private String ycxx;
+
+ /** 当前教室列表,对应提交参数 roomList */
+ private List roomList;
+
+ /** 当前辅助教员列表,对应提交参数 teacherList */
+ private List teacherList;
+
+ /** 当前学员队列表,对应提交参数 teamList */
+ private List teamList;
+
+ /** 当前保障明细列表,对应提交参数 supportList */
+ private List supportList;
+
+ /** 原教室编号 */
+ private String yjsbh;
+
+ /** 课程名称(展示用) */
private String kcmc;
- /** 学员队编号 */
+ /** 学员队编号(展示用) */
private String xydbh;
- /** 学员队名称 */
+ /** 学员队名称(展示用) */
private String xydmc;
- /** 教员编号 */
+ /** 教员编号(展示用) */
private String jybh;
- /** 课次序号 */
+ /** 课次序号(展示用) */
private Integer kcxh;
- /** 教室编号 */
+ /** 当前教室编号(展示用,与 xjsbh 同值) */
private String jsbh;
- /** 年度 */
- private Integer nd;
-
/** 教研室代号 */
private String jysdh;
- /** 课程表编号 */
- private String kcbbh;
+ /**
+ * 课次关联子表明细行,仅用于批量回填,不对外返回。
+ */
+ @Data
+ public static class ChildRow {
+ private String sskcbbh;
+ private String jsbh;
+ private String bz;
+ private String fzjybh;
+ private Integer zjy;
+ private String xydbh;
+ private String bztgmxbh;
+ private Integer sl;
+ }
}
diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/vo/kcb/DailyWeeklyTimetableRangeVO.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/vo/kcb/DailyWeeklyTimetableRangeVO.java
new file mode 100644
index 000000000..ebd455c39
--- /dev/null
+++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/vo/kcb/DailyWeeklyTimetableRangeVO.java
@@ -0,0 +1,27 @@
+package com.roomroot.jwgl.vo.kcb;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 今日课表、本周课表查询结果。
+ *
+ * {@code rq} 为当前查看日期,连续点上一天/下一天/上一周/下一周时把该值回传,并带 offset。
+ *
+ */
+@Data
+public class DailyWeeklyTimetableRangeVO {
+
+ /** 当前查看日期(yyyy-MM-dd),下次切换时回传 */
+ private String rq;
+
+ /** 查询起始日期 */
+ private String startDate;
+
+ /** 查询结束日期 */
+ private String endDate;
+
+ /** 课表行 */
+ private List list;
+}