Compare commits

...

72 Commits

Author SHA1 Message Date
liweijie 60841e5bc8 连接字符串修改 2026-09-24 17:40:56 +08:00
liweijie 4137d61561 数据库连接修改,换国产数据库opengauss 2026-09-24 15:50:17 +08:00
liweijie f8e6466d24 1、课时统计功能调整新增;
2、教学楼序号改为自动填充,无需填写;
3、教学楼检索,教学楼代号下拉选择;
4、课表冲突检查修复
2026-09-24 15:07:26 +08:00
liweijie bd395a5504 课时统计功能提交 2026-09-24 14:08:44 +08:00
liweijie d9f8bf705d 从班次信息管理的排课按钮进排课窗口,刷新页面信息 2026-09-24 11:49:22 +08:00
liweijie 836995a794 班次学期管理,年度检索下拉框数据缺失问题修复 2026-09-24 11:32:26 +08:00
liweijie 094245231c 1、新增教学大纲,报专业名称重复,其实是code重复,修复;
2、已经限制教员排课的,教员仍然可以排课的问题修复
2026-09-24 11:13:23 +08:00
liweijie 4f5e219a6e 新增专业信息的时候设置下拉选项 2026-09-24 09:07:43 +08:00
liweijie 06c057e490 1、学员信息管理成绩查看,只显示课程编号改为显示课程名称和课程编号;
2、机关教学日志日期显示格式修改
2026-09-23 17:43:40 +08:00
liweijie 07ec44e9d4 学员查看成绩没有操作权限的问题修复 2026-09-23 16:41:55 +08:00
liweijie ad92f4afc9 学员信息列表,性别改为显示标签 2026-09-23 15:39:25 +08:00
liweijie 69a1a7d560 学员队表和学员队期表联动 2026-09-23 15:19:19 +08:00
liweijie fb3d20def6 1、学员队期下拉选择;
2、学员信息管理,操作列改为两行显示
2026-09-23 14:58:19 +08:00
liweijie 90fb852cf2 日期保存报错修复 2026-09-22 17:26:04 +08:00
liweijie 62fb137611 课程科目新建的时候部分字段改为下拉选择 2026-09-22 17:13:55 +08:00
liweijie f87e02b06b 选修课和课程科目,上传按钮样式调整,点击按钮选择文件导入 2026-09-22 16:46:56 +08:00
liweijie 1ac022757d 1、选修课保存调整,加上教材的保存;
2、课程可以下拉选择;
2026-09-22 16:25:55 +08:00
liweijie 97ae86f9c7 1、选修课选择教室、教员等用下拉选择,
2、绑定教材落库
2026-09-22 16:09:20 +08:00
liweijie cda0854ab1 教学场地工具条按两行显示 2026-09-22 15:24:06 +08:00
liweijie 3fcec5d756 把工具条横过来,占满一行,数据导入也放到工具条中,不要单独放 2026-09-22 11:56:08 +08:00
liweijie 69a32e31d0 属性信息填写及编号回填等梳理 2026-09-22 10:35:02 +08:00
liweijie c9a2098f3f 添加一个复职的功能,页面操作列按钮分成两行展示,添加根据离职过滤 2026-09-22 10:17:37 +08:00
liweijie 2c5823df09 教研室-教员管理,新建教员的时候,在职类型和导师类型改为下拉,在职类型默认在职 2026-09-22 09:51:15 +08:00
liweijie 738d5917f9 教研室管理,按照序号字段排序 2026-09-22 09:27:20 +08:00
liweijie ae3dbe66a5 人才培养方案,列表过滤,停用的不展示 2026-09-22 09:16:41 +08:00
liweijie 12eddac276 教学大纲,导出选中数据,有勾选导出勾选条目,无勾选导出所有 2026-09-21 17:48:38 +08:00
liweijie 450d664c33 教学大纲,模板下载,添加填写说明 2026-09-21 17:28:46 +08:00
liweijie 3fe66d770d 学员队新增的时候,教室改为下拉,默认在校 2026-09-21 17:20:16 +08:00
liweijie f5728c0827 操作列透明度设置为不透明,否则底层显示跟操作列冲突 2026-09-21 17:09:31 +08:00
liweijie 1482bfd31c 班次编号生成,改为XYD+年度+补零序号 2026-09-21 16:36:09 +08:00
liweijie 035c01e90b 教学任务管理界面完善,教员、教学场地改为下拉 2026-09-20 19:03:39 +08:00
zhaichao 7b84d499a9 排课窗口单元格单击双选问题修复 2026-09-20 17:22:55 +08:00
zhaichao f5a5c89ee3 联教编辑报错 2026-09-20 15:24:07 +08:00
zhaichao 5e3bee9c5f 学员学籍异动申请新增报错 2026-09-20 14:45:19 +08:00
zhaichao a566a26fec 选修课管理 2026-09-20 14:26:52 +08:00
zhaichao 9f0c0ac873 人才培养方案 2026-09-20 11:59:04 +08:00
liweijie e4f4720113 生成课表的时候死循环导致系统崩溃 2026-09-18 20:58:00 +08:00
liweijie 574d41aea8 课表模板新增的时候报错修复 2026-09-18 20:38:21 +08:00
liweijie 62ff4d48ab 学科专业新增报错修复 2026-09-18 20:31:29 +08:00
liweijie b87e910f9a 教学配当界面无法打开的问题修复 2026-09-18 20:11:59 +08:00
liweijie 7e0d96f627 教学任务 → 复制所选 → 粘贴到其它班次,目标班次选择弹窗会正常浮在最上层,不再被遮罩盖住 2026-09-18 19:58:39 +08:00
liweijie fdc7bb01fd 教学业务-班次学期信息管理-操作列点击教学任务-新增课程任务,课编号要求下拉选择,并能带出所选课程的对应信息 2026-09-18 19:51:41 +08:00
liweijie 7096873e2c 教研室账号校验改为用角色校验 2026-09-18 19:31:53 +08:00
liweijie 5a3d202599 添加页面必填信息校验 2026-09-18 19:00:08 +08:00
liweijie 04551fce73 教学公告删除报错 2026-09-18 18:20:36 +08:00
liweijie f36b1f4701 AI测试反馈的报错调整 2026-09-18 18:12:59 +08:00
liweijie 68b02ea58e 部分表名写成了英文名调整 2026-09-18 17:48:31 +08:00
liweijie cff7b039e3 DBVersion的读写修改 2026-09-18 16:56:26 +08:00
liweijie e27b61b5fe 工具条按钮样式统一 2026-09-18 11:50:09 +08:00
liweijie b529f0b523 人才培养方案工具条调整 2026-09-18 11:36:30 +08:00
liweijie a0d5a3b0fe 教学公告添加发布功能 2026-09-18 10:50:26 +08:00
liweijie f3ae9fb2fd 1、校历的78、晚上、夜间等直接落库,
2、配当、任务书完善、排课窗完善;
3、任务书批量发布、删除等;
4、班历同步校历
2026-09-18 10:38:39 +08:00
liweijie 911dfe911b 1课表模板管理;
2、课表生成;
3、课表的网格视图;
4、导出与打印
2026-09-18 09:02:41 +08:00
liweijie 971ea46da5 1、添加实施计划统计分析;
2、添加单课程实施计划列表;
3、恢复同步班历;
4、冲突项添加颜色分级;
5、校历补上正课;
6、添加教学场地总览;
2026-09-17 18:20:48 +08:00
liweijie 351df2cba2 排课功能优化 2026-09-17 17:14:31 +08:00
liweijie a958bcf059 添加排课功能 2026-09-17 15:58:33 +08:00
liweijie 80e91707e6 1、分页添加默认项,
2、登录名冲突无"复用/认领"机制,教员永久无法开通账号
3、两条对齐路径对"停用教研室"处理不一致
2026-09-17 15:18:13 +08:00
liweijie 8c346de4d8 1、停用教员的同时禁用该教员的账号;
2、教员导入的时候,如果有错误,跳过并返回具体报错行;
3、教研室接口权限添加控制
2026-09-17 14:35:06 +08:00
liweijie 95a3571c69 新增教研室和教员的时候,同步创建部门和教员账号 2026-09-17 12:00:44 +08:00
liweijie f7299c36e8 教学大纲新增导出模板和导入按钮 2026-09-17 10:03:29 +08:00
liweijie 9af6de6ff3 新增教学场地校验编号的重复性 2026-09-17 09:30:04 +08:00
liweijie abf616a8ee 班历功能添加 2026-09-16 17:13:57 +08:00
liweijie 2e151ea228 1、添加教学场地历;
2、很多表继承了基础类,但是没有添加对应字段导致报错,把继承去掉
2026-09-16 16:37:23 +08:00
liweijie 58499afe8e 教室编号生成调整 2026-09-16 12:02:33 +08:00
zhaichao 49b3232e79 人培新建 2026-09-16 11:22:11 +08:00
liweijie 62cf543760 专业代码改为下拉框,选择之后带出专业信息 2026-09-16 11:15:13 +08:00
zhaichao af51469121 Merge branch 'main' of https://gitea.fengyingkj.top/liweijie/education 2026-09-16 11:07:00 +08:00
zhaichao 490e1845f6 人才培养方案新增自动生成代号,代码 2026-09-16 11:04:18 +08:00
liweijie 4cb39ca1b0 Merge remote-tracking branch 'origin/main' into main 2026-09-16 09:30:37 +08:00
liweijie 25c1922f08 注释添加 2026-09-16 09:30:31 +08:00
liweijie 9d70d4c25e Merge remote-tracking branch 'origin/main' into main 2026-09-16 09:27:34 +08:00
liweijie 8c992183e3 教学楼排序调整 2026-09-16 09:27:17 +08:00
387 changed files with 18546 additions and 2123 deletions
+7
View File
@@ -37,6 +37,13 @@
<version>8.1.2.192</version>
</dependency>
<!-- openGauss 数据库驱动包 -->
<dependency>
<groupId>org.opengauss</groupId>
<artifactId>opengauss-jdbc</artifactId>
<version>6.0.3-og</version>
</dependency>
<!-- 核心模块-->
<dependency>
<groupId>com.roomroot</groupId>
@@ -43,7 +43,7 @@ public class BuildController {
}
/**
* 批量删除教学楼(已绑定教学场地的跳过不删)
* 批量删除教学楼(已绑定教学场地的跳过不删,暂定)
*/
@PostMapping("/batchDelete")
public Result<BuildDeleteResultVO> batchDelete(@RequestBody List<String> ids) {
@@ -1,9 +1,11 @@
package com.roomroot.web.controller.jwgl;
import com.roomroot.jwgl.dto.calendar.ClassCalendarApplyDTO;
import com.roomroot.jwgl.dto.calendar.ClassCalendarBatchSaveDTO;
import com.roomroot.jwgl.dto.calendar.ClassCalendarEventDTO;
import com.roomroot.jwgl.service.ClassEventCalendarService;
import com.roomroot.jwgl.unit.Result;
import com.roomroot.jwgl.vo.calendar.ClassCalendarResyncVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -35,6 +37,26 @@ public class ClassEventCalendarController {
return Result.success();
}
/**
* 批量保存班历时间格(拖选区域一次提交,单事务 upsert;action=clear 恢复默认)
*/
@PostMapping("/batchSave")
public Result<Integer> batchSave(@RequestBody ClassCalendarBatchSaveDTO body) {
int saved = classEventCalendarService.batchSave(body);
return Result.success("已保存 " + saved + " 个时间格", saved);
}
/**
* 重新同步校历:confirm=false 返回差异预览,confirm=true 实际写入;
* force=true 时额外覆盖与校历不一致的已有格。
*/
@PostMapping("/resync")
public Result<ClassCalendarResyncVO> resync(@RequestParam("xydxqbh") String xydxqbh,
@RequestParam(value = "confirm", defaultValue = "false") boolean confirm,
@RequestParam(value = "force", defaultValue = "false") boolean force) {
return Result.success(classEventCalendarService.resync(xydxqbh, confirm, force));
}
@PostMapping("/apply")
public Result<Integer> apply(@RequestBody ClassCalendarApplyDTO body) {
return Result.success(classEventCalendarService.apply(
@@ -5,6 +5,8 @@ import com.roomroot.jwgl.service.ClassRoomCalendarService;
import com.roomroot.jwgl.unit.PageQuery;
import com.roomroot.jwgl.unit.PageResult;
import com.roomroot.jwgl.unit.Result;
import com.roomroot.jwgl.vo.classroom.VenueLessonVO;
import com.roomroot.jwgl.vo.classroom.VenueScheduleItemVO;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
@@ -86,4 +88,60 @@ public class ClassRoomCalendarController {
public Result<List<JXCDL>> listByRq(@RequestParam("rq") String rq) {
return Result.success(calendarService.listByRq(rq));
}
/**
* 批量保存场地历事件(拖选区域写入,按 教室编号+日期+节次 判重覆盖)
*/
@PostMapping("/batchSave")
public Result<Integer> batchSave(@RequestBody List<JXCDL> list) {
int saved = calendarService.batchSave(list);
return Result.success("已保存 " + saved + " 个时间格事件", saved);
}
/**
* 按 ID 批量删除场地历事件(恢复可排)
*/
@PostMapping("/batchDelete")
public Result<Integer> batchDelete(@RequestBody List<String> ids) {
int deleted = calendarService.batchDelete(ids);
return Result.success("已删除 " + deleted + " 个时间格事件", deleted);
}
/**
* 按教室编号 + 日期范围查询场地历
*/
@GetMapping("/listByJsbhAndRange")
public Result<List<JXCDL>> listByJsbhAndRange(@RequestParam("jsbh") String jsbh,
@RequestParam(value = "start", required = false) String start,
@RequestParam(value = "end", required = false) String end) {
return Result.success(calendarService.listByJsbhAndRange(jsbh, start, end));
}
/**
* 查询场地在日期范围内已排课次(编辑器蓝格数据源)
*/
@GetMapping("/lessons")
public Result<List<VenueLessonVO>> listVenueLessons(@RequestParam("jsbh") String jsbh,
@RequestParam(value = "start", required = false) String start,
@RequestParam(value = "end", required = false) String end,
@RequestParam(value = "nd", required = false) Integer nd) {
return Result.success(calendarService.listVenueLessons(jsbh, start, end, nd));
}
/**
* 查询指定本场地为专用教室的班次(编辑器顶部横幅数据源)
*/
@GetMapping("/designatedTeams")
public Result<List<String>> listDesignatedTeams(@RequestParam("jsbh") String jsbh) {
return Result.success(calendarService.listDesignatedTeams(jsbh));
}
/**
* 场地占用总览:某日期+节次全部场地的占用状态
*/
@GetMapping("/venueSchedule")
public Result<List<VenueScheduleItemVO>> venueSchedule(@RequestParam("rq") String rq,
@RequestParam("jc") Integer jc) {
return Result.success(calendarService.venueSchedule(rq, jc));
}
}
@@ -13,7 +13,7 @@ import java.util.Map;
* 学员队任务表控制器
*/
@RestController
@RequestMapping("/classCalendar")
@RequestMapping({"/classCalendar", "/course-task"})
public class ClassSemesterCalendarController {
@Resource
@@ -2,6 +2,8 @@ package com.roomroot.web.controller.jwgl;
import com.roomroot.common.exception.ServiceException;
import com.roomroot.common.utils.file.FileUtils;
import com.roomroot.jwgl.service.TeachingMaterialService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.springframework.core.io.ClassPathResource;
@@ -23,6 +25,9 @@ public class DownloadController {
private static final String TEMPLATE_DIR = "file/";
@Resource
private TeachingMaterialService teachingMaterialService;
/**
* 人才培养方案课程数据文件模板
*/
@@ -56,11 +61,11 @@ public class DownloadController {
}
/**
* 教材管理模板
* 教材管理模板(动态生成,与 /teachingMaterial/template 一致)
*/
@GetMapping("/teaching-material")
public void downloadTeachingMaterial(HttpServletResponse response) throws IOException {
downloadTemplate(response, "教材管理.xls");
public void downloadTeachingMaterial(HttpServletResponse response) {
teachingMaterialService.downloadTemplate(response);
}
/**
@@ -72,11 +77,156 @@ public class DownloadController {
}
/**
* 联教连训管理模板
* 教员导入模板(动态生成:数据 sheet + 填写说明 sheet)。
* <p>列序与 /jys/teacher/import 解析一致:
* 教员编号、教员姓名、教研室代号、职称、专业技术职务等级、教员类别、
* 性别、手机号、身份证号、备注、序号、虚实类型。</p>
*/
@GetMapping("/jy")
public void downloadJy(HttpServletResponse response) throws IOException {
org.apache.poi.ss.usermodel.Workbook workbook = new org.apache.poi.xssf.usermodel.XSSFWorkbook();
try {
org.apache.poi.ss.usermodel.CellStyle headerStyle = workbook.createCellStyle();
org.apache.poi.ss.usermodel.Font headerFont = workbook.createFont();
headerFont.setBold(true);
headerStyle.setFont(headerFont);
org.apache.poi.ss.usermodel.CellStyle requiredStyle = workbook.createCellStyle();
org.apache.poi.ss.usermodel.Font requiredFont = workbook.createFont();
requiredFont.setBold(true);
requiredFont.setColor(org.apache.poi.ss.usermodel.IndexedColors.RED.getIndex());
requiredStyle.setFont(requiredFont);
String[] headers = {"教员编号", "教员姓名*", "教研室代号*", "职称", "专业技术职务等级",
"教员类别", "性别", "手机号", "身份证号", "备注", "序号", "虚实类型"};
org.apache.poi.ss.usermodel.Sheet dataSheet = workbook.createSheet("教员");
org.apache.poi.ss.usermodel.Row headerRow = dataSheet.createRow(0);
for (int i = 0; i < headers.length; i++) {
org.apache.poi.ss.usermodel.Cell cell = headerRow.createCell(i);
cell.setCellValue(headers[i]);
cell.setCellStyle(headers[i].endsWith("*") ? requiredStyle : headerStyle);
dataSheet.setColumnWidth(i, 16 * 256);
}
String[][] instructions = {
{"教员编号", "选填", "留空则系统自动生成(JY+流水号);手填须唯一"},
{"教员姓名", "必填", "文本"},
{"教研室代号", "必填", "教研室表中的教研室代号(非名称),必须已存在"},
{"职称", "选填", "文本,如:讲师、副教授"},
{"专业技术职务等级", "选填", "文本,如:初级、中级、高级"},
{"教员类别", "选填", "文本,如:专业技术军官"},
{"性别", "选填", "数字:1=男,0=女"},
{"手机号", "选填", "文本"},
{"身份证号", "选填", "文本"},
{"备注", "选填", "文本"},
{"序号", "选填", "数字"},
{"虚实类型", "选填", "数字:0=实员"}
};
org.apache.poi.ss.usermodel.Sheet helpSheet = workbook.createSheet("填写说明");
org.apache.poi.ss.usermodel.Row titleRow = helpSheet.createRow(0);
org.apache.poi.ss.usermodel.Cell titleCell = titleRow.createCell(0);
titleCell.setCellValue("教员导入填写说明(红色表头列为必填;导入只写教员档案不建账号,账号用列表【对齐到用户表】批量开通)");
titleCell.setCellStyle(headerStyle);
String[] helpHeaders = {"列名", "是否必填", "填写说明"};
org.apache.poi.ss.usermodel.Row helpHeaderRow = helpSheet.createRow(1);
for (int i = 0; i < helpHeaders.length; i++) {
org.apache.poi.ss.usermodel.Cell cell = helpHeaderRow.createCell(i);
cell.setCellValue(helpHeaders[i]);
cell.setCellStyle(headerStyle);
}
for (int i = 0; i < instructions.length; i++) {
org.apache.poi.ss.usermodel.Row row = helpSheet.createRow(i + 2);
for (int j = 0; j < 3; j++) {
row.createCell(j).setCellValue(instructions[i][j]);
}
if ("必填".equals(instructions[i][1])) {
row.getCell(1).setCellStyle(requiredStyle);
}
}
helpSheet.setColumnWidth(0, 18 * 256);
helpSheet.setColumnWidth(1, 10 * 256);
helpSheet.setColumnWidth(2, 60 * 256);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
FileUtils.setAttachmentResponseHeader(response, "教员导入模板.xlsx");
workbook.write(response.getOutputStream());
response.getOutputStream().flush();
} catch (IOException e) {
throw e;
} catch (Exception e) {
throw new ServiceException("生成教员导入模板失败:" + e.getMessage());
} finally {
try {
workbook.close();
} catch (IOException ignored) {
}
}
}
/**
* 联教联训导入模板(动态生成:宋体表头 + 测试样例)。
* 列序与 ExcelParseUtil.parseKSBZXMExcel 一致。
*/
@GetMapping("/joint-training")
public void downloadJointTraining(HttpServletResponse response) throws IOException {
downloadTemplate(response, "联教连训管理.xls");
org.apache.poi.ss.usermodel.Workbook workbook = new org.apache.poi.xssf.usermodel.XSSFWorkbook();
try {
org.apache.poi.ss.usermodel.Font headerFont = workbook.createFont();
headerFont.setFontName("宋体");
headerFont.setBold(true);
headerFont.setFontHeightInPoints((short) 11);
org.apache.poi.ss.usermodel.CellStyle headerStyle = workbook.createCellStyle();
headerStyle.setFont(headerFont);
org.apache.poi.ss.usermodel.Font dataFont = workbook.createFont();
dataFont.setFontName("宋体");
dataFont.setFontHeightInPoints((short) 11);
org.apache.poi.ss.usermodel.CellStyle dataStyle = workbook.createCellStyle();
dataStyle.setFont(dataFont);
String[] headers = {
"序号", "补助项目名称", "性质", "依据", "开始日期", "结束日期",
"项目说明", "项目备注", "教研室名称", "补助教员姓名", "补助课时量", "课时量备注"
};
org.apache.poi.ss.usermodel.Sheet sheet = workbook.createSheet("联教联训");
org.apache.poi.ss.usermodel.Row headerRow = sheet.createRow(0);
for (int i = 0; i < headers.length; i++) {
org.apache.poi.ss.usermodel.Cell cell = headerRow.createCell(i);
cell.setCellValue(headers[i]);
cell.setCellStyle(headerStyle);
sheet.setColumnWidth(i, 18 * 256);
}
String[][] samples = {
{"1", "联教联训测试项目甲", "集中", "训练计划〔2026〕1号", "2026-03-01", "2026-03-10",
"联合教学演练", "导入测试样例1", "战术教研室", "张三", "16", "含备课课时"},
{"2", "联教联训测试项目乙", "分散", "训练计划〔2026〕2号", "2026-05-08", "2026-05-20",
"跨校区联训", "导入测试样例2", "射击教研室", "李四", "24", ""},
{"3", "联教联训测试项目丙", "集中", "训练计划〔2026〕3号", "2026-09-01", "2026-09-15",
"联训考核", "导入测试样例3", "指挥教研室", "王五", "12", "按天数核算"}
};
for (int r = 0; r < samples.length; r++) {
org.apache.poi.ss.usermodel.Row row = sheet.createRow(r + 1);
for (int c = 0; c < samples[r].length; c++) {
org.apache.poi.ss.usermodel.Cell cell = row.createCell(c);
cell.setCellValue(samples[r][c]);
cell.setCellStyle(dataStyle);
}
}
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
FileUtils.setAttachmentResponseHeader(response, "联教联训数据文件模板.xlsx");
workbook.write(response.getOutputStream());
response.getOutputStream().flush();
} catch (IOException e) {
throw e;
} catch (Exception e) {
throw new ServiceException("生成联教联训导入模板失败:" + e.getMessage());
} finally {
try {
workbook.close();
} catch (IOException ignored) {
}
}
}
/**
@@ -38,7 +38,7 @@ public class FacultyController {
*/
@PostMapping("/office/add")
public Result<Void> addOffice(@RequestBody JYSB entity) {
facultyService.addJYSB(entity);
facultyService.addJYSB(entity, null);
return Result.success();
}
@@ -49,7 +49,7 @@ public class FacultyController {
*/
@PostMapping("/office/disable")
public Result<Void> disableOffice(@RequestParam("jysdh") String jysdh) {
facultyService.disableJYSB(jysdh);
facultyService.disableJYSB(jysdh, null);
return Result.success();
}
@@ -58,7 +58,7 @@ public class FacultyController {
*/
@PostMapping("/office/update")
public Result<Void> updateOffice(@RequestBody JYSB entity) {
facultyService.updateJYSB(entity);
facultyService.updateJYSB(entity, null);
return Result.success();
}
@@ -1,5 +1,6 @@
package com.roomroot.web.controller.jwgl;
import com.roomroot.common.core.domain.entity.SysUser;
import com.roomroot.common.utils.StringUtils;
import com.roomroot.jwgl.dto.faculty.AddTeacherDTO;
import com.roomroot.jwgl.dto.jys.ElectiveCourseBatchDTO;
@@ -32,6 +33,7 @@ import com.roomroot.jwgl.vo.faculty.TeacherListVO;
import com.roomroot.jwgl.vo.jys.ElectiveCourseVO;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -60,14 +62,19 @@ public class JYSController {
@Resource
private TeachingTaskManageService teachingTaskManageService;
@Resource
private com.roomroot.jwgl.service.OrgSyncService orgSyncService;
// ======================== 教研室管理 ========================
/**
* 新增教研室
*/
@PreAuthorize("@ss.hasPermi('teach:office:list')")
@PostMapping("/office/add")
public Result<Void> addOffice(@RequestBody JYSB entity) {
facultyService.addJYSB(entity);
public Result<Void> addOffice(@RequestBody JYSB entity,
@RequestParam(required = false) Boolean syncDept) {
facultyService.addJYSB(entity, syncDept);
return Result.success();
}
@@ -78,26 +85,56 @@ public class JYSController {
* 001 001 军事基础教研室 军基 基础部
* @param jysdh 教研室代号
*/
@PreAuthorize("@ss.hasPermi('teach:office:list')")
@PostMapping("/office/disable")
public Result<Void> disableOffice(@RequestParam("jysdh") String jysdh) {
facultyService.disableJYSB(jysdh);
public Result<Void> disableOffice(@RequestParam("jysdh") String jysdh,
@RequestParam(required = false) Boolean syncDept) {
facultyService.disableJYSB(jysdh, syncDept);
return Result.success();
}
/**
* 更新教研室
*/
@PreAuthorize("@ss.hasPermi('teach:office:list')")
@PostMapping("/office/update")
public Result<Void> updateOffice(@RequestBody JYSB entity) {
facultyService.updateJYSB(entity);
public Result<Void> updateOffice(@RequestBody JYSB entity,
@RequestParam(required = false) Boolean syncDeptName) {
facultyService.updateJYSB(entity, syncDeptName);
return Result.success();
}
/**
* 单个教研室补建/对齐组织部门(幂等:已关联则直接返回部门编号)。
*/
@PreAuthorize("@ss.hasPermi('teach:office:list')")
@PostMapping("/office/sync-dept")
public Result<Long> syncOfficeDept(@RequestParam("jysdh") String jysdh) {
JYSB entity = facultyService.getJYSBById(jysdh);
if (entity == null) {
return Result.error("教研室不存在:" + jysdh);
}
return Result.success(orgSyncService.ensureOfficeDept(entity));
}
/**
* 对齐组织部门:为教研室批量创建/复用组织部门(直接执行,幂等)。
* body:{ "ids": ["JYS01", ...] };ids 不传 = 全部教研室。
*/
@PreAuthorize("@ss.hasPermi('teach:office:list')")
@PostMapping("/org/align-dept")
public Result<com.roomroot.jwgl.vo.orgsync.OrgAlignResultVO> alignDepts(
@RequestBody(required = false) java.util.Map<String, List<String>> body) {
List<String> ids = body == null ? null : body.get("ids");
return Result.success(orgSyncService.alignDepts(ids));
}
/**
* 根据代号查询教研室详情
*
* @param jysdh 教研室代号
*/
@PreAuthorize("@ss.hasPermi('teach:office:list')")
@GetMapping("/office/get")
public Result<JYSB> getOffice(@RequestParam("jysdh") String jysdh) {
JYSB entity = facultyService.getJYSBById(jysdh);
@@ -114,6 +151,7 @@ public class JYSController {
* </ul>
* </p>
*/
@PreAuthorize("@ss.hasPermi('teach:office:list')")
@GetMapping("/office/list")
public Result<PageResult<JYSB>> listOffice(
@RequestParam(defaultValue = "1") Integer pageNum,
@@ -143,9 +181,11 @@ public class JYSController {
* 未填写时返回"XX未填写";序号、停用、虚实类型等非空字段由后台自动填充。
* </p>
*/
@PreAuthorize("@ss.hasPermi('teach:office:list')")
@PostMapping("/office/import")
public Result<Integer> importOffice(@RequestParam("file") MultipartFile file) throws Exception {
int count = facultyService.importJYSBFromExcel(file);
public Result<Integer> importOffice(@RequestParam("file") MultipartFile file,
@RequestParam(required = false) Boolean syncDept) throws Exception {
int count = facultyService.importJYSBFromExcel(file, syncDept);
return Result.success("导入成功,共" + count + "条记录", count);
}
// ======================== 教员管理 ========================
@@ -154,6 +194,7 @@ public class JYSController {
* 新增教员(同时写入教员表和教员属性表)
* <p>教员属性中的非空字段由前端一并传入。</p>
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@PostMapping("/teacher/add")
public Result<Void> addTeacher(@RequestBody AddTeacherDTO dto) {
facultyService.addJYB(dto);
@@ -165,16 +206,77 @@ public class JYSController {
*
* @param jybh 教员编号
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@PostMapping("/teacher/disable")
public Result<Void> disableTeacher(@RequestParam("jybh") String jybh) {
facultyService.disableJYB(jybh);
return Result.success();
}
/**
* 复职(还原离职状态)教员
*
* @param jybh 教员编号
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@PostMapping("/teacher/enable")
public Result<Void> enableTeacher(@RequestParam("jybh") String jybh) {
facultyService.enableJYB(jybh);
return Result.success();
}
/**
* 单个教员补建/对齐系统账号(幂等:已有账号直接返回用户编号)。
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@PostMapping("/teacher/sync-user")
public Result<Long> syncTeacherUser(@RequestParam("jybh") String jybh,
@RequestParam(required = false) String loginName,
@RequestParam(required = false) String password,
@RequestParam(required = false) Long roleId) {
JYB entity = facultyService.getJYBById(jybh);
if (entity == null) {
return Result.error("教员不存在:" + jybh);
}
SysUser user = orgSyncService.ensureTeacherUser(entity, loginName, password, roleId);
String expected = StringUtils.hasText(loginName) ? loginName.trim() : jybh;
if (!expected.equals(user.getUserName())) {
return Result.success("登录名 " + expected + " 已被无关账号占用,已自动改用 "
+ user.getUserName(), user.getUserId());
}
return Result.success(user.getUserId());
}
/**
* 对齐到用户表:为无账号教员批量建账号(直接执行,幂等,逐条返回明细)。
* body:{ "ids": ["JY01", ...] };ids 不传 = 全部无账号教员。
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@PostMapping("/teacher/align-user")
public Result<com.roomroot.jwgl.vo.orgsync.OrgAlignResultVO> alignUsers(
@RequestBody(required = false) java.util.Map<String, List<String>> body) {
List<String> ids = body == null ? null : body.get("ids");
return Result.success(orgSyncService.alignUsers(ids));
}
/**
* 一键对齐:先对齐组织部门、再对齐用户账号(同一事务,幂等)。
*/
@PreAuthorize("@ss.hasPermi('teach:office:list') and @ss.hasPermi('teach:teacher:list')")
@PostMapping("/org/align-apply")
public Result<java.util.Map<String, com.roomroot.jwgl.vo.orgsync.OrgAlignResultVO>> alignApply() {
java.util.Map<String, com.roomroot.jwgl.vo.orgsync.OrgAlignResultVO> result =
new java.util.LinkedHashMap<>();
result.put("dept", orgSyncService.alignDepts(null));
result.put("user", orgSyncService.alignUsers(null));
return Result.success(result);
}
/**
* 更新教员基本信息
* <p>支持教学单位调整(修改教研室代号)、职称调整(修改职称、专业技术职务等级)。</p>
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@PostMapping("/teacher/update")
public Result<Void> updateTeacher(@RequestBody JYB entity) {
facultyService.updateJYB(entity);
@@ -186,6 +288,7 @@ public class JYSController {
*
* @param jybh 教员编号
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@GetMapping("/teacher/get")
public Result<JYB> getTeacher(@RequestParam("jybh") String jybh) {
JYB entity = facultyService.getJYBById(jybh);
@@ -204,6 +307,7 @@ public class JYSController {
* </ul>
* </p>
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@GetMapping("/teacher/list")
public Result<PageResult<TeacherListVO>> listTeacher(
@RequestParam(defaultValue = "1") Integer pageNum,
@@ -211,7 +315,8 @@ public class JYSController {
@RequestParam(required = false) String jyxm,
@RequestParam(required = false) String jysdh,
@RequestParam(required = false) String zc,
@RequestParam(required = false) String jylb) {
@RequestParam(required = false) String jylb,
@RequestParam(required = false) Integer lzzt) {
PageQuery query = new PageQuery();
query.setPageNum(pageNum);
query.setPageSize(pageSize);
@@ -220,15 +325,26 @@ public class JYSController {
cond.setJysdh(jysdh);
cond.setZc(zc);
cond.setJylb(jylb);
cond.setLzzt(lzzt);
PageResult<TeacherListVO> pageResult = facultyService.pageJYBDetail(query, cond);
return Result.success(pageResult);
}
/**
* 去重职称列表(职称检索下拉数据源,职称无字典表)
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@GetMapping("/teacher/zc-options")
public Result<java.util.List<String>> teacherZcOptions() {
return Result.success(facultyService.listDistinctZc());
}
/**
* 教员数据文件导入(.xls/.xlsx)
* <p>表头顺序:教员编号, 教员姓名, 教研室代号, 职称, 专业技术职务等级, 教员类别,
* 性别, 手机号, 身份证号, 备注, 序号, 虚实类型。教员编号不填自动创建,离职状态默认 0。</p>
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@PostMapping("/teacher/import")
public Result<Integer> importTeacher(@RequestParam("file") MultipartFile file) throws Exception {
int count = facultyService.importJYBFromExcel(file);
@@ -238,6 +354,7 @@ public class JYSController {
/**
* 导出全部在职教员到 Excel(.xlsx)。
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@GetMapping("/teacher/export")
public void exportTeacher(HttpServletResponse response) throws Exception {
facultyService.exportJYBExcel(response);
@@ -250,6 +367,7 @@ public class JYSController {
*
* @param jybh 教员编号
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@GetMapping("/teacher/attribute/get")
public Result<JYSX> getTeacherAttribute(@RequestParam("jybh") String jybh) {
JYSX entity = facultyService.getJYSXByJYBH(jybh);
@@ -260,6 +378,7 @@ public class JYSController {
* 更新教员属性
* <p>支持岗位调整(修改职务、职务时间)和技术等级调整(修改技术等级、技术等级时间)。</p>
*/
@PreAuthorize("@ss.hasPermi('teach:teacher:list')")
@PostMapping("/teacher/attribute/update")
public Result<Void> updateTeacherAttribute(@RequestBody JYSX entity) {
facultyService.updateJYSX(entity);
@@ -275,6 +394,7 @@ public class JYSController {
* @param entity 课表实体
* @return 操作结果
*/
@PreAuthorize("@ss.hasPermi('teach:subject:list')")
@PostMapping("/kb/add")
public Result<Void> addKb(@RequestBody KB entity) {
kbService.add(entity);
@@ -288,6 +408,7 @@ public class JYSController {
* @param kbh 课编号
* @return 操作结果
*/
@PreAuthorize("@ss.hasPermi('teach:subject:list')")
@PostMapping("/kb/delete")
public Result<Void> deleteKb(@RequestParam("kbh") String kbh) {
kbService.delete(kbh);
@@ -300,6 +421,7 @@ public class JYSController {
* @param entity 课表实体(须含课编号)
* @return 操作结果
*/
@PreAuthorize("@ss.hasPermi('teach:subject:list')")
@PostMapping("/kb/update")
public Result<Void> updateKb(@RequestBody KB entity) {
kbService.update(entity);
@@ -312,6 +434,7 @@ public class JYSController {
* @param kbh 课编号
* @return 课表详情
*/
@PreAuthorize("@ss.hasPermi('teach:subject:list')")
@GetMapping("/kb/get")
public Result<KB> getKb(@RequestParam("kbh") String kbh) {
return Result.success(kbService.getByKbh(kbh));
@@ -331,6 +454,7 @@ public class JYSController {
* @param jc 简称(模糊,可选)
* @return 分页结果
*/
@PreAuthorize("@ss.hasPermi('teach:subject:list')")
@GetMapping("/kb/list")
public Result<PageResult<KB>> listKb(
@RequestParam(defaultValue = "1") Integer pageNum,
@@ -362,6 +486,7 @@ public class JYSController {
* 支持按授课教员、课程科目名称、可选班次年级、选修班名称、选择课状态、培训层次筛选。
* </p>
*/
@PreAuthorize("@ss.hasPermi('teach:elective:list')")
@GetMapping("/elective/list")
public Result<PageResult<ElectiveCourseVO>> listElective(
@RequestParam(defaultValue = "1") Integer pageNum,
@@ -385,6 +510,7 @@ public class JYSController {
/**
* 新建选修课。
*/
@PreAuthorize("@ss.hasPermi('teach:elective:list')")
@PostMapping("/elective/add")
public Result<Void> addElective(@RequestBody ElectiveCourseSaveDTO dto) {
electiveCourseService.add(dto);
@@ -394,6 +520,7 @@ public class JYSController {
/**
* 所选批量开放报名。
*/
@PreAuthorize("@ss.hasPermi('teach:elective:list')")
@PostMapping("/elective/batch-open")
public Result<Integer> batchOpenElective(@RequestBody ElectiveCourseBatchDTO dto) {
int count = electiveCourseService.batchOpenRegistration(dto == null ? null : dto.getBhList());
@@ -403,6 +530,7 @@ public class JYSController {
/**
* 所选批量取消开放报名。
*/
@PreAuthorize("@ss.hasPermi('teach:elective:list')")
@PostMapping("/elective/batch-cancel-open")
public Result<Integer> batchCancelOpenElective(@RequestBody ElectiveCourseBatchDTO dto) {
int count = electiveCourseService.batchCancelOpenRegistration(dto == null ? null : dto.getBhList());
@@ -412,6 +540,7 @@ public class JYSController {
/**
* 批量停止报名。
*/
@PreAuthorize("@ss.hasPermi('teach:elective:list')")
@PostMapping("/elective/batch-stop")
public Result<Integer> batchStopElective(@RequestBody ElectiveCourseBatchDTO dto) {
int count = electiveCourseService.batchStopRegistration(dto == null ? null : dto.getBhList());
@@ -421,6 +550,7 @@ public class JYSController {
/**
* 所选批量根据学员反向确定班次范围。
*/
@PreAuthorize("@ss.hasPermi('teach:elective:list')")
@PostMapping("/elective/batch-reverse-range")
public Result<Integer> batchReverseRangeElective(@RequestBody ElectiveCourseBatchDTO dto) {
int count = electiveCourseService.batchReverseClassRange(dto == null ? null : dto.getBhList());
@@ -430,6 +560,7 @@ public class JYSController {
/**
* 下载选修班列表。
*/
@PreAuthorize("@ss.hasPermi('teach:elective:list')")
@GetMapping("/elective/export")
public void exportElective(
@RequestParam(required = false) String jyxm,
@@ -452,6 +583,7 @@ public class JYSController {
/**
* 下载选修班学员名单 Excel。
*/
@PreAuthorize("@ss.hasPermi('teach:elective:list')")
@GetMapping("/elective/students/export-excel")
public void exportElectiveStudentExcel(@RequestParam("bhList") List<String> bhList,
HttpServletResponse response) {
@@ -461,6 +593,7 @@ public class JYSController {
/**
* 下载选修班学员名单 Word。
*/
@PreAuthorize("@ss.hasPermi('teach:elective:list')")
@GetMapping("/elective/students/export-word")
public void exportElectiveStudentWord(@RequestParam("bhList") List<String> bhList,
HttpServletResponse response) {
@@ -472,6 +605,7 @@ public class JYSController {
/**
* 上传选修课数据。
*/
@PreAuthorize("@ss.hasPermi('teach:elective:list')")
@PostMapping("/elective/import")
public Result<Integer> importElective(@RequestParam("file") MultipartFile file) throws Exception {
int count = electiveCourseService.importData(file);
@@ -484,6 +618,7 @@ public class JYSController {
* 分页查询教学任务列表。
* <p>含教研室数、学员队数、合班前后课程任务数和学时。未传年度时按当前学期。</p>
*/
@PreAuthorize("@ss.hasPermi('teach:taskPlan:list')")
@GetMapping("/task/list")
public Result<PageResult<TeachingTaskVO>> listTask(
@RequestParam(defaultValue = "1") Integer pageNum,
@@ -503,6 +638,7 @@ public class JYSController {
/**
* 教学任务详情(含教研室任务书、学员队两个页签)。
*/
@PreAuthorize("@ss.hasPermi('teach:taskPlan:list')")
@GetMapping("/task/get")
public Result<TeachingTaskDetailVO> getTask(@RequestParam("bh") String bh) {
return Result.success(teachingTaskManageService.getDetail(bh));
@@ -512,6 +648,7 @@ public class JYSController {
* 新增教学任务。
* <p>机关发布;关联学员队后按专业教学计划和课表归属教研室生成教研室任务书。</p>
*/
@PreAuthorize("@ss.hasPermi('teach:taskPlan:list')")
@PostMapping("/task/add")
public Result<Void> addTask(@RequestBody TeachingTaskSaveDTO dto) {
teachingTaskManageService.add(dto);
@@ -521,6 +658,7 @@ public class JYSController {
/**
* 编辑教学任务。
*/
@PreAuthorize("@ss.hasPermi('teach:taskPlan:list')")
@PostMapping("/task/update")
public Result<Void> updateTask(@RequestBody TeachingTaskSaveDTO dto) {
teachingTaskManageService.update(dto);
@@ -530,6 +668,7 @@ public class JYSController {
/**
* 删除教学任务(同时逻辑删除教研室任务书,并解除学员队关联)。
*/
@PreAuthorize("@ss.hasPermi('teach:taskPlan:list')")
@PostMapping("/task/delete")
public Result<Void> deleteTask(@RequestParam("bh") String bh) {
teachingTaskManageService.delete(bh);
@@ -539,6 +678,7 @@ public class JYSController {
/**
* 发布教学任务,并同步发布关联的教研室任务书。
*/
@PreAuthorize("@ss.hasPermi('teach:taskPlan:list')")
@PostMapping("/task/publish")
public Result<Integer> publishTask(@RequestParam("bh") String bh) {
int count = teachingTaskManageService.publish(bh);
@@ -548,6 +688,7 @@ public class JYSController {
/**
* 结束发布。结束后任务书和课程任务只读。
*/
@PreAuthorize("@ss.hasPermi('teach:taskPlan:list')")
@PostMapping("/task/endPublish")
public Result<Void> endPublishTask(@RequestParam("bh") String bh) {
teachingTaskManageService.endPublish(bh);
@@ -557,6 +698,7 @@ public class JYSController {
/**
* 教研室任务书列表。
*/
@PreAuthorize("@ss.hasPermi('teach:taskPlan:list')")
@GetMapping("/task/office-book/list")
public Result<List<TeachingOfficeBookVO>> listTaskOfficeBooks(@RequestParam("jxrwbh") String jxrwbh) {
return Result.success(teachingTaskManageService.listOfficeBooks(jxrwbh));
@@ -565,6 +707,7 @@ public class JYSController {
/**
* 教研室任务书详细(该教研室在本任务下的课程任务)。
*/
@PreAuthorize("@ss.hasPermi('teach:taskPlan:list')")
@GetMapping("/task/office-book/courses")
public Result<List<TeachingOfficeBookCourseVO>> listTaskOfficeBookCourses(
@RequestParam("jxrwbh") String jxrwbh,
@@ -575,6 +718,7 @@ public class JYSController {
/**
* 教学任务已关联学员队。
*/
@PreAuthorize("@ss.hasPermi('teach:taskPlan:list')")
@GetMapping("/task/squad/list")
public Result<List<TeachingTaskSquadVO>> listTaskSquads(@RequestParam("jxrwbh") String jxrwbh) {
return Result.success(teachingTaskManageService.listBoundSquads(jxrwbh));
@@ -583,6 +727,7 @@ public class JYSController {
/**
* 某学期可选学员队(未占用或占用当前任务)。年度、学期第次为空时取当前学期。
*/
@PreAuthorize("@ss.hasPermi('teach:taskPlan:list')")
@GetMapping("/task/squad/available")
public Result<List<TeachingTaskSquadVO>> listAvailableTaskSquads(
@RequestParam(required = false) Integer nd,
@@ -1,17 +1,26 @@
package com.roomroot.web.controller.jwgl;
import com.roomroot.jwgl.dto.kcb.TimetableGridQuery;
import com.roomroot.jwgl.dto.kcb.TimetableQuery;
import com.roomroot.jwgl.entity.KCB;
import com.roomroot.jwgl.service.KCBService;
import com.roomroot.jwgl.service.TimetableGridService;
import com.roomroot.jwgl.unit.PageQuery;
import com.roomroot.jwgl.unit.PageResult;
import com.roomroot.jwgl.unit.Result;
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.FreePeriodsVO;
import com.roomroot.jwgl.vo.kcb.TimetableGridVO;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import java.nio.charset.StandardCharsets;
import java.util.List;
/**
@@ -24,6 +33,9 @@ public class KCBController {
@Resource
private KCBService kcbService;
@Resource
private TimetableGridService timetableGridService;
/**
* 新增
*/
@@ -133,4 +145,47 @@ public class KCBController {
public void exportClassCourses(TimetableQuery cond, HttpServletResponse response) {
kcbService.exportClassCourses(cond, response);
}
/**
* 周次横版课表网格(手册一第12章)。
* <p>dim=semester|team|teacher|room,id 为对应编号;可传 mbbh 套用课表模板。</p>
*/
@GetMapping("/grid")
public Result<TimetableGridVO> grid(TimetableGridQuery query) {
return Result.success(timetableGridService.grid(query));
}
/**
* 网格课表矩阵 Excel 导出(每周一个 sheet,节次 × 星期)。
*/
@GetMapping("/grid/export")
public ResponseEntity<byte[]> exportGrid(TimetableGridQuery query) {
byte[] bytes = timetableGridService.exportGrid(query);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
String name = "课表_" + query.getDim() + ".xlsx";
headers.setContentDispositionFormData("attachment",
new String(name.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));
return ResponseEntity.ok().headers(headers).body(bytes);
}
/**
* 有课/无课时段查询:按日期给出 busy(有课节次)与 free(无课节次)。
* <p>dim=semester|team|teacher|room,id 为对应编号;start/end 缺省本周。</p>
*/
@GetMapping("/freeSlots")
public Result<FreePeriodsVO> freeSlots(TimetableGridQuery query) {
return Result.success(timetableGridService.freePeriods(query));
}
/**
* 课次综合查询:按 年度/学期/学员队/教员/教室/教研室/学员 组合过滤课次日历。
* <p>学员账号只看本队;教员只看本人;教研室只看本室课程。</p>
*/
@GetMapping("/lessons")
public Result<List<DailyWeeklyTimetableVO>> listLessons(TimetableQuery cond,
@RequestParam(value = "start", required = false) String start,
@RequestParam(value = "end", required = false) String end) {
return Result.success(kcbService.listLessons(cond, start, end));
}
}
@@ -0,0 +1,63 @@
package com.roomroot.web.controller.jwgl;
import com.roomroot.jwgl.entity.KCBMBB;
import com.roomroot.jwgl.service.KCBMBService;
import com.roomroot.jwgl.unit.PageQuery;
import com.roomroot.jwgl.unit.PageResult;
import com.roomroot.jwgl.unit.Result;
import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import java.util.List;
/**
* 课表模版管理(手册一第12章;CRUD + 启停 + 下拉选项)
*/
@RestController
@RequestMapping("/kcbmb")
public class KCBMBController {
@Resource
private KCBMBService kcbmbService;
@GetMapping("/list")
public Result<PageResult<KCBMBB>> list(PageQuery query, @RequestParam(required = false) String mbmc) {
return Result.success(kcbmbService.page(query, mbmc));
}
@GetMapping("/get")
public Result<KCBMBB> get(@RequestParam("bh") String bh) {
return Result.success(kcbmbService.get(bh));
}
/** 可用模板下拉(课表生成页套用选择) */
@GetMapping("/options")
public Result<List<KCBMBB>> options() {
return Result.success(kcbmbService.options());
}
@PostMapping("/add")
public Result<Void> add(@RequestBody KCBMBB tpl) {
kcbmbService.add(tpl);
return Result.success();
}
@PostMapping("/update")
public Result<Void> update(@RequestBody KCBMBB tpl) {
kcbmbService.update(tpl);
return Result.success();
}
@PostMapping("/delete")
public Result<Void> delete(@RequestParam("bh") String bh) {
kcbmbService.delete(bh);
return Result.success();
}
/** 启用/停用模版 */
@PostMapping("/toggle")
public Result<Void> toggle(@RequestParam("bh") String bh, @RequestParam("enabled") boolean enabled) {
kcbmbService.toggle(bh, enabled);
return Result.success();
}
}
@@ -195,6 +195,17 @@ public class KSController {
return Result.success(ksService.pageHourStatistics(new PageQuery(pageNum, pageSize), cond));
}
/**
* 课时核算:按指定自然年的已排课次聚合生成课时统计表(覆盖该年数据)。
* 仅教务人员可执行。
*
* @param year 自然年(可选,默认当前年)
*/
@PostMapping("/hour-stat/recalculate")
public Result<Integer> recalcHourStatistics(@RequestParam(required = false) Integer year) {
return Result.success(ksService.recalcHourStatistics(year));
}
/**
* 导出课时统计 Excel。
*/
@@ -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;
@@ -0,0 +1,109 @@
package com.roomroot.web.controller.jwgl;
import com.roomroot.jwgl.service.MyBusinessService;
import com.roomroot.jwgl.unit.Result;
import com.roomroot.jwgl.vo.kcb.ClassTimetableVO;
import com.roomroot.jwgl.vo.kcb.DailyWeeklyTimetableVO;
import com.roomroot.jwgl.vo.kcb.TimetableGridVO;
import com.roomroot.jwgl.vo.mybusiness.MyCourseTaskVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
* 「我的教学」角色视图接口(阶段 C)。
*
* <p>教员/教研室/学员维度全部由服务端按登录身份解析,
* 不接受调用方传入他人编号。</p>
*/
@RestController
@RequestMapping("/my")
public class MyBusinessController {
@Autowired
private MyBusinessService myBusinessService;
// ==================== 教员 ====================
/** 本教员课程任务 */
@GetMapping("/teacher/courses")
public Result<List<MyCourseTaskVO>> teacherCourses(@RequestParam(value = "nd", required = false) Integer nd,
@RequestParam(value = "xqdc", required = false) Integer xqdc) {
return Result.success(myBusinessService.teacherCourses(nd, xqdc));
}
/** 本教员实施计划(默认本周) */
@GetMapping("/teacher/lessons")
public Result<List<DailyWeeklyTimetableVO>> teacherLessons(@RequestParam(value = "start", required = false) String start,
@RequestParam(value = "end", required = false) String end,
@RequestParam(value = "nd", required = false) Integer nd) {
return Result.success(myBusinessService.teacherLessons(start, end, nd));
}
/** 本教员课表网格 */
@GetMapping("/teacher/grid")
public Result<TimetableGridVO> teacherGrid(@RequestParam(value = "mbbh", required = false) String mbbh,
@RequestParam(value = "start", required = false) String start,
@RequestParam(value = "end", required = false) String end,
@RequestParam(value = "nd", required = false) Integer nd) {
return Result.success(myBusinessService.teacherGrid(mbbh, start, end, nd));
}
// ==================== 教研室 ====================
/** 今日本室计划 */
@GetMapping("/office/today")
public Result<List<DailyWeeklyTimetableVO>> officeToday(@RequestParam(value = "rq", required = false) String rq,
@RequestParam(value = "offset", required = false) Integer offset) {
return Result.success(myBusinessService.officeToday(rq, offset));
}
/** 本室课程 */
@GetMapping("/office/courses")
public Result<List<ClassTimetableVO>> officeCourses(@RequestParam(value = "nd", required = false) Integer nd,
@RequestParam(value = "xqdc", required = false) Integer xqdc) {
return Result.success(myBusinessService.officeCourses(nd, xqdc));
}
/** 本室教员清单 */
@GetMapping("/office/teachers")
public Result<List<Map<String, Object>>> officeTeachers() {
return Result.success(myBusinessService.officeTeachers());
}
// ==================== 学员 ====================
/** 本学员队课程列表 */
@GetMapping("/student/courses")
public Result<List<ClassTimetableVO>> studentCourses(@RequestParam(value = "nd", required = false) Integer nd,
@RequestParam(value = "xqdc", required = false) Integer xqdc) {
return Result.success(myBusinessService.studentCourses(nd, xqdc));
}
/** 本学员队课次(默认本周) */
@GetMapping("/student/lessons")
public Result<List<DailyWeeklyTimetableVO>> studentLessons(@RequestParam(value = "start", required = false) String start,
@RequestParam(value = "end", required = false) String end) {
return Result.success(myBusinessService.studentLessons(start, end));
}
/** 本学员队课表网格 */
@GetMapping("/student/grid")
public Result<TimetableGridVO> studentGrid(@RequestParam(value = "mbbh", required = false) String mbbh,
@RequestParam(value = "start", required = false) String start,
@RequestParam(value = "end", required = false) String end,
@RequestParam(value = "nd", required = false) Integer nd) {
return Result.success(myBusinessService.studentGrid(mbbh, start, end, nd));
}
/** 本学员队干部清单 */
@GetMapping("/team/cadres")
public Result<List<Map<String, Object>>> teamCadres() {
return Result.success(myBusinessService.teamCadres());
}
}
@@ -1,11 +1,19 @@
package com.roomroot.web.controller.jwgl;
import com.roomroot.common.exception.ServiceException;
import com.roomroot.jwgl.dto.scheduling.SchedulingArrangeRequest;
import com.roomroot.jwgl.dto.scheduling.SchedulingCellOpRequest;
import com.roomroot.jwgl.dto.scheduling.SchedulingCourseEditRequest;
import com.roomroot.jwgl.dto.scheduling.SchedulingMoveRequest;
import com.roomroot.jwgl.service.RunningCoursePublishService;
import com.roomroot.jwgl.service.SchedulingWindowService;
import com.roomroot.jwgl.unit.Result;
import com.roomroot.jwgl.vo.scheduling.SchedulingViewVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -13,6 +21,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -29,9 +40,27 @@ public class SchedulingWindowController {
@Autowired
private SchedulingWindowService schedulingWindowService;
@Autowired
private RunningCoursePublishService runningCoursePublishService;
/**
* 导出排课窗视图 Excel:每周一个 sheet(节次×星期网格,阶段 E4)。
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:list')")
@GetMapping("/export")
public ResponseEntity<byte[]> export(@RequestParam("xydxqbh") String xydxqbh) {
byte[] bytes = schedulingWindowService.exportView(xydxqbh);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment",
new String("排课窗口.xlsx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));
return ResponseEntity.ok().headers(headers).body(bytes);
}
/**
* 排课窗组合视图:班次头 + 课程列表(排满标绿)+ 周次×星期×节次格子。
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:list')")
@GetMapping("/view")
public Result<SchedulingViewVO> view(@RequestParam("xydxqbh") String xydxqbh) {
return Result.success(schedulingWindowService.view(xydxqbh));
@@ -40,14 +69,26 @@ public class SchedulingWindowController {
/**
* 安排所选节次。硬冲突格忽略并列出,软提示格照常安排并给出提示。
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:edit')")
@PostMapping("/arrange")
public Result<Map<String, Object>> arrange(@RequestBody SchedulingArrangeRequest request) {
return Result.success(schedulingWindowService.arrange(request));
}
/**
* 拖拽移动课次:把 from 格的课次平移到 to 格(阶段 E4)。
* 目标格走与 arrange 相同的硬冲突校验;软提示照常移动并返回 warning。
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:edit')")
@PostMapping("/move")
public Result<Map<String, Object>> move(@RequestBody SchedulingMoveRequest request) {
return Result.success(schedulingWindowService.moveLesson(request));
}
/**
* 删除所选节次:仅删除该课程在这些格上的课次;已提交实施计划的课次拒绝。
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:edit')")
@PostMapping("/deleteCells")
public Result<Integer> deleteCells(@RequestBody SchedulingCellOpRequest request) {
return Result.success(schedulingWindowService.deleteCells(request));
@@ -56,6 +97,7 @@ public class SchedulingWindowController {
/**
* 删除课程全部节次(课程仍留在列表)。
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:edit')")
@PostMapping("/clearCourse")
public Result<Integer> clearCourse(@RequestParam("sskcbh") String sskcbh) {
return Result.success(schedulingWindowService.clearCourse(sskcbh));
@@ -64,6 +106,7 @@ public class SchedulingWindowController {
/**
* 彻底删除运行课程:课次与列表项一起删,编制侧任务保留(教员不可用)。
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:edit')")
@PostMapping("/deleteCourse")
public Result<Integer> deleteCourse(@RequestParam("sskcbh") String sskcbh) {
return Result.success(schedulingWindowService.deleteCourse(sskcbh));
@@ -72,9 +115,97 @@ public class SchedulingWindowController {
/**
* 排课日志查询:按课程(可叠加操作类型)。
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:list')")
@GetMapping("/logs")
public Result<List<Map<String, Object>>> logs(@RequestParam("sskcbh") String sskcbh,
@RequestParam(value = "czlx", required = false) String czlx) {
return Result.success(schedulingWindowService.logs(sskcbh, czlx));
}
/**
* 编辑课程教学任务信息(手册 12.3.1):学时/周课时/课程简称/责任教员/默认场地。
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:edit')")
@PostMapping("/course/update")
public Result<Map<String, Object>> updateCourse(@RequestBody SchedulingCourseEditRequest request) {
return Result.success(schedulingWindowService.updateCourse(request));
}
/**
* 教学班次(合班)当前列表 + 候选班次(手册 12.3.2.2)。
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:list')")
@GetMapping("/course/teams")
public Result<Map<String, Object>> courseTeams(@RequestParam("sskcbh") String sskcbh) {
return Result.success(schedulingWindowService.courseTeams(sskcbh));
}
/**
* 教学保障选项:保障类别 + 保障资源(含总量与计量单位,手册 12.3.2.5)。
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:list')")
@GetMapping("/support/options")
public Result<Map<String, Object>> supportOptions() {
return Result.success(schedulingWindowService.supportOptions());
}
/**
* 批量发布【运行课表】(手册 12.1):把班次学期的课程任务发布为运行课程。
*
* <p>发布前要求教学任务已发布未结束、责任教员与默认场地齐备;逐个班次独立事务,
* 单个失败不影响其它班次,失败原因逐条返回。</p>
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:edit')")
@PostMapping("/publish")
public Result<List<Map<String, Object>>> publish(@RequestBody PublishRequest request) {
return Result.success(batchPublish(request, true));
}
/**
* 批量删除【运行课表】(手册 12.2):撤回该班次学期的运行课程,已排课次一并删除。
*/
@PreAuthorize("@ss.hasPermi('teach:schedulingWindow:edit')")
@PostMapping("/withdraw")
public Result<List<Map<String, Object>>> withdraw(@RequestBody PublishRequest request) {
return Result.success(batchPublish(request, false));
}
/** 批量发布/撤回公共实现 */
private List<Map<String, Object>> batchPublish(PublishRequest request, boolean publish) {
if (request == null || request.getXydxqbhs() == null || request.getXydxqbhs().isEmpty()) {
throw new ServiceException("请选择要操作的班次学期", 400);
}
List<Map<String, Object>> results = new ArrayList<>();
for (String xydxqbh : request.getXydxqbhs()) {
Map<String, Object> item = new HashMap<>();
item.put("xydxqbh", xydxqbh);
try {
int count = publish
? runningCoursePublishService.publish(xydxqbh)
: runningCoursePublishService.withdraw(xydxqbh);
item.put("success", true);
item.put("count", count);
item.put("message", publish ? ("已发布 " + count + " 条运行课程") : ("已删除 " + count + " 条运行课程"));
} catch (Exception e) {
item.put("success", false);
item.put("count", 0);
item.put("message", e.getMessage() == null ? "操作失败" : e.getMessage());
}
results.add(item);
}
return results;
}
/** 批量发布/删除请求体 */
public static class PublishRequest {
private List<String> xydxqbhs;
public List<String> getXydxqbhs() {
return xydxqbhs;
}
public void setXydxqbhs(List<String> xydxqbhs) {
this.xydxqbhs = xydxqbhs;
}
}
}
@@ -3,6 +3,8 @@ package com.roomroot.web.controller.jwgl;
import com.roomroot.jwgl.entity.XYXX;
import com.roomroot.jwgl.entity.XYDNDXQJBXXB;
import com.roomroot.jwgl.entity.XYDB;
import com.roomroot.jwgl.entity.XYDQB;
import com.roomroot.jwgl.entity.KB;
import com.roomroot.jwgl.entity.PXRW;
import com.roomroot.jwgl.entity.XYXJYDSQB;
import com.roomroot.jwgl.entity.XYXJYJJGB;
@@ -94,6 +96,23 @@ public class StudentRecordsController {
return Result.success(studentRecordsService.pageList(query, xyxx));
}
/**
* 学员队期下拉选项(编号+名称),供学员信息表单选择学员队期编号。
*/
@GetMapping("/period-options")
public Result<List<XYDQB>> periodOptions() {
return Result.success(studentRecordsService.listPeriodOptions());
}
/**
* 课程科目下拉选项(课编号+课名称),供学员成绩查询等页面使用。
* 与 /jys/kb/list 不同,本接口不带教研室权限要求。
*/
@GetMapping("/kb-options")
public Result<List<KB>> kbOptions() {
return Result.success(studentRecordsService.listKbOptions());
}
// ======================== 学员信息批量导入 ========================
/**
@@ -501,9 +520,10 @@ public class StudentRecordsController {
@RequestParam(required = false) String kcbh,
@RequestParam(required = false) String xydbh,
@RequestParam(required = false) String xh,
@RequestParam(required = false) String xybh,
@RequestParam(required = false) Integer nd) {
return Result.success(studentRecordsService.pageCourseGrades(
new PageQuery(pageNum, pageSize), kcbh, xydbh, xh, nd));
new PageQuery(pageNum, pageSize), kcbh, xydbh, xh, xybh, nd));
}
/**
@@ -0,0 +1,50 @@
package com.roomroot.web.controller.jwgl;
import com.roomroot.jwgl.entity.DBVersion;
import com.roomroot.jwgl.entity.JCSJB;
import com.roomroot.jwgl.service.ClassPeriodService;
import com.roomroot.jwgl.service.SystemSettingsService;
import com.roomroot.jwgl.unit.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 教务系统参数(DBVersion 单行,阶段 E1)。
*
* <p>当前开放字段:显示78节(xs78j)、显示晚上(xsws)、显示夜间(xsyj)、
* 教学要点名称(jxydmc)。更新只写非空字段。</p>
*/
@RestController
@RequestMapping("/systemSettings")
public class SystemSettingsController {
@Autowired
private SystemSettingsService systemSettingsService;
@Autowired
private ClassPeriodService classPeriodService;
/** 读取系统参数 */
@GetMapping("/get")
public Result<DBVersion> get() {
return Result.success(systemSettingsService.get());
}
/** 节次段字典:节次时间表的双节次行,供日历编辑器渲染节次列 */
@GetMapping("/periodSlots")
public Result<List<JCSJB>> periodSlots() {
return Result.success(classPeriodService.slotRows());
}
/** 更新系统参数(只写非空字段) */
@PostMapping("/update")
public Result<DBVersion> update(@RequestBody DBVersion settings) {
return Result.success(systemSettingsService.update(settings));
}
}
@@ -1,5 +1,8 @@
package com.roomroot.web.controller.jwgl;
import com.roomroot.jwgl.dto.taskbook.TaskBookBatchFillRequest;
import com.roomroot.jwgl.dto.taskbook.TaskBookBatchRoomRequest;
import com.roomroot.jwgl.dto.taskbook.TaskBookBatchTeacherRequest;
import com.roomroot.jwgl.dto.taskbook.TaskBookBhListRequest;
import com.roomroot.jwgl.dto.taskbook.TaskBookFillRequest;
import com.roomroot.jwgl.dto.taskbook.TaskBookRoomRequest;
@@ -34,8 +37,9 @@ public class TaskBookFillController {
* 填报列表:某教学任务下全部课程任务行(排序 课程→责任教员→课次,含合班分组号)。
*/
@GetMapping("/list")
public Result<List<TaskBookRowVO>> list(@RequestParam("jxrwbh") String jxrwbh) {
return Result.success(taskBookFillService.list(jxrwbh));
public Result<List<TaskBookRowVO>> list(@RequestParam("jxrwbh") String jxrwbh,
@RequestParam(value = "jybh", required = false) String jybh) {
return Result.success(taskBookFillService.list(jxrwbh, jybh));
}
/**
@@ -80,10 +84,50 @@ public class TaskBookFillController {
}
/**
* 填报字段:计划教员 / 场地(同合班同步)/ 排课建议。
* 填报字段:计划教员 / 场地(同合班同步)/ 排课建议 / 课次序号。
*/
@PostMapping("/fill")
public Result<Integer> fill(@RequestBody TaskBookFillRequest request) {
return Result.success(taskBookFillService.fill(request));
}
/**
* 批量指定责任教员:对每行执行与 setTeacher 相同的校验与合班组同步。
*/
@PostMapping("/batchSetTeacher")
public Result<Integer> batchSetTeacher(@RequestBody TaskBookBatchTeacherRequest request) {
return Result.success(taskBookFillService.batchSetTeacher(request));
}
/**
* 批量指定场地:对每行执行与 setRoom 相同的校验与合班组同步。
*/
@PostMapping("/batchSetRoom")
public Result<Integer> batchSetRoom(@RequestBody TaskBookBatchRoomRequest request) {
return Result.success(taskBookFillService.batchSetRoom(request));
}
/**
* 批量填报:对所选行统一应用填报字段(仅写非空),单事务。
*/
@PostMapping("/batchFill")
public Result<Integer> batchFill(@RequestBody TaskBookBatchFillRequest request) {
return Result.success(taskBookFillService.batchFill(request));
}
/**
* 行级删除:所选课程任务行逻辑删除;已发布到运行课表的班次须先撤回。
*/
@PostMapping("/deleteRows")
public Result<Integer> deleteRows(@RequestBody TaskBookBhListRequest request) {
return Result.success(taskBookFillService.deleteRows(request));
}
/**
* 教研室跨任务汇总:该教研室全部任务书(附教学任务名称/年度/状态)。
*/
@GetMapping("/officeSummary")
public Result<List<Map<String, Object>>> officeSummary(@RequestParam("jysdh") String jysdh) {
return Result.success(taskBookFillService.officeSummary(jysdh));
}
}
@@ -70,4 +70,16 @@ public class TeacherCalendarController {
public Result<List<JYL>> listByRq(@RequestParam("rq") String rq) {
return Result.success(jylService.listByRq(rq));
}
/** 批量保存教员历(教员历编辑器整片提交,按 教员+日期+节次 幂等覆盖) */
@PostMapping("/batchSave")
public Result<Integer> batchSave(@RequestBody List<JYL> list) {
return Result.success(jylService.batchSave(list));
}
/** 批量删除教员历(本表无 del_flag,物理删除) */
@PostMapping("/batchDelete")
public Result<Integer> batchDelete(@RequestBody List<String> bhs) {
return Result.success(jylService.batchDelete(bhs));
}
}
@@ -72,6 +72,17 @@ public class TeachingAllocationController {
return Result.success(teachingAllocationService.setGroup(request));
}
/**
* 自动排布:按铺学时建议把计算起始周回填到 pdqsz。
* onlyMissing=true(辅助排布)只补未设起始周的任务;body 可选传任务编号列表限定范围。
*/
@PostMapping("/autoArrange")
public Result<Integer> autoArrange(@RequestParam("xydxqbh") String xydxqbh,
@RequestParam(value = "onlyMissing", defaultValue = "false") boolean onlyMissing,
@RequestBody(required = false) List<String> bhList) {
return Result.success(teachingAllocationService.autoArrange(xydxqbh, bhList, onlyMissing));
}
/**
* 导出配当 Excel(支持批量:xydxqbh 逗号分隔)。
*/
@@ -92,11 +92,8 @@ public class TeachingPlanController {
* 下载教学实施计划导入模板
*/
@GetMapping("/template")
public ResponseEntity<org.springframework.core.io.Resource> downloadTemplate() throws IOException {
ClassPathResource resource = new ClassPathResource("template/教学实施计划导入模板.xlsx");
if (!resource.exists()) {
return ResponseEntity.notFound().build();
}
public ResponseEntity<byte[]> 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);
}
}
@@ -81,15 +81,15 @@ public class TeachingTaskController {
}
/**
* 发布教学任务及教研室任务书
* 根据教学任务编号修改状态为"发布",并批量更新所有关联的教研室任务书状态为"发布"
* 批量发布教学任务及教研室任务书
* 逐个任务置"发布"并同步教研室任务书;任一校验失败(已结束/任务书未生成)整批回滚。
*
* @param bh 教学任务编号
* @return 更新数量
* @param bhList 教学任务编号列表
* @return 更新的教研室任务书行数合计
*/
@PostMapping("/batchPublish")
public Result<Integer> batchPublish(@RequestParam("bh") String bh) {
int count = teachingTaskService.batchPublish(bh);
public Result<Integer> batchPublish(@RequestBody List<String> bhList) {
int count = teachingTaskService.batchPublish(bhList);
return Result.success(count);
}
@@ -101,4 +101,13 @@ public class TeachingTaskController {
teachingTaskService.endPublish(bh);
return Result.success();
}
/**
* 导出教学任务书 Excel(该教学任务下全部教研室任务书课程明细)。
*/
@GetMapping("/exportTaskBook")
public void exportTaskBook(jakarta.servlet.http.HttpServletResponse response,
@RequestParam("bh") String bh) throws Exception {
teachingTaskService.exportTaskBook(response, bh);
}
}
@@ -108,7 +108,8 @@ public class TrainingProgramController {
@RequestParam(required = false) String zymc,
@RequestParam(required = false) String zydm,
@RequestParam(required = false) String pxlx,
@RequestParam(required = false) String pxcc) {
@RequestParam(required = false) String pxcc,
@RequestParam(required = false) Boolean ty) {
PageQuery query = new PageQuery();
query.setPageNum(pageNum);
query.setPageSize(pageSize);
@@ -117,14 +118,23 @@ public class TrainingProgramController {
cond.setZydm(zydm);
cond.setPxlx(pxlx);
cond.setPxcc(pxcc);
cond.setTy(ty);
PageResult<ZYB> pageResult = trainingProgramService.pageList(query, cond);
return Result.success(pageResult);
}
/**
* 培养方案目录导入模板(仅表头,含学年制、学期数等必填列)。
*/
@GetMapping("/template")
public void downloadTemplate(HttpServletResponse response) throws Exception {
trainingProgramService.exportZYBTemplate(response);
}
/**
* 培养方案(专业)数据文件导入(.xls/.xlsx)。
* <p>表头顺序:专业代号, 专业名称, 专业代码, 专业版本, 培训类型, 培训层次, 学年制,
* 学期数, 专业方向, 专业备注, 学员类别, 简称, 培训类型2。专业代号不填自动生成。</p>
* <p>按列名匹配:专业代号, 专业名称, 专业代码, 专业版本, 培训类型, 培训层次, 学年制,
* 学期数, 专业方向, 专业备注, 学员类别, 简称, 培训类型2。专业代号不填自动生成;学年制、学期数必填。</p>
*/
@PostMapping("/import")
public Result<Integer> importData(@RequestParam("file") MultipartFile file) throws Exception {
@@ -92,13 +92,23 @@ public class ZYJXJHBController {
/**
* 专业教学计划表数据文件导入(.xls/.xlsx)。
* <p>表头顺序:专业代号, 课编号, 学期第次, 课类型, 学时, 学分, 周课时, 课程定位,
* 模块, 成绩分制, 理论学时, 实践学时, 考试课时, 教研室代号, 简称。编号由系统自动生成。</p>
* <p>按表头名匹配列(列位置不限),推荐使用 /template 下载的模板填写。
* 必填列:专业代号、课编号、学期第次、课类型、学时;
* "专业代号+课编号+学期第次"已存在的行跳过,校验失败行返回行级明细。</p>
*/
@PostMapping("/import")
public Result<Integer> importData(@RequestParam("file") MultipartFile file) throws Exception {
int count = zyjxjhbService.importZYJXJHBFromExcel(file);
return Result.success("导入成功,共" + count + "条", count);
public Result<com.roomroot.jwgl.vo.syllabus.SyllabusImportResultVO> importData(
@RequestParam("file") MultipartFile file) throws Exception {
com.roomroot.jwgl.vo.syllabus.SyllabusImportResultVO result = zyjxjhbService.importExcel(file);
return Result.success(result.getMessage(), result);
}
/**
* 下载教学大纲导入模板(数据 sheet + 填写说明 sheet)。
*/
@GetMapping("/template")
public void downloadTemplate(HttpServletResponse response) throws Exception {
zyjxjhbService.downloadTemplate(response);
}
/**
@@ -109,7 +119,8 @@ public class ZYJXJHBController {
public void exportData(
HttpServletResponse response,
@RequestParam(required = false) String zydh,
@RequestParam(required = false) Integer ty) throws Exception {
zyjxjhbService.exportZYJXJHBExcel(response, zydh, ty);
@RequestParam(required = false) Integer ty,
@RequestParam(required = false) List<String> bhList) throws Exception {
zyjxjhbService.exportZYJXJHBExcel(response, zydh, ty, bhList);
}
}
@@ -3,10 +3,10 @@ spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
# 达梦连接串:ip:端口,schema指定默认模式
url: jdbc:dm://10.1.1.17:5236?schema=JIAOWU&useUnicode=true&characterEncoding=utf-8
username: JIAOWU
url: jdbc:opengauss://10.1.1.17:5436/jwgl?currentSchema=jwgl&batchMode=off&stringtype=unspecified
username: jwgl
password: Jiaowu123
driver-class-name: dm.jdbc.driver.DmDriver
driver-class-name: org.opengauss.Driver
# Druid 基础参数
druid:
@@ -29,7 +29,7 @@ spring:
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
@@ -0,0 +1,40 @@
package com.roomroot.framework.config;
import org.springframework.boot.jackson.autoconfigure.JsonMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import tools.jackson.databind.ext.javatime.deser.LocalDateTimeDeserializer;
import tools.jackson.databind.json.JsonMapper;
import tools.jackson.databind.module.SimpleModule;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
/**
* 兼容前端常用的 {@code yyyy-MM-dd HH:mm:ss} 与 ISO {@code yyyy-MM-ddTHH:mm:ss}。
*/
@Configuration
public class JacksonConfig {
@Bean
public JsonMapperBuilderCustomizer flexibleLocalDateTimeCustomizer() {
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.append(DateTimeFormatter.ISO_LOCAL_DATE)
.optionalStart()
.optionalStart().appendLiteral('T').optionalEnd()
.optionalStart().appendLiteral(' ').optionalEnd()
.append(DateTimeFormatter.ISO_LOCAL_TIME)
.optionalEnd()
.parseDefaulting(java.time.temporal.ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(java.time.temporal.ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(java.time.temporal.ChronoField.SECOND_OF_MINUTE, 0)
.toFormatter();
return (JsonMapper.Builder builder) -> {
SimpleModule module = new SimpleModule("FlexibleLocalDateTime");
module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(formatter));
builder.addModule(module);
};
}
}
@@ -0,0 +1,22 @@
package com.roomroot.jwgl.dto.calendar;
import lombok.Data;
import java.util.List;
/**
* 班历批量保存入参。一次拖选产生的所有时间格在单事务内 upsert。
*/
@Data
public class ClassCalendarBatchSaveDTO {
/**
* 学员队学期编号(班次学期)
*/
private String xydxqbh;
/**
* 时间格列表。cell.action = "clear" 表示恢复默认(清名称、可排课)。
*/
private List<ClassCalendarEventDTO> cells;
}
@@ -21,4 +21,9 @@ public class ClassCalendarEventDTO {
private Boolean zdpk;
private Boolean zk;
private String courseClass;
/**
* 批量保存动作:"clear" 表示恢复默认(清名称、可排课);空或其它值按事件内容写入。
*/
private String action;
}
@@ -16,4 +16,16 @@ public class AddTeacherDTO {
/** 教员属性信息(含职务、技术等级、学历学位等非空字段) */
private JYSX attributes;
/** 是否同时创建系统账号 */
private Boolean createUser;
/** 登录名(空则取教员编号) */
private String loginName;
/** 初始密码明文(空则取统一初始值) */
private String password;
/** 角色ID(空则取默认教员角色 101) */
private Long roleId;
}
@@ -0,0 +1,32 @@
package com.roomroot.jwgl.dto.faculty;
import com.roomroot.jwgl.entity.JYB;
import lombok.Data;
/**
* 教员(教员表)导入行解析结果。
* <p>
* 保留 Excel 中的原始行号,便于把校验失败原因定位到具体行。
* </p>
*/
@Data
public class TeacherImportRowDTO {
/**
* Excel 行号(1 起始,含表头行)。
*/
private int rowNum;
/**
* 该行解析出的教员实体。
*/
private JYB entity;
public TeacherImportRowDTO() {
}
public TeacherImportRowDTO(int rowNum, JYB entity) {
this.rowNum = rowNum;
this.entity = entity;
}
}
@@ -35,6 +35,9 @@ public class ElectiveCourseSaveDTO {
/** 教室编号 */
private String jsbh;
/** 教材名称(按名称匹配教材信息,写入课程教材关联) */
private String jcmc;
/** 计划人数 */
private Integer rs;
@@ -0,0 +1,30 @@
package com.roomroot.jwgl.dto.kcb;
import lombok.Data;
/**
* 课表网格查询参数(手册一第12章 课表生成)。
* <p>dim 维度:semester 班次学期 / team 学员队 / teacher 教员 / room 教室。
* id 为对应维度主键(xydxqbh / xydbh / jybh / jsbh)。</p>
*/
@Data
public class TimetableGridQuery {
/** 维度:semester | team | teacher | room */
private String dim;
/** 维度目标编号 */
private String id;
/** 年度(校历/备注取数用;semester 维度自动从班次学期带出) */
private Integer nd;
/** 起始日期 yyyy-MM-dd;空时 semester 取学期范围,其它维度取本周 */
private String start;
/** 结束日期 yyyy-MM-dd */
private String end;
/** 课表模板编号(可选;套用模板显示开关:78节/晚上/夜间/选修/天数) */
private String mbbh;
}
@@ -2,6 +2,8 @@ package com.roomroot.jwgl.dto.kcb;
import lombok.Data;
import java.util.List;
/**
* 班次课表查询条件。
* <p>未传年度、学期时按当前时间取本学期。</p>
@@ -20,4 +22,19 @@ public class TimetableQuery {
/** 学员队名称(队别班次模糊) */
private String xydmc;
/** 教员编号(主讲/辅讲/责任教员任一命中) */
private String jybh;
/** 教室编号(课次场地或课程默认场地任一命中) */
private String jsbh;
/** 教研室代号(按课程归属教研室过滤) */
private String jysdh;
/** 学员编号(服务端解析为其所在学员队后按队过滤) */
private String xybh;
/** 教员编号集合(教研室等批量范围过滤用) */
private List<String> jybhs;
}
@@ -42,9 +42,32 @@ public class SchedulingArrangeRequest {
/** 主讲教员,缺省用课程责任教员 */
private String jybh;
/** 教学班次(学员队编号,本课程默认全部合班班次,可临时增删) */
private List<String> xydbhs;
/** 辅讲教员编号(可多个) */
private List<String> fzjybhs;
/** 教学场地(可多场地),为空则用 jsbh / 课程默认场地 */
private List<String> jsbhs;
/** 教学保障需求(结构化:类别→资源→数量) */
private List<Support> supports;
/** 所选格子 */
private List<Cell> cells;
/** 教学保障需求项 */
@Data
public static class Support {
/** 保障提供明细编号(保障资源库) */
private String bztgmxbh;
/** 需求数量 */
private Integer sl;
/** 备注 */
private String bz;
}
@Data
public static class Cell {
/** 日期 yyyy-MM-dd */
@@ -0,0 +1,31 @@
package com.roomroot.jwgl.dto.scheduling;
import lombok.Data;
/**
* 排课窗口内「编辑课程教学任务信息」请求(手册 12.3.1)。
*
* <p>只允许改运行编制的可调项:学时、周课时、课程简称、责任教员、默认场地。
* 课程简称写回学员队任务表(编制侧)后运行课程同步显示。</p>
*/
@Data
public class SchedulingCourseEditRequest {
/** 实施_课程编号 */
private String sskcbh;
/** 学时 */
private Integer xs;
/** 周课时 */
private Integer zks;
/** 课程简称 */
private String jc;
/** 责任教员编号 */
private String jybh;
/** 默认教学场地(教室编号) */
private String jsbh;
}
@@ -0,0 +1,20 @@
package com.roomroot.jwgl.dto.scheduling;
import lombok.Data;
/**
* 拖拽移动课次请求(阶段 E4):把课程在 from 格的课次平移到 to 格。
* 目标格沿用 arrange 的硬冲突校验;软提示(配当周次不符)照常移动并返回 warning。
*/
@Data
public class SchedulingMoveRequest {
/** 实施_课程编号 */
private String sskcbh;
/** 源格(已有课次) */
private SchedulingArrangeRequest.Cell from;
/** 目标格 */
private SchedulingArrangeRequest.Cell to;
}
@@ -0,0 +1,30 @@
package com.roomroot.jwgl.dto.taskbook;
import lombok.Data;
import java.util.List;
/**
* 批量填报请求:对所选课程任务行统一应用填报字段(仅写非空字段)。
*/
@Data
public class TaskBookBatchFillRequest {
/** 课程任务编号列表 */
private List<String> bhList;
/** 教研室计划教员编号 */
private String jysjhjybh;
/** 场地编号(useSpecial=true 时忽略,取班次专用教室) */
private String jsbh;
/** 使用班次专用教室 */
private Boolean useSpecial;
/** 排课建议(教研室计划备注) */
private String jysjhbz;
/** 课次序号 */
private Integer kcxh;
}
@@ -0,0 +1,21 @@
package com.roomroot.jwgl.dto.taskbook;
import lombok.Data;
import java.util.List;
/**
* 批量指定场地请求。
*/
@Data
public class TaskBookBatchRoomRequest {
/** 课程任务编号列表 */
private List<String> bhList;
/** 教室编号(useSpecial=false 时必传) */
private String jsbh;
/** true=使用各行班次专用教室(忽略 jsbh,取各班次学期.专用教室编号) */
private Boolean useSpecial;
}
@@ -0,0 +1,26 @@
package com.roomroot.jwgl.dto.taskbook;
import lombok.Data;
import java.util.List;
/**
* 批量指定责任教员请求。
*/
@Data
public class TaskBookBatchTeacherRequest {
/** 课程任务编号列表 */
private List<String> bhList;
/**
* 指定方式:
* unit — 责任单位教员(教员必须属于各行教研室 jysdh);
* academy — 全院教员(任意在职教员);
* plan — 应用各行教研室计划教员(jybh = 各行 jysjhjybh)。
*/
private String mode;
/** 责任教员编号(mode=unit / academy 时必传) */
private String jybh;
}
@@ -19,4 +19,7 @@ public class TaskBookFillRequest {
/** 排课建议(教研室计划备注) */
private String jysjhbz;
/** 课次序号(课序设置;非空时写入) */
private Integer kcxh;
}
@@ -1,7 +1,6 @@
package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import java.time.LocalDateTime;
* 班次课堂教学日志_授课教员
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("班次课堂教学日志_授课教员")
public class BCKTJXRZSKJY extends BaseEntity {
public class BCKTJXRZSKJY {
@TableId(value = "编号", type = IdType.INPUT)
private String bh;
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 班次学期教材需求表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("班次学期教材需求表")
public class BCXQJCXQB extends BaseEntity {
public class BCXQJCXQB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 补考
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("补考")
public class BK extends BaseEntity {
public class BK {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 补考地点表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("补考地点表")
public class BKDDB extends BaseEntity {
public class BKDDB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 补考监考表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("补考监考表")
public class BKJKB extends BaseEntity {
public class BKJKB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 补考学员
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("补考学员")
public class BKXY extends BaseEntity {
public class BKXY {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 保障明细
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("保障明细")
public class BZMX extends BaseEntity {
public class BZMX {
/**
* 编号
@@ -1,9 +1,9 @@
package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +11,8 @@ import lombok.EqualsAndHashCode;
* 保障提供明细
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("保障提供明细")
public class BZTGMX extends BaseEntity {
public class BZTGMX {
/**
* 编号
@@ -24,66 +23,79 @@ public class BZTGMX extends BaseEntity {
/**
* 保障类别编号
*/
@TableField("保障类别编号")
private String bzlbbh;
/**
* 名称
*/
@TableField("名称")
private String mc;
/**
* 单位
*/
@TableField("单位")
private String dw;
/**
* 数量
*/
@TableField("数量")
private Integer sl;
/**
* 备注
*/
@TableField("备注")
private String bz;
/**
* 停用
*/
@TableField("停用")
private Integer ty;
/**
* 健康状态
*/
@TableField("健康状态")
private Float jkzt;
/**
* 详细
*/
@TableField("详细")
private String xx;
/**
* 耗材
*/
@TableField("耗材")
private Integer hc;
/**
* 拼音
*/
@TableField("拼音")
private String py;
/**
* 资源类别
*/
@TableField("资源类别")
private String zylb;
/**
* JSONZD
*/
@TableField("JSONZD")
private String jsonzd;
/**
* 危险品
*/
@TableField("危险品")
private Integer wxp;
}
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 成绩更改日志
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("成绩更改日志")
public class CJGGRZ extends BaseEntity {
public class CJGGRZ {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 测评_参评人员表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("测评_参评人员表")
public class CPCPRYB extends BaseEntity {
public class CPCPRYB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 测评_参评业务机关表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("测评_参评业务机关表")
public class CPCPYWJGB extends BaseEntity {
public class CPCPYWJGB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 测评_机关评价记录表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("测评_机关评价记录表")
public class CPJGPJJLB extends BaseEntity {
public class CPJGPJJLB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 测评_年度测评表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("测评_年度测评表")
public class CPNDCPB extends BaseEntity {
public class CPNDCPB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 测评_评测登记表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("测评_评测登记表")
public class CPPCDJB extends BaseEntity {
public class CPPCDJB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 测评_同行评价记录表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("测评_同行评价记录表")
public class CPTXPJJLB extends BaseEntity {
public class CPTXPJJLB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 操作日志表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("操作日志表")
public class CZRZB extends BaseEntity {
public class CZRZB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* DBVersion
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("DBVersion")
public class DBVersion extends BaseEntity {
public class DBVersion {
/**
* ID
@@ -1,7 +1,6 @@
package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import java.time.LocalDateTime;
* 单点登录同步表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("单点登录同步表")
public class DDDLTBB extends BaseEntity {
public class DDDLTBB {
/**
* 统一账号
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -14,9 +13,8 @@ import java.time.LocalDateTime;
* 调课申请_保障明细
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("调课申请_保障明细")
public class DKSQBZMX extends BaseEntity {
public class DKSQBZMX {
@TableId(value = "编号", type = IdType.INPUT)
private String bh;
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -14,9 +13,8 @@ import java.time.LocalDateTime;
* 调课申请_辅助教员
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("调课申请_辅助教员")
public class DKSQFZJY extends BaseEntity {
public class DKSQFZJY {
@TableId(value = "编号", type = IdType.INPUT)
private String bh;
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -14,9 +13,8 @@ import java.time.LocalDateTime;
* 调课申请_教室
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("调课申请_教室")
public class DKSQJS extends BaseEntity {
public class DKSQJS {
@TableId(value = "编号", type = IdType.INPUT)
private String bh;
@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -14,9 +13,8 @@ import java.time.LocalDateTime;
* 调课申请_学员队
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("调课申请_学员队")
public class DKSQXYD extends BaseEntity {
public class DKSQXYD {
@TableId(value = "编号", type = IdType.INPUT)
private String bh;
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 登录记录表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("登录记录表")
public class DLJLB extends BaseEntity {
public class DLJLB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 登录信息表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("登录信息表")
public class DLXXB extends BaseEntity {
public class DLXXB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 单项计算规则
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("单项计算规则")
public class DXJSGZ extends BaseEntity {
public class DXJSGZ {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 服务部队任务表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("服务部队任务表")
public class FWBDRWB extends BaseEntity {
public class FWBDRWB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 服务部队外派人员表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("服务部队外派人员表")
public class FWBDWPRYB extends BaseEntity {
public class FWBDWPRYB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 服务部队外派人员上传附件表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("服务部队外派人员上传附件表")
public class FWBDWPRYSCFJB extends BaseEntity {
public class FWBDWPRYSCFJB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 服务部队需求表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("服务部队需求表")
public class FWBDXQB extends BaseEntity {
public class FWBDXQB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 服务部队需求附件表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("服务部队需求附件表")
public class FWBDXQFJB extends BaseEntity {
public class FWBDXQFJB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 方向课题师生双选项目
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("方向课题师生双选项目")
public class FXKTSSSXXM extends BaseEntity {
public class FXKTSSSXXM {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 方向课题双选项目_班次
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("方向课题双选项目_班次")
public class FXKTSXXMBC extends BaseEntity {
public class FXKTSXXMBC {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 方向课题双选项目_导师
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("方向课题双选项目_导师")
public class FXKTSXXMDS extends BaseEntity {
public class FXKTSXXMDS {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 方向课题双选项目_方向课题
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("方向课题双选项目_方向课题")
public class FXKTSXXMFXKT extends BaseEntity {
public class FXKTSXXMFXKT {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 方向课题双选项目_双选结果表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("方向课题双选项目_双选结果表")
public class FXKTSXXMSXJGB extends BaseEntity {
public class FXKTSXXMSXJGB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 方向课题双选项目_学员
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("方向课题双选项目_学员")
public class FXKTSXXMXY extends BaseEntity {
public class FXKTSXXMXY {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 分值权重标准
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("分值权重标准")
public class FZQZBZ extends BaseEntity {
public class FZQZBZ {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 分值权重标准_权重规则
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("分值权重标准_权重规则")
public class FZQZBZQZGZ extends BaseEntity {
public class FZQZBZQZGZ {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 分值转换规则标准_测评结果样式
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("分值转换规则标准_测评结果样式")
public class FZZHGZBZCPJGYS extends BaseEntity {
public class FZZHGZBZCPJGYS {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 分值转换规则标准_转换规则
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("分值转换规则标准_转换规则")
public class FZZHGZBZZHGZ extends BaseEntity {
public class FZZHGZBZZHGZ {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 跟查课记录
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("跟查课记录")
public class GCKJL extends BaseEntity {
public class GCKJL {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 跟查课记录_评价教员
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("跟查课记录_评价教员")
public class GCKJLPJJY extends BaseEntity {
public class GCKJLPJJY {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 跟查课领导记录
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("跟查课领导记录")
public class GCKLDJL extends BaseEntity {
public class GCKLDJL {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 跟查课领导记录_评价教员
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("跟查课领导记录_评价教员")
public class GCKLDJLPJJY extends BaseEntity {
public class GCKLDJLPJJY {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 跟查课专家
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("跟查课专家")
public class GCKZJ extends BaseEntity {
public class GCKZJ {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 跟查课专家_评价教员
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("跟查课专家_评价教员")
public class GCKZJPJJY extends BaseEntity {
public class GCKZJPJJY {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 跟课领导参考表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("跟课领导参考表")
public class GKLDCKB extends BaseEntity {
public class GKLDCKB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 跟课领导类别指标表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("跟课领导类别指标表")
public class GKLDLBZBB extends BaseEntity {
public class GKLDLBZBB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 跟课专家参考表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("跟课专家参考表")
public class GKZJCKB extends BaseEntity {
public class GKZJCKB {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 关注听课机关人员
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("关注听课机关人员")
public class GZTKJGRY extends BaseEntity {
public class GZTKJGRY {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 关注听课教员
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("关注听课教员")
public class GZTKJY extends BaseEntity {
public class GZTKJY {
/**
* 编号
@@ -1,19 +1,17 @@
package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 节次时间表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("节次时间表")
public class JCSJB extends BaseEntity {
public class JCSJB {
/**
* 编号
@@ -24,41 +22,49 @@ public class JCSJB extends BaseEntity {
/**
* 双节次
*/
@TableField("双节次")
private Boolean sjc;
/**
* 节次索引
*/
@TableField("节次索引")
private String jcsy;
/**
* 开始时间
*/
@TableField("开始时间")
private String kssj;
/**
* 结束时间
*/
@TableField("结束时间")
private String jssj;
/**
* 备注
*/
@TableField("备注")
private String bz;
/**
* 名称
*/
@TableField("名称")
private String mc;
/**
* 简称
*/
@TableField("简称")
private String jc;
/**
* 时段
*/
@TableField("时段")
private String sd;
}
@@ -1,7 +1,6 @@
package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -9,9 +8,8 @@ import lombok.EqualsAndHashCode;
* 结果
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("结果")
public class JG extends BaseEntity {
public class JG {
/**
* 年度
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 机关人员登录表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("机关人员登录表")
public class JGRYDLB extends BaseEntity {
public class JGRYDLB {
/**
* 机关人员编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 讲授方式课时系数
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("讲授方式课时系数")
public class JSFSKSXS extends BaseEntity {
public class JSFSKSXS {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -11,9 +10,8 @@ import lombok.EqualsAndHashCode;
* 技术职务
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("技术职务")
public class JSZW extends BaseEntity {
public class JSZW {
/**
* 编号
@@ -1,7 +1,6 @@
package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -14,9 +13,8 @@ import java.time.LocalDateTime;
* </p>
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("技术职务课时费标准")
public class JSZWKSFBZ extends BaseEntity {
public class JSZWKSFBZ {
@TableId(value = "编号", type = IdType.INPUT)
private String bh;
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 教学场地录播任务
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("教学场地录播任务")
public class JXCDLBRW extends BaseEntity {
public class JXCDLBRW {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 教学管理机构
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("教学管理机构")
public class JXGLJG extends BaseEntity {
public class JXGLJG {
/**
* 编号
@@ -3,7 +3,6 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -13,9 +12,8 @@ import java.time.LocalDateTime;
* 教学任务教材需求表
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("教学任务教材需求表")
public class JXRWJCXQB extends BaseEntity {
public class JXRWJCXQB {
/**
* 编号
@@ -1,7 +1,6 @@
package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.roomroot.jwgl.unit.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -15,9 +14,8 @@ import java.time.LocalDateTime;
* </p>
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("教学日志教员课时补助")
public class JXRZJYKSBZ extends BaseEntity {
public class JXRZJYKSBZ {
@TableId(value = "编号", type = IdType.INPUT)
private String bh;

Some files were not shown because too many files have changed in this diff Show More