Переглянути джерело

3.4.6 20250616 obe毕业要求增加删除

xiaofei 5 днів тому
батько
коміт
a352345196

+ 4 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/entity/ObeCultureProgramRequirement.java

@@ -56,6 +56,10 @@ public class ObeCultureProgramRequirement extends BaseEntity implements Serializ
 
     public ObeCultureProgramRequirement() {
     }
+    public ObeCultureProgramRequirement(Long cultureProgramId, Long parentId) {
+        this.cultureProgramId = cultureProgramId;
+        this.parentId = parentId;
+    }
 
     public ObeCultureProgramRequirement(Long cultureProgramId, String code, String name, String content, Long parentId, Integer sortNum) {
         this.cultureProgramId = cultureProgramId;

+ 1 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/service/ObeCultureProgramRequirementService.java

@@ -40,4 +40,5 @@ public interface ObeCultureProgramRequirementService extends IService<ObeCulture
     List<ObeCultureProgramRequirement> listByCultureProgramId(Long cultureProgramId);
 
     List<MatrixRequirementDto> listSubRequirement(Long cultureProgramId, Long courseId);
+    void removeRequirementByCondition(ObeCultureProgramRequirement obeCultureProgramRequirement);
 }

+ 100 - 26
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/service/impl/ObeCultureProgramRequirementServiceImpl.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.obe.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.teachcloud.common.contant.SystemConstant;
@@ -11,15 +12,11 @@ import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.obe.been.obe.CourseRequirementMatrixDto;
 import com.qmth.teachcloud.obe.been.obe.MatrixRequirementDto;
 import com.qmth.teachcloud.obe.been.obe.MatrixSubRequirementDto;
-import com.qmth.teachcloud.obe.entity.ObeCourseRequirementMatrix;
-import com.qmth.teachcloud.obe.entity.ObeCultureProgram;
-import com.qmth.teachcloud.obe.entity.ObeCultureProgramRequirement;
+import com.qmth.teachcloud.obe.entity.*;
 import com.qmth.teachcloud.obe.enums.CultureProgramRequirementEnum;
 import com.qmth.teachcloud.obe.mapper.ObeCourseRequirementMatrixMapper;
 import com.qmth.teachcloud.obe.mapper.ObeCultureProgramRequirementMapper;
-import com.qmth.teachcloud.obe.service.ObeCourseRequirementMatrixService;
-import com.qmth.teachcloud.obe.service.ObeCultureProgramRequirementService;
-import com.qmth.teachcloud.obe.service.ObeCultureProgramService;
+import com.qmth.teachcloud.obe.service.*;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -46,9 +43,13 @@ public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCult
     @Resource
     private ObeCultureProgramService obeCultureProgramService;
     @Resource
+    private ObeCultureProgramCourseService obeCultureProgramCourseService;
+    @Resource
     private ObeCourseRequirementMatrixService obeCourseRequirementMatrixService;
     @Resource
     private ObeCourseRequirementMatrixMapper obeCourseRequirementMatrixMapper;
+    @Resource
+    private ObeRequirementTargetMatrixService obeRequirementTargetMatrixService;
 
     @Override
     public List<ObeCultureProgramRequirement> listRequirement(Long cultureProgramId) {
@@ -68,6 +69,7 @@ public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCult
         return obeCultureProgramRequirements;
     }
 
+    @Transactional
     @Override
     public boolean saveRequirement(ObeCultureProgramRequirement obeCultureProgramRequirement) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
@@ -93,16 +95,50 @@ public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCult
             return this.updateById(obeCultureProgramRequirement);
         }
         // 新增
