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

Merge remote-tracking branch 'origin/dev_v3.4.0' into dev_v3.4.0

xiaofei 1 год назад
Родитель
Сommit
236d80a7d9
100 измененных файлов с 6903 добавлено и 175 удалено
  1. 1 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/ClazzDistributedResult.java
  2. 149 151
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskPaperData.java
  3. 0 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamTaskPaperDataMapper.java
  4. 0 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskPaperDataService.java
  5. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/GradeBatchPaperService.java
  6. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TeachClazzService.java
  7. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/TeachCourseService.java
  8. 0 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskPaperDataServiceImpl.java
  9. 0 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  10. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/GradeBatchPaperServiceImpl.java
  11. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/SsoServiceImpl.java
  12. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TeachClazzServiceImpl.java
  13. 1 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TeachCourseServiceImpl.java
  14. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java
  15. 1 1
      distributed-print-business/src/main/resources/mapper/ExamTaskPaperDataMapper.xml
  16. 3 1
      distributed-print/install/mysql/upgrade/3.4.0.sql
  17. 4 0
      distributed-print/pom.xml
  18. 64 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/BasicProfessionalController.java
  19. 1 1
      distributed-print/src/main/java/com/qmth/distributed/print/api/CourseEvaluationController.java
  20. 19 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCourseDimensionController.java
  21. 69 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCourseEvaluationController.java
  22. 125 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCourseOutlineController.java
  23. 22 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCourseRequirementDimensionController.java
  24. 149 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCourseTargetController.java
  25. 56 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCourseWeightController.java
  26. 224 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCultureProgramController.java
  27. 194 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/ObeReportController.java
  28. 1 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/SysController.java
  29. BIN
      distributed-print/src/main/resources/static/course_degree_report.docx
  30. 34 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/professional/ProfessionalDto.java
  31. 1 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/DictionaryResult.java
  32. 10 1
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/contant/SystemConstant.java
  33. 72 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicProfessional.java
  34. 28 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/BasicProfessionalMapper.java
  35. 28 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicProfessionalService.java
  36. 89 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicProfessionalServiceImpl.java
  37. 68 0
      teachcloud-common/src/main/resources/mapper/BasicProfessionalMapper.xml
  38. 9 0
      teachcloud-obe/pom.xml
  39. 47 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseDimensionDto.java
  40. 40 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseDimensionImportDto.java
  41. 70 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseDimensionMd5Dto.java
  42. 35 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseDimensionOccupiedDto.java
  43. 107 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseWeightDetailDto.java
  44. 164 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseWeightDto.java
  45. 117 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseWeightFormDto.java
  46. 101 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/obe/CourseRequirementMatrixDto.java
  47. 70 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/obe/MatrixRequirementDto.java
  48. 74 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/obe/MatrixSubRequirementDto.java
  49. 41 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/obe/MatrixTargetDto.java
  50. 29 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/obe/RequirementTargetMatrixDto.java
  51. 81 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/ObeCourseEvaluationParam.java
  52. 103 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/ObeCourseOutlineParam.java
  53. 41 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/ObeCourseTargetExpectValueParam.java
  54. 95 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/ObeCourseTargetParam.java
  55. 45 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/ObeCourseWeightParam.java
  56. 28 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/cultureProgram/ObeCultureProgramCourseParam.java
  57. 27 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/cultureProgram/ObeCultureProgramDescriptionParam.java
  58. 26 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/cultureProgram/ObeRequirementTargetMatrixParam.java
  59. 162 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/CourseTargetWebDto.java
  60. 196 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/CourseTargetWordDto.java
  61. 136 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/DimensionDto.java
  62. 124 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/FinalScoreWordDto.java
  63. 99 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ObeCourseRequirementDto.java
  64. 63 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ObeRequirementDto.java
  65. 142 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ObeSubRequirementsDto.java
  66. 73 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportCommonDto.java
  67. 204 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportCourseBasicInfoDto.java
  68. 51 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportCourseEvaluationResultDetailDto.java
  69. 63 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportCourseEvaluationResultDto.java
  70. 52 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportCourseEvaluationSpreadDto.java
  71. 131 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportEvaluationDto.java
  72. 103 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportExamStudentDto.java
  73. 191 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportExamStudentFinalScoreDto.java
  74. 157 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportExamStudentTargetDto.java
  75. 58 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportExamStudentUsualScoreDto.java
  76. 169 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportExamStudentUsualScoreObjDto.java
  77. 62 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportScoreRangeViewDto.java
  78. 60 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportScoreViewDto.java
  79. 82 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/StudentCourseInfoDto.java
  80. 54 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/StudentRequirementInfoDto.java
  81. 60 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/UsualScoreWordDto.java
  82. 70 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/CourseDimensionTree.java
  83. 78 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/CultureProgramCourseSelectResult.java
  84. 36 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/CultureProgramResult.java
  85. 119 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/FinalScoreResult.java
  86. 33 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeCourseBasicInfoResult.java
  87. 59 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeCourseEvaluationResult.java
  88. 219 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeCourseOutlineResult.java
  89. 74 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeCourseRequirementListResult.java
  90. 118 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeCourseTargetResult.java
  91. 51 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeCourseWeightResult.java
  92. 150 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeScoreResult.java
  93. 121 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/PaperStructDimensionResult.java
  94. 81 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/ReportChangeResult.java
  95. 130 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/ReportResult.java
  96. 101 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/studentRequirement/CourseTargetRequirement.java
  97. 52 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/studentRequirement/StudentCourseRequirement.java
  98. 66 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/studentRequirement/StudentCourseRequirementDetail.java
  99. 26 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/studentRequirement/StudentRequirement.java
  100. 57 0
      teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/studentRequirement/StudentTotalRequirement.java

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

@@ -2,6 +2,7 @@ package com.qmth.distributed.print.business.bean.result;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.bean.result.DictionaryResult;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.util.List;

+ 149 - 151
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamTaskPaperData.java

@@ -1,151 +1,149 @@
-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.github.jeffreyning.mybatisplus.anno.MppMultiId;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * <p>
- * 命题任务选择题库试卷相关文件表
- * </p>
- *
- * @author xf
- * @since 2024-02-29
- */
-@TableName("exam_task_paper_data")
-@ApiModel(value="ExamTaskPaperData对象", description="命题任务选择题库试卷相关文件表")
-public class ExamTaskPaperData implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @JsonSerialize(using = ToStringSerializer.class)
-    @ApiModelProperty(value = "考试ID")
-    @MppMultiId(value = "exam_id")
-    private Long examId;
-
-    @ApiModelProperty(value = "试卷编号")
-    @MppMultiId(value = "paper_number")
-    private String paperNumber;
-
-    @JsonSerialize(using = ToStringSerializer.class)
-    @ApiModelProperty(value = "题库试卷ID")
-    @MppMultiId(value = "paper_id")
-    private Long paperId;
-
-    @ApiModelProperty(value = "题库试卷数据包地址(zip)")
-    private String dataPacketPath;
-
-    @ApiModelProperty(value = "试卷结构内容(从paper.json解析)")
-    private String paperJson;
-
-    @ApiModelProperty(value = "试卷答案内容(从answer.json解析)")
-    private String answerJson;
-
-    @JsonSerialize(using = ToStringSerializer.class)
-    @ApiModelProperty(value = "试卷pdf文件地址(paper.pdf上传附件ID)")
-    private Long paperPdfAttachmentId;
-
-    @JsonSerialize(using = ToStringSerializer.class)
-    @ApiModelProperty(value = "标答pdf文件地址(answer.pdf上传附件ID)")
-    private Long answerPdfAttachmentId;
-
-    @ApiModelProperty(value = "唯一标识")
-    private String uuid;
-
-    public ExamTaskPaperData() {
-    }
-
-    public ExamTaskPaperData(Long examId, String paperNumber, Long paperId) {
-        this.examId = examId;
-        this.paperNumber = paperNumber;
-        this.paperId = paperId;
-    }
-
-    public Long getExamId() {
-        return examId;
-    }
-
-    public void setExamId(Long examId) {
-        this.examId = examId;
-    }
-    public String getPaperNumber() {
-        return paperNumber;
-    }
-
-    public void setPaperNumber(String paperNumber) {
-        this.paperNumber = paperNumber;
-    }
-    public Long getPaperId() {
-        return paperId;
-    }
-
-    public void setPaperId(Long paperId) {
-        this.paperId = paperId;
-    }
-    public String getDataPacketPath() {
-        return dataPacketPath;
-    }
-
-    public void setDataPacketPath(String dataPacketPath) {
-        this.dataPacketPath = dataPacketPath;
-    }
-    public String getPaperJson() {
-        return paperJson;
-    }
-
-    public void setPaperJson(String paperJson) {
-        this.paperJson = paperJson;
-    }
-    public String getAnswerJson() {
-        return answerJson;
-    }
-
-    public void setAnswerJson(String answerJson) {
-        this.answerJson = answerJson;
-    }
-
-    public Long getPaperPdfAttachmentId() {
-        return paperPdfAttachmentId;
-    }
-
-    public void setPaperPdfAttachmentId(Long paperPdfAttachmentId) {
-        this.paperPdfAttachmentId = paperPdfAttachmentId;
-    }
-
-    public Long getAnswerPdfAttachmentId() {
-        return answerPdfAttachmentId;
-    }
-
-    public void setAnswerPdfAttachmentId(Long answerPdfAttachmentId) {
-        this.answerPdfAttachmentId = answerPdfAttachmentId;
-    }
-
-    public String getUuid() {
-        return uuid;
-    }
-
-    public void setUuid(String uuid) {
-        this.uuid = uuid;
-    }
-
-    @Override
-    public String toString() {
-        return "ExamTaskPaperData{" +
-            "examId=" + examId +
-            ", paperNumber=" + paperNumber +
-            ", paperId=" + paperId +
-            ", dataPacketPath=" + dataPacketPath +
-            ", paperJson=" + paperJson +
-            ", answerJson=" + answerJson +
-            ", paperPdfAttachmentId=" + paperPdfAttachmentId +
-            ", answerPdfAttachmentId=" + answerPdfAttachmentId +
-        "}";
-    }
-}
+package com.qmth.distributed.print.business.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 命题任务选择题库试卷相关文件表
+ * </p>
+ *
+ * @author xf
+ * @since 2024-02-29
+ */
+@TableName("exam_task_paper_data")
+@ApiModel(value="ExamTaskPaperData对象", description="命题任务选择题库试卷相关文件表")
+public class ExamTaskPaperData implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "考试ID")
+    @MppMultiId(value = "exam_id")
+    private Long examId;
+
+    @ApiModelProperty(value = "试卷编号")
+    @MppMultiId(value = "paper_number")
+    private String paperNumber;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "题库试卷ID")
+    @MppMultiId(value = "paper_id")
+    private Long paperId;
+
+    @ApiModelProperty(value = "题库试卷数据包地址(zip)")
+    private String dataPacketPath;
+
+    @ApiModelProperty(value = "试卷结构内容(从paper.json解析)")
+    private String paperJson;
+
+    @ApiModelProperty(value = "试卷答案内容(从answer.json解析)")
+    private String answerJson;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "试卷pdf文件地址(paper.pdf上传附件ID)")
+    private Long paperPdfAttachmentId;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "标答pdf文件地址(answer.pdf上传附件ID)")
+    private Long answerPdfAttachmentId;
+
+    @ApiModelProperty(value = "唯一标识")
+    private String uuid;
+
+    public ExamTaskPaperData() {
+    }
+
+    public ExamTaskPaperData(Long examId, String paperNumber, Long paperId) {
+        this.examId = examId;
+        this.paperNumber = paperNumber;
+        this.paperId = paperId;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+    public Long getPaperId() {
+        return paperId;
+    }
+
+    public void setPaperId(Long paperId) {
+        this.paperId = paperId;
+    }
+    public String getDataPacketPath() {
+        return dataPacketPath;
+    }
+
+    public void setDataPacketPath(String dataPacketPath) {
+        this.dataPacketPath = dataPacketPath;
+    }
+    public String getPaperJson() {
+        return paperJson;
+    }
+
+    public void setPaperJson(String paperJson) {
+        this.paperJson = paperJson;
+    }
+    public String getAnswerJson() {
+        return answerJson;
+    }
+
+    public void setAnswerJson(String answerJson) {
+        this.answerJson = answerJson;
+    }
+
+    public Long getPaperPdfAttachmentId() {
+        return paperPdfAttachmentId;
+    }
+
+    public void setPaperPdfAttachmentId(Long paperPdfAttachmentId) {
+        this.paperPdfAttachmentId = paperPdfAttachmentId;
+    }
+
+    public Long getAnswerPdfAttachmentId() {
+        return answerPdfAttachmentId;
+    }
+
+    public void setAnswerPdfAttachmentId(Long answerPdfAttachmentId) {
+        this.answerPdfAttachmentId = answerPdfAttachmentId;
+    }
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    @Override
+    public String toString() {
+        return "ExamTaskPaperData{" +
+            "examId=" + examId +
+            ", paperNumber=" + paperNumber +
+            ", paperId=" + paperId +
+            ", dataPacketPath=" + dataPacketPath +
+            ", paperJson=" + paperJson +
+            ", answerJson=" + answerJson +
+            ", paperPdfAttachmentId=" + paperPdfAttachmentId +
+            ", answerPdfAttachmentId=" + answerPdfAttachmentId +
+        "}";
+    }
+}

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

@@ -1,8 +1,6 @@
 package com.qmth.distributed.print.business.mapper;
 
 import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
-import com.qmth.distributed.print.business.entity.ExamTaskPaperData;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
  * <p>

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

@@ -1,8 +1,6 @@
 package com.qmth.distributed.print.business.service;
 
 import com.github.jeffreyning.mybatisplus.service.IMppService;
-import com.qmth.distributed.print.business.entity.ExamTaskPaperData;
-import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
  * <p>

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

@@ -3,7 +3,7 @@ package com.qmth.distributed.print.business.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.params.analyze.GradeBatchPaperParam;
-import com.qmth.distributed.print.business.bean.result.DictionaryResult;
+import com.qmth.teachcloud.common.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.analyze.GradeBatchPaperResult;
 import com.qmth.distributed.print.business.entity.GradeBatchPaper;
 import com.qmth.teachcloud.common.entity.SysUser;

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

@@ -3,7 +3,7 @@ package com.qmth.distributed.print.business.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.params.TeachClazzParams;
-import com.qmth.distributed.print.business.bean.result.DictionaryResult;
+import com.qmth.teachcloud.common.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.TeachClazzResult;
 import com.qmth.distributed.print.business.entity.TeachClazz;
 import com.qmth.teachcloud.common.entity.SysUser;

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

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.params.TeachCourseSelectParam;
 import com.qmth.distributed.print.business.bean.result.CourseResult;
 import com.qmth.distributed.print.business.bean.result.CourseWeightSettingStatusResult;
-import com.qmth.distributed.print.business.bean.result.DictionaryResult;
+import com.qmth.teachcloud.common.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.TeachCourseResult;
 import com.qmth.distributed.print.business.entity.TeachCourse;
 import com.qmth.distributed.print.business.enums.CourseSettingTypeEnum;

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

@@ -1,10 +1,8 @@
 package com.qmth.distributed.print.business.service.impl;
 
 import com.github.jeffreyning.mybatisplus.service.MppServiceImpl;
-import com.qmth.distributed.print.business.entity.ExamTaskPaperData;
 import com.qmth.distributed.print.business.mapper.ExamTaskPaperDataMapper;
 import com.qmth.distributed.print.business.service.ExamTaskPaperDataService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
 /**

+ 0 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -64,7 +64,6 @@ import java.io.InputStream;
 import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
 import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 

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

@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.params.analyze.AbleAnalyzePaperParam;
 import com.qmth.distributed.print.business.bean.params.analyze.GradeBatchPaperParam;
-import com.qmth.distributed.print.business.bean.result.DictionaryResult;
+import com.qmth.teachcloud.common.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.analyze.GradeBatchPaperResult;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.mapper.GradeBatchPaperMapper;

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

@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qmth.boot.tools.signature.SignatureEntity;
 import com.qmth.boot.tools.signature.SignatureType;
-import com.qmth.distributed.print.business.bean.result.DictionaryResult;
+import com.qmth.teachcloud.common.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.service.SsoService;
 import com.qmth.distributed.print.business.service.TeachCourseService;
 import com.qmth.teachcloud.common.contant.SystemConstant;

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

@@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.params.TeachClazzParams;
-import com.qmth.distributed.print.business.bean.result.DictionaryResult;
+import com.qmth.teachcloud.common.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.TeachClazzResult;
 import com.qmth.distributed.print.business.service.BasicTeachClazzService;
 import com.qmth.teachcloud.common.entity.BasicTeachClazz;

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

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.params.TeachCourseSelectParam;
 import com.qmth.distributed.print.business.bean.result.CourseResult;
 import com.qmth.distributed.print.business.bean.result.CourseWeightSettingStatusResult;
-import com.qmth.distributed.print.business.bean.result.DictionaryResult;
+import com.qmth.teachcloud.common.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.TeachCourseResult;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.CourseSettingTypeEnum;
@@ -18,10 +18,8 @@ import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicCourse;
 import com.qmth.teachcloud.common.entity.BasicExamStudent;
-import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.common.enums.OrgTypeEnum;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import org.apache.commons.collections4.CollectionUtils;

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -12,7 +12,7 @@ import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.teachcloud.common.bean.examRule.CodeNameEnableValue;
 import com.qmth.teachcloud.common.bean.examRule.FieldsDto;
 import com.qmth.distributed.print.business.bean.params.DownloadPaperFileParam;
-import com.qmth.distributed.print.business.bean.result.DictionaryResult;
+import com.qmth.teachcloud.common.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.TSyncExamStudentScoreResult;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.ImageTrajectoryEnum;

+ 1 - 1
distributed-print-business/src/main/resources/mapper/ExamTaskPaperDataMapper.xml

@@ -3,7 +3,7 @@
 <mapper namespace="com.qmth.distributed.print.business.mapper.ExamTaskPaperDataMapper">
 
     <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.qmth.distributed.print.business.entity.ExamTaskPaperData">
+    <resultMap id="BaseResultMap" type="com.qmth.teachcloud.common.entity.ExamTaskPaperData">
         <id column="exam_id" property="examId" />
         <id column="paper_number" property="paperNumber" />
         <id column="paper_id" property="paperId" />

+ 3 - 1
distributed-print/install/mysql/upgrade/3.4.0.sql

@@ -210,4 +210,6 @@ UPDATE `sys_privilege` SET `related` = '490,543,955,959,1139' WHERE (`id` = '488
 -- delete脚本需要加上新增的表
 
 -- 升级说明
--- 1. 将通用规则中,教学班改为teachClassName,班级改为className
+-- 1. 将通用规则中,教学班改为teachClassName,班级改为className
+
+--2024.06.24update*******************3.3.4->3.4.0升级脚本

+ 4 - 0
distributed-print/pom.xml

@@ -32,6 +32,10 @@
             <groupId>com.qmth.teachcloud.mark</groupId>
             <artifactId>teachcloud-mark</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.qmth.teachcloud.obe</groupId>
+            <artifactId>teachcloud-obe</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.qmth.teachcloud.task</groupId>
             <artifactId>teachcloud-task</artifactId>

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

@@ -0,0 +1,64 @@
+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.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.BasicProfessional;
+import com.qmth.teachcloud.common.service.BasicProfessionalService;
+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 = "/list", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "分页查询", response = ProfessionalDto.class) })
+    public Result list(@ApiParam(value = "专业名称") @RequestParam(required = false) String name, @ApiParam(value = "所属学院") @RequestParam(required = false) Long orgId) {
+        return ResultUtil.ok(basicProfessionalService.listData(name, orgId));
+    }
+
+    @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));
+    }
+
+}

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

@@ -4,7 +4,7 @@ package com.qmth.distributed.print.api;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.distributed.print.business.bean.params.CourseEvaluationParam;
 import com.qmth.distributed.print.business.bean.result.CourseEvaluationResult;
-import com.qmth.distributed.print.business.enums.CourseEvaluationTypeEnum;
+import com.qmth.teachcloud.obe.enums.CourseEvaluationTypeEnum;
 import com.qmth.distributed.print.business.service.CourseEvaluationService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
 import com.qmth.teachcloud.common.contant.SystemConstant;

+ 19 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCourseDimensionController.java

@@ -0,0 +1,19 @@
+package com.qmth.distributed.print.api;
+
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Description: 课程知识点管理
+ * @Author: CaoZixuan
+ * @Date: 2024-03-04
+ */
+@Api(tags = "课程大纲知识点管理controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_OBE + "/course_dimension")
+public class ObeCourseDimensionController {
+
+}

+ 69 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCourseEvaluationController.java

@@ -0,0 +1,69 @@
+package com.qmth.distributed.print.api;
+
+import com.qmth.boot.api.constant.ApiConstant;
+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 com.qmth.teachcloud.obe.been.params.ObeCourseEvaluationParam;
+import com.qmth.teachcloud.obe.been.result.ObeCourseEvaluationResult;
+import com.qmth.teachcloud.obe.enums.CourseEvaluationTypeEnum;
+import com.qmth.teachcloud.obe.service.ObeCourseEvaluationService;
+import io.swagger.annotations.*;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.Objects;
+
+/**
+ * <p>
+ * 课程评价方式 前端控制器
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@Api(tags = "课程大纲评价方式管理controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_OBE + "/course_evaluation")
+public class ObeCourseEvaluationController {
+
+    @Resource
+    private ObeCourseEvaluationService obeCourseEvaluationService;
+
+    @ApiOperation(value = "评价方式管理-列表查询")
+    @RequestMapping(value = "/list", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = ObeCourseEvaluationResult.class) })
+    public Result findCourseEvaluation(@ApiParam(value = "教学课程id") @RequestParam(required = false) String obeCourseOutlineId) {
+        return ResultUtil.ok(obeCourseEvaluationService.findCourseEvaluationList(SystemConstant.convertIdToLong(obeCourseOutlineId)));
+    }
+
+    @ApiOperation(value = "评价方式管理-新增/编辑")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "更新成功", response = Result.class) })
+    @OperationLogDetail(operationType = OperationTypeEnum.SAVE)
+    public Result saveCourseEvaluation(@Valid @RequestBody ObeCourseEvaluationParam obeCourseEvaluationParam,
+            BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        if (Objects.nonNull(obeCourseEvaluationParam)) {
+            // 设置为自定义评价方式
+            obeCourseEvaluationParam.setType(CourseEvaluationTypeEnum.CUSTOM);
+        }
+        obeCourseEvaluationService.saveCourseEvaluation(obeCourseEvaluationParam);
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "评价方式管理-删除")
+    @RequestMapping(value = "/delete", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "删除成功", response = Result.class) })
+    @OperationLogDetail(operationType = OperationTypeEnum.DELETE)
+    public Result deleteCourseEvaluation(@ApiParam(value = "选择要删除的评价方式id", required = true) @RequestParam String id) {
+        obeCourseEvaluationService.deleteCourseEvaluation(SystemConstant.convertIdToLong(id));
+        return ResultUtil.ok();
+    }
+}

+ 125 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCourseOutlineController.java

@@ -0,0 +1,125 @@
+package com.qmth.distributed.print.api;
+
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.bean.result.EditResult;
+import com.qmth.teachcloud.common.annotation.OperationLogDetail;
+import com.qmth.teachcloud.common.bean.result.DictionaryResult;
+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 com.qmth.teachcloud.obe.been.params.ObeCourseOutlineParam;
+import com.qmth.teachcloud.obe.been.result.ObeCourseBasicInfoResult;
+import com.qmth.teachcloud.obe.been.result.ObeCourseOutlineResult;
+import com.qmth.teachcloud.obe.service.ObeCourseOutlineService;
+import io.swagger.annotations.*;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+
+/**
+ * <p>
+ * 课程大纲表 前端控制器
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-06-05
+ */
+@Api(tags = "课程大纲管理controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_OBE + "/course_outline")
+public class ObeCourseOutlineController {
+
+    @Resource
+    private ObeCourseOutlineService obeCourseOutlineService;
+
+    @ApiOperation(value = "课程大纲-查询")
+    @RequestMapping(value = "/page", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = ObeCourseOutlineResult.class) })
+    public Result findObeCourseOutlinePage(
+            @ApiParam(value = "专业id") @RequestParam(required = false) String professionalId,
+            @ApiParam(value = "培养方案id") @RequestParam(required = false) String cultureProgramId,
+            @ApiParam(value = "课程id") @RequestParam(required = false) String courseId,
+            @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(obeCourseOutlineService.findObeCourseOutlinePage(SystemConstant.convertIdToLong(professionalId),
+                SystemConstant.convertIdToLong(cultureProgramId), SystemConstant.convertIdToLong(courseId), name, pageNumber, pageSize));
+    }
+
+    @ApiOperation(value = "课程考核设置-查询")
+    @RequestMapping(value = "/assessment_setting_page", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = ObeCourseOutlineResult.class) })
+    public Result findAssessmentSettingPage(@ApiParam(value = "专业id") @RequestParam(required = false) String professionalId,
+            @ApiParam(value = "培养方案id") @RequestParam(required = false) String cultureProgramId,
+            @ApiParam(value = "课程id") @RequestParam(required = false) String courseId,
+            @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(obeCourseOutlineService.findObeCourseOutlinePage(SystemConstant.convertIdToLong(professionalId),
+                SystemConstant.convertIdToLong(cultureProgramId), SystemConstant.convertIdToLong(courseId), null, pageNumber, pageSize));
+    }
+
+    @ApiOperation(value = "课程大纲-保存")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "创建成功", response = EditResult.class) })
+    @OperationLogDetail(detail = "新增课程大纲,参数[{{obeCourseOutlineParam}}]", operationType = OperationTypeEnum.ADD)
+    public Result saveObeCourseOutline(@Valid @RequestBody ObeCourseOutlineParam obeCourseOutlineParam, BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        obeCourseOutlineService.saveObeCourseOutline(obeCourseOutlineParam);
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "课程大纲-删除")
+    @RequestMapping(value = "/delete", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "删除成功", response = EditResult.class) })
+    @OperationLogDetail(operationType = OperationTypeEnum.DELETE, detail = "删除操作,课程大纲id:[{{id}}]")
+    public Result deleteObeCourseOutline(@ApiParam(value = "选择的要删除的课程大纲id", required = true) @RequestParam String id) {
+        obeCourseOutlineService.removeObeCourseOutline(SystemConstant.convertIdToLong(id));
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "课程考核设置-删除")
+    @RequestMapping(value = "/assessment_setting_delete", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "删除成功", response = EditResult.class) })
+    @OperationLogDetail(operationType = OperationTypeEnum.DELETE, detail = "删除操作,课程大纲id:[{{id}}]")
+    public Result deleteAssessmentSetting(@ApiParam(value = "选择的要删除的课程大纲id", required = true) @RequestParam String id) {
+        obeCourseOutlineService.removeAssessmentSetting(SystemConstant.convertIdToLong(id));
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "课程大纲-课程基本信息")
+    @RequestMapping(value = "/course_basic_info", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = ObeCourseBasicInfoResult.class) })
+    public Result findCourseBasicInfo(@ApiParam(value = "课程大纲id", required = true) @RequestParam String obeCourseOutlineId) {
+        return ResultUtil.ok(obeCourseOutlineService.findCourseBasicInfo(SystemConstant.convertIdToLong(obeCourseOutlineId)));
+    }
+
+    @ApiOperation(value = "课程大纲-查询课程权重设置状态")
+    @RequestMapping(value = "/find_course_weight_setting_status", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = Result.class) })
+    public Result findCourseWeightSettingStatus(@ApiParam(value = "课程大纲id", required = true) @RequestParam String obeCourseOutlineId) {
+        return ResultUtil.ok(obeCourseOutlineService.findCourseWeightSettingStatus(SystemConstant.convertIdToLong(obeCourseOutlineId)));
+    }
+
+    @ApiOperation(value = "课程大纲-查询可选择的培养方案")
+    @RequestMapping(value = "/can_choose_culture_program", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = DictionaryResult.class) })
+    public Result findCanChooseCultureProgram() {
+        return ResultUtil.ok(obeCourseOutlineService.findCanChooseCultureProgram());
+    }
+
+    @ApiOperation(value = "课程大纲-查询可选择的课程")
+    @RequestMapping(value = "/can_choose_course", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = DictionaryResult.class) })
+    public Result findCanChooseCourse(@ApiParam(value = "培养方案id", required = true) @RequestParam String cultureProgramId) {
+        return ResultUtil.ok(obeCourseOutlineService.findCanChooseCourse(SystemConstant.convertIdToLong(cultureProgramId)));
+    }
+}

