소스 검색

3.3.4 update

xiaofei 1 년 전
부모
커밋
f64d83de35
70개의 변경된 파일2142개의 추가작업 그리고 1526개의 파일을 삭제
  1. 73 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/CourseRequirementMatrixDto.java
  2. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/MatrixRequirementDto.java
  3. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/MatrixSubRequirementDto.java
  4. 41 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/MatrixTargetDto.java
  5. 27 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/RequirementTargetMatrixDto.java
  6. 0 46
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/professional/MatrixDto.java
  7. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/professional/ProfessionalDto.java
  8. 0 31
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/professional/ProfessionalExportData.java
  9. 0 43
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/professional/ProfessionalExportHead.java
  10. 28 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/obe/cultureProgram/ObeCultureProgramCourseParam.java
  11. 0 28
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/professional/TPCourseParam.java
  12. 13 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/obe/cultureProgram/CultureProgramCourseSelectResult.java
  13. 36 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/obe/cultureProgram/CultureProgramResult.java
  14. 10 14
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/BasicProfessional.java
  15. 104 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCourseRequirementMatrix.java
  16. 102 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgram.java
  17. 87 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgramCourse.java
  18. 92 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgramRequirement.java
  19. 74 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgramTarget.java
  20. 101 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeRequirementTargetMatrix.java
  21. 0 77
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TPCourse.java
  22. 0 114
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TPMatrix.java
  23. 0 89
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TPRequirement.java
  24. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicProfessionalMapper.java
  25. 20 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCourseRequirementMatrixMapper.java
  26. 22 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCultureProgramCourseMapper.java
  27. 22 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCultureProgramMapper.java
  28. 16 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCultureProgramRequirementMapper.java
  29. 16 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCultureProgramTargetMapper.java
  30. 19 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeRequirementTargetMatrixMapper.java
  31. 0 22
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TPCourseMapper.java
  32. 0 19
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TPMatrixMapper.java
  33. 0 16
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TPRequirementMapper.java
  34. 5 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicProfessionalService.java
  35. 22 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCourseRequirementMatrixService.java
  36. 31 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCultureProgramCourseService.java
  37. 25 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCultureProgramRequirementService.java
  38. 26 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCultureProgramService.java
  39. 22 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeCultureProgramTargetService.java
  40. 23 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ObeRequirementTargetMatrixService.java
  41. 0 31
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TPCourseService.java
  42. 0 33
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TPMatrixService.java
  43. 0 28
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TPRequirementService.java
  44. 52 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicProfessionalServiceImpl.java
  45. 127 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCourseRequirementMatrixServiceImpl.java
  46. 117 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramCourseServiceImpl.java
  47. 82 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramRequirementServiceImpl.java
  48. 63 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramServiceImpl.java
  49. 49 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramTargetServiceImpl.java
  50. 69 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeRequirementTargetMatrixServiceImpl.java
  51. 0 132
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TPCourseServiceImpl.java
  52. 0 396
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TPMatrixServiceImpl.java
  53. 0 70
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TPProfessionalServiceImpl.java
  54. 0 111
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TPRequirementServiceImpl.java
  55. 99 0
      distributed-print-business/src/main/resources/db/log/xiaofei.sql
  56. 3 3
      distributed-print-business/src/main/resources/mapper/BasicProfessionalMapper.xml
  57. 41 0
      distributed-print-business/src/main/resources/mapper/ObeCourseRequirementMatrixMapper.xml
  58. 12 11
      distributed-print-business/src/main/resources/mapper/ObeCultureProgramCourseMapper.xml
  59. 56 0
      distributed-print-business/src/main/resources/mapper/ObeCultureProgramMapper.xml
  60. 5 5
      distributed-print-business/src/main/resources/mapper/ObeCultureProgramRequirementMapper.xml
  61. 17 0
      distributed-print-business/src/main/resources/mapper/ObeCultureProgramTargetMapper.xml
  62. 33 0
      distributed-print-business/src/main/resources/mapper/ObeRequirementTargetMatrixMapper.xml
  63. 0 34
      distributed-print-business/src/main/resources/mapper/TPMatrixMapper.xml
  64. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicMajorController.java
  65. 59 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicProfessionalController.java
  66. 188 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCultureProgramController.java
  67. 0 155
      distributed-print/src/main/java/com/qmth/distributed/print/api/TPProfessionalController.java
  68. 2 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  69. 0 0
      teachcloud-common/src/main/resources/mapper/BasicProfessionalService.xml
  70. 0 0
      teachcloud-report-business/src/main/resources/mapper/BasicProfessionalService.xml

+ 73 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/CourseRequirementMatrixDto.java

@@ -0,0 +1,73 @@
+package com.qmth.distributed.print.business.bean.dto.obe;
+
+import com.qmth.distributed.print.business.entity.ObeCourseRequirementMatrix;
+
+import java.util.List;
+
+public class CourseRequirementMatrixDto extends ObeCourseRequirementMatrix {
+
+    private String courseCode;
+    private String courseName;
+    private int courseSortNum;
+    private int requirementSortNum;
+    private int subRequirementSortNum;
+    // 是否可编辑
+    private Boolean canEdit;
+    private List<MatrixRequirementDto> requirements;
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public int getCourseSortNum() {
+        return courseSortNum;
+    }
+
+    public void setCourseSortNum(int courseSortNum) {
+        this.courseSortNum = courseSortNum;
+    }
+
+    public int getRequirementSortNum() {
+        return requirementSortNum;
+    }
+
+    public void setRequirementSortNum(int requirementSortNum) {
+        this.requirementSortNum = requirementSortNum;
+    }
+
+    public int getSubRequirementSortNum() {
+        return subRequirementSortNum;
+    }
+
+    public void setSubRequirementSortNum(int subRequirementSortNum) {
+        this.subRequirementSortNum = subRequirementSortNum;
+    }
+
+    public List<MatrixRequirementDto> getRequirements() {
+        return requirements;
+    }
+
+    public void setRequirements(List<MatrixRequirementDto> requirements) {
+        this.requirements = requirements;
+    }
+
+    public Boolean getCanEdit() {
+        return canEdit;
+    }
+
+    public void setCanEdit(Boolean canEdit) {
+        this.canEdit = canEdit;
+    }
+}

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/professional/MatrixRequirementDto.java → distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/MatrixRequirementDto.java

@@ -1,10 +1,10 @@
-package com.qmth.distributed.print.business.bean.dto.professional;
+package com.qmth.distributed.print.business.bean.dto.obe;
 
-import com.qmth.distributed.print.business.entity.TPProfessional;
+import com.qmth.distributed.print.business.entity.BasicProfessional;
 
 import java.util.List;
 
