xiaofei 1 жил өмнө
parent
commit
6745d8409b
15 өөрчлөгдсөн 338 нэмэгдсэн , 61 устгасан
  1. 27 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/obe/cultureProgram/ObeCultureProgramDescriptionParam.java
  2. 24 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgramRequirement.java
  3. 21 14
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/CultureProgramRequirementEnum.java
  4. 3 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCourseRequirementMatrixService.java
  5. 4 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCultureProgramRequirementService.java
  6. 7 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCultureProgramService.java
  7. 5 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeRequirementTargetMatrixService.java
  8. 33 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCourseRequirementMatrixServiceImpl.java
  9. 23 11
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramCourseServiceImpl.java
  10. 64 17
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramRequirementServiceImpl.java
  11. 58 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramServiceImpl.java
  12. 14 10
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramTargetServiceImpl.java
  13. 34 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeRequirementTargetMatrixServiceImpl.java
  14. 6 1
      distributed-print-business/src/main/resources/db/log/xiaofei.sql
  15. 15 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCultureProgramController.java

+ 27 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/obe/cultureProgram/ObeCultureProgramDescriptionParam.java

@@ -0,0 +1,27 @@
+package com.qmth.distributed.print.business.bean.params.obe.cultureProgram;
+
+import javax.validation.constraints.NotNull;
+
+public class ObeCultureProgramDescriptionParam {
+
+    @NotNull(message = "培养方案ID不能为空")
+    private Long id;
+
+    private String description;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+}

+ 24 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgramRequirement.java

@@ -37,6 +37,12 @@ public class ObeCultureProgramRequirement extends BaseEntity implements Serializ
     @ApiModelProperty(value = "毕业要求")
     private String name;
 
+    @ApiModelProperty(value = "内容")
+    private String content;
+
+    @ApiModelProperty(value = "预期值")
+    private Double expectValue;
+
     @ApiModelProperty(value = "上级毕业要求")
     private Long parentId;
 
@@ -49,11 +55,12 @@ public class ObeCultureProgramRequirement extends BaseEntity implements Serializ
     public ObeCultureProgramRequirement() {
     }
 
-    public ObeCultureProgramRequirement(Long cultureProgramId, String code, String name, Long parentId, Integer sortNum) {
+    public ObeCultureProgramRequirement(Long cultureProgramId, String code, String name, String content, Long parentId, Integer sortNum) {
         this.cultureProgramId = cultureProgramId;
         this.code = code;
         this.name = name;
         this.parentId = parentId;
+        this.content = content;
         this.sortNum = sortNum;
     }
 
@@ -81,6 +88,22 @@ public class ObeCultureProgramRequirement extends BaseEntity implements Serializ
         this.name = name;
     }
 
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Double getExpectValue() {
+        return expectValue;
+    }
+
+    public void setExpectValue(Double expectValue) {
+        this.expectValue = expectValue;
+    }
+
     public Long getParentId() {
         return parentId;
     }

+ 21 - 14
distributed-print-business/src/main/java/com/qmth/distributed/print/business/enums/CultureProgramRequirementEnum.java