+ 22 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCourseRequirementDimensionController.java

@@ -0,0 +1,22 @@
+package com.qmth.distributed.print.api;
+
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 课程大纲指标与知识点关联表 前端控制器
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-06-07
+ */
+@Api(tags = "课程大纲指标知识点关联关系管理controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_OBE + "/course_requirement_dimension")
+public class ObeCourseRequirementDimensionController {
+
+}

+ 149 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCourseTargetController.java

@@ -0,0 +1,149 @@
+package com.qmth.distributed.print.api;
+
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.bean.dto.CourseDimensionDto;
+import com.qmth.distributed.print.business.bean.result.CourseDimensionTree;
+import com.qmth.teachcloud.common.annotation.OperationLogDetail;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.log.OperationTypeEnum;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import com.qmth.teachcloud.obe.been.params.ObeCourseTargetExpectValueParam;
+import com.qmth.teachcloud.obe.been.params.ObeCourseTargetParam;
+import com.qmth.teachcloud.obe.been.result.ObeCourseTargetResult;
+import com.qmth.teachcloud.obe.service.ObeCourseDimensionService;
+import com.qmth.teachcloud.obe.service.ObeCourseRequirementDimensionService;
+import com.qmth.teachcloud.obe.service.ObeCourseTargetService;
+import com.qmth.teachcloud.obe.service.ObeCultureProgramRequirementService;
+import io.swagger.annotations.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+/**
+ * <p>
+ * 课程目标表 前端控制器
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@Api(tags = "课程大纲目标管理controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_OBE + "/course_target")
+public class ObeCourseTargetController {
+
+    private final static Logger log = LoggerFactory.getLogger(ObeCourseTargetController.class);
+
+    @Resource
+    private ObeCourseTargetService obeCourseTargetService;
+
+    @Resource
+    private ObeCourseDimensionService obeCourseDimensionService;
+
+    @Resource
+    private ObeCourseRequirementDimensionService obeCourseRequirementDimensionService;
+
+    @Resource
+    private ObeCultureProgramRequirementService obeCultureProgramRequirementService;
+
+    @ApiOperation(value = "课程目标管理-列表查询")
+    @RequestMapping(value = "/list", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = ObeCourseTargetResult.class) })
+    public Result findCourseTargetList(@ApiParam(value = "课程大纲id") @RequestParam(required = false) String obeCourseOutlineId) {
+        return ResultUtil.ok(obeCourseTargetService.findCourseTargetList(SystemConstant.convertIdToLong(obeCourseOutlineId)));
+    }
+
+    @ApiOperation(value = "课程目标管理-同步题库知识点")
+    @RequestMapping(value = "/dimension_sync_tiku", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = Result.class) })
+    public Result syncTikuDimension(@ApiParam(value = "课程大纲id") @RequestParam(required = false) String obeCourseOutlineId) {
+        obeCourseDimensionService.syncTikuCourseProperties(SystemConstant.convertIdToLong(obeCourseOutlineId));
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "课程目标管理-导入课程知识点")
+    @RequestMapping(value = "/dimension_import", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "返回信息", response = Result.class) })
+    @OperationLogDetail(operationType = OperationTypeEnum.IMPORT)
+    public Result courseDimensionImportSync(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file,
+            @ApiParam(value = "课程大纲id") @RequestParam(required = false) String obeCourseOutlineId) throws Exception {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        obeCourseDimensionService.importCourseDimension(requestUser, file, SystemConstant.convertIdToLong(obeCourseOutlineId));
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "课程目标管理-课程知识点树查询")
+    @RequestMapping(value = "/dimension_tree", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = CourseDimensionTree.class) })
+    public Result findDimensionTree(@ApiParam(value = "课程大纲id") @RequestParam(required = false) String obeCourseOutlineId) {
+        try {
+            obeCourseDimensionService.syncTikuCourseProperties(SystemConstant.convertIdToLong(obeCourseOutlineId));
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+
+        return ResultUtil.ok(obeCourseDimensionService.findDimensionTree(SystemConstant.convertIdToLong(obeCourseOutlineId)));
+    }
+
+    @ApiOperation(value = "课程目标管理-指标知识点关系查询")
+    @RequestMapping(value = "/requirement_dimension", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = CourseDimensionDto.class) })
+    public Result findRequirementDimension(@ApiParam(value = "课程大纲id") @RequestParam(required = false) String obeCourseOutlineId,
+            @ApiParam(value = "指标点id") @RequestParam(required = false) String obeCultureProgramRequirementId) {
+        return ResultUtil.ok(obeCourseRequirementDimensionService.findByOutlineIdAndRequirementId(SystemConstant.convertIdToLong(obeCourseOutlineId),
+                SystemConstant.convertIdToLong(obeCultureProgramRequirementId)));
+    }
+
+    @ApiOperation(value = "课程目标管理-新增/编辑")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "更新成功", response = Result.class) })
+    @OperationLogDetail(operationType = OperationTypeEnum.SAVE)
+    public Result saveCourseTarget(@Valid @RequestBody ObeCourseTargetParam obeCourseTargetParam, BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        obeCourseTargetService.saveCourseTarget(obeCourseTargetParam, sysUser);
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "课程目标管理-删除")
+    @RequestMapping(value = "/delete", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "删除成功", response = Result.class) })
+    @OperationLogDetail(operationType = OperationTypeEnum.DELETE)
+    public Result deleteCourseTarget(@ApiParam(value = "选择要删除的课程目标id", required = true) @RequestParam String id) {
+        obeCourseTargetService.deleteCourseTarget(SystemConstant.convertIdToLong(id));
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "课程目标管理-预期值设置")
+    @RequestMapping(value = "/setting_expect_value", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "更新成功", response = Result.class) })
+    @OperationLogDetail(operationType = OperationTypeEnum.SAVE)
+    public Result settingExpertValue(@Valid @RequestBody ObeCourseTargetExpectValueParam obeCourseTargetExpectValueParam,
+            BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        obeCourseTargetService.settingExpectValue(obeCourseTargetExpectValueParam, sysUser);
+        return ResultUtil.ok();
+    }
+
+    @ApiOperation(value = "根据培养方案、课程查询指标点")
+    @RequestMapping(value = "/sub_requirement/list", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "分页查询", response = Result.class) })
+    public Result listCourse(@ApiParam(value = "培养方案ID", required = true) @RequestParam String cultureProgramId,
+            @ApiParam(value = "课程ID", required = true) @RequestParam String courseId) {
+        return ResultUtil.ok(obeCultureProgramRequirementService.listSubRequirement(SystemConstant.convertIdToLong(cultureProgramId),
+                SystemConstant.convertIdToLong(courseId)));
+    }
+}

+ 56 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ObeCourseWeightController.java

@@ -0,0 +1,56 @@
+package com.qmth.distributed.print.api;
+
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.distributed.print.business.bean.dto.CourseWeightDto;
+import com.qmth.teachcloud.common.annotation.OperationLogDetail;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.log.OperationTypeEnum;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import com.qmth.teachcloud.obe.been.params.ObeCourseWeightParam;
+import com.qmth.teachcloud.obe.service.ObeCourseWeightService;
+import io.swagger.annotations.*;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+
+/**
+ * <p>
+ * 课程权重设置 前端控制器
+ * </p>
+ *
+ * @author CaoZixuan
+ * @since 2024-02-22
+ */
+@Api(tags = "课程大纲权重管理controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_OBE + "/course_weight")
+public class ObeCourseWeightController {
+
+    @Resource
+    private ObeCourseWeightService obeCourseWeightService;
+
+    @ApiOperation(value = "课程权重管理-列表查询")
+    @RequestMapping(value = "/find", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "查询成功", response = CourseWeightDto.class) })
+    public Result findCourseWeightList(@ApiParam(value = "教学课程id") @RequestParam(required = false) String obeCourseOutlineId) {
+        return ResultUtil.ok(obeCourseWeightService.findCourseWeight(SystemConstant.convertIdToLong(obeCourseOutlineId)));
+    }
+
+    @ApiOperation(value = "课程权重管理-新增/编辑")
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "更新成功", response = Result.class) })
+    @OperationLogDetail(operationType = OperationTypeEnum.ADD)
+    public Result saveCourseWeight(@Valid @RequestBody ObeCourseWeightParam obeCourseWeightParam, BindingResult bindingResult) {
+        if (bindingResult.hasErrors()) {
+            return ResultUtil.error(bindingResult.getAllErrors().get(0).getDefaultMessage());
+        }
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        obeCourseWeightService.saveCourseWeight(obeCourseWeightParam, sysUser);
+        return ResultUtil.ok();
+    }
+}

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

@@ -0,0 +1,224 @@
+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.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 com.qmth.teachcloud.obe.been.params.cultureProgram.ObeCultureProgramCourseParam;
+import com.qmth.teachcloud.obe.been.params.cultureProgram.ObeCultureProgramDescriptionParam;
+import com.qmth.teachcloud.obe.been.params.cultureProgram.ObeRequirementTargetMatrixParam;
+import com.qmth.teachcloud.obe.entity.*;
+import com.qmth.teachcloud.obe.service.*;
+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 = "/description/save", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "保存总体描述", response = Boolean.class) })
+    public Result saveDescription(@Validated @RequestBody ObeCultureProgramDescriptionParam obeCultureProgramDescriptionParam) {
+        return ResultUtil.ok(obeCultureProgramService.saveDescription(obeCultureProgramDescriptionParam));
+    }
+
+    @ApiOperation(value = "基本信息查询")
+    @RequestMapping(value = "/get", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "保存总体描述", response = Boolean.class) })
+    public Result get(@ApiParam(value = "培养方案ID", required = true) @RequestParam(value = "id") Long id) {
+        return ResultUtil.ok(obeCultureProgramService.getByCultureProgramId(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/node/add", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "分页查询", response = Boolean.class) })
+    public Result addRequirementNode(ObeCultureProgramRequirement obeCultureProgramRequirement) {
+        return ResultUtil.ok(obeCultureProgramRequirementService.addRequirementNode(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 = "/requirement/expect/save", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "分页查询", response = Boolean.class) })
+    public Result saveRequirementExpect(@RequestBody ObeCultureProgramRequirement obeCultureProgramRequirement) {
+        return ResultUtil.ok(obeCultureProgramRequirementService.saveRequirementExpect(obeCultureProgramRequirement));
+    }
+
+    @ApiOperation(value = "培养目标与毕业要求关系矩阵-查询")
+    @RequestMapping(value = "/target/matrix/get", method = RequestMethod.POST)
+    @ApiResponses({ @ApiResponse(code = 200, message = "分页查询", response = Result.class) })
+    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 ObeRequirementTargetMatrixParam obeRequirementTargetMatrixParam) {
+        return ResultUtil.ok(obeRequirementTargetMatrixService.saveMatrix(obeRequirementTargetMatrixParam));
+    }
+
+    @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") @RequestParam(required = false) Long orgId,
+            @ApiParam(value = "课程名称/代码模糊查询") @RequestParam(required = false) String courseCodeOrName, @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(
+                obeCultureProgramCourseService.queryList(cultureProgramId, orgId, courseCodeOrName, pageNumber, pageSize));
+    }
+
+    @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));
+    }
+}

+ 194 - 0
distributed-print/src/main/java/com/qmth/distributed/print/api/ObeReportController.java

@@ -0,0 +1,194 @@
+package com.qmth.distributed.print.api;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.boot.api.exception.ApiException;
+import com.qmth.distributed.print.business.bean.result.ScoreResult;
+import com.qmth.distributed.print.business.service.TRExamStudentService;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.util.RedisUtil;
+import com.qmth.teachcloud.common.util.Result;
+import com.qmth.teachcloud.common.util.ResultUtil;
+import com.qmth.teachcloud.obe.been.report.ObeCourseRequirementDto;
+import com.qmth.teachcloud.obe.been.result.ObeCourseRequirementListResult;
+import com.qmth.teachcloud.obe.entity.ObeCourseRequirementReport;
+import com.qmth.teachcloud.obe.service.ObeCourseRequirementReportService;
+import io.swagger.annotations.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * <p>
+ * obe专业达成度报表 前端控制器
+ * </p>
+ *
+ * @author wangliang
+ * @since 2024-02-18
+ */
+@Api(tags = "obe专业达成度报表Controller")
+@RestController
+@RequestMapping(ApiConstant.DEFAULT_URI_PREFIX + SystemConstant.PREFIX_URL_OBE)
+public class ObeReportController {
+    private final static Logger log = LoggerFactory.getLogger(ObeReportController.class);
+
+    @Resource
+    ObeCourseRequirementReportService obeCourseRequirementReportService;
+
+    @Resource
+    TRExamStudentService trExamStudentService;
+
+    @Resource
+    RedisUtil redisUtil;
+
+    @ApiOperation(value = "毕业要求达成度重新计算")
+    @RequestMapping(value = "/requirements/again/calculate", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = ObeCourseRequirementListResult.class)})
+    public Result requirementsAgainCalculate(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId) {
+        String lockKey = SystemConstant.REDIS_OBE_RADAR_AGAIN_DATA_PREFIX + cultureProgramId;
+        boolean lock = redisUtil.lock(lockKey, SystemConstant.REDIS_LOCK_OBE_RADAR_DATA_TIME_OUT);
+        if (!lock) {
+            throw ExceptionResultEnum.ERROR.exception("正在重新计算数据,请稍候再试!");
+        }
+        ObeCourseRequirementDto obeCourseRequirementResultDto = null;
+        try {
+            obeCourseRequirementResultDto = obeCourseRequirementReportService.calculate(cultureProgramId);
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        } finally {
+            redisUtil.releaseLock(lockKey);
+        }
+        return ResultUtil.ok(obeCourseRequirementResultDto);
+    }
+
+    @ApiOperation(value = "毕业要求达成度报表列表")
+    @RequestMapping(value = "/requirements/list", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "分页查询", response = ObeCourseRequirementListResult.class)})
+    public Result requirementsList(@ApiParam(value = "专业ID", required = true) @RequestParam Long professionalId,
+                                   @ApiParam(value = "培养方案名称") @RequestParam(required = false) String cultureProgramName,
+                                   @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(obeCourseRequirementReportService.obeCourseRequirementReportList(new Page<>(pageNumber, pageSize), professionalId, cultureProgramName));
+    }
+
+    @ApiOperation(value = "毕业要求达成度雷达报表")
+    @RequestMapping(value = "/requirements/radar/report", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "毕业要求达成度雷达报表", response = ScoreResult.class)})
+    public Result requirementsRadarReport(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId) {
+        String lockKey = SystemConstant.REDIS_OBE_RADAR_DATA_PREFIX + cultureProgramId;
+        boolean lock = redisUtil.lock(lockKey, SystemConstant.REDIS_LOCK_OBE_RADAR_DATA_TIME_OUT);
+        if (!lock) {
+            throw ExceptionResultEnum.ERROR.exception("正在计算数据,请稍候再试!");
+        }
+        ObeCourseRequirementDto obeCourseRequirementResultDto = null;
+        try {
+            ObeCourseRequirementReport obeCourseRequirementReport = obeCourseRequirementReportService.findByCultureProgramId(cultureProgramId);
+            if (Objects.nonNull(obeCourseRequirementReport) && Objects.nonNull(obeCourseRequirementReport.getRequirementRadar())) {
+                obeCourseRequirementResultDto = JSONObject.parseObject(obeCourseRequirementReport.getRequirementRadar(), ObeCourseRequirementDto.class);
+            } else {
+                obeCourseRequirementResultDto = obeCourseRequirementReportService.calculate(cultureProgramId);
+            }
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        } finally {
+            redisUtil.releaseLock(lockKey);
+        }
+        return ResultUtil.ok(obeCourseRequirementResultDto);
+    }
+
+    @ApiOperation(value = "毕业要求达成度详情报表")
+    @RequestMapping(value = "/requirements/detail/report", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "毕业要求达成度详情报表", response = ScoreResult.class)})
+    public Result requirementsDetailReport(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId) {
+        String lockKey = SystemConstant.REDIS_OBE_RADAR_DETAIL_DATA_PREFIX + cultureProgramId;
+        boolean lock = redisUtil.lock(lockKey, SystemConstant.REDIS_LOCK_OBE_RADAR_DATA_TIME_OUT);
+        if (!lock) {
+            throw ExceptionResultEnum.ERROR.exception("正在计算详情数据,请稍候再试!");
+        }
+        List<ObeCourseRequirementDto> obeCourseRequirementDtoList = null;
+        try {
+            ObeCourseRequirementReport obeCourseRequirementReport = obeCourseRequirementReportService.findByCultureProgramId(cultureProgramId);
+            if (Objects.nonNull(obeCourseRequirementReport) && Objects.nonNull(obeCourseRequirementReport.getRequirementDetail())) {
+                obeCourseRequirementDtoList = JSONArray.parseArray(obeCourseRequirementReport.getRequirementDetail(), ObeCourseRequirementDto.class);
+            } else {
+                obeCourseRequirementDtoList = obeCourseRequirementReportService.calculateDetail(cultureProgramId);
+            }
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        } finally {
+            redisUtil.releaseLock(lockKey);
+        }
+        return ResultUtil.ok(obeCourseRequirementDtoList);
+    }
+
+    @ApiOperation(value = "毕业要求达成度学生重新计算")
+    @RequestMapping(value = "/student_requirement/again/calculate", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "毕业要求达成度学生报表", response = ScoreResult.class)})
+    public Result requirementsStudentAgainCalculate(@ApiParam(value = "培养方案ID") @RequestParam(required = false) Long cultureProgramId) {
+        String lockKey = SystemConstant.REDIS_OBE_RADAR_STUDENT_DATA_PREFIX + cultureProgramId;
+        boolean lock = redisUtil.lock(lockKey, SystemConstant.REDIS_LOCK_OBE_RADAR_DATA_TIME_OUT);
+        if (!lock) {
+            throw ExceptionResultEnum.ERROR.exception("正在重新计算数据,请稍候再试!");
+        }
+        ObeCourseRequirementDto obeCourseRequirementResultDto = null;
+        try {
+            obeCourseRequirementResultDto = obeCourseRequirementReportService.calculate(cultureProgramId);
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+            if (e instanceof ApiException) {
+                ResultUtil.error((ApiException) e, ((ApiException) e).getCode(), e.getMessage());
+            } else {
+                ResultUtil.error(e.getMessage());
+            }
+        } finally {
+            redisUtil.releaseLock(lockKey);
+        }
+        return ResultUtil.ok(obeCourseRequirementResultDto);
+    }
+
+    @ApiOperation(value = "毕业要求达成度学生报表-列表")
+    @RequestMapping(value = "/student_requirement/page", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "毕业要求达成度学生报表", response = ScoreResult.class)})
+    public Result requirementsStudentPage(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId,
+                                          @ApiParam(value = "学号/姓名") @RequestParam(required = false) String studentCodeOrName,
+                                          @RequestParam @Min(SystemConstant.PAGE_NUMBER_MIN) Integer pageNumber,
+                                          @RequestParam @Min(SystemConstant.PAGE_SIZE_MIN) @Max(SystemConstant.PAGE_SIZE_MAX) Integer pageSize) {
+        return ResultUtil.ok(trExamStudentService.getRequirementsStudentPage(cultureProgramId, studentCodeOrName, pageNumber, pageSize));
+    }
+
+    @ApiOperation(value = "毕业要求达成度学生报表-查看详情")
+    @RequestMapping(value = "/student_requirement/detail", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "毕业要求达成度学生报表", response = ScoreResult.class)})
+    public Result requirementsStudentReport(@ApiParam(value = "培养方案ID", required = true) @RequestParam Long cultureProgramId,
+                                            @ApiParam(value = "学号", required = true) @RequestParam String studentCode,
+                                            @ApiParam(value = "学期") @RequestParam(required = false) Long semesterId) {
+        return ResultUtil.ok(trExamStudentService.getRequirementsStudentReport(cultureProgramId, studentCode, semesterId));
+    }
+}

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