-public class MatrixRequirementDto extends TPProfessional {
+public class MatrixRequirementDto extends BasicProfessional {
 
     private String name;
     private List<MatrixSubRequirementDto> subRequirements;

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/professional/MatrixSubRequirementDto.java → distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/MatrixSubRequirementDto.java

@@ -1,10 +1,10 @@
-package com.qmth.distributed.print.business.bean.dto.professional;
+package com.qmth.distributed.print.business.bean.dto.obe;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
-import com.qmth.distributed.print.business.entity.TPProfessional;
+import com.qmth.distributed.print.business.entity.BasicProfessional;
 
-public class MatrixSubRequirementDto extends TPProfessional {
+public class MatrixSubRequirementDto extends BasicProfessional {
 
     @JsonSerialize(using = ToStringSerializer.class)
     private Long id;

+ 41 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/MatrixTargetDto.java

@@ -0,0 +1,41 @@
+package com.qmth.distributed.print.business.bean.dto.obe;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.distributed.print.business.entity.ObeCultureProgramTarget;
+
+public class MatrixTargetDto extends ObeCultureProgramTarget {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+    private String name;
+    private Boolean enable;
+
+    @Override
+    public Long getId() {
+        return id;
+    }
+
+    @Override
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+}

+ 27 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/RequirementTargetMatrixDto.java

@@ -0,0 +1,27 @@
+package com.qmth.distributed.print.business.bean.dto.obe;
+
+import com.qmth.distributed.print.business.entity.ObeRequirementTargetMatrix;
+
+import java.util.List;
+
+public class RequirementTargetMatrixDto extends ObeRequirementTargetMatrix {
+
+    private String requirementName;
+    private List<MatrixTargetDto> requirements;
+
+    public String getRequirementName() {
+        return requirementName;
+    }
+
+    public void setRequirementName(String requirementName) {
+        this.requirementName = requirementName;
+    }
+
+    public List<MatrixTargetDto> getRequirements() {
+        return requirements;
+    }
+
+    public void setRequirements(List<MatrixTargetDto> requirements) {
+        this.requirements = requirements;
+    }
+}

+ 0 - 46
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/professional/MatrixDto.java

@@ -1,46 +0,0 @@
-package com.qmth.distributed.print.business.bean.dto.professional;
-
-import com.qmth.distributed.print.business.entity.TPProfessional;
-
-import java.util.List;
-
-public class MatrixDto extends TPProfessional {
-
-    private String courseCode;
-    private String courseName;
-    // 是否可编辑
-    private Boolean canEdit;
-    private List<MatrixRequirementDto> requirements;
-
-    public String getCourseCode() {
-        return courseCode;
-    }
-
-    public void setCourseCode(String courseCode) {
-        this.courseCode = courseCode;
-    }
-
-    public String getCourseName() {
-        return courseName;
-    }
-
-    public void setCourseName(String courseName) {
-        this.courseName = courseName;
-    }
-
-    public List<MatrixRequirementDto> getRequirements() {
-        return requirements;
-    }
-
-    public void setRequirements(List<MatrixRequirementDto> requirements) {
-        this.requirements = requirements;
-    }
-
-    public Boolean getCanEdit() {
-        return canEdit;
-    }
-
-    public void setCanEdit(Boolean canEdit) {
-        this.canEdit = canEdit;
-    }
-}

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/professional/ProfessionalDto.java

@@ -1,8 +1,8 @@
 package com.qmth.distributed.print.business.bean.dto.professional;
 
-import com.qmth.distributed.print.business.entity.TPProfessional;
+import com.qmth.distributed.print.business.entity.BasicProfessional;
 
-public class ProfessionalDto extends TPProfessional {
+public class ProfessionalDto extends BasicProfessional {
 
     private String orgName;
     private String loginName;

+ 0 - 31
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/professional/ProfessionalExportData.java

@@ -1,31 +0,0 @@
-package com.qmth.distributed.print.business.bean.dto.professional;
-
-public class ProfessionalExportData {
-
-    private String requirementName;
-    private int sortNum;
-
-    public ProfessionalExportData() {
-    }
-
-    public ProfessionalExportData(String requirementName, int sortNum) {
-        this.requirementName = requirementName;
-        this.sortNum = sortNum;
-    }
-
-    public String getRequirementName() {
-        return requirementName;
-    }
-
-    public void setRequirementName(String requirementName) {
-        this.requirementName = requirementName;
-    }
-
-    public int getSortNum() {
-        return sortNum;
-    }
-
-    public void setSortNum(int sortNum) {
-        this.sortNum = sortNum;
-    }
-}

+ 0 - 43
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/professional/ProfessionalExportHead.java

@@ -1,43 +0,0 @@
-package com.qmth.distributed.print.business.bean.dto.professional;
-
-import java.util.List;
-
-public class ProfessionalExportHead {
-
-    private String requirementName;
-    private int sortNum;
-    private List<String> subName;
-
-    public ProfessionalExportHead() {
-    }
-
-    public ProfessionalExportHead(String requirementName, int sortNum, List<String> subName) {
-        this.requirementName = requirementName;
-        this.sortNum = sortNum;
-        this.subName = subName;
-    }
-
-    public String getRequirementName() {
-        return requirementName;
-    }
-
-    public void setRequirementName(String requirementName) {
-        this.requirementName = requirementName;
-    }
-
-    public int getSortNum() {
-        return sortNum;
-    }
-
-    public void setSortNum(int sortNum) {
-        this.sortNum = sortNum;
-    }
-
-    public List<String> getSubName() {
-        return subName;
-    }
-
-    public void setSubName(List<String> subName) {
-        this.subName = subName;
-    }
-}

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

@@ -0,0 +1,28 @@
+package com.qmth.distributed.print.business.bean.params.obe.cultureProgram;
+
+import com.qmth.distributed.print.business.entity.ObeCultureProgramCourse;
+
+import java.util.List;
+
+public class ObeCultureProgramCourseParam {
+
+    private Long cultureProgramId;
+
+    private List<ObeCultureProgramCourse> courses;
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public List<ObeCultureProgramCourse> getCourses() {
+        return courses;
+    }
+
+    public void setCourses(List<ObeCultureProgramCourse> courses) {
+        this.courses = courses;
+    }
+}

+ 0 - 28
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/params/professional/TPCourseParam.java

@@ -1,28 +0,0 @@
-package com.qmth.distributed.print.business.bean.params.professional;
-
-import com.qmth.distributed.print.business.entity.TPCourse;
-
-import java.util.List;
-
-public class TPCourseParam {
-
-    private Long professionalId;
-
-    private List<TPCourse> courses;
-
-    public Long getProfessionalId() {
-        return professionalId;
-    }
-
-    public void setProfessionalId(Long professionalId) {
-        this.professionalId = professionalId;
-    }
-
-    public List<TPCourse> getCourses() {
-        return courses;
-    }
-
-    public void setCourses(List<TPCourse> courses) {
-        this.courses = courses;
-    }
-}

+ 13 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/ProfessionalCourseSelectResult.java → distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/obe/cultureProgram/CultureProgramCourseSelectResult.java

@@ -1,14 +1,16 @@
-package com.qmth.distributed.print.business.bean.result;
+package com.qmth.distributed.print.business.bean.result.obe.cultureProgram;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 
 /**
- * 专业认证课程选择
+ * 课程选择
  */
-public class ProfessionalCourseSelectResult {
+public class CultureProgramCourseSelectResult {
 
+    @ApiModelProperty(value = "课程ID")
+    private Long courseId;
     @ApiModelProperty(value = "课程名称")
     private String courseName;
 
@@ -25,6 +27,14 @@ public class ProfessionalCourseSelectResult {
     @ApiModelProperty(value = "是否可选")
     private boolean canSelect;
 
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
     public String getCourseName() {
         return courseName;
     }

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

@@ -0,0 +1,36 @@
+package com.qmth.distributed.print.business.bean.result.obe.cultureProgram;
+
+import com.qmth.distributed.print.business.entity.ObeCultureProgram;
+
+public class CultureProgramResult extends ObeCultureProgram {
+
+    private String professionalName;
+
+    private String createLoginName;
+
+    private String createRealName;
+
+    public String getProfessionalName() {
+        return professionalName;
+    }
+
+    public void setProfessionalName(String professionalName) {
+        this.professionalName = professionalName;
+    }
+
+    public String getCreateLoginName() {
+        return createLoginName;
+    }
+
+    public void setCreateLoginName(String createLoginName) {
+        this.createLoginName = createLoginName;
+    }
+
+    public String getCreateRealName() {
+        return createRealName;
+    }
+
+    public void setCreateRealName(String createRealName) {
+        this.createRealName = createRealName;
+    }
+}

+ 10 - 14
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TPProfessional.java → distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/BasicProfessional.java

@@ -1,32 +1,27 @@
 package com.qmth.distributed.print.business.entity;
 
 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;
 
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.io.Serializable;
 
 /**
  * <p>
- * 专业认证专业
+ * 专业表
  * </p>
  *
  * @author xf
  * @since 2024-04-22
  */
-@TableName("t_p_professional")
-@ApiModel(value="TPProfessional对象", description="专业认证专业表")
-public class TPProfessional extends BaseEntity implements Serializable {
+@TableName("basic_professional")
+@ApiModel(value = "BasicProfessional对象", description = "专业表")
+public class BasicProfessional extends BaseEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -58,6 +53,7 @@ public class TPProfessional extends BaseEntity implements Serializable {
     public void setName(String name) {
         this.name = name;
     }
+
     public Long getOrgId() {
         return orgId;
     }
@@ -68,9 +64,9 @@ public class TPProfessional extends BaseEntity implements Serializable {
 
     @Override
     public String toString() {
-        return "TPProfessional{" +
-            ", name=" + name +
-            ", orgId=" + orgId +
-        "}";
+        return "BasicProfessional{" +
+                ", name=" + name +
+                ", orgId=" + orgId +
+                "}";
     }
 }

+ 104 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCourseRequirementMatrix.java

@@ -0,0 +1,104 @@
+package com.qmth.distributed.print.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+
+import com.qmth.teachcloud.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * <p>
+ * 培养方案毕业要求支撑矩阵
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@TableName("obe_course_requirement_matrix")
+@ApiModel(value = "ObeCourseRequirementMatrix对象", description = "培养方案毕业要求支撑矩阵")
+public class ObeCourseRequirementMatrix extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "培养方案ID")
+    private Long cultureProgramId;
+
+    @ApiModelProperty(value = "专业认证课程ID")
+    private Long obeCourseId;
+
+    @ApiModelProperty(value = "专业认证毕业要求ID")
+    private Long obeRequirementId;
+
+    @ApiModelProperty(value = "子节点名称")
+    private Long obeSubRequirementId;
+
+    @ApiModelProperty(value = "指标值")
+    private Double content;
+
+    @ApiModelProperty(value = "强度")
+    private String intensity;
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public Long getObeCourseId() {
+        return obeCourseId;
+    }
+
+    public void setObeCourseId(Long obeCourseId) {
+        this.obeCourseId = obeCourseId;
+    }
+
+    public Long getObeRequirementId() {
+        return obeRequirementId;
+    }
+
+    public void setObeRequirementId(Long obeRequirementId) {
+        this.obeRequirementId = obeRequirementId;
+    }
+
+    public Long getObeSubRequirementId() {
+        return obeSubRequirementId;
+    }
+
+    public void setObeSubRequirementId(Long obeSubRequirementId) {
+        this.obeSubRequirementId = obeSubRequirementId;
+    }
+
+    public Double getContent() {
+        return content;
+    }
+
+    public void setContent(Double content) {
+        this.content = content;
+    }
+
+    public String getIntensity() {
+        return intensity;
+    }
+
+    public void setIntensity(String intensity) {
+        this.intensity = intensity;
+    }
+
+    @Override
+    public String toString() {
+        return "ObeCourseRequirementMatrix{" +
+                ", cultureProgramId=" + cultureProgramId +
+                ", obeCourseId=" + obeCourseId +
+                ", obeRequirementId=" + obeRequirementId +
+                ", obeSubRequirementId=" + obeSubRequirementId +
+                ", content=" + content +
+                ", intensity=" + intensity +
+                "}";
+    }
+}

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

@@ -0,0 +1,102 @@
+package com.qmth.distributed.print.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+
+import com.qmth.teachcloud.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.checkerframework.common.aliasing.qual.NonLeaked;
+
+import javax.annotation.Nonnull;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 培养方案
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@TableName("obe_culture_program")
+@ApiModel(value="ObeCultureProgram对象", description="培养方案")
+public class ObeCultureProgram extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+    @ApiModelProperty(value = "专业ID")
+    @NotNull(message = "请选择专业")
+    private Long professionalId;
+
+    @ApiModelProperty(value = "培养方案名称")
+    @NotBlank(message = "培养方案名称不能为空")
+    private String name;
+
+    @ApiModelProperty(value = "培养目标数量")
+    private Integer targetCount;
+
+    @ApiModelProperty(value = "毕业要求数量")
+    private Integer requirementCount;
+
+    @ApiModelProperty(value = "课程体系数量")
+    private Integer courseCount;
+    @ApiModelProperty(value = "总体描述")
+    private String description;
+    public Long getProfessionalId() {
+        return professionalId;
+    }
+
+    public void setProfessionalId(Long professionalId) {
+        this.professionalId = professionalId;
+    }
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public Integer getTargetCount() {
+        return targetCount;
+    }
+
+    public void setTargetCount(Integer targetCount) {
+        this.targetCount = targetCount;
+    }
+    public Integer getRequirementCount() {
+        return requirementCount;
+    }
+
+    public void setRequirementCount(Integer requirementCount) {
+        this.requirementCount = requirementCount;
+    }
+    public Integer getCourseCount() {
+        return courseCount;
+    }
+
+    public void setCourseCount(Integer courseCount) {
+        this.courseCount = courseCount;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    @Override
+    public String toString() {
+        return "ObeCultureProgram{" +
+            ", professionalId=" + professionalId +
+            ", name=" + name +
+            ", targetCount=" + targetCount +
+            ", requirementCount=" + requirementCount +
+            ", courseCount=" + courseCount +
+        "}";
+    }
+}

+ 87 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ObeCultureProgramCourse.java

@@ -0,0 +1,87 @@
+package com.qmth.distributed.print.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+
+import com.qmth.teachcloud.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * <p>
+ * 培养方案课程体系
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@TableName("obe_culture_program_course")
+@ApiModel(value="ObeCultureProgramCourse对象", description="培养方案课程体系")
+public class ObeCultureProgramCourse extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "培养方案ID")
+    private Long cultureProgramId;
+
+    @ApiModelProperty(value = "课程ID")
+    private Long courseId;
+
+    @ApiModelProperty(value = "课程代码")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "排序值")
+    private Integer sortNum;
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+    public Integer getSortNum() {
+        return sortNum;
+    }
+
+    public void setSortNum(Integer sortNum) {
+        this.sortNum = sortNum;
+    }
+
+    @Override
+    public String toString() {
+        return "ObeCultureProgramCourse{" +
+            ", cultureProgramId=" + cultureProgramId +
+            ", courseId=" + courseId +
+            ", courseCode=" + courseCode +
+            ", courseName=" + courseName +
+            ", sortNum=" + sortNum +
+        "}";
+    }
+}

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

@@ -0,0 +1,92 @@
+package com.qmth.distributed.print.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+
+import com.qmth.teachcloud.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * <p>
+ * 培养方案毕业要求
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@TableName("obe_culture_program_requirement")
+@ApiModel(value = "ObeCultureProgramRequirement对象", description = "培养方案毕业要求")
+public class ObeCultureProgramRequirement extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "培养方案ID")
+    private Long cultureProgramId;
+
+    @ApiModelProperty(value = "毕业要求code")
+    private String code;
+
+    @ApiModelProperty(value = "毕业要求")
+    private String name;
+
+    @ApiModelProperty(value = "上级毕业要求")
+    private Long parentId;
+
+    @ApiModelProperty(value = "排序值")
+    private Integer sortNum;
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+
+    public Integer getSortNum() {
+        return sortNum;
+    }
+
+    public void setSortNum(Integer sortNum) {
+        this.sortNum = sortNum;
+    }
+
+    @Override
+    public String toString() {
+        return "ObeCultureProgramRequirement{" +
+                ", cultureProgramId=" + cultureProgramId +
+                ", code=" + code +
+                ", name=" + name +
+                ", parentId=" + parentId +
+                ", sortNum=" + sortNum +
+                "}";
+    }
+}

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

@@ -0,0 +1,74 @@
+package com.qmth.distributed.print.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+
+import com.qmth.teachcloud.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ * 培养方案培养目标
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@TableName("obe_culture_program_target")
+@ApiModel(value = "ObeCultureProgramTarget对象", description = "培养方案培养目标")
+public class ObeCultureProgramTarget extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "培养方案ID")
+    @NotNull(message = "培养方案ID不能为空")
+    private Long cultureProgramId;
+
+    @ApiModelProperty(value = "培养目标名称")
+    @NotBlank(message = "培养目标名称不能为空")
+    private String name;
+
+    @ApiModelProperty(value = "目标拆解详情")
+    @NotBlank(message = "目标拆解详情不能为空")
+    private String detail;
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getDetail() {
+        return detail;
+    }
+
+    public void setDetail(String detail) {
+        this.detail = detail;
+    }
+
+    @Override
+    public String toString() {
+        return "ObeCultureProgramTarget{" +
+                ", cultureProgramId=" + cultureProgramId +
+                ", name=" + name +
+                ", detail=" + detail +
+                "}";
+    }
+}

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

@@ -0,0 +1,101 @@
+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.qmth.teachcloud.common.base.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * <p>
+ * 培养目标与毕业要求关系矩阵
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@TableName("obe_requirement_target_matrix")
+@ApiModel(value = "ObeRequirementTargetMatrix对象", description = "培养目标与毕业要求关系矩阵")
+public class ObeRequirementTargetMatrix extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "培养方案ID")
+    private Long cultureProgramId;
+
+    @ApiModelProperty(value = "毕业要求ID")
+    private Long obeRequirementId;
+
+    @ApiModelProperty(value = "培养目标ID")
+    private Long obeTargetId;
+
+    @ApiModelProperty(value = "是否包含")
+    private Boolean enable;
+
+    @TableField(exist = false)
+    private String requirementName;
+    @TableField(exist = false)
+    private String targetName;
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public Long getObeRequirementId() {
+        return obeRequirementId;
+    }
+
+    public void setObeRequirementId(Long obeRequirementId) {
+        this.obeRequirementId = obeRequirementId;
+    }
+
+    public Long getObeTargetId() {
+        return obeTargetId;
+    }
+
+    public void setObeTargetId(Long obeTargetId) {
+        this.obeTargetId = obeTargetId;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public String getRequirementName() {
+        return requirementName;
+    }
+
+    public void setRequirementName(String requirementName) {
+        this.requirementName = requirementName;
+    }
+
+    public String getTargetName() {
+        return targetName;
+    }
+
+    public void setTargetName(String targetName) {
+        this.targetName = targetName;
+    }
+
+    @Override
+    public String toString() {
+        return "ObeRequirementTargetMatrix{" +
+                ", obeRequirementId=" + obeRequirementId +
+                ", obeTargetId=" + obeTargetId +
+                ", enable=" + enable +
+                "}";
+    }
+}

+ 0 - 77
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TPCourse.java

@@ -1,77 +0,0 @@
-package com.qmth.distributed.print.business.entity;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.qmth.teachcloud.common.base.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
-
-/**
- * <p>
- * 专业认证课程
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-@TableName("t_p_course")
-@ApiModel(value = "TPCourse对象", description = "专业认证课程")
-public class TPCourse extends BaseEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "专业ID")
-    private Long professionalId;
-
-    @ApiModelProperty(value = "课程代码")
-    private String courseCode;
-
-    @ApiModelProperty(value = "课程名称")
-    private String courseName;
-
-    @ApiModelProperty(value = "排序值")
-    private Integer sortNum;
-
-    public Long getProfessionalId() {
-        return professionalId;
-    }
-
-    public void setProfessionalId(Long professionalId) {
-        this.professionalId = professionalId;
-    }
-
-    public String getCourseCode() {
-        return courseCode;
-    }
-
-    public void setCourseCode(String courseCode) {
-        this.courseCode = courseCode;
-    }
-
-    public String getCourseName() {
-        return courseName;
-    }
-
-    public void setCourseName(String courseName) {
-        this.courseName = courseName;
-    }
-
-    public Integer getSortNum() {
-        return sortNum;
-    }
-
-    public void setSortNum(Integer sortNum) {
-        this.sortNum = sortNum;
-    }
-
-    @Override
-    public String toString() {
-        return "TPCourse{" +
-                ", professionalId=" + professionalId +
-                ", courseCode=" + courseCode +
-                ", courseName=" + courseName +
-                ", sortNum=" + sortNum +
-                "}";
-    }
-}

+ 0 - 114
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TPMatrix.java

@@ -1,114 +0,0 @@
-package com.qmth.distributed.print.business.entity;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.qmth.teachcloud.common.base.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
-
-/**
- * <p>
- * 专业认证毕业要求支撑矩阵
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-@TableName("t_p_matrix")
-@ApiModel(value = "TPMatrix对象", description = "专业认证毕业要求支撑矩阵")
-public class TPMatrix extends BaseEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "专业ID")
-    private Long professionalId;
-
-    @ApiModelProperty(value = "专业认证课程ID")
-    private Long courseId;
-
-    @ApiModelProperty(value = "专业认证毕业要求ID")
-    private Long requirementId;
-
-    @ApiModelProperty(value = "子节点名称")
-    private String subName;
-
-    @ApiModelProperty(value = "指标值")
-    private Double content;
-
-    @ApiModelProperty(value = "课程排序值")
-    @TableField(exist = false)
-    private int courseSortNum;
-
-    @ApiModelProperty(value = "毕业要求排序值")
-    @TableField(exist = false)
-    private int requirementSortNum;
-
-    public Long getProfessionalId() {
-        return professionalId;
-    }
-
-    public void setProfessionalId(Long professionalId) {
-        this.professionalId = professionalId;
-    }
-
-    public Long getCourseId() {
-        return courseId;
-    }
-
-    public void setCourseId(Long courseId) {
-        this.courseId = courseId;
-    }
-
-    public Long getRequirementId() {
-        return requirementId;
-    }
-
-    public void setRequirementId(Long requirementId) {
-        this.requirementId = requirementId;
-    }
-
-    public String getSubName() {
-        return subName;
-    }
-
-    public void setSubName(String subName) {
-        this.subName = subName;
-    }
-
-    public Double getContent() {
-        return content;
-    }
-
-    public void setContent(Double content) {
-        this.content = content;
-    }
-
-    public int getCourseSortNum() {
-        return courseSortNum;
-    }
-
-    public void setCourseSortNum(int courseSortNum) {
-        this.courseSortNum = courseSortNum;
-    }
-
-    public int getRequirementSortNum() {
-        return requirementSortNum;
-    }
-
-    public void setRequirementSortNum(int requirementSortNum) {
-        this.requirementSortNum = requirementSortNum;
-    }
-
-    @Override
-    public String toString() {
-        return "TPMatrix{" +
-                ", professionalId=" + professionalId +
-                ", courseId=" + courseId +
-                ", requirementId=" + requirementId +
-                ", subName=" + subName +
-                ", content=" + content +
-                "}";
-    }
-}

+ 0 - 89
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TPRequirement.java

@@ -1,89 +0,0 @@
-package com.qmth.distributed.print.business.entity;
-
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.qmth.teachcloud.common.base.BaseEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
-
-/**
- * <p>
- * 专业认证毕业要求
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-@TableName("t_p_requirement")
-@ApiModel(value = "TPRequirement对象", description = "专业认证毕业要求")
-public class TPRequirement extends BaseEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "专业ID")
-    private Long professionalId;
-    @ApiModelProperty(value = "毕业要求Code")
-    private String code;
-    @ApiModelProperty(value = "毕业要求")
-    private String name;
-
-    @ApiModelProperty(value = "节点数量")
-    @TableField(updateStrategy = FieldStrategy.IGNORED)
-    private Integer nodeCount;
-
-    @ApiModelProperty(value = "排序值")
-    private Integer sortNum;
-
-    public Long getProfessionalId() {
-        return professionalId;
-    }
-
-    public void setProfessionalId(Long professionalId) {
-        this.professionalId = professionalId;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Integer getNodeCount() {
-        return nodeCount;
-    }
-
-    public void setNodeCount(Integer nodeCount) {
-        this.nodeCount = nodeCount;
-    }
-
-    public Integer getSortNum() {
-        return sortNum;
-    }
-
-    public void setSortNum(Integer sortNum) {
-        this.sortNum = sortNum;
-    }
-
-    @Override
-    public String toString() {
-        return "TPRequirement{" +
-                ", professionalId=" + professionalId +
-                ", name=" + name +
-                ", nodeCount=" + nodeCount +
-                ", sortNum=" + sortNum +
-                "}";
-    }
-}

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TPProfessionalMapper.java → distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicProfessionalMapper.java

@@ -3,7 +3,7 @@ package com.qmth.distributed.print.business.mapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.distributed.print.business.bean.dto.professional.ProfessionalDto;
-import com.qmth.distributed.print.business.entity.TPProfessional;
+import com.qmth.distributed.print.business.entity.BasicProfessional;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import org.apache.ibatis.annotations.Param;
@@ -16,7 +16,7 @@ import org.apache.ibatis.annotations.Param;
  * @author xf
  * @since 2024-04-22
  */
-public interface TPProfessionalMapper extends BaseMapper<TPProfessional> {
+public interface BasicProfessionalMapper extends BaseMapper<BasicProfessional> {
 
     IPage<ProfessionalDto> pageData(@Param("page") Page<ProfessionalDto> page, @Param("schoolId") Long schoolId, @Param("name") String name, @Param("orgId") Long orgId, @Param("dpr") DataPermissionRule dpr);
 }

+ 20 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCourseRequirementMatrixMapper.java

@@ -0,0 +1,20 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.distributed.print.business.bean.dto.obe.CourseRequirementMatrixDto;
+import com.qmth.distributed.print.business.entity.ObeCourseRequirementMatrix;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 培养方案毕业要求支撑矩阵 Mapper 接口
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+public interface ObeCourseRequirementMatrixMapper extends BaseMapper<ObeCourseRequirementMatrix> {
+
+    List<CourseRequirementMatrixDto> listMatrix(Long cultureProgramId);
+}

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

@@ -0,0 +1,22 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.qmth.distributed.print.business.bean.result.obe.cultureProgram.CultureProgramCourseSelectResult;
+import com.qmth.distributed.print.business.entity.ObeCultureProgramCourse;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * <p>
+ * 培养方案课程体系 Mapper 接口
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+public interface ObeCultureProgramCourseMapper extends BaseMapper<ObeCultureProgramCourse> {
+
+    List<CultureProgramCourseSelectResult> queryList(@Param("cultureProgramId") Long cultureProgramId, @Param("orgIdSet") Set<Long> orgIdSet);
+}

+ 22 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCultureProgramMapper.java

@@ -0,0 +1,22 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.distributed.print.business.bean.result.obe.cultureProgram.CultureProgramResult;
+import com.qmth.distributed.print.business.entity.ObeCultureProgram;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 培养方案 Mapper 接口
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+public interface ObeCultureProgramMapper extends BaseMapper<ObeCultureProgram> {
+
+    IPage<CultureProgramResult> pageData(@Param("page") Page<CultureProgramResult> page, @Param("schoolId") Long schoolId, @Param("professionalId") Long professionalId, @Param("name") String name, @Param("dpr") DataPermissionRule dpr);
+}

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCultureProgramRequirementMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 培养方案毕业要求 Mapper 接口
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+public interface ObeCultureProgramRequirementMapper extends BaseMapper<ObeCultureProgramRequirement> {
+
+}

+ 16 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeCultureProgramTargetMapper.java

@@ -0,0 +1,16 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.qmth.distributed.print.business.entity.ObeCultureProgramTarget;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 培养方案培养目标 Mapper 接口
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+public interface ObeCultureProgramTargetMapper extends BaseMapper<ObeCultureProgramTarget> {
+
+}

+ 19 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ObeRequirementTargetMatrixMapper.java

@@ -0,0 +1,19 @@
+package com.qmth.distributed.print.business.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qmth.distributed.print.business.entity.ObeRequirementTargetMatrix;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 培养目标与毕业要求关系矩阵 Mapper 接口
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+public interface ObeRequirementTargetMatrixMapper extends BaseMapper<ObeRequirementTargetMatrix> {
+
+    List<ObeRequirementTargetMatrix> listMatrix(Long cultureProgramId);
+}

+ 0 - 22
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TPCourseMapper.java

@@ -1,22 +0,0 @@
-package com.qmth.distributed.print.business.mapper;
-
-import com.qmth.distributed.print.business.bean.result.ProfessionalCourseSelectResult;
-import com.qmth.distributed.print.business.entity.TPCourse;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * <p>
- * 专业认证课程 Mapper 接口
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-public interface TPCourseMapper extends BaseMapper<TPCourse> {
-
-    List<ProfessionalCourseSelectResult> queryList(@Param("professionalId") Long professionalId, @Param("orgIdSet") Set<Long> orgIdSet);
-}

+ 0 - 19
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TPMatrixMapper.java

@@ -1,19 +0,0 @@
-package com.qmth.distributed.print.business.mapper;
-
-import com.qmth.distributed.print.business.entity.TPMatrix;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-import java.util.List;
-
-/**
- * <p>
- * 专业认证毕业要求支撑矩阵 Mapper 接口
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-public interface TPMatrixMapper extends BaseMapper<TPMatrix> {
-
-    List<TPMatrix> listMatrix(Long professionalId);
-}

+ 0 - 16
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/TPRequirementMapper.java

@@ -1,16 +0,0 @@
-package com.qmth.distributed.print.business.mapper;
-
-import com.qmth.distributed.print.business.entity.TPRequirement;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- * 专业认证毕业要求 Mapper 接口
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-public interface TPRequirementMapper extends BaseMapper<TPRequirement> {
-
-}

+ 5 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TPProfessionalService.java → distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicProfessionalService.java

@@ -3,7 +3,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.dto.professional.ProfessionalDto;
-import com.qmth.distributed.print.business.entity.TPProfessional;
+import com.qmth.distributed.print.business.entity.BasicProfessional;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
@@ -14,9 +14,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @author xf
  * @since 2024-04-22
  */
-public interface TPProfessionalService extends IService<TPProfessional> {
+public interface BasicProfessionalService extends IService<BasicProfessional> {
 
     IPage<ProfessionalDto> pageData(Page<ProfessionalDto> page, String name, Long orgId);
 
-    Boolean saveData(TPProfessional tpProfessional);
+    Boolean saveData(BasicProfessional tpProfessional);
+
+    boolean remove(Long id);
 }

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

@@ -0,0 +1,22 @@
+package com.qmth.distributed.print.business.service;
+
+import com.qmth.distributed.print.business.bean.dto.obe.CourseRequirementMatrixDto;
+import com.qmth.distributed.print.business.entity.ObeCourseRequirementMatrix;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 培养方案毕业要求支撑矩阵 服务类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+public interface ObeCourseRequirementMatrixService extends IService<ObeCourseRequirementMatrix> {
+
+    List<CourseRequirementMatrixDto> getMatrix(Long cultureProgramId);
+
+    boolean saveMatrix(List<ObeCourseRequirementMatrix> obeCourseRequirementMatrices);
+}

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

@@ -0,0 +1,31 @@
+package com.qmth.distributed.print.business.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+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.ObeCultureProgramCourse;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 培养方案课程体系 服务类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+public interface ObeCultureProgramCourseService extends IService<ObeCultureProgramCourse> {
+
+    List<CultureProgramCourseSelectResult> queryList(Long cultureProgramId, Long orgId);
+
+    List<ObeCultureProgramCourse> listCourse(Long cultureProgramId);
+
+    boolean saveCourse(ObeCultureProgramCourseParam obeCultureProgramCourseParam);
+
+    int getMaxSortNum(Long cultureProgramId);
+
+    boolean saveSort(List<ObeCultureProgramCourse> courseList);
+
+    boolean removeCourse(Long id);
+}

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

@@ -0,0 +1,25 @@
+package com.qmth.distributed.print.business.service;
+
+import com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 培养方案毕业要求 服务类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+public interface ObeCultureProgramRequirementService extends IService<ObeCultureProgramRequirement> {
+
+    List<ObeCultureProgramRequirement> listRequirement(Long cultureProgramId);
+
+    boolean saveRequirement(ObeCultureProgramRequirement obeCultureProgramRequirement);
+
+    int getMaxSortNum(Long cultureProgramId, Long parentId);
+
+    boolean removeRequirement(Long id);
+}

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

@@ -0,0 +1,26 @@
+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.result.obe.cultureProgram.CultureProgramResult;
+import com.qmth.distributed.print.business.entity.ObeCultureProgram;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 培养方案 服务类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+public interface ObeCultureProgramService extends IService<ObeCultureProgram> {
+
+    IPage<CultureProgramResult> pageData(Page<CultureProgramResult> page, Long professionalId, String name);
+
+    boolean saveData(ObeCultureProgram obeCultureProgram);
+
+    boolean delete(Long id);
+
+    boolean copy(Long id);
+}

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

@@ -0,0 +1,22 @@
+package com.qmth.distributed.print.business.service;
+
+import com.qmth.distributed.print.business.entity.ObeCultureProgramTarget;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 培养方案培养目标 服务类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+public interface ObeCultureProgramTargetService extends IService<ObeCultureProgramTarget> {
+    List<ObeCultureProgramTarget> list(Long cultureProgramId);
+
+    boolean saveData(ObeCultureProgramTarget obeCultureProgramTarget);
+
+    boolean delete(Long id);
+}

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

@@ -0,0 +1,23 @@
+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.ObeRequirementTargetMatrix;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 培养目标与毕业要求关系矩阵 服务类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+public interface ObeRequirementTargetMatrixService extends IService<ObeRequirementTargetMatrix> {
+
+    List<RequirementTargetMatrixDto> getMatrix(Long cultureProgramId);
+
+    boolean saveMatrix(List<ObeRequirementTargetMatrix> obeRequirementTargetMatrixList);
+}

+ 0 - 31
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TPCourseService.java

@@ -1,31 +0,0 @@
-package com.qmth.distributed.print.business.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.distributed.print.business.bean.params.professional.TPCourseParam;
-import com.qmth.distributed.print.business.bean.result.ProfessionalCourseSelectResult;
-import com.qmth.distributed.print.business.entity.TPCourse;
-
-import java.util.List;
-
-/**
- * <p>
- * 专业认证课程 服务类
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-public interface TPCourseService extends IService<TPCourse> {
-
-    List<TPCourse> listCourse(Long professionalId);
-
-    boolean saveCourse(TPCourseParam tpCourseParam);
-
-    boolean saveSort(List<TPCourse> courseList);
-
-    boolean removeCourse(Long id);
-
-    List<ProfessionalCourseSelectResult> queryList(Long orgId, Long professionalId);
-
-    int getMaxSortNum(Long professionalId);
-}

+ 0 - 33
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TPMatrixService.java

@@ -1,33 +0,0 @@
-package com.qmth.distributed.print.business.service;
-
-import com.qmth.distributed.print.business.bean.dto.professional.MatrixDto;
-import com.qmth.distributed.print.business.entity.TPCourse;
-import com.qmth.distributed.print.business.entity.TPMatrix;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.qmth.distributed.print.business.entity.TPRequirement;
-
-import javax.servlet.http.HttpServletResponse;
-import java.util.List;
-
-/**
- * <p>
- * 专业认证毕业要求支撑矩阵 服务类
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-public interface TPMatrixService extends IService<TPMatrix> {
-
-    List<MatrixDto> getMatrix(Long professionalId);
-
-    boolean saveMatrix(List<TPMatrix> tpMatrixList);
-
-    void downloadMatrix(Long professionalId, HttpServletResponse response);
-
-    List<TPMatrix> listMatrixByCondition(Long professionalId, Long courseId, Long requirementId);
-
-    void updateMatrixForNodeCount(TPCourse tpCourse, TPRequirement tpRequirement);
-
-    void removeMatrixByCondition(Long professionalId, Long courseId, Long requirementId);
-}

+ 0 - 28
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TPRequirementService.java

@@ -1,28 +0,0 @@
-package com.qmth.distributed.print.business.service;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.qmth.distributed.print.business.entity.TPRequirement;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-import java.util.List;
-
-/**
- * <p>
- * 专业认证毕业要求 服务类
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-public interface TPRequirementService extends IService<TPRequirement> {
-
-    List<TPRequirement> listRequirement(Long professionalId);
-
-    boolean saveRequirement(TPRequirement tpRequirement);
-
-    boolean saveSort(List<TPRequirement> requirementList);
-
-    boolean removeRequirement(Long id);
-
-    int getMaxSortNum(Long professionalId);
-}

+ 52 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicProfessionalServiceImpl.java

@@ -0,0 +1,52 @@
+package com.qmth.distributed.print.business.service.impl;
+
+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.dto.professional.ProfessionalDto;
+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.SysUser;
+import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ * 专业表 服务实现类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-04-22
+ */
+@Service
+public class BasicProfessionalServiceImpl extends ServiceImpl<BasicProfessionalMapper, BasicProfessional> implements BasicProfessionalService {
+
+    @Resource
+    private BasicRoleDataPermissionService basicRoleDataPermissionService;
+
+    @Override
+    public IPage<ProfessionalDto> pageData(Page<ProfessionalDto> page, String name, Long orgId) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
+        return this.baseMapper.pageData(page, schoolId, name, orgId, dpr);
+    }
+
+    @Override
+    public Boolean saveData(BasicProfessional tpProfessional) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        tpProfessional.insertInfo(sysUser.getId());
+        tpProfessional.setSchoolId(sysUser.getSchoolId());
+        return this.save(tpProfessional);
+    }
+
+    @Override
+    public boolean remove(Long id) {
+        return this.removeById(id);
+    }
+}

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

@@ -0,0 +1,127 @@
+package com.qmth.distributed.print.business.service.impl;
+
+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.bean.dto.obe.CourseRequirementMatrixDto;
+import com.qmth.distributed.print.business.bean.dto.obe.MatrixRequirementDto;
+import com.qmth.distributed.print.business.bean.dto.obe.MatrixSubRequirementDto;
+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.entity.TeachCourse;
+import com.qmth.distributed.print.business.mapper.ObeCourseRequirementMatrixMapper;
+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.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.service.BasicCourseService;
+import com.qmth.teachcloud.common.service.SysPrivilegeService;
+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.util.LinkedMultiValueMap;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 培养方案毕业要求支撑矩阵 服务实现类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@Service
+public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourseRequirementMatrixMapper, ObeCourseRequirementMatrix> implements ObeCourseRequirementMatrixService {
+
+    @Resource
+    private SysPrivilegeService sysPrivilegeService;
+    @Resource
+    private BasicCourseService basicCourseService;
+    @Resource
+    private TeachCourseService teachCourseService;
+    @Resource
+    private ObeCultureProgramCourseService obeCultureProgramCourseService;
+    @Resource
+    private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
+
+    @Override
+    public List<CourseRequirementMatrixDto> getMatrix(Long cultureProgramId) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        List<CourseRequirementMatrixDto> tpMatrixList = this.baseMapper.listMatrix(cultureProgramId);
+        List<CourseRequirementMatrixDto> matrixDtoList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(tpMatrixList)) {
+            List<SysPrivilege> sysPrivileges = sysPrivilegeService.getClientUrlByUserId(sysUser.getId());
+            boolean canEditCourse = sysPrivileges.stream().filter(m -> m.getId() == 2056L && "canEditCourse".equals(m.getUrl())).count() > 0;
+            List<String> codeList = new ArrayList<>();
+            if (!canEditCourse) {
+                List<TeachCourse> teachCourseList = teachCourseService.list(new QueryWrapper<TeachCourse>().lambda().eq(TeachCourse::getUserId, sysUser.getId()));
+                if (CollectionUtils.isNotEmpty(teachCourseList)) {
+                    codeList = teachCourseList.stream().map(TeachCourse::getCourseCode).distinct().collect(Collectors.toList());
+                }
+            }
+
+            LinkedMultiValueMap<Long, CourseRequirementMatrixDto> courseMap = new LinkedMultiValueMap<>();
+            for (CourseRequirementMatrixDto tpMatrix : tpMatrixList) {
+                courseMap.add(tpMatrix.getObeCourseId(), tpMatrix);
+            }
+            List<String> finalCodeList = codeList;
+            courseMap.entrySet().stream().forEach(entry -> {
+                ObeCultureProgramCourse obeCultureProgramCourse = obeCultureProgramCourseService.getById(entry.getKey());
+                BasicCourse basicCourse = basicCourseService.getById(obeCultureProgramCourse.getCourseId());
+                CourseRequirementMatrixDto matrixDto = new CourseRequirementMatrixDto();
+                matrixDto.setCourseCode(basicCourse.getCode());
+                matrixDto.setCourseName(basicCourse.getName());
+                matrixDto.setCanEdit(canEditCourse || finalCodeList.contains(basicCourse.getCode()));
+                List<MatrixRequirementDto> matrixRequirementDtoList = new ArrayList<>();
+                LinkedMultiValueMap<Long, CourseRequirementMatrixDto> requirementMap = new LinkedMultiValueMap<>();
+                for (CourseRequirementMatrixDto tpMatrix : entry.getValue()) {
+                    requirementMap.add(tpMatrix.getObeRequirementId(), tpMatrix);
+                }
+                requirementMap.entrySet().stream().forEach(requirementEntry -> {
+                    ObeCultureProgramRequirement tpRequirement = obeCultureProgramRequirementService.getById(requirementEntry.getKey());
+                    MatrixRequirementDto matrixRequirementDto = new MatrixRequirementDto();
+                    matrixRequirementDto.setName(tpRequirement.getName());
+                    List<CourseRequirementMatrixDto> requirementList = requirementEntry.getValue();
+                    // 排序,解决字符串1和10排序问题
+                    if (requirementList.size() > 1) {
+                        requirementList.sort(Comparator.comparingInt(o -> o.getSubRequirementSortNum()));
+                    }
+                    List<MatrixSubRequirementDto> matrixSubRequirementDtoList = requirementList.stream().map(tpMatrix -> {
+                        MatrixSubRequirementDto matrixSubRequirementDto = new MatrixSubRequirementDto();
+                        matrixSubRequirementDto.setId(tpMatrix.getId());
+                        matrixSubRequirementDto.setName(tpMatrix.getRequirementSortNum() + "-" + tpMatrix.getSubRequirementSortNum());
+                        matrixSubRequirementDto.setContent(tpMatrix.getContent());
+                        return matrixSubRequirementDto;
+                    }).collect(Collectors.toList());
+                    matrixRequirementDto.setSubRequirements(matrixSubRequirementDtoList);
+                    matrixRequirementDtoList.add(matrixRequirementDto);
+                });
+                matrixDto.setRequirements(matrixRequirementDtoList);
+                matrixDtoList.add(matrixDto);
+            });
+        }
+        return matrixDtoList;
+    }
+
+    @Transactional
+    @Override
+    public boolean saveMatrix(List<ObeCourseRequirementMatrix> obeCourseRequirementMatrices) {
+        for (ObeCourseRequirementMatrix tpMatrix : obeCourseRequirementMatrices) {
+            UpdateWrapper<ObeCourseRequirementMatrix> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(ObeCourseRequirementMatrix::getContent, tpMatrix.getContent())
+                    .eq(ObeCourseRequirementMatrix::getId, tpMatrix.getId());
+            this.update(updateWrapper);
+        }
+        return true;
+    }
+}