@@ -9,29 +9,36 @@ import java.util.List;
  * 专业认证毕业要求
  */
 public enum CultureProgramRequirementEnum {
-    GCZS("工程知识"),
-    WTFX("问题分析"),
-    SJKFJJFA("设计/开发解决方案"),
-    YJ("研究"),
-    SYGJ("使用工具"),
-    GCYSH("工程与社会"),
-    HJHKCXFZ("环境和可持续发展"),
-    ZYGF("职业规范"),
-    GRYTD("个人与团队"),
-    GT("沟通"),
-    XMGL("项目管理"),
-    ZSXX("终身学习");
-
-    CultureProgramRequirementEnum(String name) {
+    GCZS("工程知识", "能够将数学、自然科学、工程基础和专业知识用于解决复杂工程问题"),
+    WTFX("问题分析", "能够应用数学、自然科学和工程科学的基本原理,识别、表达、并通过文献研究分析复杂工程问题,以获得有效结论"),
+    SJKFJJFA("设计/开发解决方案", "能够设计针对复杂工程问题的解决方案,设计满足特定需求的系统、单元(部件)或工艺流程,并能够在设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素"),
+    YJ("研究", "能够基于科学原理并采用科学方法对复杂工程问题进行研究,包括设计实验、分析与解释数据、并通过信息综合得到合理有效的结论"),
+    SYGJ("使用工具", "能够针对复杂工程问题,开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,包括对复杂工程问题的预测与模拟,并能够理解其局限性"),
+    GCYSH("工程与社会", "能够基于工程相关背景知识进行合理分析,评价专业工程实践和复杂工程问题解决方案对社会、健康、安全、法律以及文化的影响,并理解应承担的责任"),
+    HJHKCXFZ("环境和可持续发展", "能够理解和评价针对复杂工程问题的工程实践对环境、社会可持续发展的影响"),
+    ZYGF("职业规范", "具有人文社会科学素养、社会责任感,能够在工程实践中理解并遵守工程职业道德和规范,履行责任"),
+    GRYTD("个人与团队", "能够在多学科背景下的团队中承担个体、团队成员以及负责人的角色"),
+    GT("沟通", "能够就复杂工程问题与业界同行及社会公众进行有效沟通和交流,包括撰写报告和设计文稿、陈述发言、清晰表达或回应指令。并具备一定的国际视野,能够在跨文化背景下进行沟通和交流"),
+    XMGL("项目管理", "理解并掌握工程管理原理与经济决策方法,并能在多学科环境中应用"),
+    ZSXX("终身学习", "具有自主学习和终身学习的意识,有不断学习和适应发展的能力");
+
+    CultureProgramRequirementEnum(String name, String content) {
         this.name = name;
+        this.content = content;
     }
 
     private String name;
 
+    private String content;
+
     public String getName() {
         return name;
     }
 
+    public String getContent() {
+        return content;
+    }
+
     /**
      * @return
      */

+ 3 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCourseRequirementMatrixService.java

@@ -22,5 +22,7 @@ public interface ObeCourseRequirementMatrixService extends IService<ObeCourseReq
 
     boolean saveMatrix(List<ObeCourseRequirementMatrix> obeCourseRequirementMatrices);
 
-    void updateMatrix(List<ObeCultureProgramRequirement> obeCultureProgramRequirementList, List<ObeCultureProgramCourse> courseList);
+    void updateMatrix(Long cultureProgramId, List<ObeCultureProgramRequirement> requirementList, List<ObeCultureProgramCourse> courseList);
+
+    void removeMatrixByCondition(ObeCourseRequirementMatrix obeCourseRequirementMatrix);
 }

+ 4 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCultureProgramRequirementService.java

@@ -24,4 +24,8 @@ public interface ObeCultureProgramRequirementService extends IService<ObeCulture
     boolean removeRequirement(Long id);
 
     void initRequirement(Long cultureProgramId);
+
+    List<ObeCultureProgramRequirement> listByParentId(Long parentId);
+
+    boolean saveRequirementExpect(ObeCultureProgramRequirement obeCultureProgramRequirement);
 }

+ 7 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCultureProgramService.java

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.distributed.print.business.bean.params.obe.cultureProgram.ObeCultureProgramDescriptionParam;
 import com.qmth.distributed.print.business.bean.result.obe.cultureProgram.CultureProgramResult;
 import com.qmth.distributed.print.business.entity.ObeCultureProgram;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -25,4 +26,10 @@ public interface ObeCultureProgramService extends IService<ObeCultureProgram> {
     boolean copy(Long id);
 
     ObeCultureProgram getByProfessionalIdAndName(Long professionalId, String name);
+
+    void updateTargetCount(Long cultureProgramId);
+    void updateRequirementCount(Long cultureProgramId);
+    void updateCourseCount(Long cultureProgramId);
+
+    boolean saveDescription(ObeCultureProgramDescriptionParam obeCultureProgramDescriptionParam);
 }

+ 5 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeRequirementTargetMatrixService.java

@@ -3,6 +3,7 @@ package com.qmth.distributed.print.business.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.dto.obe.RequirementTargetMatrixDto;
 import com.qmth.distributed.print.business.entity.ObeCourseRequirementMatrix;
+import com.qmth.distributed.print.business.entity.ObeCultureProgramTarget;
 import com.qmth.distributed.print.business.entity.ObeRequirementTargetMatrix;
 
 import java.util.List;
@@ -20,4 +21,8 @@ public interface ObeRequirementTargetMatrixService extends IService<ObeRequireme
     List<RequirementTargetMatrixDto> getMatrix(Long cultureProgramId);
 
     boolean saveMatrix(List<ObeRequirementTargetMatrix> obeRequirementTargetMatrixList);
+
+    void updateMatrix(ObeCultureProgramTarget obeCultureProgramTarget);
+
+    void removeMatrixByCondition(ObeRequirementTargetMatrix obeRequirementTargetMatrix);
 }

+ 33 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCourseRequirementMatrixServiceImpl.java

@@ -1,6 +1,7 @@
 package com.qmth.distributed.print.business.service.impl;
 
 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.distributed.print.business.bean.dto.obe.CourseRequirementMatrixDto;
