xiaofei 1 rok temu
rodzic
commit
0d93b395c3
22 zmienionych plików z 261 dodań i 38 usunięć
  1. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/obe/cultureProgram/CultureProgramCourseSelectResult.java
  2. 3 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgram.java
  3. 9 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgramCourse.java
  4. 4 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgramRequirement.java
  5. 3 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgramTarget.java
  6. 5 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeRequirementTargetMatrix.java
  7. 2 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCultureProgramCourseMapper.java
  8. 3 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCourseRequirementMatrixService.java
  9. 5 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCultureProgramCourseService.java
  10. 7 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCultureProgramRequirementService.java
  11. 2 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCultureProgramService.java
  12. 5 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCultureProgramTargetService.java
  13. 3 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeRequirementTargetMatrixService.java
  14. 25 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicProfessionalServiceImpl.java
  15. 15 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCourseRequirementMatrixServiceImpl.java
  16. 25 8
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramCourseServiceImpl.java
  17. 32 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramRequirementServiceImpl.java
  18. 55 12
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramServiceImpl.java
  19. 28 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramTargetServiceImpl.java
  20. 18 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeRequirementTargetMatrixServiceImpl.java
  21. 10 0
      distributed-print-business/src/main/resources/mapper/ObeCultureProgramCourseMapper.xml
  22. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCultureProgramController.java

+ 1 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/obe/cultureProgram/CultureProgramCourseSelectResult.java

@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty;
  */
 public class CultureProgramCourseSelectResult {
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "课程ID")
     private Long courseId;
     @ApiModelProperty(value = "课程名称")

+ 3 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgram.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -27,6 +29,7 @@ import javax.validation.constraints.NotNull;
 public class ObeCultureProgram extends BaseEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "专业ID")
     @NotNull(message = "请选择专业")
     private Long professionalId;

+ 9 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgramCourse.java

@@ -1,10 +1,13 @@
 package com.qmth.distributed.print.business.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.io.Serializable;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -23,21 +26,24 @@ public class ObeCultureProgramCourse extends BaseEntity implements Serializable
 
     private static final long serialVersionUID = 1L;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "培养方案ID")
     private Long cultureProgramId;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "课程ID")
     private Long courseId;
+    @ApiModelProperty(value = "排序值")
+    private Integer sortNum;
 
     @ApiModelProperty(value = "课程代码")
+    @TableField(exist = false)
     private String courseCode;
 
     @ApiModelProperty(value = "课程名称")
+    @TableField(exist = false)
     private String courseName;
 
-    @ApiModelProperty(value = "排序值")
-    private Integer sortNum;
-
     public Long getCultureProgramId() {
         return cultureProgramId;
     }

+ 4 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgramRequirement.java

@@ -9,6 +9,8 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import io.swagger.annotations.ApiModel;
@@ -28,6 +30,7 @@ public class ObeCultureProgramRequirement extends BaseEntity implements Serializ
 
     private static final long serialVersionUID = 1L;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "培养方案ID")
     private Long cultureProgramId;
 
@@ -43,6 +46,7 @@ public class ObeCultureProgramRequirement extends BaseEntity implements Serializ
     @ApiModelProperty(value = "预期值")
     private Double expectValue;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "上级毕业要求")
     private Long parentId;
 

+ 3 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgramTarget.java

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
 
 import java.io.Serializable;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -27,6 +29,7 @@ public class ObeCultureProgramTarget extends BaseEntity implements Serializable
 
     private static final long serialVersionUID = 1L;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "培养方案ID")
     @NotNull(message = "培养方案ID不能为空")
     private Long cultureProgramId;

+ 5 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeRequirementTargetMatrix.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
 
 import java.io.Serializable;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.base.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -25,12 +27,15 @@ public class ObeRequirementTargetMatrix extends BaseEntity implements Serializab
 
     private static final long serialVersionUID = 1L;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "培养方案ID")
     private Long cultureProgramId;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "毕业要求ID")
     private Long obeRequirementId;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "培养目标ID")
     private Long obeTargetId;
 

+ 2 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCultureProgramCourseMapper.java

@@ -19,4 +19,6 @@ import java.util.Set;
 public interface ObeCultureProgramCourseMapper extends BaseMapper<ObeCultureProgramCourse> {
 
     List<CultureProgramCourseSelectResult> queryList(@Param("cultureProgramId") Long cultureProgramId, @Param("orgIdSet") Set<Long> orgIdSet);
+
+    List<ObeCultureProgramCourse> listCourse(Long cultureProgramId);
 }

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