+ 117 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramCourseServiceImpl.java

@@ -0,0 +1,117 @@
+package com.qmth.distributed.print.business.service.impl;
+
+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.bean.params.obe.cultureProgram.ObeCultureProgramCourseParam;
+import com.qmth.distributed.print.business.bean.result.obe.cultureProgram.CultureProgramCourseSelectResult;
+import com.qmth.distributed.print.business.entity.ObeCultureProgramCourse;
+import com.qmth.distributed.print.business.mapper.ObeCultureProgramCourseMapper;
+import com.qmth.distributed.print.business.service.ObeCultureProgramCourseService;
+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.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * <p>
+ * 培养方案课程体系 服务实现类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@Service
+public class ObeCultureProgramCourseServiceImpl extends ServiceImpl<ObeCultureProgramCourseMapper, ObeCultureProgramCourse> implements ObeCultureProgramCourseService {
+
+    @Resource
+    private SysOrgService sysOrgService;
+
+    @Override
+    public List<CultureProgramCourseSelectResult> queryList(Long cultureProgramId, Long orgId) {
+        if (orgId == null) {
+            throw ExceptionResultEnum.ERROR.exception("请选择学院");
+        }
+        Set<Long> orgIdSet = sysOrgService.findDeepOrgIdListByOrgIdList(Arrays.asList(orgId));
+
+        return this.baseMapper.queryList(cultureProgramId, orgIdSet);
+    }
+
+    @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);
+    }
+
+    @Override
+    public boolean saveCourse(ObeCultureProgramCourseParam obeCultureProgramCourseParam) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        List<ObeCultureProgramCourse> courseList = new ArrayList<>();
+        AtomicInteger i = new AtomicInteger(1);
+        int maxSortNum = this.getMaxSortNum(obeCultureProgramCourseParam.getCultureProgramId());
+        obeCultureProgramCourseParam.getCourses().forEach(t -> {
+            ObeCultureProgramCourse obeCultureProgramCourse = new ObeCultureProgramCourse();
+            obeCultureProgramCourse.setCultureProgramId(obeCultureProgramCourseParam.getCultureProgramId());
+            obeCultureProgramCourse.setCourseId(t.getCourseId());
+            obeCultureProgramCourse.setSortNum(maxSortNum + i.getAndIncrement());
+            obeCultureProgramCourse.insertInfo(sysUser.getId());
+            courseList.add(obeCultureProgramCourse);
+        });
+
+//        List<TPRequirement> tpRequirementList = tpRequirementService.listRequirement(tpCourseParam.getProfessionalId());
+//        if (CollectionUtils.isNotEmpty(tpRequirementList)) {
+//            // 增加矩阵数据
+//            for (TPCourse tpCourse : tpCourseList) {
+//                for (TPRequirement tpRequirement : tpRequirementList) {
+//                    tpMatrixService.updateMatrixForNodeCount(tpCourse, tpRequirement);
+//                }
+//            }
+//        }
+
+        this.saveBatch(courseList);
+        return true;
+    }
+
+    @Override
+    public int getMaxSortNum(Long cultureProgramId) {
+        QueryWrapper<ObeCultureProgramCourse> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ObeCultureProgramCourse::getCultureProgramId, cultureProgramId)
+                .orderByDesc(ObeCultureProgramCourse::getSortNum)
+                .last("limit 1");
+        ObeCultureProgramCourse obeCultureProgramCourse = this.getOne(queryWrapper);
+        if (obeCultureProgramCourse == null) {
+            return 0;
+        } else {
+            return obeCultureProgramCourse.getSortNum();
+        }
+    }
+
+    @Override
+    public boolean saveSort(List<ObeCultureProgramCourse> courseList) {
+        courseList.forEach(t -> {
+            if (t.getId() != null && t.getSortNum() != null) {
+                UpdateWrapper<ObeCultureProgramCourse> updateWrapper = new UpdateWrapper();
+                updateWrapper.lambda().set(ObeCultureProgramCourse::getSortNum, t.getSortNum())
+                        .eq(ObeCultureProgramCourse::getId, t.getId());
+                this.update(updateWrapper);
+            }
+        });
+        return true;
+    }
+
+    @Override
+    public boolean removeCourse(Long id) {
+//        tpMatrixService.removeMatrixByCondition(null, id, null);
+        return this.removeById(id);
+    }
+}

