|
@@ -1,53 +1,50 @@
|
|
|
package com.xjrsoft.module.base.controller;
|
|
|
|
|
|
+import cn.dev33.satoken.annotation.SaCheckPermission;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.excel.support.ExcelTypeEnum;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
-import com.xjrsoft.common.handler.FormContentStyleStrategy;
|
|
|
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
+import com.xjrsoft.common.model.result.RT;
|
|
|
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.entity.ExportBaseClassCourseVo;
|
|
|
-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.*;
|
|
|
-
|
|
|
-import com.xjrsoft.module.base.dto.BaseClassCoursePageDto;
|
|
|
-import com.xjrsoft.module.base.entity.BaseClassCourse;
|
|
|
+import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
+import com.xjrsoft.module.base.dto.*;
|
|
|
+import com.xjrsoft.module.base.entity.*;
|
|
|
import com.xjrsoft.module.base.service.IBaseClassCourseService;
|
|
|
+import com.xjrsoft.module.base.service.impl.BaseCourseSubjectServiceImpl;
|
|
|
+import com.xjrsoft.module.base.vo.BaseClassCourseListVo;
|
|
|
import com.xjrsoft.module.base.vo.BaseClassCoursePageVo;
|
|
|
-
|
|
|
import com.xjrsoft.module.base.vo.BaseClassCourseVo;
|
|
|
+import com.xjrsoft.module.textbook.entity.Textbook;
|
|
|
+import com.xjrsoft.module.textbook.entity.TextbookStudentClaim;
|
|
|
+import com.xjrsoft.module.textbook.service.impl.TextbookServiceImpl;
|
|
|
+import com.xjrsoft.module.textbook.vo.TextbookStudentClaimPageVo;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import javax.validation.Valid;
|
|
|
-import java.util.stream.Collectors;
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.*;
|
|
|
|
|
|
/**
|
|
|
-* @title: 班级课程
|
|
|
-* @Author brealinxx
|
|
|
-* @Date: 2024-06-04
|
|
|
-* @Version 1.0
|
|
|
-*/
|
|
|
+ * @title: 班级课程
|
|
|
+ * @Author brealinxx
|
|
|
+ * @Date: 2024-06-04
|
|
|
+ * @Version 1.0
|
|
|
+ */
|
|
|
@RestController
|
|
|
@RequestMapping("/base" + "/baseClassCourse")
|
|
|
-@Api(value = "/base" + "/baseClassCourse",tags = "班级课程代码")
|
|
|
+@Api(value = "/base" + "/baseClassCourse", tags = "班级课程代码")
|
|
|
@AllArgsConstructor
|
|
|
public class BaseClassCourseController {
|
|
|
|
|
@@ -58,35 +55,63 @@ public class BaseClassCourseController {
|
|
|
private final TextbookServiceImpl textbookServiceImpl;
|
|
|
|
|
|
@GetMapping(value = "/page")
|
|
|
- @ApiOperation(value="班级课程列表(分页)")
|
|
|
+ @ApiOperation(value = "班级课程列表(分页)")
|
|
|
@SaCheckPermission("baseclasscourse:detail")
|
|
|
- public RT<PageOutput<BaseClassCoursePageVo>> page(@Valid BaseClassCoursePageDto dto){
|
|
|
+ public RT<PageOutput<BaseClassCoursePageVo>> page(@Valid BaseClassCoursePageDto dto) {
|
|
|
+ if(dto.getSemester() == null || dto.getSemester() == 0){
|
|
|
+ Page<BaseClassCoursePageVo> page = new Page<>();
|
|
|
+ page.setRecords(new ArrayList<>());
|
|
|
+ return RT.ok(ConventPage.getPageOutput(page, BaseClassCoursePageVo.class));
|
|
|
+ }
|
|
|
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(value = "/list")
|
|
|
+ @ApiOperation(value = "单个班级班级课程列表")
|
|
|
+ @SaCheckPermission("baseclasscourse:detail")
|
|
|
+ public RT<List<BaseClassCourseListVo>> page(@Valid BaseClassCourseListDto dto) {
|
|
|
+ MPJLambdaWrapper<BaseClassCourse> baseClassCourseMPJLambdaWrapper = new MPJLambdaWrapper<>();
|
|
|
+ baseClassCourseMPJLambdaWrapper
|
|
|
+ .select(BaseClassCourse::getCourseId)
|
|
|
+ .selectAs(BaseClass::getName, BaseClassCourseListVo::getClassIdCn)
|
|
|
+ .selectAs(BaseCourseSubject::getName, BaseClassCourseListVo::getCourseIdCn)
|
|
|
+ .selectAs(Textbook::getBookName, BaseClassCourseListVo::getTextbookIdCn)
|
|
|
+ .selectAs(BaseSemester::getName, BaseClassCourseListVo::getBaseSemesterIdCn)
|
|
|
+ .select(BaseClassCourse.class, x -> VoToColumnUtil.fieldsToColumns(BaseClassCourseListVo.class).contains(x.getProperty()))
|
|
|
+ .leftJoin(BaseClass.class, BaseClass::getId, BaseClassCourse::getClassId)
|
|
|
+ .leftJoin(BaseCourseSubject.class, BaseCourseSubject::getId, BaseClassCourse::getCourseId)
|
|
|
+ .leftJoin(Textbook.class, Textbook::getId, BaseClassCourse::getTextbookId)
|
|
|
+ .leftJoin(BaseSemester.class, BaseSemester::getId, BaseClassCourse::getBaseSemesterId)
|
|
|
+ .eq(dto.getBaseSemesterId() != null && dto.getBaseSemesterId() > 0, BaseClassCourse::getBaseSemesterId, dto.getBaseSemesterId())
|
|
|
+ .eq(dto.getClassId() != null && dto.getClassId() > 0, BaseClassCourse::getClassId, dto.getClassId())
|
|
|
+ ;
|
|
|
+ List<BaseClassCourseListVo> baseClassCourseListVoList = baseClassCourseService.selectJoinList(BaseClassCourseListVo.class, baseClassCourseMPJLambdaWrapper);
|
|
|
+ return RT.ok(baseClassCourseListVoList);
|
|
|
+ }
|
|
|
+
|
|
|
@GetMapping("/getSemesterTree")
|
|
|
@ApiOperation("获取年级树结构")
|
|
|
@SaCheckPermission("baseclasscourse:detail")
|
|
|
- public RT<Map<String, Map<String, Object>>> semesterTree(){
|
|
|
+ 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查询班级课程信息")
|
|
|
+ @ApiOperation(value = "根据id查询班级课程信息")
|
|
|
@SaCheckPermission("baseclasscourse:detail")
|
|
|
- public RT<BaseClassCourseVo> info(@RequestParam Long id){
|
|
|
+ public RT<BaseClassCourseVo> info(@RequestParam Long id) {
|
|
|
BaseClassCourse baseClassCourse = baseClassCourseService.getById(id);
|
|
|
if (baseClassCourse == null) {
|
|
|
- return RT.error("找不到此数据!");
|
|
|
+ return RT.error("找不到此数据!");
|
|
|
}
|
|
|
return RT.ok(BeanUtil.toBean(baseClassCourse, BaseClassCourseVo.class));
|
|
|
}
|
|
|
|
|
|
@GetMapping("/getAllCoursesAndTextbooks")
|
|
|
- @ApiOperation(value="获取所有课程教材")
|
|
|
+ @ApiOperation(value = "获取所有课程教材")
|
|
|
@SaCheckPermission("baseclasscourse:detail")
|
|
|
public RT<List<CourseBookInfo>> getAllCoursesAndTextbooks(@RequestParam(required = false) Long[] classIds, @RequestParam(required = false) Long subjectGroupId, @RequestParam(required = false) Long semester) {
|
|
|
List<CourseBookInfo> data = baseClassCourseService.getAllCourseBook(classIds, subjectGroupId, semester);
|
|
@@ -94,7 +119,7 @@ public class BaseClassCourseController {
|
|
|
}
|
|
|
|
|
|
@GetMapping("/getAllSelectedCoursesAndTextbooks")
|
|
|
- @ApiOperation(value="获取所有以选择课程教材")
|
|
|
+ @ApiOperation(value = "获取所有以选择课程教材")
|
|
|
@SaCheckPermission("baseclasscourse:detail")
|
|
|
public RT<List<CourseBookInfo>> getAllSelectedCoursesAndTextbooks(@RequestParam(required = false) Long[] classIds, @RequestParam(required = false) Long semester) {
|
|
|
List<CourseBookInfo> data = baseClassCourseService.getSelectedCourseBook(classIds, semester);
|
|
@@ -102,53 +127,46 @@ public class BaseClassCourseController {
|
|
|
}
|
|
|
|
|
|
@PostMapping("/updateAddCoursesAndTextbooks")
|
|
|
- @ApiOperation(value="更新增加课程教材")
|
|
|
+ @ApiOperation(value = "更新增加课程教材")
|
|
|
@SaCheckPermission("baseclasscourse:detail")
|
|
|
- public RT updateAddCoursesAndTextbooks(@Valid ClassCourseTextbook list) {
|
|
|
- for (Long classId : list.getClassId()){
|
|
|
- for (Long i = 0L ;i < list.getCourseId().length; i++){
|
|
|
- baseClassCourseService.updateAddCourseBook(classId, list.getCourseId()[Math.toIntExact(i)], list.getTextbookId()[Math.toIntExact(i)]);
|
|
|
- }
|
|
|
- }
|
|
|
- return RT.ok();
|
|
|
+ public RT<Boolean> updateAddCoursesAndTextbooks(@Valid @RequestBody ClassCourseTextbook dto) {
|
|
|
+ return RT.ok(baseClassCourseService.updateAddCourseBook(dto));
|
|
|
}
|
|
|
|
|
|
@PostMapping("/updateRemoveCoursesAndTextbooks")
|
|
|
- @ApiOperation(value="更新减少课程教材")
|
|
|
+ @ApiOperation(value = "更新减少课程教材")
|
|
|
@SaCheckPermission("baseclasscourse:detail")
|
|
|
- public RT updateRemoveCoursesAndTextbooks(@Valid ClassCourseTextbook list) {
|
|
|
- for (Long classId : list.getClassId()){
|
|
|
- for (Long i = 0L ;i < list.getCourseId().length; i++){
|
|
|
+ public RT<Boolean> updateRemoveCoursesAndTextbooks(@Valid ClassCourseTextbook list) {
|
|
|
+ boolean isSuccess = true;
|
|
|
+ for (Long classId : list.getClassIds()) {
|
|
|
+ for (Long i = 0L; i < list.getCourseId().length; i++) {
|
|
|
baseClassCourseService.updateRemoveCourseBook(classId, list.getCourseId()[Math.toIntExact(i)], list.getTextbookId()[Math.toIntExact(i)]);
|
|
|
}
|
|
|
}
|
|
|
- return RT.ok();
|
|
|
+ return RT.ok(isSuccess);
|
|
|
}
|
|
|
|
|
|
@PostMapping("/insertClassCourseTextbookCombinations")
|
|
|
- @ApiOperation(value="复用课程教材")
|
|
|
+ @ApiOperation(value = "复用课程教材")
|
|
|
@SaCheckPermission("baseclasscourse:detail")
|
|
|
- public RT insertClassCourseTextbookCombinations(@RequestParam Long newClassId, @RequestParam Long[] sourceClassIds, @RequestParam Long semester) {
|
|
|
+ public RT<Boolean> insertClassCourseTextbookCombinations(@Valid @RequestBody ClassCourseReuseDto dto) {
|
|
|
// baseClassCourseService.markExistingRecordsAsDeleted(newClassId, sourceClassId);
|
|
|
- for (Long sourceId : sourceClassIds){
|
|
|
- baseClassCourseService.duplicateCourseBook(newClassId, sourceId, semester);
|
|
|
- }
|
|
|
- return RT.ok();
|
|
|
+ return RT.ok(baseClassCourseService.duplicateCourseBook(dto));
|
|
|
}
|
|
|
|
|
|
@PostMapping
|
|
|
@ApiOperation(value = "新增班级课程")
|
|
|
@SaCheckPermission("baseclasscourse:add")
|
|
|
- public RT<Boolean> add(@Valid @RequestBody AddBaseClassCourseDto dto){
|
|
|
+ public RT<Boolean> add(@Valid @RequestBody AddBaseClassCourseDto dto) {
|
|
|
BaseClassCourse baseClassCourse = BeanUtil.toBean(dto, BaseClassCourse.class);
|
|
|
boolean isSuccess = baseClassCourseService.save(baseClassCourse);
|
|
|
- return RT.ok(isSuccess);
|
|
|
+ return RT.ok(isSuccess);
|
|
|
}
|
|
|
|
|
|
@PutMapping
|
|
|
@ApiOperation(value = "修改班级课程")
|
|
|
@SaCheckPermission("baseclasscourse:edit")
|
|
|
- public RT<Boolean> update(@Valid @RequestBody UpdateBaseClassCourseDto dto){
|
|
|
+ public RT<Boolean> update(@Valid @RequestBody UpdateBaseClassCourseDto dto) {
|
|
|
|
|
|
BaseClassCourse baseClassCourse = BeanUtil.toBean(dto, BaseClassCourse.class);
|
|
|
return RT.ok(baseClassCourseService.updateById(baseClassCourse));
|
|
@@ -158,7 +176,7 @@ public class BaseClassCourseController {
|
|
|
@DeleteMapping
|
|
|
@ApiOperation(value = "删除班级课程")
|
|
|
@SaCheckPermission("baseclasscourse:delete")
|
|
|
- public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
|
|
|
+ public RT<Boolean> delete(@Valid @RequestBody List<Long> ids) {
|
|
|
return RT.ok(baseClassCourseService.removeBatchByIds(ids));
|
|
|
|
|
|
}
|
|
@@ -177,19 +195,21 @@ public class BaseClassCourseController {
|
|
|
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());
|
|
|
+ Long baseSemesterId = Long.parseLong(baseClassCourseService.GetBaseSemesterIdByName(vo.getSemester()).toString());
|
|
|
|
|
|
if (baseClassCourseService.checkExits(classId, courseId, textbookId)) {
|
|
|
duplicateLogs.add(String.format("[输入的信息重复添加] 班级: %s, 课程: %s, 教材: %s", vo.getClassName(), vo.getCourseName(), vo.getTextbookName()));
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- if (classId != null && courseId != null && textbookId != null) {
|
|
|
+ if (classId != null && courseId != null && textbookId != null && baseSemesterId != null) {
|
|
|
BaseClassCourse baseClassCourse = new BaseClassCourse();
|
|
|
baseClassCourse.setClassId(classId);
|
|
|
baseClassCourse.setCourseId(courseId);
|
|
|
baseClassCourse.setTextbookId(textbookId);
|
|
|
baseClassCourse.setCreateDate(new Date());
|
|
|
baseClassCourse.setDeleteMark(0);
|
|
|
+ baseClassCourse.setBaseSemesterId(baseSemesterId);
|
|
|
baseClassCourses.add(baseClassCourse);
|
|
|
}
|
|
|
} catch (NumberFormatException e) {
|