-        //        else {
-        //            ObeCultureProgramRequirement obeCultureProgramRequirementParent = this.getById(obeCultureProgramRequirement.getParentId());
-        //            obeCultureProgramRequirement.setSortNum(this.getMaxSortNum(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirement.getParentId()) + 1);
-        //            obeCultureProgramRequirement.setName(concatRequirementName(obeCultureProgramRequirementParent.getSortNum(), obeCultureProgramRequirement.getSortNum()));
-        //            obeCultureProgramRequirement.insertInfo(sysUser.getId());
-        //            if (this.save(obeCultureProgramRequirement)) {
-        //                obeCourseRequirementMatrixService.updateMatrix(obeCultureProgramRequirement.getCultureProgramId(), Arrays.asList(obeCultureProgramRequirement), null);
-        //            }
-        //            return true;
-        //        }
+        else {
+            // 校验毕业要求名称在同一培养方案下唯一
+            int sameCount = this.count(new QueryWrapper<ObeCultureProgramRequirement>().lambda()
+                    .eq(ObeCultureProgramRequirement::getCultureProgramId, obeCultureProgramRequirement.getCultureProgramId())
+                    .eq(ObeCultureProgramRequirement::getName, obeCultureProgramRequirement.getName()));
+            if (sameCount > 0) {
+                throw ExceptionResultEnum.ERROR.exception("毕业要求名称需要在同一培养方案下唯一");
+            }
+
+            List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = new ArrayList<>();
+            // 一级节点
+            ObeCultureProgramRequirement obeCultureProgramRequirementNew = new ObeCultureProgramRequirement(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirement.getName(), obeCultureProgramRequirement.getName(), obeCultureProgramRequirement.getContent(), null, this.getMaxSortNum(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirement.getParentId()) + 1);
+            obeCultureProgramRequirementNew.insertInfo(sysUser.getId());
+            obeCultureProgramRequirementList.add(obeCultureProgramRequirementNew);
+            // 每个一级节点默认创建一个二级节点
+            ObeCultureProgramRequirement obeSubCultureProgramRequirement = new ObeCultureProgramRequirement(obeCultureProgramRequirement.getCultureProgramId(), null, concatRequirementName(obeCultureProgramRequirementNew.getSortNum(), 1), null, obeCultureProgramRequirementNew.getId(), 1);
+            obeSubCultureProgramRequirement.insertInfo(sysUser.getId());
+            obeCultureProgramRequirementList.add(obeSubCultureProgramRequirement);
+            this.saveBatch(obeCultureProgramRequirementList);
+
+            // 查询一级毕业要求
+            List<ObeRequirementTargetMatrix> obeRequirementTargetMatrices = obeRequirementTargetMatrixService.listByCultureProgramId(obeCultureProgramRequirement.getCultureProgramId());
+            List<ObeRequirementTargetMatrix> obeRequirementTargetMatrixList = obeRequirementTargetMatrices.stream().map(m -> new ObeRequirementTargetMatrix(m.getCultureProgramId(), obeCultureProgramRequirementNew.getId(), m.getId())).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(obeRequirementTargetMatrixList)) {
+                obeRequirementTargetMatrixService.saveBatch(obeRequirementTargetMatrixList);
+            }
+
+//            obeCourseRequirementMatrixService.updateMatrix(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirementList, null);
+            List<ObeCourseRequirementMatrix> obeCourseRequirementMatrices = new ArrayList<>();
+            List<ObeCultureProgramCourse> obeCultureProgramCourses = obeCultureProgramCourseService.listCourse(obeCultureProgramRequirement.getCultureProgramId());
+            for (ObeCultureProgramCourse obeCultureProgramCours : obeCultureProgramCourses) {
+                ObeCourseRequirementMatrix obeCourseRequirementMatrix = new ObeCourseRequirementMatrix(
+                        obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramCours.getId(),
+                        obeSubCultureProgramRequirement.getParentId(), obeSubCultureProgramRequirement.getId());
+                obeCourseRequirementMatrix.insertInfo(sysUser.getId());
+                obeCourseRequirementMatrices.add(obeCourseRequirementMatrix);
+            }
+            if (CollectionUtils.isNotEmpty(obeCourseRequirementMatrices)) {
+                obeCourseRequirementMatrixService.saveBatch(obeCourseRequirementMatrices);
+            }
+
+            // 更新毕业要求数量
+            obeCultureProgramService.updateRequirementCount(obeCultureProgramRequirement.getCultureProgramId());
+        }
         return true;
     }
 