+ 82 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramRequirementServiceImpl.java

@@ -0,0 +1,82 @@
+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.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement;
+import com.qmth.distributed.print.business.mapper.ObeCultureProgramRequirementMapper;
+import com.qmth.distributed.print.business.service.ObeCultureProgramRequirementService;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 培养方案毕业要求 服务实现类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@Service
+public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCultureProgramRequirementMapper, ObeCultureProgramRequirement> implements ObeCultureProgramRequirementService {
+
+    @Override
+    public List<ObeCultureProgramRequirement> listRequirement(Long cultureProgramId) {
+        QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId)
+                .orderByAsc(ObeCultureProgramRequirement::getSortNum);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public boolean saveRequirement(ObeCultureProgramRequirement obeCultureProgramRequirement) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        // 修改
+        if (obeCultureProgramRequirement.getId() != null) {
+            obeCultureProgramRequirement.updateInfo(sysUser.getId());
+        }
+        // 新增
+        else {
+            obeCultureProgramRequirement.setSortNum(this.getMaxSortNum(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirement.getParentId()) + 1);
+            obeCultureProgramRequirement.insertInfo(sysUser.getId());
+        }
+        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
+    public int getMaxSortNum(Long cultureProgramId, Long parentId) {
+        QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<ObeCultureProgramRequirement> lambda = queryWrapper.lambda();
+        lambda.eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId);
+        if (parentId != null) {
+            lambda.eq(ObeCultureProgramRequirement::getParentId, parentId);
+        }
+        lambda.orderByDesc(ObeCultureProgramRequirement::getSortNum);
+        lambda.last("limit 1");
+        ObeCultureProgramRequirement requirement = this.getOne(queryWrapper);
+        if (requirement == null) {
+            return 0;
+        } else {
+            return requirement.getSortNum();
+        }
+    }
+
+    @Transactional
+    @Override
+    public boolean removeRequirement(Long id) {
+//        tpMatrixService.removeMatrixByCondition(null, null, id);
+        return this.removeById(id);
+    }
+}

+ 63 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramServiceImpl.java

@@ -0,0 +1,63 @@
+package com.qmth.distributed.print.business.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+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.mapper.ObeCultureProgramMapper;
+import com.qmth.distributed.print.business.service.ObeCultureProgramService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ * 培养方案 服务实现类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@Service
+public class ObeCultureProgramServiceImpl extends ServiceImpl<ObeCultureProgramMapper, ObeCultureProgram> implements ObeCultureProgramService {
+
+    @Resource
+    private BasicRoleDataPermissionService basicRoleDataPermissionService;
+
+    @Override
+    public IPage<CultureProgramResult> pageData(Page<CultureProgramResult> page, Long professionalId, String name) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
+        return this.baseMapper.pageData(page, schoolId, professionalId, name, dpr);
+    }
+
+    @Override
+    public boolean saveData(ObeCultureProgram obeCultureProgram) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        if (obeCultureProgram.getId() == null) {
+            obeCultureProgram.insertInfo(sysUser.getId());
+        } else {
+            obeCultureProgram.updateInfo(sysUser.getId());
+            this.updateById(obeCultureProgram);
+        }
+        return this.saveOrUpdate(obeCultureProgram);
+    }
+
+    @Override
+    public boolean delete(Long id) {
+        return this.removeById(id);
+    }
+
+    @Transactional
+    @Override
+    public boolean copy(Long id) {
+        return false;
+    }
+}

+ 49 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramTargetServiceImpl.java

@@ -0,0 +1,49 @@
+package com.qmth.distributed.print.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.distributed.print.business.entity.ObeCultureProgramTarget;
+import com.qmth.distributed.print.business.mapper.ObeCultureProgramTargetMapper;
+import com.qmth.distributed.print.business.service.ObeCultureProgramTargetService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 培养方案培养目标 服务实现类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@Service
+public class ObeCultureProgramTargetServiceImpl extends ServiceImpl<ObeCultureProgramTargetMapper, ObeCultureProgramTarget> implements ObeCultureProgramTargetService {
+
+    @Override
+    public List<ObeCultureProgramTarget> list(Long cultureProgramId) {
+        QueryWrapper<ObeCultureProgramTarget> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ObeCultureProgramTarget::getCultureProgramId, cultureProgramId)
+                .orderByAsc(ObeCultureProgramTarget::getCreateTime);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public boolean saveData(ObeCultureProgramTarget obeCultureProgramTarget) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        if (obeCultureProgramTarget.getId() == null) {
+            obeCultureProgramTarget.insertInfo(sysUser.getId());
+        } else {
+            obeCultureProgramTarget.updateInfo(sysUser.getId());
+            this.updateById(obeCultureProgramTarget);
+        }
+        return this.saveOrUpdate(obeCultureProgramTarget);
+    }
+
+    @Override
+    public boolean delete(Long id) {
+        return this.removeById(id);
+    }
+}

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

@@ -0,0 +1,69 @@
+package com.qmth.distributed.print.business.service.impl;
+
+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.ObeRequirementTargetMatrix;
+import com.qmth.distributed.print.business.mapper.ObeRequirementTargetMatrixMapper;
+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 java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 培养目标与毕业要求关系矩阵 服务实现类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@Service
+public class ObeRequirementTargetMatrixServiceImpl extends ServiceImpl<ObeRequirementTargetMatrixMapper, ObeRequirementTargetMatrix> implements ObeRequirementTargetMatrixService {
+
+    @Override
+    public List<RequirementTargetMatrixDto> getMatrix(Long cultureProgramId) {
+        List<ObeRequirementTargetMatrix> matrixList = this.baseMapper.listMatrix(cultureProgramId);
+        List<RequirementTargetMatrixDto> matrixDtoList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(matrixList)) {
+            LinkedMultiValueMap<String, ObeRequirementTargetMatrix> requirementMap = new LinkedMultiValueMap<>();
+            for (ObeRequirementTargetMatrix matrix : matrixList) {
+                requirementMap.add(matrix.getRequirementName(), matrix);
+            }
+            requirementMap.entrySet().stream().forEach(entry -> {
+                RequirementTargetMatrixDto requirementTargetMatrixDto = new RequirementTargetMatrixDto();
+                requirementTargetMatrixDto.setRequirementName(entry.getKey());
+
+                List<MatrixTargetDto> matrixTargetDtoList = entry.getValue().stream().map(m -> {
+                    MatrixTargetDto matrixRequirementDto = new MatrixTargetDto();
+                    matrixRequirementDto.setId(m.getId());
+                    matrixRequirementDto.setName(m.getTargetName());
+                    matrixRequirementDto.setEnable(m.getEnable());
+                    return matrixRequirementDto;
+                }).sorted(Comparator.comparingLong(o -> o.getCreateTime())).collect(Collectors.toList());
+                requirementTargetMatrixDto.setRequirements(matrixTargetDtoList);
+                matrixDtoList.add(requirementTargetMatrixDto);
+            });
+        }
+        return matrixDtoList;
+    }
+
+    @Transactional
+    @Override
+    public boolean saveMatrix(List<ObeRequirementTargetMatrix> obeRequirementTargetMatrixList) {
+        for (ObeRequirementTargetMatrix tpMatrix : obeRequirementTargetMatrixList) {
+            UpdateWrapper<ObeRequirementTargetMatrix> updateWrapper = new UpdateWrapper<>();
+            updateWrapper.lambda().set(ObeRequirementTargetMatrix::getEnable, tpMatrix.getEnable())
+                    .eq(ObeRequirementTargetMatrix::getId, tpMatrix.getId());
+            this.update(updateWrapper);
+        }
+        return true;
+    }
+}

+ 0 - 132
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TPCourseServiceImpl.java