@@ -18,6 +19,7 @@ import com.qmth.distributed.print.business.service.TeachCourseService;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.SysPrivilege;
 import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.BasicCourseService;
 import com.qmth.teachcloud.common.service.SysPrivilegeService;
 import com.qmth.teachcloud.common.util.ServletUtil;
@@ -126,10 +128,20 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
     }
 
     @Override
-    public void updateMatrix(List<ObeCultureProgramRequirement> obeCultureProgramRequirementList, List<ObeCultureProgramCourse> courseList) {
+    public void updateMatrix(Long cultureProgramId, List<ObeCultureProgramRequirement> requirementList, List<ObeCultureProgramCourse> courseList) {
+        if (CollectionUtils.isEmpty(requirementList) && CollectionUtils.isEmpty(courseList)) {
+            throw ExceptionResultEnum.ERROR.exception("生成课程支撑毕业要求达成矩阵数据有误");
+        }
+        if (CollectionUtils.isEmpty(requirementList)) {
+            requirementList = obeCultureProgramRequirementService.listRequirement(cultureProgramId);
+        }
+        if (CollectionUtils.isEmpty(courseList)) {
+            courseList = obeCultureProgramCourseService.listCourse(cultureProgramId);
+        }
+
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         List<ObeCourseRequirementMatrix> obeCourseRequirementMatrices = new ArrayList<>();
-        for (ObeCultureProgramRequirement obeCultureProgramRequirement : obeCultureProgramRequirementList) {
+        for (ObeCultureProgramRequirement obeCultureProgramRequirement : requirementList) {
             for (ObeCultureProgramRequirement cultureProgramRequirement : obeCultureProgramRequirement.getSubRequirementList()) {
                 for (ObeCultureProgramCourse obeCultureProgramCourse : courseList) {
                     ObeCourseRequirementMatrix obeCourseRequirementMatrix = new ObeCourseRequirementMatrix(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramCourse.getId(), cultureProgramRequirement.getParentId(), cultureProgramRequirement.getId());
@@ -142,4 +154,23 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
             this.saveBatch(obeCourseRequirementMatrices);
         }
     }
+
+    @Override
+    public void removeMatrixByCondition(ObeCourseRequirementMatrix obeCourseRequirementMatrix) {
+        UpdateWrapper<ObeCourseRequirementMatrix> updateWrapper = new UpdateWrapper<>();
+        LambdaUpdateWrapper<ObeCourseRequirementMatrix> lambda = updateWrapper.lambda();
+        if (obeCourseRequirementMatrix.getCultureProgramId() != null) {
+            lambda.eq(ObeCourseRequirementMatrix::getCultureProgramId, obeCourseRequirementMatrix.getCultureProgramId());
+        }
+        if (obeCourseRequirementMatrix.getObeCourseId() != null) {
+            lambda.eq(ObeCourseRequirementMatrix::getObeCourseId, obeCourseRequirementMatrix.getObeCourseId());
+        }
+        if (obeCourseRequirementMatrix.getObeRequirementId() != null) {
+            lambda.eq(ObeCourseRequirementMatrix::getObeRequirementId, obeCourseRequirementMatrix.getObeRequirementId());
+        }
+        if (obeCourseRequirementMatrix.getObeSubRequirementId() != null) {
+            lambda.eq(ObeCourseRequirementMatrix::getObeSubRequirementId, obeCourseRequirementMatrix.getObeSubRequirementId());
+        }
+        this.remove(updateWrapper);
+    }
 }

+ 23 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramCourseServiceImpl.java

@@ -5,18 +5,19 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.params.obe.cultureProgram.ObeCultureProgramCourseParam;
 import com.qmth.distributed.print.business.bean.result.obe.cultureProgram.CultureProgramCourseSelectResult;
+import com.qmth.distributed.print.business.entity.ObeCourseRequirementMatrix;
 import com.qmth.distributed.print.business.entity.ObeCultureProgramCourse;
-import com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement;
 import com.qmth.distributed.print.business.mapper.ObeCultureProgramCourseMapper;
 import com.qmth.distributed.print.business.service.ObeCourseRequirementMatrixService;
 import com.qmth.distributed.print.business.service.ObeCultureProgramCourseService;
-import com.qmth.distributed.print.business.service.ObeCultureProgramRequirementService;
+import com.qmth.distributed.print.business.service.ObeCultureProgramService;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
@@ -39,7 +40,7 @@ public class ObeCultureProgramCourseServiceImpl extends ServiceImpl<ObeCulturePr
     @Resource
     private SysOrgService sysOrgService;
     @Resource
-    private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
+    private ObeCultureProgramService obeCultureProgramService;
     @Resource
     private ObeCourseRequirementMatrixService obeCourseRequirementMatrixService;
 
@@ -76,12 +77,10 @@ public class ObeCultureProgramCourseServiceImpl extends ServiceImpl<ObeCulturePr
             courseList.add(obeCultureProgramCourse);
         });
 
-        if(this.saveBatch(courseList)){
-            List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = obeCultureProgramRequirementService.listRequirement(obeCultureProgramCourseParam.getCultureProgramId());
-            if (CollectionUtils.isNotEmpty(obeCultureProgramRequirementList)) {
-                // 增加矩阵数据
-                obeCourseRequirementMatrixService.updateMatrix(obeCultureProgramRequirementList, courseList);
-            }
+        if (this.saveBatch(courseList)) {
+            // 增加矩阵数据
+            obeCourseRequirementMatrixService.updateMatrix(obeCultureProgramCourseParam.getCultureProgramId(), null, courseList);
+            obeCultureProgramService.updateCourseCount(obeCultureProgramCourseParam.getCultureProgramId());
         }
         return true;
     }
@@ -113,9 +112,22 @@ public class ObeCultureProgramCourseServiceImpl extends ServiceImpl<ObeCulturePr
         return true;
     }
 