@@ -146,18 +182,43 @@ public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCult
     @Override
     public boolean removeRequirement(Long id) {
         ObeCultureProgramRequirement obeCultureProgramRequirement = this.getById(id);
-        ObeCultureProgramRequirement obeCultureProgramRequirementParent = this.getById(obeCultureProgramRequirement.getParentId());
-        obeCourseRequirementMatrixService.removeMatrixByCondition(new ObeCourseRequirementMatrix(null, null, null, id));
-        if (this.removeById(id)) {
-            List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = this.listByCultureProgramIdAndParentId(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirement.getParentId());
-            if (CollectionUtils.isEmpty(obeCultureProgramRequirementList)) {
-                throw ExceptionResultEnum.ERROR.exception("当前数据为最后一个节点,无法删除");
+        if (obeCultureProgramRequirement == null) {
+            throw ExceptionResultEnum.ERROR.exception("毕业要求不存在");
+        }
+        // 二级指标
+        if (obeCultureProgramRequirement.getParentId() != null) {
+            ObeCultureProgramRequirement obeCultureProgramRequirementParent = this.getById(obeCultureProgramRequirement.getParentId());
+            obeCourseRequirementMatrixService.removeMatrixByCondition(new ObeCourseRequirementMatrix(null, null, null, id));
+            if (this.removeById(id)) {
+                List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = this.listByCultureProgramIdAndParentId(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirement.getParentId());
+                if (CollectionUtils.isEmpty(obeCultureProgramRequirementList)) {
+                    throw ExceptionResultEnum.ERROR.exception("当前数据为最后一个节点,无法删除");
+                }
+                for (int i = 0; i < obeCultureProgramRequirementList.size(); i++) {
+                    obeCultureProgramRequirementList.get(i).setSortNum(i + 1);
+                    obeCultureProgramRequirementList.get(i).setName(concatRequirementName(obeCultureProgramRequirementParent.getSortNum(), (i + 1)));
+                }
+                this.updateBatchById(obeCultureProgramRequirementList);
             }
-            for (int i = 0; i < obeCultureProgramRequirementList.size(); i++) {
-                obeCultureProgramRequirementList.get(i).setSortNum(i + 1);
-                obeCultureProgramRequirementList.get(i).setName(concatRequirementName(obeCultureProgramRequirementParent.getSortNum(), (i + 1)));
+        }
+        // 一级指标
+        else {
+            // 删除课程支撑毕业要求达成矩阵(一级指标和子指标都要删除)
+            obeCourseRequirementMatrixService.removeMatrixByCondition(new ObeCourseRequirementMatrix(obeCultureProgramRequirement.getCultureProgramId(), null, id, null));
+            // 删除培养目标与毕业要求关系矩阵
+            obeRequirementTargetMatrixService.removeMatrixByCondition(new ObeRequirementTargetMatrix(obeCultureProgramRequirement.getCultureProgramId(), id, null));
+            // 删除毕业要求(二级指标点)
+            this.removeRequirementByCondition(new ObeCultureProgramRequirement(obeCultureProgramRequirement.getCultureProgramId(), id));
+            // 删除毕业要求(一级指标)
+            this.removeById(id);
+            // 更新sortNum
+            List<ObeCultureProgramRequirement> list = this.listByCultureProgramIdAndParentId(obeCultureProgramRequirement.getCultureProgramId(), null);
+            for (int i = 0; i < list.size(); i++) {
+                list.get(i).setSortNum(i + 1);
             }
-            this.updateBatchById(obeCultureProgramRequirementList);
+            this.updateBatchById(list);
+            // 更新毕业要求数量
+            obeCultureProgramService.updateRequirementCount(obeCultureProgramRequirement.getCultureProgramId());
         }
         return true;
     }
@@ -285,6 +346,19 @@ public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCult
         return matrixRequirementDtoList;
     }
 
+    @Override
+    public void removeRequirementByCondition(ObeCultureProgramRequirement obeCultureProgramRequirement) {
+        UpdateWrapper<ObeCultureProgramRequirement> updateWrapper = new UpdateWrapper<>();
+        LambdaUpdateWrapper<ObeCultureProgramRequirement> lambda = updateWrapper.lambda();
+        if (obeCultureProgramRequirement.getCultureProgramId() != null) {
+            lambda.eq(ObeCultureProgramRequirement::getCultureProgramId, obeCultureProgramRequirement.getCultureProgramId());
+        }
+        if (obeCultureProgramRequirement.getParentId() != null) {
+            lambda.eq(ObeCultureProgramRequirement::getParentId, obeCultureProgramRequirement.getParentId());
+        }
+        this.remove(updateWrapper);
+    }
+
     private String concatRequirementName(int requirementNum, int subRequirementNum) {
         return NAME_PREFIX + requirementNum + "-" + subRequirementNum;
     }