Sfoglia il codice sorgente

add:课程设置值更新

caozixuan 1 anno fa
parent
commit
808cb34b4d

+ 10 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseDimensionServiceImpl.java

@@ -67,8 +67,6 @@ public class CourseDimensionServiceImpl extends ServiceImpl<CourseDimensionMappe
 
         TeachCourse teachCourse = teachCourseService.findByExamIdCourseCodeAndUserId(examId, courseCode, requestUserId);
         Long teachCourseId = teachCourse.getId();
-        // 删除课程设置
-        teachCourseService.clearCourseSetting(teachCourseId, CourseSettingTypeEnum.COURSE_DIMENSION);
 
         BasicExam basicExam = basicExamService.getById(examId);
         if (Objects.isNull(basicExam)) {
@@ -171,7 +169,15 @@ public class CourseDimensionServiceImpl extends ServiceImpl<CourseDimensionMappe
                 willSaveDimensions.add(second);
             }
         }
-        this.saveBatch(willSaveDimensions);
+        List<CourseDimension> dbList = this.list(
+                new QueryWrapper<CourseDimension>().lambda().eq(CourseDimension::getTeachCourseId, teachCourseId));
+        String dbMd5 = this.buildCourseDimensionMd5(dbList);
+        String willAddMd5 = this.buildCourseDimensionMd5(willSaveDimensions);
+        if (!willAddMd5.equals(dbMd5)) {
+            // 删除课程设置
+            teachCourseService.clearCourseSetting(teachCourseId, CourseSettingTypeEnum.COURSE_DIMENSION);
+            this.saveBatch(willSaveDimensions);
+        }
     }
 
     @Transactional
@@ -266,10 +272,10 @@ public class CourseDimensionServiceImpl extends ServiceImpl<CourseDimensionMappe
             dto.setCode(e.getCode());
             dto.setName(e.getName());
             dto.setNumber(e.getNumber());
-            dto.setParentId(e.getParentId());
             dto.setSource(e.getSource());
             return Stream.of(dto);
         }).sorted(Comparator.comparing(CourseDimensionMd5Dto::getCode)).collect(Collectors.toList());
+        System.out.println(JSON.toJSONString(md5List));
         return DigestUtils.md5Hex(JSON.toJSONString(md5List));
     }
 }

+ 28 - 15
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/CourseTargetServiceImpl.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.dto.CourseDimensionDto;
 import com.qmth.distributed.print.business.bean.dto.CourseDimensionOccupiedDto;
@@ -67,15 +68,16 @@ public class CourseTargetServiceImpl extends ServiceImpl<CourseTargetMapper, Cou
             String targetContent = e.getTargetContent();
             List<Long> dimensionIdList = JSON.parseArray(targetContent, Long.class);
             List<CourseDimensionDto> dimensionList = new ArrayList<>();
-
-            dimensionIdList.forEach(d -> {
-                CourseDimensionDto courseDimensionDto = new CourseDimensionDto();
-                CourseDimension courseDimension = courseDimensionMap.get(d);
-                courseDimensionDto.setId(d);
-                courseDimensionDto.setCode(courseDimension.getCode());
-                courseDimensionDto.setName(courseDimension.getName());
-                dimensionList.add(courseDimensionDto);
-            });
+            if (SystemConstant.strNotNull(targetContent)){
+                dimensionIdList.forEach(d -> {
+                    CourseDimensionDto courseDimensionDto = new CourseDimensionDto();
+                    CourseDimension courseDimension = courseDimensionMap.get(d);
+                    courseDimensionDto.setId(d);
+                    courseDimensionDto.setCode(courseDimension.getCode());
+                    courseDimensionDto.setName(courseDimension.getName());
+                    dimensionList.add(courseDimensionDto);
+                });
+            }
             cell.setDimensionList(dimensionList);
             return Stream.of(cell);
         }).collect(Collectors.toList());
@@ -93,8 +95,12 @@ public class CourseTargetServiceImpl extends ServiceImpl<CourseTargetMapper, Cou
         // 课程目标id - 该目标包含的所有知识点id集合
         Map<Long, List<Long>> targetDimensionMap = courseTargetList.stream()
                 .collect(Collectors.toMap(BaseEntity::getId, v -> {
+                    List<Long> dimensionList = new ArrayList<>();
                     String targetContent = v.getTargetContent();
-                    return JSON.parseArray(targetContent, Long.class);
+                    if (SystemConstant.strNotNull(targetContent)){
+                        dimensionList = JSON.parseArray(targetContent, Long.class);
+                    }
+                    return dimensionList;
                 }));
 
         // 课程知识点
@@ -157,8 +163,11 @@ public class CourseTargetServiceImpl extends ServiceImpl<CourseTargetMapper, Cou
 
         // 占用的知识点id
         List<Long> occupiedIdList = courseTargetResultList.stream().flatMap(e -> {
+            List<Long> idList = new ArrayList<>();
             String content = e.getTargetContent();
-            List<Long> idList = JSON.parseArray(content, Long.class);
+            if (SystemConstant.strNotNull(content)){
+                idList = JSON.parseArray(content, Long.class);
+            }
             return idList.stream();
         }).collect(Collectors.toList());
         for (Long dimensionId : dimensionIdList) {
@@ -171,8 +180,6 @@ public class CourseTargetServiceImpl extends ServiceImpl<CourseTargetMapper, Cou
             }
         }
 
-        teachCourseService.clearCourseSetting(teachCourseId, CourseSettingTypeEnum.COURSE_TARGET);
-
         CourseTarget checkTargetName = this.getOne(
                 new QueryWrapper<CourseTarget>().lambda().eq(CourseTarget::getTeachCourseId, teachCourseId).eq(CourseTarget::getTargetName, targetName).last(SystemConstant.LIMIT1));
         if (Objects.nonNull(checkTargetName) && !checkTargetName.getId().equals(id)) {
@@ -189,11 +196,17 @@ public class CourseTargetServiceImpl extends ServiceImpl<CourseTargetMapper, Cou
         courseTarget.setTargetContent(JSON.toJSONString(dimensionIdList));
 
         if (SystemConstant.longNotNull(id)) {
-            // 编辑
+            // 编辑 (更新教学课程权重标识)
             courseTarget.setId(id);
             courseTarget.updateInfo(requestUserId);
+
+            UpdateWrapper<TeachCourse> teachCourseUpdateWrapper = new UpdateWrapper<>();
+            teachCourseUpdateWrapper.lambda().eq(TeachCourse::getId, teachCourseId)
+                    .set(TeachCourse::getWeightSettingSign, SystemConstant.getDbUuid());
+            teachCourseService.update(teachCourseUpdateWrapper);
         } else {
-            // 新增
+            // 新增 (清空权重设置)
+            teachCourseService.clearCourseSetting(teachCourseId, CourseSettingTypeEnum.COURSE_TARGET);
             courseTarget.insertInfo(requestUserId);
         }
         this.saveOrUpdate(courseTarget);

+ 2 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/CourseTargetController.java

@@ -17,6 +17,7 @@ import com.qmth.teachcloud.common.util.ServletUtil;
 import io.swagger.annotations.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -82,6 +83,7 @@ public class CourseTargetController {
     @ApiOperation(value = "课程目标管理-课程知识点树查询")
     @RequestMapping(value = "/dimension_tree", method = RequestMethod.POST)
     @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = CourseDimensionTree.class) })
+    @Transactional
     public Result findDimensionTree(@ApiParam(value = "学期id") @RequestParam(required = false) String examId,
             @ApiParam(value = "考试id") @RequestParam(required = false) String courseCode) {
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();