+    @Transactional
     @Override
     public boolean removeCourse(Long id) {
-//        tpMatrixService.removeMatrixByCondition(null, id, null);
-        return this.removeById(id);
+        ObeCultureProgramCourse obeCultureProgramCourse = this.getById(id);
+        obeCourseRequirementMatrixService.removeMatrixByCondition(new ObeCourseRequirementMatrix(null, id, null, null));
+        if (this.removeById(id)) {
+            List<ObeCultureProgramCourse> obeCultureProgramCourseList = this.listCourse(obeCultureProgramCourse.getCultureProgramId());
+            if (CollectionUtils.isNotEmpty(obeCultureProgramCourseList)) {
+                for (int i = 0; i < obeCultureProgramCourseList.size(); i++) {
+                    obeCultureProgramCourseList.get(i).setSortNum(i + 1);
+                }
+                this.updateBatchById(obeCultureProgramCourseList);
+            }
+
+            obeCultureProgramService.updateCourseCount(obeCultureProgramCourse.getCultureProgramId());
+        }
+        return true;
     }
 }

+ 64 - 17
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramRequirementServiceImpl.java

@@ -2,21 +2,23 @@ package com.qmth.distributed.print.business.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.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.entity.ObeCourseRequirementMatrix;
 import com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement;
 import com.qmth.distributed.print.business.enums.CultureProgramRequirementEnum;
 import com.qmth.distributed.print.business.mapper.ObeCultureProgramRequirementMapper;
+import com.qmth.distributed.print.business.service.ObeCourseRequirementMatrixService;
 import com.qmth.distributed.print.business.service.ObeCultureProgramRequirementService;
 import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
+import javax.annotation.Resource;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -30,6 +32,11 @@ import java.util.stream.Collectors;
 @Service
 public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCultureProgramRequirementMapper, ObeCultureProgramRequirement> implements ObeCultureProgramRequirementService {
 
+    private static final String NAME_PREFIX = "指标点";
+
+    @Resource
+    private ObeCourseRequirementMatrixService obeCourseRequirementMatrixService;
+
     @Override
     public List<ObeCultureProgramRequirement> listRequirement(Long cultureProgramId) {
         QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
@@ -57,21 +64,19 @@ public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCult
         // 修改
         if (obeCultureProgramRequirement.getId() != null) {
             obeCultureProgramRequirement.updateInfo(sysUser.getId());
+            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;
         }
-        this.saveOrUpdate(obeCultureProgramRequirement);
-        // 节点数变动后,修改矩阵数据
-//        List<TPCourse> tpCourseList = tpCourseService.listCourse(tpRequirement.getProfessionalId());
-//        if (CollectionUtils.isNotEmpty(tpCourseList)) {
-//            for (TPCourse tpCourse : tpCourseList) {
-//                tpMatrixService.updateMatrixForNodeCount(tpCourse, tpRequirement);
-//            }
-//        }
-        return true;
     }
 
     @Override
@@ -95,8 +100,21 @@ public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCult
     @Transactional
     @Override
     public boolean removeRequirement(Long id) {
-//        tpMatrixService.removeMatrixByCondition(null, null, id);
-        return this.removeById(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.listByParentId(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);
+        }
+        return true;
     }
 
     @Transactional
@@ -106,15 +124,44 @@ public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCult
         List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = new ArrayList<>();
         for (CultureProgramRequirementEnum value : CultureProgramRequirementEnum.values()) {
             // 一级节点
-            ObeCultureProgramRequirement obeCultureProgramRequirement = new ObeCultureProgramRequirement(cultureProgramId, value.name(), value.getName(), null, value.ordinal() + 1);
+            ObeCultureProgramRequirement obeCultureProgramRequirement = new ObeCultureProgramRequirement(cultureProgramId, value.name(), value.getName(), value.getContent(), null, value.ordinal() + 1);
             obeCultureProgramRequirement.insertInfo(sysUser.getId());
             obeCultureProgramRequirementList.add(obeCultureProgramRequirement);
             // 每个一级节点默认创建一个二级节点
-            ObeCultureProgramRequirement obeSubCultureProgramRequirement = new ObeCultureProgramRequirement(cultureProgramId, null, "指标点" + obeCultureProgramRequirement.getSortNum() + "-1", obeCultureProgramRequirement.getId(), 1);
+            ObeCultureProgramRequirement obeSubCultureProgramRequirement = new ObeCultureProgramRequirement(cultureProgramId, null, concatRequirementName(obeCultureProgramRequirement.getSortNum(), 1), null, obeCultureProgramRequirement.getId(), 1);
             obeSubCultureProgramRequirement.insertInfo(sysUser.getId());
             obeCultureProgramRequirementList.add(obeSubCultureProgramRequirement);
         }
 
         this.saveBatch(obeCultureProgramRequirementList);
     }