@@ -6,7 +6,7 @@ import com.qmth.boot.api.annotation.Aac;
 import com.qmth.boot.api.constant.ApiConstant;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.params.LoginParam;
-import com.qmth.distributed.print.business.bean.result.DictionaryResult;
+import com.qmth.teachcloud.common.bean.result.DictionaryResult;
 import com.qmth.distributed.print.business.bean.result.EditResult;
 import com.qmth.distributed.print.business.entity.TBSyncTask;
 import com.qmth.distributed.print.business.enums.DictionaryEnum;
@@ -22,7 +22,6 @@ import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.*;
 import com.qmth.teachcloud.common.enums.*;
 import com.qmth.teachcloud.common.enums.log.OperationTypeEnum;
-import com.qmth.teachcloud.common.enums.log.SystemEnum;
 import com.qmth.teachcloud.common.service.*;
 import com.qmth.teachcloud.common.util.FileUtil;
 import com.qmth.teachcloud.common.util.Result;

BIN
distributed-print/src/main/resources/static/course_degree_report.docx


+ 34 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/dto/professional/ProfessionalDto.java

@@ -0,0 +1,34 @@
+package com.qmth.teachcloud.common.bean.dto.professional;
+
+import com.qmth.teachcloud.common.entity.BasicProfessional;
+
+public class ProfessionalDto extends BasicProfessional {
+
+    private String orgName;
+    private String loginName;
+    private String userName;
+
+    public String getOrgName() {
+        return orgName;
+    }
+
+    public void setOrgName(String orgName) {
+        this.orgName = orgName;
+    }
+
+    public String getLoginName() {
+        return loginName;
+    }
+
+    public void setLoginName(String loginName) {
+        this.loginName = loginName;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+}

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/DictionaryResult.java → teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/DictionaryResult.java

@@ -1,4 +1,4 @@
-package com.qmth.distributed.print.business.bean.result;
+package com.qmth.teachcloud.common.bean.result;
 
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;

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

@@ -78,7 +78,9 @@ 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";
 
     /**
      * 教研分析api前缀
@@ -349,6 +351,8 @@ public class SystemConstant {
     public static final Integer DEFAULT_BACKUP_COUNT = 1;
     public static final String IMPORT = ":import";
     public static final String SYNC = ":sync";
+    public static final String OBE_COURSE_REQUIREMENT_DTO_LIST = "obeCourseRequirementDtoList";
+    public static final String OBE_SUB_REQUIREMENT_DTO_MAP = "obeSubRequirementsDtoMap";
 
     /**
      * oss url过期时间
@@ -535,10 +539,15 @@ public class SystemConstant {
     public static final long REDIS_LOCK_PAPER_NUMBER_TIME_OUT = 60L * 2;
     public static final String REDIS_FINAL_SCORE_DATA_FLOW_PREFIX = "redis:lock:final:score:data";//期末考试数据锁
     public static final String REDIS_PAPER_STRUCT_FLOW_PREFIX = "redis:lock:final:score:paper:struct";//期末考试试卷结构锁
+    public static final String REDIS_OBE_RADAR_DATA_PREFIX = "redis:lock:obe:radar:data";//obe雷达报表锁
+    public static final String REDIS_OBE_RADAR_DETAIL_DATA_PREFIX = "redis:lock:obe:radar:detail:data";//obe雷达详情报表锁
+    public static final String REDIS_OBE_RADAR_AGAIN_DATA_PREFIX = "redis:lock:obe:radar:again:data";//obe雷达报表重新算锁
+    public static final String REDIS_OBE_RADAR_STUDENT_DATA_PREFIX = "redis:lock:obe:student:again:data";//obe学生重新算锁
 
     public static final String REDIS_LOCK_IMPORT_EXAM_DATA = "redis:lock:import:exam:data:";//导入考务数据锁
     public static final long REDIS_LOCK_IMPORT_EXAM_DATA_TIME_OUT = 60L * 10;
     public static final long REDIS_PAPER_STRUCT_TIME_OUT = 60L * 10;
+    public static final long REDIS_LOCK_OBE_RADAR_DATA_TIME_OUT = 60L * 10;
     /**
      * 机器心跳
      */

+ 72 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/BasicProfessional.java

@@ -0,0 +1,72 @@
+package com.qmth.teachcloud.common.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+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.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 专业表
+ * </p>
+ *
+ * @author xf
+ * @since 2024-04-22
+ */
+@TableName("basic_professional")
+@ApiModel(value = "BasicProfessional对象", description = "专业表")
+public class BasicProfessional extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "学校ID")
+    private Long schoolId;
+
+    @NotBlank(message = "专业名称不能为空")
+    @ApiModelProperty(value = "专业名称")
+    private String name;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "所属学院ID不能为空")
+    @ApiModelProperty(value = "所属学院ID")
+    private Long orgId;
+
+    public Long getSchoolId() {
+        return schoolId;
+    }
+
+    public void setSchoolId(Long schoolId) {
+        this.schoolId = schoolId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    @Override
+    public String toString() {
+        return "BasicProfessional{" +
+                ", name=" + name +
+                ", orgId=" + orgId +
+                "}";
+    }
+}

+ 28 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/mapper/BasicProfessionalMapper.java

@@ -0,0 +1,28 @@
+package com.qmth.teachcloud.common.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import com.qmth.teachcloud.common.bean.dto.professional.ProfessionalDto;
+import com.qmth.teachcloud.common.entity.BasicProfessional;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 专业认证专业表 Mapper 接口
+ * </p>
+ *
+ * @author xf
+ * @since 2024-04-22
+ */
+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);
+
+    List<ProfessionalDto> pageData(@Param("schoolId") Long schoolId, @Param("name") String name, @Param("orgId") Long orgId, @Param("dpr") DataPermissionRule dpr);
+
+    int countCultureProgram(@Param("professionalId") Long professionalId);
+}

+ 28 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/BasicProfessionalService.java

@@ -0,0 +1,28 @@
+package com.qmth.teachcloud.common.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qmth.teachcloud.common.bean.dto.professional.ProfessionalDto;
+import com.qmth.teachcloud.common.entity.BasicProfessional;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 专业认证专业表 服务类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-04-22
+ */
+public interface BasicProfessionalService extends IService<BasicProfessional> {
+
+    List<ProfessionalDto> listData(String name, Long orgId);
+
+    IPage<ProfessionalDto> pageData(Page<ProfessionalDto> page, String name, Long orgId);
+
+    Boolean saveData(BasicProfessional tpProfessional);
+
+    boolean remove(Long id);
+}

+ 89 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/BasicProfessionalServiceImpl.java

@@ -0,0 +1,89 @@
+package com.qmth.teachcloud.common.service.impl;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.teachcloud.common.bean.dto.DataPermissionRule;
+import com.qmth.teachcloud.common.bean.dto.professional.ProfessionalDto;
+import com.qmth.teachcloud.common.entity.BasicProfessional;
+import com.qmth.teachcloud.common.entity.SysOrg;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.enums.OrgTypeEnum;
+import com.qmth.teachcloud.common.mapper.BasicProfessionalMapper;
+import com.qmth.teachcloud.common.service.BasicProfessionalService;
+import com.qmth.teachcloud.common.service.BasicRoleDataPermissionService;
+import com.qmth.teachcloud.common.service.SysOrgService;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 专业表 服务实现类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-04-22
+ */
+@Service
+public class BasicProfessionalServiceImpl extends ServiceImpl<BasicProfessionalMapper, BasicProfessional> implements
+        BasicProfessionalService {
+
+    @Resource
+    private BasicRoleDataPermissionService basicRoleDataPermissionService;
+
+    @Resource
+    private SysOrgService sysOrgService;
+
+    @Override
+    public List<ProfessionalDto> listData(String name, Long orgId) {
+        Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
+        SysOrg sysOrg = sysOrgService.getById(orgId);
+        if (sysOrg != null && OrgTypeEnum.SCHOOL.equals(sysOrg.getType())) {
+            orgId = null;
+        }
+        return this.baseMapper.pageData(schoolId, name, orgId, null);
+    }
+
+    @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 basicProfessional) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+
+        if (basicProfessional.getId() == null) {
+            basicProfessional.insertInfo(sysUser.getId());
+            basicProfessional.setSchoolId(sysUser.getSchoolId());
+            return this.save(basicProfessional);
+        } else {
+            BasicProfessional basicProfessional1 = this.getOne(new QueryWrapper<BasicProfessional>().lambda()
+                    .eq(BasicProfessional::getOrgId, basicProfessional.getOrgId()).eq(BasicProfessional::getName, basicProfessional.getName()));
+            if (basicProfessional1 != null && basicProfessional1.getId().longValue() != basicProfessional.getId().longValue()) {
+                throw ExceptionResultEnum.ERROR.exception("专业名称已存在");
+            }
+            basicProfessional.updateInfo(sysUser.getId());
+            return this.updateById(basicProfessional);
+        }
+    }
+
+    @Override
+    public boolean remove(Long id) {
+        // 校验是否添加了培养方案
+        if (this.baseMapper.countCultureProgram(id) > 0) {
+            throw ExceptionResultEnum.ERROR.exception("专业已创建了培养方案,不能删除");
+        }
+        return this.removeById(id);
+    }
+}

+ 68 - 0
teachcloud-common/src/main/resources/mapper/BasicProfessionalMapper.xml

@@ -0,0 +1,68 @@
+<?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.teachcloud.common.mapper.BasicProfessionalMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qmth.teachcloud.common.entity.BasicProfessional">
+        <id column="id" property="id" />
+        <result column="school_id" property="schoolId" />
+        <result column="name" property="name" />
+        <result column="org_id" property="orgId" />
+        <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.teachcloud.common.bean.dto.professional.ProfessionalDto">
+        select
+            tpp.id,
+            tpp.name,
+            tpp.org_id,
+            tpp.create_id,
+            tpp.create_time,
+            tpp.update_id,
+            tpp.update_time,
+            so.name orgName,
+            su.login_name loginName,
+            su.real_name userName
+        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>
+            <if test="schoolId != null">
+                and tpp.school_id = #{schoolId}
+            </if>
+            <if test="name != null and name != ''">
+                and tpp.name like concat('%',#{name},'%')
+            </if>
+            <if test="orgId != null">
+                and tpp.org_id = #{orgId}
+            </if>
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND tpp.create_id = #{dpr.requestUserId}
+                    AND tpp.org_id = su.org_id
+                </if>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND tpp.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+            </if>
+        </where>
+    </select>
+    <select id="countCultureProgram" resultType="java.lang.Integer">
+        SELECT
+            COUNT(*)
+        FROM
+            obe_culture_program
+        <where>
+            <if test="professionalId != null">
+                AND professional_id = #{professionalId}
+            </if>
+        </where>
+    </select>
+
+</mapper>

+ 9 - 0
teachcloud-obe/pom.xml

@@ -25,10 +25,19 @@
         <version>3.4.0</version>
     </parent>
 
+
     <dependencies>
         <dependency>
             <groupId>com.qmth.boot</groupId>
             <artifactId>starter-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.qmth.teachcloud.common</groupId>
+            <artifactId>teachcloud-common</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.jetbrains</groupId>
+            <artifactId>annotations</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 47 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseDimensionDto.java

@@ -0,0 +1,47 @@
+package com.qmth.teachcloud.obe.been.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 毕业要求dto
+ * @Author: CaoZixuan
+ * @Date: 2024-02-28
+ */
+public class CourseDimensionDto {
+
+    @ApiModelProperty("课程知识点id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty("课程知识点代码")
+    private String code;
+
+    @ApiModelProperty("课程知识点名称")
+    private String name;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    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;
+    }
+}

+ 40 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseDimensionImportDto.java

@@ -0,0 +1,40 @@
+package com.qmth.teachcloud.obe.been.dto;
+
+import com.qmth.boot.tools.excel.annotation.ExcelColumn;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 课程知识点数据导入dto
+ * @Author: CaoZixuan
+ * @Date: 2024-02-27
+ */
+public class CourseDimensionImportDto {
+
+    @ApiModelProperty("一级知识点内容")
+    @ExcelColumn(name = "一级知识点内容", index = 0, nullable = true)
+    @NotNull
+    private String firstDimensionName;
+
+    @ApiModelProperty("二级知识点内容")
+    @ExcelColumn(name = "二级知识点内容", index = 1)
+    @NotNull
+    private String secondDimensionName;
+
+    public String getFirstDimensionName() {
+        return firstDimensionName;
+    }
+
+    public void setFirstDimensionName(String firstDimensionName) {
+        this.firstDimensionName = firstDimensionName;
+    }
+
+    public String getSecondDimensionName() {
+        return secondDimensionName;
+    }
+
+    public void setSecondDimensionName(String secondDimensionName) {
+        this.secondDimensionName = secondDimensionName;
+    }
+}

+ 70 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseDimensionMd5Dto.java

@@ -0,0 +1,70 @@
+package com.qmth.teachcloud.obe.been.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.enums.CourseDimensionSourceEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 知识点Md5比对dto
+ * @Author: CaoZixuan
+ * @Date: 2024-03-13
+ */
+public class CourseDimensionMd5Dto {
+
+    @ApiModelProperty(value = "来源")
+    private CourseDimensionSourceEnum source;
+
+    @ApiModelProperty(value = "知识点编号")
+    private String code;
+
+    @ApiModelProperty(value = "知识点名称")
+    private String name;
+
+    @ApiModelProperty(value = "排序")
+    private Integer number;
+
+    @ApiModelProperty(value = "父id(顶级知识点父id为0)")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long parentId;
+
+    public CourseDimensionSourceEnum getSource() {
+        return source;
+    }
+
+    public void setSource(CourseDimensionSourceEnum source) {
+        this.source = source;
+    }
+
+    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 getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+}

+ 35 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseDimensionOccupiedDto.java

@@ -0,0 +1,35 @@
+package com.qmth.teachcloud.obe.been.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 课程知识点占用dto
+ * @Author: CaoZixuan
+ * @Date: 2024-02-28
+ */
+public class CourseDimensionOccupiedDto {
+    @ApiModelProperty("课程目标id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long courseTargetId;
+
+    @ApiModelProperty("知识点占用状态 true:被占用 false:未占用")
+    private Boolean status;
+
+    public Long getCourseTargetId() {
+        return courseTargetId;
+    }
+
+    public void setCourseTargetId(Long courseTargetId) {
+        this.courseTargetId = courseTargetId;
+    }
+
+    public Boolean getStatus() {
+        return status;
+    }
+
+    public void setStatus(Boolean status) {
+        this.status = status;
+    }
+}

+ 107 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseWeightDetailDto.java

@@ -0,0 +1,107 @@
+package com.qmth.teachcloud.obe.been.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.obe.enums.CourseEvaluationTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description: 课程评价方式权重详情
+ * @Author: CaoZixuan
+ * @Date: 2024-03-01
+ */
+public class CourseWeightDetailDto {
+
+    @ApiModelProperty("评价方式id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long evaluationId;
+
+    @ApiModelProperty("评价方式名称")
+    private String evaluationName;
+
+    @ApiModelProperty("评价方式描述")
+    private String evaluationDesc;
+
+    @ApiModelProperty("是否启用")
+    private Boolean enable;
+
+    @ApiModelProperty("权重")
+    private BigDecimal weight;
+
+    @ApiModelProperty("目标分值")
+    private BigDecimal targetScore;
+
+    @ApiModelProperty("评价方式类型")
+    private CourseEvaluationTypeEnum evaluationType;
+
+    public CourseWeightDetailDto() {
+
+    }
+
+    public CourseWeightDetailDto(String evaluationName, BigDecimal weight, BigDecimal targetScore) {
+        this.evaluationId = SystemConstant.getDbUuid();
+        this.evaluationName = evaluationName;
+        this.enable = true;
+        this.weight = weight;
+        this.targetScore = targetScore;
+    }
+
+    public Long getEvaluationId() {
+        return evaluationId;
+    }
+
+    public void setEvaluationId(Long evaluationId) {
+        this.evaluationId = evaluationId;
+    }
+
+    public String getEvaluationName() {
+        return evaluationName;
+    }
+
+    public void setEvaluationName(String evaluationName) {
+        this.evaluationName = evaluationName;
+    }
+
+    public Boolean getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Boolean enable) {
+        this.enable = enable;
+    }
+
+    public BigDecimal getWeight() {
+        return weight;
+    }
+
+    public void setWeight(BigDecimal weight) {
+        this.weight = weight;
+    }
+
+    public BigDecimal getTargetScore() {
+        return targetScore;
+    }
+
+    public void setTargetScore(BigDecimal targetScore) {
+        this.targetScore = targetScore;
+    }
+
+    public String getEvaluationDesc() {
+        return evaluationDesc;
+    }
+
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
+    }
+
+    public CourseEvaluationTypeEnum getEvaluationType() {
+        return evaluationType;
+    }
+
+    public void setEvaluationType(CourseEvaluationTypeEnum evaluationType) {
+        this.evaluationType = evaluationType;
+    }
+}

+ 164 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseWeightDto.java

@@ -0,0 +1,164 @@
+package com.qmth.teachcloud.obe.been.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 课程权重dto
+ * @Author: CaoZixuan
+ * @Date: 2024-03-01
+ */
+public class CourseWeightDto implements Serializable {
+
+    @ApiModelProperty("课程目标id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long courseTargetId;
+
+    @ApiModelProperty("课程目标名称")
+    private String courseTargetName;
+
+    @ApiModelProperty("预期值")
+    private Double expectValue;
+
+    @ApiModelProperty("指标点id")
+    private Long obeCultureProgramRequirementId;
+
+    @ApiModelProperty("指标点名称")
+    private String obeCultureProgramRequirementName;
+
+    @ApiModelProperty("父指标点名称")
+    private String parentRequirementName;
+
+    @ApiModelProperty("毕业要求指标(评价依据)")
+    private List<CourseDimensionDto> dimensionList;
+
+    @ApiModelProperty("毕业要求指标(评价依据)解析字符串")
+    private String dimensionStr;
+
+    @ApiModelProperty("支撑毕业要求")
+    private String degreeRequirement;
+
+    @ApiModelProperty("目标整体权重")
+    private BigDecimal totalWeight;
+
+    @ApiModelProperty("评价方式权重详情")
+    private List<CourseWeightDetailDto> evaluationList;
+
+    public Long getCourseTargetId() {
+        return courseTargetId;
+    }
+
+    public void setCourseTargetId(Long courseTargetId) {
+        this.courseTargetId = courseTargetId;
+    }
+
+    public String getCourseTargetName() {
+        return courseTargetName;
+    }
+
+    public void setCourseTargetName(String courseTargetName) {
+        this.courseTargetName = courseTargetName;
+    }
+
+    public Double getExpectValue() {
+        return expectValue;
+    }
+
+    public void setExpectValue(Double expectValue) {
+        this.expectValue = expectValue;
+    }
+
+    public Long getObeCultureProgramRequirementId() {
+        return obeCultureProgramRequirementId;
+    }
+
+    public void setObeCultureProgramRequirementId(Long obeCultureProgramRequirementId) {
+        this.obeCultureProgramRequirementId = obeCultureProgramRequirementId;
+    }
+
+    public String getObeCultureProgramRequirementName() {
+        return obeCultureProgramRequirementName;
+    }
+
+    public void setObeCultureProgramRequirementName(String obeCultureProgramRequirementName) {
+        this.obeCultureProgramRequirementName = obeCultureProgramRequirementName;
+    }
+
+    public String getParentRequirementName() {
+        return parentRequirementName;
+    }
+
+    public void setParentRequirementName(String parentRequirementName) {
+        this.parentRequirementName = parentRequirementName;
+    }
+
+    public List<CourseDimensionDto> getDimensionList() {
+        return dimensionList;
+    }
+
+    public void setDimensionList(List<CourseDimensionDto> dimensionList) {
+        this.dimensionList = dimensionList;
+    }
+
+    public String getDimensionStr() {
+        return dimensionStr;
+    }
+
+    public void setDimensionStr(String dimensionStr) {
+        this.dimensionStr = dimensionStr;
+    }
+
+    public String getDegreeRequirement() {
+        return degreeRequirement;
+    }
+
+    public void setDegreeRequirement(String degreeRequirement) {
+        this.degreeRequirement = degreeRequirement;
+    }
+
+    public BigDecimal getTotalWeight() {
+        return totalWeight;
+    }
+
+    public void setTotalWeight(BigDecimal totalWeight) {
+        this.totalWeight = totalWeight;
+    }
+
+    public List<CourseWeightDetailDto> getEvaluationList() {
+        return evaluationList;
+    }
+
+    public void setEvaluationList(List<CourseWeightDetailDto> evaluationList) {
+        this.evaluationList = evaluationList;
+    }
+
+    // 解析指标集合
+    public void analyzeDimensionStr() {
+        dimensionStr = dimensionList.stream().map(e -> String.format("%s(%s)", e.getName(), e.getCode())).collect(Collectors.joining(","));
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        CourseWeightDto that = (CourseWeightDto) o;
+        return courseTargetId.equals(that.courseTargetId) && obeCultureProgramRequirementId.equals(that.obeCultureProgramRequirementId) && obeCultureProgramRequirementName.equals(
+                that.obeCultureProgramRequirementName);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(courseTargetId, obeCultureProgramRequirementId, obeCultureProgramRequirementName);
+    }
+}

+ 117 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/dto/CourseWeightFormDto.java

@@ -0,0 +1,117 @@
+package com.qmth.teachcloud.obe.been.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.enums.CourseEvaluationTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description: 课程权重表单dto(展开的结构)
+ * @Author: CaoZixuan
+ * @Date: 2024-03-06
+ */
+public class CourseWeightFormDto {
+
+    @ApiModelProperty("课程目标id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long targetId;
+
+    @ApiModelProperty("课程目标名称")
+    private String targetName;
+
+    @ApiModelProperty("目标创建时间")
+    private Long targetCreateTime;
+
+    @ApiModelProperty("对应课程目标分值")
+    private BigDecimal targetScore;
+
+    @ApiModelProperty("评价方式id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long evaluationId;
+
+    @ApiModelProperty("评价方式(项目)")
+    private String evaluation;
+
+    @ApiModelProperty("评价方式内容(考核内容及其要求)")
+    private String evaluationDesc;
+
+    @ApiModelProperty("评价方式创建时间")
+    private Long evaluationCreateTime;
+
+    @ApiModelProperty("评价方式类型(默认/自定义)")
+    private CourseEvaluationTypeEnum type;
+
+    public Long getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(Long targetId) {
+        this.targetId = targetId;
+    }
+
+    public String getTargetName() {
+        return targetName;
+    }
+
+    public void setTargetName(String targetName) {
+        this.targetName = targetName;
+    }
+
+    public Long getTargetCreateTime() {
+        return targetCreateTime;
+    }
+
+    public void setTargetCreateTime(Long targetCreateTime) {
+        this.targetCreateTime = targetCreateTime;
+    }
+
+    public BigDecimal getTargetScore() {
+        return targetScore;
+    }
+
+    public void setTargetScore(BigDecimal targetScore) {
+        this.targetScore = targetScore;
+    }
+
+    public Long getEvaluationId() {
+        return evaluationId;
+    }
+
+    public void setEvaluationId(Long evaluationId) {
+        this.evaluationId = evaluationId;
+    }
+
+    public String getEvaluation() {
+        return evaluation;
+    }
+
+    public void setEvaluation(String evaluation) {
+        this.evaluation = evaluation;
+    }
+
+    public String getEvaluationDesc() {
+        return evaluationDesc;
+    }
+
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
+    }
+
+    public Long getEvaluationCreateTime() {
+        return evaluationCreateTime;
+    }
+
+    public void setEvaluationCreateTime(Long evaluationCreateTime) {
+        this.evaluationCreateTime = evaluationCreateTime;
+    }
+
+    public CourseEvaluationTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(CourseEvaluationTypeEnum type) {
+        this.type = type;
+    }
+}

+ 101 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/obe/CourseRequirementMatrixDto.java

@@ -0,0 +1,101 @@
+package com.qmth.teachcloud.obe.been.obe;
+
+import com.qmth.teachcloud.obe.entity.ObeCourseRequirementMatrix;
+
+import java.util.List;
+
+public class CourseRequirementMatrixDto extends ObeCourseRequirementMatrix {
+
+    private Long courseId;
+    private String courseCode;
+    private String courseName;
+    private int courseSortNum;
+    private int requirementSortNum;
+    private int subRequirementSortNum;
+    private String requirementContent;
+    private String semesterName;
+    // 是否可编辑
+    private Boolean canEdit;
+    private List<MatrixRequirementDto> requirements;
+
+    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 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 String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    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;
+    }
+
+    public String getRequirementContent() {
+        return requirementContent;
+    }
+
+    public void setRequirementContent(String requirementContent) {
+        this.requirementContent = requirementContent;
+    }
+
+}

+ 70 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/obe/MatrixRequirementDto.java

@@ -0,0 +1,70 @@
+package com.qmth.teachcloud.obe.been.obe;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.entity.BasicProfessional;
+
+import java.util.List;
+
+public class MatrixRequirementDto extends BasicProfessional {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+    private String name;
+    private String content;
+    private Double expectValue;
+    private Integer sortNum;
+    private List<MatrixSubRequirementDto> subRequirements;
+
+    @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 String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Integer getSortNum() {
+        return sortNum;
+    }
+
+    public void setSortNum(Integer sortNum) {
+        this.sortNum = sortNum;
+    }
+
+    public List<MatrixSubRequirementDto> getSubRequirements() {
+        return subRequirements;
+    }
+
+    public void setSubRequirements(List<MatrixSubRequirementDto> subRequirements) {
+        this.subRequirements = subRequirements;
+    }
+
+    public Double getExpectValue() {
+        return expectValue;
+    }
+
+    public void setExpectValue(Double expectValue) {
+        this.expectValue = expectValue;
+    }
+}

+ 74 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/obe/MatrixSubRequirementDto.java

@@ -0,0 +1,74 @@
+package com.qmth.teachcloud.obe.been.obe;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.entity.BasicProfessional;
+
+import java.math.BigDecimal;
+
+public class MatrixSubRequirementDto extends BasicProfessional {
+
+    // 矩阵ID
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+    private String name;
+    private BigDecimal scale = new BigDecimal(0);
+    private String content;
+
+    // 毕业要求指标点ID
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long subRequirementId;
+    private Integer subRequirementSortNum;
+
+    public Long getSubRequirementId() {
+        return subRequirementId;
+    }
+
+    public void setSubRequirementId(Long subRequirementId) {
+        this.subRequirementId = subRequirementId;
+    }
+
+    @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 BigDecimal getScale() {
+        return scale;
+    }
+
+    public void setScale(BigDecimal scale) {
+        this.scale = scale;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Integer getSubRequirementSortNum() {
+        return subRequirementSortNum;
+    }
+
+    public void setSubRequirementSortNum(Integer subRequirementSortNum) {
+        this.subRequirementSortNum = subRequirementSortNum;
+    }
+}

+ 41 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/obe/MatrixTargetDto.java

@@ -0,0 +1,41 @@
+package com.qmth.teachcloud.obe.been.obe;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.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;
+    }
+}

+ 29 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/obe/RequirementTargetMatrixDto.java

@@ -0,0 +1,29 @@
+package com.qmth.teachcloud.obe.been.obe;
+
+import com.qmth.teachcloud.obe.entity.ObeRequirementTargetMatrix;
+
+import java.util.List;
+
+public class RequirementTargetMatrixDto extends ObeRequirementTargetMatrix {
+
+    private String requirementName;
+    private List<MatrixTargetDto> targetList;
+
+    @Override
+    public String getRequirementName() {
+        return requirementName;
+    }
+
+    @Override
+    public void setRequirementName(String requirementName) {
+        this.requirementName = requirementName;
+    }
+
+    public List<MatrixTargetDto> getTargetList() {
+        return targetList;
+    }
+
+    public void setTargetList(List<MatrixTargetDto> targetList) {
+        this.targetList = targetList;
+    }
+}

+ 81 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/ObeCourseEvaluationParam.java

@@ -0,0 +1,81 @@
+package com.qmth.teachcloud.obe.been.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.enums.CourseEvaluationTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Length;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 课程评价方式参数
+ * @Author: CaoZixuan
+ * @Date: 2024-02-29
+ */
+public class ObeCourseEvaluationParam {
+
+    @ApiModelProperty("课程评价方式id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty("课程大纲id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "缺少课程大纲id")
+    @Range(min = 1L, message = "缺少课程大纲id")
+    private Long obeCourseOutlineId;
+
+    @ApiModelProperty("评价方式")
+    @NotNull(message = "缺少评价方式")
+    @Length(min = 1, message = "缺少评价方式")
+    private String evaluation;
+
+    @ApiModelProperty("评价方式描述")
+    @NotNull(message = "缺少评价方式描述")
+    @Length(min = 1, message = "缺少评价方式描述")
+    private String evaluationDesc;
+
+    @ApiModelProperty("评价方式类型")
+    private CourseEvaluationTypeEnum type;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getObeCourseOutlineId() {
+        return obeCourseOutlineId;
+    }
+
+    public void setObeCourseOutlineId(Long obeCourseOutlineId) {
+        this.obeCourseOutlineId = obeCourseOutlineId;
+    }
+
+    public String getEvaluation() {
+        return evaluation;
+    }
+
+    public void setEvaluation(String evaluation) {
+        this.evaluation = evaluation;
+    }
+
+    public String getEvaluationDesc() {
+        return evaluationDesc;
+    }
+
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
+    }
+
+    public CourseEvaluationTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(CourseEvaluationTypeEnum type) {
+        this.type = type;
+    }
+}