@@ -7,6 +7,7 @@ import com.qmth.distributed.print.business.entity.ObeCultureProgramCourse;
 import com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -25,4 +26,6 @@ public interface ObeCourseRequirementMatrixService extends IService<ObeCourseReq
     void updateMatrix(Long cultureProgramId, List<ObeCultureProgramRequirement> requirementList, List<ObeCultureProgramCourse> courseList);
 
     void removeMatrixByCondition(ObeCourseRequirementMatrix obeCourseRequirementMatrix);
+
+    void copyByCultureProgramId(Long id, Long obeCultureProgramNewId, Map<Long, Long> requirementIdMap, Map<Long, Long> courseIdMap);
 }

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

@@ -6,6 +6,7 @@ import com.qmth.distributed.print.business.bean.result.obe.cultureProgram.Cultur
 import com.qmth.distributed.print.business.entity.ObeCultureProgramCourse;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -28,4 +29,8 @@ public interface ObeCultureProgramCourseService extends IService<ObeCultureProgr
     boolean saveSort(List<ObeCultureProgramCourse> courseList);
 
     boolean removeCourse(Long id);
+
+    void removeByCultureProgramId(Long id);
+
+    Map<Long, Long> copyByCultureProgramId(Long id, Long obeCultureProgramNewId);
 }

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

@@ -4,6 +4,7 @@ import com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -28,4 +29,10 @@ public interface ObeCultureProgramRequirementService extends IService<ObeCulture
     List<ObeCultureProgramRequirement> listByParentId(Long parentId);
 
     boolean saveRequirementExpect(ObeCultureProgramRequirement obeCultureProgramRequirement);
+
+    void removeByCultureProgramId(Long id);
+
+    Map<Long, Long> copyByCultureProgramId(Long id, Long obeCultureProgramNewId);
+
+    List<ObeCultureProgramRequirement> listByCultureProgramId(Long cultureProgramId);
 }

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

@@ -32,4 +32,6 @@ public interface ObeCultureProgramService extends IService<ObeCultureProgram> {
     void updateCourseCount(Long cultureProgramId);
 
     boolean saveDescription(ObeCultureProgramDescriptionParam obeCultureProgramDescriptionParam);
+
+    Long copyByCultureProgramId(Long id);
 }

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

@@ -4,6 +4,7 @@ import com.qmth.distributed.print.business.entity.ObeCultureProgramTarget;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -19,4 +20,8 @@ public interface ObeCultureProgramTargetService extends IService<ObeCultureProgr
     boolean saveData(ObeCultureProgramTarget obeCultureProgramTarget);
 
     boolean delete(Long id);
+
+    void removeByCultureProgramId(Long id);
+
+    Map<Long, Long> copyByCultureProgramId(Long id, Long obeCultureProgramNewId);
 }

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