+
+    @Override
+    public List<ObeCultureProgramRequirement> listByParentId(Long parentId) {
+        QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<ObeCultureProgramRequirement> lambda = queryWrapper.lambda();
+        if (parentId != null) {
+            lambda.eq(ObeCultureProgramRequirement::getParentId, parentId);
+        } else {
+            lambda.isNull(ObeCultureProgramRequirement::getParentId);
+        }
+        lambda.orderByAsc(ObeCultureProgramRequirement::getSortNum);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public boolean saveRequirementExpect(ObeCultureProgramRequirement obeCultureProgramRequirement) {
+        if (obeCultureProgramRequirement.getCultureProgramId() == null) {
+            throw ExceptionResultEnum.ERROR.exception("培养方案ID有误");
+        }
+        UpdateWrapper<ObeCultureProgramRequirement> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(ObeCultureProgramRequirement::getExpectValue, obeCultureProgramRequirement.getExpectValue())
+                .eq(ObeCultureProgramRequirement::getCultureProgramId, obeCultureProgramRequirement.getCultureProgramId())
+                .isNotNull(ObeCultureProgramRequirement::getParentId);
+        return this.update(updateWrapper);
+    }
+
+    private String concatRequirementName(int requirementNum, int subRequirementNum) {
+        return NAME_PREFIX + requirementNum + "-" + subRequirementNum;
+    }
 }

+ 58 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramServiceImpl.java

@@ -1,15 +1,22 @@
 package com.qmth.distributed.print.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.Update;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.distributed.print.business.bean.params.obe.cultureProgram.ObeCultureProgramDescriptionParam;
 import com.qmth.distributed.print.business.bean.result.obe.cultureProgram.CultureProgramResult;
 import com.qmth.distributed.print.business.entity.ObeCultureProgram;
+import com.qmth.distributed.print.business.entity.ObeCultureProgramCourse;
 import com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement;
+import com.qmth.distributed.print.business.entity.ObeCultureProgramTarget;
 import com.qmth.distributed.print.business.mapper.ObeCultureProgramMapper;
+import com.qmth.distributed.print.business.service.ObeCultureProgramCourseService;
 import com.qmth.distributed.print.business.service.ObeCultureProgramRequirementService;
 import com.qmth.distributed.print.business.service.ObeCultureProgramService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.service.ObeCultureProgramTargetService;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
@@ -31,6 +38,10 @@ import javax.annotation.Resource;
 @Service
 public class ObeCultureProgramServiceImpl extends ServiceImpl<ObeCultureProgramMapper, ObeCultureProgram> implements ObeCultureProgramService {
 
+    @Resource
+    private ObeCultureProgramTargetService obeCultureProgramTargetService;
+    @Resource
+    private ObeCultureProgramCourseService obeCultureProgramCourseService;
     @Resource
     private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
     @Resource
@@ -44,6 +55,7 @@ public class ObeCultureProgramServiceImpl extends ServiceImpl<ObeCultureProgramM
         return this.baseMapper.pageData(page, schoolId, professionalId, name, dpr);
     }
 
+    @Transactional
     @Override
     public boolean saveData(ObeCultureProgram obeCultureProgram) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
@@ -54,10 +66,11 @@ public class ObeCultureProgramServiceImpl extends ServiceImpl<ObeCultureProgramM
                 throw ExceptionResultEnum.ERROR.exception("培养方案名称已存在");
             }
             obeCultureProgram.insertInfo(sysUser.getId());
