|
@@ -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;
|
|
|
}
|