+ 103 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/ObeCourseOutlineParam.java

@@ -0,0 +1,103 @@
+package com.qmth.teachcloud.obe.been.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.enums.ObeCourseOutlineCourseTypeEnum;
+import com.qmth.teachcloud.obe.enums.ObeCourseOutlineEvaluationEnum;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: obe课程大纲参数
+ * @Author: CaoZixuan
+ * @Date: 2024-06-05
+ */
+public class ObeCourseOutlineParam {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程大纲id")
+    private Long id;
+
+    @ApiModelProperty(value = "大纲名称")
+    @NotNull(message = "课程大纲名称必填")
+    private String courseOutlineName;
+
+    @ApiModelProperty(value = "培养方案id")
+    @NotNull(message = "缺少教学课程")
+    @Range(min = 1L, message = "缺少教学课程")
+    private Long cultureProgramId;
+
+    @ApiModelProperty(value = "学期id")
+    @NotNull(message = "缺少学期id")
+    @Range(min = 1L, message = "缺少学期id")
+    private Long semesterId;
+
+    @ApiModelProperty(value = "课程id")
+    @NotNull(message = "缺少课程id")
+    @Range(min = 1L, message = "缺少课程id")
+    private Long courseId;
+
+    @ApiModelProperty(value = "考核方式")
+    private ObeCourseOutlineEvaluationEnum evaluationMode;
+
+    @ApiModelProperty(value = "课程类型")
+    private ObeCourseOutlineCourseTypeEnum courseType;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getCourseOutlineName() {
+        return courseOutlineName;
+    }
+
+    public void setCourseOutlineName(String courseOutlineName) {
+        this.courseOutlineName = courseOutlineName;
+    }
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
+    public ObeCourseOutlineEvaluationEnum getEvaluationMode() {
+        return evaluationMode;
+    }
+
+    public void setEvaluationMode(ObeCourseOutlineEvaluationEnum evaluationMode) {
+        this.evaluationMode = evaluationMode;
+    }
+
+    public ObeCourseOutlineCourseTypeEnum getCourseType() {
+        return courseType;
+    }
+
+    public void setCourseType(ObeCourseOutlineCourseTypeEnum courseType) {
+        this.courseType = courseType;
+    }
+}

+ 41 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/ObeCourseTargetExpectValueParam.java

@@ -0,0 +1,41 @@
+package com.qmth.teachcloud.obe.been.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description: 课程大纲目标权重设置参数
+ * @Author: CaoZixuan
+ * @Date: 2024-06-08
+ */
+public class ObeCourseTargetExpectValueParam {
+
+    @ApiModelProperty("课程大纲id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "缺少课程大纲id")
+    @Range(min = 1L, message = "缺少课程大纲id")
+    private Long obeCourseOutlineId;
+
+    @ApiModelProperty("预期值")
+    private Double expectValue;
+
+    public Long getObeCourseOutlineId() {
+        return obeCourseOutlineId;
+    }
+
+    public void setObeCourseOutlineId(Long obeCourseOutlineId) {
+        this.obeCourseOutlineId = obeCourseOutlineId;
+    }
+
+    public Double getExpectValue() {
+        return expectValue;
+    }
+
+    public void setExpectValue(Double expectValue) {
+        this.expectValue = expectValue;
+    }
+}

+ 95 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/ObeCourseTargetParam.java

@@ -0,0 +1,95 @@
+package com.qmth.teachcloud.obe.been.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.common.annotation.EditKey;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Length;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description: 课程目标参数
+ * @Author: CaoZixuan
+ * @Date: 2024-02-29
+ */
+public class ObeCourseTargetParam {
+
+    @ApiModelProperty("课程目标id(编辑必填)")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @EditKey
+    private Long id;
+
+    @ApiModelProperty("课程大纲id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "缺少课程大纲id")
+    @Range(min = 1L, message = "缺少课程大纲id")
+    private Long obeCourseOutlineId;
+
+    @ApiModelProperty("课程目标名称")
+    @NotNull(message = "请输入课程目标")
+    @Length(min = 1, message = "请输入课程目标")
+    private String targetName;
+
+    @ApiModelProperty("目标分解详情")
+    private String degreeRequirement;
+
+    @ApiModelProperty("指标点id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "缺少指标点id")
+    @Range(min = 1L, message = "缺少指标点id")
+    private Long obeCultureProgramRequirementId;
+
+    @ApiModelProperty("知识点id集合")
+    private List<Long> dimensionIdList;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getObeCourseOutlineId() {
+        return obeCourseOutlineId;
+    }
+
+    public void setObeCourseOutlineId(Long obeCourseOutlineId) {
+        this.obeCourseOutlineId = obeCourseOutlineId;
+    }
+
+    public String getTargetName() {
+        return targetName;
+    }
+
+    public void setTargetName(String targetName) {
+        this.targetName = targetName;
+    }
+
+    public String getDegreeRequirement() {
+        return degreeRequirement;
+    }
+
+    public void setDegreeRequirement(String degreeRequirement) {
+        this.degreeRequirement = degreeRequirement;
+    }
+
+    public Long getObeCultureProgramRequirementId() {
+        return obeCultureProgramRequirementId;
+    }
+
+    public void setObeCultureProgramRequirementId(Long obeCultureProgramRequirementId) {
+        this.obeCultureProgramRequirementId = obeCultureProgramRequirementId;
+    }
+
+    public List<Long> getDimensionIdList() {
+        return dimensionIdList;
+    }
+
+    public void setDimensionIdList(List<Long> dimensionIdList) {
+        this.dimensionIdList = dimensionIdList;
+    }
+}

+ 45 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/ObeCourseWeightParam.java

@@ -0,0 +1,45 @@
+package com.qmth.teachcloud.obe.been.params;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.been.dto.CourseWeightDto;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description: 课程权重设置参数
+ * @Author: CaoZixuan
+ * @Date: 2024-03-01
+ */
+public class ObeCourseWeightParam {
+
+    @ApiModelProperty("课程大纲id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    @NotNull(message = "缺少课程大纲id")
+    @Range(min = 1L, message = "缺少课程大纲id")
+    private Long obeCourseOutlineId;
+
+    @ApiModelProperty("课程权重表单")
+    @NotEmpty(message = "缺少权重设置表单")
+    private List<CourseWeightDto> submitForm;
+
+    public Long getObeCourseOutlineId() {
+        return obeCourseOutlineId;
+    }
+
+    public void setObeCourseOutlineId(Long obeCourseOutlineId) {
+        this.obeCourseOutlineId = obeCourseOutlineId;
+    }
+
+    public List<CourseWeightDto> getSubmitForm() {
+        return submitForm;
+    }
+
+    public void setSubmitForm(List<CourseWeightDto> submitForm) {
+        this.submitForm = submitForm;
+    }
+}

+ 28 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/cultureProgram/ObeCultureProgramCourseParam.java

@@ -0,0 +1,28 @@
+package com.qmth.teachcloud.obe.been.params.cultureProgram;
+
+import com.qmth.teachcloud.obe.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;
+    }
+}

+ 27 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/cultureProgram/ObeCultureProgramDescriptionParam.java

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

+ 26 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/params/cultureProgram/ObeRequirementTargetMatrixParam.java

@@ -0,0 +1,26 @@
+package com.qmth.teachcloud.obe.been.params.cultureProgram;
+
+import java.util.List;
+
+public class ObeRequirementTargetMatrixParam {
+
+    private Long cultureProgramId;
+
+    private List<Long> list;
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public List<Long> getList() {
+        return list;
+    }
+
+    public void setList(List<Long> list) {
+        this.list = list;
+    }
+}

+ 162 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/CourseTargetWebDto.java

@@ -0,0 +1,162 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.been.dto.CourseWeightDto;
+import io.swagger.annotations.ApiModelProperty;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description: 课程目标dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CourseTargetWebDto implements Serializable, Comparable<CourseTargetWebDto> {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程目标id")
+    private Long targetId;
+
+    @ApiModelProperty(value = "课程目标名称")
+    private String targetName;
+
+    @ApiModelProperty(value = "毕业要求")
+    private String graduationRequirement;
+
+    @ApiModelProperty(value = "毕业要求指标点")
+    private String graduationRequirementPoint;
+
+    @ApiModelProperty(value = "目标整体权重")
+    private BigDecimal targetSumWeight;
+
+    @ApiModelProperty(value = "知识点集合")
+    private List<DimensionDto> dimensionList;
+
+    @ApiModelProperty(value = "目标达成评价值")
+    private BigDecimal evaluationValue;
+
+    @ApiModelProperty(value = "评价方式集合")
+    private List<ReportEvaluationDto> evaluationList;
+
+    @ApiModelProperty(value = "知识点卷面总分")
+    private BigDecimal dimensionScoreSum = new BigDecimal(0);
+
+    @ApiModelProperty(value = "知识点集合")
+    private String dimensionPoint;
+
+    @ApiModelProperty(value = "小题卷面总分")
+    private BigDecimal finalScoreQuestionScoreSum = new BigDecimal(0);
+
+    public CourseTargetWebDto() {
+
+    }
+
+    public CourseTargetWebDto(CourseWeightDto courseWeightDto) {
+        this.targetId = courseWeightDto.getCourseTargetId();
+        this.targetName = courseWeightDto.getCourseTargetName();
+        this.graduationRequirement = courseWeightDto.getDegreeRequirement();
+        this.graduationRequirementPoint = courseWeightDto.getDimensionStr();
+        this.targetSumWeight = courseWeightDto.getTotalWeight();
+    }
+
+    public BigDecimal getDimensionScoreSum() {
+        return dimensionScoreSum;
+    }
+
+    public void setDimensionScoreSum(BigDecimal dimensionScoreSum) {
+        this.dimensionScoreSum = dimensionScoreSum;
+    }
+
+    public BigDecimal getFinalScoreQuestionScoreSum() {
+        return finalScoreQuestionScoreSum;
+    }
+
+    public void setFinalScoreQuestionScoreSum(BigDecimal finalScoreQuestionScoreSum) {
+        this.finalScoreQuestionScoreSum = finalScoreQuestionScoreSum;
+    }
+
+    public String getDimensionPoint() {
+        return dimensionPoint;
+    }
+
+    public void setDimensionPoint(String dimensionPoint) {
+        this.dimensionPoint = dimensionPoint;
+    }
+
+    public String getGraduationRequirementPoint() {
+        return graduationRequirementPoint;
+    }
+
+    public void setGraduationRequirementPoint(String graduationRequirementPoint) {
+        this.graduationRequirementPoint = graduationRequirementPoint;
+    }
+
+    public BigDecimal getTargetSumWeight() {
+        return targetSumWeight;
+    }
+
+    public void setTargetSumWeight(BigDecimal targetSumWeight) {
+        this.targetSumWeight = targetSumWeight;
+    }
+
+    public BigDecimal getEvaluationValue() {
+        return evaluationValue;
+    }
+
+    public void setEvaluationValue(BigDecimal evaluationValue) {
+        this.evaluationValue = evaluationValue;
+    }
+
+    public List<ReportEvaluationDto> getEvaluationList() {
+        return evaluationList;
+    }
+
+    public void setEvaluationList(List<ReportEvaluationDto> evaluationList) {
+        this.evaluationList = evaluationList;
+    }
+
+    public List<DimensionDto> getDimensionList() {
+        return dimensionList;
+    }
+
+    public void setDimensionList(List<DimensionDto> dimensionList) {
+        this.dimensionList = dimensionList;
+    }
+
+    public Long getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(Long targetId) {
+        this.targetId = targetId;
+    }
+
+    public String getTargetName() {
+        return targetName;
+    }
+
+    public void setTargetName(String targetName) {
+        this.targetName = targetName;
+    }
+
+    public String getGraduationRequirement() {
+        return graduationRequirement;
+    }
+
+    public void setGraduationRequirement(String graduationRequirement) {
+        this.graduationRequirement = graduationRequirement;
+    }
+
+    @Override
+    public int compareTo(@NotNull CourseTargetWebDto o) {
+        return this.getTargetId().compareTo(o.getTargetId());
+    }
+}

+ 196 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/CourseTargetWordDto.java

@@ -0,0 +1,196 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.been.dto.CourseWeightDto;
+import io.swagger.annotations.ApiModelProperty;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @Description: 课程目标word dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CourseTargetWordDto implements Serializable, Comparable<CourseTargetWordDto> {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程目标id")
+    private Long targetId;
+
+    @ApiModelProperty(value = "课程目标名称")
+    private String targetName;
+
+    @ApiModelProperty(value = "毕业要求")
+    private String graduationRequirement;
+
+    @ApiModelProperty(value = "毕业要求指标点")
+    private String graduationRequirementPoint;
+
+    @ApiModelProperty(value = "目标整体权重")
+    private BigDecimal targetSumWeight = new BigDecimal(0);
+
+    @ApiModelProperty(value = "换算平均分")
+    private BigDecimal matrixAvgScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "目标达成评价值")
+    private BigDecimal evaluationValue = new BigDecimal(0);
+
+    @ApiModelProperty(value = "平时成绩信息")
+    private UsualScoreWordDto usualScoreDto;
+
+    @ApiModelProperty(value = "期末成绩信息")
+    private FinalScoreWordDto finalScoreDto;
+
+    @ApiModelProperty(value = "知识点卷面总分")
+    private BigDecimal dimensionScoreSum = new BigDecimal(0);
+
+    @ApiModelProperty(value = "知识点集合")
+    private String dimensionPoint;
+
+    @ApiModelProperty(value = "期末成绩小题卷面总分")
+    private BigDecimal finalScoreQuestionScoreSum = new BigDecimal(0);
+
+    @ApiModelProperty("指标点名称")
+    private String obeCultureProgramRequirementName;
+
+    @ApiModelProperty("父指标点名称")
+    private String parentRequirementName;
+
+    public CourseTargetWordDto() {
+
+    }
+
+    public CourseTargetWordDto(CourseWeightDto courseWeightDto) {
+        this.targetId = courseWeightDto.getCourseTargetId();
+        this.targetName = courseWeightDto.getCourseTargetName();
+        this.graduationRequirement = courseWeightDto.getDegreeRequirement();
+        this.graduationRequirementPoint = courseWeightDto.getDimensionStr();
+        this.targetSumWeight = courseWeightDto.getTotalWeight();
+        this.obeCultureProgramRequirementName = courseWeightDto.getObeCultureProgramRequirementName();
+        this.parentRequirementName = courseWeightDto.getParentRequirementName();
+    }
+
+    public String getObeCultureProgramRequirementName() {
+        return obeCultureProgramRequirementName;
+    }
+
+    public void setObeCultureProgramRequirementName(String obeCultureProgramRequirementName) {
+        this.obeCultureProgramRequirementName = obeCultureProgramRequirementName;
+    }
+
+    public String getParentRequirementName() {
+        return parentRequirementName;
+    }
+
+    public void setParentRequirementName(String parentRequirementName) {
+        this.parentRequirementName = parentRequirementName;
+    }
+
+    public String getDimensionPoint() {
+        return dimensionPoint;
+    }
+
+    public void setDimensionPoint(String dimensionPoint) {
+        this.dimensionPoint = dimensionPoint;
+    }
+
+    public void setMatrixAvgScore(BigDecimal matrixAvgScore) {
+        this.matrixAvgScore = matrixAvgScore;
+    }
+
+    public BigDecimal getDimensionScoreSum() {
+        return dimensionScoreSum;
+    }
+
+    public void setDimensionScoreSum(BigDecimal dimensionScoreSum) {
+        this.dimensionScoreSum = dimensionScoreSum;
+    }
+
+    public BigDecimal getFinalScoreQuestionScoreSum() {
+        return finalScoreQuestionScoreSum;
+    }
+
+    public void setFinalScoreQuestionScoreSum(BigDecimal finalScoreQuestionScoreSum) {
+        this.finalScoreQuestionScoreSum = finalScoreQuestionScoreSum;
+    }
+
+    public BigDecimal getEvaluationValue() {
+        return evaluationValue;
+    }
+
+    public void setEvaluationValue(BigDecimal evaluationValue) {
+        this.evaluationValue = evaluationValue;
+    }
+
+    public String getGraduationRequirement() {
+        return graduationRequirement;
+    }
+
+    public void setGraduationRequirement(String graduationRequirement) {
+        this.graduationRequirement = graduationRequirement;
+    }
+
+    public String getGraduationRequirementPoint() {
+        return graduationRequirementPoint;
+    }
+
+    public void setGraduationRequirementPoint(String graduationRequirementPoint) {
+        this.graduationRequirementPoint = graduationRequirementPoint;
+    }
+
+    public BigDecimal getTargetSumWeight() {
+        return targetSumWeight;
+    }
+
+    public void setTargetSumWeight(BigDecimal targetSumWeight) {
+        this.targetSumWeight = targetSumWeight;
+    }
+
+    public Long getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(Long targetId) {
+        this.targetId = targetId;
+    }
+
+    public String getTargetName() {
+        return targetName;
+    }
+
+    public void setTargetName(String targetName) {
+        this.targetName = targetName;
+    }
+
+    public UsualScoreWordDto getUsualScoreDto() {
+        return usualScoreDto;
+    }
+
+    public void setUsualScoreDto(UsualScoreWordDto usualScoreDto) {
+        this.usualScoreDto = usualScoreDto;
+    }
+
+    public FinalScoreWordDto getFinalScoreDto() {
+        return finalScoreDto;
+    }
+
+    public void setFinalScoreDto(FinalScoreWordDto finalScoreDto) {
+        this.finalScoreDto = finalScoreDto;
+    }
+
+    public BigDecimal getMatrixAvgScore() {
+        return matrixAvgScore;
+    }
+
+    @Override
+    public int compareTo(@NotNull CourseTargetWordDto o) {
+        return this.getTargetId().compareTo(o.getTargetId());
+    }
+}

+ 136 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/DimensionDto.java

@@ -0,0 +1,136 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @Description: 课程知识点dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class DimensionDto implements Serializable, Comparable<DimensionDto> {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程目标id")
+    private Long targetId;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "知识点id")
+    private Long dimensionId;
+
+    @ApiModelProperty(value = "知识点编码")
+    private String dimensionCode;
+
+    @ApiModelProperty(value = "知识点名称")
+    private String dimensionName;
+
+    @ApiModelProperty(value = "知识点分数")
+    private BigDecimal dimensionScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "换算分数")
+    private BigDecimal dimensionMatrixScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "换算平均分")
+    private BigDecimal dimensionMatrixAvgScore = new BigDecimal(0);
+
+    public DimensionDto() {
+
+    }
+
+    public DimensionDto(DimensionDto dimensionDto) {
+        this.targetId = dimensionDto.getTargetId();
+        this.dimensionId = dimensionDto.getDimensionId();
+        this.dimensionCode = dimensionDto.getDimensionCode();
+        this.dimensionName = dimensionDto.getDimensionName();
+        this.dimensionScore = dimensionDto.getDimensionScore();
+        this.dimensionMatrixScore = dimensionDto.getDimensionMatrixScore();
+        this.dimensionMatrixAvgScore = dimensionDto.getDimensionMatrixAvgScore();
+    }
+
+    public DimensionDto(Long targetId, DimensionDto dimensionDto, BigDecimal dimensionScore) {
+        this.targetId = targetId;
+        this.dimensionId = dimensionDto.getDimensionId();
+        this.dimensionCode = dimensionDto.getDimensionCode();
+        this.dimensionName = dimensionDto.getDimensionName();
+        this.dimensionScore = dimensionScore;
+    }
+
+    public DimensionDto(Long targetId, DimensionDto dimensionDto, BigDecimal dimensionScore, BigDecimal dimensionMatrixScore) {
+        this.targetId = targetId;
+        this.dimensionId = dimensionDto.getDimensionId();
+        this.dimensionCode = dimensionDto.getDimensionCode();
+        this.dimensionName = dimensionDto.getDimensionName();
+        this.dimensionScore = dimensionScore;
+        this.dimensionMatrixScore = dimensionMatrixScore;
+    }
+
+    public BigDecimal getDimensionScore() {
+        return dimensionScore;
+    }
+
+    public void setDimensionScore(BigDecimal dimensionScore) {
+        this.dimensionScore = dimensionScore;
+    }
+
+    public BigDecimal getDimensionMatrixScore() {
+        return dimensionMatrixScore;
+    }
+
+    public void setDimensionMatrixScore(BigDecimal dimensionMatrixScore) {
+        this.dimensionMatrixScore = dimensionMatrixScore;
+    }
+
+    public BigDecimal getDimensionMatrixAvgScore() {
+        return dimensionMatrixAvgScore;
+    }
+
+    public void setDimensionMatrixAvgScore(BigDecimal dimensionMatrixAvgScore) {
+        this.dimensionMatrixAvgScore = dimensionMatrixAvgScore;
+    }
+
+    public Long getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(Long targetId) {
+        this.targetId = targetId;
+    }
+
+    public Long getDimensionId() {
+        return dimensionId;
+    }
+
+    public void setDimensionId(Long dimensionId) {
+        this.dimensionId = dimensionId;
+    }
+
+    public String getDimensionCode() {
+        return dimensionCode;
+    }
+
+    public void setDimensionCode(String dimensionCode) {
+        this.dimensionCode = dimensionCode;
+    }
+
+    public String getDimensionName() {
+        return dimensionName;
+    }
+
+    public void setDimensionName(String dimensionName) {
+        this.dimensionName = dimensionName;
+    }
+
+    @Override
+    public int compareTo(@NotNull DimensionDto o) {
+        return this.getDimensionCode().compareTo(o.getDimensionCode());
+    }
+}

