wangliang 1 år sedan
förälder
incheckning
bfa7881ebe
23 ändrade filer med 980 tillägg och 735 borttagningar
  1. 0 171
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/CourseTargetValueDto.java
  2. 43 54
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/CourseTargetWebDto.java
  3. 134 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/CourseTargetWordDto.java
  4. 35 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/DimensionDto.java
  5. 0 61
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/FinalScoreDto.java
  6. 47 33
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/FinalScoreOverviewDto.java
  7. 124 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/FinalScoreWordDto.java
  8. 9 8
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportCourseEvaluationResultDto.java
  9. 63 30
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportEvaluationDto.java
  10. 1 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentDto.java
  11. 58 7
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentFinalScoreDto.java
  12. 49 12
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentTargetDto.java
  13. 9 10
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentUsualScoreDto.java
  14. 118 11
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentUsualScoreObjDto.java
  15. 0 107
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/UsualScoreOverviewDto.java
  16. 13 12
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/UsualScoreWordDto.java
  17. 4 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/PaperStructResult.java
  18. 26 24
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCFinalScoreServiceImpl.java
  19. 24 22
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCUsualScoreServiceImpl.java
  20. 174 88
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRBasicInfoServiceImpl.java
  21. 30 60
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java
  22. 1 0
      distributed-print/src/main/java/com/qmth/distributed/print/api/TCFinalScoreController.java
  23. 18 16
      distributed-print/src/main/java/com/qmth/distributed/print/api/TRBasicInfoController.java

+ 0 - 171
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/CourseTargetValueDto.java

@@ -1,171 +0,0 @@
-package com.qmth.distributed.print.business.bean.dto.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;
-import java.util.List;
-
-/**
- * @Description: 课程目标值dto
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2024/2/26
- */
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class CourseTargetValueDto implements Serializable, Comparable<CourseTargetValueDto> {
-
-    @JsonSerialize(using = ToStringSerializer.class)
-    @ApiModelProperty(value = "课程目标id")
-    private Long targetId;
-
-    @ApiModelProperty(value = "课程目标名称")
-    private String targetName;
-
-    @ApiModelProperty(value = "毕业要求")
-    private String graduationRequirement;
-
-    @JsonSerialize(using = ToStringSerializer.class)
-    @ApiModelProperty(value = "评价方式id")
-    private Long evaluationId;
-
-    @ApiModelProperty(value = "评价方式")
-    private String evaluation;
-
-    @ApiModelProperty(value = "评价方式描述")
-    private String evaluationDesc;
-
-    @ApiModelProperty(value = "知识点集合")
-    private List<DimensionDto> dimensionList;
-
-    @ApiModelProperty(value = "目标整体权重")
-    private BigDecimal targetWeight;
-
-    @ApiModelProperty(value = "平时成绩信息")
-    private UsualScoreDto usualScoreDto;
-
-    @ApiModelProperty(value = "期末成绩权重")
-    private FinalScoreDto finalScoreDto;
-
-    public CourseTargetValueDto() {
-
-    }
-
-    public CourseTargetValueDto(Long targetId, String targetName) {
-        this.targetId = targetId;
-        this.targetName = targetName;
-    }
-
-    public CourseTargetValueDto(CourseTargetDto courseTargetDto) {
-        this.targetId = courseTargetDto.getTargetId();
-        this.targetName = courseTargetDto.getTargetName();
-        this.graduationRequirement = courseTargetDto.getGraduationRequirement();
-        setValue(courseTargetDto);
-    }
-
-    public void setValue(CourseTargetDto courseTargetDto) {
-        this.evaluationId = courseTargetDto.getEvaluationId();
-        this.evaluation = courseTargetDto.getEvaluation();
-        this.evaluationDesc = courseTargetDto.getEvaluationDesc();
-    }
-
-    public void updateInfo(CourseTargetDto courseTargetDto) {
-        setValue(courseTargetDto);
-    }
-
-    public String getGraduationRequirement() {
-        return graduationRequirement;
-    }
-
-    public void setGraduationRequirement(String graduationRequirement) {
-        this.graduationRequirement = graduationRequirement;
-    }
-
-    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 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 BigDecimal getTargetWeight() {
-        return targetWeight;
-    }
-
-    public void setTargetWeight(BigDecimal targetWeight) {
-        this.targetWeight = targetWeight;
-    }
-
-    public UsualScoreDto getUsualScoreDto() {
-        return usualScoreDto;
-    }
-
-    public void setUsualScoreDto(UsualScoreDto usualScoreDto) {
-        this.usualScoreDto = usualScoreDto;
-    }
-
-    public FinalScoreDto getFinalScoreDto() {
-        return finalScoreDto;
-    }
-
-    public void setFinalScoreDto(FinalScoreDto finalScoreDto) {
-        this.finalScoreDto = finalScoreDto;
-    }
-
-    @Override
-    public int compareTo(@NotNull CourseTargetValueDto o) {
-        if (o.getTargetId().longValue() < this.getTargetId().longValue()) {
-            return 1;
-        } else if (o.getTargetId().longValue() > this.getTargetId().longValue()) {
-            return -1;
-        } else {
-            return 0;
-        }
-    }
-}

+ 43 - 54
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/CourseTargetDto.java → distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/CourseTargetWebDto.java