@@ -1,132 +0,0 @@
-package com.qmth.distributed.print.business.service.impl;
-
-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.bean.params.professional.TPCourseParam;
-import com.qmth.distributed.print.business.bean.result.ProfessionalCourseSelectResult;
-import com.qmth.distributed.print.business.entity.TPCourse;
-import com.qmth.distributed.print.business.entity.TPRequirement;
-import com.qmth.distributed.print.business.mapper.TPCourseMapper;
-import com.qmth.distributed.print.business.service.TPCourseService;
-import com.qmth.distributed.print.business.service.TPMatrixService;
-import com.qmth.distributed.print.business.service.TPRequirementService;
-import com.qmth.teachcloud.common.bean.result.TeachCourseSelectResult;
-import com.qmth.teachcloud.common.entity.BasicCourse;
-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.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.*;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-/**
- * <p>
- * 专业认证课程 服务实现类
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-@Service
-public class TPCourseServiceImpl extends ServiceImpl<TPCourseMapper, TPCourse> implements TPCourseService {
-
-    @Resource
-    private TPRequirementService tpRequirementService;
-    @Resource
-    private TPMatrixService tpMatrixService;
-    @Resource
-    private SysOrgService sysOrgService;
-
-    @Override
-    public List<TPCourse> listCourse(Long professionalId) {
-        QueryWrapper<TPCourse> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(TPCourse::getProfessionalId, professionalId)
-                .orderByAsc(TPCourse::getSortNum);
-        return this.list(queryWrapper);
-    }
-
-    @Transactional
-    @Override
-    public boolean saveCourse(TPCourseParam tpCourseParam) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        List<TPCourse> tpCourseList = new ArrayList<>();
-        AtomicInteger i = new AtomicInteger(1);
-        int maxSortNum = this.getMaxSortNum(tpCourseParam.getProfessionalId());
-        tpCourseParam.getCourses().forEach(t -> {
-            TPCourse tpCourse = new TPCourse();
-            tpCourse.setProfessionalId(tpCourseParam.getProfessionalId());
-            tpCourse.setCourseCode(t.getCourseCode());
-            tpCourse.setCourseName(t.getCourseName());
-            tpCourse.setSortNum(maxSortNum + i.getAndIncrement());
-            tpCourse.insertInfo(sysUser.getId());
-            tpCourseList.add(tpCourse);
-        });
-
-        List<TPRequirement> tpRequirementList = tpRequirementService.listRequirement(tpCourseParam.getProfessionalId());
-        if (CollectionUtils.isNotEmpty(tpRequirementList)) {
-            // 增加矩阵数据
-            for (TPCourse tpCourse : tpCourseList) {
-                for (TPRequirement tpRequirement : tpRequirementList) {
-                    tpMatrixService.updateMatrixForNodeCount(tpCourse, tpRequirement);
-                }
-            }
-        }
-
-        this.saveBatch(tpCourseList);
-        return true;
-    }
-
-    @Transactional
-    @Override
-    public boolean saveSort(List<TPCourse> courseList) {
-        courseList.forEach(t -> {
-            if (t.getId() != null && t.getSortNum() != null) {
-                UpdateWrapper<TPCourse> updateWrapper = new UpdateWrapper();
-                updateWrapper.lambda().set(TPCourse::getSortNum, t.getSortNum())
-                        .eq(TPCourse::getId, t.getId());
-                this.update(updateWrapper);
-            }
-        });
-        return true;
-    }
-
-    @Transactional
-    @Override
-    public boolean removeCourse(Long id) {
-        tpMatrixService.removeMatrixByCondition(null, id, null);
-        return this.removeById(id);
-    }
-
-    @Override
-    public List<ProfessionalCourseSelectResult> queryList(Long orgId, Long professionalId) {
-        if (orgId == null) {
-            throw ExceptionResultEnum.ERROR.exception("请选择学院");
-        }
-        Set<Long> orgIdSet = sysOrgService.findDeepOrgIdListByOrgIdList(Arrays.asList(orgId));
-
-        return this.baseMapper.queryList(professionalId, orgIdSet);
-    }
-
-    @Override
-    public int getMaxSortNum(Long professionalId) {
-        QueryWrapper<TPCourse> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(TPCourse::getProfessionalId, professionalId)
-                .orderByDesc(TPCourse::getSortNum)
-                .last("limit 1");
-        TPCourse tpCourse = this.getOne(queryWrapper);
-        if (tpCourse == null) {
-            return 0;
-        } else {
-            return tpCourse.getSortNum();
-        }
-    }
-}

+ 0 - 396
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TPMatrixServiceImpl.java

@@ -1,396 +0,0 @@
-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.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.boot.tools.excel.ExcelWriter;
-import com.qmth.boot.tools.excel.enums.ExcelType;
-import com.qmth.boot.tools.excel.model.DataMap;
-import com.qmth.distributed.print.business.bean.dto.professional.MatrixDto;
-import com.qmth.distributed.print.business.bean.dto.professional.MatrixRequirementDto;
-import com.qmth.distributed.print.business.bean.dto.professional.MatrixSubRequirementDto;
-import com.qmth.distributed.print.business.bean.dto.professional.ProfessionalExportHead;
-import com.qmth.distributed.print.business.entity.*;
-import com.qmth.distributed.print.business.mapper.TPMatrixMapper;
-import com.qmth.distributed.print.business.service.*;
-import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.SysPrivilege;
-import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.enums.RoleTypeEnum;
-import com.qmth.teachcloud.common.service.SysPrivilegeService;
-import com.qmth.teachcloud.common.util.ServletUtil;
-import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.poi.hssf.usermodel.*;
-import org.apache.poi.ss.usermodel.*;
-import org.apache.poi.ss.util.CellRangeAddress;
-import org.apache.poi.xssf.usermodel.*;
-import org.springframework.stereotype.Service;
-import org.springframework.util.LinkedMultiValueMap;
-
-import javax.annotation.Resource;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.net.URLEncoder;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- * 专业认证毕业要求支撑矩阵 服务实现类
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-@Service
-public class TPMatrixServiceImpl extends ServiceImpl<TPMatrixMapper, TPMatrix> implements TPMatrixService {
-
-    @Resource
-    private TPProfessionalService tpProfessionalService;
-    @Resource
-    private TPCourseService tpCourseService;
-    @Resource
-    private TPRequirementService tpRequirementService;
-    @Resource
-    private SysPrivilegeService sysPrivilegeService;
-    @Resource
-    private TeachCourseService teachCourseService;
-
-    @Override
-    public List<MatrixDto> getMatrix(Long professionalId) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        List<TPMatrix> tpMatrixList = this.baseMapper.listMatrix(professionalId);
-        if (CollectionUtils.isNotEmpty(tpMatrixList)) {
-            List<SysPrivilege> sysPrivileges = sysPrivilegeService.getClientUrlByUserId(sysUser.getId());
-            boolean canEditCourse = sysPrivileges.stream().filter(m -> m.getId() == 2056L && "canEditCourse".equals(m.getUrl())).count() > 0;
-            List<String> codeList = new ArrayList<>();
-            if (!canEditCourse) {
-                List<TeachCourse> teachCourseList = teachCourseService.list(new QueryWrapper<TeachCourse>().lambda().eq(TeachCourse::getUserId, sysUser.getId()));
-                if (CollectionUtils.isNotEmpty(teachCourseList)) {
-                    codeList = teachCourseList.stream().map(TeachCourse::getCourseCode).distinct().collect(Collectors.toList());
-                }
-            }
-
-            List<MatrixDto> matrixDtoList = new ArrayList<>();
-            LinkedMultiValueMap<Long, TPMatrix> courseMap = new LinkedMultiValueMap<>();
-            for (TPMatrix tpMatrix : tpMatrixList) {
-                courseMap.add(tpMatrix.getCourseId(), tpMatrix);
-            }
-            List<String> finalCodeList = codeList;
-            courseMap.entrySet().stream().forEach(entry -> {
-                TPCourse tpCourse = tpCourseService.getById(entry.getKey());
-                MatrixDto matrixDto = new MatrixDto();
-                matrixDto.setCourseCode(tpCourse.getCourseCode());
-                matrixDto.setCourseName(tpCourse.getCourseName());
-                matrixDto.setCanEdit(canEditCourse || finalCodeList.contains(tpCourse.getCourseCode()));
-                List<MatrixRequirementDto> matrixRequirementDtoList = new ArrayList<>();
-                LinkedMultiValueMap<Long, TPMatrix> requirementMap = new LinkedMultiValueMap<>();
-                for (TPMatrix tpMatrix : entry.getValue()) {
-                    requirementMap.add(tpMatrix.getRequirementId(), tpMatrix);
-                }
-                requirementMap.entrySet().stream().forEach(requirementEntry -> {
-                    TPRequirement tpRequirement = tpRequirementService.getById(requirementEntry.getKey());
-                    MatrixRequirementDto matrixRequirementDto = new MatrixRequirementDto();
-                    matrixRequirementDto.setName(tpRequirement.getName());
-                    List<TPMatrix> requirementList = requirementEntry.getValue();
-                    // 排序,解决字符串1和10排序问题
-                    if (requirementList.size() > 1) {
-                        requirementList.sort(Comparator.comparingInt(o -> Integer.parseInt(o.getSubName())));
-                    }
-                    List<MatrixSubRequirementDto> matrixSubRequirementDtoList = requirementList.stream().map(tpMatrix -> {
-                        MatrixSubRequirementDto matrixSubRequirementDto = new MatrixSubRequirementDto();
-                        matrixSubRequirementDto.setId(tpMatrix.getId());
-                        matrixSubRequirementDto.setName(StringUtils.isNotBlank(tpMatrix.getSubName()) ? tpMatrix.getRequirementSortNum() + "-" + tpMatrix.getSubName() : tpMatrix.getSubName());
-                        matrixSubRequirementDto.setContent(tpMatrix.getContent());
-                        return matrixSubRequirementDto;
-                    }).collect(Collectors.toList());
-                    matrixRequirementDto.setSubRequirements(matrixSubRequirementDtoList);
-                    matrixRequirementDtoList.add(matrixRequirementDto);
-                });
-                matrixDto.setRequirements(matrixRequirementDtoList);
-                matrixDtoList.add(matrixDto);
-            });
-            return matrixDtoList;
-        }
-        return new ArrayList<>();
-    }
-
-    @Override
-    public boolean saveMatrix(List<TPMatrix> tpMatrixList) {
-        for (TPMatrix tpMatrix : tpMatrixList) {
-            UpdateWrapper<TPMatrix> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.lambda().set(TPMatrix::getContent, tpMatrix.getContent())
-                    .eq(TPMatrix::getId, tpMatrix.getId());
-            this.update(updateWrapper);
-        }
-        return true;
-    }
-
-    @Override
-    public void downloadMatrix(Long professionalId, HttpServletResponse response) {
-        List<TPMatrix> tpMatrixList = this.baseMapper.listMatrix(professionalId);
-        if (CollectionUtils.isNotEmpty(tpMatrixList)) {
-            TPProfessional tpProfessional = tpProfessionalService.getById(professionalId);
-            // 表头
-            List<ProfessionalExportHead> professionalExportHeadList = new ArrayList<>();
-            // 默认课程
-            professionalExportHeadList.add(new ProfessionalExportHead("", 0, Arrays.asList("")));
-            List<TPRequirement> tpRequirementList = tpRequirementService.listRequirement(professionalId);
-            for (TPRequirement tpRequirement : tpRequirementList) {
-                List<String> subNameList = new ArrayList<>();
-                if (tpRequirement.getNodeCount() == null) {
-                    subNameList.add("");
-                } else {
-                    for (Integer i = 1; i <= tpRequirement.getNodeCount(); i++) {
-                        subNameList.add(tpRequirement.getSortNum() + "-" + i);
-                    }
-                }
-                professionalExportHeadList.add(new ProfessionalExportHead(tpRequirement.getName(), tpRequirement.getSortNum(), subNameList));
-            }
-
-            // 内容
-            List<List<String>> contentList = new ArrayList<>();
-            LinkedMultiValueMap<Long, TPMatrix> courseMap = new LinkedMultiValueMap<>();
-            for (TPMatrix tpMatrix : tpMatrixList) {
-                courseMap.add(tpMatrix.getCourseId(), tpMatrix);
-            }
-            courseMap.entrySet().stream().forEach(entry -> {
-                List<String> content = new ArrayList<>();
-                TPCourse tpCourse = tpCourseService.getById(entry.getKey());
-                content.add(tpCourse.getCourseName());
-                LinkedMultiValueMap<Long, TPMatrix> requirementMap = new LinkedMultiValueMap<>();
-                for (TPMatrix tpMatrix : entry.getValue()) {
-                    requirementMap.add(tpMatrix.getRequirementId(), tpMatrix);
-                }
-                for (Map.Entry<Long, List<TPMatrix>> requirementEntry : requirementMap.entrySet()) {
-                   List<TPMatrix> requirementList = requirementEntry.getValue();
-                    // 排序,解决字符串1和10排序问题
-                    if (requirementList.size() > 1) {
-                        requirementList.sort(Comparator.comparingInt(o -> Integer.parseInt(o.getSubName())));
-                    }
-                    requirementList.stream().forEach(tpMatrix -> content.add(tpMatrix.getContent() == null ? "" : String.valueOf(tpMatrix.getContent())));
-                }
-                contentList.add(content);
-            });
-
-            // 生成excel
-            exportExcel(response, professionalExportHeadList, contentList, tpProfessional.getName());
-        }
-    }
-
-    private void exportExcel(HttpServletResponse response, List<ProfessionalExportHead> professionalExportHeadList, List<List<String>> contentList, String professionalName) {
-        XSSFWorkbook wb = new XSSFWorkbook();
-        XSSFSheet sheet = wb.createSheet("sheet1");
-
-        // 表对样式
-        XSSFCellStyle styleHead = wb.createCellStyle(); // 样式对象
-        styleHead.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直
-        styleHead.setAlignment(HorizontalAlignment.CENTER);// 水平
-        Font font = wb.createFont();
-        font.setBold(true);
-        //设置字体样式
-        font.setFontHeightInPoints((short) 12);//设置字体大小
-        styleHead.setFont(font);
-
-        //表格第一行(一级表头)
-        XSSFRow row1 = sheet.createRow(0);
-        // 计算一级表头合并单元格数量
-        Integer requirementCount = professionalExportHeadList.stream().filter(m -> m.getSubName() != null).map(m -> m.getSubName().size()).collect(Collectors.summingInt(Integer::intValue));
-
-        for (int i = 0; i < requirementCount; i++) {
-            sheet.autoSizeColumn(i, true);
-        }
-
-        sheet.addMergedRegion(new CellRangeAddress(0, 0, 1, requirementCount));
-        XSSFCell cell0 = row1.createCell(0);
-        cell0.setCellStyle(styleHead);
-        cell0.setCellValue("课程名称");
-        XSSFCell cell1 = row1.createCell(1);
-        cell1.setCellStyle(styleHead);
-        cell1.setCellValue("毕业要求");
-
-        //表格第二行(二级表头)
-        XSSFRow row2 = sheet.createRow(1);
-        XSSFCell cell2;
-        int num = 0;
-        for (int i = 0; i < professionalExportHeadList.size(); i++) {
-            ProfessionalExportHead professionalExportHead = professionalExportHeadList.get(i);
-            num = num + professionalExportHead.getSubName().size();
-            int firstCol = num - professionalExportHead.getSubName().size();
-            int lastCol = firstCol + professionalExportHead.getSubName().size() - 1;
-            cell2 = row2.createCell(firstCol);
-            cell2.setCellStyle(styleHead);
-            cell2.setCellValue(professionalExportHead.getRequirementName());
-            if (firstCol < lastCol) {
-                sheet.addMergedRegion(new CellRangeAddress(1, 1, firstCol, lastCol));
-            }
-        }
-
-        //表格第三行(三级表头)
-        XSSFRow row3 = sheet.createRow(2);
-        XSSFCell cell3;
-        AtomicInteger atomicInteger = new AtomicInteger(0);
-        for (ProfessionalExportHead professionalExportHead : professionalExportHeadList) {
-            for (String s : professionalExportHead.getSubName()) {
-                cell3 = row3.createCell(atomicInteger.getAndIncrement());
-                cell3.setCellStyle(styleHead);
-                cell3.setCellValue(s);
-            }
-        }
-        // 合并课程名称
-        sheet.addMergedRegion(new CellRangeAddress(0, 2, 0, 0));
-
-        AtomicInteger i = new AtomicInteger(3);
-        XSSFRow row;
-        for (List<String> list : contentList) {
-            row = sheet.createRow(i.getAndIncrement());
-            XSSFCell cell;
-            for (int j = 0; j < list.size(); j++) {
-                cell = row.createCell(j);
-                cell.setCellValue(list.get(j));
-            }
-        }
-
-        ServletOutputStream outputStream = null;
-        try {
-            response.setHeader("Content-Disposition", "filename=" + URLEncoder.encode(professionalName + "毕业要求支撑矩阵", SystemConstant.CHARSET_NAME) + SystemConstant.EXCEL_PREFIX);
-            response.setContentType("application/vnd.ms-excel");
-            outputStream = response.getOutputStream();
-            wb.write(outputStream);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
-    @Override
-    public List<TPMatrix> listMatrixByCondition(Long professionalId, Long courseId, Long requirementId) {
-        QueryWrapper<TPMatrix> queryWrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<TPMatrix> lambda = queryWrapper.lambda();
-        lambda.eq(TPMatrix::getProfessionalId, professionalId);
-        if (courseId != null) {
-            lambda.eq(TPMatrix::getCourseId, courseId);
-        }
-        if (requirementId != null) {
-            lambda.eq(TPMatrix::getRequirementId, requirementId);
-        }
-        return this.list(queryWrapper);
-    }
-
-    @Override
-    public void updateMatrixForNodeCount(TPCourse tpCourse, TPRequirement tpRequirement) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        List<TPMatrix> matrixList = this.listMatrixByCondition(tpRequirement.getProfessionalId(), tpCourse.getId(), tpRequirement.getId());
-        List<TPMatrix> tpMatrixAddList = new ArrayList<>();
-        List<Long> tpMatrixRemoveList = new ArrayList<>();
-        // 新增
-        if (CollectionUtils.isEmpty(matrixList)) {
-            if (tpRequirement.getNodeCount() == null) {
-                TPMatrix tpMatrix = new TPMatrix();
-                tpMatrix.insertInfo(sysUser.getId());
-                tpMatrix.setProfessionalId(tpRequirement.getProfessionalId());
-                tpMatrix.setCourseId(tpCourse.getId());
-                tpMatrix.setRequirementId(tpRequirement.getId());
-                tpMatrixAddList.add(tpMatrix);
-            } else {
-                for (int i = 1; i <= tpRequirement.getNodeCount(); i++) {
-                    TPMatrix tpMatrix = new TPMatrix();
-                    tpMatrix.insertInfo(sysUser.getId());
-                    tpMatrix.setProfessionalId(tpRequirement.getProfessionalId());
-                    tpMatrix.setCourseId(tpCourse.getId());
-                    tpMatrix.setRequirementId(tpRequirement.getId());
-                    tpMatrix.setSubName(String.valueOf(i));
-                    tpMatrixAddList.add(tpMatrix);
-                }
-            }
-        }
-        // 修改
-        else {
-            if (tpRequirement.getNodeCount() == null) {
-                for (int i = 0; i < matrixList.size(); i++) {
-                    tpMatrixRemoveList.add(matrixList.get(i).getId());
-                }
-                TPMatrix tpMatrix = new TPMatrix();
-                tpMatrix.insertInfo(sysUser.getId());
-                tpMatrix.setProfessionalId(tpRequirement.getProfessionalId());
-                tpMatrix.setCourseId(tpCourse.getId());
-                tpMatrix.setRequirementId(tpRequirement.getId());
-                tpMatrixAddList.add(tpMatrix);
-            } else {
-                if (matrixList.size() == 1) {
-                    if (matrixList.get(0).getSubName() == null) {
-                        tpMatrixRemoveList.add(matrixList.get(0).getId());
-
-                        for (int i = 1; i <= tpRequirement.getNodeCount(); i++) {
-                            TPMatrix tpMatrix = new TPMatrix();
-                            tpMatrix.insertInfo(sysUser.getId());
-                            tpMatrix.setProfessionalId(tpRequirement.getProfessionalId());
-                            tpMatrix.setCourseId(tpCourse.getId());
-                            tpMatrix.setRequirementId(tpRequirement.getId());
-                            tpMatrix.setSubName(String.valueOf(i));
-                            tpMatrixAddList.add(tpMatrix);
-                        }
-                    } else {
-                        if (tpRequirement.getNodeCount() > matrixList.size()) {
-                            for (int i = matrixList.size() + 1; i <= tpRequirement.getNodeCount(); i++) {
-                                TPMatrix tpMatrix = new TPMatrix();
-                                tpMatrix.insertInfo(sysUser.getId());
-                                tpMatrix.setProfessionalId(tpRequirement.getProfessionalId());
-                                tpMatrix.setCourseId(tpCourse.getId());
-                                tpMatrix.setRequirementId(tpRequirement.getId());
-                                tpMatrix.setSubName(String.valueOf(i));
-                                tpMatrixAddList.add(tpMatrix);
-                            }
-                        } else if (tpRequirement.getNodeCount() < matrixList.size()) {
-                            for (int i = tpRequirement.getNodeCount(); i <= matrixList.size() - 1; i++) {
-                                tpMatrixRemoveList.add(matrixList.get(i).getId());
-                            }
-                        }
-                    }
-                } else {
-                    if (tpRequirement.getNodeCount() > matrixList.size()) {
-                        for (int i = matrixList.size() + 1; i <= tpRequirement.getNodeCount(); i++) {
-                            TPMatrix tpMatrix = new TPMatrix();
-                            tpMatrix.insertInfo(sysUser.getId());
-                            tpMatrix.setProfessionalId(tpRequirement.getProfessionalId());
-                            tpMatrix.setCourseId(tpCourse.getId());
-                            tpMatrix.setRequirementId(tpRequirement.getId());
-                            tpMatrix.setSubName(String.valueOf(i));
-                            tpMatrixAddList.add(tpMatrix);
-                        }
-                    } else if (tpRequirement.getNodeCount() < matrixList.size()) {
-                        for (int i = tpRequirement.getNodeCount(); i <= matrixList.size() - 1; i++) {
-                            tpMatrixRemoveList.add(matrixList.get(i).getId());
-                        }
-                    }
-                }
-            }
-        }
-        if (CollectionUtils.isNotEmpty(tpMatrixAddList)) {
-            this.saveOrUpdateBatch(tpMatrixAddList);
-        }
-        if (CollectionUtils.isNotEmpty(tpMatrixRemoveList)) {
-            this.removeByIds(tpMatrixRemoveList);
-        }
-    }
-
-    @Override
-    public void removeMatrixByCondition(Long professionalId, Long courseId, Long requirementId) {
-        UpdateWrapper<TPMatrix> updateWrapper = new UpdateWrapper<>();
-        LambdaUpdateWrapper<TPMatrix> lambda = updateWrapper.lambda();
-        if (professionalId != null) {
-            lambda.eq(TPMatrix::getProfessionalId, professionalId);
-        }
-        if (courseId != null) {
-            lambda.eq(TPMatrix::getCourseId, courseId);
-        }
-        if (requirementId != null) {
-            lambda.eq(TPMatrix::getRequirementId, requirementId);
-        }
-        this.remove(updateWrapper);
-    }
-}

+ 0 - 70
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TPProfessionalServiceImpl.java

@@ -1,70 +0,0 @@
-package com.qmth.distributed.print.business.service.impl;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.qmth.distributed.print.business.bean.dto.professional.ProfessionalDto;
-import com.qmth.distributed.print.business.entity.TPProfessional;
-import com.qmth.distributed.print.business.entity.TPRequirement;
-import com.qmth.distributed.print.business.enums.ProfessionalCertificationEnum;
-import com.qmth.distributed.print.business.mapper.TPProfessionalMapper;
-import com.qmth.distributed.print.business.service.TPProfessionalService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.distributed.print.business.service.TPRequirementService;
-import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
-import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
-import com.qmth.teachcloud.common.util.ServletUtil;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * <p>
- * 专业认证专业表 服务实现类
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-@Service
-public class TPProfessionalServiceImpl extends ServiceImpl<TPProfessionalMapper, TPProfessional> implements TPProfessionalService {
-
-    @Resource
-    private TPRequirementService tpRequirementService;
-    @Resource
-    private BasicRoleDataPermissionService basicRoleDataPermissionService;
-
-    @Override
-    public IPage<ProfessionalDto> pageData(Page<ProfessionalDto> page, String name, Long orgId) {
-        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
-        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
-        DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
-        return this.baseMapper.pageData(page, schoolId, name, orgId, dpr);
-    }
-
-    @Transactional
-    @Override
-    public Boolean saveData(TPProfessional tpProfessional) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        tpProfessional.insertInfo(sysUser.getId());
-        tpProfessional.setSchoolId(sysUser.getSchoolId());
-        this.save(tpProfessional);
-
-        List<TPRequirement> tpRequirementList = new ArrayList<>();
-        // 新增默认毕业要求
-        ProfessionalCertificationEnum.listTypes().forEach(m -> {
-            TPRequirement tpRequirement = new TPRequirement();
-            tpRequirement.setProfessionalId(tpProfessional.getId());
-            tpRequirement.setCode(m.getCode());
-            tpRequirement.setName(m.getName());
-            tpRequirement.setSortNum(m.getOrdinal() + 1);
-            tpRequirement.insertInfo(sysUser.getId());
-            tpRequirementList.add(tpRequirement);
-        });
-        tpRequirementService.saveBatch(tpRequirementList);
-        return true;
-    }
-}

+ 0 - 111
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TPRequirementServiceImpl.java

@@ -1,111 +0,0 @@
-package com.qmth.distributed.print.business.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.qmth.distributed.print.business.bean.dto.professional.MatrixDto;
-import com.qmth.distributed.print.business.entity.TPCourse;
-import com.qmth.distributed.print.business.entity.TPMatrix;
-import com.qmth.distributed.print.business.entity.TPRequirement;
-import com.qmth.distributed.print.business.mapper.TPRequirementMapper;
-import com.qmth.distributed.print.business.service.TPCourseService;
-import com.qmth.distributed.print.business.service.TPMatrixService;
-import com.qmth.distributed.print.business.service.TPRequirementService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.util.ServletUtil;
-import org.activiti.bpmn.converter.export.CollaborationExport;
-import org.apache.commons.collections4.CollectionUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * <p>
- * 专业认证毕业要求 服务实现类
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-@Service
-public class TPRequirementServiceImpl extends ServiceImpl<TPRequirementMapper, TPRequirement> implements TPRequirementService {
-
-    @Resource
-    private TPCourseService tpCourseService;
-    @Resource
-    private TPMatrixService tpMatrixService;
-
-    @Override
-    public List<TPRequirement> listRequirement(Long professionalId) {
-        QueryWrapper<TPRequirement> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(TPRequirement::getProfessionalId, professionalId)
-                .orderByAsc(TPRequirement::getSortNum);
-        return this.list(queryWrapper);
-    }
-
-    @Transactional
-    @Override
-    public boolean saveRequirement(TPRequirement tpRequirement) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        // 修改
-        if (tpRequirement.getId() != null) {
-            if(tpRequirement.getNodeCount() == null){
-                tpRequirement.setNodeCount(null);
-            } else {
-                tpRequirement.setNodeCount(tpRequirement.getNodeCount() == 0 ? null : tpRequirement.getNodeCount());
-            }
-            tpRequirement.updateInfo(sysUser.getId());
-        }
-        // 新增
-        else {
-            tpRequirement.setSortNum(this.getMaxSortNum(tpRequirement.getProfessionalId()) + 1);
-            tpRequirement.insertInfo(sysUser.getId());
-        }
-        this.saveOrUpdate(tpRequirement);
-        // 节点数变动后,修改矩阵数据
-        List<TPCourse> tpCourseList = tpCourseService.listCourse(tpRequirement.getProfessionalId());
-        if (CollectionUtils.isNotEmpty(tpCourseList)) {
-            for (TPCourse tpCourse : tpCourseList) {
-                tpMatrixService.updateMatrixForNodeCount(tpCourse, tpRequirement);
-            }
-        }
-        return true;
-    }
-
-    @Override
-    public boolean saveSort(List<TPRequirement> requirementList) {
-        requirementList.forEach(t -> {
-            if (t.getId() != null && t.getSortNum() != null) {
-                UpdateWrapper<TPRequirement> updateWrapper = new UpdateWrapper();
-                updateWrapper.lambda().set(TPRequirement::getSortNum, t.getSortNum())
-                        .eq(TPRequirement::getId, t.getId());
-                this.update(updateWrapper);
-            }
-        });
-        return true;
-    }
-
-    @Transactional
-    @Override
-    public boolean removeRequirement(Long id) {
-        tpMatrixService.removeMatrixByCondition(null, null, id);
-        return this.removeById(id);
-    }
-
-    @Override
-    public int getMaxSortNum(Long professionalId) {
-        QueryWrapper<TPRequirement> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(TPRequirement::getProfessionalId, professionalId)
-                .orderByDesc(TPRequirement::getSortNum)
-                .last("limit 1");
-        TPRequirement requirement = this.getOne(queryWrapper);
-        if (requirement == null) {
-            return 0;
-        } else {
-            return requirement.getSortNum();
-        }
-    }
-}

+ 99 - 0
distributed-print-business/src/main/resources/db/log/xiaofei.sql

@@ -0,0 +1,99 @@
+CREATE TABLE `obe_culture_program` (
+          `id` BIGINT(20) NOT NULL,
+          `professional_id` BIGINT(20) NULL COMMENT '专业ID',
+          `name` VARCHAR(100) NULL COMMENT '培养方案名称',
+          `target_count` INT NULL DEFAULT 0 COMMENT '培养目标数量',
+          `requirement_count` INT NULL DEFAULT 0 COMMENT '毕业要求数量',
+          `course_count` INT NULL DEFAULT 0 COMMENT '课程体系数量',
+          `description` MEDIUMTEXT NULL COMMENT '总体描述',
+          `create_id` BIGINT(20) NULL COMMENT '创建人ID',
+          `create_time` BIGINT(20) NULL COMMENT '创建时间',
+          `update_id` BIGINT(20) NULL COMMENT '更新人ID',
+          `update_time` BIGINT(20) NULL COMMENT '更新时间',
+          PRIMARY KEY (`id`),
+          INDEX `idx_1` (`professional_id` ASC, `name` ASC) VISIBLE)
+    COMMENT = '培养方案';
+
+ALTER TABLE `t_p_course`
+    ADD COLUMN `course_id` BIGINT(20) NULL COMMENT '课程ID' AFTER `culture_program_id`,
+CHANGE COLUMN `professional_id` `culture_program_id` BIGINT NOT NULL COMMENT '培养方案ID' ,
+CHANGE COLUMN `course_code` `course_code` VARCHAR(45) NULL COMMENT '课程代码' ,
+CHANGE COLUMN `course_name` `course_name` VARCHAR(100) NULL COMMENT '课程名称' , COMMENT = '培养方案课程体系' , RENAME TO  `obe_culture_program_course` ;
+
+ALTER TABLE `t_p_requirement`
+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 `t_p_matrix`
+    ADD COLUMN `intensity` VARCHAR(1) NULL COMMENT '强度' AFTER `content`,
+CHANGE COLUMN `professional_id` `culture_program_id` BIGINT NOT NULL COMMENT '培养方案ID' ,
+CHANGE COLUMN `course_id` `obe_course_id` BIGINT NOT NULL COMMENT '专业认证课程ID' ,
+CHANGE COLUMN `requirement_id` `obe_requirement_id` BIGINT NOT NULL COMMENT '专业认证毕业要求ID' ,
+CHANGE COLUMN `sub_name` `obe_sub_requirement_id` BIGINT(20) NULL DEFAULT NULL COMMENT '子节点名称' , COMMENT = '培养方案毕业要求支撑矩阵' , RENAME TO  `obe_course_requirement_matrix` ;
+
+CREATE TABLE `obe_culture_program_target` (
+     `id` BIGINT(20) NOT NULL,
+     `culture_program_id` BIGINT(20) NULL COMMENT '培养方案ID',
+     `name` VARCHAR(100) NULL COMMENT '培养目标名称',
+     `detail` VARCHAR(2000) NULL COMMENT '目标拆解详情',
+     `create_id` BIGINT(20) NULL,
+     `create_time` BIGINT(20) NULL,
+     `update_id` BIGINT(20) NULL,
+     `update_time` BIGINT(20) NULL,
+     PRIMARY KEY (`id`),
+     INDEX `idx_1` (`culture_program_id` ASC) VISIBLE)
+    COMMENT = '培养方案培养目标';
+
+ALTER TABLE `t_p_professional`
+    COMMENT = '专业表' , RENAME TO  `basic_professional` ;
+
+
+CREATE TABLE `obe_requirement_target_matrix` (
+        `id` BIGINT(20) NOT NULL,
+        `culture_program_id` BIGINT(20) NULL COMMENT '培养方案ID',
+        `obe_requirement_id` BIGINT(20) NULL COMMENT '毕业要求ID',
+        `obe_target_id` BIGINT(20) NULL COMMENT '培养目标ID',
+        `enable` TINYINT(1) NULL COMMENT '是否包含',
+        `create_id` BIGINT(20) NULL,
+        `create_time` BIGINT(20) NULL,
+        `update_id` BIGINT(20) NULL,
+        `update_time` BIGINT(20) NULL,
+        PRIMARY KEY (`id`))
+    COMMENT = '培养目标与毕业要求关系矩阵';
+
+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 `url` = '/admin/obe/culture/program/page' WHERE (`id` = '2042');
+UPDATE `sys_privilege` SET `url` = '/admin/obe/culture/program/save' WHERE (`id` = '2043');
+UPDATE `sys_privilege` SET `name` = '课程体系-选择课程', `url` = '/admin/obe/culture/program/course/query_list' WHERE (`id` = '2044');
+UPDATE `sys_privilege` SET `name` = '课程体系-查询列表', `url` = '/admin/obe/culture/program/course/list' WHERE (`id` = '2045');
+UPDATE `sys_privilege` SET `name` = '课程体系-新增', `url` = '/admin/obe/culture/program/course/save' WHERE (`id` = '2046');
+UPDATE `sys_privilege` SET `name` = '课程体系-排序', `url` = '/admin/obe/culture/program/course/sort' WHERE (`id` = '2047');
+UPDATE `sys_privilege` SET `name` = '课程体系-删除', `url` = '/admin/obe/culture/program/course/remove' WHERE (`id` = '2048');
+UPDATE `sys_privilege` SET `name` = '毕业要求-查询', `url` = '/admin/obe/culture/program/requirement/list' WHERE (`id` = '2049');
+UPDATE `sys_privilege` SET `name` = '毕业要求-新增/编辑', `url` = '/admin/obe/culture/program/requirement/save' WHERE (`id` = '2050');
+UPDATE `sys_privilege` SET `name` = '毕业要求-删除', `url` = '/admin/obe/culture/program/requirement/remove' WHERE (`id` = '2052');
+UPDATE `sys_privilege` SET `name` = '课程支撑毕业要求达成矩阵-查询-查询', `url` = '/admin/obe/culture/program/course/matrix/get' WHERE (`id` = '2053');
+UPDATE `sys_privilege` SET `name` = '课程支撑毕业要求达成矩阵-提交-提交', `url` = '/admin/obe/culture/program/course/matrix/save' WHERE (`id` = '2054');
+UPDATE `sys_privilege` SET `name` = '培养目标-列表', `url` = '/admin/obe/culture/program/target/list' WHERE (`id` = '2051');
+UPDATE `sys_privilege` SET `name` = '培养目标-新增/编辑', `url` = '/admin/obe/culture/program/target/save' WHERE (`id` = '2055');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('2058', '培养目标-删除', '/admin/obe/culture/program/target/remove', 'URL', '2036', '15', 'AUTH', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('2059', '培养目标与毕业要求关系矩阵-查询', '/admin/obe/culture/program/target/matrix/get', 'URL', '2036', '16', 'AUTH', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('2060', '培养目标与毕业要求关系矩阵-提交', '/admin/obe/culture/program/target/matrix/save', 'URL', '2036', '17', 'AUTH', '1', '0', '1');
+UPDATE `sys_privilege` SET `url` = 'ProfessionalManage', `enable` = '1', `front_display` = '1' WHERE (`id` = '515');
+UPDATE `sys_privilege` SET `enable` = '1', `front_display` = '1' WHERE (`id` = '519');
+UPDATE `sys_privilege` SET `enable` = '1', `front_display` = '1' WHERE (`id` = '520');
+UPDATE `sys_privilege` SET `enable` = '1', `front_display` = '1' WHERE (`id` = '522');
+UPDATE `sys_privilege` SET `enable` = '1', `front_display` = '1' WHERE (`id` = '516');
+UPDATE `sys_privilege` SET `enable` = '1', `front_display` = '1' WHERE (`id` = '517');
+UPDATE `sys_privilege` SET `enable` = '1', `front_display` = '1' WHERE (`id` = '518');
+UPDATE `sys_privilege` SET `url` = '/api/admin/basic/professional/page', `enable` = '1', `front_display` = '1' WHERE (`id` = '536');
+UPDATE `sys_privilege` SET `url` = '/api/admin/basic/professional/save', `enable` = '1', `front_display` = '1' WHERE (`id` = '537');
+UPDATE `sys_privilege` SET `url` = '/api/admin/basic/professional/remove', `enable` = '1', `front_display` = '1' WHERE (`id` = '538');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('2061', '编辑', 'Edit', 'LINK', '2036', '8', 'AUTH', '2043', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('2062', '复制', 'Copy', 'LINK', '2036', '9', 'AUTH', '2063', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('2063', '复制', '/admin/obe/culture/program/copy', 'URL', '2036', '18', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('2064', '删除', 'Delete', 'LINK', '2036', '10', 'AUTH', '2065', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('2065', '删除', '/admin/obe/culture/program/remove', 'URL', '2036', '19', 'AUTH', '1', '1', '1');

+ 3 - 3
distributed-print-business/src/main/resources/mapper/TPProfessionalMapper.xml → distributed-print-business/src/main/resources/mapper/BasicProfessionalMapper.xml

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.qmth.distributed.print.business.mapper.TPProfessionalMapper">
+<mapper namespace="com.qmth.distributed.print.business.mapper.BasicProfessionalMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.qmth.distributed.print.business.entity.TPProfessional">
+    <resultMap id="BaseResultMap" type="com.qmth.distributed.print.business.entity.BasicProfessional">
         <id column="id" property="id" />
         <result column="school_id" property="schoolId" />
         <result column="name" property="name" />
@@ -26,7 +26,7 @@
             so.name orgName,
             su.login_name loginName,
             su.real_name userName
-        from t_p_professional tpp
+        from basic_professional tpp
             left join sys_org so on tpp.org_id = so.id
             left join sys_user su on tpp.create_id = su.id
         <where>

+ 41 - 0
distributed-print-business/src/main/resources/mapper/ObeCourseRequirementMatrixMapper.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.distributed.print.business.mapper.ObeCourseRequirementMatrixMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qmth.distributed.print.business.entity.ObeCourseRequirementMatrix">
+        <id column="id" property="id" />
+        <result column="culture_program_id" property="cultureProgramId" />
+        <result column="obe_course_id" property="obeCourseId" />
+        <result column="obe_requirement_id" property="obeRequirementId" />
+        <result column="obe_sub_requirement_id" property="obeSubRequirementId" />
+        <result column="content" property="content" />
+        <result column="intensity" property="intensity" />
+        <result column="create_id" property="createId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_id" property="updateId" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+    <select id="listMatrix" resultType="com.qmth.distributed.print.business.bean.dto.obe.CourseRequirementMatrixDto"
+            parameterType="java.lang.Long">
+        SELECT
+            ocrm.*,
+            ocpc.sort_num courseSortNum,
+            ocpr.sort_num requirementSortNum,
+            socpr.sort_num subRequirementSortNum
+        FROM
+            obe_course_requirement_matrix ocrm
+                LEFT JOIN
+            obe_culture_program_course ocpc ON ocrm.obe_course_id = ocpc.id
+                LEFT JOIN
+            obe_culture_program_requirement ocpr ON ocrm.obe_requirement_id = ocpr.id
+                LEFT JOIN
+            obe_culture_program_requirement socpr ON ocrm.obe_sub_requirement_id = socpr.id
+                LEFT JOIN
+            basic_course bc ON ocpc.course_id = bc.id
+        WHERE
+            ocrm.culture_program_id = #{cultureProgramId}
+        ORDER BY ocpc.sort_num , ocpr.sort_num
+    </select>
+
+</mapper>

+ 12 - 11
distributed-print-business/src/main/resources/mapper/TPCourseMapper.xml → distributed-print-business/src/main/resources/mapper/ObeCultureProgramCourseMapper.xml

@@ -1,11 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.qmth.distributed.print.business.mapper.TPCourseMapper">
+<mapper namespace="com.qmth.distributed.print.business.mapper.ObeCultureProgramCourseMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.qmth.distributed.print.business.entity.TPCourse">
+    <resultMap id="BaseResultMap" type="com.qmth.distributed.print.business.entity.ObeCultureProgramCourse">
         <id column="id" property="id" />
-        <result column="professional_id" property="professionalId" />
+        <result column="culture_program_id" property="cultureProgramId" />
+        <result column="course_id" property="courseId" />
         <result column="course_code" property="courseCode" />
         <result column="course_name" property="courseName" />
         <result column="sort_num" property="sortNum" />
@@ -15,14 +16,14 @@
         <result column="update_time" property="updateTime" />
     </resultMap>
     <select id="queryList"
-            resultType="com.qmth.distributed.print.business.bean.result.ProfessionalCourseSelectResult">
+            resultType="com.qmth.distributed.print.business.bean.result.obe.cultureProgram.CultureProgramCourseSelectResult">
         SELECT
             bc.code courseCode,
             bc.name courseName,
             bc.teaching_room_id orgId,
             so.name orgName,
             CASE
-                WHEN tpc.id IS NULL THEN TRUE
+                WHEN ocpc.id IS NULL THEN TRUE
                 ELSE FALSE
                 END canSelect
         FROM
@@ -32,17 +33,17 @@
                  basic_course
              WHERE
                  teaching_room_id IN
-             <foreach collection="orgIdSet" item="orgId" separator="," open="(" close=")">
-                 #{orgId}
-             </foreach>
-             ) bc
+                <foreach collection="orgIdSet" item="orgId" separator="," open="(" close=")">
+                    #{orgId}
+                </foreach>
+            ) bc
                 LEFT JOIN
             (SELECT
                  *
              FROM
-                 t_p_course
+                 obe_culture_program_course
              WHERE
-                 professional_id = #{professionalId}) tpc ON bc.code = tpc.course_code
+                culture_program_id = #{cultureProgramId}) ocpc ON bc.id = ocpc.course_id
                 LEFT JOIN
             sys_org so ON bc.teaching_room_id = so.id
     </select>

+ 56 - 0
distributed-print-business/src/main/resources/mapper/ObeCultureProgramMapper.xml

@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.distributed.print.business.mapper.ObeCultureProgramMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qmth.distributed.print.business.entity.ObeCultureProgram">
+        <id column="id" property="id" />
+        <result column="professional_id" property="professionalId" />
+        <result column="name" property="name" />
+        <result column="target_count" property="targetCount" />
+        <result column="requirement_count" property="requirementCount" />
+        <result column="course_count" property="courseCount" />
+        <result column="description" property="description" />
+        <result column="create_id" property="createId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_id" property="updateId" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+    <select id="pageData"
+            resultType="com.qmth.distributed.print.business.bean.result.obe.cultureProgram.CultureProgramResult">
+        SELECT
+            ocp.*,
+            bp.name professionalName,
+            su.login_name createLoginName,
+            su.real_name createRealName
+        FROM
+            obe_culture_program ocp
+                LEFT JOIN
+            basic_professional bp ON ocp.professional_id = bp.id
+                LEFT JOIN
+            sys_user su ON ocp.create_id = su.id
+        <where>
+            <if test="schoolId != null">
+                and bp.school_id = #{schoolId}
+            </if>
+            <if test="professionalId != null">
+                and ocp.professional_id = #{professionalId}
+            </if>
+            <if test="name != null and name != ''">
+                and ocp.name like concat('%',#{name},'%')
+            </if>
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND ocp.create_id = #{dpr.requestUserId}
+                </if>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND su.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+            </if>
+        </where>
+    </select>
+
+</mapper>

+ 5 - 5
distributed-print-business/src/main/resources/mapper/TPRequirementMapper.xml → distributed-print-business/src/main/resources/mapper/ObeCultureProgramRequirementMapper.xml

@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.qmth.distributed.print.business.mapper.TPRequirementMapper">
+<mapper namespace="com.qmth.distributed.print.business.mapper.ObeCultureProgramRequirementMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.qmth.distributed.print.business.entity.TPRequirement">
+    <resultMap id="BaseResultMap" type="com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement">
         <id column="id" property="id" />
-        <result column="professional_id" property="professionalId" />
-        <result column="code" property="name" />
+        <result column="culture_program_id" property="cultureProgramId" />
+        <result column="code" property="code" />
         <result column="name" property="name" />
-        <result column="node_count" property="nodeCount" />
+        <result column="parent_id" property="parentId" />
         <result column="sort_num" property="sortNum" />
         <result column="create_id" property="createId" />
         <result column="create_time" property="createTime" />

+ 17 - 0
distributed-print-business/src/main/resources/mapper/ObeCultureProgramTargetMapper.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.distributed.print.business.mapper.ObeCultureProgramTargetMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qmth.distributed.print.business.entity.ObeCultureProgramTarget">
+        <id column="id" property="id" />
+        <result column="culture_program_id" property="cultureProgramId" />
+        <result column="name" property="name" />
+        <result column="detail" property="detail" />
+        <result column="create_id" property="createId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_id" property="updateId" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+</mapper>

+ 33 - 0
distributed-print-business/src/main/resources/mapper/ObeRequirementTargetMatrixMapper.xml

@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qmth.distributed.print.business.mapper.ObeRequirementTargetMatrixMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qmth.distributed.print.business.entity.ObeRequirementTargetMatrix">
+        <id column="id" property="id" />
+        <result column="obe_requirement_id" property="obeRequirementId" />
+        <result column="obe_target_id" property="obeTargetId" />
+        <result column="enable" property="enable" />
+        <result column="create_id" property="createId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_id" property="updateId" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+    <select id="listMatrix" resultType="com.qmth.distributed.print.business.entity.ObeRequirementTargetMatrix"
+            parameterType="java.lang.Long">
+        SELECT
+            ortm.*,
+            ocpr.name requirementName,
+            ocpt.name targetName
+        FROM
+            obe_requirement_target_matrix ortm
+                LEFT JOIN
+            obe_culture_program_requirement ocpr ON ortm.obe_requirement_id = ocpr.id
+                LEFT JOIN
+            obe_culture_program_target ocpt ON ortm.obe_target_id = ocpt.id
+        WHERE
+            ortm.culture_program_id = #{cultureProgramId}
+        ORDER BY ocpr.sort_num , ocpt.create_time
+    </select>
+
+</mapper>

+ 0 - 34
distributed-print-business/src/main/resources/mapper/TPMatrixMapper.xml

@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.qmth.distributed.print.business.mapper.TPMatrixMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.qmth.distributed.print.business.entity.TPMatrix">
-        <id column="id" property="id" />
-        <result column="professional_id" property="professionalId" />
-        <result column="course_id" property="courseId" />
-        <result column="requirement_id" property="requirementId" />
-        <result column="sub_name" property="subName" />
-        <result column="content" property="content" />
-        <result column="create_id" property="createId" />
-        <result column="create_time" property="createTime" />
-        <result column="update_id" property="updateId" />
-        <result column="update_time" property="updateTime" />
-    </resultMap>
-    <select id="listMatrix" resultType="com.qmth.distributed.print.business.entity.TPMatrix">
-        SELECT
-            tpm.*,
-            tpc.sort_num courseSortNum,
-            tpr.sort_num requirementSortNum
-        FROM
-            t_p_matrix tpm
-                LEFT JOIN
-            t_p_course tpc ON tpm.course_id = tpc.id
-                LEFT JOIN
-            t_p_requirement tpr ON tpm.requirement_id = tpr.id
-        WHERE
-            tpm.professional_id = #{professionalId}
-        ORDER BY tpc.sort_num , tpr.sort_num
-    </select>
-
-</mapper>

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

@@ -32,7 +32,7 @@ import java.util.stream.Collectors;
  * @author wangliang
  * @since 2021-10-28
  */