+ 124 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/FinalScoreWordDto.java

@@ -0,0 +1,124 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.been.dto.CourseWeightDetailDto;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description: 期末成绩dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class FinalScoreWordDto implements Serializable {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程目标id")
+    private Long targetId;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "评价方式id")
+    private Long evaluationId;
+
+    @ApiModelProperty(value = "评价方式")
+    private String evaluation;
+
+    @ApiModelProperty(value = "评价方式描述")
+    private String evaluationDesc;
+
+    @ApiModelProperty(value = "期末成绩目标总分")
+    private BigDecimal finalScoreTargetSumScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "期末成绩目标整体权重")
+    private BigDecimal finalScoreSumWeight = new BigDecimal(0);
+
+    @ApiModelProperty(value = "期末成绩知识点分数")
+    private BigDecimal finalScoreDimensionScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "知识点集合")
+    private List<DimensionDto> dimensionList;
+
+    public FinalScoreWordDto() {
+
+    }
+
+    public FinalScoreWordDto(Long targetId, CourseWeightDetailDto courseWeightDetailDto) {
+        this.targetId = targetId;
+        this.evaluationId = courseWeightDetailDto.getEvaluationId();
+        this.evaluation = courseWeightDetailDto.getEvaluationName();
+        this.finalScoreSumWeight = courseWeightDetailDto.getWeight();
+        this.finalScoreTargetSumScore = courseWeightDetailDto.getTargetScore();
+    }
+
+    public Long getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(Long targetId) {
+        this.targetId = targetId;
+    }
+
+    public List<DimensionDto> getDimensionList() {
+        return dimensionList;
+    }
+
+    public void setDimensionList(List<DimensionDto> dimensionList) {
+        this.dimensionList = dimensionList;
+    }
+
+    public BigDecimal getFinalScoreTargetSumScore() {
+        return finalScoreTargetSumScore;
+    }
+
+    public void setFinalScoreTargetSumScore(BigDecimal finalScoreTargetSumScore) {
+        this.finalScoreTargetSumScore = finalScoreTargetSumScore;
+    }
+
+    public BigDecimal getFinalScoreSumWeight() {
+        return finalScoreSumWeight;
+    }
+
+    public void setFinalScoreSumWeight(BigDecimal finalScoreSumWeight) {
+        this.finalScoreSumWeight = finalScoreSumWeight;
+    }
+
+    public BigDecimal getFinalScoreDimensionScore() {
+        return finalScoreDimensionScore;
+    }
+
+    public void setFinalScoreDimensionScore(BigDecimal finalScoreDimensionScore) {
+        this.finalScoreDimensionScore = finalScoreDimensionScore;
+    }
+
+    public Long getEvaluationId() {
+        return evaluationId;
+    }
+
+    public void setEvaluationId(Long evaluationId) {
+        this.evaluationId = evaluationId;
+    }
+
+    public String getEvaluation() {
+        return evaluation;
+    }
+
+    public void setEvaluation(String evaluation) {
+        this.evaluation = evaluation;
+    }
+
+    public String getEvaluationDesc() {
+        return evaluationDesc;
+    }
+
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
+    }
+}

+ 99 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ObeCourseRequirementDto.java

@@ -0,0 +1,99 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.qmth.teachcloud.obe.been.obe.CourseRequirementMatrixDto;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: obe课程毕业指标dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/6/12
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ObeCourseRequirementDto implements Serializable {
+
+    @ApiModelProperty(value = "课程编码")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "学期")
+    private String semesterName;
+
+    @ApiModelProperty(value = "课程毕业指标达成值")
+    private BigDecimal matrixDegree;
+
+    @ApiModelProperty(value = "课程毕业指标集合")
+    private List<ObeRequirementDto> obeRequirements;
+
+    public ObeCourseRequirementDto() {
+
+    }
+
+    public ObeCourseRequirementDto(CourseRequirementMatrixDto courseRequirementMatrixDto) {
+        this.courseCode = courseRequirementMatrixDto.getCourseCode();
+        this.courseName = courseRequirementMatrixDto.getCourseName();
+        this.semesterName = courseRequirementMatrixDto.getSemesterName();
+    }
+
+    public ObeCourseRequirementDto(ObeCourseRequirementDto obeCourseRequirementDto) {
+        this.courseCode = obeCourseRequirementDto.getCourseCode();
+        this.courseName = obeCourseRequirementDto.getCourseName();
+        this.semesterName = obeCourseRequirementDto.getSemesterName();
+        this.matrixDegree = obeCourseRequirementDto.getMatrixDegree();
+        this.obeRequirements = obeCourseRequirementDto.getObeRequirements().stream().map(ObeRequirementDto::new).collect(Collectors.toList());
+    }
+
+    public void updateInfo() {
+        this.courseCode = null;
+        this.courseName = null;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    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 BigDecimal getMatrixDegree() {
+        return matrixDegree;
+    }
+
+    public void setMatrixDegree(BigDecimal matrixDegree) {
+        this.matrixDegree = matrixDegree;
+    }
+
+    public List<ObeRequirementDto> getObeRequirements() {
+        return obeRequirements;
+    }
+
+    public void setObeRequirements(List<ObeRequirementDto> obeRequirements) {
+        this.obeRequirements = obeRequirements;
+    }
+}

+ 63 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ObeRequirementDto.java

@@ -0,0 +1,63 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.qmth.teachcloud.obe.been.obe.MatrixRequirementDto;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: obe毕业指标dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/6/12
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ObeRequirementDto extends MatrixRequirementDto implements Serializable {
+
+    @ApiModelProperty(value = "毕业指标达成值")
+    private BigDecimal matrixDegree;
+
+    @ApiModelProperty(value = "毕业指标点集合")
+    private List<ObeSubRequirementsDto> obeSubRequirements;
+
+    public ObeRequirementDto() {
+
+    }
+
+    public ObeRequirementDto(ObeRequirementDto obeRequirementDto) {
+        setId(obeRequirementDto.getId());
+        setName(obeRequirementDto.getName());
+        setContent(obeRequirementDto.getContent());
+        setExpectValue(obeRequirementDto.getExpectValue());
+        this.matrixDegree = obeRequirementDto.getMatrixDegree();
+        this.obeSubRequirements = obeRequirementDto.getObeSubRequirements().stream().map(ObeSubRequirementsDto::new).collect(Collectors.toList());
+    }
+
+    public ObeRequirementDto(MatrixRequirementDto matrixRequirementDto) {
+        setId(matrixRequirementDto.getId());
+        setName(matrixRequirementDto.getName());
+        setContent(matrixRequirementDto.getContent());
+        setExpectValue(matrixRequirementDto.getExpectValue());
+    }
+
+    public BigDecimal getMatrixDegree() {
+        return matrixDegree;
+    }
+
+    public void setMatrixDegree(BigDecimal matrixDegree) {
+        this.matrixDegree = matrixDegree;
+    }
+
+    public List<ObeSubRequirementsDto> getObeSubRequirements() {
+        return obeSubRequirements;
+    }
+
+    public void setObeSubRequirements(List<ObeSubRequirementsDto> obeSubRequirements) {
+        this.obeSubRequirements = obeSubRequirements;
+    }
+}

+ 142 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ObeSubRequirementsDto.java

