diff --git a/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/LogController.java b/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/LogController.java index 969bca24..e35a81e3 100644 --- a/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/LogController.java +++ b/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/LogController.java @@ -198,7 +198,7 @@ public class LogController { @GetMapping("/teaching-log/download-template") public void downloadTemplate(HttpServletResponse response) { try { - java.io.InputStream is = getClass().getClassLoader().getResourceAsStream("template/导入教学日志模板.xls"); + java.io.InputStream is = getClass().getClassLoader().getResourceAsStream("file/导入教学日志模板.xls"); if (is == null) { response.setStatus(404); return; diff --git a/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/TeachingPlanController.java b/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/TeachingPlanController.java index cb363cee..6d41c10f 100644 --- a/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/TeachingPlanController.java +++ b/backend/roomroot-admin/src/main/java/com/roomroot/web/controller/jwgl/TeachingPlanController.java @@ -92,11 +92,8 @@ public class TeachingPlanController { * 下载教学实施计划导入模板 */ @GetMapping("/template") - public ResponseEntity downloadTemplate() throws IOException { - ClassPathResource resource = new ClassPathResource("template/教学实施计划导入模板.xlsx"); - if (!resource.exists()) { - return ResponseEntity.notFound().build(); - } + public ResponseEntity downloadTemplate() throws Exception { + byte[] bytes = teachingPlanService.buildImportTemplate(); String fileName = URLEncoder.encode("教学实施计划导入模板.xlsx", "UTF-8"); HttpHeaders headers = new HttpHeaders(); @@ -105,6 +102,6 @@ public class TeachingPlanController { return ResponseEntity.ok() .headers(headers) - .body(resource); + .body(bytes); } } \ No newline at end of file diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/entity/XYXJYDSQB.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/entity/XYXJYDSQB.java index b06a955f..cf4299c9 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/entity/XYXJYDSQB.java +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/entity/XYXJYDSQB.java @@ -60,7 +60,7 @@ public class XYXJYDSQB { private String xydgbbh; /** 学员队干部审核时间 */ - @TableField("学员队干部审核时间") + @TableField("学员队审核时间") private LocalDateTime xydshsj; /** 管理员审核时间 */ diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/BZTGMXMapper.xml b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/BZTGMXMapper.xml index 407cdbf2..653289d8 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/BZTGMXMapper.xml +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/BZTGMXMapper.xml @@ -24,7 +24,7 @@ a.停用, a.备注 FROM "保障提供明细" a - LEFT JOIN "保障类别" l ON a.保障类别编号 = l.编号 + LEFT JOIN "保障类别" l ON a.保障类别编号 = l."BH" WHERE a.停用 = 0 AND a.保障类别编号 = #{bzlbbh} diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/JYBMapper.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/JYBMapper.java index 26187d00..ac265cfd 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/JYBMapper.java +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/JYBMapper.java @@ -31,6 +31,7 @@ public interface JYBMapper extends BaseMapper { @Select("SELECT TRIM(b.\"教员编号\") FROM \"教员登录表\" b " + "JOIN \"登录信息表\" a ON TRIM(a.\"编号\") = TRIM(b.\"登录信息编号\") " - + "WHERE TRIM(a.\"账号\") = #{username}") + + "WHERE LOWER(TRIM(a.\"账号\")) = LOWER(TRIM(#{username})) " + + "OR LOWER(TRIM(a.\"统一账号\")) = LOWER(TRIM(#{username}))") String selectTeacherIdByAccount(@Param("username") String username); } diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/JYSDLBMapper.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/JYSDLBMapper.java index 786f43e5..fd83eea8 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/JYSDLBMapper.java +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/JYSDLBMapper.java @@ -14,6 +14,7 @@ public interface JYSDLBMapper extends BaseMapper { @Select("SELECT TRIM(b.\"教研室代号\") FROM \"教研室登录表\" b " + "JOIN \"登录信息表\" a ON TRIM(a.\"编号\") = TRIM(b.\"登录信息编号\") " - + "WHERE TRIM(a.\"账号\") = #{username}") + + "WHERE LOWER(TRIM(a.\"账号\")) = LOWER(TRIM(#{username})) " + + "OR LOWER(TRIM(a.\"统一账号\")) = LOWER(TRIM(#{username}))") String selectResearchOfficeIdByAccount(@Param("username") String username); } diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/KCBBZMXMapper.xml b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/KCBBZMXMapper.xml index 3d6af12b..40e185dd 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/KCBBZMXMapper.xml +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/KCBBZMXMapper.xml @@ -49,7 +49,7 @@ FROM "课程表_保障明细" a INNER JOIN "实施_课程表" b ON a.课程表编号 = b.编号 LEFT JOIN "保障提供明细" m ON a.保障提供明细编号 = m.编号 - LEFT JOIN "保障类别" l ON m.保障类别编号 = l.编号 + LEFT JOIN "保障类别" l ON m.保障类别编号 = l."BH" WHERE b.实施_课程编号 = #{sskcbh} AND a.课程表编号 != #{sskcbbh} GROUP BY @@ -96,7 +96,7 @@ a.日期 AS 创建时间 FROM "课程表_保障明细" a LEFT JOIN "保障提供明细" m ON a.保障提供明细编号 = m.编号 - LEFT JOIN "保障类别" l ON m.保障类别编号 = l.编号 + LEFT JOIN "保障类别" l ON m.保障类别编号 = l."BH" LEFT JOIN "教员表" t ON ( CASE WHEN a.备注 LIKE '%"confirmed":true%' THEN diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/SSKCBMapper.xml b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/SSKCBMapper.xml index c39294bb..db501e41 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/SSKCBMapper.xml +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/mapper/SSKCBMapper.xml @@ -61,7 +61,7 @@ b.变动时间 FROM "实施_课程表" b LEFT JOIN "实施_课程" a ON LOWER(RAWTOHEX(a."编号")) = LOWER(REPLACE(TRIM(b.实施_课程编号), '-', '')) - LEFT JOIN "课程表" c ON a.课编号 = c.课编号 + LEFT JOIN "课表" c ON a.科目编号 = c.课编号 WHERE b.删除状态 = 0 AND b.实施_课程编号 = #{sskcbh} @@ -117,7 +117,7 @@ b.变动时间 FROM "实施_课程表" b LEFT JOIN "实施_课程" a ON LOWER(RAWTOHEX(a."编号")) = LOWER(REPLACE(TRIM(b.实施_课程编号), '-', '')) - LEFT JOIN "课程表" c ON a.课编号 = c.课编号 + LEFT JOIN "课表" c ON a.科目编号 = c.课编号 WHERE b.编号 = #{sskcbbh} AND b.删除状态 = 0 diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/TeachingPlanService.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/TeachingPlanService.java index 7522c075..42b9eb19 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/TeachingPlanService.java +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/TeachingPlanService.java @@ -67,4 +67,11 @@ public interface TeachingPlanService { * @throws Exception 解析或导入异常 */ int importFromExcel(MultipartFile file) throws Exception; + + /** + * 生成导入模板 Excel(列序与 {@link #importFromExcel} 解析一致)。 + * + * @return xlsx 字节 + */ + byte[] buildImportTemplate() throws Exception; } \ No newline at end of file diff --git a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/TeachingPlanServiceImpl.java b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/TeachingPlanServiceImpl.java index df04c903..5f8fe1b5 100644 --- a/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/TeachingPlanServiceImpl.java +++ b/backend/roomroot-jwgl/src/main/java/com/roomroot/jwgl/service/impl/TeachingPlanServiceImpl.java @@ -11,10 +11,15 @@ import com.roomroot.jwgl.unit.PageResult; import com.roomroot.jwgl.utils.ExcelParseUtil; import com.roomroot.jwgl.utils.UuidUtil; import jakarta.annotation.Resource; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; +import java.io.ByteArrayOutputStream; import java.util.List; /** @@ -104,4 +109,44 @@ public class TeachingPlanServiceImpl implements TeachingPlanService { } return list.size(); } + + @Override + public byte[] buildImportTemplate() throws Exception { + String[] headers = { + "序号", "年度", "原序号", "日期", "原节次", "节次", "课程名称", "班次", + "责任单位", "授课教员", "教学场地", "教学内容", "教学方法", + "教员备注", "教务备注", "检查结果", "课程表编号" + }; + String[] example = { + "1", "2026", "", "2026-03-02 08:00:00", "", "1", "高等数学", "1班", + "基础教研室", "张三", "教学楼A-101", "函数与极限", "讲授", + "", "", "", "" + }; + try (Workbook wb = new XSSFWorkbook(); ByteArrayOutputStream bos = new ByteArrayOutputStream()) { + Sheet sheet = wb.createSheet("教学实施计划"); + Row header = sheet.createRow(0); + for (int i = 0; i < headers.length; i++) { + header.createCell(i).setCellValue(headers[i]); + sheet.setColumnWidth(i, 14 * 256); + } + Row row = sheet.createRow(1); + for (int i = 0; i < example.length; i++) { + row.createCell(i).setCellValue(example[i]); + } + Sheet help = wb.createSheet("填写说明"); + String[] notes = { + "1. 数据从第2行开始填写,第1行表头请勿修改,列顺序固定不可调整。", + "2. 「课程名称」必填,课程名称为空的行将被跳过;其余列可留空。", + "3. 「序号」「年度」「节次」为整数;「日期」支持 yyyy-MM-dd 或 yyyy-MM-dd HH:mm:ss。", + "4. 第2行为示例数据,导入前请删除。", + "5. 标识号、登录编号由系统自动生成,无需填写。" + }; + for (int i = 0; i < notes.length; i++) { + help.createRow(i).createCell(0).setCellValue(notes[i]); + } + help.setColumnWidth(0, 100 * 256); + wb.write(bos); + return bos.toByteArray(); + } + } } \ No newline at end of file diff --git a/frontend/src/utils/request.js b/frontend/src/utils/request.js index 8865fcdb..f9fde625 100644 --- a/frontend/src/utils/request.js +++ b/frontend/src/utils/request.js @@ -103,7 +103,7 @@ service.interceptors.response.use(res => { return Promise.reject('error') } else if (code !== 200) { Notification.error({ title: msg }) - return Promise.reject('error') + return Promise.reject(new Error(msg)) } else { return res.data } diff --git a/frontend/src/views/teachBusiness/schedulingWindow/index.vue b/frontend/src/views/teachBusiness/schedulingWindow/index.vue index 55cb9325..8549ca97 100644 --- a/frontend/src/views/teachBusiness/schedulingWindow/index.vue +++ b/frontend/src/views/teachBusiness/schedulingWindow/index.vue @@ -55,8 +55,8 @@
该班次学期暂无可排课程
- + diff --git a/frontend/src/views/teachOffice/myOffice/index.vue b/frontend/src/views/teachOffice/myOffice/index.vue index ade16b1d..c3a5d637 100644 --- a/frontend/src/views/teachOffice/myOffice/index.vue +++ b/frontend/src/views/teachOffice/myOffice/index.vue @@ -16,7 +16,7 @@ /> 下一天
- + @@ -39,7 +39,7 @@ 查询 - + @@ -52,7 +52,7 @@ - +