Просмотр исходного кода

3.4.2 20250616 obe毕业要求增加删除

xiaofei 5 дней назад
Родитель
Сommit
7c4406b27e

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -132,6 +132,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     private MarkPaperService markPaperService;
     @Resource
     private MarkQuestionService markQuestionService;
+    private MarkQuestionAnswerService markQuestionAnswerService;
     @Resource
     private MarkPaperPackageService markPaperPackageService;
     @Resource
@@ -780,6 +781,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
                         markPaperService.deleteByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());
                         markPaperPackageService.deleteByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());
                         markQuestionService.deleteByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());
+                        markQuestionAnswerService.deleteByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());
                         scanAnswerCardService.deleteByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());
                         markUserGroupService.deleteByExamIdAndPaperNumberAndGroupNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber(), null);
                         markUserClassService.deleteByExamIdAndPaperNumber(examDetail.getExamId(), examDetailCourse.getPaperNumber());

+ 2 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/ScanAnswerCardQuestionService.java

@@ -15,6 +15,8 @@ import java.util.List;
  */
 public interface ScanAnswerCardQuestionService extends IService<ScanAnswerCardQuestion> {
 
+    void deleteByExamIdAndPaperNumber(Long examId, String paperNumber);
+
     void deleteByExamIdAndPaperNumberAndCardNumber(Long examId, String paperNumber, Integer number);
 
     List<ScanAnswerCardQuestion> listByExamIdAndPaperNumberAndCardNumberAndPaperIndexAndPageIndex(Long examId, String paperNumber, Integer cardNumber, Integer paperIndex, Integer pageIndex);

+ 6 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -66,7 +66,8 @@ public class MarkServiceImpl implements MarkService {
 
     @Resource
     private MarkQuestionService markQuestionService;
-
+    @Resource
+    private MarkQuestionAnswerService markQuestionAnswerService;
     @Resource
     private MarkGroupService markGroupService;
 
@@ -110,6 +111,8 @@ public class MarkServiceImpl implements MarkService {
 
     @Resource
     ScanAnswerCardService scanAnswerCardService;
+    @Resource
+    ScanAnswerCardQuestionService scanAnswerCardQuestionService;
 
     @Resource
     TaskService taskService;
@@ -1151,6 +1154,8 @@ public class MarkServiceImpl implements MarkService {
         markStudentService.deleteByExamIdAndPaperNumber(examId, paperNumber);
         scanAnswerCardService.deleteByExamIdAndPaperNumber(examId, paperNumber);
         markQuestionService.deleteByExamIdAndPaperNumber(examId, paperNumber);
+        markQuestionAnswerService.deleteByExamIdAndPaperNumber(examId, paperNumber);
+        scanAnswerCardQuestionService.deleteByExamIdAndPaperNumber(examId, paperNumber);
     }
 
     @Override

+ 8 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanAnswerCardQuestionServiceImpl.java

@@ -21,6 +21,14 @@ import java.util.List;
 @Service
 public class ScanAnswerCardQuestionServiceImpl extends ServiceImpl<ScanAnswerCardQuestionMapper, ScanAnswerCardQuestion> implements ScanAnswerCardQuestionService {
 
+    @Override
+    public void deleteByExamIdAndPaperNumber(Long examId, String paperNumber) {
+        UpdateWrapper<ScanAnswerCardQuestion> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(ScanAnswerCardQuestion::getExamId, examId)
+                .eq(ScanAnswerCardQuestion::getPaperNumber, paperNumber);
+        this.remove(updateWrapper);
+    }
+
     @Override
     public void deleteByExamIdAndPaperNumberAndCardNumber(Long examId, String paperNumber, Integer number) {
         UpdateWrapper<ScanAnswerCardQuestion> updateWrapper = new UpdateWrapper<>();

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

@@ -54,7 +54,13 @@ public class ObeCultureProgramRequirement extends BaseEntity implements Serializ
     @TableField(exist = false)
     private List<ObeCultureProgramRequirement> subRequirementList = new ArrayList<>();
 
+    public ObeCultureProgramRequirement(Long cultureProgramId, Long parentId) {
+        this.cultureProgramId = cultureProgramId;
+        this.parentId = parentId;
+    }
+
     public ObeCultureProgramRequirement() {
+
     }
 
     public ObeCultureProgramRequirement(Long cultureProgramId, String code, String name, String content, Long parentId, Integer sortNum) {

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

@@ -40,4 +40,6 @@ 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;
     }