@@ -0,0 +1,142 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.been.obe.MatrixSubRequirementDto;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Objects;
+
+/**
+ * @Description: obe毕业指标点dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ObeSubRequirementsDto extends CourseTargetWebDto {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "毕业指标点父id")
+    private Long id;
+
+    @ApiModelProperty(value = "毕业指标点名称")
+    private String name;
+
+    @ApiModelProperty(value = "权重")
+    private BigDecimal scale;
+
+    @ApiModelProperty(value = "描述")
+    private String content;
+
+    @ApiModelProperty(value = "毕业指标点id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long subRequirementId;
+
+    @ApiModelProperty(value = "毕业指标点达成值")
+    private BigDecimal matrixDegree;
+
+    public ObeSubRequirementsDto() {
+
+    }
+
+    public ObeSubRequirementsDto(ObeSubRequirementsDto obeSubRequirementsDto) {
+        this.id = obeSubRequirementsDto.getId();
+        this.name = obeSubRequirementsDto.getName();
+        this.scale = obeSubRequirementsDto.getScale();
+        this.content = obeSubRequirementsDto.getContent();
+        this.subRequirementId = obeSubRequirementsDto.getSubRequirementId();
+        this.matrixDegree = obeSubRequirementsDto.getMatrixDegree();
+        setTargetId(obeSubRequirementsDto.getTargetId());
+        setTargetName(obeSubRequirementsDto.getTargetName());
+        setGraduationRequirement(obeSubRequirementsDto.getGraduationRequirement());
+        setGraduationRequirementPoint(obeSubRequirementsDto.getGraduationRequirementPoint());
+        setTargetSumWeight(obeSubRequirementsDto.getTargetSumWeight());
+        setDimensionList(obeSubRequirementsDto.getDimensionList());
+        setEvaluationValue(obeSubRequirementsDto.getEvaluationValue());
+        setEvaluationList(obeSubRequirementsDto.getEvaluationList());
+        setDimensionScoreSum(obeSubRequirementsDto.getDimensionScoreSum());
+        setDimensionPoint(obeSubRequirementsDto.getDimensionPoint());
+        setFinalScoreQuestionScoreSum(obeSubRequirementsDto.getFinalScoreQuestionScoreSum());
+    }
+
+    public ObeSubRequirementsDto(CourseTargetWebDto courseTargetWebDto, MatrixSubRequirementDto matrixSubRequirementDto) {
+        this.id = matrixSubRequirementDto.getId();
+        this.name = matrixSubRequirementDto.getName();
+        this.scale = matrixSubRequirementDto.getScale();
+        this.content = matrixSubRequirementDto.getContent();
+        this.subRequirementId = matrixSubRequirementDto.getSubRequirementId();
+        if (Objects.nonNull(courseTargetWebDto)) {
+            setTargetId(courseTargetWebDto.getTargetId());
+            setTargetName(courseTargetWebDto.getTargetName());
+            setGraduationRequirement(courseTargetWebDto.getGraduationRequirement());
+            setGraduationRequirementPoint(courseTargetWebDto.getGraduationRequirementPoint());
+            setTargetSumWeight(courseTargetWebDto.getTargetSumWeight());
+            setDimensionList(courseTargetWebDto.getDimensionList());
+            setEvaluationValue(courseTargetWebDto.getEvaluationValue());
+            setEvaluationList(courseTargetWebDto.getEvaluationList());
+            setDimensionScoreSum(courseTargetWebDto.getDimensionScoreSum());
+            setDimensionPoint(courseTargetWebDto.getDimensionPoint());
+            setFinalScoreQuestionScoreSum(courseTargetWebDto.getFinalScoreQuestionScoreSum());
+        }
+    }
+
+    public ObeSubRequirementsDto(MatrixSubRequirementDto matrixSubRequirementDto) {
+        this.id = matrixSubRequirementDto.getId();
+        this.name = matrixSubRequirementDto.getName();
+        this.scale = matrixSubRequirementDto.getScale();
+        this.content = matrixSubRequirementDto.getContent();
+        this.subRequirementId = matrixSubRequirementDto.getSubRequirementId();
+    }
+
+    public Long getSubRequirementId() {
+        return subRequirementId;
+    }
+
+    public void setSubRequirementId(Long subRequirementId) {
+        this.subRequirementId = subRequirementId;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public BigDecimal getScale() {
+        return scale;
+    }
+
+    public void setScale(BigDecimal scale) {
+        this.scale = scale;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public BigDecimal getMatrixDegree() {
+        return matrixDegree;
+    }
+
+    public void setMatrixDegree(BigDecimal matrixDegree) {
+        this.matrixDegree = matrixDegree;
+    }
+}

+ 73 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportCommonDto.java

@@ -0,0 +1,73 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 报告公共dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+public class ReportCommonDto implements Serializable {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "考试id")
+    private Long examId;
+
+    @ApiModelProperty(value = "课程编码")
+    private String courseCode;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "试卷编码")
+    private String paperNumber;
+
+    public ReportCommonDto() {
+
+    }
+
+    public ReportCommonDto(Long examId, String courseCode, String courseName, String paperNumber) {
+        this.examId = examId;
+        this.courseCode = courseCode;
+        this.courseName = courseName;
+        this.paperNumber = paperNumber;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    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 String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+}

+ 204 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportCourseBasicInfoDto.java

@@ -0,0 +1,204 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.qmth.teachcloud.obe.entity.TRBasicInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @Description: 报告课程基本情况dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+public class ReportCourseBasicInfoDto implements Serializable {
+
+    @ApiModelProperty(value = "课程性质")
+    private String courseType;
+
+    @ApiModelProperty(value = "学分")
+    private String credit;
+
+    @ApiModelProperty(value = "学时")
+    private String period;
+
+    @ApiModelProperty(value = "考核方式")
+    private String evaluationMode;
+
+    @ApiModelProperty(value = "开课时间")
+    private String openTime;
+
+    @ApiModelProperty(value = "授课对象")
+    private String teachingObject;
+
+    @ApiModelProperty(value = "选课人数")
+    private Integer selectionCount;
+
+    @ApiModelProperty(value = "参评人数")
+    private Integer participantCount;
+
+    @ApiModelProperty(value = "课程目标达成度期望值")
+    private BigDecimal courseDegree = new BigDecimal(0);
+
+    @ApiModelProperty(value = "任课老师")
+    private String teacher;
+
+    @ApiModelProperty(value = "评价责任人")
+    private String director;
+
+    @ApiModelProperty(value = "评价参与人")
+    private String participant;
+
+    @ApiModelProperty(value = "开课专业")
+    private String profession;
+
+    @ApiModelProperty(value = "开课学院")
+    private String college;
+
+    @ApiModelProperty(name = "课程英文名称")
+    private String courseEnName;
+
+    public ReportCourseBasicInfoDto() {
+
+    }
+
+    public ReportCourseBasicInfoDto(TRBasicInfo trBasicInfo) {
+        this.courseType = trBasicInfo.getCourseType();
+        this.credit = trBasicInfo.getCredit();
+        this.period = trBasicInfo.getPeriod();
+        this.evaluationMode = trBasicInfo.getEvaluationMode();
+        this.openTime = trBasicInfo.getOpenTime();
+        this.teachingObject = trBasicInfo.getTeachingObject();
+        this.selectionCount = trBasicInfo.getSelectionCount();
+        this.participantCount = trBasicInfo.getParticipantCount();
+        this.courseDegree = trBasicInfo.getCourseDegree();
+        this.teacher = trBasicInfo.getTeacher();
+        this.director = trBasicInfo.getDirector();
+        this.participant = trBasicInfo.getParticipant();
+        this.profession = trBasicInfo.getProfession();
+        this.college = trBasicInfo.getCollege();
+        this.courseEnName = trBasicInfo.getCourseEnName();
+    }
+
+    public String getCollege() {
+        return college;
+    }
+
+    public void setCollege(String college) {
+        this.college = college;
+    }
+
+    public String getCourseEnName() {
+        return courseEnName;
+    }
+
+    public void setCourseEnName(String courseEnName) {
+        this.courseEnName = courseEnName;
+    }
+
+    public String getProfession() {
+        return profession;
+    }
+
+    public void setProfession(String profession) {
+        this.profession = profession;
+    }
+
+    public String getCredit() {
+        return credit;
+    }
+
+    public void setCredit(String credit) {
+        this.credit = credit;
+    }
+
+    public String getPeriod() {
+        return period;
+    }
+
+    public void setPeriod(String period) {
+        this.period = period;
+    }
+
+    public String getCourseType() {
+        return courseType;
+    }
+
+    public void setCourseType(String courseType) {
+        this.courseType = courseType;
+    }
+
+    public String getEvaluationMode() {
+        return evaluationMode;
+    }
+
+    public void setEvaluationMode(String evaluationMode) {
+        this.evaluationMode = evaluationMode;
+    }
+
+    public String getOpenTime() {
+        return openTime;
+    }
+
+    public void setOpenTime(String openTime) {
+        this.openTime = openTime;
+    }
+
+    public String getTeachingObject() {
+        return teachingObject;
+    }
+
+    public void setTeachingObject(String teachingObject) {
+        this.teachingObject = teachingObject;
+    }
+
+    public Integer getSelectionCount() {
+        return selectionCount;
+    }
+
+    public void setSelectionCount(Integer selectionCount) {
+        this.selectionCount = selectionCount;
+    }
+
+    public Integer getParticipantCount() {
+        return participantCount;
+    }
+
+    public void setParticipantCount(Integer participantCount) {
+        this.participantCount = participantCount;
+    }
+
+    public BigDecimal getCourseDegree() {
+        return courseDegree;
+    }
+
+    public void setCourseDegree(BigDecimal courseDegree) {
+        this.courseDegree = courseDegree;
+    }
+
+    public String getTeacher() {
+        return teacher;
+    }
+
+    public void setTeacher(String teacher) {
+        this.teacher = teacher;
+    }
+
+    public String getDirector() {
+        return director;
+    }
+
+    public void setDirector(String director) {
+        this.director = director;
+    }
+
+    public String getParticipant() {
+        return participant;
+    }
+
+    public void setParticipant(String participant) {
+        this.participant = participant;
+    }
+}

+ 51 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportCourseEvaluationResultDetailDto.java

@@ -0,0 +1,51 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: 报告课程考核成绩评价明细结果dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+public class ReportCourseEvaluationResultDetailDto implements Serializable {
+
+    @ApiModelProperty(value = "考生集合")
+    private List<ReportExamStudentDto> examStudentList;
+
+//    @ApiModelProperty(value = "课程目标达成评价值图")
+//    private List<ReportCourseTargetViewDto> courseTargetList;
+
+    public ReportCourseEvaluationResultDetailDto() {
+
+    }
+
+    public ReportCourseEvaluationResultDetailDto(List<ReportExamStudentDto> examStudentList) {
+        this.examStudentList = examStudentList;
+    }
+
+//    public ReportCourseEvaluationResultDetailDto(List<ReportExamStudentDto> examStudentList, List<ReportCourseTargetViewDto> courseTargetList) {
+//        this.examStudentList = examStudentList;
+//        this.courseTargetList = courseTargetList;
+//    }
+
+    public List<ReportExamStudentDto> getExamStudentList() {
+        return examStudentList;
+    }
+
+    public void setExamStudentList(List<ReportExamStudentDto> examStudentList) {
+        this.examStudentList = examStudentList;
+    }
+
+//    public List<ReportCourseTargetViewDto> getCourseTargetList() {
+//        return courseTargetList;
+//    }
+//
+//    public void setCourseTargetList(List<ReportCourseTargetViewDto> courseTargetList) {
+//        this.courseTargetList = courseTargetList;
+//    }
+}

+ 63 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportCourseEvaluationResultDto.java

@@ -0,0 +1,63 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description: 报告课程考核成绩评价结果dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+public class ReportCourseEvaluationResultDto implements Serializable {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "权重变化id")
+    private Long weightSettingSign;
+
+    @ApiModelProperty(value = "课程目标总达成评价值")
+    private BigDecimal targetEvaluationSumValue = new BigDecimal(0);
+
+    @ApiModelProperty(value = "课程目标集合")
+    private List<CourseTargetWebDto> targetList;
+
+    public ReportCourseEvaluationResultDto() {
+
+    }
+
+    public ReportCourseEvaluationResultDto(BigDecimal targetEvaluationSumValue, List<CourseTargetWebDto> targetList, Long weightSettingSign) {
+        this.targetEvaluationSumValue = targetEvaluationSumValue;
+        this.targetList = targetList;
+        this.weightSettingSign = weightSettingSign;
+    }
+
+    public BigDecimal getTargetEvaluationSumValue() {
+        return targetEvaluationSumValue;
+    }
+
+    public void setTargetEvaluationSumValue(BigDecimal targetEvaluationSumValue) {
+        this.targetEvaluationSumValue = targetEvaluationSumValue;
+    }
+
+    public List<CourseTargetWebDto> getTargetList() {
+        return targetList;
+    }
+
+    public void setTargetList(List<CourseTargetWebDto> targetList) {
+        this.targetList = targetList;
+    }
+
+    public Long getWeightSettingSign() {
+        return weightSettingSign;
+    }
+
+    public void setWeightSettingSign(Long weightSettingSign) {
+        this.weightSettingSign = weightSettingSign;
+    }
+}

+ 52 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportCourseEvaluationSpreadDto.java

@@ -0,0 +1,52 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.qmth.teachcloud.obe.been.result.report.PaperStructDimensionResult;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @Description: 报告课程目标考核分布dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+public class ReportCourseEvaluationSpreadDto implements Serializable {
+
+    @ApiModelProperty(value = "题目信息集合")
+    private List<PaperStructDimensionResult> questionInfo;
+
+    @ApiModelProperty(value = "分数图")
+    private ReportScoreViewDto scoreList;
+
+    public ReportCourseEvaluationSpreadDto() {
+
+    }
+
+    public ReportCourseEvaluationSpreadDto(List<PaperStructDimensionResult> questionInfo) {
+        this.questionInfo = questionInfo;
+    }
+
+    public ReportCourseEvaluationSpreadDto(List<PaperStructDimensionResult> questionInfo, ReportScoreViewDto scoreList) {
+        this.questionInfo = questionInfo;
+        this.scoreList = scoreList;
+    }
+
+    public List<PaperStructDimensionResult> getQuestionInfo() {
+        return questionInfo;
+    }
+
+    public void setQuestionInfo(List<PaperStructDimensionResult> questionInfo) {
+        this.questionInfo = questionInfo;
+    }
+
+    public ReportScoreViewDto getScoreList() {
+        return scoreList;
+    }
+
+    public void setScoreList(ReportScoreViewDto scoreList) {
+        this.scoreList = scoreList;
+    }
+}

+ 131 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportEvaluationDto.java

@@ -0,0 +1,131 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.been.dto.CourseWeightDetailDto;
+import io.swagger.annotations.ApiModelProperty;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @Description: 报告评价方式dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ReportEvaluationDto implements Serializable, Comparable<ReportEvaluationDto> {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程目标id")
+    private Long targetId;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "评价方式id")
+    private Long evaluationId;
+
+    @ApiModelProperty(value = "评价方式")
+    private String evaluation;
+
+    @ApiModelProperty(value = "评价方式描述")
+    private String evaluationDesc;
+
+    @ApiModelProperty(value = "权重")
+    private BigDecimal targetWeight = new BigDecimal(0);
+
+    @ApiModelProperty(value = "目标分值")
+    private BigDecimal targetScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "换算平均分")
+    private BigDecimal targetAvgScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "卷面分")
+    private BigDecimal score = new BigDecimal(0);
+
+    public ReportEvaluationDto() {
+
+    }
+
+    public ReportEvaluationDto(Long targetId, CourseWeightDetailDto courseWeightDetailDto, BigDecimal score) {
+        this.targetId = targetId;
+        this.evaluationId = courseWeightDetailDto.getEvaluationId();
+        this.evaluation = courseWeightDetailDto.getEvaluationName();
+        this.evaluationDesc = courseWeightDetailDto.getEvaluationDesc();
+        this.targetWeight = courseWeightDetailDto.getWeight();
+        this.targetScore = courseWeightDetailDto.getTargetScore();
+        this.score = score;
+    }
+
+    public BigDecimal getTargetAvgScore() {
+        return targetAvgScore;
+    }
+
+    public void setTargetAvgScore(BigDecimal targetAvgScore) {
+        this.targetAvgScore = targetAvgScore;
+    }
+
+    public BigDecimal getScore() {
+        return score;
+    }
+
+    public void setScore(BigDecimal score) {
+        this.score = score;
+    }
+
+    public Long getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(Long targetId) {
+        this.targetId = targetId;
+    }
+
+    public Long getEvaluationId() {
+        return evaluationId;
+    }
+
+    public void setEvaluationId(Long evaluationId) {
+        this.evaluationId = evaluationId;
+    }
+
+    public String getEvaluation() {
+        return evaluation;
+    }
+
+    public void setEvaluation(String evaluation) {
+        this.evaluation = evaluation;
+    }
+
+    public String getEvaluationDesc() {
+        return evaluationDesc;
+    }
+
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
+    }
+
+    public BigDecimal getTargetWeight() {
+        return targetWeight;
+    }
+
+    public void setTargetWeight(BigDecimal targetWeight) {
+        this.targetWeight = targetWeight;
+    }
+
+    public BigDecimal getTargetScore() {
+        return targetScore;
+    }
+
+    public void setTargetScore(BigDecimal targetScore) {
+        this.targetScore = targetScore;
+    }
+
+    @Override
+    public int compareTo(@NotNull ReportEvaluationDto o) {
+        return this.getEvaluation().compareTo(o.getEvaluation());
+    }
+}

+ 103 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportExamStudentDto.java

@@ -0,0 +1,103 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.google.gson.reflect.TypeToken;
+import com.qmth.teachcloud.common.util.GsonUtil;
+import com.qmth.teachcloud.obe.been.result.FinalScoreResult;
+import com.qmth.teachcloud.obe.entity.TRExamStudent;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description: 报告课程考核成绩评价明细结果-考生dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+public class ReportExamStudentDto implements Serializable {
+
+    @ApiModelProperty(value = "考生姓名")
+    private String name;
+
+    @ApiModelProperty(value = "学号")
+    private String studentCode;
+
+    @ApiModelProperty(value = "行政班级")
+    private String administrativeClass;
+
+    @ApiModelProperty(value = "综合成绩")
+    private BigDecimal score = new BigDecimal(0);
+
+    @ApiModelProperty(value = "课程目标集合")
+    private List<ReportExamStudentTargetDto> targetList;
+
+    public ReportExamStudentDto() {
+
+    }
+
+    public ReportExamStudentDto(TRExamStudent trExamStudent) {
+        this.name = trExamStudent.getName();
+        this.studentCode = trExamStudent.getStudentCode();
+        this.administrativeClass = trExamStudent.getAdministrativeClass();
+        this.score = trExamStudent.getScore();
+        this.targetList = GsonUtil.fromJson(trExamStudent.getResultDetail(), new TypeToken<List<ReportExamStudentTargetDto>>() {
+        }.getType());
+    }
+
+    public ReportExamStudentDto(String name, String studentCode, String administrativeClass, BigDecimal score, List<ReportExamStudentTargetDto> targetList) {
+        this.name = name;
+        this.studentCode = studentCode;
+        this.administrativeClass = administrativeClass;
+        this.score = score;
+        this.targetList = targetList;
+    }
+
+    public ReportExamStudentDto(FinalScoreResult finalScoreResult) {
+        this.name = finalScoreResult.getName();
+        this.studentCode = finalScoreResult.getStudentCode();
+        this.administrativeClass = finalScoreResult.getAdministrativeClass();
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getAdministrativeClass() {
+        return administrativeClass;
+    }
+
+    public void setAdministrativeClass(String administrativeClass) {
+        this.administrativeClass = administrativeClass;
+    }
+
+    public BigDecimal getScore() {
+        return score;
+    }
+
+    public void setScore(BigDecimal score) {
+        this.score = score;
+    }
+
+    public List<ReportExamStudentTargetDto> getTargetList() {
+        return targetList;
+    }
+
+    public void setTargetList(List<ReportExamStudentTargetDto> targetList) {
+        this.targetList = targetList;
+    }
+}

+ 191 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportExamStudentFinalScoreDto.java

@@ -0,0 +1,191 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description: 报告课程考核成绩评价明细结果-考生-期末成绩dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ReportExamStudentFinalScoreDto implements Serializable {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "评价方式id")
+    private Long evaluationId;
+
+    @ApiModelProperty(value = "评价方式")
+    private String evaluation;
+
+    @ApiModelProperty(value = "评价方式描述")
+    private String evaluationDesc;
+
+    @ApiModelProperty(value = "权重")
+    private BigDecimal targetWeight = new BigDecimal(0);
+
+    @ApiModelProperty(value = "目标分值")
+    private BigDecimal targetScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "课程目标知识点转换总分")
+    private BigDecimal targetDimensionMatrixSumScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "课程目标集合")
+    private List<DimensionDto> dimensionList;
+
+    @ApiModelProperty(value = "课程目标考核要素的平均分")
+    private BigDecimal matrixAvgScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "知识点卷面总分")
+    private BigDecimal dimensionScoreSum = new BigDecimal(0);
+
+    @ApiModelProperty(value = "课程卷面总分")
+    private BigDecimal targetScoreSum = new BigDecimal(0);
+
+    @ApiModelProperty(value = "课程目标转换总分")
+    private BigDecimal targetMatrixSumScore = new BigDecimal(0);
+
+    public ReportExamStudentFinalScoreDto() {
+
+    }
+
+//    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, List<DimensionDto> dimensionList, Double dimensionScoreSum) {
+//        this.evaluationId = finalScoreWordDto.getEvaluationId();
+//        this.evaluation = finalScoreWordDto.getEvaluation();
+//        this.evaluationDesc = finalScoreWordDto.getEvaluationDesc();
+//        this.targetWeight = finalScoreWordDto.getFinalScoreSumWeight();
+//        this.targetScore = finalScoreWordDto.getFinalScoreTargetSumScore();
+//        this.dimensionList = dimensionList;
+//        this.dimensionScoreSum = dimensionScoreSum;
+//    }
+//
+//    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, List<DimensionDto> dimensionList, Double targetDimensionMatrixSumScore, Double dimensionScoreSum) {
+//        this.evaluationId = finalScoreWordDto.getEvaluationId();
+//        this.evaluation = finalScoreWordDto.getEvaluation();
+//        this.evaluationDesc = finalScoreWordDto.getEvaluationDesc();
+//        this.targetWeight = finalScoreWordDto.getFinalScoreSumWeight();
+//        this.targetScore = finalScoreWordDto.getFinalScoreTargetSumScore();
+//        this.dimensionList = dimensionList;
+//        this.targetDimensionMatrixSumScore = targetDimensionMatrixSumScore;
+//        this.dimensionScoreSum = dimensionScoreSum;
+//    }
+
+    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, BigDecimal targetScoreSum) {
+        this.evaluationId = finalScoreWordDto.getEvaluationId();
+        this.evaluation = finalScoreWordDto.getEvaluation();
+        this.evaluationDesc = finalScoreWordDto.getEvaluationDesc();
+        this.targetWeight = finalScoreWordDto.getFinalScoreSumWeight();
+        this.targetScore = finalScoreWordDto.getFinalScoreTargetSumScore();
+        this.targetScoreSum = targetScoreSum;
+    }
+
+    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, BigDecimal targetMatrixSumScore, BigDecimal targetScoreSum) {
+        this.evaluationId = finalScoreWordDto.getEvaluationId();
+        this.evaluation = finalScoreWordDto.getEvaluation();
+        this.evaluationDesc = finalScoreWordDto.getEvaluationDesc();
+        this.targetWeight = finalScoreWordDto.getFinalScoreSumWeight();
+        this.targetScore = finalScoreWordDto.getFinalScoreTargetSumScore();
+        this.targetMatrixSumScore = targetMatrixSumScore;
+        this.targetScoreSum = targetScoreSum;
+    }
+
+    public BigDecimal getTargetDimensionMatrixSumScore() {
+        return targetDimensionMatrixSumScore;
+    }
+
+    public void setTargetDimensionMatrixSumScore(BigDecimal targetDimensionMatrixSumScore) {
+        this.targetDimensionMatrixSumScore = targetDimensionMatrixSumScore;
+    }
+
+    public BigDecimal getMatrixAvgScore() {
+        return matrixAvgScore;
+    }
+
+    public void setMatrixAvgScore(BigDecimal matrixAvgScore) {
+        this.matrixAvgScore = matrixAvgScore;
+    }
+
+    public BigDecimal getDimensionScoreSum() {
+        return dimensionScoreSum;
+    }
+
+    public void setDimensionScoreSum(BigDecimal dimensionScoreSum) {
+        this.dimensionScoreSum = dimensionScoreSum;
+    }
+
+    public BigDecimal getTargetScoreSum() {
+        return targetScoreSum;
+    }
+
+    public void setTargetScoreSum(BigDecimal targetScoreSum) {
+        this.targetScoreSum = targetScoreSum;
+    }
+
+    public BigDecimal getTargetMatrixSumScore() {
+        return targetMatrixSumScore;
+    }
+
+    public void setTargetMatrixSumScore(BigDecimal targetMatrixSumScore) {
+        this.targetMatrixSumScore = targetMatrixSumScore;
+    }
+
+    public Long getEvaluationId() {
+        return evaluationId;
+    }
+
+    public void setEvaluationId(Long evaluationId) {
+        this.evaluationId = evaluationId;
+    }
+
+    public String getEvaluation() {
+        return evaluation;
+    }
+
+    public void setEvaluation(String evaluation) {
+        this.evaluation = evaluation;
+    }
+
+    public String getEvaluationDesc() {
+        return evaluationDesc;
+    }
+
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
+    }
+
+    public ReportExamStudentFinalScoreDto(List<DimensionDto> dimensionList) {
+        this.dimensionList = dimensionList;
+    }
+
+    public BigDecimal getTargetWeight() {
+        return targetWeight;
+    }
+
+    public void setTargetWeight(BigDecimal targetWeight) {
+        this.targetWeight = targetWeight;
+    }
+
+    public BigDecimal getTargetScore() {
+        return targetScore;
+    }
+
+    public void setTargetScore(BigDecimal targetScore) {
+        this.targetScore = targetScore;
+    }
+
+    public List<DimensionDto> getDimensionList() {
+        return dimensionList;
+    }
+
+    public void setDimensionList(List<DimensionDto> dimensionList) {
+        this.dimensionList = dimensionList;
+    }
+}

+ 157 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportExamStudentTargetDto.java

@@ -0,0 +1,157 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @Description: 报告课程考核成绩评价明细结果-考生-目标dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ReportExamStudentTargetDto implements Serializable, Comparable<ReportExamStudentTargetDto> {
+
+    @ApiModelProperty(value = "课程目标id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long targetId;
+
+    @ApiModelProperty(value = "课程目标名称")
+    private String targetName;
+
+    @ApiModelProperty(value = "毕业要求")
+    private String graduationRequirement;
+
+    @ApiModelProperty(value = "目标整体权重")
+    private BigDecimal targetSumWeight = new BigDecimal(0);
+
+    @ApiModelProperty(value = "目标达成评价值")
+    private BigDecimal evaluationValue = new BigDecimal(0);
+
+    @ApiModelProperty(value = "各课程目标平均分")
+    private BigDecimal targetMatrixAvgScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "个人达成度")
+    private BigDecimal matrixDegree = new BigDecimal(0);
+
+    @ApiModelProperty(value = "期末成绩")
+    private ReportExamStudentFinalScoreDto finalScore;
+
+    @ApiModelProperty(value = "平时成绩")
+    private ReportExamStudentUsualScoreDto usualScore;
+
+    public ReportExamStudentTargetDto() {
+
+    }
+
+    public ReportExamStudentTargetDto(CourseTargetWordDto courseTargetWordDto, ReportExamStudentFinalScoreDto finalScore, ReportExamStudentUsualScoreDto usualScore, BigDecimal matrixDegree) {
+        this.targetId = courseTargetWordDto.getTargetId();
+        this.targetName = courseTargetWordDto.getTargetName();
+        this.graduationRequirement = courseTargetWordDto.getGraduationRequirement();
+        this.targetSumWeight = courseTargetWordDto.getTargetSumWeight();
+        this.finalScore = finalScore;
+        this.usualScore = usualScore;
+        this.matrixDegree = matrixDegree;
+    }
+
+//    public ReportExamStudentTargetDto(ReportExamStudentTargetDto reportExamStudentTargetDto) {
+//        this.targetId = reportExamStudentTargetDto.getTargetId();
+//        this.targetName = reportExamStudentTargetDto.getTargetName();
+//        this.graduationRequirement = reportExamStudentTargetDto.getGraduationRequirement();
+//        this.evaluationValue = reportExamStudentTargetDto.getEvaluationValue();
+//        this.targetMatrixAvgScore = reportExamStudentTargetDto.getTargetMatrixAvgScore();
+//        this.targetSumWeight = reportExamStudentTargetDto.getTargetSumWeight();
+//        this.finalScore = reportExamStudentTargetDto.getFinalScore();
+//        this.usualScore = reportExamStudentTargetDto.getUsualScore();
+//    }
+
+    public BigDecimal getMatrixDegree() {
+        return matrixDegree;
+    }
+
+    public void setMatrixDegree(BigDecimal matrixDegree) {
+        this.matrixDegree = matrixDegree;
+    }
+
+    public BigDecimal getTargetMatrixAvgScore() {
+        return targetMatrixAvgScore;
+    }
+
+    public void setTargetMatrixAvgScore(BigDecimal targetMatrixAvgScore) {
+        this.targetMatrixAvgScore = targetMatrixAvgScore;
+    }
+
+    public Long getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(Long targetId) {
+        this.targetId = targetId;
+    }
+
+    public String getTargetName() {
+        return targetName;
+    }
+
+    public void setTargetName(String targetName) {
+        this.targetName = targetName;
+    }
+
+    public ReportExamStudentFinalScoreDto getFinalScore() {
+        return finalScore;
+    }
+
+    public void setFinalScore(ReportExamStudentFinalScoreDto finalScore) {
+        this.finalScore = finalScore;
+    }
+
+    public ReportExamStudentUsualScoreDto getUsualScore() {
+        return usualScore;
+    }
+
+    public void setUsualScore(ReportExamStudentUsualScoreDto usualScore) {
+        this.usualScore = usualScore;
+    }
+
+    public String getGraduationRequirement() {
+        return graduationRequirement;
+    }
+
+    public void setGraduationRequirement(String graduationRequirement) {
+        this.graduationRequirement = graduationRequirement;
+    }
+
+    public BigDecimal getTargetSumWeight() {
+        return targetSumWeight;
+    }
+
+    public void setTargetSumWeight(BigDecimal targetSumWeight) {
+        this.targetSumWeight = targetSumWeight;
+    }
+
+    public BigDecimal getEvaluationValue() {
+        return evaluationValue;
+    }
+
+    public void setEvaluationValue(BigDecimal evaluationValue) {
+        this.evaluationValue = evaluationValue;
+    }
+
+    @Override
+    public int compareTo(@NotNull ReportExamStudentTargetDto o) {
+        if (o.getTargetId().longValue() < this.getTargetId().longValue()) {
+            return 1;
+        } else if (o.getTargetId().longValue() > this.getTargetId().longValue()) {
+            return -1;
+        } else {
+            return 0;
+        }
+    }
+}

+ 58 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportExamStudentUsualScoreDto.java

@@ -0,0 +1,58 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 报告课程考核成绩评价明细结果-考生-平时成绩dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ReportExamStudentUsualScoreDto implements Serializable {
+
+    @ApiModelProperty(value = "平时成绩对象集合")
+    private Map<Long, List<ReportExamStudentUsualScoreObjDto>> scoreMap;
+
+    @ApiModelProperty(value = "平时成绩对象集合")
+    private List<ReportExamStudentUsualScoreObjDto> scoreList;
+
+    public ReportExamStudentUsualScoreDto() {
+
+    }
+
+    public ReportExamStudentUsualScoreDto(List<ReportExamStudentUsualScoreObjDto> scoreList) {
+        this.scoreList = scoreList;
+    }
+
+    public ReportExamStudentUsualScoreDto(ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto) {
+        this.scoreMap = reportExamStudentUsualScoreDto.getScoreMap();
+        this.scoreList = reportExamStudentUsualScoreDto.getScoreList();
+    }
+
+    public ReportExamStudentUsualScoreDto(Map<Long, List<ReportExamStudentUsualScoreObjDto>> scoreMap) {
+        this.scoreMap = scoreMap;
+    }
+
+    public Map<Long, List<ReportExamStudentUsualScoreObjDto>> getScoreMap() {
+        return scoreMap;
+    }
+
+    public void setScoreMap(Map<Long, List<ReportExamStudentUsualScoreObjDto>> scoreMap) {
+        this.scoreMap = scoreMap;
+    }
+
+    public List<ReportExamStudentUsualScoreObjDto> getScoreList() {
+        return scoreList;
+    }
+
+    public void setScoreList(List<ReportExamStudentUsualScoreObjDto> scoreList) {
+        this.scoreList = scoreList;
+    }
+}

+ 169 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportExamStudentUsualScoreObjDto.java

@@ -0,0 +1,169 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import org.jetbrains.annotations.NotNull;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @Description: 报告课程考核成绩评价明细结果-考生-平时成绩对象dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ReportExamStudentUsualScoreObjDto implements Serializable, Comparable<ReportExamStudentUsualScoreObjDto> {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程目标id")
+    private Long targetId;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "评价方式id")
+    private Long evaluationId;
+
+    @ApiModelProperty(value = "评价方式")
+    private String evaluation;
+
+    @ApiModelProperty(value = "评价方式描述")
+    private String evaluationDesc;
+
+    @ApiModelProperty(value = "作业权重")
+    private BigDecimal targetWeight;
+
+    @ApiModelProperty(value = "作业目标分值")
+    private BigDecimal targetScore = new BigDecimal(0);
+
+//    @ApiModelProperty(value = "作业整体权重")
+//    private BigDecimal targetSumWeight;
+
+    @ApiModelProperty(value = "作业整体分值")
+    private BigDecimal targetSumScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "卷面分数")
+    private BigDecimal score = new BigDecimal(0);
+
+    @ApiModelProperty(value = "换算分数")
+    private BigDecimal matrixScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "课程目标考核要素的平均分")
+    private BigDecimal matrixAvgScore = new BigDecimal(0);
+
+    public ReportExamStudentUsualScoreObjDto() {
+
+    }
+
+    public ReportExamStudentUsualScoreObjDto(ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto) {
+        this.targetId = reportExamStudentUsualScoreObjDto.getTargetId();
+        this.evaluationId = reportExamStudentUsualScoreObjDto.getEvaluationId();
+        this.evaluation = reportExamStudentUsualScoreObjDto.getEvaluation();
+        this.evaluationDesc = reportExamStudentUsualScoreObjDto.getEvaluationDesc();
+        this.targetWeight = reportExamStudentUsualScoreObjDto.getTargetWeight();
+        this.targetScore = reportExamStudentUsualScoreObjDto.getTargetScore();
+        this.score = reportExamStudentUsualScoreObjDto.getScore();
+        this.matrixScore = reportExamStudentUsualScoreObjDto.getMatrixScore();
+        this.targetSumScore = reportExamStudentUsualScoreObjDto.getTargetSumScore();
+    }
+
+    public ReportExamStudentUsualScoreObjDto(Long targetId, ReportEvaluationDto reportEvaluationDto, BigDecimal score, BigDecimal matrixScore, BigDecimal targetSumScore) {
+        this.evaluationId = reportEvaluationDto.getEvaluationId();
+        this.evaluation = reportEvaluationDto.getEvaluation();
+        this.evaluationDesc = reportEvaluationDto.getEvaluationDesc();
+        this.targetWeight = reportEvaluationDto.getTargetWeight();
+        this.targetScore = reportEvaluationDto.getTargetScore();
+        this.score = score;
+        this.matrixScore = matrixScore;
+        this.targetId = targetId;
+        this.targetSumScore = targetSumScore;
+    }
+
+    public Long getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(Long targetId) {
+        this.targetId = targetId;
+    }
+
+    public BigDecimal getTargetSumScore() {
+        return targetSumScore;
+    }
+
+    public void setTargetSumScore(BigDecimal targetSumScore) {
+        this.targetSumScore = targetSumScore;
+    }
+
+    public Long getEvaluationId() {
+        return evaluationId;
+    }
+
+    public void setEvaluationId(Long evaluationId) {
+        this.evaluationId = evaluationId;
+    }
+
+    public String getEvaluation() {
+        return evaluation;
+    }
+
+    public void setEvaluation(String evaluation) {
+        this.evaluation = evaluation;
+    }
+
+    public String getEvaluationDesc() {
+        return evaluationDesc;
+    }
+
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
+    }
+
+    public BigDecimal getTargetWeight() {
+        return targetWeight;
+    }
+
+    public void setTargetWeight(BigDecimal targetWeight) {
+        this.targetWeight = targetWeight;
+    }
+
+    public BigDecimal getTargetScore() {
+        return targetScore;
+    }
+
+    public void setTargetScore(BigDecimal targetScore) {
+        this.targetScore = targetScore;
+    }
+
+    public BigDecimal getScore() {
+        return score;
+    }
+
+    public void setScore(BigDecimal score) {
+        this.score = score;
+    }
+
+    public BigDecimal getMatrixScore() {
+        return matrixScore;
+    }
+
+    public void setMatrixScore(BigDecimal matrixScore) {
+        this.matrixScore = matrixScore;
+    }
+
+    public BigDecimal getMatrixAvgScore() {
+        return matrixAvgScore;
+    }
+
+    public void setMatrixAvgScore(BigDecimal matrixAvgScore) {
+        this.matrixAvgScore = matrixAvgScore;
+    }
+
+    @Override
+    public int compareTo(@NotNull ReportExamStudentUsualScoreObjDto o) {
+        return this.getEvaluation().compareTo(o.getEvaluation());
+    }
+}

+ 62 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportScoreRangeViewDto.java

@@ -0,0 +1,62 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @Description: 报告课程目标考核分布-分数范围dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ReportScoreRangeViewDto implements Serializable {
+
+    @ApiModelProperty(value = "考生人数")
+    private Integer studentCount;
+
+    @ApiModelProperty(value = "最小分")
+    private BigDecimal minScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "最大分")
+    private BigDecimal maxScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "比率")
+    private BigDecimal rate = new BigDecimal(0);
+
+    public Integer getStudentCount() {
+        return studentCount;
+    }
+
+    public void setStudentCount(Integer studentCount) {
+        this.studentCount = studentCount;
+    }
+
+    public BigDecimal getMinScore() {
+        return minScore;
+    }
+
+    public void setMinScore(BigDecimal minScore) {
+        this.minScore = minScore;
+    }
+
+    public BigDecimal getMaxScore() {
+        return maxScore;
+    }
+
+    public void setMaxScore(BigDecimal maxScore) {
+        this.maxScore = maxScore;
+    }
+
+    public BigDecimal getRate() {
+        return rate;
+    }
+
+    public void setRate(BigDecimal rate) {
+        this.rate = rate;
+    }
+}

+ 60 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/ReportScoreViewDto.java

@@ -0,0 +1,60 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description: 报告课程目标考核分布-分数dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+public class ReportScoreViewDto implements Serializable {
+
+    @ApiModelProperty(value = "不及格人数")
+    private Integer failCount;
+
+    @ApiModelProperty(value = "不及格比率")
+    private BigDecimal failRate = new BigDecimal(0);
+
+    @ApiModelProperty(value = "分数范围")
+    private List<ReportScoreRangeViewDto> scoreRange;
+
+    public ReportScoreViewDto() {
+
+    }
+
+    public ReportScoreViewDto(Integer failCount, BigDecimal failRate, List<ReportScoreRangeViewDto> scoreRange) {
+        this.failCount = failCount;
+        this.failRate = failRate;
+        this.scoreRange = scoreRange;
+    }
+
+    public Integer getFailCount() {
+        return failCount;
+    }
+
+    public void setFailCount(Integer failCount) {
+        this.failCount = failCount;
+    }
+
+    public BigDecimal getFailRate() {
+        return failRate;
+    }
+
+    public void setFailRate(BigDecimal failRate) {
+        this.failRate = failRate;
+    }
+
+    public List<ReportScoreRangeViewDto> getScoreRange() {
+        return scoreRange;
+    }
+
+    public void setScoreRange(List<ReportScoreRangeViewDto> scoreRange) {
+        this.scoreRange = scoreRange;
+    }
+}

+ 82 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/StudentCourseInfoDto.java

@@ -0,0 +1,82 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.qmth.teachcloud.obe.been.result.report.studentRequirement.CourseTargetRequirement;
+
+import java.util.List;
+
+public class StudentCourseInfoDto {
+
+    private Long cultureProgramId;
+    private String semesterName;
+    private Long courseId;
+    private String courseCode;
+    private String courseName;
+    private String resultDetail;
+    private Double score;
+
+    private List<CourseTargetRequirement> courseTargetRequirementList;
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    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 String getResultDetail() {
+        return resultDetail;
+    }
+
+    public void setResultDetail(String resultDetail) {
+        this.resultDetail = resultDetail;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+
+    public List<CourseTargetRequirement> getCourseTargetRequirementList() {
+        return courseTargetRequirementList;
+    }
+
+    public void setCourseTargetRequirementList(List<CourseTargetRequirement> courseTargetRequirementList) {
+        this.courseTargetRequirementList = courseTargetRequirementList;
+    }
+}

+ 54 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/StudentRequirementInfoDto.java

@@ -0,0 +1,54 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+
+public class StudentRequirementInfoDto {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long cultureProgramId;
+    private String studentCode;
+    private String studentName;
+    private String collegeName;
+    private String majorName;
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getCollegeName() {
+        return collegeName;
+    }
+
+    public void setCollegeName(String collegeName) {
+        this.collegeName = collegeName;
+    }
+
+    public String getMajorName() {
+        return majorName;
+    }
+
+    public void setMajorName(String majorName) {
+        this.majorName = majorName;
+    }
+}

+ 60 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/report/UsualScoreWordDto.java

@@ -0,0 +1,60 @@
+package com.qmth.teachcloud.obe.been.report;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description: 平时成绩dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/26
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class UsualScoreWordDto implements Serializable {
+
+    @ApiModelProperty(value = "平时成绩目标总分")
+    private BigDecimal usualScoreTargetSumScore = new BigDecimal(0);
+
+//    @ApiModelProperty(value = "平时成绩目标整体权重")
+//    private BigDecimal usualScoreTargetSumWeight = new BigDecimal(0);
+
+    @ApiModelProperty(value = "平时成绩详情")
+    private List<ReportEvaluationDto> usualScoreDetailList;
+
+    public UsualScoreWordDto() {
+
+    }
+
+//    public UsualScoreWordDto(BigDecimal usualScoreTargetSumWeight) {
+//        this.usualScoreTargetSumWeight = usualScoreTargetSumWeight;
+//    }
+
+    public List<ReportEvaluationDto> getUsualScoreDetailList() {
+        return usualScoreDetailList;
+    }
+
+    public void setUsualScoreDetailList(List<ReportEvaluationDto> usualScoreDetailList) {
+        this.usualScoreDetailList = usualScoreDetailList;
+    }
+
+    public BigDecimal getUsualScoreTargetSumScore() {
+        return usualScoreTargetSumScore;
+    }
+
+    public void setUsualScoreTargetSumScore(BigDecimal usualScoreTargetSumScore) {
+        this.usualScoreTargetSumScore = usualScoreTargetSumScore;
+    }
+
+//    public BigDecimal getUsualScoreTargetSumWeight() {
+//        return usualScoreTargetSumWeight;
+//    }
+//
+//    public void setUsualScoreTargetSumWeight(BigDecimal usualScoreTargetSumWeight) {
+//        this.usualScoreTargetSumWeight = usualScoreTargetSumWeight;
+//    }
+}

+ 70 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/CourseDimensionTree.java

@@ -0,0 +1,70 @@
+package com.qmth.teachcloud.obe.been.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.been.dto.CourseDimensionOccupiedDto;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description: 课程知识点树结果
+ * @Author: CaoZixuan
+ * @Date: 2024-02-28
+ */
+public class CourseDimensionTree {
+    @ApiModelProperty("知识点id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty("知识点编号")
+    private String code;
+
+    @ApiModelProperty("知识点名称")
+    private String name;
+
+    @ApiModelProperty("子知识点")
+    private List<CourseDimensionTree> children;
+
+    public CourseDimensionTree(Long id, String code, String name, List<CourseDimensionTree> children) {
+        this.id = id;
+        this.code = code;
+        this.name = name;
+        this.children = children;
+    }
+
+    public CourseDimensionTree() {
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    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 List<CourseDimensionTree> getChildren() {
+        return children;
+    }
+
+    public void setChildren(List<CourseDimensionTree> children) {
+        this.children = children;
+    }
+}

+ 78 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/CultureProgramCourseSelectResult.java

@@ -0,0 +1,78 @@
+package com.qmth.teachcloud.obe.been.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 课程选择
+ */
+public class CultureProgramCourseSelectResult {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程ID")
+    private Long courseId;
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "课程编号")
+    private String courseCode;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "开课机构ID")
+    private Long orgId;
+
+    @ApiModelProperty(value = "开课机构名称")
+    private String orgName;
+
+    @ApiModelProperty(value = "是否可选")
+    private boolean canSelect;
+
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getOrgName() {
+        return orgName;
+    }
+
+    public void setOrgName(String orgName) {
+        this.orgName = orgName;
+    }
+
+    public boolean isCanSelect() {
+        return canSelect;
+    }
+
+    public void setCanSelect(boolean canSelect) {
+        this.canSelect = canSelect;
+    }
+}

