|
|
@@ -0,0 +1,193 @@
|
|
|
+package com.xjrsoft.module.base.controller;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.xjrsoft.common.page.ConventPage;
|
|
|
+import com.xjrsoft.common.page.PageOutput;
|
|
|
+import com.xjrsoft.common.model.result.RT;
|
|
|
+import com.xjrsoft.module.base.dto.AddBaseClassCourseDto;
|
|
|
+import com.xjrsoft.module.base.dto.UpdateBaseClassCourseDto;
|
|
|
+import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.xjrsoft.module.base.entity.ClassCourseTextbook;
|
|
|
+import com.xjrsoft.module.base.entity.CourseBookInfo;
|
|
|
+import com.xjrsoft.module.base.service.impl.BaseCourseSubjectServiceImpl;
|
|
|
+import com.xjrsoft.module.textbook.service.impl.TextbookServiceImpl;
|
|
|
+import org.apache.ibatis.annotations.Param;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+import java.io.IOException;
|
|
|
+import com.alibaba.excel.support.ExcelTypeEnum;
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
+import java.util.ArrayList;
|
|
|
+
|
|
|
+import com.xjrsoft.module.base.dto.BaseClassCoursePageDto;
|
|
|
+import com.xjrsoft.module.base.entity.BaseClassCourse;
|
|
|
+import com.xjrsoft.module.base.service.IBaseClassCourseService;
|
|
|
+import com.xjrsoft.module.base.vo.BaseClassCoursePageVo;
|
|
|
+
|
|
|
+import com.xjrsoft.module.base.vo.BaseClassCourseVo;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import javax.validation.Valid;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+* @title: 班级课程
|
|
|
+* @Author brealinxx
|
|
|
+* @Date: 2024-06-04
|
|
|
+* @Version 1.0
|
|
|
+*/
|
|
|
+@RestController
|
|
|
+@RequestMapping("/base" + "/baseClassCourse")
|
|
|
+@Api(value = "/base" + "/baseClassCourse",tags = "班级课程代码")
|
|
|
+@AllArgsConstructor
|
|
|
+public class BaseClassCourseController {
|
|
|
+
|
|
|
+
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(BaseClassCourseController.class);
|
|
|
+ private final IBaseClassCourseService baseClassCourseService;
|
|
|
+ private final BaseCourseSubjectServiceImpl baseCourseSubjectServiceImpl;
|
|
|
+ private final TextbookServiceImpl textbookServiceImpl;
|
|
|
+
|
|
|
+ @GetMapping(value = "/page")
|
|
|
+ @ApiOperation(value="班级课程列表(分页)")
|
|
|
+ @SaCheckPermission("baseclasscourse:detail")
|
|
|
+ public RT<PageOutput<BaseClassCoursePageVo>> page(@Valid BaseClassCoursePageDto dto){
|
|
|
+ Page<BaseClassCoursePageVo> page = baseClassCourseService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
|
|
|
+ PageOutput<BaseClassCoursePageVo> pageOutput = ConventPage.getPageOutput(page, BaseClassCoursePageVo.class);
|
|
|
+ return RT.ok(pageOutput);
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/getSemesterTree")
|
|
|
+ @ApiOperation("获取年级树结构")
|
|
|
+ @SaCheckPermission("baseclasscourse:detail")
|
|
|
+ public RT<Map<String, Map<String, Object>>> semesterTree(){
|
|
|
+ Map<String, Map<String, Object>> tree = baseClassCourseService.getSemesterTree();
|
|
|
+ return RT.ok(tree);
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping(value = "/info")
|
|
|
+ @ApiOperation(value="根据id查询班级课程信息")
|
|
|
+ @SaCheckPermission("baseclasscourse:detail")
|
|
|
+ public RT<BaseClassCourseVo> info(@RequestParam Long id){
|
|
|
+ BaseClassCourse baseClassCourse = baseClassCourseService.getById(id);
|
|
|
+ if (baseClassCourse == null) {
|
|
|
+ return RT.error("找不到此数据!");
|
|
|
+ }
|
|
|
+ return RT.ok(BeanUtil.toBean(baseClassCourse, BaseClassCourseVo.class));
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/getAllCoursesAndTextbooks")
|
|
|
+ @ApiOperation(value="获取所有课程教材")
|
|
|
+ @SaCheckPermission("baseclasscourse:detail")
|
|
|
+ public RT<List<CourseBookInfo>> getAllCoursesAndTextbooks(@RequestParam(required = false) Long subjectGroupId) {
|
|
|
+ List<CourseBookInfo> data = baseClassCourseService.getAllCourseBook(subjectGroupId);
|
|
|
+ return RT.ok(data);
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/getAllSelectedCoursesAndTextbooks")
|
|
|
+ @ApiOperation(value="获取所有以选择课程教材")
|
|
|
+ @SaCheckPermission("baseclasscourse:detail")
|
|
|
+ public RT<List<CourseBookInfo>> getAllSelectedCoursesAndTextbooks(@RequestParam(required = false) Long[] classIds) {
|
|
|
+ List<CourseBookInfo> data = baseClassCourseService.getSelectedCourseBook(classIds);
|
|
|
+ return RT.ok(data);
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/updateAddCoursesAndTextbooks")
|
|
|
+ @ApiOperation(value="更新增加课程教材")
|
|
|
+ @SaCheckPermission("baseclasscourse:detail")
|
|
|
+ public RT updateAddCoursesAndTextbooks(@Valid ClassCourseTextbook list) {
|
|
|
+ baseClassCourseService.updateAddCourseBook(list.getClassId(), list.getCourseId(), list.getTextbookId());
|
|
|
+ return RT.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/updateRemoveCoursesAndTextbooks")
|
|
|
+ @ApiOperation(value="更新减少课程教材")
|
|
|
+ @SaCheckPermission("baseclasscourse:detail")
|
|
|
+ public RT updateRemoveCoursesAndTextbooks(@Valid ClassCourseTextbook list) {
|
|
|
+ baseClassCourseService.updateRemoveCourseBook(list.getClassId(), list.getCourseId(), list.getTextbookId());
|
|
|
+ return RT.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/insertClassCourseTextbookCombinations")
|
|
|
+ @ApiOperation(value="复用课程教材")
|
|
|
+ @SaCheckPermission("baseclasscourse:detail")
|
|
|
+ public RT insertClassCourseTextbookCombinations(@RequestParam Long newClassId, @RequestParam Long sourceClassId) {
|
|
|
+ baseClassCourseService.markExistingRecordsAsDeleted(newClassId, sourceClassId);
|
|
|
+ baseClassCourseService.duplicateCourseBook(newClassId, sourceClassId);
|
|
|
+ return RT.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping
|
|
|
+ @ApiOperation(value = "新增班级课程")
|
|
|
+ @SaCheckPermission("baseclasscourse:add")
|
|
|
+ public RT<Boolean> add(@Valid @RequestBody AddBaseClassCourseDto dto){
|
|
|
+ BaseClassCourse baseClassCourse = BeanUtil.toBean(dto, BaseClassCourse.class);
|
|
|
+ boolean isSuccess = baseClassCourseService.save(baseClassCourse);
|
|
|
+ return RT.ok(isSuccess);
|
|
|
+ }
|
|
|
+
|
|
|
+ @PutMapping
|
|
|
+ @ApiOperation(value = "修改班级课程")
|
|
|
+ @SaCheckPermission("baseclasscourse:edit")
|
|
|
+ public RT<Boolean> update(@Valid @RequestBody UpdateBaseClassCourseDto dto){
|
|
|
+
|
|
|
+ BaseClassCourse baseClassCourse = BeanUtil.toBean(dto, BaseClassCourse.class);
|
|
|
+ return RT.ok(baseClassCourseService.updateById(baseClassCourse));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @DeleteMapping
|
|
|
+ @ApiOperation(value = "删除班级课程")
|
|
|
+ @SaCheckPermission("baseclasscourse:delete")
|
|
|
+ public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
|
|
|
+ return RT.ok(baseClassCourseService.removeBatchByIds(ids));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/import")
|
|
|
+ @ApiOperation(value = "导入")
|
|
|
+ public RT<Boolean> importData(@RequestParam MultipartFile file) throws IOException {
|
|
|
+ List<BaseClassCoursePageVo> savedDataList = EasyExcel.read(file.getInputStream()).head(BaseClassCoursePageVo.class).sheet().doReadSync();
|
|
|
+
|
|
|
+ List<BaseClassCourse> baseClassCourses = new ArrayList<>();
|
|
|
+ for (BaseClassCoursePageVo vo : savedDataList) {
|
|
|
+ Long classId = Long.parseLong(baseClassCourseService.GetClassIdByName(vo.getClassName()).toString());
|
|
|
+ Long courseId = Long.parseLong(baseClassCourseService.GetCourseIdByName(vo.getCourseName()).toString());
|
|
|
+ Long textbookId = Long.parseLong(baseClassCourseService.GetTextbookIdByName(vo.getTextbookName()).toString());
|
|
|
+
|
|
|
+ if (baseClassCourseService.checkExits(classId, courseId, textbookId)) continue;
|
|
|
+
|
|
|
+ if (classId != null && courseId != null && textbookId != null) {
|
|
|
+ BaseClassCourse baseClassCourse = new BaseClassCourse();
|
|
|
+ baseClassCourse.setClassId(classId);
|
|
|
+ baseClassCourse.setCourseId(courseId);
|
|
|
+ baseClassCourse.setTextbookId(textbookId);
|
|
|
+ baseClassCourse.setCreateDate(new Date());
|
|
|
+ baseClassCourse.setDeleteMark(0);
|
|
|
+ baseClassCourses.add(baseClassCourse);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Boolean result = baseClassCourseService.saveBatch(baseClassCourses);
|
|
|
+ return RT.ok(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/export")
|
|
|
+ @ApiOperation(value = "导出")
|
|
|
+ public ResponseEntity<byte[]> exportData(@Valid BaseClassCoursePageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
|
|
|
+ List<BaseClassCoursePageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<BaseClassCoursePageVo>) page(dto).getData()).getList();
|
|
|
+ ByteArrayOutputStream bot = new ByteArrayOutputStream();
|
|
|
+ EasyExcel.write(bot, BaseClassCoursePageVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
|
|
|
+
|
|
|
+ return RT.fileStream(bot.toByteArray(), "BaseClassCourse" + ExcelTypeEnum.XLSX.getValue());
|
|
|
+ }
|
|
|
+}
|