-             if(this.save(obeCultureProgram)){
-                 obeCultureProgramRequirementService.initRequirement(obeCultureProgram.getId());
-             }
-             return true;
+            if (this.save(obeCultureProgram)) {
+                obeCultureProgramRequirementService.initRequirement(obeCultureProgram.getId());
+                this.updateRequirementCount(obeCultureProgram.getId());
+            }
+            return true;
         } else {
             if (checkObeCultureProgram != null && !checkObeCultureProgram.getId().equals(obeCultureProgram.getId())) {
                 throw ExceptionResultEnum.ERROR.exception("培养方案名称已存在");
@@ -85,4 +98,45 @@ public class ObeCultureProgramServiceImpl extends ServiceImpl<ObeCultureProgramM
                 .eq(ObeCultureProgram::getName, name);
         return this.getOne(queryWrapper);
     }
+
+    @Override
+    public void updateTargetCount(Long cultureProgramId) {
+        QueryWrapper<ObeCultureProgramTarget> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ObeCultureProgramTarget::getCultureProgramId, cultureProgramId);
+
+        UpdateWrapper<ObeCultureProgram> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(ObeCultureProgram::getTargetCount, obeCultureProgramTargetService.count(queryWrapper))
+                .eq(ObeCultureProgram::getId, cultureProgramId);
+        this.update(updateWrapper);
+    }
+
+    @Override
+    public void updateRequirementCount(Long cultureProgramId) {
+        QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId);
+
+        UpdateWrapper<ObeCultureProgram> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(ObeCultureProgram::getRequirementCount, obeCultureProgramRequirementService.count(queryWrapper))
+                .eq(ObeCultureProgram::getId, cultureProgramId);
+        this.update(updateWrapper);
+    }
+
+    @Override
+    public void updateCourseCount(Long cultureProgramId) {
+        QueryWrapper<ObeCultureProgramCourse> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ObeCultureProgramCourse::getCultureProgramId, cultureProgramId);
+
+        UpdateWrapper<ObeCultureProgram> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(ObeCultureProgram::getCourseCount, obeCultureProgramCourseService.count(queryWrapper))
+                .eq(ObeCultureProgram::getId, cultureProgramId);
+        this.update(updateWrapper);
+    }
+
+    @Override
+    public boolean saveDescription(ObeCultureProgramDescriptionParam obeCultureProgramDescriptionParam) {
+        UpdateWrapper<ObeCultureProgram> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().eq(ObeCultureProgram::getId, obeCultureProgramDescriptionParam.getId())
+                .set(ObeCultureProgram::getDescription, obeCultureProgramDescriptionParam.getDescription());
+        return this.update(updateWrapper);
+    }
 }

+ 14 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramTargetServiceImpl.java

@@ -1,12 +1,10 @@
 package com.qmth.distributed.print.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.qmth.distributed.print.business.entity.ObeCourseRequirementMatrix;
-import com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement;
-import com.qmth.distributed.print.business.entity.ObeCultureProgramTarget;
-import com.qmth.distributed.print.business.entity.ObeRequirementTargetMatrix;
+import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.mapper.ObeCultureProgramTargetMapper;
 import com.qmth.distributed.print.business.service.ObeCultureProgramRequirementService;
+import com.qmth.distributed.print.business.service.ObeCultureProgramService;
 import com.qmth.distributed.print.business.service.ObeCultureProgramTargetService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.service.ObeRequirementTargetMatrixService;
@@ -37,6 +35,8 @@ public class ObeCultureProgramTargetServiceImpl extends ServiceImpl<ObeCulturePr
     private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
     @Resource
     private ObeRequirementTargetMatrixService obeRequirementTargetMatrixService;
+    @Resource
+    private ObeCultureProgramService obeCultureProgramService;
 
     @Override
     public List<ObeCultureProgramTarget> list(Long cultureProgramId) {
@@ -55,11 +55,10 @@ public class ObeCultureProgramTargetServiceImpl extends ServiceImpl<ObeCulturePr
 
             // 同时生成培养目标与毕业要求关系矩阵数据
             if (this.save(obeCultureProgramTarget)) {
-                List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = obeCultureProgramRequirementService.listRequirement(obeCultureProgramTarget.getCultureProgramId());
-                List<ObeRequirementTargetMatrix> obeRequirementTargetMatrixList = obeCultureProgramRequirementList.stream().map(m -> new ObeRequirementTargetMatrix(obeCultureProgramTarget.getCultureProgramId(), m.getId(), obeCultureProgramTarget.getId())).collect(Collectors.toList());
-                if (CollectionUtils.isNotEmpty(obeRequirementTargetMatrixList)) {
-                    obeRequirementTargetMatrixService.saveBatch(obeRequirementTargetMatrixList);
-                }
+                obeRequirementTargetMatrixService.updateMatrix(obeCultureProgramTarget);
+
+                // 更新培养目标数量
+                obeCultureProgramService.updateTargetCount(obeCultureProgramTarget.getCultureProgramId());
             }
             return true;
         } else {
@@ -68,8 +67,13 @@ public class ObeCultureProgramTargetServiceImpl extends ServiceImpl<ObeCulturePr
         }
     }
 