-@Api(tags = "专业管理controller")
+//@Api(tags = "专业管理controller")
 @RestController
 @RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_BASIC + "/major")
 public class BasicMajorController {

+ 59 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/BasicProfessionalController.java

@@ -0,0 +1,59 @@
+package com.qmth.distributed.print.api;
+
+
+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.entity.BasicProfessional;
+import com.qmth.distributed.print.business.service.BasicProfessionalService;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import io.swagger.annotations.*;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+
+/**
+ * <p>
+ * 专业认证专业表 前端控制器
+ * </p>
+ *
+ * @author xf
+ * @since 2024-04-22
+ */
+@Api(tags = "专业Controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_PROFESSIONAL)
+public class BasicProfessionalController {
+
+    @Resource
+    private BasicProfessionalService basicProfessionalService;
+
+    @ApiOperation(value = "查询")
+    @RequestMapping(value = "/page", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = ProfessionalDto.class)})
+    public Result page(@ApiParam(value = "专业名称") @RequestParam(required = false) String name,
+                       @ApiParam(value = "所属学院") @RequestParam(required = false) Long orgId,
+                       @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                       @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        return ResultUtil.ok(basicProfessionalService.pageData(new Page<>(pageNumber, pageSize), name, orgId));
+    }
+
+    @ApiOperation(value = "新增")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "新增", response = Boolean.class)})
+    public Result save(@RequestBody BasicProfessional tpProfessional) {
+        return ResultUtil.ok(basicProfessionalService.saveData(tpProfessional));
+    }
+
+    @ApiOperation(value = "删除")
+    @RequestMapping(value = "/remove", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "新增", response = Boolean.class)})
+    public Result remove(Long id) {
+        return ResultUtil.ok(basicProfessionalService.remove(id));
+    }
+
+}

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