+ 36 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/CultureProgramResult.java

@@ -0,0 +1,36 @@
+package com.qmth.teachcloud.obe.been.result;
+
+import com.qmth.teachcloud.obe.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;
+    }
+}

+ 119 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/FinalScoreResult.java

@@ -0,0 +1,119 @@
+package com.qmth.teachcloud.obe.been.result;
+
+import com.qmth.teachcloud.obe.been.report.ReportExamStudentFinalScoreDto;
+import com.qmth.teachcloud.obe.been.report.ReportExamStudentUsualScoreDto;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * @Description: 期末成绩dto
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/29
+ */
+public class FinalScoreResult implements Serializable {
+
+    @ApiModelProperty(value = "考生名称")
+    private String name;
+
+    @ApiModelProperty(value = "学号")
+    private String studentCode;
+
+    @ApiModelProperty(value = "教学班级")
+    private String administrativeClass;
+
+    @ApiModelProperty(value = "期末考试分数")
+    private Map<Long, BigDecimal> finalScoreDimension = new LinkedHashMap<>();
+
+    @ApiModelProperty(value = "期末考试分数")
+    private Map<Long, BigDecimal> finalScoreTarget = new LinkedHashMap<>();
+
+    @ApiModelProperty(value = "期末考试分数明细")
+    private String finalScoreDetail;
+
+    @ApiModelProperty(value = "平时作业成绩")
+    private String usualScore;
+
+    @ApiModelProperty(value = "期末成绩集合")
+    private ReportExamStudentFinalScoreDto finalScoreDto;
+
+    @ApiModelProperty(value = "平时成绩集合")
+    private ReportExamStudentUsualScoreDto usualScoreDto;
+
+    public String getAdministrativeClass() {
+        return administrativeClass;
+    }
+
+    public void setAdministrativeClass(String administrativeClass) {
+        this.administrativeClass = administrativeClass;
+    }
+
+    public String getFinalScoreDetail() {
+        return finalScoreDetail;
+    }
+
+    public void setFinalScoreDetail(String finalScoreDetail) {
+        this.finalScoreDetail = finalScoreDetail;
+    }
+
+    public ReportExamStudentFinalScoreDto getFinalScoreDto() {
+        return finalScoreDto;
+    }
+
+    public void setFinalScoreDto(ReportExamStudentFinalScoreDto finalScoreDto) {
+        this.finalScoreDto = finalScoreDto;
+    }
+
+    public ReportExamStudentUsualScoreDto getUsualScoreDto() {
+        return usualScoreDto;
+    }
+
+    public void setUsualScoreDto(ReportExamStudentUsualScoreDto usualScoreDto) {
+        this.usualScoreDto = usualScoreDto;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getStudentCode() {
+        return studentCode;
+    }
+
+    public void setStudentCode(String studentCode) {
+        this.studentCode = studentCode;
+    }
+
+    public Map<Long, BigDecimal> getFinalScoreDimension() {
+        return finalScoreDimension;
+    }
+
+    public void setFinalScoreDimension(Map<Long, BigDecimal> finalScoreDimension) {
+        this.finalScoreDimension = finalScoreDimension;
+    }
+
+    public Map<Long, BigDecimal> getFinalScoreTarget() {
+        return finalScoreTarget;
+    }
+
+    public void setFinalScoreTarget(Map<Long, BigDecimal> finalScoreTarget) {
+        this.finalScoreTarget = finalScoreTarget;
+    }
+
+    public String getUsualScore() {
+        return usualScore;
+    }
+
+    public void setUsualScore(String usualScore) {
+        this.usualScore = usualScore;
+    }
+}

+ 33 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeCourseBasicInfoResult.java

@@ -0,0 +1,33 @@
+package com.qmth.teachcloud.obe.been.result;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 课程基本信息
+ * @Author: CaoZixuan
+ * @Date: 2024-06-11
+ */
+public class ObeCourseBasicInfoResult {
+
+    @ApiModelProperty("专业名称")
+    private String professionalName;
+
+    @ApiModelProperty("培养方案名称")
+    private String cultureProgramName;
+
+    public String getProfessionalName() {
+        return professionalName;
+    }
+
+    public void setProfessionalName(String professionalName) {
+        this.professionalName = professionalName;
+    }
+
+    public String getCultureProgramName() {
+        return cultureProgramName;
+    }
+
+    public void setCultureProgramName(String cultureProgramName) {
+        this.cultureProgramName = cultureProgramName;
+    }
+}

+ 59 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeCourseEvaluationResult.java

@@ -0,0 +1,59 @@
+package com.qmth.teachcloud.obe.been.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.enums.CourseEvaluationTypeEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: 课程评价方式查询结果
+ * @Author: CaoZixuan
+ * @Date: 2024-02-29
+ */
+public class ObeCourseEvaluationResult {
+
+    @ApiModelProperty("课程评价方式id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long evaluationId;
+
+    @ApiModelProperty("课程评价方式")
+    private String evaluation;
+
+    @ApiModelProperty("课程评价方式描述")
+    private String evaluationDesc;
+
+    @ApiModelProperty("评价方式类型")
+    private CourseEvaluationTypeEnum type;
+
+    public Long getEvaluationId() {
+        return evaluationId;
+    }
+
+    public void setEvaluationId(Long evaluationId) {
+        this.evaluationId = evaluationId;
+    }
+
+    public String getEvaluation() {
+        return evaluation;
+    }
+
+    public void setEvaluation(String evaluation) {
+        this.evaluation = evaluation;
+    }
+
+    public String getEvaluationDesc() {
+        return evaluationDesc;
+    }
+
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
+    }
+
+    public CourseEvaluationTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(CourseEvaluationTypeEnum type) {
+        this.type = type;
+    }
+}

+ 219 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeCourseOutlineResult.java

@@ -0,0 +1,219 @@
+package com.qmth.teachcloud.obe.been.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.enums.ObeCourseOutlineCourseTypeEnum;
+import com.qmth.teachcloud.obe.enums.ObeCourseOutlineEvaluationEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: obe课程大纲查询
+ * @Author: CaoZixuan
+ * @Date: 2024-06-05
+ */
+public class ObeCourseOutlineResult {
+
+    @ApiModelProperty("课程大纲id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty("课程大纲名称")
+    private String outlineName;
+
+    @ApiModelProperty("课程id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long courseId;
+
+    @ApiModelProperty("课程名称")
+    private String courseName;
+
+    @ApiModelProperty("课程编码")
+    private String courseCode;
+
+    @ApiModelProperty("学分")
+    private Integer credit;
+
+    @ApiModelProperty("考核方式")
+    private ObeCourseOutlineEvaluationEnum evaluationMode;
+
+    @ApiModelProperty("课程类型")
+    private ObeCourseOutlineCourseTypeEnum courseType;
+
+    @ApiModelProperty("学期id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long semesterId;
+
+    @ApiModelProperty("学期名称")
+    private String semesterName;
+
+    @ApiModelProperty("培养方式id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long cultureProgramId;
+
+    @ApiModelProperty("培养方式名称")
+    private String cultureProgramName;
+
+    @ApiModelProperty("负责人id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long userId;
+
+    @ApiModelProperty("负责人名称")
+    private String userName;
+
+    @ApiModelProperty("专业id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long professionalId;
+
+    @ApiModelProperty("专业名称")
+    private String professionalName;
+
+    @ApiModelProperty("课程目标数量")
+    private Integer targetCount;
+
+    @ApiModelProperty("权重设置状态")
+    private Boolean weightSetting;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getOutlineName() {
+        return outlineName;
+    }
+
+    public void setOutlineName(String outlineName) {
+        this.outlineName = outlineName;
+    }
+
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public Integer getCredit() {
+        return credit;
+    }
+
+    public void setCredit(Integer credit) {
+        this.credit = credit;
+    }
+
+    public ObeCourseOutlineEvaluationEnum getEvaluationMode() {
+        return evaluationMode;
+    }
+
+    public void setEvaluationMode(ObeCourseOutlineEvaluationEnum evaluationMode) {
+        this.evaluationMode = evaluationMode;
+    }
+
+    public ObeCourseOutlineCourseTypeEnum getCourseType() {
+        return courseType;
+    }
+
+    public void setCourseType(ObeCourseOutlineCourseTypeEnum courseType) {
+        this.courseType = courseType;
+    }
+
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public String getCultureProgramName() {
+        return cultureProgramName;
+    }
+
+    public void setCultureProgramName(String cultureProgramName) {
+        this.cultureProgramName = cultureProgramName;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public Long getProfessionalId() {
+        return professionalId;
+    }
+
+    public void setProfessionalId(Long professionalId) {
+        this.professionalId = professionalId;
+    }
+
+    public String getProfessionalName() {
+        return professionalName;
+    }
+
+    public void setProfessionalName(String professionalName) {
+        this.professionalName = professionalName;
+    }
+
+    public Integer getTargetCount() {
+        return targetCount;
+    }
+
+    public void setTargetCount(Integer targetCount) {
+        this.targetCount = targetCount;
+    }
+
+    public Boolean getWeightSetting() {
+        return weightSetting;
+    }
+
+    public void setWeightSetting(Boolean weightSetting) {
+        this.weightSetting = weightSetting;
+    }
+}

+ 74 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeCourseRequirementListResult.java

@@ -0,0 +1,74 @@
+package com.qmth.teachcloud.obe.been.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 毕业达成度列表result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/6/13
+ */
+public class ObeCourseRequirementListResult implements Serializable {
+
+    @ApiModelProperty(value = "主键")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty(value = "培养方案id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long cultureProgramId;
+
+    @ApiModelProperty(value = "培养方案名称")
+    private String obeCultureProgramName;
+
+    @ApiModelProperty(value = "专业名称")
+    private String professionalName;
+
+    @ApiModelProperty(value = "毕业要求达成值")
+    private Double requirementDegree;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public String getObeCultureProgramName() {
+        return obeCultureProgramName;
+    }
+
+    public void setObeCultureProgramName(String obeCultureProgramName) {
+        this.obeCultureProgramName = obeCultureProgramName;
+    }
+
+    public String getProfessionalName() {
+        return professionalName;
+    }
+
+    public void setProfessionalName(String professionalName) {
+        this.professionalName = professionalName;
+    }
+
+    public Double getRequirementDegree() {
+        return requirementDegree;
+    }
+
+    public void setRequirementDegree(Double requirementDegree) {
+        this.requirementDegree = requirementDegree;
+    }
+}

+ 118 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeCourseTargetResult.java

@@ -0,0 +1,118 @@
+package com.qmth.teachcloud.obe.been.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.been.dto.CourseDimensionDto;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @Description: 课程目标查询结果
+ * @Author: CaoZixuan
+ * @Date: 2024-02-28
+ */
+public class ObeCourseTargetResult {
+
+    @ApiModelProperty("课程目标id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    @ApiModelProperty("课程目标名称")
+    private String targetName;
+
+    @ApiModelProperty("预期值")
+    private Double expectValue;
+
+    @ApiModelProperty("内容")
+    private String degreeRequirement;
+
+    @ApiModelProperty("指标点id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long obeCultureProgramRequirementId;
+
+    @ApiModelProperty("指标点名称")
+    private String obeCultureProgramRequirementName;
+
+    @ApiModelProperty("指标点内容")
+    private String obeCultureProgramRequirementContent;
+
+    @ApiModelProperty("目标整体权重")
+    private BigDecimal totalWeight;
+
+    @ApiModelProperty("课程目标毕业要求")
+    private List<CourseDimensionDto> dimensionList;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getTargetName() {
+        return targetName;
+    }
+
+    public void setTargetName(String targetName) {
+        this.targetName = targetName;
+    }
+
+    public Double getExpectValue() {
+        return expectValue;
+    }
+
+    public void setExpectValue(Double expectValue) {
+        this.expectValue = expectValue;
+    }
+
+    public String getDegreeRequirement() {
+        return degreeRequirement;
+    }
+
+    public void setDegreeRequirement(String degreeRequirement) {
+        this.degreeRequirement = degreeRequirement;
+    }
+
+    public Long getObeCultureProgramRequirementId() {
+        return obeCultureProgramRequirementId;
+    }
+
+    public void setObeCultureProgramRequirementId(Long obeCultureProgramRequirementId) {
+        this.obeCultureProgramRequirementId = obeCultureProgramRequirementId;
+    }
+
+    public String getObeCultureProgramRequirementName() {
+        return obeCultureProgramRequirementName;
+    }
+
+    public void setObeCultureProgramRequirementName(String obeCultureProgramRequirementName) {
+        this.obeCultureProgramRequirementName = obeCultureProgramRequirementName;
+    }
+
+    public String getObeCultureProgramRequirementContent() {
+        return obeCultureProgramRequirementContent;
+    }
+
+    public void setObeCultureProgramRequirementContent(String obeCultureProgramRequirementContent) {
+        this.obeCultureProgramRequirementContent = obeCultureProgramRequirementContent;
+    }
+
+    public BigDecimal getTotalWeight() {
+        return totalWeight;
+    }
+
+    public void setTotalWeight(BigDecimal totalWeight) {
+        this.totalWeight = totalWeight;
+    }
+
+    public List<CourseDimensionDto> getDimensionList() {
+        return dimensionList;
+    }
+
+    public void setDimensionList(List<CourseDimensionDto> dimensionList) {
+        this.dimensionList = dimensionList;
+    }
+}

+ 51 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeCourseWeightResult.java

@@ -0,0 +1,51 @@
+package com.qmth.teachcloud.obe.been.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.been.dto.CourseWeightDto;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Description: 课程权重结果
+ * @Author: CaoZixuan
+ * @Date: 2024-03-07
+ */
+public class ObeCourseWeightResult {
+
+    @ApiModelProperty("权重设置标记")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long weightSettingSign;
+
+    @ApiModelProperty("知识点设置标记")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long dimensionSign;
+
+    @ApiModelProperty("课程权重表单")
+    private List<CourseWeightDto> submitForm;
+
+    public Long getWeightSettingSign() {
+        return weightSettingSign;
+    }
+
+    public void setWeightSettingSign(Long weightSettingSign) {
+        this.weightSettingSign = weightSettingSign;
+    }
+
+    public Long getDimensionSign() {
+        return dimensionSign;
+    }
+
+    public void setDimensionSign(Long dimensionSign) {
+        this.dimensionSign = dimensionSign;
+    }
+
+    public List<CourseWeightDto> getSubmitForm() {
+        return submitForm;
+    }
+
+    public void setSubmitForm(List<CourseWeightDto> submitForm) {
+        this.submitForm = submitForm;
+    }
+}

+ 150 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/ObeScoreResult.java

@@ -0,0 +1,150 @@
+package com.qmth.teachcloud.obe.been.result;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: obe成绩管理结果
+ * @Author: CaoZixuan
+ * @Date: 2024-06-13
+ */
+public class ObeScoreResult {
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程大纲id")
+    private Long obeCourseOutlineId;
+
+    @ApiModelProperty(value = "课程大纲名称")
+    private String obeCourseOutlineName;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "培养方案id")
+    private Long cultureProgramId;
+
+    @ApiModelProperty(value = "培养方案名称")
+    private String cultureProgramName;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程id")
+    private Long courseId;
+
+    @ApiModelProperty(value = "课程名称")
+    private String courseName;
+
+    @ApiModelProperty(value = "课程编号")
+    private String courseCode;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "责任人id")
+    private Long userId;
+
+    @ApiModelProperty(value = "责任人名称")
+    private String userName;
+
+    @ApiModelProperty(value = "责任人登录名称")
+    private String userLoginName;
+
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "学期id")
+    private Long semesterId;
+
+    @ApiModelProperty(value = "学期名称")
+    private String semesterName;
+
+    public Long getObeCourseOutlineId() {
+        return obeCourseOutlineId;
+    }
+
+    public void setObeCourseOutlineId(Long obeCourseOutlineId) {
+        this.obeCourseOutlineId = obeCourseOutlineId;
+    }
+
+    public String getObeCourseOutlineName() {
+        return obeCourseOutlineName;
+    }
+
+    public void setObeCourseOutlineName(String obeCourseOutlineName) {
+        this.obeCourseOutlineName = obeCourseOutlineName;
+    }
+
+    public Long getCultureProgramId() {
+        return cultureProgramId;
+    }
+
+    public void setCultureProgramId(Long cultureProgramId) {
+        this.cultureProgramId = cultureProgramId;
+    }
+
+    public String getCultureProgramName() {
+        return cultureProgramName;
+    }
+
+    public void setCultureProgramName(String cultureProgramName) {
+        this.cultureProgramName = cultureProgramName;
+    }
+
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getUserLoginName() {
+        return userLoginName;
+    }
+
+    public void setUserLoginName(String userLoginName) {
+        this.userLoginName = userLoginName;
+    }
+
+    public Long getSemesterId() {
+        return semesterId;
+    }
+
+    public void setSemesterId(Long semesterId) {
+        this.semesterId = semesterId;
+    }
+
+    public String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+}

+ 121 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/PaperStructDimensionResult.java

@@ -0,0 +1,121 @@
+package com.qmth.teachcloud.obe.been.result.report;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.qmth.teachcloud.obe.been.report.CourseTargetWebDto;
+import io.swagger.annotations.ApiModelProperty;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: 试卷蓝图result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/19
+ */
+public class PaperStructDimensionResult implements Serializable {
+
+    @ApiModelProperty(value = "大题号")
+    @NotNull(message = "大题号不能为空")
+    @Range(min = 1L, message = "大题号最小为1")
+    private Integer mainNumber;
+
+    @ApiModelProperty(value = "小题号")
+    @NotNull(message = "小题号不能为空")
+    @Range(min = 1L, message = "小题号最小为1")
+    private Integer subNumber;
+
+    @ApiModelProperty(value = "考试id")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long examId;
+
+    @ApiModelProperty(value = "试卷编码")
+    private String paperNumber;
+
+    @ApiModelProperty(value = "分数")
+    @NotNull(message = "分数不能为空")
+    private BigDecimal score = new BigDecimal(0);
+
+    @ApiModelProperty(value = "课程目标名称")
+    @NotNull(message = "课程目标名称不能为空")
+    private String courseTargetName;
+
+    @ApiModelProperty(value = "课程目标集合")
+    @NotEmpty(message = "课程目标集合不能为空")
+    private List<CourseTargetWebDto> targetList = new ArrayList<>();
+
+    public PaperStructDimensionResult() {
+
+    }
+
+    public PaperStructDimensionResult(Integer mainNumber, Integer subNumber,Long examId, String paperNumber, BigDecimal score) {
+        this.mainNumber = mainNumber;
+        this.subNumber = subNumber;
+        this.examId = examId;
+        this.paperNumber = paperNumber;
+        this.score = score;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getPaperNumber() {
+        return paperNumber;
+    }
+
+    public void setPaperNumber(String paperNumber) {
+        this.paperNumber = paperNumber;
+    }
+
+    public String getCourseTargetName() {
+        return courseTargetName;
+    }
+
+    public void setCourseTargetName(String courseTargetName) {
+        this.courseTargetName = courseTargetName;
+    }
+
+    public Integer getMainNumber() {
+        return mainNumber;
+    }
+
+    public void setMainNumber(Integer mainNumber) {
+        this.mainNumber = mainNumber;
+    }
+
+    public Integer getSubNumber() {
+        return subNumber;
+    }
+
+    public void setSubNumber(Integer subNumber) {
+        this.subNumber = subNumber;
+    }
+
+    public BigDecimal getScore() {
+        return score;
+    }
+
+    public void setScore(BigDecimal score) {
+        this.score = score;
+    }
+
+    public List<CourseTargetWebDto> getTargetList() {
+        return targetList;
+    }
+
+    public void setTargetList(List<CourseTargetWebDto> targetList) {
+        this.targetList = targetList;
+    }
+}

+ 81 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/ReportChangeResult.java

@@ -0,0 +1,81 @@
+package com.qmth.teachcloud.obe.been.result.report;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 报告是否发生变化result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/3/15
+ */
+public class ReportChangeResult implements Serializable {
+
+    @ApiModelProperty(value = "课程目标是否发生变化")
+    private boolean courseTargetChange;
+
+    @ApiModelProperty(value = "评价方式是否发生变化")
+    private boolean evaluationChange;
+
+    @ApiModelProperty(value = "知识点是否发生变化")
+    private boolean dimensionChange;
+
+    @ApiModelProperty(value = "权重是否发生变化")
+    private boolean weightChange;
+
+    @ApiModelProperty(value = "目标分是否发生变化")
+    private boolean targetScoreChange;
+
+    @ApiModelProperty(value = "目标分内容")
+    private String targetScoreChangeStr;
+
+    public boolean isTargetScoreChange() {
+        return targetScoreChange;
+    }
+
+    public void setTargetScoreChange(boolean targetScoreChange) {
+        this.targetScoreChange = targetScoreChange;
+    }
+
+    public String getTargetScoreChangeStr() {
+        return targetScoreChangeStr;
+    }
+
+    public void setTargetScoreChangeStr(String targetScoreChangeStr) {
+        this.targetScoreChangeStr = targetScoreChangeStr;
+    }
+
+    public boolean isCourseTargetChange() {
+        return courseTargetChange;
+    }
+
+    public void setCourseTargetChange(boolean courseTargetChange) {
+        this.courseTargetChange = courseTargetChange;
+    }
+
+    public boolean isEvaluationChange() {
+        return evaluationChange;
+    }
+
+    public void setEvaluationChange(boolean evaluationChange) {
+        this.evaluationChange = evaluationChange;
+    }
+
+    public boolean isDimensionChange() {
+        return dimensionChange;
+    }
+
+    public void setDimensionChange(boolean dimensionChange) {
+        this.dimensionChange = dimensionChange;
+    }
+
+    public boolean isWeightChange() {
+        return weightChange;
+    }
+
+    public void setWeightChange(boolean weightChange) {
+        this.weightChange = weightChange;
+    }
+}

+ 130 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/ReportResult.java

@@ -0,0 +1,130 @@
+package com.qmth.teachcloud.obe.been.result.report;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.qmth.teachcloud.obe.been.report.*;
+import com.qmth.teachcloud.obe.entity.TRBasicInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 报告result
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2024/2/19
+ */
+public class ReportResult implements Serializable {
+
+    @ApiModelProperty(value = "公共信息")
+    @TableField(exist = false)
+    private ReportCommonDto commonInfo;
+
+    @ApiModelProperty(value = "课程基本情况")
+    @TableField(exist = false)
+    private ReportCourseBasicInfoDto courseBasicInfo;
+
+    @ApiModelProperty(value = "课程目标考核分布")
+    @TableField(exist = false)
+    private ReportCourseEvaluationSpreadDto courseEvaluationSpreadInfo;
+
+    @ApiModelProperty(value = "课程考核成绩评价结果")
+    @TableField(exist = false)
+    private ReportCourseEvaluationResultDto courseEvaluationResultInfo;
+
+    @ApiModelProperty(value = "课程目标达成评价明细结果")
+    @TableField(exist = false)
+    private ReportCourseEvaluationResultDetailDto courseEvaluationResultDetailInfo;
+
+    @ApiModelProperty(value = "达成情况")
+    @TableField(exist = false)
+    private String finishPoints;
+
+    @ApiModelProperty(value = "课程支撑毕业要求达成情况评价")
+    @TableField(exist = false)
+    private String requirementPoints;
+
+    @ApiModelProperty(value = "课程持续改进")
+    @TableField(exist = false)
+    private String courseSuggest;
+
+    public ReportResult() {
+
+    }
+
+    public ReportResult(ReportCommonDto commonInfo, ReportCourseBasicInfoDto courseBasicInfo, ReportCourseEvaluationSpreadDto courseEvaluationSpreadInfo
+            , ReportCourseEvaluationResultDto courseEvaluationResultInfo, ReportCourseEvaluationResultDetailDto courseEvaluationResultDetailInfo, TRBasicInfo trBasicInfo) {
+        this.commonInfo = commonInfo;
+        this.courseBasicInfo = courseBasicInfo;
+        this.courseEvaluationSpreadInfo = courseEvaluationSpreadInfo;
+        this.courseEvaluationResultInfo = courseEvaluationResultInfo;
+        this.courseEvaluationResultDetailInfo = courseEvaluationResultDetailInfo;
+        this.finishPoints = trBasicInfo.getFinishPoints();
+        this.requirementPoints = trBasicInfo.getRequirementPoints();
+        this.courseSuggest = trBasicInfo.getCourseSuggest();
+    }
+
+    public String getFinishPoints() {
+        return finishPoints;
+    }
+
+    public void setFinishPoints(String finishPoints) {
+        this.finishPoints = finishPoints;
+    }
+
+    public String getRequirementPoints() {
+        return requirementPoints;
+    }
+
+    public void setRequirementPoints(String requirementPoints) {
+        this.requirementPoints = requirementPoints;
+    }
+
+    public String getCourseSuggest() {
+        return courseSuggest;
+    }
+
+    public void setCourseSuggest(String courseSuggest) {
+        this.courseSuggest = courseSuggest;
+    }
+
+    public ReportCommonDto getCommonInfo() {
+        return commonInfo;
+    }
+
+    public void setCommonInfo(ReportCommonDto commonInfo) {
+        this.commonInfo = commonInfo;
+    }
+
+    public ReportCourseBasicInfoDto getCourseBasicInfo() {
+        return courseBasicInfo;
+    }
+
+    public void setCourseBasicInfo(ReportCourseBasicInfoDto courseBasicInfo) {
+        this.courseBasicInfo = courseBasicInfo;
+    }
+
+    public ReportCourseEvaluationSpreadDto getCourseEvaluationSpreadInfo() {
+        return courseEvaluationSpreadInfo;
+    }
+
+    public void setCourseEvaluationSpreadInfo(ReportCourseEvaluationSpreadDto courseEvaluationSpreadInfo) {
+        this.courseEvaluationSpreadInfo = courseEvaluationSpreadInfo;
+    }
+
+    public ReportCourseEvaluationResultDto getCourseEvaluationResultInfo() {
+        return courseEvaluationResultInfo;
+    }
+
+    public void setCourseEvaluationResultInfo(ReportCourseEvaluationResultDto courseEvaluationResultInfo) {
+        this.courseEvaluationResultInfo = courseEvaluationResultInfo;
+    }
+
+    public ReportCourseEvaluationResultDetailDto getCourseEvaluationResultDetailInfo() {
+        return courseEvaluationResultDetailInfo;
+    }
+
+    public void setCourseEvaluationResultDetailInfo(ReportCourseEvaluationResultDetailDto courseEvaluationResultDetailInfo) {
+        this.courseEvaluationResultDetailInfo = courseEvaluationResultDetailInfo;
+    }
+}

+ 101 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/studentRequirement/CourseTargetRequirement.java

@@ -0,0 +1,101 @@
+package com.qmth.teachcloud.obe.been.result.report.studentRequirement;
+
+public class CourseTargetRequirement {
+
+    private Long subRequirementId;
+    private String subRequirementName;
+    private Integer subRequirementSortNum;
+    // 指标点权重
+    private Double scale;
+    private Long requirementId;
+    private String requirementName;
+    private Integer requirementSortNum;
+    private String requirementContent;
+    private Double courseTargetDegree;
+
+    public CourseTargetRequirement() {
+    }
+
+    public CourseTargetRequirement(Long subRequirementId, String subRequirementName, Integer subRequirementSortNum, String requirementContent, Long requirementId, String requirementName, Integer requirementSortNum, Double scale) {
+        this.subRequirementId = subRequirementId;
+        this.subRequirementName = subRequirementName;
+        this.subRequirementSortNum = subRequirementSortNum;
+        this.requirementContent = requirementContent;
+        this.requirementId = requirementId;
+        this.requirementName = requirementName;
+        this.requirementSortNum = requirementSortNum;
+        this.scale = scale;
+    }
+
+    public Long getSubRequirementId() {
+        return subRequirementId;
+    }
+
+    public void setSubRequirementId(Long subRequirementId) {
+        this.subRequirementId = subRequirementId;
+    }
+
+    public String getSubRequirementName() {
+        return subRequirementName;
+    }
+
+    public void setSubRequirementName(String subRequirementName) {
+        this.subRequirementName = subRequirementName;
+    }
+
+    public Integer getSubRequirementSortNum() {
+        return subRequirementSortNum;
+    }
+
+    public void setSubRequirementSortNum(Integer subRequirementSortNum) {
+        this.subRequirementSortNum = subRequirementSortNum;
+    }
+
+    public Double getScale() {
+        return scale;
+    }
+
+    public void setScale(Double scale) {
+        this.scale = scale;
+    }
+
+    public Long getRequirementId() {
+        return requirementId;
+    }
+
+    public void setRequirementId(Long requirementId) {
+        this.requirementId = requirementId;
+    }
+
+    public String getRequirementName() {
+        return requirementName;
+    }
+
+    public void setRequirementName(String requirementName) {
+        this.requirementName = requirementName;
+    }
+
+    public Integer getRequirementSortNum() {
+        return requirementSortNum;
+    }
+
+    public void setRequirementSortNum(Integer requirementSortNum) {
+        this.requirementSortNum = requirementSortNum;
+    }
+
+    public Double getCourseTargetDegree() {
+        return courseTargetDegree;
+    }
+
+    public void setCourseTargetDegree(Double courseTargetDegree) {
+        this.courseTargetDegree = courseTargetDegree;
+    }
+
+    public String getRequirementContent() {
+        return requirementContent;
+    }
+
+    public void setRequirementContent(String requirementContent) {
+        this.requirementContent = requirementContent;
+    }
+}

+ 52 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/studentRequirement/StudentCourseRequirement.java

@@ -0,0 +1,52 @@
+package com.qmth.teachcloud.obe.been.result.report.studentRequirement;
+
+import java.util.List;
+
+public class StudentCourseRequirement {
+
+    private String courseCode;
+    private String courseName;
+    private String semesterName;
+    private Double score;
+    private List<StudentCourseRequirementDetail> requirementDetailList;
+
+    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 String getSemesterName() {
+        return semesterName;
+    }
+
+    public void setSemesterName(String semesterName) {
+        this.semesterName = semesterName;
+    }
+
+    public Double getScore() {
+        return score;
+    }
+
+    public void setScore(Double score) {
+        this.score = score;
+    }
+
+    public List<StudentCourseRequirementDetail> getRequirementDetailList() {
+        return requirementDetailList;
+    }
+
+    public void setRequirementDetailList(List<StudentCourseRequirementDetail> requirementDetailList) {
+        this.requirementDetailList = requirementDetailList;
+    }
+}

+ 66 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/studentRequirement/StudentCourseRequirementDetail.java

@@ -0,0 +1,66 @@
+package com.qmth.teachcloud.obe.been.result.report.studentRequirement;
+
+import java.util.List;
+
+public class StudentCourseRequirementDetail {
+
+    // 毕业要求名称
+    private String requirementName;
+    // 排序
+    private Integer requirementSortNum;
+    private String requirementContent;
+    // 学生个人达成度
+    private Double studentDegree;
+
+    private List<StudentCourseRequirementDetail> subRequirementDetailList;
+
+    public StudentCourseRequirementDetail() {
+    }
+
+    public StudentCourseRequirementDetail(Integer requirementSortNum, String requirementName, String requirementContent, Double studentDegree) {
+        this.requirementName = requirementName;
+        this.requirementSortNum = requirementSortNum;
+        this.requirementContent = requirementContent;
+        this.studentDegree = studentDegree;
+    }
+
+    public String getRequirementName() {
+        return requirementName;
+    }
+
+    public void setRequirementName(String requirementName) {
+        this.requirementName = requirementName;
+    }
+
+    public Integer getRequirementSortNum() {
+        return requirementSortNum;
+    }
+
+    public void setRequirementSortNum(Integer requirementSortNum) {
+        this.requirementSortNum = requirementSortNum;
+    }
+
+    public Double getStudentDegree() {
+        return studentDegree;
+    }
+
+    public void setStudentDegree(Double studentDegree) {
+        this.studentDegree = studentDegree;
+    }
+
+    public List<StudentCourseRequirementDetail> getSubRequirementDetailList() {
+        return subRequirementDetailList;
+    }
+
+    public void setSubRequirementDetailList(List<StudentCourseRequirementDetail> subRequirementDetailList) {
+        this.subRequirementDetailList = subRequirementDetailList;
+    }
+
+    public String getRequirementContent() {
+        return requirementContent;
+    }
+
+    public void setRequirementContent(String requirementContent) {
+        this.requirementContent = requirementContent;
+    }
+}

+ 26 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/studentRequirement/StudentRequirement.java

@@ -0,0 +1,26 @@
+package com.qmth.teachcloud.obe.been.result.report.studentRequirement;
+
+import java.util.List;
+
+public class StudentRequirement {
+
+    private List<StudentTotalRequirement> studentTotalRequirementList;
+
+    private List<StudentCourseRequirement> studentCourseRequirementList;
+
+    public List<StudentTotalRequirement> getStudentTotalRequirementList() {
+        return studentTotalRequirementList;
+    }
+
+    public void setStudentTotalRequirementList(List<StudentTotalRequirement> studentTotalRequirementList) {
+        this.studentTotalRequirementList = studentTotalRequirementList;
+    }
+
+    public List<StudentCourseRequirement> getStudentCourseRequirementList() {
+        return studentCourseRequirementList;
+    }
+
+    public void setStudentCourseRequirementList(List<StudentCourseRequirement> studentCourseRequirementList) {
+        this.studentCourseRequirementList = studentCourseRequirementList;
+    }
+}

+ 57 - 0
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/been/result/report/studentRequirement/StudentTotalRequirement.java

@@ -0,0 +1,57 @@
+package com.qmth.teachcloud.obe.been.result.report.studentRequirement;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class StudentTotalRequirement {
+
+    // 毕业要求名称
+    private String requirementName;
+    private Integer requirementSortNum;
+    // 学生个人达成度
+    private Double studentDegree;
+    // 专业达成度
+    private Double professionalDegree;
+    private List<StudentTotalRequirement> subStudentTotalRequirement = new ArrayList<>();
+
+
+    public String getRequirementName() {
+        return requirementName;
+    }
+
+    public void setRequirementName(String requirementName) {
+        this.requirementName = requirementName;
+    }
+
+    public Integer getRequirementSortNum() {
+        return requirementSortNum;
+    }
+
+    public void setRequirementSortNum(Integer requirementSortNum) {
+        this.requirementSortNum = requirementSortNum;
+    }
+
+    public Double getStudentDegree() {
+        return studentDegree;
+    }
+
+    public void setStudentDegree(Double studentDegree) {
+        this.studentDegree = studentDegree;
+    }
+
+    public Double getProfessionalDegree() {
+        return professionalDegree;
+    }
+
+    public void setProfessionalDegree(Double professionalDegree) {
+        this.professionalDegree = professionalDegree;
+    }
+
+    public List<StudentTotalRequirement> getSubStudentTotalRequirement() {
+        return subStudentTotalRequirement;
+    }
+
+    public void setSubStudentTotalRequirement(List<StudentTotalRequirement> subStudentTotalRequirement) {
+        this.subStudentTotalRequirement = subStudentTotalRequirement;
+    }
+}

Некоторые файлы не были показаны из-за большого количества измененных файлов