@@ -3,10 +3,12 @@ package com.qmth.distributed.print.business.bean.dto.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.distributed.print.business.bean.dto.CourseWeightDto;
 import io.swagger.annotations.ApiModelProperty;
 import org.jetbrains.annotations.NotNull;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -17,7 +19,7 @@ import java.util.List;
  * @Date: 2024/2/26
  */
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public class CourseTargetDto implements Serializable, Comparable<CourseTargetDto> {
+public class CourseTargetWebDto implements Serializable, Comparable<CourseTargetWebDto> {
 
     @JsonSerialize(using = ToStringSerializer.class)
     @ApiModelProperty(value = "课程目标id")
@@ -29,54 +31,65 @@ public class CourseTargetDto implements Serializable, Comparable<CourseTargetDto
     @ApiModelProperty(value = "毕业要求")
     private String graduationRequirement;
 
-    @JsonSerialize(using = ToStringSerializer.class)
-    @ApiModelProperty(value = "评价方式id")
-    private Long evaluationId;
-
-    @ApiModelProperty(value = "评价方式")
-    private String evaluation;
+    @ApiModelProperty(value = "目标整体权重")
+    private BigDecimal targetWeight = new BigDecimal(0);
 
-    @ApiModelProperty(value = "评价方式描述")
-    private String evaluationDesc;
+    @ApiModelProperty(value = "目标整体分值")
+    private BigDecimal targetScore = new BigDecimal(0);
 
     @ApiModelProperty(value = "知识点集合")
     private List<DimensionDto> dimensionList;
 
     @ApiModelProperty(value = "目标达成评价值")
-    private Double evaluationValue;
+    private BigDecimal evaluationValue = new BigDecimal(0);
+
+    @ApiModelProperty(value = "换算平均分")
+    private BigDecimal matrixAvgScore = new BigDecimal(0);
 
     @ApiModelProperty(value = "评价方式集合")
     private List<ReportEvaluationDto> evaluationList;
 
-    public CourseTargetDto() {
+    public CourseTargetWebDto() {
 
     }
 
-    public CourseTargetDto(Long targetId, String targetName, Long evaluationId, String evaluation, String evaluationDesc, List<ReportEvaluationDto> evaluationList
-            , Double evaluationValue) {
-        this.targetId = targetId;
-        this.targetName = targetName;
-        this.evaluationId = evaluationId;
-        this.evaluation = evaluation;
-        this.evaluationDesc = evaluationDesc;
-        this.evaluationList = evaluationList;
-        this.evaluationValue = evaluationValue;
+    public CourseTargetWebDto(CourseWeightDto courseWeightDto) {
+        this.targetId = courseWeightDto.getCourseTargetId();
+        this.targetName = courseWeightDto.getCourseTargetName();
+        this.graduationRequirement = courseWeightDto.getDegreeRequirement();
+        this.targetWeight = courseWeightDto.getTotalWeight();
+        this.targetScore = courseWeightDto.getTotalScore();
     }
 
-    public CourseTargetDto(Long targetId, String targetName, Long evaluationId, String evaluation, String evaluationDesc, Double evaluationValue) {
-        this.targetId = targetId;
-        this.targetName = targetName;
-        this.evaluationId = evaluationId;
-        this.evaluation = evaluation;
-        this.evaluationDesc = evaluationDesc;
-        this.evaluationValue = evaluationValue;
+    public BigDecimal getMatrixAvgScore() {
+        return matrixAvgScore;
+    }
+
+    public void setMatrixAvgScore(BigDecimal matrixAvgScore) {
+        this.matrixAvgScore = matrixAvgScore;
+    }
+
+    public BigDecimal getTargetScore() {
+        return targetScore;
+    }
+
+    public void setTargetScore(BigDecimal targetScore) {
+        this.targetScore = targetScore;
     }
 
-    public Double getEvaluationValue() {
+    public BigDecimal getTargetWeight() {
+        return targetWeight;
+    }
+
+    public void setTargetWeight(BigDecimal targetWeight) {
+        this.targetWeight = targetWeight;
+    }
+
+    public BigDecimal getEvaluationValue() {
         return evaluationValue;
     }
 
-    public void setEvaluationValue(Double evaluationValue) {
+    public void setEvaluationValue(BigDecimal evaluationValue) {
         this.evaluationValue = evaluationValue;
     }
 
@@ -120,32 +133,8 @@ public class CourseTargetDto implements Serializable, Comparable<CourseTargetDto
         this.graduationRequirement = graduationRequirement;
     }
 
-    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;
-    }
-
     @Override
-    public int compareTo(@NotNull CourseTargetDto o) {
+    public int compareTo(@NotNull CourseTargetWebDto o) {
         if (o.getTargetId().longValue() < this.getTargetId().longValue()) {
             return 1;
         } else if (o.getTargetId().longValue() > this.getTargetId().longValue()) {

+ 134 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/CourseTargetWordDto.java

@@ -0,0 +1,134 @@
+package com.qmth.distributed.print.business.bean.dto.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.distributed.print.business.bean.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 BigDecimal targetWeight = new BigDecimal(0);
+
+    @ApiModelProperty(value = "目标整体分值")
+    private BigDecimal targetScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "换算平均分")
+    private BigDecimal matrixAvgScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "平时成绩信息")
+    private UsualScoreWordDto usualScoreDto;
+
+    @ApiModelProperty(value = "期末成绩信息")
+    private FinalScoreWordDto finalScoreDto;
+
+    public CourseTargetWordDto() {
+
+    }
+
+    public CourseTargetWordDto(CourseWeightDto courseWeightDto) {
+        this.targetId = courseWeightDto.getCourseTargetId();
+        this.targetName = courseWeightDto.getCourseTargetName();
+        this.graduationRequirement = courseWeightDto.getDegreeRequirement();
+        this.targetScore = courseWeightDto.getTotalScore();
+        this.targetWeight = courseWeightDto.getTotalWeight();
+    }
+
+    public String getGraduationRequirement() {
+        return graduationRequirement;
+    }
+
+    public void setGraduationRequirement(String graduationRequirement) {
+        this.graduationRequirement = graduationRequirement;
+    }
+
+    public BigDecimal getTargetScore() {
+        return targetScore;
+    }
+
+    public void setTargetScore(BigDecimal targetScore) {
+        this.targetScore = targetScore;
+    }
+
+    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 BigDecimal getTargetWeight() {
+        return targetWeight;
+    }
+
+    public void setTargetWeight(BigDecimal targetWeight) {
+        this.targetWeight = targetWeight;
+    }
+
+    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;
+    }
+
+    public void setMatrixAvgScore(BigDecimal matrixAvgScore) {
+        this.matrixAvgScore = matrixAvgScore;
+    }
+
+    @Override
+    public int compareTo(@NotNull CourseTargetWordDto o) {
+        if (o.getTargetId().longValue() < this.getTargetId().longValue()) {
+            return 1;
+        } else if (o.getTargetId().longValue() > this.getTargetId().longValue()) {
+            return -1;
+        } else {
+            return 0;
+        }
+    }
+}

+ 35 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/DimensionDto.java

@@ -18,6 +18,10 @@ import java.io.Serializable;
 @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;
@@ -29,17 +33,46 @@ public class DimensionDto implements Serializable, Comparable<DimensionDto> {
     private String dimensionName;
 
     @ApiModelProperty(value = "知识点分数")
-    private Double dimensionScore;
+    private Double dimensionScore = 0.0d;
+
+    @ApiModelProperty(value = "换算分数")
+    private Double matrixScore = 0.0d;
 
     public DimensionDto() {
 
     }
 
-    public DimensionDto(DimensionDto dimensionDto, Double dimensionScore) {
+    public DimensionDto(Long targetId, DimensionDto dimensionDto, Double 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, Double dimensionScore, Double matrixScore) {
+        this.targetId = targetId;
         this.dimensionId = dimensionDto.getDimensionId();
         this.dimensionCode = dimensionDto.getDimensionCode();
         this.dimensionName = dimensionDto.getDimensionName();
         this.dimensionScore = dimensionScore;
+        this.matrixScore = matrixScore;
+    }
+
+    public Double getMatrixScore() {
+        return matrixScore;
+    }
+
+    public void setMatrixScore(Double matrixScore) {
+        this.matrixScore = matrixScore;
+    }
+
+    public Long getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(Long targetId) {
+        this.targetId = targetId;
     }
 
     public Long getDimensionId() {

+ 0 - 61
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/FinalScoreDto.java

@@ -1,61 +0,0 @@
-package com.qmth.distributed.print.business.bean.dto.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 FinalScoreDto implements Serializable {
-
-    @ApiModelProperty(value = "期末成绩目标总分")
-    private Double finalScoreTargetSumScore;
-
-    @ApiModelProperty(value = "期末成绩目标整体权重")
-    private BigDecimal finalScoreSumWeight;
-
-    @ApiModelProperty(value = "期末成绩知识点分数")
-    private Double finalScoreDimensionScore;
-
-    public FinalScoreDto() {
-
-    }
-
-    public FinalScoreDto(Double finalScoreTargetSumScore, BigDecimal finalScoreSumWeight, Double finalScoreDimensionScore) {
-        this.finalScoreTargetSumScore = finalScoreTargetSumScore;
-        this.finalScoreSumWeight = finalScoreSumWeight;
-        this.finalScoreDimensionScore = finalScoreDimensionScore;
-    }
-
-    public Double getFinalScoreTargetSumScore() {
-        return finalScoreTargetSumScore;
-    }
-
-    public void setFinalScoreTargetSumScore(Double finalScoreTargetSumScore) {
-        this.finalScoreTargetSumScore = finalScoreTargetSumScore;
-    }
-
-    public BigDecimal getFinalScoreSumWeight() {
-        return finalScoreSumWeight;
-    }
-
-    public void setFinalScoreSumWeight(BigDecimal finalScoreSumWeight) {
-        this.finalScoreSumWeight = finalScoreSumWeight;
-    }
-
-    public Double getFinalScoreDimensionScore() {
-        return finalScoreDimensionScore;
-    }
-
-    public void setFinalScoreDimensionScore(Double finalScoreDimensionScore) {
-        this.finalScoreDimensionScore = finalScoreDimensionScore;
-    }
-}

+ 47 - 33
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/FinalScoreOverviewDto.java

@@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 /**
  * @Description: 期末成绩分数图dto
@@ -21,36 +22,33 @@ public class FinalScoreOverviewDto implements Serializable {
     @ApiModelProperty(value = "目标id")
     private Long targetId;
 
-    @ApiModelProperty(value = "最高分")
-    private Double maxScore;
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "评价方式id")
+    private Long evaluationId;
+
+    @ApiModelProperty(value = "评价方式")
+    private String evaluation;
 
-    @ApiModelProperty(value = "最低分")
-    private Double minScore;
+    @ApiModelProperty(value = "评价方式描述")
+    private String evaluationDesc;
 
-    @ApiModelProperty(value = "平均分")
-    private Double avgScore;
+    @ApiModelProperty(value = "目标分")
+    private Double targetScore;
 
-    @ApiModelProperty(value = "总分")
-    private Double sumScore;
+    @ApiModelProperty(value = "目标权重")
+    private BigDecimal targetWeight;
 
     public FinalScoreOverviewDto() {
 
     }
 
-    public FinalScoreOverviewDto(Long targetId, Double maxScore, Double minScore, Double avgScore,Double sumScore) {
+    public FinalScoreOverviewDto(Long targetId, Long evaluationId, String evaluation, String evaluationDesc, Double targetScore, BigDecimal targetWeight) {
         this.targetId = targetId;
-        this.maxScore = maxScore;
-        this.minScore = minScore;
-        this.avgScore = avgScore;
-        this.sumScore = sumScore;
-    }
-
-    public Double getSumScore() {
-        return sumScore;
-    }
-
-    public void setSumScore(Double sumScore) {
-        this.sumScore = sumScore;
+        this.evaluationId = evaluationId;
+        this.evaluation = evaluation;
+        this.evaluationDesc = evaluationDesc;
+        this.targetScore = targetScore;
+        this.targetWeight = targetWeight;
     }
 
     public Long getTargetId() {
@@ -61,27 +59,43 @@ public class FinalScoreOverviewDto implements Serializable {
         this.targetId = targetId;
     }
 
-    public Double getMaxScore() {
-        return maxScore;
+    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 setMaxScore(Double maxScore) {
-        this.maxScore = maxScore;
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
     }
 
-    public Double getMinScore() {
-        return minScore;
+    public Double getTargetScore() {
+        return targetScore;
     }
 
-    public void setMinScore(Double minScore) {
-        this.minScore = minScore;
+    public void setTargetScore(Double targetScore) {
+        this.targetScore = targetScore;
     }
 
-    public Double getAvgScore() {
-        return avgScore;
+    public BigDecimal getTargetWeight() {
+        return targetWeight;
     }
 
-    public void setAvgScore(Double avgScore) {
-        this.avgScore = avgScore;
+    public void setTargetWeight(BigDecimal targetWeight) {
+        this.targetWeight = targetWeight;
     }
 }

+ 124 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/FinalScoreWordDto.java

@@ -0,0 +1,124 @@
+package com.qmth.distributed.print.business.bean.dto.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.distributed.print.business.bean.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 Double finalScoreDimensionScore;
+
+    @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 Double getFinalScoreDimensionScore() {
+        return finalScoreDimensionScore;
+    }
+
+    public void setFinalScoreDimensionScore(Double 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;
+    }
+}

+ 9 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportCourseEvaluationResultDto.java

@@ -3,6 +3,7 @@ package com.qmth.distributed.print.business.bean.dto.report;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -18,22 +19,22 @@ public class ReportCourseEvaluationResultDto implements Serializable {
     private String target;
 
     @ApiModelProperty(value = "课程目标达成评价值")
-    private Double targetValue;
+    private BigDecimal targetValue = new BigDecimal(0);
 
     @ApiModelProperty(value = "课程目标集合")
-    private List<CourseTargetDto> targetList;
+    private List<CourseTargetWebDto> targetList;
 
     public ReportCourseEvaluationResultDto() {
 
     }
 
-    public ReportCourseEvaluationResultDto(String target, Double targetValue, List<CourseTargetDto> targetList) {
+    public ReportCourseEvaluationResultDto(String target, BigDecimal targetValue, List<CourseTargetWebDto> targetList) {
         this.target = target;
         this.targetValue = targetValue;
         this.targetList = targetList;
     }
 
-    public ReportCourseEvaluationResultDto(List<CourseTargetDto> targetList) {
+    public ReportCourseEvaluationResultDto(List<CourseTargetWebDto> targetList) {
         this.targetList = targetList;
     }
 
@@ -45,19 +46,19 @@ public class ReportCourseEvaluationResultDto implements Serializable {
         this.target = target;
     }
 
-    public Double getTargetValue() {
+    public BigDecimal getTargetValue() {
         return targetValue;
     }
 
-    public void setTargetValue(Double targetValue) {
+    public void setTargetValue(BigDecimal targetValue) {
         this.targetValue = targetValue;
     }
 
-    public List<CourseTargetDto> getTargetList() {
+    public List<CourseTargetWebDto> getTargetList() {
         return targetList;
     }
 
-    public void setTargetList(List<CourseTargetDto> targetList) {
+    public void setTargetList(List<CourseTargetWebDto> targetList) {
         this.targetList = targetList;
     }
 }

+ 63 - 30
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportEvaluationDto.java

@@ -1,11 +1,14 @@
 package com.qmth.distributed.print.business.bean.dto.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.distributed.print.business.bean.dto.CourseWeightDetailDto;
 import io.swagger.annotations.ApiModelProperty;
+import org.jetbrains.annotations.NotNull;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
-import java.util.List;
 
 /**
  * @Description: 报告评价方式dto
@@ -15,60 +18,90 @@ import java.util.List;
  * @Date: 2024/2/26
  */
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public class ReportEvaluationDto implements Serializable {
+public class ReportEvaluationDto implements Serializable, Comparable<ReportEvaluationDto> {
 
-    @ApiModelProperty(value = "名称")
-    private String name;
+    @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 weight;
+    private BigDecimal targetWeight = new BigDecimal(0);
 
     @ApiModelProperty(value = "目标分值")
-    private Double score = 0.0d;
-
-    @ApiModelProperty(value = "实际平均分")
-    private Double avg = 0.0d;
+    private BigDecimal targetScore = new BigDecimal(0);
 
     public ReportEvaluationDto() {
 
     }
 
-    public ReportEvaluationDto(String name, BigDecimal weight, Double score, Double avg) {
-        this.name = name;
-        this.weight = weight;
-        this.score = score;
-        this.avg = avg;
+    public ReportEvaluationDto(Long targetId, CourseWeightDetailDto courseWeightDetailDto) {
+        this.targetId = targetId;
+        this.evaluationId = courseWeightDetailDto.getEvaluationId();
+        this.evaluation = courseWeightDetailDto.getEvaluationName();
+        this.targetWeight = courseWeightDetailDto.getWeight();
+        this.targetScore = courseWeightDetailDto.getTargetScore();
+    }
+
+    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 String getName() {
-        return name;
+    public void setEvaluation(String evaluation) {
+        this.evaluation = evaluation;
     }
 
-    public void setName(String name) {
-        this.name = name;
+    public String getEvaluationDesc() {
+        return evaluationDesc;
     }
 
-    public BigDecimal getWeight() {
-        return weight;
+    public void setEvaluationDesc(String evaluationDesc) {
+        this.evaluationDesc = evaluationDesc;
     }
 
-    public void setWeight(BigDecimal weight) {
-        this.weight = weight;
+    public BigDecimal getTargetWeight() {
+        return targetWeight;
     }
 
-    public Double getScore() {
-        return score;
+    public void setTargetWeight(BigDecimal targetWeight) {
+        this.targetWeight = targetWeight;
     }
 
-    public void setScore(Double score) {
-        this.score = score;
+    public BigDecimal getTargetScore() {
+        return targetScore;
     }
 
-    public Double getAvg() {
-        return avg;
+    public void setTargetScore(BigDecimal targetScore) {
+        this.targetScore = targetScore;
     }
 
-    public void setAvg(Double avg) {
-        this.avg = avg;
+    @Override
+    public int compareTo(@NotNull ReportEvaluationDto o) {
+        return this.getEvaluation().compareTo(o.getEvaluation());
     }
 }

+ 1 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentDto.java

@@ -27,7 +27,7 @@ public class ReportExamStudentDto implements Serializable {
     @ApiModelProperty(value = "行政班级")
     private String administrativeClass;
 
-    @ApiModelProperty(value = "成绩")
+    @ApiModelProperty(value = "综合成绩")
     private Double score;
 
     @ApiModelProperty(value = "课程目标集合")
@@ -41,7 +41,6 @@ public class ReportExamStudentDto implements Serializable {
         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());
     }
@@ -56,7 +55,6 @@ public class ReportExamStudentDto implements Serializable {
     public ReportExamStudentDto(FinalScoreResult finalScoreResult) {
         this.name = finalScoreResult.getName();
         this.studentCode = finalScoreResult.getStudentCode();
-        this.score = finalScoreResult.getFinalScore();
         this.administrativeClass = finalScoreResult.getAdministrativeClass();
     }
 

+ 58 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentFinalScoreDto.java

@@ -1,6 +1,8 @@
 package com.qmth.distributed.print.business.bean.dto.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;
@@ -17,8 +19,21 @@ import java.util.List;
 @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 weight;
+    private BigDecimal targetWeight = new BigDecimal(0);
+
+    @ApiModelProperty(value = "目标分值")
+    private BigDecimal targetScore = new BigDecimal(0);
 
     @ApiModelProperty(value = "课程目标集合")
     private List<DimensionDto> dimensionList;
@@ -27,21 +42,57 @@ public class ReportExamStudentFinalScoreDto implements Serializable {
 
     }
 
-    public ReportExamStudentFinalScoreDto(BigDecimal weight, List<DimensionDto> dimensionList) {
-        this.weight = weight;
+    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, List<DimensionDto> dimensionList) {
+        this.evaluationId = finalScoreWordDto.getEvaluationId();
+        this.evaluation = finalScoreWordDto.getEvaluation();
+        this.evaluationDesc = finalScoreWordDto.getEvaluationDesc();
+        this.targetWeight = finalScoreWordDto.getFinalScoreSumWeight();
+        this.targetScore = finalScoreWordDto.getFinalScoreTargetSumScore();
         this.dimensionList = dimensionList;
     }
 
+    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 getWeight() {
-        return weight;
+    public BigDecimal getTargetWeight() {
+        return targetWeight;
+    }
+
+    public void setTargetWeight(BigDecimal targetWeight) {
+        this.targetWeight = targetWeight;
+    }
+
+    public BigDecimal getTargetScore() {
+        return targetScore;
     }
 
-    public void setWeight(BigDecimal weight) {
-        this.weight = weight;
+    public void setTargetScore(BigDecimal targetScore) {
+        this.targetScore = targetScore;
     }
 
     public List<DimensionDto> getDimensionList() {

+ 49 - 12
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentTargetDto.java

@@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModelProperty;
 import org.jetbrains.annotations.NotNull;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 /**
  * @Description: 报告课程考核成绩评价明细结果-考生-目标dto
@@ -25,6 +26,18 @@ public class ReportExamStudentTargetDto implements Serializable, Comparable<Repo
     @ApiModelProperty(value = "课程目标名称")
     private String targetName;
 
+    @ApiModelProperty(value = "毕业要求")
+    private String graduationRequirement;
+
+    @ApiModelProperty(value = "目标整体权重")
+    private BigDecimal targetWeight = new BigDecimal(0);
+
+    @ApiModelProperty(value = "目标整体分值")
+    private BigDecimal targetScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "目标达成评价值")
+    private BigDecimal evaluationValue = new BigDecimal(0);
+
     @ApiModelProperty(value = "期末成绩")
     private ReportExamStudentFinalScoreDto finalScore;
 
@@ -35,22 +48,22 @@ public class ReportExamStudentTargetDto implements Serializable, Comparable<Repo
 
     }
 
-    public ReportExamStudentTargetDto(Long targetId, String targetName) {
-        this.targetId = targetId;
-        this.targetName = targetName;
+    public ReportExamStudentTargetDto(CourseTargetWordDto courseTargetWordDto, ReportExamStudentFinalScoreDto finalScore, ReportExamStudentUsualScoreDto usualScore) {
+        this.targetId = courseTargetWordDto.getTargetId();
+        this.targetName = courseTargetWordDto.getTargetName();
+        this.graduationRequirement = courseTargetWordDto.getGraduationRequirement();
+        this.targetWeight = courseTargetWordDto.getTargetWeight();
+        this.targetScore = courseTargetWordDto.getTargetScore();
+        this.finalScore = finalScore;
+        this.usualScore = usualScore;
     }
 
-    public ReportExamStudentTargetDto(Long targetId, String targetName, ReportExamStudentFinalScoreDto finalScore) {
-        this.targetId = targetId;
-        this.targetName = targetName;
-        this.finalScore = finalScore;
+    public BigDecimal getTargetScore() {
+        return targetScore;
     }
 
-    public ReportExamStudentTargetDto(Long targetId, String targetName, ReportExamStudentFinalScoreDto finalScore, ReportExamStudentUsualScoreDto usualScore) {
-        this.targetId = targetId;
-        this.targetName = targetName;
-        this.finalScore = finalScore;
-        this.usualScore = usualScore;
+    public void setTargetScore(BigDecimal targetScore) {
+        this.targetScore = targetScore;
     }
 
     public Long getTargetId() {
@@ -85,6 +98,30 @@ public class ReportExamStudentTargetDto implements Serializable, Comparable<Repo
         this.usualScore = usualScore;
     }
 
+    public String getGraduationRequirement() {
+        return graduationRequirement;
+    }
+
+    public void setGraduationRequirement(String graduationRequirement) {
+        this.graduationRequirement = graduationRequirement;
+    }
+
+    public BigDecimal getTargetWeight() {
+        return targetWeight;
+    }
+
+    public void setTargetWeight(BigDecimal targetWeight) {
+        this.targetWeight = targetWeight;
+    }
+
+    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()) {

+ 9 - 10
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentUsualScoreDto.java

@@ -4,8 +4,8 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import io.swagger.annotations.ApiModelProperty;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 报告课程考核成绩评价明细结果-考生-平时成绩dto
@@ -17,8 +17,8 @@ import java.util.List;
 @JsonInclude(JsonInclude.Include.NON_NULL)
 public class ReportExamStudentUsualScoreDto implements Serializable {
 
-    @ApiModelProperty(value = "权重")
-    private BigDecimal weight;
+    @ApiModelProperty(value = "平时成绩对象集合")
+    private Map<Long, List<ReportExamStudentUsualScoreObjDto>> scoreMap;
 
     @ApiModelProperty(value = "平时成绩对象集合")
     private List<ReportExamStudentUsualScoreObjDto> scoreList;
@@ -27,21 +27,20 @@ public class ReportExamStudentUsualScoreDto implements Serializable {
 
     }
 
-    public ReportExamStudentUsualScoreDto(BigDecimal weight, List<ReportExamStudentUsualScoreObjDto> scoreList) {
-        this.weight = weight;
-        this.scoreList = scoreList;
+    public ReportExamStudentUsualScoreDto(Map<Long, List<ReportExamStudentUsualScoreObjDto>> scoreMap) {
+        this.scoreMap = scoreMap;
     }
 
     public ReportExamStudentUsualScoreDto(List<ReportExamStudentUsualScoreObjDto> scoreList) {
         this.scoreList = scoreList;
     }
 
-    public BigDecimal getWeight() {
-        return weight;
+    public Map<Long, List<ReportExamStudentUsualScoreObjDto>> getScoreMap() {
+        return scoreMap;
     }
 
-    public void setWeight(BigDecimal weight) {
-        this.weight = weight;
+    public void setScoreMap(Map<Long, List<ReportExamStudentUsualScoreObjDto>> scoreMap) {
+        this.scoreMap = scoreMap;
     }
 
     public List<ReportExamStudentUsualScoreObjDto> getScoreList() {

+ 118 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentUsualScoreObjDto.java

@@ -1,9 +1,13 @@
 package com.qmth.distributed.print.business.bean.dto.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
@@ -13,29 +17,119 @@ import java.io.Serializable;
  * @Date: 2024/2/26
  */
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public class ReportExamStudentUsualScoreObjDto implements Serializable {
+public class ReportExamStudentUsualScoreObjDto implements Serializable, Comparable<ReportExamStudentUsualScoreObjDto> {
 
-    @ApiModelProperty(value = "名称")
-    private String name;
+    @JsonSerialize(using = ToStringSerializer.class)
+    @ApiModelProperty(value = "课程目标id")
+    private Long targetId;
 
-    @ApiModelProperty(value = "分数")
-    private Double score;
+    @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 targetSumWeight = new BigDecimal(0);
+
+    @ApiModelProperty(value = "作业整体分值")
+    private BigDecimal targetSumScore = new BigDecimal(0);
+
+    @ApiModelProperty(value = "原始分数")
+    private Double score = 0.0d;
+
+    @ApiModelProperty(value = "换算分数")
+    private Double matrixScore = 0.0d;
 
     public ReportExamStudentUsualScoreObjDto() {
 
     }
 
-    public ReportExamStudentUsualScoreObjDto(String name, Double score) {
-        this.name = name;
+    public ReportExamStudentUsualScoreObjDto(Long targetId, ReportEvaluationDto reportEvaluationDto, Double score, Double matrixScore, BigDecimal targetSumWeight, 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;
+        this.targetSumWeight = targetSumWeight;
+    }
+
+    public Long getTargetId() {
+        return targetId;
+    }
+
+    public void setTargetId(Long targetId) {
+        this.targetId = targetId;
+    }
+
+    public BigDecimal getTargetSumWeight() {
+        return targetSumWeight;
+    }
+
+    public void setTargetSumWeight(BigDecimal targetSumWeight) {
+        this.targetSumWeight = targetSumWeight;
+    }
+
+    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 String getName() {
-        return name;
+    public BigDecimal getTargetWeight() {
+        return targetWeight;
     }
 
-    public void setName(String name) {
-        this.name = name;
+    public void setTargetWeight(BigDecimal targetWeight) {
+        this.targetWeight = targetWeight;
+    }
+
+    public BigDecimal getTargetScore() {
+        return targetScore;
+    }
+
+    public void setTargetScore(BigDecimal targetScore) {
+        this.targetScore = targetScore;
     }
 
     public Double getScore() {
@@ -45,4 +139,17 @@ public class ReportExamStudentUsualScoreObjDto implements Serializable {
     public void setScore(Double score) {
         this.score = score;
     }
+
+    public Double getMatrixScore() {
+        return matrixScore;
+    }
+
+    public void setMatrixScore(Double matrixScore) {
+        this.matrixScore = matrixScore;
+    }
+
+    @Override
+    public int compareTo(@NotNull ReportExamStudentUsualScoreObjDto o) {
+        return this.getEvaluation().compareTo(o.getEvaluation());
+    }
 }

+ 0 - 107
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/UsualScoreOverviewDto.java

@@ -1,107 +0,0 @@
-package com.qmth.distributed.print.business.bean.dto.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 UsualScoreOverviewDto implements Serializable {
-
-    @ApiModelProperty(value = "作业名称")
-    private String name;
-
-    @ApiModelProperty(value = "最高分")
-    private Double maxScore;
-
-    @ApiModelProperty(value = "最低分")
-    private Double minScore;
-
-    @ApiModelProperty(value = "平均分")
-    private Double avgScore;
-
-    @ApiModelProperty(value = "总分")
-    private Double sumScore;
-
-    @ApiModelProperty(value = "目标分")
-    private Double targetScore;
-
-    @ApiModelProperty(value = "目标权重")
-    private BigDecimal targetWeight;
-
-    public UsualScoreOverviewDto() {
-
-    }
-
-    public UsualScoreOverviewDto(String name, Double maxScore, Double minScore, Double avgScore, Double sumScore) {
-        this.name = name;
-        this.maxScore = maxScore;
-        this.minScore = minScore;
-        this.avgScore = avgScore;
-        this.sumScore = sumScore;
-    }
-
-    public Double getTargetScore() {
-        return targetScore;
-    }
-
-    public void setTargetScore(Double targetScore) {
-        this.targetScore = targetScore;
-    }
-
-    public BigDecimal getTargetWeight() {
-        return targetWeight;
-    }
-
-    public void setTargetWeight(BigDecimal targetWeight) {
-        this.targetWeight = targetWeight;
-    }
-
-    public Double getSumScore() {
-        return sumScore;
-    }
-
-    public void setSumScore(Double sumScore) {
-        this.sumScore = sumScore;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Double getMaxScore() {
-        return maxScore;
-    }
-
-    public void setMaxScore(Double maxScore) {
-        this.maxScore = maxScore;
-    }
-
-    public Double getMinScore() {
-        return minScore;
-    }
-
-    public void setMinScore(Double minScore) {
-        this.minScore = minScore;
-    }
-
-    public Double getAvgScore() {
-        return avgScore;
-    }
-
-    public void setAvgScore(Double avgScore) {
-        this.avgScore = avgScore;
-    }
-}

+ 13 - 12
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/UsualScoreDto.java → distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/UsualScoreWordDto.java

@@ -15,40 +15,41 @@ import java.util.List;
  * @Date: 2024/2/26
  */
 @JsonInclude(JsonInclude.Include.NON_NULL)
-public class UsualScoreDto implements Serializable {
+public class UsualScoreWordDto implements Serializable {
 
     @ApiModelProperty(value = "平时成绩目标总分")
-    private Double usualScoreTargetSumScore;
+    private BigDecimal usualScoreTargetSumScore = new BigDecimal(0);
 
     @ApiModelProperty(value = "平时成绩目标整体权重")
-    private BigDecimal usualScoreTargetSumWeight;
+    private BigDecimal usualScoreTargetSumWeight = new BigDecimal(0);
 
     @ApiModelProperty(value = "平时成绩详情")
-    private List<UsualScoreOverviewDto> usualScoreDetailList;
+    private List<ReportEvaluationDto> usualScoreDetailList;
 
-    public UsualScoreDto() {
+    public UsualScoreWordDto() {
 
     }
-
-    public UsualScoreDto(Double usualScoreTargetSumScore, BigDecimal usualScoreTargetSumWeight, List<UsualScoreOverviewDto> usualScoreDetailList) {
-        this.usualScoreTargetSumScore = usualScoreTargetSumScore;
+    public UsualScoreWordDto(BigDecimal usualScoreTargetSumWeight) {
+        this.usualScoreTargetSumWeight = usualScoreTargetSumWeight;
+    }
+    public UsualScoreWordDto(BigDecimal usualScoreTargetSumWeight, List<ReportEvaluationDto> usualScoreDetailList) {
         this.usualScoreTargetSumWeight = usualScoreTargetSumWeight;
         this.usualScoreDetailList = usualScoreDetailList;
     }
 
-    public List<UsualScoreOverviewDto> getUsualScoreDetailList() {
+    public List<ReportEvaluationDto> getUsualScoreDetailList() {
         return usualScoreDetailList;
     }
 
-    public void setUsualScoreDetailList(List<UsualScoreOverviewDto> usualScoreDetailList) {
+    public void setUsualScoreDetailList(List<ReportEvaluationDto> usualScoreDetailList) {
         this.usualScoreDetailList = usualScoreDetailList;
     }
 
-    public Double getUsualScoreTargetSumScore() {
+    public BigDecimal getUsualScoreTargetSumScore() {
         return usualScoreTargetSumScore;
     }
 
-    public void setUsualScoreTargetSumScore(Double usualScoreTargetSumScore) {
+    public void setUsualScoreTargetSumScore(BigDecimal usualScoreTargetSumScore) {
         this.usualScoreTargetSumScore = usualScoreTargetSumScore;
     }
 

+ 4 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/PaperStructResult.java

@@ -1,6 +1,6 @@
 package com.qmth.distributed.print.business.bean.result.report;
 
-import com.qmth.distributed.print.business.bean.dto.report.CourseTargetDto;
+import com.qmth.distributed.print.business.bean.dto.report.CourseTargetWebDto;
 import io.swagger.annotations.ApiModelProperty;
 import org.hibernate.validator.constraints.Range;
 
@@ -34,7 +34,7 @@ public class PaperStructResult implements Serializable {
 
     @ApiModelProperty(value = "课程目标集合")
     @NotEmpty(message = "课程目标集合不能为空")
-    private List<CourseTargetDto> targetList = new ArrayList<>();
+    private List<CourseTargetWebDto> targetList = new ArrayList<>();
 
     public PaperStructResult() {
 
@@ -70,11 +70,11 @@ public class PaperStructResult implements Serializable {
         this.score = score;
     }
 
-    public List<CourseTargetDto> getTargetList() {
+    public List<CourseTargetWebDto> getTargetList() {
         return targetList;
     }
 
-    public void setTargetList(List<CourseTargetDto> targetList) {
+    public void setTargetList(List<CourseTargetWebDto> targetList) {
         this.targetList = targetList;
     }
 }

+ 26 - 24
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCFinalScoreServiceImpl.java

@@ -104,33 +104,35 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
 
             for (int i = 0; i < list.size(); i++) {
                 Map<String, String> objectMap = list.get(i);
-                boolean error = false;
-                JSONArray jsonArray = new JSONArray();
-                TCFinalScore tcFinalScore = new TCFinalScore(examId, courseCode, markPaper.getCourseName(), paperNumber, SourceEnum.EXCEL_IMPORT, sysUser.getId());
-                for (Map.Entry<String, String> entry : objectMap.entrySet()) {
-                    JSONObject jsonObject = new JSONObject();
-                    if (Objects.isNull(entry.getValue()) || Objects.equals(entry.getValue().trim(), "")) {
-                        errorData.add("excel第" + (i + 1) + "行[").add(entry.getKey() + "]为空;").add("\r\n");
-                        error = true;
-                    } else {
-                        if (Objects.equals(entry.getKey().trim(), "学号")) {
-                            tcFinalScore.setStudentCode(entry.getValue());
-                        } else if (Objects.equals(entry.getKey().trim(), "姓名")) {
-                            tcFinalScore.setName(entry.getValue());
-                        } else if (Objects.equals(entry.getKey().trim(), "成绩")) {
-                            tcFinalScore.setScore(Double.valueOf(entry.getValue()));
+                if (!CollectionUtils.isEmpty(objectMap)) {
+                    boolean error = false;
+                    JSONArray jsonArray = new JSONArray();
+                    TCFinalScore tcFinalScore = new TCFinalScore(examId, courseCode, markPaper.getCourseName(), paperNumber, SourceEnum.EXCEL_IMPORT, sysUser.getId());
+                    for (Map.Entry<String, String> entry : objectMap.entrySet()) {
+                        JSONObject jsonObject = new JSONObject();
+                        if (Objects.isNull(entry.getValue()) || Objects.equals(entry.getValue().trim(), "")) {
+                            errorData.add("excel第" + (i + 1) + "行[").add(entry.getKey() + "]为空;").add("\r\n");
+                            error = true;
                         } else {
-                            jsonObject.put("name", entry.getKey());
-                            jsonObject.put("score", entry.getValue());
-                            jsonArray.add(jsonObject);
+                            if (Objects.equals(entry.getKey().trim(), "学号")) {
+                                tcFinalScore.setStudentCode(entry.getValue());
+                            } else if (Objects.equals(entry.getKey().trim(), "姓名")) {
+                                tcFinalScore.setName(entry.getValue());
+                            } else if (Objects.equals(entry.getKey().trim(), "成绩")) {
+                                tcFinalScore.setScore(Double.valueOf(entry.getValue()));
+                            } else {
+                                jsonObject.put("name", entry.getKey());
+                                jsonObject.put("score", entry.getValue());
+                                jsonArray.add(jsonObject);
+                            }
                         }
                     }
-                }
-                if (jsonArray.size() > 0) {
-                    tcFinalScore.setScoreDetail(jsonArray.toJSONString());
-                }
-                if (!error) {
-                    tcFinalScoreList.add(tcFinalScore);
+                    if (jsonArray.size() > 0) {
+                        tcFinalScore.setScoreDetail(jsonArray.toJSONString());
+                    }
+                    if (!error) {
+                        tcFinalScoreList.add(tcFinalScore);
+                    }
                 }
             }
             if (!CollectionUtils.isEmpty(tcFinalScoreList)) {

+ 24 - 22
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCUsualScoreServiceImpl.java

@@ -89,31 +89,33 @@ public class TCUsualScoreServiceImpl extends ServiceImpl<TCUsualScoreMapper, TCU
 
             for (int i = 0; i < list.size(); i++) {
                 Map<String, String> objectMap = list.get(i);
-                boolean error = false;
-                JSONArray jsonArray = new JSONArray();
-                TCUsualScore tcUsualScore = new TCUsualScore(examId, courseCode, markPaper.getCourseName(), paperNumber, sysUser.getId());
-                for (Map.Entry<String, String> entry : objectMap.entrySet()) {
-                    JSONObject jsonObject = new JSONObject();
-                    if (Objects.isNull(entry.getValue()) || Objects.equals(entry.getValue().trim(), "")) {
-                        errorData.add("excel第" + (i + 1) + "行[").add(entry.getKey() + "]为空;").add("\r\n");
-                        error = true;
-                    } else {
-                        if (Objects.equals(entry.getKey().trim(), "学号")) {
-                            tcUsualScore.setStudentCode(entry.getValue());
-                        } else if (Objects.equals(entry.getKey().trim(), "姓名")) {
-                            tcUsualScore.setName(entry.getValue());
+                if (!CollectionUtils.isEmpty(objectMap)) {
+                    boolean error = false;
+                    JSONArray jsonArray = new JSONArray();
+                    TCUsualScore tcUsualScore = new TCUsualScore(examId, courseCode, markPaper.getCourseName(), paperNumber, sysUser.getId());
+                    for (Map.Entry<String, String> entry : objectMap.entrySet()) {
+                        JSONObject jsonObject = new JSONObject();
+                        if (Objects.isNull(entry.getValue()) || Objects.equals(entry.getValue().trim(), "")) {
+                            errorData.add("excel第" + (i + 1) + "行[").add(entry.getKey() + "]为空;").add("\r\n");
+                            error = true;
                         } else {
-                            jsonObject.put("name", entry.getKey());
-                            jsonObject.put("score", entry.getValue());
-                            jsonArray.add(jsonObject);
+                            if (Objects.equals(entry.getKey().trim(), "学号")) {
+                                tcUsualScore.setStudentCode(entry.getValue());
+                            } else if (Objects.equals(entry.getKey().trim(), "姓名")) {
+                                tcUsualScore.setName(entry.getValue());
+                            } else {
+                                jsonObject.put("name", entry.getKey());
+                                jsonObject.put("score", entry.getValue());
+                                jsonArray.add(jsonObject);
+                            }
                         }
                     }
-                }
-                if (jsonArray.size() > 0) {
-                    tcUsualScore.setScore(jsonArray.toJSONString());
-                }
-                if (!error) {
-                    tcUsualScoreList.add(tcUsualScore);
+                    if (jsonArray.size() > 0) {
+                        tcUsualScore.setScore(jsonArray.toJSONString());
+                    }
+                    if (!error) {
+                        tcUsualScoreList.add(tcUsualScore);
+                    }
                 }
             }
             if (!CollectionUtils.isEmpty(tcUsualScoreList)) {

+ 174 - 88
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRBasicInfoServiceImpl.java

@@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.gson.reflect.TypeToken;
+import com.qmth.distributed.print.business.bean.dto.CourseWeightDetailDto;
+import com.qmth.distributed.print.business.bean.dto.CourseWeightDto;
 import com.qmth.distributed.print.business.bean.dto.FinalScoreDto;
 import com.qmth.distributed.print.business.bean.dto.report.*;
 import com.qmth.distributed.print.business.bean.result.FinalScoreResult;
@@ -14,12 +16,14 @@ import com.qmth.distributed.print.business.entity.TRBasicInfo;
 import com.qmth.distributed.print.business.mapper.TRBasicInfoMapper;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.entity.BasicSemester;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.BasicSemesterService;
 import com.qmth.teachcloud.common.util.GsonUtil;
 import com.qmth.teachcloud.common.util.JacksonUtil;
+import com.qmth.teachcloud.common.util.ServletUtil;
 import com.qmth.teachcloud.mark.bean.archivescore.ScoreRangeVo;
 import com.qmth.teachcloud.mark.entity.MarkPaper;
-import com.qmth.teachcloud.mark.service.MarkStudentService;
 import com.qmth.teachcloud.mark.utils.Calculator;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -28,7 +32,6 @@ import org.springframework.util.CollectionUtils;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
-import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -97,68 +100,133 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
      */
     @Override
     public Map<String, Object> getReportCalculateParams(TRBasicInfo trBasicInfo, List<PaperStructResult> paperStructResultList) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
         Map<String, Object> paramsMap = new HashMap<>();
         //查询考生数据
         List<FinalScoreResult> finalScoreResultList = tcFinalScoreService.examStudentOverview(trBasicInfo.getExamId(), trBasicInfo.getCourseCode(), trBasicInfo.getPaperNumber());//考生成绩
-        Map<String, List<Double>> usualScoreMap = new LinkedHashMap<>();//汇总平常成绩分数(用来算最高分,最低分,平均分)
-        Map<Long, List<Double>> finalScoreTargetMap = new LinkedHashMap<>();//汇总各课程目标期末考试分数(用来算最高分,最低分,平均分)
-        Map<String, Map<Long, Map<Long, DimensionDto>>> finalScoreExamStudentDimensionMap = new LinkedHashMap<>();//汇总考生课程目标-知识点
-        Map<Long, Map<Long, DimensionDto>> finalScoreExamStudentDimensionSumMap = new LinkedHashMap<>();//汇总考生课程目标-知识点总分
-        Map<Long, Map<Long, DimensionDto>> targetDimensionMap = new LinkedHashMap<>();//课程目标-知识点
+//        Map<String, List<Double>> usualScoreMap = new LinkedHashMap<>();//汇总平常成绩分数(用来算最高分,最低分,平均分)
+//        Map<Long, List<Double>> finalScoreTargetMap = new LinkedHashMap<>();//汇总各课程目标期末考试分数(用来算最高分,最低分,平均分)
+        Map<String, Map<Long, Map<Long, DimensionDto>>> finalScoreExamStudentDimensionMap = new LinkedHashMap<>();//汇总考生课程目标-知识点卷面分(知识点得分用)
+        Map<Long, Map<Long, DimensionDto>> finalScoreExamStudentDimensionSumMap = new LinkedHashMap<>();//汇总考生课程目标-知识点总分(期末考试用)
+        Map<Long, Map<Long, DimensionDto>> targetDimensionMap = new LinkedHashMap<>();//课程目标-知识点-卷面分(word报表用)
 
         List<ReportExamStudentDto> examStudentList = null;//考生集合
         Map<String, FinalScoreResult> finalScoreResultMap = null;//考生成绩map
         Map<String, PaperStructResult> paperStructResultMap = null;//试卷蓝图map
-        Map<Long, CourseTargetValueDto> targetMap = null;
-
+        Map<Long, CourseTargetWordDto> targetWordMap = null;//word目标集合
+        Map<Long, CourseTargetWebDto> targetWebMap = null;//web目标集合
+        Map<String, ReportEvaluationDto> usualScoreMap = null;//平时作业集合
         if (!CollectionUtils.isEmpty(finalScoreResultList)) {
+            targetWordMap = new LinkedHashMap<>();
+            targetWebMap = new LinkedHashMap<>();
+            usualScoreMap = new LinkedHashMap<>();
+            //TODO 获取曹子轩课程目标信息
+            List<CourseWeightDto> courseWeightDtoList = courseWeightService.findCourseWeight(trBasicInfo.getExamId(), trBasicInfo.getCourseCode(), sysUser.getId());
+            if (CollectionUtils.isEmpty(courseWeightDtoList)) {
+                throw ExceptionResultEnum.ERROR.exception("未设置课程目标平时作业1");
+            }
+
+            courseWeightDtoList.clear();
+            //测试数据,默认平时作业30%权重,期末考试70%权重
+            int f = 5, s = 6;
+            for (int i = 0; i < 2; i++) {
+                int y = i == 0 ? f : s;
+                List<CourseWeightDetailDto> courseWeightDetailDtoList = new ArrayList<>();
+                for (int k = 0; k < y; k++) {
+                    if (y == 5) {
+                        courseWeightDetailDtoList.add(new CourseWeightDetailDto("作业" + (i + 1) + "-" + (k + 1), new BigDecimal(20), new BigDecimal(2.4).setScale(2, BigDecimal.ROUND_HALF_UP)));
+                    } else {
+                        courseWeightDetailDtoList.add(new CourseWeightDetailDto("作业" + (i + 1) + "-" + (k + 1), new BigDecimal(16.66).setScale(2, BigDecimal.ROUND_HALF_UP), new BigDecimal(3)));
+                    }
+                }
+                if (y == 5) {
+                    courseWeightDetailDtoList.add(new CourseWeightDetailDto("期末考试", new BigDecimal(70), new BigDecimal(28)));
+                } else {
+                    courseWeightDetailDtoList.add(new CourseWeightDetailDto("期末考试", new BigDecimal(70), new BigDecimal(42)));
+                }
+                courseWeightDtoList.add(new CourseWeightDto(Long.parseLong((i + 1) + ""), "课程目标" + (i + 1), "测试毕业要求" + (i + 1), new BigDecimal(50), new BigDecimal(50), courseWeightDetailDtoList));
+            }
+
+            for (CourseWeightDto courseWeightDto : courseWeightDtoList) {
+                List<CourseWeightDetailDto> courseWeightDetailDtoList = courseWeightDto.getEvaluationList();
+                CourseTargetWordDto courseTargetWordDto = new CourseTargetWordDto(courseWeightDto);
+                targetWordMap.put(courseWeightDto.getCourseTargetId(), courseTargetWordDto);//word模版
+
+                CourseTargetWebDto courseTargetWebDto = new CourseTargetWebDto(courseWeightDto);
+                targetWebMap.put(courseWeightDto.getCourseTargetId(), courseTargetWebDto);//web模版
+
+                if (!CollectionUtils.isEmpty(courseWeightDetailDtoList)) {
+                    List<ReportEvaluationDto> reportEvaluationDtoList = new ArrayList<>(courseWeightDetailDtoList.size());
+                    List<ReportEvaluationDto> usualScoreDetailList = new ArrayList<>(courseWeightDetailDtoList.size());
+                    UsualScoreWordDto usualScoreWordDto = new UsualScoreWordDto(new BigDecimal(30));
+                    usualScoreWordDto.setUsualScoreDetailList(usualScoreDetailList);
+                    BigDecimal usualScoreTargetSumScore = new BigDecimal(0);//平常作业目标总分
+                    for (CourseWeightDetailDto courseWeightDetailDto : courseWeightDetailDtoList) {
+                        //期末考试
+                        if (courseWeightDetailDto.getEnable() && courseWeightDetailDto.getEvaluationName().startsWith("期末考试")) {
+                            FinalScoreWordDto finalScoreWordDto = new FinalScoreWordDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto);
+                            courseTargetWordDto.setFinalScoreDto(finalScoreWordDto);
+                            ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto);
+                            reportEvaluationDtoList.add(reportEvaluationDto);
+                        }//非期末考试
+                        else if (courseWeightDetailDto.getEnable() && !courseWeightDetailDto.getEvaluationName().startsWith("期末考试")) {
+                            ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto);
+                            usualScoreTargetSumScore = usualScoreTargetSumScore.add(reportEvaluationDto.getTargetScore());
+                            usualScoreDetailList.add(reportEvaluationDto);
+                            reportEvaluationDtoList.add(reportEvaluationDto);
+                            usualScoreMap.put(courseWeightDetailDto.getEvaluationName(), reportEvaluationDto);
+                        }
+                    }
+                    usualScoreWordDto.setUsualScoreTargetSumScore(usualScoreTargetSumScore);
+                    Collections.sort(reportEvaluationDtoList);
+                    courseTargetWebDto.setEvaluationList(reportEvaluationDtoList);
+
+                    courseTargetWordDto.setUsualScoreDto(usualScoreWordDto);
+                }
+            }
+
+//            List<CourseWeightFormDto> courseWeightFormDtoList = courseWeightService.findCourseWeightForm(trBasicInfo.getExamId(), trBasicInfo.getCourseCode(), sysUser.getId());
+//            if (CollectionUtils.isEmpty(courseWeightFormDtoList)) {
+//                throw ExceptionResultEnum.ERROR.exception("未设置课程目标平时作业2");
+//            }
+
             //期末成绩明细map
             paperStructResultMap = paperStructResultList.stream().collect(Collectors.toMap(k -> k.getMainNumber() + "-" + k.getSubNumber(), Function.identity(), (dto1, dto2) -> dto1));
             finalScoreResultMap = finalScoreResultList.stream().collect(Collectors.toMap(FinalScoreResult::getStudentCode, Function.identity(), (dto1, dto2) -> dto1));
 
             examStudentList = new ArrayList<>(finalScoreResultList.size());
-            targetMap = new LinkedHashMap<>();
+            BigDecimal bigDecimal = new BigDecimal(100);
             for (FinalScoreResult finalScoreResult : finalScoreResultList) {
                 //解析期末成绩知识点
                 JSONArray finalScoreDetailJsonArray = JSONArray.parseArray(finalScoreResult.getFinalScoreDetail());
                 for (int i = 0; i < finalScoreDetailJsonArray.size(); i++) {
                     JSONObject jsonObject = finalScoreDetailJsonArray.getJSONObject(i);
+                    //卷面分
                     Double score = Objects.nonNull(jsonObject.get("score")) ? Double.parseDouble(jsonObject.get("score").toString()) : 0d;
                     PaperStructResult paperStructResult = paperStructResultMap.get(jsonObject.get("name").toString());
                     if (Objects.nonNull(paperStructResult)) {
-                        List<CourseTargetDto> courseTargetDtoList = paperStructResult.getTargetList();
-
-                        for (CourseTargetDto courseTargetDto : courseTargetDtoList) {
-                            targetMap.put(courseTargetDto.getTargetId(), new CourseTargetValueDto(courseTargetDto));
-
-                            //课程目标
-                            if (!finalScoreTargetMap.containsKey(courseTargetDto.getTargetId())) {
-                                finalScoreTargetMap.put(courseTargetDto.getTargetId(), new ArrayList<>(Arrays.asList(score)));
-                            } else {
-                                List<Double> list = finalScoreTargetMap.get(courseTargetDto.getTargetId());
-                                list.add(score);
-                                finalScoreTargetMap.put(courseTargetDto.getTargetId(), list);
-                            }
-                            //知识点
+                        List<CourseTargetWebDto> courseTargetDtoList = paperStructResult.getTargetList();
+                        for (CourseTargetWebDto courseTargetDto : courseTargetDtoList) {
+                            //知识点-期末考试明细分
                             List<DimensionDto> dimensionDtoList = courseTargetDto.getDimensionList();
                             for (DimensionDto dimensionDto : dimensionDtoList) {
                                 //考生知识点
                                 if (!finalScoreExamStudentDimensionMap.containsKey(finalScoreResult.getStudentCode())) {
                                     Map<Long, Map<Long, DimensionDto>> map = new LinkedHashMap<>();
                                     Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
-                                    dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(dimensionDto, score));
+                                    dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
                                     map.put(courseTargetDto.getTargetId(), dimensionMap);
                                     finalScoreExamStudentDimensionMap.put(finalScoreResult.getStudentCode(), map);
                                 } else {
                                     Map<Long, Map<Long, DimensionDto>> map = finalScoreExamStudentDimensionMap.get(finalScoreResult.getStudentCode());
                                     if (!map.containsKey(courseTargetDto.getTargetId())) {
                                         Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
-                                        dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(dimensionDto, score));
+                                        dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
                                         map.put(courseTargetDto.getTargetId(), dimensionMap);
                                     } else {
                                         Map<Long, DimensionDto> dimensionMap = map.get(courseTargetDto.getTargetId());
                                         if (!dimensionMap.containsKey(dimensionDto.getDimensionId())) {
-                                            dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(dimensionDto, score));
+                                            dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
                                         } else {
                                             DimensionDto dimensionDtoTemp = dimensionMap.get(dimensionDto.getDimensionId());
                                             dimensionDtoTemp.setDimensionScore(dimensionDtoTemp.getDimensionScore().doubleValue() + score.doubleValue());
@@ -168,20 +236,20 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                                     finalScoreExamStudentDimensionMap.put(finalScoreResult.getStudentCode(), map);
                                 }
 
-                                //目标-考生知识点总分
+                                //目标-考生知识点总分-期末考试总分
                                 if (!finalScoreExamStudentDimensionSumMap.containsKey(courseTargetDto.getTargetId())) {
                                     Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
-                                    dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(dimensionDto, score));
+                                    dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
                                     Map<Long, DimensionDto> dimensionTempMap = new LinkedHashMap<>();
-                                    dimensionTempMap.put(dimensionDto.getDimensionId(), new DimensionDto(dimensionDto, score));
+                                    dimensionTempMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
                                     finalScoreExamStudentDimensionSumMap.put(courseTargetDto.getTargetId(), dimensionMap);
                                     targetDimensionMap.put(courseTargetDto.getTargetId(), dimensionTempMap);
                                 } else {
                                     Map<Long, DimensionDto> dimensionMap = finalScoreExamStudentDimensionSumMap.get(courseTargetDto.getTargetId());
                                     if (!dimensionMap.containsKey(dimensionDto.getDimensionId())) {
-                                        dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(dimensionDto, score));
+                                        dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
                                         Map<Long, DimensionDto> dimensionTempMap = targetDimensionMap.get(courseTargetDto.getTargetId());
-                                        dimensionTempMap.put(dimensionDto.getDimensionId(), new DimensionDto(dimensionDto, score));
+                                        dimensionTempMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
                                         targetDimensionMap.put(courseTargetDto.getTargetId(), dimensionTempMap);
                                     } else {
                                         DimensionDto dimensionDtoTemp = dimensionMap.get(dimensionDto.getDimensionId());
@@ -197,39 +265,48 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
 
                 //解析平时作业分数图
                 JSONArray usualScoreJsonArray = JSONArray.parseArray(finalScoreResult.getUsualScore());
-                List<ReportExamStudentUsualScoreObjDto> scoreList = new ArrayList<>(usualScoreJsonArray.size());
+                Map<Long, List<ReportExamStudentUsualScoreObjDto>> scoreListMap = new LinkedHashMap<>();
+                ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(scoreListMap);
                 for (int i = 0; i < usualScoreJsonArray.size(); i++) {
                     JSONObject jsonObject = usualScoreJsonArray.getJSONObject(i);
-                    if (!usualScoreMap.containsKey(jsonObject.get("name"))) {
-                        usualScoreMap.put(jsonObject.get("name").toString(), new ArrayList<>(Arrays.asList(Objects.nonNull(jsonObject.get("score")) ? Double.parseDouble(jsonObject.get("score").toString()) : 0d)));
-                    } else {
-                        List<Double> list = usualScoreMap.get(jsonObject.get("name").toString());
-                        list.add(Objects.nonNull(jsonObject.get("score")) ? Double.parseDouble(jsonObject.get("score").toString()) : 0d);
-                        usualScoreMap.put(jsonObject.get("name").toString(), list);
+                    if (usualScoreMap.containsKey(jsonObject.get("name"))) {
+                        ReportEvaluationDto reportEvaluationDto = usualScoreMap.get(jsonObject.get("name").toString());
+                        List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = !scoreListMap.containsKey(reportEvaluationDto.getTargetId()) ? new ArrayList<>() : scoreListMap.get(reportEvaluationDto.getTargetId());
+                        //计算平时作业转换
+                        Double score = Objects.nonNull(jsonObject.get("score")) ? Double.parseDouble(jsonObject.get("score").toString()) : 0d;
+                        CourseTargetWordDto courseTargetWordDto = targetWordMap.get(reportEvaluationDto.getTargetId());
+                        UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
+                        Double matrixScore = new BigDecimal(score).divide(bigDecimal, 2, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+                        reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumWeight(), usualScoreWordDto.getUsualScoreTargetSumScore()));
+                        scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
                     }
-                    scoreList.add(new ReportExamStudentUsualScoreObjDto(jsonObject.get("name").toString(), Objects.nonNull(jsonObject.get("score")) ? Double.parseDouble(jsonObject.get("score").toString()) : 0d));
                 }
-                finalScoreResult.setUsualScoreDto(new ReportExamStudentUsualScoreDto(scoreList));
+                scoreListMap.forEach((k, v) -> {
+                    Collections.sort(v);
+                });
+                finalScoreResult.setUsualScoreDto(reportExamStudentUsualScoreDto);
                 examStudentList.add(new ReportExamStudentDto(finalScoreResult));
             }
         }
 
-        Map<Long, CourseTargetValueDto> finalTargetMap = targetMap;
+        Map<Long, CourseTargetWordDto> finalTargetMap = targetWordMap;
         targetDimensionMap.forEach((k, v) -> {
             List<DimensionDto> dimensionDtoList = new ArrayList<>(v.values());
             Collections.sort(dimensionDtoList);
-            finalTargetMap.get(k).setDimensionList(dimensionDtoList);
+            if (finalTargetMap.containsKey(k)) {
+                finalTargetMap.get(k).getFinalScoreDto().setDimensionList(dimensionDtoList);
+            }
         });
 
         paramsMap.put("finalScoreResultList", finalScoreResultList);
         paramsMap.put("usualScoreMap", usualScoreMap);
-        paramsMap.put("finalScoreTargetMap", finalScoreTargetMap);
         paramsMap.put("finalScoreExamStudentDimensionMap", finalScoreExamStudentDimensionMap);
         paramsMap.put("finalScoreExamStudentDimensionSumMap", finalScoreExamStudentDimensionSumMap);
         paramsMap.put("examStudentList", examStudentList);
         paramsMap.put("finalScoreResultMap", finalScoreResultMap);
         paramsMap.put("paperStructResultMap", paperStructResultMap);
-        paramsMap.put("targetMap", targetMap);
+        paramsMap.put("targetWordMap", targetWordMap);
+        paramsMap.put("targetWebMap", targetWebMap);
         paramsMap.put("paperStructResultList", paperStructResultList);
         return paramsMap;
     }
@@ -246,27 +323,27 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         Map<Long, List<Double>> finalScoreTargetMap = (Map<Long, List<Double>>) paramsMap.get("finalScoreTargetMap");
         List<FinalScoreResult> finalScoreResultList = (List<FinalScoreResult>) paramsMap.get("finalScoreResultList");
 
-        Map<String, UsualScoreOverviewDto> usualScoreOverviewDtoMap = new LinkedHashMap<>();//整体平常成绩分数图
+        Map<String, ReportEvaluationDto> usualScoreOverviewDtoMap = new LinkedHashMap<>();//整体平常成绩分数图
         Map<Long, FinalScoreOverviewDto> finalScoreOverviewDtoMap = new LinkedHashMap<>();//各课程目标期末考试分数图
 
-        //计算平常成绩最高分,最低分,平均分
-        usualScoreMap.forEach((k, v) -> {
-            Double maxScore = v.stream().mapToDouble(Double::doubleValue).max().orElse(0d);
-            Double minScore = v.stream().mapToDouble(Double::doubleValue).min().orElse(0d);
-            Double avgScore = new BigDecimal(v.stream().mapToDouble(Double::doubleValue).average().orElse(0d)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
-            Double sumScore = v.stream().mapToDouble(Double::doubleValue).sum();
-            usualScoreOverviewDtoMap.put(k, new UsualScoreOverviewDto(k, maxScore, minScore, avgScore, sumScore));
-        });
-
-        //计算各课程目标期末考试最高分,最低分,平均分
-        finalScoreTargetMap.forEach((k, v) -> {
-            Double maxScore = v.stream().mapToDouble(Double::doubleValue).max().orElse(0d);
-            Double minScore = v.stream().mapToDouble(Double::doubleValue).min().orElse(0d);
+//        //计算平常成绩最高分,最低分,平均分
+//        usualScoreMap.forEach((k, v) -> {
+//            Double maxScore = v.stream().mapToDouble(Double::doubleValue).max().orElse(0d);
+//            Double minScore = v.stream().mapToDouble(Double::doubleValue).min().orElse(0d);
 //            Double avgScore = new BigDecimal(v.stream().mapToDouble(Double::doubleValue).average().orElse(0d)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
-            Double sumScore = v.stream().mapToDouble(Double::doubleValue).sum();
-            Double avgScore = new BigDecimal(sumScore).divide(new BigDecimal(finalScoreResultList.size()), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
-            finalScoreOverviewDtoMap.put(k, new FinalScoreOverviewDto(k, maxScore, minScore, avgScore, sumScore));
-        });
+//            Double sumScore = v.stream().mapToDouble(Double::doubleValue).sum();
+//            usualScoreOverviewDtoMap.put(k, new UsualScoreOverviewDto(k, maxScore, minScore, avgScore, sumScore));
+//        });
+
+//        //计算各课程目标期末考试最高分,最低分,平均分
+//        finalScoreTargetMap.forEach((k, v) -> {
+//            Double maxScore = v.stream().mapToDouble(Double::doubleValue).max().orElse(0d);
+//            Double minScore = v.stream().mapToDouble(Double::doubleValue).min().orElse(0d);
+////            Double avgScore = new BigDecimal(v.stream().mapToDouble(Double::doubleValue).average().orElse(0d)).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+//            Double sumScore = v.stream().mapToDouble(Double::doubleValue).sum();
+//            Double avgScore = new BigDecimal(sumScore).divide(new BigDecimal(finalScoreResultList.size()), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+//            finalScoreOverviewDtoMap.put(k, new FinalScoreOverviewDto(k, maxScore, minScore, avgScore, sumScore));
+//        });
 
         paramsMap.put("usualScoreOverviewDtoMap", usualScoreOverviewDtoMap);
         paramsMap.put("finalScoreOverviewDtoMap", finalScoreOverviewDtoMap);
@@ -283,22 +360,22 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
     public ReportCourseEvaluationResultDto reportCalculateCourseEvaluationResult(Map<String, Object> paramsMap) {
         ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = null;
         List<PaperStructResult> paperStructResultList = (List<PaperStructResult>) paramsMap.get("paperStructResultList");
-        Map<Long, CourseTargetValueDto> targetMap = (Map<Long, CourseTargetValueDto>) paramsMap.get("targetMap");
-        Map<String, UsualScoreOverviewDto> usualScoreOverviewDtoMap = (Map<String, UsualScoreOverviewDto>) paramsMap.get("usualScoreOverviewDtoMap");
+        Map<Long, CourseTargetWordDto> targetMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetMap");
+        Map<String, ReportEvaluationDto> usualScoreOverviewDtoMap = (Map<String, ReportEvaluationDto>) paramsMap.get("usualScoreOverviewDtoMap");
         Map<Long, FinalScoreOverviewDto> finalScoreOverviewDtoMap = (Map<Long, FinalScoreOverviewDto>) paramsMap.get("finalScoreOverviewDtoMap");
 
         //TODO 课程考核成绩评价结果-待曹子轩补充目标/评价方式数据,有测试数据
         if (!CollectionUtils.isEmpty(paperStructResultList) && !CollectionUtils.isEmpty(targetMap)) {
-            List<CourseTargetDto> targetList = new ArrayList<>(targetMap.size());
-            AtomicReference<Double> targetValue = new AtomicReference<>(0.0d);
+            List<CourseTargetWebDto> targetList = new ArrayList<>(targetMap.size());
+            BigDecimal targetValue = new BigDecimal(0);
             targetMap.forEach((k, v) -> {
                 Double evaluationAvg = 0.0d, evaluationScore = 0.0d;
                 BigDecimal evaluationWeight = new BigDecimal(0);
                 List<ReportEvaluationDto> reportEvaluationDtoList = new ArrayList<>();
                 if (!CollectionUtils.isEmpty(usualScoreOverviewDtoMap)) {
-                    UsualScoreOverviewDto usualScoreOverviewDto = usualScoreOverviewDtoMap.get("作业" + k);
-                    ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(usualScoreOverviewDto.getName(), new BigDecimal(30), 40d, usualScoreOverviewDto.getAvgScore());
-                    reportEvaluationDtoList.add(reportEvaluationDto);
+                    ReportEvaluationDto reportEvaluationDto = usualScoreOverviewDtoMap.get("作业" + k);
+//                    ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(usualScoreOverviewDto.getEvaluationId(), usualScoreOverviewDto.getEvaluation(), usualScoreOverviewDto.getEvaluationDesc(), new BigDecimal(30), new BigDecimal(40), 0.0d);
+//                    reportEvaluationDtoList.add(reportEvaluationDto);
 
                     //课程目标-平时作业达成度计算
 //                    if (Objects.nonNull(reportEvaluationDto.getWeight()) && reportEvaluationDto.getWeight().doubleValue() > 0d) {
@@ -313,8 +390,8 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                 }
                 if (!CollectionUtils.isEmpty(finalScoreOverviewDtoMap)) {
                     FinalScoreOverviewDto finalScoreOverviewDto = finalScoreOverviewDtoMap.get(k);
-                    ReportEvaluationDto reportEvaluationDto1 = new ReportEvaluationDto("期末考试", new BigDecimal(70), 60d, finalScoreOverviewDto.getAvgScore());
-                    reportEvaluationDtoList.add(reportEvaluationDto1);
+//                    ReportEvaluationDto reportEvaluationDto1 = new ReportEvaluationDto(finalScoreOverviewDto.getEvaluationId(), finalScoreOverviewDto.getEvaluation(), finalScoreOverviewDto.getEvaluationDesc(), new BigDecimal(70), new BigDecimal(60), 0.0d);
+//                    reportEvaluationDtoList.add(reportEvaluationDto1);
 
                     //课程目标-期末成绩达成度计算
 //                    if (Objects.nonNull(reportEvaluationDto1.getWeight()) && reportEvaluationDto1.getWeight().doubleValue() > 0d) {
@@ -326,13 +403,13 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                 }
                 Double evaluationValue = new BigDecimal(evaluationAvg).add(new BigDecimal(evaluationScore)).divide(evaluationWeight, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
 
-                CourseTargetDto courseTargetDto = new CourseTargetDto(k, v.getTargetName(), k, "评价方式" + k, "评价方式描述" + k, reportEvaluationDtoList, evaluationValue);
-                targetList.add(courseTargetDto);
-                v.updateInfo(courseTargetDto);
-                targetValue.set(new BigDecimal(targetValue.get()).add(new BigDecimal(courseTargetDto.getEvaluationValue())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+//                CourseTargetDto courseTargetDto = new CourseTargetDto(k, v.getTargetName(), k, "评价方式" + k, "评价方式描述" + k, reportEvaluationDtoList, evaluationValue);
+//                targetList.add(courseTargetDto);
+//                v.updateInfo(courseTargetDto);
+//                targetValue.set(new BigDecimal(targetValue.get()).add(new BigDecimal(courseTargetDto.getEvaluationValue())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
             });
             Collections.sort(targetList);
-            reportCourseEvaluationResultDto = new ReportCourseEvaluationResultDto("测试课程总目标1", targetValue.get(), targetList);
+            reportCourseEvaluationResultDto = new ReportCourseEvaluationResultDto("测试课程总目标1", targetValue, targetList);
         }
         return reportCourseEvaluationResultDto;
     }
@@ -378,23 +455,32 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         }
 
         Map<String, Object> paramsMap = trBasicInfoService.getReportCalculateParams(trBasicInfo, paperStructResultList);
-        paramsMap = trBasicInfoService.reportCalculateMaxMinAvgSumScore(paramsMap);
-        ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = trBasicInfoService.reportCalculateCourseEvaluationResult(paramsMap);
-        if (Objects.nonNull(reportCourseEvaluationResultDto)) {
-            trBasicInfo.setCourseEvaluationResult(JacksonUtil.parseJson(reportCourseEvaluationResultDto));
-            trBasicInfo.getReportResult().setCourseEvaluationResultInfo(reportCourseEvaluationResultDto);
-        }
+//        paramsMap = trBasicInfoService.reportCalculateMaxMinAvgSumScore(paramsMap);
+
+//        ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = trBasicInfoService.reportCalculateCourseEvaluationResult(paramsMap);
+//        if (Objects.nonNull(reportCourseEvaluationResultDto)) {
+//            trBasicInfo.setCourseEvaluationResult(JacksonUtil.parseJson(reportCourseEvaluationResultDto));
+//            trBasicInfo.getReportResult().setCourseEvaluationResultInfo(reportCourseEvaluationResultDto);
+//        }
         //课程目标达成评价明细结果-考生集合
         List<ReportExamStudentDto> examStudentNewList = trExamStudentService.getExamStudentReportDetail(trBasicInfo, paramsMap);
         ReportCourseEvaluationResultDetailDto reportCourseEvaluationResultDetailDto = new ReportCourseEvaluationResultDetailDto(examStudentNewList);
         if (Objects.nonNull(reportCourseEvaluationResultDetailDto)) {
             trBasicInfo.getReportResult().setCourseEvaluationResultDetailInfo(reportCourseEvaluationResultDetailDto);
         }
-        if (Objects.nonNull(paramsMap.get("targetMap"))) {
-            Map<Long, CourseTargetValueDto> targetMap = (Map<Long, CourseTargetValueDto>) paramsMap.get("targetMap");
-            List<CourseTargetValueDto> reportCourseTargetDtoList = new ArrayList<>(targetMap.values());
-            Collections.sort(reportCourseTargetDtoList);
-            trBasicInfo.setCourseEvaluationResultDetail(JacksonUtil.parseJson(reportCourseTargetDtoList));
+        if (Objects.nonNull(paramsMap.get("targetWordMap"))) {
+            Map<Long, CourseTargetWordDto> targetWordMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetWordMap");
+            List<CourseTargetWordDto> courseTargetWordDtoList = new ArrayList<>(targetWordMap.values());
+            Collections.sort(courseTargetWordDtoList);
+
+            Map<Long, CourseTargetWebDto> targetWebMap = (Map<Long, CourseTargetWebDto>) paramsMap.get("targetWebMap");
+            List<CourseTargetWebDto> courseTargetWebDtoList = new ArrayList<>(targetWebMap.values());
+            Collections.sort(courseTargetWebDtoList);
+
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("targetWordMap", courseTargetWordDtoList);
+            jsonObject.put("targetWebMap", courseTargetWebDtoList);
+            trBasicInfo.setCourseEvaluationResultDetail(jsonObject.toJSONString());
         }
 //        trBasicInfo.setCourseEvaluationResultDetail(JacksonUtil.parseJson(paramsMap));
 

+ 30 - 60
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java

@@ -1,12 +1,10 @@
 package com.qmth.distributed.print.business.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.distributed.print.business.bean.dto.report.*;
 import com.qmth.distributed.print.business.bean.result.FinalScoreResult;
-import com.qmth.distributed.print.business.bean.result.report.PaperStructResult;
 import com.qmth.distributed.print.business.entity.TRBasicInfo;
 import com.qmth.distributed.print.business.entity.TRExamStudent;
 import com.qmth.distributed.print.business.mapper.TRExamStudentMapper;
@@ -16,9 +14,10 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
-import java.util.*;
-import java.util.function.Function;
-import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -44,62 +43,33 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
         List<ReportExamStudentDto> examStudentList = (List<ReportExamStudentDto>) paramsMap.get("examStudentList");
         Map<String, Map<Long, Map<Long, DimensionDto>>> finalScoreExamStudentDimensionMap = (Map<String, Map<Long, Map<Long, DimensionDto>>>) paramsMap.get("finalScoreExamStudentDimensionMap");
         Map<String, FinalScoreResult> finalScoreResultMap = (Map<String, FinalScoreResult>) paramsMap.get("finalScoreResultMap");
-        Map<String, PaperStructResult> paperStructResultMap = (Map<String, PaperStructResult>) paramsMap.get("paperStructResultMap");
-        Map<Long, CourseTargetValueDto> targetMap = (Map<Long, CourseTargetValueDto>) paramsMap.get("targetMap");
+//        Map<String, PaperStructResult> paperStructResultMap = (Map<String, PaperStructResult>) paramsMap.get("paperStructResultMap");
+        Map<Long, CourseTargetWordDto> targetWordMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetWordMap");
+        Map<Long, CourseTargetWebDto> targetWebMap = (Map<Long, CourseTargetWebDto>) paramsMap.get("targetWebMap");
         Map<Long, Map<Long, DimensionDto>> finalScoreExamStudentDimensionSumMap = (Map<Long, Map<Long, DimensionDto>>) paramsMap.get("finalScoreExamStudentDimensionSumMap");
-        Map<String, UsualScoreOverviewDto> usualScoreOverviewDtoMap = (Map<String, UsualScoreOverviewDto>) paramsMap.get("usualScoreOverviewDtoMap");
         if (!CollectionUtils.isEmpty(examStudentList)) {
+            BigDecimal bigDecimal = new BigDecimal(100);
             List<TRExamStudent> trExamStudentList = new ArrayList<>(examStudentList.size());
             for (ReportExamStudentDto reportExamStudentDto : examStudentList) {
                 Map<Long, Map<Long, DimensionDto>> map = finalScoreExamStudentDimensionMap.get(reportExamStudentDto.getStudentCode());
                 FinalScoreResult finalScoreResult = finalScoreResultMap.get(reportExamStudentDto.getStudentCode());
-                JSONArray finalScoreDetailJsonArray = JSONArray.parseArray(finalScoreResult.getFinalScoreDetail());
-                Map<String, ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoMap = null;
-                if (Objects.nonNull(finalScoreResult.getUsualScore())) {
-                    //计算平时作业
-                    List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = JSONArray.parseArray(finalScoreResult.getUsualScore(), ReportExamStudentUsualScoreObjDto.class);
-                    reportExamStudentUsualScoreObjDtoMap = reportExamStudentUsualScoreObjDtoList.stream().collect(Collectors.toMap(ReportExamStudentUsualScoreObjDto::getName, Function.identity(), (dto1, dto2) -> dto1));
-                }
-                //计算期末考试知识点分数
-                for (int i = 0; i < finalScoreDetailJsonArray.size(); i++) {
-                    JSONObject jsonObject = finalScoreDetailJsonArray.getJSONObject(i);
-                    PaperStructResult paperStructResult = paperStructResultMap.get(jsonObject.get("name").toString());
-                    if (Objects.nonNull(paperStructResult)) {
-                        List<CourseTargetDto> courseTargetDtoList = paperStructResult.getTargetList();
-                        for (CourseTargetDto courseTargetDto : courseTargetDtoList) {
-                            Map<Long, DimensionDto> dimensionDtoMap = map.get(courseTargetDto.getTargetId());
-                            List<DimensionDto> dimensionDtoList = new ArrayList<>(dimensionDtoMap.values());
-                            if (CollectionUtils.isEmpty(reportExamStudentDto.getTargetList())) {
-                                List<ReportExamStudentTargetDto> targetList = new ArrayList<>();
-                                ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = null;
-//                                ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = new ReportExamStudentFinalScoreDto(targetMap.get(courseTargetDto.getTargetId()).getFinalScoreWeight(), dimensionDtoList);
-//                                if (!CollectionUtils.isEmpty(reportExamStudentUsualScoreObjDtoMap) && reportExamStudentUsualScoreObjDtoMap.containsKey("作业" + courseTargetDto.getTargetId())) {
-//                                    if (Objects.nonNull(targetMap.get(courseTargetDto.getTargetId())) && Objects.nonNull(targetMap.get(courseTargetDto.getTargetId()).getUsualScoreWeight())
-//                                            && Objects.nonNull(targetMap.get(courseTargetDto.getTargetId()).getUsualScoreWeight().get("作业" + courseTargetDto.getTargetId()))) {
-//                                        ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto = reportExamStudentUsualScoreObjDtoMap.get("作业" + courseTargetDto.getTargetId());
-//                                        reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(targetMap.get(courseTargetDto.getTargetId()).getUsualScoreWeight().get("作业" + courseTargetDto.getTargetId()), Arrays.asList(reportExamStudentUsualScoreObjDto));
-//                                    }
-//                                }
-//                                targetList.add(new ReportExamStudentTargetDto(courseTargetDto.getTargetId(), courseTargetDto.getTargetName(), reportExamStudentFinalScoreDto, reportExamStudentUsualScoreDto));
-                                reportExamStudentDto.setTargetList(targetList);
-                            } else {
-                                List<ReportExamStudentTargetDto> targetList = reportExamStudentDto.getTargetList();
-                                Map<Long, ReportExamStudentTargetDto> reportExamStudentTargetDtoMap = targetList.stream().collect(Collectors.toMap(ReportExamStudentTargetDto::getTargetId, Function.identity(), (dto1, dto2) -> dto1));
-//                                if (!reportExamStudentTargetDtoMap.containsKey(courseTargetDto.getTargetId())) {
-//                                    ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = null;
-//                                    if (!CollectionUtils.isEmpty(reportExamStudentUsualScoreObjDtoMap) && reportExamStudentUsualScoreObjDtoMap.containsKey("作业" + courseTargetDto.getTargetId())) {
-//                                        if (Objects.nonNull(targetMap.get(courseTargetDto.getTargetId())) && Objects.nonNull(targetMap.get(courseTargetDto.getTargetId()).getUsualScoreWeight())
-//                                                && Objects.nonNull(targetMap.get(courseTargetDto.getTargetId()).getUsualScoreWeight().get("作业" + courseTargetDto.getTargetId()))) {
-//                                            ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto = reportExamStudentUsualScoreObjDtoMap.get("作业" + courseTargetDto.getTargetId());
-//                                            reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(targetMap.get(courseTargetDto.getTargetId()).getUsualScoreWeight().get("作业" + courseTargetDto.getTargetId()), Arrays.asList(reportExamStudentUsualScoreObjDto));
-//                                        }
-//                                    }
-//                                    targetList.add(new ReportExamStudentTargetDto(courseTargetDto.getTargetId(), courseTargetDto.getTargetName(), new ReportExamStudentFinalScoreDto(targetMap.get(courseTargetDto.getTargetId()).getFinalScoreWeight(), dimensionDtoList), reportExamStudentUsualScoreDto));
-//                                }
-                            }
+                ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = finalScoreResult.getUsualScoreDto();
+                map.forEach((k, v) -> {
+                    List<DimensionDto> dimensionDtoList = new ArrayList<>(v.values());
+                    List<ReportExamStudentTargetDto> targetList = CollectionUtils.isEmpty(reportExamStudentDto.getTargetList()) ? new ArrayList<>() : reportExamStudentDto.getTargetList();
+                    if (targetWebMap.containsKey(k)) {
+                        List<ReportExamStudentUsualScoreObjDto> scoreObjDtoList = reportExamStudentUsualScoreDto.getScoreMap().get(k);
+                        CourseTargetWordDto courseTargetWordDto = targetWordMap.get(k);
+                        ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), dimensionDtoList);
+                        //各知识点转换分数
+                        for (DimensionDto dimensionDto : dimensionDtoList) {
+                            Double matrixScore = new BigDecimal(dimensionDto.getDimensionScore()).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).divide(bigDecimal, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+                            dimensionDto.setMatrixScore(matrixScore);
                         }
+                        targetList.add(new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreDto, new ReportExamStudentUsualScoreDto(scoreObjDtoList)));
                     }
-                }
+                    reportExamStudentDto.setTargetList(targetList);
+                });
                 Collections.sort(reportExamStudentDto.getTargetList());
                 trExamStudentList.add(new TRExamStudent(trBasicInfo.getId(), reportExamStudentDto));
             }
@@ -125,13 +95,13 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
             ReportExamStudentUsualScoreDto usualScoreAvgDto = reportExamStudentTargetDtoList.get(0).getUsualScore();
             List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = usualScoreAvgDto.getScoreList();
             for (ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto : reportExamStudentUsualScoreObjDtoList) {
-                if (usualScoreOverviewDtoMap.containsKey(reportExamStudentUsualScoreObjDto.getName())) {
-                    UsualScoreOverviewDto usualScoreOverviewDto = usualScoreOverviewDtoMap.get(reportExamStudentUsualScoreObjDto.getName());
-                    Double avg = new BigDecimal(usualScoreOverviewDto.getSumScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
-                    reportExamStudentUsualScoreObjDto.setScore(avg);
-                } else {
-                    reportExamStudentUsualScoreObjDto.setScore(0d);
-                }
+//                if (usualScoreOverviewDtoMap.containsKey(reportExamStudentUsualScoreObjDto.getName())) {
+//                    UsualScoreOverviewDto usualScoreOverviewDto = usualScoreOverviewDtoMap.get(reportExamStudentUsualScoreObjDto.getName());
+//                    Double avg = new BigDecimal(usualScoreOverviewDto.getSumScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+//                    reportExamStudentUsualScoreObjDto.setScore(avg);
+//                } else {
+//                    reportExamStudentUsualScoreObjDto.setScore(0d);
+//                }
             }
             reportExamStudentDto.setTargetList(reportExamStudentTargetDtoList);
             examStudentList.get(0).setTargetList(JSONArray.parseArray(trExamStudentList.get(0).getResultDetail(), ReportExamStudentTargetDto.class));

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

@@ -261,6 +261,7 @@ public class TCFinalScoreController {
                 throw ExceptionResultEnum.ERROR.exception("未找到试卷结构");
             }
 
+            //TODO 待曹子轩补充接口
             paperStructResultList = new ArrayList<>(markQuestionList.size());
             for (MarkQuestion markQuestion : markQuestionList) {
                 paperStructResultList.add(new PaperStructResult(markQuestion.getMainNumber(), markQuestion.getSubNumber(), markQuestion.getTotalScore()));

+ 18 - 16
distributed-print/src/main/java/com/qmth/distributed/print/api/TRBasicInfoController.java

@@ -18,7 +18,6 @@ import com.qmth.distributed.print.business.bean.result.report.word.*;
 import com.qmth.distributed.print.business.entity.TRBasicInfo;
 import com.qmth.distributed.print.business.entity.TRExamStudent;
 import com.qmth.distributed.print.business.service.PrintCommonService;
-import com.qmth.distributed.print.business.service.TCFinalScoreService;
 import com.qmth.distributed.print.business.service.TRBasicInfoService;
 import com.qmth.distributed.print.business.service.TRExamStudentService;
 import com.qmth.teachcloud.common.annotation.OperationLogDetail;
@@ -47,8 +46,6 @@ import java.math.BigDecimal;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.Function;
-import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -169,8 +166,12 @@ public class TRBasicInfoController {
 
         CourseReportBean courseReportBean = new CourseReportBean(trBasicInfo.getOpenTime() + "《测试输出报告》", courseBasicBean);
 
+        JSONObject jsonObject = JSONObject.parseObject(trBasicInfo.getCourseEvaluationResultDetail());
+        List<CourseTargetWordDto> courseTargetWordDtoList = JSONArray.parseArray(jsonObject.get("targetWordMap").toString(), CourseTargetWordDto.class);
+        List<CourseTargetWebDto> courseTargetWebDtoList = JSONArray.parseArray(jsonObject.get("targetWebMap").toString(), CourseTargetWebDto.class);
+
         //targetMap
-        List<CourseTargetValueDto> courseTargetValueDtoList = JSONArray.parseArray(trBasicInfo.getCourseEvaluationResultDetail(), CourseTargetValueDto.class);
+        List<CourseTargetWordDto> courseTargetValueDtoList = JSONArray.parseArray(trBasicInfo.getCourseEvaluationResultDetail(), CourseTargetWordDto.class);
 //        Map<Long, CourseTargetValueDto> courseTargetValueDtoMap = courseTargetValueDtoList.stream().collect(Collectors.toMap(CourseTargetValueDto::getTargetId, Function.identity(), (dto1, dto2) -> dto1));
 
         //table1课程目标目标与毕业要求指标点的对应关系
@@ -183,7 +184,7 @@ public class TRBasicInfoController {
         header2_1List.add("考核/评价环节及目标分值");
 
         for (int i = 0; i < courseTargetValueDtoList.size(); i++) {
-            CourseTargetValueDto courseTargetValueDto = courseTargetValueDtoList.get(i);
+            CourseTargetWordDto courseTargetValueDto = courseTargetValueDtoList.get(i);
 //            Map<String, BigDecimal> usualScoreWeightMap = courseTargetValueDto.getUsualScoreWeight();
 //            usualScoreWeightMap.forEach((k1, v1) -> {
 //                header2_1List.add("");
@@ -213,7 +214,7 @@ public class TRBasicInfoController {
         AtomicReference<BigDecimal> targetSum2 = new AtomicReference<>(new BigDecimal(0));
         AtomicInteger atomicReference = new AtomicInteger(0);
         for (int i = 0; i < courseTargetValueDtoList.size(); i++) {
-            CourseTargetValueDto courseTargetValueDto = courseTargetValueDtoList.get(i);
+            CourseTargetWordDto courseTargetValueDto = courseTargetValueDtoList.get(i);
             CourseTargetTableBean2 courseTargetTableBean2 = new CourseTargetTableBean2(courseTargetValueDto.getTargetName(), courseTargetValueDto.getGraduationRequirement(), new BigDecimal(atomicReference.get() + 2), new BigDecimal(atomicReference.get() + 3), new BigDecimal(atomicReference.get() + 4), new BigDecimal(atomicReference.get() + 5), new BigDecimal(atomicReference.get() + 10));
             bigDecimalExpressionSum.set(bigDecimalExpressionSum.get().add(courseTargetTableBean2.getExpression()));
             homeworkSum.set(homeworkSum.get().add(courseTargetTableBean2.getHomework()));
@@ -294,14 +295,14 @@ public class TRBasicInfoController {
         BigDecimal sum4 = new BigDecimal(0);
         Integer seq4 = 0;
         for (int i = 0; i < courseTargetValueDtoList.size(); i++) {
-            CourseTargetValueDto courseTargetValueDto = courseTargetValueDtoList.get(i);
-            List<DimensionDto> dimensionDtoList = courseTargetValueDto.getDimensionList();
-            for (DimensionDto dimensionDto : dimensionDtoList) {
-                sum4 = sum4.add(new BigDecimal(dimensionDto.getDimensionScore()));
-                seq4 = seq4 + 1;
-                CourseTargetTableBean4 courseTargetTableBean4 = new CourseTargetTableBean4(seq4, courseTargetValueDto.getGraduationRequirement(), dimensionDto.getDimensionName(), dimensionDto.getDimensionScore(), courseTargetValueDto.getTargetName());
-                courseTargetTableBean4List.add(courseTargetTableBean4);
-            }
+            CourseTargetWordDto courseTargetValueDto = courseTargetValueDtoList.get(i);
+//            List<DimensionDto> dimensionDtoList = courseTargetValueDto.getDimensionList();
+//            for (DimensionDto dimensionDto : dimensionDtoList) {
+//                sum4 = sum4.add(new BigDecimal(dimensionDto.getDimensionScore()));
+//                seq4 = seq4 + 1;
+//                CourseTargetTableBean4 courseTargetTableBean4 = new CourseTargetTableBean4(seq4, courseTargetValueDto.getGraduationRequirement(), dimensionDto.getDimensionName(), dimensionDto.getDimensionScore(), courseTargetValueDto.getTargetName());
+//                courseTargetTableBean4List.add(courseTargetTableBean4);
+//            }
         }
         String tableFootTitle4 = "合计${sum}分,占课程总评成绩的70%";
         tableFootTitle4 = tableFootTitle4.replace("${sum}", sum4.toString());
@@ -380,7 +381,8 @@ public class TRBasicInfoController {
                                 targetUsualScoreSizeMap.put(reportExamStudentTargetDto.getTargetId(), size++);
                             }
                             examStudent_cells_1.add(Cells.of("").center().create());
-                            examStudent_cells_2.add(Cells.of(reportExamStudentUsualScoreObjDto.getName()).center().create());
+                            //报错暂时去掉,记得恢复
+//                            examStudent_cells_2.add(Cells.of(reportExamStudentUsualScoreObjDto.getName()).center().create());
                         }
                     }
                     //期末考试
@@ -405,7 +407,7 @@ public class TRBasicInfoController {
                             if (Objects.nonNull(reportExamStudentUsualScoreDto) && !CollectionUtils.isEmpty(reportExamStudentUsualScoreDto.getScoreList())) {
                                 List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
                                 for (ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto : reportExamStudentUsualScoreObjDtoList) {
-                                    scoreMap.add(reportExamStudentTargetDto.getTargetId(), Collections.singletonMap(reportExamStudentUsualScoreObjDto.getName(), new ExamStudentScoreBean(reportExamStudentUsualScoreObjDto.getScore())));
+//                                    scoreMap.add(reportExamStudentTargetDto.getTargetId(), Collections.singletonMap(reportExamStudentUsualScoreObjDto.getName(), new ExamStudentScoreBean(reportExamStudentUsualScoreObjDto.getScore())));
                                 }
                             }
                             //期末考试