导入导出 模版下载 bug修复

This commit is contained in:
liumengyu
2026-08-21 12:08:52 +08:00
parent 2a5bf443fe
commit 179b12e3bf
65 changed files with 389 additions and 964 deletions
@@ -0,0 +1,102 @@
package com.roomroot.web.controller.jwgl;
import com.roomroot.common.exception.ServiceException;
import com.roomroot.common.utils.file.FileUtils;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.springframework.core.io.ClassPathResource;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* 导入模版下载。模版文件位于 classpath:file/
*/
@RestController
@RequestMapping("/download")
public class DownloadController {
private static final String TEMPLATE_DIR = "file/";
/**
* 人才培养方案课程数据文件模板
*/
@GetMapping("/training-program")
public void downloadTrainingProgram(HttpServletResponse response) throws IOException {
downloadTemplate(response, "人才培养方案课程数据文件模板.xls");
}
/**
* 学员队模板
*/
@GetMapping("/student-team")
public void downloadStudentTeam(HttpServletResponse response) throws IOException {
downloadTemplate(response, "学员队模板.xls");
}
/**
* 导入教学日志模板
*/
@GetMapping("/teaching-log")
public void downloadTeachingLog(HttpServletResponse response) throws IOException {
downloadTemplate(response, "导入教学日志模板.xls");
}
/**
* 教学场地管理模板
*/
@GetMapping("/classroom")
public void downloadClassroom(HttpServletResponse response) throws IOException {
downloadTemplate(response, "教学场地管理模板.xls");
}
/**
* 教材管理模板
*/
@GetMapping("/teaching-material")
public void downloadTeachingMaterial(HttpServletResponse response) throws IOException {
downloadTemplate(response, "教材管理.xls");
}
/**
* 教研室模板
*/
@GetMapping("/jys")
public void downloadJys(HttpServletResponse response) throws IOException {
downloadTemplate(response, "教研室模板.xls");
}
/**
* 联教连训管理模板
*/
@GetMapping("/joint-training")
public void downloadJointTraining(HttpServletResponse response) throws IOException {
downloadTemplate(response, "联教连训管理.xls");
}
/**
* 课程课目数据文件模板
*/
@GetMapping("/course-subject")
public void downloadCourseSubject(HttpServletResponse response) throws IOException {
downloadTemplate(response, "课程课目数据文件模板.xls");
}
private void downloadTemplate(HttpServletResponse response, String fileName) throws IOException {
ClassPathResource resource = new ClassPathResource(TEMPLATE_DIR + fileName);
if (!resource.exists()) {
throw new ServiceException("模板文件不存在:" + fileName);
}
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, fileName);
try (InputStream is = resource.getInputStream(); OutputStream os = response.getOutputStream()) {
IOUtils.copy(is, os);
os.flush();
}
}
}
@@ -2,6 +2,7 @@ package com.roomroot.web.controller.jwgl;
import com.roomroot.jwgl.dto.ks.HourStatisticsQuery;
import com.roomroot.jwgl.entity.KSFBZ;
import com.roomroot.jwgl.entity.KSBZXM;
import com.roomroot.jwgl.entity.KSXSFA;
import com.roomroot.jwgl.service.KJService;
import com.roomroot.jwgl.service.KSService;
@@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import jakarta.annotation.Resource;
@@ -259,4 +261,79 @@ public class KSController {
ksService.exportFeeStatistics(cond, response);
}
// ======================== 联教联训管理(课时补助项目) ========================
/**
* 新增联教联训(课时补助项目)。
* <p>对应表:课时补助项目。编号为空时由服务端生成 UUID。</p>
*/
@PostMapping("/yjlx/add")
public Result<Void> addSubsidyProject(@RequestBody KSBZXM entity) {
logService.addSubsidyProject(entity);
return Result.success();
}
/**
* 删除联教联训(课时补助项目)。
*
* @param bh 编号
*/
@PostMapping("/yjlx/delete")
public Result<Void> deleteSubsidyProject(@RequestParam("bh") String bh) {
logService.deleteSubsidyProject(bh);
return Result.success();
}
/**
* 更新联教联训(课时补助项目)。
*/
@PostMapping("/yjlx/update")
public Result<Void> updateSubsidyProject(@RequestBody KSBZXM entity) {
logService.updateSubsidyProject(entity);
return Result.success();
}
/**
* 根据编号查询联教联训详情。
*/
@GetMapping("/yjlx/get")
public Result<KSBZXM> getSubsidyProject(@RequestParam("bh") String bh) {
return Result.success(logService.getSubsidyProjectById(bh));
}
/**
* 分页查询联教联训列表(支持按名称模糊筛选)。
*/
@GetMapping("/yjlx/list")
public Result<PageResult<KSBZXM>> listSubsidyProject(
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "20") Integer pageSize,
@RequestParam(required = false) String mc) {
KSBZXM cond = new KSBZXM();
cond.setMc(mc);
return Result.success(logService.pageSubsidyProject(new PageQuery(pageNum, pageSize), cond));
}
/**
* 从 Excel(.xls/.xlsx) 导入联教联训数据。
* <p>模板列:序号, 补助项目名称, 性质, 依据, 开始日期, 结束日期, 项目说明,
* 项目备注, 教研室名称, 补助教员姓名, 补助课时量, 课时量备注</p>
*
* @param file 上传的联教连训管理.xls 文件
* @return 导入条数
*/
@PostMapping("/yjlx/import")
public Result<Integer> importSubsidyProject(@RequestParam("file") MultipartFile file) throws Exception {
int count = logService.importSubsidyProject(file);
return Result.success("导入成功,共" + count + "", count);
}
/**
* 导出联教联训数据到 Excel(.xlsx)。
*/
@GetMapping("/yjlx/export")
public void exportSubsidyProject(HttpServletResponse response) throws Exception {
logService.exportSubsidyProject(response);
}
}