@@ -2,11 +2,11 @@ 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;
+import java.util.Map;
 
 /**
  * <p>
@@ -25,4 +25,6 @@ public interface ObeRequirementTargetMatrixService extends IService<ObeRequireme
     void updateMatrix(ObeCultureProgramTarget obeCultureProgramTarget);
 
     void removeMatrixByCondition(ObeRequirementTargetMatrix obeRequirementTargetMatrix);
+
+    void copyByCultureProgramId(Long id, Long obeCultureProgramNewId, Map<Long, Long> targetIdMap, Map<Long, Long> requirementIdMap);
 }

+ 25 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicProfessionalServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -8,8 +9,12 @@ import com.qmth.distributed.print.business.entity.BasicProfessional;
 import com.qmth.distributed.print.business.mapper.BasicProfessionalMapper;
 import com.qmth.distributed.print.business.service.BasicProfessionalService;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
+import com.qmth.teachcloud.common.service.SysOrgService;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.springframework.stereotype.Service;
 
@@ -29,10 +34,16 @@ public class BasicProfessionalServiceImpl extends ServiceImpl<BasicProfessionalM
 
     @Resource
     private BasicRoleDataPermissionService basicRoleDataPermissionService;
+    @Resource
+    private SysOrgService sysOrgService;
 
     @Override
     public List<ProfessionalDto> listData(String name, Long orgId) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        SysOrg sysOrg = sysOrgService.getById(orgId);
+        if (sysOrg != null && OrgTypeEnum.SCHOOL.equals(sysOrg.getType())) {
+            orgId = null;
+        }
         return this.baseMapper.pageData(schoolId, name, orgId, null);
     }
 
@@ -45,11 +56,21 @@ public class BasicProfessionalServiceImpl extends ServiceImpl<BasicProfessionalM
     }
 
     @Override
-    public Boolean saveData(BasicProfessional tpProfessional) {
+    public Boolean saveData(BasicProfessional basicProfessional) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        tpProfessional.insertInfo(sysUser.getId());
-        tpProfessional.setSchoolId(sysUser.getSchoolId());
-        return this.save(tpProfessional);
+
+        if (basicProfessional.getId() == null) {
+            basicProfessional.insertInfo(sysUser.getId());
+            basicProfessional.setSchoolId(sysUser.getSchoolId());
+            return this.save(basicProfessional);
+        } else {
+            BasicProfessional basicProfessional1 = this.getOne(new QueryWrapper<BasicProfessional>().lambda().eq(BasicProfessional::getOrgId, basicProfessional.getOrgId()).eq(BasicProfessional::getName, basicProfessional.getName()));
+            if (basicProfessional1 != null && basicProfessional1.getId() != basicProfessional.getId()) {
+                throw ExceptionResultEnum.ERROR.exception("专业名称已存在");
+            }
+            basicProfessional.updateInfo(sysUser.getId());
+            return this.updateById(basicProfessional);
+        }
     }
 
     @Override

+ 15 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCourseRequirementMatrixServiceImpl.java

@@ -32,6 +32,7 @@ import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -173,4 +174,18 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
         }
         this.remove(updateWrapper);
     }
+
+    @Override
+    public void copyByCultureProgramId(Long id, Long obeCultureProgramNewId, Map<Long, Long> requirementIdMap, Map<Long, Long> courseIdMap) {
+        List<ObeCourseRequirementMatrix> obeCourseRequirementMatrixList = this.list(new QueryWrapper<ObeCourseRequirementMatrix>().lambda().eq(ObeCourseRequirementMatrix::getCultureProgramId, id));
+        for (ObeCourseRequirementMatrix obeCourseRequirementMatrix : obeCourseRequirementMatrixList) {
+            obeCourseRequirementMatrix.setCultureProgramId(obeCultureProgramNewId);
+            obeCourseRequirementMatrix.setObeCourseId(courseIdMap.get(obeCourseRequirementMatrix.getObeCourseId()));
+            obeCourseRequirementMatrix.setObeRequirementId(requirementIdMap.get(obeCourseRequirementMatrix.getObeRequirementId()));
+            obeCourseRequirementMatrix.setObeSubRequirementId(requirementIdMap.get(obeCourseRequirementMatrix.getObeSubRequirementId()));
+        }
+        if (CollectionUtils.isNotEmpty(obeCourseRequirementMatrixList)) {
+            this.saveBatch(obeCourseRequirementMatrixList);
+        }
+    }
 }

+ 25 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramCourseServiceImpl.java

@@ -11,6 +11,8 @@ 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.ObeCultureProgramService;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.SysOrgService;
@@ -20,10 +22,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
@@ -56,10 +55,7 @@ public class ObeCultureProgramCourseServiceImpl extends ServiceImpl<ObeCulturePr
 
     @Override
     public List<ObeCultureProgramCourse> listCourse(Long cultureProgramId) {
-        QueryWrapper<ObeCultureProgramCourse> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(ObeCultureProgramCourse::getCultureProgramId, cultureProgramId)
-                .orderByAsc(ObeCultureProgramCourse::getSortNum);
-        return this.list(queryWrapper);
+        return this.baseMapper.listCourse(cultureProgramId);
     }
 
     @Override
@@ -130,4 +126,25 @@ public class ObeCultureProgramCourseServiceImpl extends ServiceImpl<ObeCulturePr
         }
         return true;
     }
+
+    @Override
+    public void removeByCultureProgramId(Long id) {
+        this.remove(new QueryWrapper<ObeCultureProgramCourse>().lambda().eq(ObeCultureProgramCourse::getCultureProgramId, id));
+    }
+
+    @Override
+    public Map<Long, Long> copyByCultureProgramId(Long id, Long obeCultureProgramNewId) {
+        List<ObeCultureProgramCourse> obeCultureProgramCourseList = this.listCourse(id);
+        Map<Long, Long> idMap = new HashMap<>();
+        for (ObeCultureProgramCourse obeCultureProgramCourse : obeCultureProgramCourseList) {
+            Long newId = SystemConstant.getDbUuid();
+            idMap.put(obeCultureProgramCourse.getId(), newId);
+            obeCultureProgramCourse.setId(newId);
+            obeCultureProgramCourse.setCultureProgramId(obeCultureProgramNewId);
+        }
+        if (CollectionUtils.isNotEmpty(obeCultureProgramCourseList)) {
+            this.saveBatch(obeCultureProgramCourseList);
+        }
+        return idMap;
+    }
 }

+ 32 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramRequirementServiceImpl.java

@@ -10,6 +10,7 @@ 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.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.util.ServletUtil;
@@ -39,10 +40,7 @@ public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCult
 
     @Override
     public List<ObeCultureProgramRequirement> listRequirement(Long cultureProgramId) {
-        QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId)
-                .orderByAsc(ObeCultureProgramRequirement::getSortNum);
-        List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = this.list(queryWrapper);
+        List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = this.listByCultureProgramId(cultureProgramId);
 
         List<ObeCultureProgramRequirement> obeCultureProgramRequirements = new ArrayList<>();
         if (CollectionUtils.isNotEmpty(obeCultureProgramRequirementList)) {
@@ -161,6 +159,36 @@ public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCult
         return this.update(updateWrapper);
     }
 
+    @Override
+    public void removeByCultureProgramId(Long id) {
+        this.remove(new QueryWrapper<ObeCultureProgramRequirement>().lambda().eq(ObeCultureProgramRequirement::getCultureProgramId, id));
+    }
+
+    @Override
+    public Map<Long, Long> copyByCultureProgramId(Long id, Long obeCultureProgramNewId) {
+        List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = this.listByCultureProgramId(id);
+        // 原id与新id的映射关系
+        Map<Long, Long> idMap = new HashMap<>();
+        for (ObeCultureProgramRequirement obeCultureProgramRequirement : obeCultureProgramRequirementList) {
+            Long newId = SystemConstant.getDbUuid();
+            idMap.put(obeCultureProgramRequirement.getId(), newId);
+            obeCultureProgramRequirement.setId(newId);
+            obeCultureProgramRequirement.setCultureProgramId(obeCultureProgramNewId);
+        }
+        if (CollectionUtils.isNotEmpty(obeCultureProgramRequirementList)) {
+            this.saveBatch(obeCultureProgramRequirementList);
+        }
+        return idMap;
+    }
+
+    @Override
+    public List<ObeCultureProgramRequirement> listByCultureProgramId(Long cultureProgramId) {
+        QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId)
+                .orderByAsc(ObeCultureProgramRequirement::getSortNum);
+        return this.list(queryWrapper);
+    }
+
     private String concatRequirementName(int requirementNum, int subRequirementNum) {
         return NAME_PREFIX + requirementNum + "-" + subRequirementNum;
     }

+ 55 - 12
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramServiceImpl.java

@@ -1,23 +1,17 @@
 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.entity.*;
 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.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
@@ -26,6 +20,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * <p>
@@ -41,10 +37,14 @@ public class ObeCultureProgramServiceImpl extends ServiceImpl<ObeCultureProgramM
     @Resource
     private ObeCultureProgramTargetService obeCultureProgramTargetService;
     @Resource
+    private ObeRequirementTargetMatrixService obeRequirementTargetMatrixService;
+    @Resource
     private ObeCultureProgramCourseService obeCultureProgramCourseService;
     @Resource
     private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
     @Resource
+    private ObeCourseRequirementMatrixService obeCourseRequirementMatrixService;
+    @Resource
     private BasicRoleDataPermissionService basicRoleDataPermissionService;
 
     @Override
@@ -80,14 +80,39 @@ public class ObeCultureProgramServiceImpl extends ServiceImpl<ObeCultureProgramM
         }
     }
 
+    @Transactional
     @Override
     public boolean delete(Long id) {
-        return this.removeById(id);
+        // 删除培养方案
+        this.removeById(id);
+        // 删除培养目标
+        obeCultureProgramTargetService.removeByCultureProgramId(id);
+        // 删除毕业要求
+        obeCultureProgramRequirementService.removeByCultureProgramId(id);
+        // 删除培养目标与毕业要求关系矩阵
+        obeRequirementTargetMatrixService.removeMatrixByCondition(new ObeRequirementTargetMatrix(id, null, null));
+        // 删除课程体系
+        obeCultureProgramCourseService.removeByCultureProgramId(id);
+        // 删除课程毕业要求关系矩阵
+        obeCourseRequirementMatrixService.removeMatrixByCondition(new ObeCourseRequirementMatrix(id, null, null, null));
+        return true;
     }
 
     @Transactional
     @Override
     public boolean copy(Long id) {
+        // 复制培养方案
+        Long obeCultureProgramNewId = this.copyByCultureProgramId(id);
+        // 复制课程目标
+        Map<Long, Long> targetIdMap = obeCultureProgramTargetService.copyByCultureProgramId(id, obeCultureProgramNewId);
+        // 复制毕业要求
+        Map<Long, Long> requirementIdMap = obeCultureProgramRequirementService.copyByCultureProgramId(id, obeCultureProgramNewId);
+        // 复制培养目标与毕业要求关系矩阵
+        obeRequirementTargetMatrixService.copyByCultureProgramId(id, obeCultureProgramNewId, targetIdMap, requirementIdMap);
+        // 复制课程体系
+        Map<Long, Long> courseIdMap = obeCultureProgramCourseService.copyByCultureProgramId(id, obeCultureProgramNewId);
+        // 复制课程毕业要求关系矩阵
+        obeCourseRequirementMatrixService.copyByCultureProgramId(id, obeCultureProgramNewId, requirementIdMap, courseIdMap);
         return false;
     }
 
@@ -113,7 +138,8 @@ public class ObeCultureProgramServiceImpl extends ServiceImpl<ObeCultureProgramM
     @Override
     public void updateRequirementCount(Long cultureProgramId) {
         QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId);
+        queryWrapper.lambda().eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId)
+                .isNull(ObeCultureProgramRequirement::getParentId);
 
         UpdateWrapper<ObeCultureProgram> updateWrapper = new UpdateWrapper<>();
         updateWrapper.lambda().set(ObeCultureProgram::getRequirementCount, obeCultureProgramRequirementService.count(queryWrapper))
@@ -139,4 +165,21 @@ public class ObeCultureProgramServiceImpl extends ServiceImpl<ObeCultureProgramM
                 .set(ObeCultureProgram::getDescription, obeCultureProgramDescriptionParam.getDescription());
         return this.update(updateWrapper);
     }
+
+    @Override
+    public Long copyByCultureProgramId(Long id) {
+        ObeCultureProgram obeCultureProgram = this.getById(id);
+        if (obeCultureProgram == null) {
+            throw ExceptionResultEnum.ERROR.exception("培养方案不存在");
+        }
+        AtomicInteger i = new AtomicInteger(1);
+        String name = obeCultureProgram.getName() + "副本" + i.getAndIncrement();
+        while (this.getByProfessionalIdAndName(obeCultureProgram.getProfessionalId(), name) != null) {
+            name = obeCultureProgram.getName() + "副本" + i.getAndIncrement();
+        }
+        obeCultureProgram.setId(SystemConstant.getDbUuid());
+        obeCultureProgram.setName(name);
+        this.save(obeCultureProgram);
+        return obeCultureProgram.getId();
+    }
 }

+ 28 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramTargetServiceImpl.java

@@ -8,17 +8,17 @@ 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;
+import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.SysUser;
 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 org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
-import java.util.stream.Collectors;
+import java.util.Map;
 
 /**
  * <p>
@@ -70,10 +70,34 @@ public class ObeCultureProgramTargetServiceImpl extends ServiceImpl<ObeCulturePr
     @Transactional
     @Override
     public boolean delete(Long id) {
+        ObeCultureProgramTarget obeCultureProgramTarget = this.getById(id);
         if (this.removeById(id)) {
             obeRequirementTargetMatrixService.removeMatrixByCondition(new ObeRequirementTargetMatrix(null, null, id));
-            obeCultureProgramService.updateTargetCount(this.getById(id).getCultureProgramId());
+            if (obeCultureProgramTarget != null) {
+                obeCultureProgramService.updateTargetCount(obeCultureProgramTarget.getCultureProgramId());
+            }
         }
         return true;
     }
+
+    @Override
+    public void removeByCultureProgramId(Long id) {
+        this.remove(new QueryWrapper<ObeCultureProgramTarget>().lambda().eq(ObeCultureProgramTarget::getCultureProgramId, id));
+    }
+
+    @Override
+    public Map<Long, Long> copyByCultureProgramId(Long id, Long obeCultureProgramNewId) {
+        List<ObeCultureProgramTarget> obeCultureProgramTargetList = this.list(id);
+        Map<Long, Long> idMap = new HashMap<>();
+        for (ObeCultureProgramTarget obeCultureProgramTarget : obeCultureProgramTargetList) {
+            Long newId = SystemConstant.getDbUuid();
+            idMap.put(obeCultureProgramTarget.getId(), newId);
+            obeCultureProgramTarget.setId(newId);
+            obeCultureProgramTarget.setCultureProgramId(obeCultureProgramNewId);
+        }
+        if (CollectionUtils.isNotEmpty(obeCultureProgramTargetList)) {
+            this.saveBatch(obeCultureProgramTargetList);
+        }
+        return idMap;
+    }
 }

+ 18 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeRequirementTargetMatrixServiceImpl.java

@@ -11,6 +11,8 @@ 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 com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.enums.mark.MarkMode;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -20,6 +22,7 @@ import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -55,7 +58,7 @@ public class ObeRequirementTargetMatrixServiceImpl extends ServiceImpl<ObeRequir
                     matrixRequirementDto.setName(m.getTargetName());
                     matrixRequirementDto.setEnable(m.getEnable());
                     return matrixRequirementDto;
-                }).sorted(Comparator.comparingLong(o -> o.getCreateTime())).collect(Collectors.toList());
+                }).collect(Collectors.toList());
                 requirementTargetMatrixDto.setTargetList(matrixTargetDtoList);
                 matrixDtoList.add(requirementTargetMatrixDto);
             });
@@ -100,4 +103,18 @@ public class ObeRequirementTargetMatrixServiceImpl extends ServiceImpl<ObeRequir
         }
         this.remove(updateWrapper);
     }
+
+    @Override
+    public void copyByCultureProgramId(Long id, Long obeCultureProgramNewId, Map<Long, Long> targetIdMap, Map<Long, Long> requirementIdMap) {
+        List<ObeRequirementTargetMatrix> obeRequirementTargetMatrixList = this.baseMapper.listMatrix(id);
+        for (ObeRequirementTargetMatrix matrix : obeRequirementTargetMatrixList) {
+            matrix.setId(SystemConstant.getDbUuid());
+            matrix.setCultureProgramId(obeCultureProgramNewId);
+            matrix.setObeRequirementId(requirementIdMap.get(matrix.getObeRequirementId()));
+            matrix.setObeTargetId(targetIdMap.get(matrix.getObeTargetId()));
+        }
+        if (CollectionUtils.isNotEmpty(obeRequirementTargetMatrixList)) {
+            this.saveBatch(obeRequirementTargetMatrixList);
+        }
+    }
 }

+ 10 - 0
distributed-print-business/src/main/resources/mapper/ObeCultureProgramCourseMapper.xml

@@ -48,5 +48,15 @@
                 LEFT JOIN
             sys_org so ON bc.teaching_room_id = so.id
     </select>
+    <select id="listCourse" resultType="com.qmth.distributed.print.business.entity.ObeCultureProgramCourse"
+            parameterType="java.lang.Long">
+        SELECT
+            ocpc.*, bc.code courseCode, bc.name courseName
+        FROM
+            obe_culture_program_course ocpc
+                LEFT JOIN
+            basic_course bc ON ocpc.course_id = bc.id
+        where ocpc.culture_program_id = #{cultureProgramId}
+    </select>
 
 </mapper>

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

@@ -155,7 +155,7 @@ public class ObeCultureProgramController {
     @RequestMapping(value = "/course/query_list", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Result.class)})
     public Result queryList(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId,
-                            @ApiParam(value = "机构ID", required = true) @RequestParam Long orgId) {
+                            @ApiParam(value = "机构ID") @RequestParam(required = false) Long orgId) {
         return ResultUtil.ok(obeCultureProgramCourseService.queryList(cultureProgramId, orgId));
     }