+    @Transactional
     @Override
     public boolean delete(Long id) {
-        return this.removeById(id);
+        if (this.removeById(id)) {
+            obeRequirementTargetMatrixService.removeMatrixByCondition(new ObeRequirementTargetMatrix(null, null, id));
+            obeCultureProgramService.updateTargetCount(this.getById(id).getCultureProgramId());
+        }
+        return true;
     }
 }

+ 34 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeRequirementTargetMatrixServiceImpl.java

@@ -1,17 +1,22 @@
 package com.qmth.distributed.print.business.service.impl;
 
+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.distributed.print.business.bean.dto.obe.MatrixTargetDto;
 import com.qmth.distributed.print.business.bean.dto.obe.RequirementTargetMatrixDto;
+import com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement;
+import com.qmth.distributed.print.business.entity.ObeCultureProgramTarget;
 import com.qmth.distributed.print.business.entity.ObeRequirementTargetMatrix;
 import com.qmth.distributed.print.business.mapper.ObeRequirementTargetMatrixMapper;
+import com.qmth.distributed.print.business.service.ObeCultureProgramRequirementService;
 import com.qmth.distributed.print.business.service.ObeRequirementTargetMatrixService;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.LinkedMultiValueMap;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
@@ -28,6 +33,9 @@ import java.util.stream.Collectors;
 @Service
 public class ObeRequirementTargetMatrixServiceImpl extends ServiceImpl<ObeRequirementTargetMatrixMapper, ObeRequirementTargetMatrix> implements ObeRequirementTargetMatrixService {
 
+    @Resource
+    private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
+
     @Override
     public List<RequirementTargetMatrixDto> getMatrix(Long cultureProgramId) {
         List<ObeRequirementTargetMatrix> matrixList = this.baseMapper.listMatrix(cultureProgramId);
@@ -66,4 +74,30 @@ public class ObeRequirementTargetMatrixServiceImpl extends ServiceImpl<ObeRequir
         }
         return true;
     }
+
+    @Override
+    public void updateMatrix(ObeCultureProgramTarget obeCultureProgramTarget) {
+        // 查询一级毕业要求
+        List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = obeCultureProgramRequirementService.listByParentId(null);
+        List<ObeRequirementTargetMatrix> obeRequirementTargetMatrixList = obeCultureProgramRequirementList.stream().map(m -> new ObeRequirementTargetMatrix(obeCultureProgramTarget.getCultureProgramId(), m.getId(), obeCultureProgramTarget.getId())).collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(obeRequirementTargetMatrixList)) {
+            this.saveBatch(obeRequirementTargetMatrixList);
+        }
+    }
+
+    @Override
+    public void removeMatrixByCondition(ObeRequirementTargetMatrix obeRequirementTargetMatrix) {
+        UpdateWrapper<ObeRequirementTargetMatrix> updateWrapper = new UpdateWrapper<>();
+        LambdaUpdateWrapper<ObeRequirementTargetMatrix> lambda = updateWrapper.lambda();
+        if (obeRequirementTargetMatrix.getCultureProgramId() != null) {
+            lambda.eq(ObeRequirementTargetMatrix::getCultureProgramId, obeRequirementTargetMatrix.getCultureProgramId());
+        }
+        if (obeRequirementTargetMatrix.getObeRequirementId() != null) {
+            lambda.eq(ObeRequirementTargetMatrix::getObeRequirementId, obeRequirementTargetMatrix.getObeRequirementId());
+        }
+        if (obeRequirementTargetMatrix.getObeTargetId() != null) {
+            lambda.eq(ObeRequirementTargetMatrix::getObeTargetId, obeRequirementTargetMatrix.getObeTargetId());
+        }
+        this.remove(updateWrapper);
+    }
 }

+ 6 - 1
distributed-print-business/src/main/resources/db/log/xiaofei.sql

@@ -25,6 +25,9 @@ DROP COLUMN `node_count`,
 ADD COLUMN `parent_id` BIGINT(20) NULL COMMENT '上级毕业要求' AFTER `name`,
 CHANGE COLUMN `professional_id` `culture_program_id` BIGINT NOT NULL COMMENT '培养方案ID' , COMMENT = '培养方案毕业要求' , RENAME TO  `obe_culture_program_requirement` ;
 