@@ -0,0 +1,188 @@
+package com.qmth.distributed.print.api;
+
+
+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.entity.*;
+import com.qmth.distributed.print.business.service.*;
+import com.qmth.teachcloud.common.annotation.OperationLogDetail;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.enums.log.OperationTypeEnum;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import io.swagger.annotations.*;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import java.util.List;
+
+/**
+ * <p>
+ * 培养方案 前端控制器
+ * </p>
+ */
+@Api(tags = "培养方案Controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_CULTURE_PROGRAM)
+public class ObeCultureProgramController {
+
+    @Resource
+    private ObeCultureProgramService obeCultureProgramService;
+    @Resource
+    private ObeCultureProgramTargetService obeCultureProgramTargetService;
+    @Resource
+    private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
+    @Resource
+    private ObeRequirementTargetMatrixService obeRequirementTargetMatrixService;
+    @Resource
+    private ObeCultureProgramCourseService obeCultureProgramCourseService;
+    @Resource
+    private ObeCourseRequirementMatrixService obeCourseRequirementMatrixService;
+
+    @ApiOperation(value = "查询")
+    @RequestMapping(value = "/page", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = ProfessionalDto.class)})
+    public Result page(@ApiParam(value = "专业ID") @RequestParam(required = false) Long professionalId,
+                       @ApiParam(value = "培养方案名称") @RequestParam(required = false) String name,
+                       @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                       @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        return ResultUtil.ok(obeCultureProgramService.pageData(new Page<>(pageNumber, pageSize), professionalId, name));
+    }
+
+    @ApiOperation(value = "新增/编辑")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "新增/编辑", response = Boolean.class)})
+    @OperationLogDetail(operationType = OperationTypeEnum.SAVE, detail = "新增/编辑操作,ID:{{obeCultureProgram.id}}、专业ID:{{obeCultureProgram.professionalId}}、名称:{{obeCultureProgram.name}}")
+    public Result save(@Validated @RequestBody ObeCultureProgram obeCultureProgram) {
+        return ResultUtil.ok(obeCultureProgramService.saveData(obeCultureProgram));
+    }
+
+    @ApiOperation(value = "删除")
+    @RequestMapping(value = "/remove", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "删除", response = Boolean.class)})
+    @OperationLogDetail(operationType = OperationTypeEnum.DELETE, detail = "删除操作,ID:{{id}}")
+    public Result removeCultureProgram(@ApiParam(value = "培养方案ID", required = true) @RequestParam(value = "id") Long id) {
+        return ResultUtil.ok(obeCultureProgramService.delete(id));
+    }
+
+    @ApiOperation(value = "复制")
+    @RequestMapping(value = "/copy", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "删除", response = Boolean.class)})
+    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "复制操作,ID:{{id}}")
+    public Result copyCultureProgram(@ApiParam(value = "培养方案ID", required = true) @RequestParam(value = "id") Long id) {
+        return ResultUtil.ok(obeCultureProgramService.copy(id));
+    }
+
+    @ApiOperation(value = "培养目标-列表")
+    @RequestMapping(value = "/target/list", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "培养目标-列表", response = Boolean.class)})
+    public Result listCultureProgramTarget(@ApiParam(value = "培养方案ID", required = true) @RequestParam(value = "cultureProgramId") Long cultureProgramId) {
+        return ResultUtil.ok(obeCultureProgramTargetService.list(cultureProgramId));
+    }
+
+    @ApiOperation(value = "培养目标-新增/编辑")
+    @RequestMapping(value = "/target/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "培养目标-新增/编辑", response = Boolean.class)})
+    @OperationLogDetail(operationType = OperationTypeEnum.SAVE, detail = "培养目标-新增/编辑操作,ID:{{obeCultureProgram.id}}、专业ID:{{obeCultureProgram.professionalId}}、名称:{{obeCultureProgram.name}}")
+    public Result saveCultureProgramTarget(@Validated @RequestBody ObeCultureProgramTarget obeCultureProgramTarget) {
+        return ResultUtil.ok(obeCultureProgramTargetService.saveData(obeCultureProgramTarget));
+    }
+
+    @ApiOperation(value = "培养目标-删除")
+    @RequestMapping(value = "/target/remove", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "培养目标-删除", response = Boolean.class)})
+    @OperationLogDetail(operationType = OperationTypeEnum.DELETE, detail = "培养目标-删除操作,ID:{{id}}")
+    public Result deleteCultureProgramTarget(@ApiParam(value = "培养目标ID", required = true) @RequestParam(value = "id") Long id) {
+        return ResultUtil.ok(obeCultureProgramTargetService.delete(id));
+    }
+
+    @ApiOperation(value = "毕业要求-查询")
+    @RequestMapping(value = "/requirement/list", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Result.class)})
+    public Result listRequirement(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId) {
+        return ResultUtil.ok(obeCultureProgramRequirementService.listRequirement(cultureProgramId));
+    }
+
+    @ApiOperation(value = "毕业要求-新增/编辑")
+    @RequestMapping(value = "/requirement/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Boolean.class)})
+    public Result saveRequirement(@RequestBody ObeCultureProgramRequirement obeCultureProgramRequirement) {
+        return ResultUtil.ok(obeCultureProgramRequirementService.saveRequirement(obeCultureProgramRequirement));
+    }
+
+    @ApiOperation(value = "毕业要求-删除")
+    @RequestMapping(value = "/requirement/remove", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "删除", response = Boolean.class)})
+    public Result removeRequirement(@ApiParam(value = "要求ID", required = true) @RequestParam Long id) {
+        return ResultUtil.ok(obeCultureProgramRequirementService.removeRequirement(id));
+    }
+
+    @ApiOperation(value = "培养目标与毕业要求关系矩阵-查询")
+    @RequestMapping(value = "/target/matrix/get", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Result.class)})
+    public Result listTargetMatrix(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId) {
+        return ResultUtil.ok(obeRequirementTargetMatrixService.getMatrix(cultureProgramId));
+    }
+
+    @ApiOperation(value = "培养目标与毕业要求关系矩阵-提交")
+    @RequestMapping(value = "/target/matrix/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Boolean.class)})
+    public Result saveTargetMatrix(@RequestBody List<ObeRequirementTargetMatrix> obeRequirementTargetMatrixList) {
+        return ResultUtil.ok(obeRequirementTargetMatrixService.saveMatrix(obeRequirementTargetMatrixList));
+    }
+
+    @ApiOperation(value = "课程体系-选择课程")
+    @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) {
+        return ResultUtil.ok(obeCultureProgramCourseService.queryList(cultureProgramId, orgId));
+    }
+
+    @ApiOperation(value = "课程体系-列表")
+    @RequestMapping(value = "/course/list", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Result.class)})
+    public Result listCourse(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId) {
+        return ResultUtil.ok(obeCultureProgramCourseService.listCourse(cultureProgramId));
+    }
+
+    @ApiOperation(value = "课程体系-新增")
+    @RequestMapping(value = "/course/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "新增", response = Boolean.class)})
+    public Result saveCourse(@RequestBody ObeCultureProgramCourseParam obeCultureProgramCourseParam) {
+        return ResultUtil.ok(obeCultureProgramCourseService.saveCourse(obeCultureProgramCourseParam));
+    }
+
+    @ApiOperation(value = "课程体系-排序")
+    @RequestMapping(value = "/course/sort", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "排序", response = Boolean.class)})
+    public Result saveSort(@RequestBody List<ObeCultureProgramCourse> courseList) {
+        return ResultUtil.ok(obeCultureProgramCourseService.saveSort(courseList));
+    }
+
+    @ApiOperation(value = "课程体系-删除")
+    @RequestMapping(value = "/course/remove", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "删除", response = Boolean.class)})
+    public Result removeCourse(@ApiParam(value = "课程ID", required = true) @RequestParam Long id) {
+        return ResultUtil.ok(obeCultureProgramCourseService.removeCourse(id));
+    }
+
+    @ApiOperation(value = "课程支撑毕业要求达成矩阵-查询")
+    @RequestMapping(value = "/course/matrix/get", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Result.class)})
+    public Result listCourseMatrix(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId) {
+        return ResultUtil.ok(obeCourseRequirementMatrixService.getMatrix(cultureProgramId));
+    }
+
+    @ApiOperation(value = "课程支撑毕业要求达成矩阵-提交")
+    @RequestMapping(value = "/course/matrix/save", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Boolean.class)})
+    public Result saveCourseMatrix(@RequestBody List<ObeCourseRequirementMatrix> obeCourseRequirementMatrices) {
+        return ResultUtil.ok(obeCourseRequirementMatrixService.saveMatrix(obeCourseRequirementMatrices));
+    }
+}