+ALTER TABLE `obe_culture_program_requirement` ADD COLUMN `content` MEDIUMTEXT NULL COMMENT '内容' AFTER `name`;
+ALTER TABLE `obe_culture_program_requirement` ADD COLUMN `expect_value` DOUBLE NULL COMMENT '预期值' AFTER `sort_num`;
+
 ALTER TABLE `t_p_matrix`
     ADD COLUMN `intensity` VARCHAR(1) NULL COMMENT '强度' AFTER `content`,
 CHANGE COLUMN `professional_id` `culture_program_id` BIGINT NOT NULL COMMENT '培养方案ID' ,
@@ -64,7 +67,7 @@ CREATE TABLE `obe_requirement_target_matrix` (
 
 UPDATE `sys_privilege` SET `name` = '培养方案管理', `url` = 'CultureProgramManage' WHERE (`id` = '2035');
 UPDATE `sys_privilege` SET `name` = '培养方案管理', `url` = 'CultureProgram' WHERE (`id` = '2036');
-UPDATE `sys_privilege` SET `name` = '查看详情', `url` = 'CultureProgramDetail', `related` = '2044,2045,2046,2047,2048,2049,2050,2051,2052,2053,2054,2055,2058,2059,2060' WHERE (`id` = '2041');
+UPDATE `sys_privilege` SET `name` = '查看详情', `url` = 'CultureProgramDetail', `related` = '2044,2045,2046,2047,2048,2049,2050,2051,2052,2053,2054,2055,2058,2059,2060,2066,2067' WHERE (`id` = '2041');
 UPDATE `sys_privilege` SET `url` = '/api/admin/obe/culture/program/page' WHERE (`id` = '2042');
 UPDATE `sys_privilege` SET `url` = '/api/admin/obe/culture/program/save' WHERE (`id` = '2043');
 UPDATE `sys_privilege` SET `name` = '课程体系-选择课程', `url` = '/api/admin/obe/culture/program/course/query_list' WHERE (`id` = '2044');
@@ -105,3 +108,5 @@ UPDATE `sys_privilege` SET `related` = '536,540' WHERE (`id` = '519');
 UPDATE `sys_privilege` SET `related` = '536,540' WHERE (`id` = '520');
 UPDATE `sys_privilege` SET `related` = '536,540' WHERE (`id` = '522');
 UPDATE `sys_privilege` SET `related` = '2042,540' WHERE (`id` = '2038');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('2066', '保存总体描述', '/api/admin/obe/culture/program/description/save', 'URL', '2036', '20', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('2067', '设置期望值', '/api/admin/obe/culture/program/requirement/expect/save', 'URL', '2036', '21', 'AUTH', '1', '1', '1');

+ 15 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCultureProgramController.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.dto.professional.ProfessionalDto;
 import com.qmth.distributed.print.business.bean.params.obe.cultureProgram.ObeCultureProgramCourseParam;
+import com.qmth.distributed.print.business.bean.params.obe.cultureProgram.ObeCultureProgramDescriptionParam;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
@@ -78,6 +79,13 @@ public class ObeCultureProgramController {
         return ResultUtil.ok(obeCultureProgramService.copy(id));
     }
 
+    @ApiOperation(value = "保存总体描述")
+    @RequestMapping(value = "/description/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "保存总体描述", response = Boolean.class)})
+    public Result saveDescription(@Validated @RequestBody ObeCultureProgramDescriptionParam obeCultureProgramDescriptionParam) {
+        return ResultUtil.ok(obeCultureProgramService.saveDescription(obeCultureProgramDescriptionParam));
+    }
+
     @ApiOperation(value = "培养目标-列表")
     @RequestMapping(value = "/target/list", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "培养目标-列表", response = Boolean.class)})
@@ -122,6 +130,13 @@ public class ObeCultureProgramController {
         return ResultUtil.ok(obeCultureProgramRequirementService.removeRequirement(id));
     }
 
+    @ApiOperation(value = "毕业要求-设置期望值")
+    @RequestMapping(value = "/requirement/expect/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Boolean.class)})
+    public Result saveRequirementExpect(@RequestBody ObeCultureProgramRequirement obeCultureProgramRequirement) {
+        return ResultUtil.ok(obeCultureProgramRequirementService.saveRequirementExpect(obeCultureProgramRequirement));
+    }
+
     @ApiOperation(value = "培养目标与毕业要求关系矩阵-查询")
     @RequestMapping(value = "/target/matrix/get", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Result.class)})