+ 0 - 155
distributed-print/src/main/java/com/qmth/distributed/print/api/TPProfessionalController.java

@@ -1,155 +0,0 @@
-package com.qmth.distributed.print.api;
-
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.qmth.boot.api.constant.ApiConstant;
-import com.qmth.distributed.print.business.bean.dto.professional.MatrixDto;
-import com.qmth.distributed.print.business.bean.dto.professional.ProfessionalDto;
-import com.qmth.distributed.print.business.bean.params.professional.TPCourseParam;
-import com.qmth.distributed.print.business.bean.result.ScoreResult;
-import com.qmth.distributed.print.business.entity.TPCourse;
-import com.qmth.distributed.print.business.entity.TPMatrix;
-import com.qmth.distributed.print.business.entity.TPProfessional;
-import com.qmth.distributed.print.business.entity.TPRequirement;
-import com.qmth.distributed.print.business.service.TPCourseService;
-import com.qmth.distributed.print.business.service.TPMatrixService;
-import com.qmth.distributed.print.business.service.TPProfessionalService;
-import com.qmth.distributed.print.business.service.TPRequirementService;
-import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.util.Result;
-import com.qmth.teachcloud.common.util.ResultUtil;
-import io.swagger.annotations.*;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import java.util.List;
-
-/**
- * <p>
- * 专业认证专业表 前端控制器
- * </p>
- *
- * @author xf
- * @since 2024-04-22
- */
-@Api(tags = "专业认证Controller")
-@RestController
-@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_PROFESSIONAL)
-public class TPProfessionalController {
-
-    @Resource
-    private TPProfessionalService tpProfessionalService;
-    @Resource
-    private TPCourseService tpCourseService;
-    @Resource
-    private TPRequirementService tpRequirementService;
-    @Resource
-    private TPMatrixService tpMatrixService;
-
-    @ApiOperation(value = "查询")
-    @RequestMapping(value = "/page", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = ProfessionalDto.class)})
-    public Result page(@ApiParam(value = "专业名称") @RequestParam(required = false) String name,
-                       @ApiParam(value = "课程编码") @RequestParam(required = false) Long orgId,
-                       @ApiParam(value = "分页页码", required = true) @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
-                       @ApiParam(value = "分页数", required = true) @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
-        return ResultUtil.ok(tpProfessionalService.pageData(new Page<>(pageNumber, pageSize), name, orgId));
-    }
-
-    @ApiOperation(value = "新增")
-    @RequestMapping(value = "/save", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "新增", response = Boolean.class)})
-    public Result save(@RequestBody TPProfessional tpProfessional) {
-        return ResultUtil.ok(tpProfessionalService.saveData(tpProfessional));
-    }
-
-    @ApiOperation(value = "课程管理-选择课程")
-    @RequestMapping(value = "/course/query_list", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = TPCourse.class)})
-    public Result queryList(@ApiParam(value = "机构ID", required = true) @RequestParam Long orgId,
-                            @ApiParam(value = "机构ID", required = true) @RequestParam Long professionalId) {
-        return ResultUtil.ok(tpCourseService.queryList(orgId, professionalId));
-    }
-
-    @ApiOperation(value = "课程管理-查询")
-    @RequestMapping(value = "/course/list", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = TPCourse.class)})
-    public Result listCourse(@ApiParam(value = "专业ID", required = true) @RequestParam Long professionalId) {
-        return ResultUtil.ok(tpCourseService.listCourse(professionalId));
-    }
-
-    @ApiOperation(value = "课程管理-新增")
-    @RequestMapping(value = "/course/save", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "新增", response = Boolean.class)})
-    public Result saveCourse(@RequestBody TPCourseParam tpCourseParam) {
-        return ResultUtil.ok(tpCourseService.saveCourse(tpCourseParam));
-    }
-
-    @ApiOperation(value = "课程管理-排序")
-    @RequestMapping(value = "/course/sort", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "排序", response = Boolean.class)})
-    public Result saveSort(@RequestBody List<TPCourse> courseList) {
-        return ResultUtil.ok(tpCourseService.saveSort(courseList));
-    }
-
-    @ApiOperation(value = "课程管理-删除")
-    @RequestMapping(value = "/course/remove", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "删除", response = Boolean.class)})
-    public Result removeCourse(@ApiParam(value = "专业课程ID", required = true) @RequestParam Long id) {
-        return ResultUtil.ok(tpCourseService.removeCourse(id));
-    }
-
-    @ApiOperation(value = "毕业要求-查询")
-    @RequestMapping(value = "/requirement/list", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = TPRequirement.class)})
-    public Result listRequirement(@ApiParam(value = "专业ID", required = true) @RequestParam Long professionalId) {
-        return ResultUtil.ok(tpRequirementService.listRequirement(professionalId));
-    }
-
-    @ApiOperation(value = "毕业要求-新增/编辑")
-    @RequestMapping(value = "/requirement/save", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Boolean.class)})
-    public Result saveRequirement(@RequestBody TPRequirement tpRequirement) {
-        return ResultUtil.ok(tpRequirementService.saveRequirement(tpRequirement));
-    }
-
-    @ApiOperation(value = "毕业要求-排序")
-    @RequestMapping(value = "/requirement/sort", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "排序", response = Boolean.class)})
-    public Result sortRequirement(@RequestBody List<TPRequirement> requirementList) {
-        return ResultUtil.ok(tpRequirementService.saveSort(requirementList));
-    }
-
-    @ApiOperation(value = "毕业要求-删除")
-    @RequestMapping(value = "/requirement/remove", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "删除", response = Boolean.class)})
-    public Result removeRequirement(@ApiParam(value = "毕业要求ID", required = true) @RequestParam Long id) {
-        return ResultUtil.ok(tpRequirementService.removeRequirement(id));
-    }
-
-    @ApiOperation(value = "毕业矩阵支撑-查询")
-    @RequestMapping(value = "/matrix/get", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = MatrixDto.class)})
-    public Result listMatrix(@ApiParam(value = "专业ID", required = true) @RequestParam Long professionalId) {
-        return ResultUtil.ok(tpMatrixService.getMatrix(professionalId));
-    }
-
-    @ApiOperation(value = "毕业矩阵支撑-提交")
-    @RequestMapping(value = "/matrix/save", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Boolean.class)})
-    public Result saveMatrix(@RequestBody List<TPMatrix> tpMatrixList) {
-        return ResultUtil.ok(tpMatrixService.saveMatrix(tpMatrixList));
-    }
-
-    @ApiOperation(value = "毕业矩阵支撑-下载")
-    @RequestMapping(value = "/matrix/download", method = RequestMethod.POST)
-    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = Boolean.class)})
-    public void downloadMatrix(@ApiParam(value = "专业ID", required = true) @RequestParam Long professionalId,
-                               HttpServletResponse response) {
-        tpMatrixService.downloadMatrix(professionalId, response);
-    }
-
-}

+ 2 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java

@@ -76,7 +76,8 @@ public class SystemConstant {
     public static final String PREFIX_URL_NOTIFY = "/admin/print/notify";
     public static final String PREFIX_URL_GRADE = "/admin/grade";
     public static final String PREFIX_URL_COURSE_DEGREE = "/admin/course/degree";
-    public static final String PREFIX_URL_PROFESSIONAL = "/admin/professional/certification";
+    public static final String PREFIX_URL_PROFESSIONAL = "/admin/basic/professional";
+    public static final String PREFIX_URL_CULTURE_PROGRAM = "/admin/obe/culture/program";
     public static final String PREFIX_URL_OBE = "/admin/obe";
 
     /**

+ 0 - 0
teachcloud-common/src/main/resources/mapper/BasicRoleDataPermissionMapper.xml → teachcloud-common/src/main/resources/mapper/BasicProfessionalService.xml


+ 0 - 0
teachcloud-report-business/src/main/resources/mapper/ExamTaskPaperDataService.xml → teachcloud-report-business/src/main/resources/mapper/BasicProfessionalService.xml