Sfoglia il codice sorgente

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

caozixuan 1 anno fa
parent
commit
e41df6789c
28 ha cambiato i file con 536 aggiunte e 525 eliminazioni
  1. 5 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/MatrixSubRequirementDto.java
  2. 12 12
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/CourseTargetWebDto.java
  3. 18 18
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/CourseTargetWordDto.java
  4. 19 17
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/DimensionDto.java
  5. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/FinalScoreWordDto.java
  6. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ObeSubRequirementsDto.java
  7. 5 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportCourseBasicInfoDto.java
  8. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportCourseEvaluationResultDto.java
  9. 13 13
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportEvaluationDto.java
  10. 6 5
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentDto.java
  11. 25 25
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentFinalScoreDto.java
  12. 6 6
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentTargetDto.java
  13. 18 18
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportExamStudentUsualScoreObjDto.java
  14. 10 9
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportScoreRangeViewDto.java
  15. 5 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportScoreViewDto.java
  16. 7 6
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FinalScoreResult.java
  17. 5 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/report/PaperStructDimensionResult.java
  18. 7 9
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TRBasicInfo.java
  19. 4 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TRExamStudent.java
  20. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCourseRequirementMatrixServiceImpl.java
  21. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCourseRequirementReportServiceImpl.java
  22. 3 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCourseTargetServiceImpl.java
  23. 275 274
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramRequirementServiceImpl.java
  24. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TCFinalScoreServiceImpl.java
  25. 37 37
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRBasicInfoServiceImpl.java
  26. 38 39
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java
  27. 5 4
      distributed-print/src/main/java/com/qmth/distributed/print/api/TCPaperStructController.java
  28. 2 2
      distributed-print/src/main/java/com/qmth/distributed/print/api/TRBasicInfoController.java

+ 5 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/obe/MatrixSubRequirementDto.java

@@ -4,12 +4,14 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.entity.BasicProfessional;
 import com.qmth.distributed.print.business.entity.BasicProfessional;
 
 
+import java.math.BigDecimal;
+
 public class MatrixSubRequirementDto extends BasicProfessional {
 public class MatrixSubRequirementDto extends BasicProfessional {
 
 
     @JsonSerialize(using = ToStringSerializer.class)
     @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
     private Long id;
     private String name;
     private String name;
-    private Double scale;
+    private BigDecimal scale = new BigDecimal(0);
     private String content;
     private String content;
 
 
     @JsonSerialize(using = ToStringSerializer.class)
     @JsonSerialize(using = ToStringSerializer.class)
@@ -43,11 +45,11 @@ public class MatrixSubRequirementDto extends BasicProfessional {
         this.name = name;
         this.name = name;
     }
     }
 
 
-    public Double getScale() {
+    public BigDecimal getScale() {
         return scale;
         return scale;
     }
     }
 
 
-    public void setScale(Double scale) {
+    public void setScale(BigDecimal scale) {
         this.scale = scale;
         this.scale = scale;
     }
     }
 
 
@@ -58,5 +60,4 @@ public class MatrixSubRequirementDto extends BasicProfessional {
     public void setContent(String content) {
     public void setContent(String content) {
         this.content = content;
         this.content = content;
     }
     }
-
 }
 }

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

@@ -47,13 +47,13 @@ public class CourseTargetWebDto implements Serializable, Comparable<CourseTarget
     private List<ReportEvaluationDto> evaluationList;
     private List<ReportEvaluationDto> evaluationList;
 
 
     @ApiModelProperty(value = "知识点卷面总分")
     @ApiModelProperty(value = "知识点卷面总分")
-    private Double dimensionScoreSum = 0.0d;
+    private BigDecimal dimensionScoreSum = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "知识点集合")
     @ApiModelProperty(value = "知识点集合")
     private String dimensionPoint;
     private String dimensionPoint;
 
 
     @ApiModelProperty(value = "小题卷面总分")
     @ApiModelProperty(value = "小题卷面总分")
-    private Double finalScoreQuestionScoreSum = 0.0d;
+    private BigDecimal finalScoreQuestionScoreSum = new BigDecimal(0);
 
 
     public CourseTargetWebDto() {
     public CourseTargetWebDto() {
 
 
@@ -67,11 +67,19 @@ public class CourseTargetWebDto implements Serializable, Comparable<CourseTarget
         this.targetSumWeight = courseWeightDto.getTotalWeight();
         this.targetSumWeight = courseWeightDto.getTotalWeight();
     }
     }
 
 
-    public Double getFinalScoreQuestionScoreSum() {
+    public BigDecimal getDimensionScoreSum() {
+        return dimensionScoreSum;
+    }
+
+    public void setDimensionScoreSum(BigDecimal dimensionScoreSum) {
+        this.dimensionScoreSum = dimensionScoreSum;
+    }
+
+    public BigDecimal getFinalScoreQuestionScoreSum() {
         return finalScoreQuestionScoreSum;
         return finalScoreQuestionScoreSum;
     }
     }
 
 
-    public void setFinalScoreQuestionScoreSum(Double finalScoreQuestionScoreSum) {
+    public void setFinalScoreQuestionScoreSum(BigDecimal finalScoreQuestionScoreSum) {
         this.finalScoreQuestionScoreSum = finalScoreQuestionScoreSum;
         this.finalScoreQuestionScoreSum = finalScoreQuestionScoreSum;
     }
     }
 
 
@@ -83,14 +91,6 @@ public class CourseTargetWebDto implements Serializable, Comparable<CourseTarget
         this.dimensionPoint = dimensionPoint;
         this.dimensionPoint = dimensionPoint;
     }
     }
 
 
-    public Double getDimensionScoreSum() {
-        return dimensionScoreSum;
-    }
-
-    public void setDimensionScoreSum(Double dimensionScoreSum) {
-        this.dimensionScoreSum = dimensionScoreSum;
-    }
-
     public String getGraduationRequirementPoint() {
     public String getGraduationRequirementPoint() {
         return graduationRequirementPoint;
         return graduationRequirementPoint;
     }
     }

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

@@ -37,7 +37,7 @@ public class CourseTargetWordDto implements Serializable, Comparable<CourseTarge
     private BigDecimal targetSumWeight = new BigDecimal(0);
     private BigDecimal targetSumWeight = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "换算平均分")
     @ApiModelProperty(value = "换算平均分")
-    private Double matrixAvgScore = 0.0d;
+    private BigDecimal matrixAvgScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "目标达成评价值")
     @ApiModelProperty(value = "目标达成评价值")
     private BigDecimal evaluationValue = new BigDecimal(0);
     private BigDecimal evaluationValue = new BigDecimal(0);
@@ -49,13 +49,13 @@ public class CourseTargetWordDto implements Serializable, Comparable<CourseTarge
     private FinalScoreWordDto finalScoreDto;
     private FinalScoreWordDto finalScoreDto;
 
 
     @ApiModelProperty(value = "知识点卷面总分")
     @ApiModelProperty(value = "知识点卷面总分")
-    private Double dimensionScoreSum = 0.0d;
+    private BigDecimal dimensionScoreSum = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "知识点集合")
     @ApiModelProperty(value = "知识点集合")
     private String dimensionPoint;
     private String dimensionPoint;
 
 
     @ApiModelProperty(value = "期末成绩小题卷面总分")
     @ApiModelProperty(value = "期末成绩小题卷面总分")
-    private Double finalScoreQuestionScoreSum = 0.0d;
+    private BigDecimal finalScoreQuestionScoreSum = new BigDecimal(0);
 
 
     @ApiModelProperty("指标点名称")
     @ApiModelProperty("指标点名称")
     private String obeCultureProgramRequirementName;
     private String obeCultureProgramRequirementName;
@@ -93,14 +93,6 @@ public class CourseTargetWordDto implements Serializable, Comparable<CourseTarge
         this.parentRequirementName = parentRequirementName;
         this.parentRequirementName = parentRequirementName;
     }
     }
 
 
-    public Double getFinalScoreQuestionScoreSum() {
-        return finalScoreQuestionScoreSum;
-    }
-
-    public void setFinalScoreQuestionScoreSum(Double finalScoreQuestionScoreSum) {
-        this.finalScoreQuestionScoreSum = finalScoreQuestionScoreSum;
-    }
-
     public String getDimensionPoint() {
     public String getDimensionPoint() {
         return dimensionPoint;
         return dimensionPoint;
     }
     }
@@ -109,14 +101,26 @@ public class CourseTargetWordDto implements Serializable, Comparable<CourseTarge
         this.dimensionPoint = dimensionPoint;
         this.dimensionPoint = dimensionPoint;
     }
     }
 
 
-    public Double getDimensionScoreSum() {
+    public void setMatrixAvgScore(BigDecimal matrixAvgScore) {
+        this.matrixAvgScore = matrixAvgScore;
+    }
+
+    public BigDecimal getDimensionScoreSum() {
         return dimensionScoreSum;
         return dimensionScoreSum;
     }
     }
 
 
-    public void setDimensionScoreSum(Double dimensionScoreSum) {
+    public void setDimensionScoreSum(BigDecimal dimensionScoreSum) {
         this.dimensionScoreSum = dimensionScoreSum;
         this.dimensionScoreSum = dimensionScoreSum;
     }
     }
 
 
+    public BigDecimal getFinalScoreQuestionScoreSum() {
+        return finalScoreQuestionScoreSum;
+    }
+
+    public void setFinalScoreQuestionScoreSum(BigDecimal finalScoreQuestionScoreSum) {
+        this.finalScoreQuestionScoreSum = finalScoreQuestionScoreSum;
+    }
+
     public BigDecimal getEvaluationValue() {
     public BigDecimal getEvaluationValue() {
         return evaluationValue;
         return evaluationValue;
     }
     }
@@ -181,14 +185,10 @@ public class CourseTargetWordDto implements Serializable, Comparable<CourseTarge
         this.finalScoreDto = finalScoreDto;
         this.finalScoreDto = finalScoreDto;
     }
     }
 
 
-    public Double getMatrixAvgScore() {
+    public BigDecimal getMatrixAvgScore() {
         return matrixAvgScore;
         return matrixAvgScore;
     }
     }
 
 
-    public void setMatrixAvgScore(Double matrixAvgScore) {
-        this.matrixAvgScore = matrixAvgScore;
-    }
-
     @Override
     @Override
     public int compareTo(@NotNull CourseTargetWordDto o) {
     public int compareTo(@NotNull CourseTargetWordDto o) {
         if (o.getTargetId().longValue() < this.getTargetId().longValue()) {
         if (o.getTargetId().longValue() < this.getTargetId().longValue()) {

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

@@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModelProperty;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.NotNull;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 
 /**
 /**
  * @Description: 课程知识点dto
  * @Description: 课程知识点dto
@@ -33,13 +34,13 @@ public class DimensionDto implements Serializable, Comparable<DimensionDto> {
     private String dimensionName;
     private String dimensionName;
 
 
     @ApiModelProperty(value = "知识点分数")
     @ApiModelProperty(value = "知识点分数")
-    private Double dimensionScore;
+    private BigDecimal dimensionScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "换算分数")
     @ApiModelProperty(value = "换算分数")
-    private Double dimensionMatrixScore;
+    private BigDecimal dimensionMatrixScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "换算平均分")
     @ApiModelProperty(value = "换算平均分")
-    private Double dimensionMatrixAvgScore;
+    private BigDecimal dimensionMatrixAvgScore = new BigDecimal(0);
 
 
     public DimensionDto() {
     public DimensionDto() {
 
 
@@ -55,7 +56,7 @@ public class DimensionDto implements Serializable, Comparable<DimensionDto> {
         this.dimensionMatrixAvgScore = dimensionDto.getDimensionMatrixAvgScore();
         this.dimensionMatrixAvgScore = dimensionDto.getDimensionMatrixAvgScore();
     }
     }
 
 
-    public DimensionDto(Long targetId, DimensionDto dimensionDto, Double dimensionScore) {
+    public DimensionDto(Long targetId, DimensionDto dimensionDto, BigDecimal dimensionScore) {
         this.targetId = targetId;
         this.targetId = targetId;
         this.dimensionId = dimensionDto.getDimensionId();
         this.dimensionId = dimensionDto.getDimensionId();
         this.dimensionCode = dimensionDto.getDimensionCode();
         this.dimensionCode = dimensionDto.getDimensionCode();
@@ -63,7 +64,7 @@ public class DimensionDto implements Serializable, Comparable<DimensionDto> {
         this.dimensionScore = dimensionScore;
         this.dimensionScore = dimensionScore;
     }
     }
 
 
-    public DimensionDto(Long targetId, DimensionDto dimensionDto, Double dimensionScore, Double dimensionMatrixScore) {
+    public DimensionDto(Long targetId, DimensionDto dimensionDto, BigDecimal dimensionScore, BigDecimal dimensionMatrixScore) {
         this.targetId = targetId;
         this.targetId = targetId;
         this.dimensionId = dimensionDto.getDimensionId();
         this.dimensionId = dimensionDto.getDimensionId();
         this.dimensionCode = dimensionDto.getDimensionCode();
         this.dimensionCode = dimensionDto.getDimensionCode();
@@ -71,19 +72,28 @@ public class DimensionDto implements Serializable, Comparable<DimensionDto> {
         this.dimensionScore = dimensionScore;
         this.dimensionScore = dimensionScore;
         this.dimensionMatrixScore = dimensionMatrixScore;
         this.dimensionMatrixScore = dimensionMatrixScore;
     }
     }
-    public Double getDimensionMatrixScore() {
+
+    public BigDecimal getDimensionScore() {
+        return dimensionScore;
+    }
+
+    public void setDimensionScore(BigDecimal dimensionScore) {
+        this.dimensionScore = dimensionScore;
+    }
+
+    public BigDecimal getDimensionMatrixScore() {
         return dimensionMatrixScore;
         return dimensionMatrixScore;
     }
     }
 
 
-    public void setDimensionMatrixScore(Double dimensionMatrixScore) {
+    public void setDimensionMatrixScore(BigDecimal dimensionMatrixScore) {
         this.dimensionMatrixScore = dimensionMatrixScore;
         this.dimensionMatrixScore = dimensionMatrixScore;
     }
     }
 
 
-    public Double getDimensionMatrixAvgScore() {
+    public BigDecimal getDimensionMatrixAvgScore() {
         return dimensionMatrixAvgScore;
         return dimensionMatrixAvgScore;
     }
     }
 
 
-    public void setDimensionMatrixAvgScore(Double dimensionMatrixAvgScore) {
+    public void setDimensionMatrixAvgScore(BigDecimal dimensionMatrixAvgScore) {
         this.dimensionMatrixAvgScore = dimensionMatrixAvgScore;
         this.dimensionMatrixAvgScore = dimensionMatrixAvgScore;
     }
     }
 
 
@@ -119,14 +129,6 @@ public class DimensionDto implements Serializable, Comparable<DimensionDto> {
         this.dimensionName = dimensionName;
         this.dimensionName = dimensionName;
     }
     }
 
 
-    public Double getDimensionScore() {
-        return dimensionScore;
-    }
-
-    public void setDimensionScore(Double dimensionScore) {
-        this.dimensionScore = dimensionScore;
-    }
-
     @Override
     @Override
     public int compareTo(@NotNull DimensionDto o) {
     public int compareTo(@NotNull DimensionDto o) {
         return this.getDimensionCode().compareTo(o.getDimensionCode());
         return this.getDimensionCode().compareTo(o.getDimensionCode());

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

@@ -41,7 +41,7 @@ public class FinalScoreWordDto implements Serializable {
     private BigDecimal finalScoreSumWeight = new BigDecimal(0);
     private BigDecimal finalScoreSumWeight = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "期末成绩知识点分数")
     @ApiModelProperty(value = "期末成绩知识点分数")
-    private Double finalScoreDimensionScore;
+    private BigDecimal finalScoreDimensionScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "知识点集合")
     @ApiModelProperty(value = "知识点集合")
     private List<DimensionDto> dimensionList;
     private List<DimensionDto> dimensionList;
@@ -90,11 +90,11 @@ public class FinalScoreWordDto implements Serializable {
         this.finalScoreSumWeight = finalScoreSumWeight;
         this.finalScoreSumWeight = finalScoreSumWeight;
     }
     }
 
 
-    public Double getFinalScoreDimensionScore() {
+    public BigDecimal getFinalScoreDimensionScore() {
         return finalScoreDimensionScore;
         return finalScoreDimensionScore;
     }
     }
 
 
-    public void setFinalScoreDimensionScore(Double finalScoreDimensionScore) {
+    public void setFinalScoreDimensionScore(BigDecimal finalScoreDimensionScore) {
         this.finalScoreDimensionScore = finalScoreDimensionScore;
         this.finalScoreDimensionScore = finalScoreDimensionScore;
     }
     }
 
 

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

@@ -30,7 +30,7 @@ public class ObeSubRequirementsDto extends CourseTargetWebDto {
     private String name;
     private String name;
 
 
     @ApiModelProperty(value = "权重")
     @ApiModelProperty(value = "权重")
-    private Double scale;
+    private BigDecimal scale = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "描述")
     @ApiModelProperty(value = "描述")
     private String content;
     private String content;
@@ -97,11 +97,11 @@ public class ObeSubRequirementsDto extends CourseTargetWebDto {
         this.name = name;
         this.name = name;
     }
     }
 
 
-    public Double getScale() {
+    public BigDecimal getScale() {
         return scale;
         return scale;
     }
     }
 
 
-    public void setScale(Double scale) {
+    public void setScale(BigDecimal scale) {
         this.scale = scale;
         this.scale = scale;
     }
     }
 
 

+ 5 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportCourseBasicInfoDto.java

@@ -4,6 +4,7 @@ import com.qmth.distributed.print.business.entity.TRBasicInfo;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 
 /**
 /**
  * @Description: 报告课程基本情况dto
  * @Description: 报告课程基本情况dto
@@ -39,7 +40,7 @@ public class ReportCourseBasicInfoDto implements Serializable {
     private Integer participantCount;
     private Integer participantCount;
 
 
     @ApiModelProperty(value = "课程目标达成度期望值")
     @ApiModelProperty(value = "课程目标达成度期望值")
-    private Double courseDegree;
+    private BigDecimal courseDegree = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "任课老师")
     @ApiModelProperty(value = "任课老师")
     private String teacher;
     private String teacher;
@@ -57,7 +58,7 @@ public class ReportCourseBasicInfoDto implements Serializable {
     private String college;
     private String college;
 
 
     @ApiModelProperty(name = "课程英文名称")
     @ApiModelProperty(name = "课程英文名称")
-    String courseEnName;
+    private String courseEnName;
 
 
     public ReportCourseBasicInfoDto() {
     public ReportCourseBasicInfoDto() {
 
 
@@ -169,11 +170,11 @@ public class ReportCourseBasicInfoDto implements Serializable {
         this.participantCount = participantCount;
         this.participantCount = participantCount;
     }
     }
 
 
-    public Double getCourseDegree() {
+    public BigDecimal getCourseDegree() {
         return courseDegree;
         return courseDegree;
     }
     }
 
 
-    public void setCourseDegree(Double courseDegree) {
+    public void setCourseDegree(BigDecimal courseDegree) {
         this.courseDegree = courseDegree;
         this.courseDegree = courseDegree;
     }
     }
 
 

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

@@ -22,7 +22,7 @@ public class ReportCourseEvaluationResultDto implements Serializable {
     private Long weightSettingSign;
     private Long weightSettingSign;
 
 
     @ApiModelProperty(value = "课程目标总达成评价值")
     @ApiModelProperty(value = "课程目标总达成评价值")
-    private BigDecimal targetEvaluationSumValue;
+    private BigDecimal targetEvaluationSumValue = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "课程目标集合")
     @ApiModelProperty(value = "课程目标集合")
     private List<CourseTargetWebDto> targetList;
     private List<CourseTargetWebDto> targetList;

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

@@ -35,22 +35,22 @@ public class ReportEvaluationDto implements Serializable, Comparable<ReportEvalu
     private String evaluationDesc;
     private String evaluationDesc;
 
 
     @ApiModelProperty(value = "权重")
     @ApiModelProperty(value = "权重")
-    private BigDecimal targetWeight;
+    private BigDecimal targetWeight = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "目标分值")
     @ApiModelProperty(value = "目标分值")
-    private BigDecimal targetScore;
+    private BigDecimal targetScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "换算平均分")
     @ApiModelProperty(value = "换算平均分")
-    private Double targetAvgScore;
+    private BigDecimal targetAvgScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "卷面分")
     @ApiModelProperty(value = "卷面分")
-    private Double score;
+    private BigDecimal score = new BigDecimal(0);
 
 
     public ReportEvaluationDto() {
     public ReportEvaluationDto() {
 
 
     }
     }
 
 
-    public ReportEvaluationDto(Long targetId, CourseWeightDetailDto courseWeightDetailDto, Double score) {
+    public ReportEvaluationDto(Long targetId, CourseWeightDetailDto courseWeightDetailDto, BigDecimal score) {
         this.targetId = targetId;
         this.targetId = targetId;
         this.evaluationId = courseWeightDetailDto.getEvaluationId();
         this.evaluationId = courseWeightDetailDto.getEvaluationId();
         this.evaluation = courseWeightDetailDto.getEvaluationName();
         this.evaluation = courseWeightDetailDto.getEvaluationName();
@@ -60,20 +60,20 @@ public class ReportEvaluationDto implements Serializable, Comparable<ReportEvalu
         this.score = score;
         this.score = score;
     }
     }
 
 
-    public Double getScore() {
-        return score;
+    public BigDecimal getTargetAvgScore() {
+        return targetAvgScore;
     }
     }
 
 
-    public void setScore(Double score) {
-        this.score = score;
+    public void setTargetAvgScore(BigDecimal targetAvgScore) {
+        this.targetAvgScore = targetAvgScore;
     }
     }
 
 
-    public Double getTargetAvgScore() {
-        return targetAvgScore;
+    public BigDecimal getScore() {
+        return score;
     }
     }
 
 
-    public void setTargetAvgScore(Double targetAvgScore) {
-        this.targetAvgScore = targetAvgScore;
+    public void setScore(BigDecimal score) {
+        this.score = score;
     }
     }
 
 
     public Long getTargetId() {
     public Long getTargetId() {

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

@@ -7,6 +7,7 @@ import com.qmth.teachcloud.common.util.GsonUtil;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.List;
 import java.util.Objects;
 import java.util.Objects;
 
 
@@ -29,7 +30,7 @@ public class ReportExamStudentDto implements Serializable {
     private String administrativeClass;
     private String administrativeClass;
 
 
     @ApiModelProperty(value = "综合成绩")
     @ApiModelProperty(value = "综合成绩")
-    private Double score;
+    private BigDecimal score = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "课程目标集合")
     @ApiModelProperty(value = "课程目标集合")
     private List<ReportExamStudentTargetDto> targetList;
     private List<ReportExamStudentTargetDto> targetList;
@@ -47,7 +48,7 @@ public class ReportExamStudentDto implements Serializable {
         }.getType());
         }.getType());
     }
     }
 
 
-    public ReportExamStudentDto(String name, String studentCode, String administrativeClass, Double score, List<ReportExamStudentTargetDto> targetList) {
+    public ReportExamStudentDto(String name, String studentCode, String administrativeClass, BigDecimal score, List<ReportExamStudentTargetDto> targetList) {
         this.name = name;
         this.name = name;
         this.studentCode = studentCode;
         this.studentCode = studentCode;
         this.administrativeClass = administrativeClass;
         this.administrativeClass = administrativeClass;
@@ -85,11 +86,11 @@ public class ReportExamStudentDto implements Serializable {
         this.administrativeClass = administrativeClass;
         this.administrativeClass = administrativeClass;
     }
     }
 
 
-    public Double getScore() {
-        return Objects.isNull(score) ? 0.0d : score;
+    public BigDecimal getScore() {
+        return score;
     }
     }
 
 
-    public void setScore(Double score) {
+    public void setScore(BigDecimal score) {
         this.score = score;
         this.score = score;
     }
     }
 
 

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

@@ -30,28 +30,28 @@ public class ReportExamStudentFinalScoreDto implements Serializable {
     private String evaluationDesc;
     private String evaluationDesc;
 
 
     @ApiModelProperty(value = "权重")
     @ApiModelProperty(value = "权重")
-    private BigDecimal targetWeight;
+    private BigDecimal targetWeight = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "目标分值")
     @ApiModelProperty(value = "目标分值")
-    private BigDecimal targetScore;
+    private BigDecimal targetScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "课程目标知识点转换总分")
     @ApiModelProperty(value = "课程目标知识点转换总分")
-    private Double targetDimensionMatrixSumScore;
+    private BigDecimal targetDimensionMatrixSumScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "课程目标集合")
     @ApiModelProperty(value = "课程目标集合")
     private List<DimensionDto> dimensionList;
     private List<DimensionDto> dimensionList;
 
 
     @ApiModelProperty(value = "课程目标考核要素的平均分")
     @ApiModelProperty(value = "课程目标考核要素的平均分")
-    private Double matrixAvgScore;
+    private BigDecimal matrixAvgScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "知识点卷面总分")
     @ApiModelProperty(value = "知识点卷面总分")
-    private Double dimensionScoreSum;
+    private BigDecimal dimensionScoreSum = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "课程卷面总分")
     @ApiModelProperty(value = "课程卷面总分")
-    private Double targetScoreSum;
+    private BigDecimal targetScoreSum = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "课程目标转换总分")
     @ApiModelProperty(value = "课程目标转换总分")
-    private Double targetMatrixSumScore;
+    private BigDecimal targetMatrixSumScore = new BigDecimal(0);
 
 
     public ReportExamStudentFinalScoreDto() {
     public ReportExamStudentFinalScoreDto() {
 
 
@@ -78,7 +78,7 @@ public class ReportExamStudentFinalScoreDto implements Serializable {
 //        this.dimensionScoreSum = dimensionScoreSum;
 //        this.dimensionScoreSum = dimensionScoreSum;
 //    }
 //    }
 
 
-    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, Double targetScoreSum) {
+    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, BigDecimal targetScoreSum) {
         this.evaluationId = finalScoreWordDto.getEvaluationId();
         this.evaluationId = finalScoreWordDto.getEvaluationId();
         this.evaluation = finalScoreWordDto.getEvaluation();
         this.evaluation = finalScoreWordDto.getEvaluation();
         this.evaluationDesc = finalScoreWordDto.getEvaluationDesc();
         this.evaluationDesc = finalScoreWordDto.getEvaluationDesc();
@@ -87,7 +87,7 @@ public class ReportExamStudentFinalScoreDto implements Serializable {
         this.targetScoreSum = targetScoreSum;
         this.targetScoreSum = targetScoreSum;
     }
     }
 
 
-    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, Double targetMatrixSumScore, Double targetScoreSum) {
+    public ReportExamStudentFinalScoreDto(FinalScoreWordDto finalScoreWordDto, BigDecimal targetMatrixSumScore, BigDecimal targetScoreSum) {
         this.evaluationId = finalScoreWordDto.getEvaluationId();
         this.evaluationId = finalScoreWordDto.getEvaluationId();
         this.evaluation = finalScoreWordDto.getEvaluation();
         this.evaluation = finalScoreWordDto.getEvaluation();
         this.evaluationDesc = finalScoreWordDto.getEvaluationDesc();
         this.evaluationDesc = finalScoreWordDto.getEvaluationDesc();
@@ -97,46 +97,46 @@ public class ReportExamStudentFinalScoreDto implements Serializable {
         this.targetScoreSum = targetScoreSum;
         this.targetScoreSum = targetScoreSum;
     }
     }
 
 
-    public Double getTargetDimensionMatrixSumScore() {
+    public BigDecimal getTargetDimensionMatrixSumScore() {
         return targetDimensionMatrixSumScore;
         return targetDimensionMatrixSumScore;
     }
     }
 
 
-    public void setTargetDimensionMatrixSumScore(Double targetDimensionMatrixSumScore) {
+    public void setTargetDimensionMatrixSumScore(BigDecimal targetDimensionMatrixSumScore) {
         this.targetDimensionMatrixSumScore = targetDimensionMatrixSumScore;
         this.targetDimensionMatrixSumScore = targetDimensionMatrixSumScore;
     }
     }
 
 
-    public Double getDimensionScoreSum() {
+    public BigDecimal getMatrixAvgScore() {
+        return matrixAvgScore;
+    }
+
+    public void setMatrixAvgScore(BigDecimal matrixAvgScore) {
+        this.matrixAvgScore = matrixAvgScore;
+    }
+
+    public BigDecimal getDimensionScoreSum() {
         return dimensionScoreSum;
         return dimensionScoreSum;
     }
     }
 
 
-    public void setDimensionScoreSum(Double dimensionScoreSum) {
+    public void setDimensionScoreSum(BigDecimal dimensionScoreSum) {
         this.dimensionScoreSum = dimensionScoreSum;
         this.dimensionScoreSum = dimensionScoreSum;
     }
     }
 
 
-    public Double getTargetScoreSum() {
+    public BigDecimal getTargetScoreSum() {
         return targetScoreSum;
         return targetScoreSum;
     }
     }
 
 
-    public void setTargetScoreSum(Double targetScoreSum) {
+    public void setTargetScoreSum(BigDecimal targetScoreSum) {
         this.targetScoreSum = targetScoreSum;
         this.targetScoreSum = targetScoreSum;
     }
     }
 
 
-    public Double getTargetMatrixSumScore() {
+    public BigDecimal getTargetMatrixSumScore() {
         return targetMatrixSumScore;
         return targetMatrixSumScore;
     }
     }
 
 
-    public void setTargetMatrixSumScore(Double targetMatrixSumScore) {
+    public void setTargetMatrixSumScore(BigDecimal targetMatrixSumScore) {
         this.targetMatrixSumScore = targetMatrixSumScore;
         this.targetMatrixSumScore = targetMatrixSumScore;
     }
     }
 
 
-    public Double getMatrixAvgScore() {
-        return matrixAvgScore;
-    }
-
-    public void setMatrixAvgScore(Double matrixAvgScore) {
-        this.matrixAvgScore = matrixAvgScore;
-    }
-
     public Long getEvaluationId() {
     public Long getEvaluationId() {
         return evaluationId;
         return evaluationId;
     }
     }

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

@@ -30,16 +30,16 @@ public class ReportExamStudentTargetDto implements Serializable, Comparable<Repo
     private String graduationRequirement;
     private String graduationRequirement;
 
 
     @ApiModelProperty(value = "目标整体权重")
     @ApiModelProperty(value = "目标整体权重")
-    private BigDecimal targetSumWeight;
+    private BigDecimal targetSumWeight = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "目标达成评价值")
     @ApiModelProperty(value = "目标达成评价值")
-    private BigDecimal evaluationValue;
+    private BigDecimal evaluationValue = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "各课程目标平均分")
     @ApiModelProperty(value = "各课程目标平均分")
-    private Double targetMatrixAvgScore;
+    private BigDecimal targetMatrixAvgScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "个人达成度")
     @ApiModelProperty(value = "个人达成度")
-    private BigDecimal matrixDegree;
+    private BigDecimal matrixDegree = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "期末成绩")
     @ApiModelProperty(value = "期末成绩")
     private ReportExamStudentFinalScoreDto finalScore;
     private ReportExamStudentFinalScoreDto finalScore;
@@ -80,11 +80,11 @@ public class ReportExamStudentTargetDto implements Serializable, Comparable<Repo
         this.matrixDegree = matrixDegree;
         this.matrixDegree = matrixDegree;
     }
     }
 
 
-    public Double getTargetMatrixAvgScore() {
+    public BigDecimal getTargetMatrixAvgScore() {
         return targetMatrixAvgScore;
         return targetMatrixAvgScore;
     }
     }
 
 
-    public void setTargetMatrixAvgScore(Double targetMatrixAvgScore) {
+    public void setTargetMatrixAvgScore(BigDecimal targetMatrixAvgScore) {
         this.targetMatrixAvgScore = targetMatrixAvgScore;
         this.targetMatrixAvgScore = targetMatrixAvgScore;
     }
     }
 
 

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

@@ -37,22 +37,22 @@ public class ReportExamStudentUsualScoreObjDto implements Serializable, Comparab
     private BigDecimal targetWeight;
     private BigDecimal targetWeight;
 
 
     @ApiModelProperty(value = "作业目标分值")
     @ApiModelProperty(value = "作业目标分值")
-    private BigDecimal targetScore;
+    private BigDecimal targetScore = new BigDecimal(0);
 
 
 //    @ApiModelProperty(value = "作业整体权重")
 //    @ApiModelProperty(value = "作业整体权重")
 //    private BigDecimal targetSumWeight;
 //    private BigDecimal targetSumWeight;
 
 
     @ApiModelProperty(value = "作业整体分值")
     @ApiModelProperty(value = "作业整体分值")
-    private BigDecimal targetSumScore;
+    private BigDecimal targetSumScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "卷面分数")
     @ApiModelProperty(value = "卷面分数")
-    private Double score;
+    private BigDecimal score = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "换算分数")
     @ApiModelProperty(value = "换算分数")
-    private Double matrixScore;
+    private BigDecimal matrixScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "课程目标考核要素的平均分")
     @ApiModelProperty(value = "课程目标考核要素的平均分")
-    private Double matrixAvgScore;
+    private BigDecimal matrixAvgScore = new BigDecimal(0);
 
 
     public ReportExamStudentUsualScoreObjDto() {
     public ReportExamStudentUsualScoreObjDto() {
 
 
@@ -70,7 +70,7 @@ public class ReportExamStudentUsualScoreObjDto implements Serializable, Comparab
         this.targetSumScore = reportExamStudentUsualScoreObjDto.getTargetSumScore();
         this.targetSumScore = reportExamStudentUsualScoreObjDto.getTargetSumScore();
     }
     }
 
 
-    public ReportExamStudentUsualScoreObjDto(Long targetId, ReportEvaluationDto reportEvaluationDto, Double score, Double matrixScore, BigDecimal targetSumScore) {
+    public ReportExamStudentUsualScoreObjDto(Long targetId, ReportEvaluationDto reportEvaluationDto, BigDecimal score, BigDecimal matrixScore, BigDecimal targetSumScore) {
         this.evaluationId = reportEvaluationDto.getEvaluationId();
         this.evaluationId = reportEvaluationDto.getEvaluationId();
         this.evaluation = reportEvaluationDto.getEvaluation();
         this.evaluation = reportEvaluationDto.getEvaluation();
         this.evaluationDesc = reportEvaluationDto.getEvaluationDesc();
         this.evaluationDesc = reportEvaluationDto.getEvaluationDesc();
@@ -82,14 +82,6 @@ public class ReportExamStudentUsualScoreObjDto implements Serializable, Comparab
         this.targetSumScore = targetSumScore;
         this.targetSumScore = targetSumScore;
     }
     }
 
 
-    public Double getMatrixAvgScore() {
-        return matrixAvgScore;
-    }
-
-    public void setMatrixAvgScore(Double matrixAvgScore) {
-        this.matrixAvgScore = matrixAvgScore;
-    }
-
     public Long getTargetId() {
     public Long getTargetId() {
         return targetId;
         return targetId;
     }
     }
@@ -146,22 +138,30 @@ public class ReportExamStudentUsualScoreObjDto implements Serializable, Comparab
         this.targetScore = targetScore;
         this.targetScore = targetScore;
     }
     }
 
 
-    public Double getScore() {
+    public BigDecimal getScore() {
         return score;
         return score;
     }
     }
 
 
-    public void setScore(Double score) {
+    public void setScore(BigDecimal score) {
         this.score = score;
         this.score = score;
     }
     }
 
 
-    public Double getMatrixScore() {
+    public BigDecimal getMatrixScore() {
         return matrixScore;
         return matrixScore;
     }
     }
 
 
-    public void setMatrixScore(Double matrixScore) {
+    public void setMatrixScore(BigDecimal matrixScore) {
         this.matrixScore = matrixScore;
         this.matrixScore = matrixScore;
     }
     }
 
 
+    public BigDecimal getMatrixAvgScore() {
+        return matrixAvgScore;
+    }
+
+    public void setMatrixAvgScore(BigDecimal matrixAvgScore) {
+        this.matrixAvgScore = matrixAvgScore;
+    }
+
     @Override
     @Override
     public int compareTo(@NotNull ReportExamStudentUsualScoreObjDto o) {
     public int compareTo(@NotNull ReportExamStudentUsualScoreObjDto o) {
         return this.getEvaluation().compareTo(o.getEvaluation());
         return this.getEvaluation().compareTo(o.getEvaluation());

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

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonInclude;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 
 /**
 /**
  * @Description: 报告课程目标考核分布-分数范围dto
  * @Description: 报告课程目标考核分布-分数范围dto
@@ -19,13 +20,13 @@ public class ReportScoreRangeViewDto implements Serializable {
     private Integer studentCount;
     private Integer studentCount;
 
 
     @ApiModelProperty(value = "最小分")
     @ApiModelProperty(value = "最小分")
-    private Double minScore;
+    private BigDecimal minScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "最大分")
     @ApiModelProperty(value = "最大分")
-    private Double maxScore;
+    private BigDecimal maxScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "比率")
     @ApiModelProperty(value = "比率")
-    private Double rate;
+    private BigDecimal rate = new BigDecimal(0);
 
 
     public Integer getStudentCount() {
     public Integer getStudentCount() {
         return studentCount;
         return studentCount;
@@ -35,27 +36,27 @@ public class ReportScoreRangeViewDto implements Serializable {
         this.studentCount = studentCount;
         this.studentCount = studentCount;
     }
     }
 
 
-    public Double getMinScore() {
+    public BigDecimal getMinScore() {
         return minScore;
         return minScore;
     }
     }
 
 
-    public void setMinScore(Double minScore) {
+    public void setMinScore(BigDecimal minScore) {
         this.minScore = minScore;
         this.minScore = minScore;
     }
     }
 
 
-    public Double getMaxScore() {
+    public BigDecimal getMaxScore() {
         return maxScore;
         return maxScore;
     }
     }
 
 
-    public void setMaxScore(Double maxScore) {
+    public void setMaxScore(BigDecimal maxScore) {
         this.maxScore = maxScore;
         this.maxScore = maxScore;
     }
     }
 
 
-    public Double getRate() {
+    public BigDecimal getRate() {
         return rate;
         return rate;
     }
     }
 
 
-    public void setRate(Double rate) {
+    public void setRate(BigDecimal rate) {
         this.rate = rate;
         this.rate = rate;
     }
     }
 }
 }

+ 5 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/report/ReportScoreViewDto.java

@@ -3,6 +3,7 @@ package com.qmth.distributed.print.business.bean.dto.report;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.List;
 
 
 /**
 /**
@@ -18,7 +19,7 @@ public class ReportScoreViewDto implements Serializable {
     private Integer failCount;
     private Integer failCount;
 
 
     @ApiModelProperty(value = "不及格比率")
     @ApiModelProperty(value = "不及格比率")
-    private Double failRate;
+    private BigDecimal failRate = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "分数范围")
     @ApiModelProperty(value = "分数范围")
     private List<ReportScoreRangeViewDto> scoreRange;
     private List<ReportScoreRangeViewDto> scoreRange;
@@ -27,7 +28,7 @@ public class ReportScoreViewDto implements Serializable {
 
 
     }
     }
 
 
-    public ReportScoreViewDto(Integer failCount, Double failRate, List<ReportScoreRangeViewDto> scoreRange) {
+    public ReportScoreViewDto(Integer failCount, BigDecimal failRate, List<ReportScoreRangeViewDto> scoreRange) {
         this.failCount = failCount;
         this.failCount = failCount;
         this.failRate = failRate;
         this.failRate = failRate;
         this.scoreRange = scoreRange;
         this.scoreRange = scoreRange;
@@ -41,11 +42,11 @@ public class ReportScoreViewDto implements Serializable {
         this.failCount = failCount;
         this.failCount = failCount;
     }
     }
 
 
-    public Double getFailRate() {
+    public BigDecimal getFailRate() {
         return failRate;
         return failRate;
     }
     }
 
 
-    public void setFailRate(Double failRate) {
+    public void setFailRate(BigDecimal failRate) {
         this.failRate = failRate;
         this.failRate = failRate;
     }
     }
 
 

+ 7 - 6
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/FinalScoreResult.java

@@ -5,6 +5,7 @@ import com.qmth.distributed.print.business.bean.dto.report.ReportExamStudentUsua
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map;
 
 
@@ -27,10 +28,10 @@ public class FinalScoreResult implements Serializable {
     private String administrativeClass;
     private String administrativeClass;
 
 
     @ApiModelProperty(value = "期末考试分数")
     @ApiModelProperty(value = "期末考试分数")
-    private Map<Long, Double> finalScoreDimension = new LinkedHashMap<>();
+    private Map<Long, BigDecimal> finalScoreDimension = new LinkedHashMap<>();
 
 
     @ApiModelProperty(value = "期末考试分数")
     @ApiModelProperty(value = "期末考试分数")
-    private Map<Long, Double> finalScoreTarget = new LinkedHashMap<>();
+    private Map<Long, BigDecimal> finalScoreTarget = new LinkedHashMap<>();
 
 
     @ApiModelProperty(value = "期末考试分数明细")
     @ApiModelProperty(value = "期末考试分数明细")
     private String finalScoreDetail;
     private String finalScoreDetail;
@@ -92,19 +93,19 @@ public class FinalScoreResult implements Serializable {
         this.studentCode = studentCode;
         this.studentCode = studentCode;
     }
     }
 
 
-    public Map<Long, Double> getFinalScoreDimension() {
+    public Map<Long, BigDecimal> getFinalScoreDimension() {
         return finalScoreDimension;
         return finalScoreDimension;
     }
     }
 
 
-    public void setFinalScoreDimension(Map<Long, Double> finalScoreDimension) {
+    public void setFinalScoreDimension(Map<Long, BigDecimal> finalScoreDimension) {
         this.finalScoreDimension = finalScoreDimension;
         this.finalScoreDimension = finalScoreDimension;
     }
     }
 
 
-    public Map<Long, Double> getFinalScoreTarget() {
+    public Map<Long, BigDecimal> getFinalScoreTarget() {
         return finalScoreTarget;
         return finalScoreTarget;
     }
     }
 
 
-    public void setFinalScoreTarget(Map<Long, Double> finalScoreTarget) {
+    public void setFinalScoreTarget(Map<Long, BigDecimal> finalScoreTarget) {
         this.finalScoreTarget = finalScoreTarget;
         this.finalScoreTarget = finalScoreTarget;
     }
     }
 
 

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

@@ -7,6 +7,7 @@ import org.hibernate.validator.constraints.Range;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 
 
@@ -34,7 +35,7 @@ public class PaperStructDimensionResult implements Serializable {
 
 
     @ApiModelProperty(value = "分数")
     @ApiModelProperty(value = "分数")
     @NotNull(message = "分数不能为空")
     @NotNull(message = "分数不能为空")
-    private Double score;
+    private BigDecimal score = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "课程目标名称")
     @ApiModelProperty(value = "课程目标名称")
     @NotNull(message = "课程目标名称不能为空")
     @NotNull(message = "课程目标名称不能为空")
@@ -48,7 +49,7 @@ public class PaperStructDimensionResult implements Serializable {
 
 
     }
     }
 
 
-    public PaperStructDimensionResult(Integer mainNumber, Integer subNumber, String paperNumber, Double score) {
+    public PaperStructDimensionResult(Integer mainNumber, Integer subNumber, String paperNumber, BigDecimal score) {
         this.mainNumber = mainNumber;
         this.mainNumber = mainNumber;
         this.subNumber = subNumber;
         this.subNumber = subNumber;
         this.paperNumber = paperNumber;
         this.paperNumber = paperNumber;
@@ -87,11 +88,11 @@ public class PaperStructDimensionResult implements Serializable {
         this.subNumber = subNumber;
         this.subNumber = subNumber;
     }
     }
 
 
-    public Double getScore() {
+    public BigDecimal getScore() {
         return score;
         return score;
     }
     }
 
 
-    public void setScore(Double score) {
+    public void setScore(BigDecimal score) {
         this.score = score;
         this.score = score;
     }
     }
 
 

+ 7 - 9
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TRBasicInfo.java

@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -75,7 +76,7 @@ public class TRBasicInfo extends BaseEntity implements Serializable {
     private Integer participantCount = 0;
     private Integer participantCount = 0;
 
 
     @ApiModelProperty(value = "课程目标达成度期望值")
     @ApiModelProperty(value = "课程目标达成度期望值")
-    private Double courseDegree;
+    private BigDecimal courseDegree = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "任课老师")
     @ApiModelProperty(value = "任课老师")
     private String teacher;
     private String teacher;
@@ -108,7 +109,7 @@ public class TRBasicInfo extends BaseEntity implements Serializable {
     private String courseSuggest;
     private String courseSuggest;
 
 
     @ApiModelProperty(name = "课程英文名称")
     @ApiModelProperty(name = "课程英文名称")
-    String courseEnName;
+    private String courseEnName;
 
 
     @ApiModelProperty(value = "报告信息")
     @ApiModelProperty(value = "报告信息")
     @TableField(exist = false)
     @TableField(exist = false)
@@ -121,7 +122,7 @@ public class TRBasicInfo extends BaseEntity implements Serializable {
     public TRBasicInfo(Long cultureProgramId, Long courseId, String courseCode, String courseName,
     public TRBasicInfo(Long cultureProgramId, Long courseId, String courseCode, String courseName,
                        String paperNumber, String openTime, String teachingObject, String teacher, Integer participantCount,
                        String paperNumber, String openTime, String teachingObject, String teacher, Integer participantCount,
                        Long userId, String profession, String finishPoints, String requirementPoints,
                        Long userId, String profession, String finishPoints, String requirementPoints,
-                       String courseSuggest, Double courseDegree, String courseEnName) {
+                       String courseSuggest, BigDecimal courseDegree, String courseEnName) {
         insertInfo(userId);
         insertInfo(userId);
         this.cultureProgramId = cultureProgramId;
         this.cultureProgramId = cultureProgramId;
         this.courseId = courseId;
         this.courseId = courseId;
@@ -135,9 +136,6 @@ public class TRBasicInfo extends BaseEntity implements Serializable {
         this.enable = true;
         this.enable = true;
         this.reportResult = new ReportResult();
         this.reportResult = new ReportResult();
         this.profession = profession;
         this.profession = profession;
-        this.finishPoints = finishPoints;
-        this.requirementPoints = requirementPoints;
-        this.courseSuggest = courseSuggest;
         this.courseDegree = courseDegree;
         this.courseDegree = courseDegree;
         this.courseEnName = courseEnName;
         this.courseEnName = courseEnName;
         this.finishPoints = finishPoints;
         this.finishPoints = finishPoints;
@@ -236,7 +234,7 @@ public class TRBasicInfo extends BaseEntity implements Serializable {
 
 
     public void setBasicInfo(Long examId, String courseCode, String courseName, String paperNumber, String openTime,
     public void setBasicInfo(Long examId, String courseCode, String courseName, String paperNumber, String openTime,
                              String teachingObject, String teacher, Integer participantCount, Long cultureProgramId,
                              String teachingObject, String teacher, Integer participantCount, Long cultureProgramId,
-                             Long courseId, Double courseDegree, String profession, String courseEnName, String college,
+                             Long courseId, BigDecimal courseDegree, String profession, String courseEnName, String college,
                              String finishPoints, String requirementPoints, String courseSuggest) {
                              String finishPoints, String requirementPoints, String courseSuggest) {
         this.examId = examId;
         this.examId = examId;
         this.courseCode = courseCode;
         this.courseCode = courseCode;
@@ -363,11 +361,11 @@ public class TRBasicInfo extends BaseEntity implements Serializable {
         this.teachingObject = teachingObject;
         this.teachingObject = teachingObject;
     }
     }
 
 
-    public Double getCourseDegree() {
+    public BigDecimal getCourseDegree() {
         return courseDegree;
         return courseDegree;
     }
     }
 
 
-    public void setCourseDegree(Double courseDegree) {
+    public void setCourseDegree(BigDecimal courseDegree) {
         this.courseDegree = courseDegree;
         this.courseDegree = courseDegree;
     }
     }
 
 

+ 4 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/TRExamStudent.java

@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -41,7 +42,7 @@ public class TRExamStudent implements Serializable {
     private String administrativeClass;
     private String administrativeClass;
 
 
     @ApiModelProperty(value = "综合成绩")
     @ApiModelProperty(value = "综合成绩")
-    private Double score;
+    private BigDecimal score = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "考生课程考核成绩评价明细结果")
     @ApiModelProperty(value = "考生课程考核成绩评价明细结果")
     private String resultDetail;
     private String resultDetail;
@@ -67,11 +68,11 @@ public class TRExamStudent implements Serializable {
         this.resultDetail = JacksonUtil.parseJson(reportExamStudentDto.getTargetList());
         this.resultDetail = JacksonUtil.parseJson(reportExamStudentDto.getTargetList());
     }
     }
 
 
-    public Double getScore() {
+    public BigDecimal getScore() {
         return score;
         return score;
     }
     }
 
 
-    public void setScore(Double score) {
+    public void setScore(BigDecimal score) {
         this.score = score;
         this.score = score;
     }
     }
 
 

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

@@ -30,6 +30,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.LinkedMultiValueMap;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Comparator;
 import java.util.List;
 import java.util.List;
@@ -106,7 +107,7 @@ public class ObeCourseRequirementMatrixServiceImpl extends ServiceImpl<ObeCourse
                         MatrixSubRequirementDto matrixSubRequirementDto = new MatrixSubRequirementDto();
                         MatrixSubRequirementDto matrixSubRequirementDto = new MatrixSubRequirementDto();
                         matrixSubRequirementDto.setId(tpMatrix.getId());
                         matrixSubRequirementDto.setId(tpMatrix.getId());
                         matrixSubRequirementDto.setName(tpMatrix.getRequirementSortNum() + "-" + tpMatrix.getSubRequirementSortNum());
                         matrixSubRequirementDto.setName(tpMatrix.getRequirementSortNum() + "-" + tpMatrix.getSubRequirementSortNum());
-                        matrixSubRequirementDto.setScale(tpMatrix.getScale());
+                        matrixSubRequirementDto.setScale(new BigDecimal(tpMatrix.getScale()));
                         matrixSubRequirementDto.setContent(tpMatrix.getRequirementContent());
                         matrixSubRequirementDto.setContent(tpMatrix.getRequirementContent());
                         matrixSubRequirementDto.setSubRequirementId(tpMatrix.getObeSubRequirementId());
                         matrixSubRequirementDto.setSubRequirementId(tpMatrix.getObeSubRequirementId());
                         return matrixSubRequirementDto;
                         return matrixSubRequirementDto;

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

@@ -142,7 +142,7 @@ public class ObeCourseRequirementReportServiceImpl extends ServiceImpl<ObeCourse
                             for (Map.Entry<Long, List<ObeSubRequirementsDto>> entry : matrixSubRequirementIdMap.entrySet()) {
                             for (Map.Entry<Long, List<ObeSubRequirementsDto>> entry : matrixSubRequirementIdMap.entrySet()) {
                                 Double evaluationValue = entry.getValue().stream().mapToDouble(x -> Objects.nonNull(x.getEvaluationValue()) ? x.getEvaluationValue().doubleValue() : 0.0d).average().orElse(0.0d);
                                 Double evaluationValue = entry.getValue().stream().mapToDouble(x -> Objects.nonNull(x.getEvaluationValue()) ? x.getEvaluationValue().doubleValue() : 0.0d).average().orElse(0.0d);
                                 ObeSubRequirementsDto obeSubRequirementsDto = entry.getValue().get(0);
                                 ObeSubRequirementsDto obeSubRequirementsDto = entry.getValue().get(0);
-                                BigDecimal bigDecimal = new BigDecimal(evaluationValue).multiply(new BigDecimal(obeSubRequirementsDto.getScale())).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                BigDecimal bigDecimal = new BigDecimal(evaluationValue).multiply(obeSubRequirementsDto.getScale()).setScale(2, BigDecimal.ROUND_HALF_UP);
                                 entry.getValue().stream().peek(x -> x.setMatrixDegree(bigDecimal)).collect(Collectors.toList());
                                 entry.getValue().stream().peek(x -> x.setMatrixDegree(bigDecimal)).collect(Collectors.toList());
                             }
                             }
                         }
                         }

+ 3 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCourseTargetServiceImpl.java

@@ -26,6 +26,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -245,7 +246,7 @@ public class ObeCourseTargetServiceImpl extends ServiceImpl<ObeCourseTargetMappe
                                 }
                                 }
                                 subCell.setMainNumber(mainNumber);
                                 subCell.setMainNumber(mainNumber);
                                 subCell.setSubNumber(subNumberIndex.getAndIncrement());
                                 subCell.setSubNumber(subNumberIndex.getAndIncrement());
-                                subCell.setScore(score);
+                                subCell.setScore(new BigDecimal(score));
                                 result.add(subCell);
                                 result.add(subCell);
                             }
                             }
 
 
@@ -274,7 +275,7 @@ public class ObeCourseTargetServiceImpl extends ServiceImpl<ObeCourseTargetMappe
                             }
                             }
                             cell.setMainNumber(mainNumber);
                             cell.setMainNumber(mainNumber);
                             cell.setSubNumber(subNumberIndex.getAndIncrement());
                             cell.setSubNumber(subNumberIndex.getAndIncrement());
-                            cell.setScore(score);
+                            cell.setScore(new BigDecimal(score));
                             result.add(cell);
                             result.add(cell);
                         }
                         }
                     }
                     }

+ 275 - 274
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ObeCultureProgramRequirementServiceImpl.java

@@ -1,274 +1,275 @@
-package com.qmth.distributed.print.business.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qmth.distributed.print.business.bean.dto.obe.CourseRequirementMatrixDto;
-import com.qmth.distributed.print.business.bean.dto.obe.MatrixRequirementDto;
-import com.qmth.distributed.print.business.bean.dto.obe.MatrixSubRequirementDto;
-import com.qmth.distributed.print.business.entity.ObeCourseRequirementMatrix;
-import com.qmth.distributed.print.business.entity.ObeCultureProgram;
-import com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement;
-import com.qmth.distributed.print.business.enums.CultureProgramRequirementEnum;
-import com.qmth.distributed.print.business.mapper.ObeCourseRequirementMatrixMapper;
-import com.qmth.distributed.print.business.mapper.ObeCultureProgramRequirementMapper;
-import com.qmth.distributed.print.business.service.ObeCourseRequirementMatrixService;
-import com.qmth.distributed.print.business.service.ObeCultureProgramRequirementService;
-import com.qmth.distributed.print.business.service.ObeCultureProgramService;
-import com.qmth.teachcloud.common.contant.SystemConstant;
-import com.qmth.teachcloud.common.entity.SysUser;
-import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
-import com.qmth.teachcloud.common.util.ServletUtil;
-import org.apache.commons.collections4.CollectionUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.LinkedMultiValueMap;
-
-import javax.annotation.Resource;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * <p>
- * 培养方案毕业要求 服务实现类
- * </p>
- *
- * @author xf
- * @since 2024-06-05
- */
-@Service
-public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCultureProgramRequirementMapper, ObeCultureProgramRequirement> implements ObeCultureProgramRequirementService {
-
-    private static final String NAME_PREFIX = "指标点";
-
-    @Resource
-    private ObeCultureProgramService obeCultureProgramService;
-    @Resource
-    private ObeCourseRequirementMatrixService obeCourseRequirementMatrixService;
-    @Resource
-    private ObeCourseRequirementMatrixMapper obeCourseRequirementMatrixMapper;
-
-    @Override
-    public List<ObeCultureProgramRequirement> listRequirement(Long cultureProgramId) {
-        List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = this.listByCultureProgramId(cultureProgramId);
-
-        List<ObeCultureProgramRequirement> obeCultureProgramRequirements = new ArrayList<>();
-        if (CollectionUtils.isNotEmpty(obeCultureProgramRequirementList)) {
-            Map<Long, ObeCultureProgramRequirement> obeCultureProgramRequirementMap = obeCultureProgramRequirementList.stream().filter(obeCultureProgramRequirement -> obeCultureProgramRequirement.getParentId() == null).collect(Collectors.toMap(ObeCultureProgramRequirement::getId, obeCultureProgramRequirement -> obeCultureProgramRequirement));
-            for (ObeCultureProgramRequirement obeCultureProgramRequirement : obeCultureProgramRequirementList) {
-                if (obeCultureProgramRequirement.getParentId() != null) {
-                    obeCultureProgramRequirementMap.get(obeCultureProgramRequirement.getParentId()).getSubRequirementList().add(obeCultureProgramRequirement);
-                }
-            }
-            obeCultureProgramRequirements = obeCultureProgramRequirementMap.values().stream().collect(Collectors.toList());
-            obeCultureProgramRequirements.sort(Comparator.comparingInt(ObeCultureProgramRequirement::getSortNum));
-        }
-        return obeCultureProgramRequirements;
-    }
-
-    @Override
-    public boolean saveRequirement(ObeCultureProgramRequirement obeCultureProgramRequirement) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        // 修改
-        if (obeCultureProgramRequirement.getId() != null) {
-            obeCultureProgramRequirement.updateInfo(sysUser.getId());
-            return this.updateById(obeCultureProgramRequirement);
-        }
-        // 新增
-//        else {
-//            ObeCultureProgramRequirement obeCultureProgramRequirementParent = this.getById(obeCultureProgramRequirement.getParentId());
-//            obeCultureProgramRequirement.setSortNum(this.getMaxSortNum(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirement.getParentId()) + 1);
-//            obeCultureProgramRequirement.setName(concatRequirementName(obeCultureProgramRequirementParent.getSortNum(), obeCultureProgramRequirement.getSortNum()));
-//            obeCultureProgramRequirement.insertInfo(sysUser.getId());
-//            if (this.save(obeCultureProgramRequirement)) {
-//                obeCourseRequirementMatrixService.updateMatrix(obeCultureProgramRequirement.getCultureProgramId(), Arrays.asList(obeCultureProgramRequirement), null);
-//            }
-//            return true;
-//        }
-        return true;
-    }
-
-    @Override
-    public boolean addRequirementNode(ObeCultureProgramRequirement obeCultureProgramRequirement) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-
-        ObeCultureProgramRequirement parentRequirement = this.getById(obeCultureProgramRequirement.getId());
-        ObeCultureProgramRequirement cultureProgramRequirement = new ObeCultureProgramRequirement();
-        cultureProgramRequirement.setCultureProgramId(obeCultureProgramRequirement.getCultureProgramId());
-        cultureProgramRequirement.setSortNum(this.getMaxSortNum(cultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirement.getId()) + 1);
-        cultureProgramRequirement.setName(concatRequirementName(parentRequirement.getSortNum(), cultureProgramRequirement.getSortNum()));
-        cultureProgramRequirement.setParentId(obeCultureProgramRequirement.getId());
-        cultureProgramRequirement.insertInfo(sysUser.getId());
-        if (this.save(cultureProgramRequirement)) {
-            parentRequirement.getSubRequirementList().add(cultureProgramRequirement);
-            obeCourseRequirementMatrixService.updateMatrix(cultureProgramRequirement.getCultureProgramId(), Arrays.asList(parentRequirement), null);
-        }
-        return true;
-    }
-
-    @Override
-    public int getMaxSortNum(Long cultureProgramId, Long parentId) {
-        QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<ObeCultureProgramRequirement> lambda = queryWrapper.lambda();
-        lambda.eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId);
-        if (parentId != null) {
-            lambda.eq(ObeCultureProgramRequirement::getParentId, parentId);
-        }
-        lambda.orderByDesc(ObeCultureProgramRequirement::getSortNum);
-        lambda.last("limit 1");
-        ObeCultureProgramRequirement requirement = this.getOne(queryWrapper);
-        if (requirement == null) {
-            return 0;
-        } else {
-            return requirement.getSortNum();
-        }
-    }
-
-    @Transactional
-    @Override
-    public boolean removeRequirement(Long id) {
-        ObeCultureProgramRequirement obeCultureProgramRequirement = this.getById(id);
-        ObeCultureProgramRequirement obeCultureProgramRequirementParent = this.getById(obeCultureProgramRequirement.getParentId());
-        obeCourseRequirementMatrixService.removeMatrixByCondition(new ObeCourseRequirementMatrix(null, null, null, id));
-        if (this.removeById(id)) {
-            List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = this.listByCultureProgramIdAndParentId(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirement.getParentId());
-            if (CollectionUtils.isEmpty(obeCultureProgramRequirementList)) {
-                throw ExceptionResultEnum.ERROR.exception("当前数据为最后一个节点,无法删除");
-            }
-            for (int i = 0; i < obeCultureProgramRequirementList.size(); i++) {
-                obeCultureProgramRequirementList.get(i).setSortNum(i + 1);
-                obeCultureProgramRequirementList.get(i).setName(concatRequirementName(obeCultureProgramRequirementParent.getSortNum(), (i + 1)));
-            }
-            this.updateBatchById(obeCultureProgramRequirementList);
-        }
-        return true;
-    }
-
-    @Transactional
-    @Override
-    public void initRequirement(Long cultureProgramId) {
-        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = new ArrayList<>();
-        for (CultureProgramRequirementEnum value : CultureProgramRequirementEnum.values()) {
-            // 一级节点
-            ObeCultureProgramRequirement obeCultureProgramRequirement = new ObeCultureProgramRequirement(cultureProgramId, value.name(), value.getName(), value.getContent(), null, value.ordinal() + 1);
-            obeCultureProgramRequirement.insertInfo(sysUser.getId());
-            obeCultureProgramRequirementList.add(obeCultureProgramRequirement);
-            // 每个一级节点默认创建一个二级节点
-            ObeCultureProgramRequirement obeSubCultureProgramRequirement = new ObeCultureProgramRequirement(cultureProgramId, null, concatRequirementName(obeCultureProgramRequirement.getSortNum(), 1), null, obeCultureProgramRequirement.getId(), 1);
-            obeSubCultureProgramRequirement.insertInfo(sysUser.getId());
-            obeCultureProgramRequirementList.add(obeSubCultureProgramRequirement);
-        }
-
-        this.saveBatch(obeCultureProgramRequirementList);
-    }
-
-    @Override
-    public List<ObeCultureProgramRequirement> listByCultureProgramIdAndParentId(Long cultureProgramId, Long parentId) {
-        QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
-        LambdaQueryWrapper<ObeCultureProgramRequirement> lambda = queryWrapper.lambda();
-        lambda.eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId);
-        if (parentId != null) {
-            lambda.eq(ObeCultureProgramRequirement::getParentId, parentId);
-        } else {
-            lambda.isNull(ObeCultureProgramRequirement::getParentId);
-        }
-        lambda.orderByAsc(ObeCultureProgramRequirement::getSortNum);
-        return this.list(queryWrapper);
-    }
-
-    @Transactional
-    @Override
-    public boolean saveRequirementExpect(ObeCultureProgramRequirement obeCultureProgramRequirement) {
-        if (obeCultureProgramRequirement.getCultureProgramId() == null) {
-            throw ExceptionResultEnum.ERROR.exception("培养方案ID有误");
-        }
-        UpdateWrapper<ObeCultureProgram> obeCultureProgramUpdateWrapper = new UpdateWrapper<>();
-        obeCultureProgramUpdateWrapper.lambda().set(ObeCultureProgram::getExpectValue, obeCultureProgramRequirement.getExpectValue())
-                .eq(ObeCultureProgram::getId, obeCultureProgramRequirement.getCultureProgramId());
-        obeCultureProgramService.update(obeCultureProgramUpdateWrapper);
-
-        UpdateWrapper<ObeCultureProgramRequirement> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda().set(ObeCultureProgramRequirement::getExpectValue, obeCultureProgramRequirement.getExpectValue())
-                .eq(ObeCultureProgramRequirement::getCultureProgramId, obeCultureProgramRequirement.getCultureProgramId())
-                .isNull(ObeCultureProgramRequirement::getParentId);
-        return this.update(updateWrapper);
-    }
-
-    @Override
-    public void removeByCultureProgramId(Long id) {
-        this.remove(new QueryWrapper<ObeCultureProgramRequirement>().lambda().eq(ObeCultureProgramRequirement::getCultureProgramId, id));
-    }
-
-    @Override
-    public Map<Long, Long> copyByCultureProgramId(Long id, Long obeCultureProgramNewId) {
-        List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = this.listByCultureProgramId(id);
-        // 原id与新id的映射关系
-        Map<Long, Long> idMap = new HashMap<>();
-        for (ObeCultureProgramRequirement obeCultureProgramRequirement : obeCultureProgramRequirementList) {
-            Long newId = SystemConstant.getDbUuid();
-            idMap.put(obeCultureProgramRequirement.getId(), newId);
-            obeCultureProgramRequirement.setId(newId);
-            obeCultureProgramRequirement.setCultureProgramId(obeCultureProgramNewId);
-        }
-        for (ObeCultureProgramRequirement obeCultureProgramRequirement : obeCultureProgramRequirementList) {
-            obeCultureProgramRequirement.setParentId(idMap.get(obeCultureProgramRequirement.getParentId()));
-        }
-        if (CollectionUtils.isNotEmpty(obeCultureProgramRequirementList)) {
-            this.saveBatch(obeCultureProgramRequirementList);
-        }
-        return idMap;
-    }
-
-    @Override
-    public List<ObeCultureProgramRequirement> listByCultureProgramId(Long cultureProgramId) {
-        QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda().eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId)
-                .orderByAsc(ObeCultureProgramRequirement::getSortNum);
-        return this.list(queryWrapper);
-    }
-
-    @Override
-    public List<MatrixRequirementDto> listSubRequirement(Long cultureProgramId, Long courseId) {
-        List<CourseRequirementMatrixDto> tpMatrixList = obeCourseRequirementMatrixMapper.listMatrix(cultureProgramId, courseId);
-
-        List<CourseRequirementMatrixDto> filterCollect = tpMatrixList.stream().filter(tpMatrix -> tpMatrix.getScale() != null).collect(Collectors.toList());
-        tpMatrixList = CollectionUtils.isNotEmpty(filterCollect) ? filterCollect : tpMatrixList;
-
-        LinkedMultiValueMap<Long, CourseRequirementMatrixDto> requirementMap = new LinkedMultiValueMap<>();
-        for (CourseRequirementMatrixDto tpMatrix : tpMatrixList) {
-            requirementMap.add(tpMatrix.getObeRequirementId(), tpMatrix);
-        }
-        List<MatrixRequirementDto> matrixRequirementDtoList = new ArrayList<>();
-        requirementMap.entrySet().stream().forEach(requirementEntry -> {
-            ObeCultureProgramRequirement tpRequirement = this.getById(requirementEntry.getKey());
-            MatrixRequirementDto matrixRequirementDto = new MatrixRequirementDto();
-            matrixRequirementDto.setId(tpRequirement.getId());
-            matrixRequirementDto.setName(tpRequirement.getName());
-            matrixRequirementDto.setExpectValue(tpRequirement.getExpectValue());
-            List<CourseRequirementMatrixDto> requirementList = requirementEntry.getValue();
-            // 排序,解决字符串1和10排序问题
-            if (requirementList.size() > 1) {
-                requirementList.sort(Comparator.comparingInt(o -> o.getSubRequirementSortNum()));
-            }
-
-            List<MatrixSubRequirementDto> matrixSubRequirementDtoList = requirementList.stream().map(tpMatrix -> {
-                MatrixSubRequirementDto matrixSubRequirementDto = new MatrixSubRequirementDto();
-                matrixSubRequirementDto.setId(tpMatrix.getObeSubRequirementId());
-                matrixSubRequirementDto.setName(concatRequirementName(tpMatrix.getRequirementSortNum(), tpMatrix.getSubRequirementSortNum()));
-                matrixSubRequirementDto.setScale(tpMatrix.getScale());
-                matrixSubRequirementDto.setContent(tpMatrix.getRequirementContent());
-                return matrixSubRequirementDto;
-            }).collect(Collectors.toList());
-            matrixRequirementDto.setSubRequirements(matrixSubRequirementDtoList);
-            matrixRequirementDtoList.add(matrixRequirementDto);
-        });
-
-        return matrixRequirementDtoList;
-    }
-
-    private String concatRequirementName(int requirementNum, int subRequirementNum) {
-        return NAME_PREFIX + requirementNum + "-" + subRequirementNum;
-    }
-}
+package com.qmth.distributed.print.business.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qmth.distributed.print.business.bean.dto.obe.CourseRequirementMatrixDto;
+import com.qmth.distributed.print.business.bean.dto.obe.MatrixRequirementDto;
+import com.qmth.distributed.print.business.bean.dto.obe.MatrixSubRequirementDto;
+import com.qmth.distributed.print.business.entity.ObeCourseRequirementMatrix;
+import com.qmth.distributed.print.business.entity.ObeCultureProgram;
+import com.qmth.distributed.print.business.entity.ObeCultureProgramRequirement;
+import com.qmth.distributed.print.business.enums.CultureProgramRequirementEnum;
+import com.qmth.distributed.print.business.mapper.ObeCourseRequirementMatrixMapper;
+import com.qmth.distributed.print.business.mapper.ObeCultureProgramRequirementMapper;
+import com.qmth.distributed.print.business.service.ObeCourseRequirementMatrixService;
+import com.qmth.distributed.print.business.service.ObeCultureProgramRequirementService;
+import com.qmth.distributed.print.business.service.ObeCultureProgramService;
+import com.qmth.teachcloud.common.contant.SystemConstant;
+import com.qmth.teachcloud.common.entity.SysUser;
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
+import com.qmth.teachcloud.common.util.ServletUtil;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.LinkedMultiValueMap;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 培养方案毕业要求 服务实现类
+ * </p>
+ *
+ * @author xf
+ * @since 2024-06-05
+ */
+@Service
+public class ObeCultureProgramRequirementServiceImpl extends ServiceImpl<ObeCultureProgramRequirementMapper, ObeCultureProgramRequirement> implements ObeCultureProgramRequirementService {
+
+    private static final String NAME_PREFIX = "指标点";
+
+    @Resource
+    private ObeCultureProgramService obeCultureProgramService;
+    @Resource
+    private ObeCourseRequirementMatrixService obeCourseRequirementMatrixService;
+    @Resource
+    private ObeCourseRequirementMatrixMapper obeCourseRequirementMatrixMapper;
+
+    @Override
+    public List<ObeCultureProgramRequirement> listRequirement(Long cultureProgramId) {
+        List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = this.listByCultureProgramId(cultureProgramId);
+
+        List<ObeCultureProgramRequirement> obeCultureProgramRequirements = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(obeCultureProgramRequirementList)) {
+            Map<Long, ObeCultureProgramRequirement> obeCultureProgramRequirementMap = obeCultureProgramRequirementList.stream().filter(obeCultureProgramRequirement -> obeCultureProgramRequirement.getParentId() == null).collect(Collectors.toMap(ObeCultureProgramRequirement::getId, obeCultureProgramRequirement -> obeCultureProgramRequirement));
+            for (ObeCultureProgramRequirement obeCultureProgramRequirement : obeCultureProgramRequirementList) {
+                if (obeCultureProgramRequirement.getParentId() != null) {
+                    obeCultureProgramRequirementMap.get(obeCultureProgramRequirement.getParentId()).getSubRequirementList().add(obeCultureProgramRequirement);
+                }
+            }
+            obeCultureProgramRequirements = obeCultureProgramRequirementMap.values().stream().collect(Collectors.toList());
+            obeCultureProgramRequirements.sort(Comparator.comparingInt(ObeCultureProgramRequirement::getSortNum));
+        }
+        return obeCultureProgramRequirements;
+    }
+
+    @Override
+    public boolean saveRequirement(ObeCultureProgramRequirement obeCultureProgramRequirement) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        // 修改
+        if (obeCultureProgramRequirement.getId() != null) {
+            obeCultureProgramRequirement.updateInfo(sysUser.getId());
+            return this.updateById(obeCultureProgramRequirement);
+        }
+        // 新增
+//        else {
+//            ObeCultureProgramRequirement obeCultureProgramRequirementParent = this.getById(obeCultureProgramRequirement.getParentId());
+//            obeCultureProgramRequirement.setSortNum(this.getMaxSortNum(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirement.getParentId()) + 1);
+//            obeCultureProgramRequirement.setName(concatRequirementName(obeCultureProgramRequirementParent.getSortNum(), obeCultureProgramRequirement.getSortNum()));
+//            obeCultureProgramRequirement.insertInfo(sysUser.getId());
+//            if (this.save(obeCultureProgramRequirement)) {
+//                obeCourseRequirementMatrixService.updateMatrix(obeCultureProgramRequirement.getCultureProgramId(), Arrays.asList(obeCultureProgramRequirement), null);
+//            }
+//            return true;
+//        }
+        return true;
+    }
+
+    @Override
+    public boolean addRequirementNode(ObeCultureProgramRequirement obeCultureProgramRequirement) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+
+        ObeCultureProgramRequirement parentRequirement = this.getById(obeCultureProgramRequirement.getId());
+        ObeCultureProgramRequirement cultureProgramRequirement = new ObeCultureProgramRequirement();
+        cultureProgramRequirement.setCultureProgramId(obeCultureProgramRequirement.getCultureProgramId());
+        cultureProgramRequirement.setSortNum(this.getMaxSortNum(cultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirement.getId()) + 1);
+        cultureProgramRequirement.setName(concatRequirementName(parentRequirement.getSortNum(), cultureProgramRequirement.getSortNum()));
+        cultureProgramRequirement.setParentId(obeCultureProgramRequirement.getId());
+        cultureProgramRequirement.insertInfo(sysUser.getId());
+        if (this.save(cultureProgramRequirement)) {
+            parentRequirement.getSubRequirementList().add(cultureProgramRequirement);
+            obeCourseRequirementMatrixService.updateMatrix(cultureProgramRequirement.getCultureProgramId(), Arrays.asList(parentRequirement), null);
+        }
+        return true;
+    }
+
+    @Override
+    public int getMaxSortNum(Long cultureProgramId, Long parentId) {
+        QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<ObeCultureProgramRequirement> lambda = queryWrapper.lambda();
+        lambda.eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId);
+        if (parentId != null) {
+            lambda.eq(ObeCultureProgramRequirement::getParentId, parentId);
+        }
+        lambda.orderByDesc(ObeCultureProgramRequirement::getSortNum);
+        lambda.last("limit 1");
+        ObeCultureProgramRequirement requirement = this.getOne(queryWrapper);
+        if (requirement == null) {
+            return 0;
+        } else {
+            return requirement.getSortNum();
+        }
+    }
+
+    @Transactional
+    @Override
+    public boolean removeRequirement(Long id) {
+        ObeCultureProgramRequirement obeCultureProgramRequirement = this.getById(id);
+        ObeCultureProgramRequirement obeCultureProgramRequirementParent = this.getById(obeCultureProgramRequirement.getParentId());
+        obeCourseRequirementMatrixService.removeMatrixByCondition(new ObeCourseRequirementMatrix(null, null, null, id));
+        if (this.removeById(id)) {
+            List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = this.listByCultureProgramIdAndParentId(obeCultureProgramRequirement.getCultureProgramId(), obeCultureProgramRequirement.getParentId());
+            if (CollectionUtils.isEmpty(obeCultureProgramRequirementList)) {
+                throw ExceptionResultEnum.ERROR.exception("当前数据为最后一个节点,无法删除");
+            }
+            for (int i = 0; i < obeCultureProgramRequirementList.size(); i++) {
+                obeCultureProgramRequirementList.get(i).setSortNum(i + 1);
+                obeCultureProgramRequirementList.get(i).setName(concatRequirementName(obeCultureProgramRequirementParent.getSortNum(), (i + 1)));
+            }
+            this.updateBatchById(obeCultureProgramRequirementList);
+        }
+        return true;
+    }
+
+    @Transactional
+    @Override
+    public void initRequirement(Long cultureProgramId) {
+        SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
+        List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = new ArrayList<>();
+        for (CultureProgramRequirementEnum value : CultureProgramRequirementEnum.values()) {
+            // 一级节点
+            ObeCultureProgramRequirement obeCultureProgramRequirement = new ObeCultureProgramRequirement(cultureProgramId, value.name(), value.getName(), value.getContent(), null, value.ordinal() + 1);
+            obeCultureProgramRequirement.insertInfo(sysUser.getId());
+            obeCultureProgramRequirementList.add(obeCultureProgramRequirement);
+            // 每个一级节点默认创建一个二级节点
+            ObeCultureProgramRequirement obeSubCultureProgramRequirement = new ObeCultureProgramRequirement(cultureProgramId, null, concatRequirementName(obeCultureProgramRequirement.getSortNum(), 1), null, obeCultureProgramRequirement.getId(), 1);
+            obeSubCultureProgramRequirement.insertInfo(sysUser.getId());
+            obeCultureProgramRequirementList.add(obeSubCultureProgramRequirement);
+        }
+
+        this.saveBatch(obeCultureProgramRequirementList);
+    }
+
+    @Override
+    public List<ObeCultureProgramRequirement> listByCultureProgramIdAndParentId(Long cultureProgramId, Long parentId) {
+        QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
+        LambdaQueryWrapper<ObeCultureProgramRequirement> lambda = queryWrapper.lambda();
+        lambda.eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId);
+        if (parentId != null) {
+            lambda.eq(ObeCultureProgramRequirement::getParentId, parentId);
+        } else {
+            lambda.isNull(ObeCultureProgramRequirement::getParentId);
+        }
+        lambda.orderByAsc(ObeCultureProgramRequirement::getSortNum);
+        return this.list(queryWrapper);
+    }
+
+    @Transactional
+    @Override
+    public boolean saveRequirementExpect(ObeCultureProgramRequirement obeCultureProgramRequirement) {
+        if (obeCultureProgramRequirement.getCultureProgramId() == null) {
+            throw ExceptionResultEnum.ERROR.exception("培养方案ID有误");
+        }
+        UpdateWrapper<ObeCultureProgram> obeCultureProgramUpdateWrapper = new UpdateWrapper<>();
+        obeCultureProgramUpdateWrapper.lambda().set(ObeCultureProgram::getExpectValue, obeCultureProgramRequirement.getExpectValue())
+                .eq(ObeCultureProgram::getId, obeCultureProgramRequirement.getCultureProgramId());
+        obeCultureProgramService.update(obeCultureProgramUpdateWrapper);
+
+        UpdateWrapper<ObeCultureProgramRequirement> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.lambda().set(ObeCultureProgramRequirement::getExpectValue, obeCultureProgramRequirement.getExpectValue())
+                .eq(ObeCultureProgramRequirement::getCultureProgramId, obeCultureProgramRequirement.getCultureProgramId())
+                .isNull(ObeCultureProgramRequirement::getParentId);
+        return this.update(updateWrapper);
+    }
+
+    @Override
+    public void removeByCultureProgramId(Long id) {
+        this.remove(new QueryWrapper<ObeCultureProgramRequirement>().lambda().eq(ObeCultureProgramRequirement::getCultureProgramId, id));
+    }
+
+    @Override
+    public Map<Long, Long> copyByCultureProgramId(Long id, Long obeCultureProgramNewId) {
+        List<ObeCultureProgramRequirement> obeCultureProgramRequirementList = this.listByCultureProgramId(id);
+        // 原id与新id的映射关系
+        Map<Long, Long> idMap = new HashMap<>();
+        for (ObeCultureProgramRequirement obeCultureProgramRequirement : obeCultureProgramRequirementList) {
+            Long newId = SystemConstant.getDbUuid();
+            idMap.put(obeCultureProgramRequirement.getId(), newId);
+            obeCultureProgramRequirement.setId(newId);
+            obeCultureProgramRequirement.setCultureProgramId(obeCultureProgramNewId);
+        }
+        for (ObeCultureProgramRequirement obeCultureProgramRequirement : obeCultureProgramRequirementList) {
+            obeCultureProgramRequirement.setParentId(idMap.get(obeCultureProgramRequirement.getParentId()));
+        }
+        if (CollectionUtils.isNotEmpty(obeCultureProgramRequirementList)) {
+            this.saveBatch(obeCultureProgramRequirementList);
+        }
+        return idMap;
+    }
+
+    @Override
+    public List<ObeCultureProgramRequirement> listByCultureProgramId(Long cultureProgramId) {
+        QueryWrapper<ObeCultureProgramRequirement> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(ObeCultureProgramRequirement::getCultureProgramId, cultureProgramId)
+                .orderByAsc(ObeCultureProgramRequirement::getSortNum);
+        return this.list(queryWrapper);
+    }
+
+    @Override
+    public List<MatrixRequirementDto> listSubRequirement(Long cultureProgramId, Long courseId) {
+        List<CourseRequirementMatrixDto> tpMatrixList = obeCourseRequirementMatrixMapper.listMatrix(cultureProgramId, courseId);
+
+        List<CourseRequirementMatrixDto> filterCollect = tpMatrixList.stream().filter(tpMatrix -> tpMatrix.getScale() != null).collect(Collectors.toList());
+        tpMatrixList = CollectionUtils.isNotEmpty(filterCollect) ? filterCollect : tpMatrixList;
+
+        LinkedMultiValueMap<Long, CourseRequirementMatrixDto> requirementMap = new LinkedMultiValueMap<>();
+        for (CourseRequirementMatrixDto tpMatrix : tpMatrixList) {
+            requirementMap.add(tpMatrix.getObeRequirementId(), tpMatrix);
+        }
+        List<MatrixRequirementDto> matrixRequirementDtoList = new ArrayList<>();
+        requirementMap.entrySet().stream().forEach(requirementEntry -> {
+            ObeCultureProgramRequirement tpRequirement = this.getById(requirementEntry.getKey());
+            MatrixRequirementDto matrixRequirementDto = new MatrixRequirementDto();
+            matrixRequirementDto.setId(tpRequirement.getId());
+            matrixRequirementDto.setName(tpRequirement.getName());
+            matrixRequirementDto.setExpectValue(tpRequirement.getExpectValue());
+            List<CourseRequirementMatrixDto> requirementList = requirementEntry.getValue();
+            // 排序,解决字符串1和10排序问题
+            if (requirementList.size() > 1) {
+                requirementList.sort(Comparator.comparingInt(o -> o.getSubRequirementSortNum()));
+            }
+
+            List<MatrixSubRequirementDto> matrixSubRequirementDtoList = requirementList.stream().map(tpMatrix -> {
+                MatrixSubRequirementDto matrixSubRequirementDto = new MatrixSubRequirementDto();
+                matrixSubRequirementDto.setId(tpMatrix.getObeSubRequirementId());
+                matrixSubRequirementDto.setName(concatRequirementName(tpMatrix.getRequirementSortNum(), tpMatrix.getSubRequirementSortNum()));
+                matrixSubRequirementDto.setScale(new BigDecimal(tpMatrix.getScale()));
+                matrixSubRequirementDto.setContent(tpMatrix.getRequirementContent());
+                return matrixSubRequirementDto;
+            }).collect(Collectors.toList());
+            matrixRequirementDto.setSubRequirements(matrixSubRequirementDtoList);
+            matrixRequirementDtoList.add(matrixRequirementDto);
+        });
+
+        return matrixRequirementDtoList;
+    }
+
+    private String concatRequirementName(int requirementNum, int subRequirementNum) {
+        return NAME_PREFIX + requirementNum + "-" + subRequirementNum;
+    }
+}

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

@@ -280,7 +280,7 @@ public class TCFinalScoreServiceImpl extends ServiceImpl<TCFinalScoreMapper, TCF
                             String name = scoreItem.getMainNumber() + "-" + scoreItem.getSubNumber();
                             String name = scoreItem.getMainNumber() + "-" + scoreItem.getSubNumber();
                             tcFinalScoreDtoList.add(new TCFinalScoreDto(scoreItem.getScore().toString(), name));
                             tcFinalScoreDtoList.add(new TCFinalScoreDto(scoreItem.getScore().toString(), name));
                             if (i == 0) {
                             if (i == 0) {
-                                paperStructDimensionResultList.add(new PaperStructDimensionResult(scoreItem.getMainNumber(), scoreItem.getSubNumber(), paperNumber, scoreItem.getTotalScore()));
+                                paperStructDimensionResultList.add(new PaperStructDimensionResult(scoreItem.getMainNumber(), scoreItem.getSubNumber(), paperNumber, new BigDecimal(scoreItem.getTotalScore())));
                             }
                             }
                         }
                         }
                         tcFinalScoreList.add(new TCFinalScore(markStudentScoreVo, JacksonUtil.parseJson(tcFinalScoreDtoList), SourceEnum.SYNC, sysUser.getId(), cultureProgramId, courseId));
                         tcFinalScoreList.add(new TCFinalScore(markStudentScoreVo, JacksonUtil.parseJson(tcFinalScoreDtoList), SourceEnum.SYNC, sysUser.getId(), cultureProgramId, courseId));

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

@@ -126,7 +126,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         List<ScoreRangeVo> scoreRangeVoList = finalScoreDto.getScoreRange();
         List<ScoreRangeVo> scoreRangeVoList = finalScoreDto.getScoreRange();
         if (!CollectionUtils.isEmpty(scoreRangeVoList)) {
         if (!CollectionUtils.isEmpty(scoreRangeVoList)) {
             Integer failCount = scoreRangeVoList.get(0).getStudentCount();//第一行数据默认为不及格
             Integer failCount = scoreRangeVoList.get(0).getStudentCount();//第一行数据默认为不及格
-            Double failRate = scoreRangeVoList.get(0).getRate();
+            BigDecimal failRate = new BigDecimal(scoreRangeVoList.get(0).getRate());
 
 
             scoreRangeVoList.remove(0);
             scoreRangeVoList.remove(0);
             List<ReportScoreRangeViewDto> scoreRangeViewDtoList = GsonUtil.fromJson(JacksonUtil.parseJson(scoreRangeVoList), new TypeToken<List<ReportScoreRangeViewDto>>() {
             List<ReportScoreRangeViewDto> scoreRangeViewDtoList = GsonUtil.fromJson(JacksonUtil.parseJson(scoreRangeVoList), new TypeToken<List<ReportScoreRangeViewDto>>() {
@@ -154,7 +154,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         }
         }
 
 
 //        Map<String, Map<Long, Map<Long, DimensionDto>>> finalScoreExamStudentDimensionMap = new LinkedHashMap<>();//汇总考生课程目标-知识点卷面分(知识点得分用)
 //        Map<String, Map<Long, Map<Long, DimensionDto>>> finalScoreExamStudentDimensionMap = new LinkedHashMap<>();//汇总考生课程目标-知识点卷面分(知识点得分用)
-        Map<String, Map<Long, Double>> finalScoreExamStudentTargetMap = new LinkedHashMap<>();//汇总考生课程目标-课程目标卷面分
+        Map<String, Map<Long, BigDecimal>> finalScoreExamStudentTargetMap = new LinkedHashMap<>();//汇总考生课程目标-课程目标卷面分
         Map<Long, Map<Long, DimensionDto>> targetDimensionMap = new LinkedHashMap<>();//课程目标-知识点-卷面分(word报表用)
         Map<Long, Map<Long, DimensionDto>> targetDimensionMap = new LinkedHashMap<>();//课程目标-知识点-卷面分(word报表用)
 
 
         List<ReportExamStudentDto> examStudentList = null;//考生集合
         List<ReportExamStudentDto> examStudentList = null;//考生集合
@@ -193,13 +193,13 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                         if (courseWeightDetailDto.getEnable() && Objects.equals(courseWeightDetailDto.getEvaluationName(), SystemConstant.FINAL_SCORE_STR)) {
                         if (courseWeightDetailDto.getEnable() && Objects.equals(courseWeightDetailDto.getEvaluationName(), SystemConstant.FINAL_SCORE_STR)) {
                             FinalScoreWordDto finalScoreWordDto = new FinalScoreWordDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto);
                             FinalScoreWordDto finalScoreWordDto = new FinalScoreWordDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto);
                             courseTargetWordDto.setFinalScoreDto(finalScoreWordDto);
                             courseTargetWordDto.setFinalScoreDto(finalScoreWordDto);
-                            ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto, 0.0d);
+                            ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto, new BigDecimal(0));
                             reportEvaluationDtoList.add(reportEvaluationDto);
                             reportEvaluationDtoList.add(reportEvaluationDto);
                         }//非期末考试
                         }//非期末考试
                         else if (courseWeightDetailDto.getEnable() && !Objects.equals(courseWeightDetailDto.getEvaluationName(), SystemConstant.FINAL_SCORE_STR)) {
                         else if (courseWeightDetailDto.getEnable() && !Objects.equals(courseWeightDetailDto.getEvaluationName(), SystemConstant.FINAL_SCORE_STR)) {
 //                            BigDecimal usualScoreRealityWeight = usualScoreWordDto.getUsualScoreTargetSumWeight().divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).multiply(courseWeightDetailDto.getWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
 //                            BigDecimal usualScoreRealityWeight = usualScoreWordDto.getUsualScoreTargetSumWeight().divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).multiply(courseWeightDetailDto.getWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
 //                            Double originalTargetScore = courseWeightDto.getTotalWeight().multiply(courseWeightDetailDto.getWeight()).divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
 //                            Double originalTargetScore = courseWeightDto.getTotalWeight().multiply(courseWeightDetailDto.getWeight()).divide(SystemConstant.PERCENT, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
-                            ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto, 0.0d);
+                            ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(courseWeightDto.getCourseTargetId(), courseWeightDetailDto, new BigDecimal(0));
                             usualScoreTargetSumScore = usualScoreTargetSumScore.add(reportEvaluationDto.getTargetScore());
                             usualScoreTargetSumScore = usualScoreTargetSumScore.add(reportEvaluationDto.getTargetScore());
                             usualScoreDetailList.add(reportEvaluationDto);
                             usualScoreDetailList.add(reportEvaluationDto);
                             reportEvaluationDtoList.add(reportEvaluationDto);
                             reportEvaluationDtoList.add(reportEvaluationDto);
@@ -225,7 +225,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                 List<TCFinalScoreDto> tcFinalScoreDtoList = GsonUtil.fromJson(finalScoreResult.getFinalScoreDetail(), new TypeToken<List<TCFinalScoreDto>>() {
                 List<TCFinalScoreDto> tcFinalScoreDtoList = GsonUtil.fromJson(finalScoreResult.getFinalScoreDetail(), new TypeToken<List<TCFinalScoreDto>>() {
                 }.getType());
                 }.getType());
                 for (TCFinalScoreDto t : tcFinalScoreDtoList) {
                 for (TCFinalScoreDto t : tcFinalScoreDtoList) {
-                    Double score = Objects.nonNull(t.getScore()) ? Double.parseDouble(t.getScore().toString()) : 0d;
+                    BigDecimal score = Objects.nonNull(t.getScore()) ? new BigDecimal(t.getScore()) : new BigDecimal(0);
                     PaperStructDimensionResult paperStructDimensionResult = paperStructResultMap.get(t.getName().toString());
                     PaperStructDimensionResult paperStructDimensionResult = paperStructResultMap.get(t.getName().toString());
                     if (Objects.nonNull(paperStructDimensionResult)) {
                     if (Objects.nonNull(paperStructDimensionResult)) {
                         List<CourseTargetWebDto> courseTargetDtoList = paperStructDimensionResult.getTargetList();
                         List<CourseTargetWebDto> courseTargetDtoList = paperStructDimensionResult.getTargetList();
@@ -238,7 +238,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
 //                                this.calculateFinalScoreByDimensionExamStudent(finalScoreExamStudentDimensionMap,
 //                                this.calculateFinalScoreByDimensionExamStudent(finalScoreExamStudentDimensionMap,
 //                                        finalScoreResult, courseTargetDto, dimensionDto, score);
 //                                        finalScoreResult, courseTargetDto, dimensionDto, score);
                                 if (i == 0) {//计算各知识点原始卷面分总和
                                 if (i == 0) {//计算各知识点原始卷面分总和
-                                    Double paperScore = paperStructDimensionResult.getScore();
+                                    BigDecimal paperScore = paperStructDimensionResult.getScore();
                                     //目标-考生知识点去重
                                     //目标-考生知识点去重
                                     if (!targetDimensionMap.containsKey(courseTargetDto.getTargetId())) {
                                     if (!targetDimensionMap.containsKey(courseTargetDto.getTargetId())) {
                                         Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
                                         Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
@@ -250,7 +250,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                                             dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, paperScore));
                                             dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, paperScore));
                                         } else {
                                         } else {
                                             DimensionDto dimensionDtoTemp = dimensionMap.get(dimensionDto.getDimensionId());
                                             DimensionDto dimensionDtoTemp = dimensionMap.get(dimensionDto.getDimensionId());
-                                            dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, dimensionDtoTemp.getDimensionScore().doubleValue() + paperScore.doubleValue()));
+                                            dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, dimensionDtoTemp.getDimensionScore().add(paperScore)));
                                         }
                                         }
                                         targetDimensionMap.put(courseTargetDto.getTargetId(), dimensionMap);
                                         targetDimensionMap.put(courseTargetDto.getTargetId(), dimensionMap);
                                     }
                                     }
@@ -265,17 +265,17 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                 targetDimensionMap.forEach((k, v) -> {
                 targetDimensionMap.forEach((k, v) -> {
                     List<DimensionDto> dimensionDtoList = new ArrayList<>(v.values());
                     List<DimensionDto> dimensionDtoList = new ArrayList<>(v.values());
                     Collections.sort(dimensionDtoList);
                     Collections.sort(dimensionDtoList);
-                    Double dimensionScoreSum = dimensionDtoList.stream().mapToDouble(DimensionDto::getDimensionScore).sum();
+                    Double dimensionScoreSum = dimensionDtoList.stream().mapToDouble(s -> s.getDimensionScore().doubleValue()).sum();
                     List<String> dimensionDtoNameList = dimensionDtoList.stream().map(s -> s.getDimensionName()).collect(Collectors.toList());
                     List<String> dimensionDtoNameList = dimensionDtoList.stream().map(s -> s.getDimensionName()).collect(Collectors.toList());
                     if (finalTargetWordMap.containsKey(k)) {
                     if (finalTargetWordMap.containsKey(k)) {
                         if (Objects.nonNull(finalTargetWordMap.get(k).getFinalScoreDto())) {
                         if (Objects.nonNull(finalTargetWordMap.get(k).getFinalScoreDto())) {
                             finalTargetWordMap.get(k).getFinalScoreDto().setDimensionList(dimensionDtoList);
                             finalTargetWordMap.get(k).getFinalScoreDto().setDimensionList(dimensionDtoList);
                         }
                         }
-                        finalTargetWordMap.get(k).setDimensionScoreSum(dimensionScoreSum);
+                        finalTargetWordMap.get(k).setDimensionScoreSum(new BigDecimal(dimensionScoreSum));
                         finalTargetWordMap.get(k).setDimensionPoint(String.join(",", dimensionDtoNameList));
                         finalTargetWordMap.get(k).setDimensionPoint(String.join(",", dimensionDtoNameList));
                     }
                     }
                     if (finalTargetWebMap.containsKey(k)) {
                     if (finalTargetWebMap.containsKey(k)) {
-                        finalTargetWebMap.get(k).setDimensionScoreSum(dimensionScoreSum);
+                        finalTargetWebMap.get(k).setDimensionScoreSum(new BigDecimal(dimensionScoreSum));
                         finalTargetWebMap.get(k).setDimensionPoint(String.join(",", dimensionDtoNameList));
                         finalTargetWebMap.get(k).setDimensionPoint(String.join(",", dimensionDtoNameList));
                     }
                     }
 //                    Map<Long, Map<Long, DimensionDto>> mapExamStudent1 = finalScoreExamStudentDimensionMap.get(finalScoreResult.getStudentCode());
 //                    Map<Long, Map<Long, DimensionDto>> mapExamStudent1 = finalScoreExamStudentDimensionMap.get(finalScoreResult.getStudentCode());
@@ -285,8 +285,8 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
 //                    Map<Long, Double> mapDimension = finalScoreResult.getFinalScoreDimension();
 //                    Map<Long, Double> mapDimension = finalScoreResult.getFinalScoreDimension();
 //                    mapDimension.put(k, score);
 //                    mapDimension.put(k, score);
 
 
-                    Map<Long, Double> doubleMap = finalScoreExamStudentTargetMap.get(finalScoreResult.getStudentCode());
-                    Map<Long, Double> mapTarget = finalScoreResult.getFinalScoreTarget();
+                    Map<Long, BigDecimal> doubleMap = finalScoreExamStudentTargetMap.get(finalScoreResult.getStudentCode());
+                    Map<Long, BigDecimal> mapTarget = finalScoreResult.getFinalScoreTarget();
                     mapTarget.put(k, doubleMap.get(k));
                     mapTarget.put(k, doubleMap.get(k));
                 });
                 });
 
 
@@ -357,7 +357,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                     }
                     }
                 }
                 }
                 for (ReportExamStudentTargetDto r : reportExamStudentTargetAvgDtoList) {
                 for (ReportExamStudentTargetDto r : reportExamStudentTargetAvgDtoList) {
-                    Double targetAvgSumScore = 0.0d;//平均分总和
+                    BigDecimal targetAvgSumScore = new BigDecimal(0);//平均分总和
                     BigDecimal targetSumScore = new BigDecimal(0);//目标分总和
                     BigDecimal targetSumScore = new BigDecimal(0);//目标分总和
 //                    BigDecimal targetEvaluationValue = new BigDecimal(0);
 //                    BigDecimal targetEvaluationValue = new BigDecimal(0);
                     if (targetWebMap.containsKey(r.getTargetId())) {
                     if (targetWebMap.containsKey(r.getTargetId())) {
@@ -375,7 +375,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                         if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
                         if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
                             reportEvaluationDto = reportEvaluationDtoMap.get(reportExamStudentFinalScoreDto.getEvaluationId());
                             reportEvaluationDto = reportEvaluationDtoMap.get(reportExamStudentFinalScoreDto.getEvaluationId());
                             reportEvaluationDto.setTargetAvgScore(reportExamStudentFinalScoreDto.getMatrixAvgScore());
                             reportEvaluationDto.setTargetAvgScore(reportExamStudentFinalScoreDto.getMatrixAvgScore());
-                            targetAvgSumScore = targetAvgSumScore + reportEvaluationDto.getTargetAvgScore();
+                            targetAvgSumScore = targetAvgSumScore.add(reportEvaluationDto.getTargetAvgScore());
                             targetSumScore = targetSumScore.add(reportEvaluationDto.getTargetScore());
                             targetSumScore = targetSumScore.add(reportEvaluationDto.getTargetScore());
 //                            BigDecimal bigDecimal = new BigDecimal(reportExamStudentFinalScoreDto.getTargetScoreSum()).setScale(2, BigDecimal.ROUND_HALF_UP);
 //                            BigDecimal bigDecimal = new BigDecimal(reportExamStudentFinalScoreDto.getTargetScoreSum()).setScale(2, BigDecimal.ROUND_HALF_UP);
 //                            BigDecimal targetEvaluationValueTemp = bigDecimal.divide(reportEvaluationDto.getTargetScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetWeight().divide(courseTargetWebDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
 //                            BigDecimal targetEvaluationValueTemp = bigDecimal.divide(reportEvaluationDto.getTargetScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetWeight().divide(courseTargetWebDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
@@ -388,7 +388,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                             for (ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto : reportExamStudentUsualScoreObjDtoList) {
                             for (ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto : reportExamStudentUsualScoreObjDtoList) {
                                 reportEvaluationDto = reportEvaluationDtoMap.get(reportExamStudentUsualScoreObjDto.getEvaluationId());
                                 reportEvaluationDto = reportEvaluationDtoMap.get(reportExamStudentUsualScoreObjDto.getEvaluationId());
                                 reportEvaluationDto.setTargetAvgScore(reportExamStudentUsualScoreObjDto.getMatrixAvgScore());
                                 reportEvaluationDto.setTargetAvgScore(reportExamStudentUsualScoreObjDto.getMatrixAvgScore());
-                                targetAvgSumScore = targetAvgSumScore + reportEvaluationDto.getTargetAvgScore();
+                                targetAvgSumScore = targetAvgSumScore.add(reportEvaluationDto.getTargetAvgScore());
                                 targetSumScore = targetSumScore.add(reportEvaluationDto.getTargetScore());
                                 targetSumScore = targetSumScore.add(reportEvaluationDto.getTargetScore());
 //                            BigDecimal bigDecimal = new BigDecimal(reportExamStudentUsualScoreObjDto.getScore()).setScale(2, BigDecimal.ROUND_HALF_UP);
 //                            BigDecimal bigDecimal = new BigDecimal(reportExamStudentUsualScoreObjDto.getScore()).setScale(2, BigDecimal.ROUND_HALF_UP);
 //                            BigDecimal targetEvaluationValueTemp = bigDecimal.divide(reportEvaluationDto.getTargetScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetWeight().divide(courseTargetWebDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
 //                            BigDecimal targetEvaluationValueTemp = bigDecimal.divide(reportEvaluationDto.getTargetScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetWeight().divide(courseTargetWebDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
@@ -400,7 +400,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                         //目标下各平均分总和/科目目标分
                         //目标下各平均分总和/科目目标分
                         BigDecimal targetEvaluationValue = new BigDecimal(0);
                         BigDecimal targetEvaluationValue = new BigDecimal(0);
                         if (targetEvaluationValueMap.containsKey(r.getTargetId())) {
                         if (targetEvaluationValueMap.containsKey(r.getTargetId())) {
-                            targetEvaluationValue = targetEvaluationValueMap.get(r.getTargetId()).divide(new BigDecimal(targetEvaluationValueSizeMap.get(r.getTargetId())), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
+                            targetEvaluationValue = targetEvaluationValueMap.get(r.getTargetId()).divide(new BigDecimal(targetEvaluationValueSizeMap.get(r.getTargetId())), 4, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
                         }
                         }
 //                        BigDecimal targetEvaluationValue = new BigDecimal(targetAvgSumScore).divide(targetSumScore, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
 //                        BigDecimal targetEvaluationValue = new BigDecimal(targetAvgSumScore).divide(targetSumScore, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
                         courseTargetWebDto.setEvaluationValue(targetEvaluationValue);
                         courseTargetWebDto.setEvaluationValue(targetEvaluationValue);
@@ -449,9 +449,9 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         Objects.requireNonNull(basicProfessional, "未找到专业信息");
         Objects.requireNonNull(basicProfessional, "未找到专业信息");
         Double expectValue = obeCourseWeightResult.getSubmitForm().get(0).getExpectValue();
         Double expectValue = obeCourseWeightResult.getSubmitForm().get(0).getExpectValue();
         if (Objects.isNull(trBasicInfo)) {
         if (Objects.isNull(trBasicInfo)) {
-            trBasicInfo = new TRBasicInfo(cultureProgramId, courseId, markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), basicSemester.getName(), teachingObject, teacher, null, userId, basicProfessional.getName(), Objects.nonNull(trBasicInfo) ? trBasicInfo.getFinishPoints() : null, Objects.nonNull(trBasicInfo) ? trBasicInfo.getRequirementPoints() : null, Objects.nonNull(trBasicInfo) ? trBasicInfo.getCourseSuggest() : null, expectValue, Objects.nonNull(trBasicInfo) ? trBasicInfo.getCourseEnName() : null);
+            trBasicInfo = new TRBasicInfo(cultureProgramId, courseId, markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), basicSemester.getName(), teachingObject, teacher, null, userId, basicProfessional.getName(), Objects.nonNull(trBasicInfo) ? trBasicInfo.getFinishPoints() : null, Objects.nonNull(trBasicInfo) ? trBasicInfo.getRequirementPoints() : null, Objects.nonNull(trBasicInfo) ? trBasicInfo.getCourseSuggest() : null, new BigDecimal(expectValue), Objects.nonNull(trBasicInfo) ? trBasicInfo.getCourseEnName() : null);
         } else {
         } else {
-            trBasicInfo.setBasicInfo(markPaper.getExamId(), markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), basicSemester.getName(), teachingObject, teacher, null, cultureProgramId, courseId, expectValue, basicProfessional.getName(), trBasicInfo.getCourseEnName(), trBasicInfo.getCollege(), trBasicInfo.getFinishPoints(), trBasicInfo.getRequirementPoints(), trBasicInfo.getCourseSuggest());
+            trBasicInfo.setBasicInfo(markPaper.getExamId(), markPaper.getCourseCode(), markPaper.getCourseName(), markPaper.getPaperNumber(), basicSemester.getName(), teachingObject, teacher, null, cultureProgramId, courseId, new BigDecimal(expectValue), basicProfessional.getName(), trBasicInfo.getCourseEnName(), trBasicInfo.getCollege(), trBasicInfo.getFinishPoints(), trBasicInfo.getRequirementPoints(), trBasicInfo.getCourseSuggest());
         }
         }
         //课程基本情况
         //课程基本情况
         ReportCourseBasicInfoDto reportCourseBasicInfoDto = new ReportCourseBasicInfoDto(trBasicInfo);
         ReportCourseBasicInfoDto reportCourseBasicInfoDto = new ReportCourseBasicInfoDto(trBasicInfo);
@@ -841,7 +841,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                 examStudent_cells_2.add(Cells.of("综合成绩").center().create());
                 examStudent_cells_2.add(Cells.of("综合成绩").center().create());
             }
             }
 
 
-            List<Double> scoreList = new ArrayList<>();
+            List<BigDecimal> scoreList = new ArrayList<>();
             for (int i = 0; i < trExamStudentList.size(); i++) {
             for (int i = 0; i < trExamStudentList.size(); i++) {
                 TRExamStudent trExamStudent = trExamStudentList.get(i);
                 TRExamStudent trExamStudent = trExamStudentList.get(i);
                 RowRenderData examStudent_row = new RowRenderData();
                 RowRenderData examStudent_row = new RowRenderData();
@@ -889,7 +889,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
 //                                            break;
 //                                            break;
                                         case "平均分":
                                         case "平均分":
                                             examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentUsualScoreObjDto.getMatrixAvgScore())).create());
                                             examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentUsualScoreObjDto.getMatrixAvgScore())).create());
-                                            targetAvgScore = targetAvgScore.add(new BigDecimal(reportExamStudentUsualScoreObjDto.getMatrixAvgScore()));
+                                            targetAvgScore = targetAvgScore.add(reportExamStudentUsualScoreObjDto.getMatrixAvgScore());
                                             break;
                                             break;
                                         case "各课程目标平均分":
                                         case "各课程目标平均分":
                                             examStudent_cells.add(Cells.of(targetCourseDegreeMap.get(reportExamStudentTargetDto.getTargetId()) + "").create());
                                             examStudent_cells.add(Cells.of(targetCourseDegreeMap.get(reportExamStudentTargetDto.getTargetId()) + "").create());
@@ -911,7 +911,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
 //                                        break;
 //                                        break;
                                     case "平均分":
                                     case "平均分":
                                         examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentFinalScoreDto.getMatrixAvgScore())).create());
                                         examStudent_cells.add(Cells.of(SystemConstant.df.format(reportExamStudentFinalScoreDto.getMatrixAvgScore())).create());
-                                        targetAvgScore = targetAvgScore.add(new BigDecimal(reportExamStudentFinalScoreDto.getMatrixAvgScore()));
+                                        targetAvgScore = targetAvgScore.add(reportExamStudentFinalScoreDto.getMatrixAvgScore());
                                         break;
                                         break;
                                     case "各课程目标平均分":
                                     case "各课程目标平均分":
                                         examStudent_cells.add(Cells.of(targetCourseDegreeMap.get(reportExamStudentTargetDto.getTargetId()) + "").create());
                                         examStudent_cells.add(Cells.of(targetCourseDegreeMap.get(reportExamStudentTargetDto.getTargetId()) + "").create());
@@ -929,7 +929,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
 //                        examStudent_cells.add(Cells.of(SystemConstant.df.format(targetSumScore.setScale(2, BigDecimal.ROUND_HALF_UP))).create());
 //                        examStudent_cells.add(Cells.of(SystemConstant.df.format(targetSumScore.setScale(2, BigDecimal.ROUND_HALF_UP))).create());
 //                        break;
 //                        break;
                     case "平均分":
                     case "平均分":
-                        examStudent_cells.add(Cells.of(SystemConstant.df.format(targetAvgScore.setScale(1, BigDecimal.ROUND_DOWN))).create());
+                        examStudent_cells.add(Cells.of(SystemConstant.df.format(targetAvgScore.setScale(2, BigDecimal.ROUND_HALF_UP))).create());
                         break;
                         break;
                     case "各课程目标平均分":
                     case "各课程目标平均分":
                         examStudent_cells.add(Cells.of("").create());
                         examStudent_cells.add(Cells.of("").create());
@@ -1000,10 +1000,10 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                 Integer[] scoreSizes = new Integer[]{0, 0, 0, 0, 0};
                 Integer[] scoreSizes = new Integer[]{0, 0, 0, 0, 0};
                 BigDecimal[] scorePercent = new BigDecimal[]{new BigDecimal(0), new BigDecimal(0), new BigDecimal(0), new BigDecimal(0), new BigDecimal(0)};
                 BigDecimal[] scorePercent = new BigDecimal[]{new BigDecimal(0), new BigDecimal(0), new BigDecimal(0), new BigDecimal(0), new BigDecimal(0)};
                 Map<String, Object> map = new HashMap<>();
                 Map<String, Object> map = new HashMap<>();
-                Double maxScore = scoreList.stream().mapToDouble(s -> s).max().orElse(0.0d);
-                Double minScore = scoreList.stream().mapToDouble(s -> s).min().orElse(0.0d);
-                Double avgScore = scoreList.stream().mapToDouble(s -> s).average().orElse(0.0d);
-                for (Double d : scoreList) {
+                Double maxScore = scoreList.stream().mapToDouble(s -> s.doubleValue()).max().orElse(0.0d);
+                Double minScore = scoreList.stream().mapToDouble(s -> s.doubleValue()).min().orElse(0.0d);
+                Double avgScore = scoreList.stream().mapToDouble(s -> s.doubleValue()).average().orElse(0.0d);
+                for (BigDecimal d : scoreList) {
                     if (d.doubleValue() <= 100 && d.doubleValue() >= 90) {
                     if (d.doubleValue() <= 100 && d.doubleValue() >= 90) {
                         scoreSizes[0] = scoreSizes[0] + 1;
                         scoreSizes[0] = scoreSizes[0] + 1;
                     } else if (d.doubleValue() <= 89 && d.doubleValue() >= 80) {
                     } else if (d.doubleValue() <= 89 && d.doubleValue() >= 80) {
@@ -1017,7 +1017,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                     }
                     }
                 }
                 }
                 for (int i = 0; i < scoreSizes.length; i++) {
                 for (int i = 0; i < scoreSizes.length; i++) {
-                    scorePercent[i] = new BigDecimal(scoreSizes[i]).divide(new BigDecimal(scoreList.size()), 2, BigDecimal.ROUND_HALF_UP).multiply(SystemConstant.PERCENT).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    scorePercent[i] = new BigDecimal(scoreSizes[i]).divide(new BigDecimal(scoreList.size()), 4, BigDecimal.ROUND_HALF_UP).multiply(SystemConstant.PERCENT).setScale(2, BigDecimal.ROUND_HALF_UP);
                 }
                 }
                 map.put("scoreSizes", scoreSizes);
                 map.put("scoreSizes", scoreSizes);
                 map.put("scorePercent", scorePercent);
                 map.put("scorePercent", scorePercent);
@@ -1176,7 +1176,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
             }.getType());
             }.getType());
             for (CourseWeightDto c : obeCourseWeightResult.getSubmitForm()) {
             for (CourseWeightDto c : obeCourseWeightResult.getSubmitForm()) {
                 Double score = paperStructDimensionResultList.stream().filter(s -> Objects.equals(s.getCourseTargetName(), c.getCourseTargetName()))
                 Double score = paperStructDimensionResultList.stream().filter(s -> Objects.equals(s.getCourseTargetName(), c.getCourseTargetName()))
-                        .mapToDouble(PaperStructDimensionResult::getScore).sum();
+                        .mapToDouble(s -> s.getScore().doubleValue()).sum();
                 Objects.requireNonNull(c.getTotalWeight(), "[" + c.getCourseTargetName() + "]未设置权重");
                 Objects.requireNonNull(c.getTotalWeight(), "[" + c.getCourseTargetName() + "]未设置权重");
                 ////                Objects.requireNonNull(c.getTotalScore(), "[" + c.getCourseTargetName() + "]未设置目标分值");
                 ////                Objects.requireNonNull(c.getTotalScore(), "[" + c.getCourseTargetName() + "]未设置目标分值");
                 //                if (new BigDecimal(score).compareTo(c.getTotalWeight()) == 1) {
                 //                if (new BigDecimal(score).compareTo(c.getTotalWeight()) == 1) {
@@ -1351,21 +1351,21 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
      * @param courseTargetDto
      * @param courseTargetDto
      * @param score
      * @param score
      */
      */
-    protected void calculateFinalScoreByTargetExamStudent(Map<String, Map<Long, Double>> finalScoreExamStudentTargetMap,
+    protected void calculateFinalScoreByTargetExamStudent(Map<String, Map<Long, BigDecimal>> finalScoreExamStudentTargetMap,
                                                           FinalScoreResult finalScoreResult,
                                                           FinalScoreResult finalScoreResult,
                                                           CourseTargetWebDto courseTargetDto,
                                                           CourseTargetWebDto courseTargetDto,
-                                                          Double score) {
+                                                          BigDecimal score) {
         if (!finalScoreExamStudentTargetMap.containsKey(finalScoreResult.getStudentCode())) {
         if (!finalScoreExamStudentTargetMap.containsKey(finalScoreResult.getStudentCode())) {
-            Map<Long, Double> map = new LinkedHashMap<>();
+            Map<Long, BigDecimal> map = new LinkedHashMap<>();
             map.put(courseTargetDto.getTargetId(), score);
             map.put(courseTargetDto.getTargetId(), score);
             finalScoreExamStudentTargetMap.put(finalScoreResult.getStudentCode(), map);
             finalScoreExamStudentTargetMap.put(finalScoreResult.getStudentCode(), map);
         } else {
         } else {
-            Map<Long, Double> map = finalScoreExamStudentTargetMap.get(finalScoreResult.getStudentCode());
+            Map<Long, BigDecimal> map = finalScoreExamStudentTargetMap.get(finalScoreResult.getStudentCode());
             if (!map.containsKey(courseTargetDto.getTargetId())) {
             if (!map.containsKey(courseTargetDto.getTargetId())) {
                 map.put(courseTargetDto.getTargetId(), score);
                 map.put(courseTargetDto.getTargetId(), score);
             } else {
             } else {
-                Double scoreTemp = map.get(courseTargetDto.getTargetId());
-                map.put(courseTargetDto.getTargetId(), scoreTemp.doubleValue() + score.doubleValue());
+                BigDecimal scoreTemp = map.get(courseTargetDto.getTargetId());
+                map.put(courseTargetDto.getTargetId(), scoreTemp.add(score));
             }
             }
             finalScoreExamStudentTargetMap.put(finalScoreResult.getStudentCode(), map);
             finalScoreExamStudentTargetMap.put(finalScoreResult.getStudentCode(), map);
         }
         }
@@ -1391,12 +1391,12 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                 ReportEvaluationDto reportEvaluationDto = usualScoreMap.get(t.getName());
                 ReportEvaluationDto reportEvaluationDto = usualScoreMap.get(t.getName());
                 List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = !scoreListMap.containsKey(reportEvaluationDto.getTargetId()) ? new ArrayList<>() : scoreListMap.get(reportEvaluationDto.getTargetId());
                 List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = !scoreListMap.containsKey(reportEvaluationDto.getTargetId()) ? new ArrayList<>() : scoreListMap.get(reportEvaluationDto.getTargetId());
                 //计算平时作业转换
                 //计算平时作业转换
-                Double score = Objects.nonNull(t.getScore()) ? Double.parseDouble(t.getScore()) : 0d;
+                BigDecimal score = Objects.nonNull(t.getScore()) ? new BigDecimal(t.getScore()) : new BigDecimal(0);
                 CourseTargetWordDto courseTargetWordDto = targetWordMap.get(reportEvaluationDto.getTargetId());
                 CourseTargetWordDto courseTargetWordDto = targetWordMap.get(reportEvaluationDto.getTargetId());
                 UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
                 UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
                 //old平时作业换算:分数/100*作业目标分
                 //old平时作业换算:分数/100*作业目标分
                 //new平时作业换算:分数/作业目标分
                 //new平时作业换算:分数/作业目标分
-                Double matrixScore = new BigDecimal(score).divide(reportEvaluationDto.getTargetScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetWeight()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+                BigDecimal matrixScore = score.divide(reportEvaluationDto.getTargetScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
                 reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumScore()));
                 reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumScore()));
                 scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
                 scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
             }
             }
@@ -1424,7 +1424,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         int count = tcFinalScoreService.getCountByScoreRange(examId, courseCode, paperNumber, cultureProgramId, courseId, start, end);
         int count = tcFinalScoreService.getCountByScoreRange(examId, courseCode, paperNumber, cultureProgramId, courseId, start, end);
         Double rate = null;
         Double rate = null;
         if (toltal != 0) {
         if (toltal != 0) {
-            rate = new BigDecimal(count).divide(new BigDecimal(toltal), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).multiply(SystemConstant.PERCENT).doubleValue();
+            rate = new BigDecimal(count).divide(new BigDecimal(toltal), 4, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).multiply(SystemConstant.PERCENT).doubleValue();
         }
         }
         return new ScoreRangeVo(count, start, end, rate);
         return new ScoreRangeVo(count, start, end, rate);
     }
     }

+ 38 - 39
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java

@@ -63,14 +63,14 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
         List<ReportExamStudentDto> examStudentList = (List<ReportExamStudentDto>) paramsMap.get("examStudentList");
         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, 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, FinalScoreResult> finalScoreResultMap = (Map<String, FinalScoreResult>) paramsMap.get("finalScoreResultMap");
-        Map<String, Map<Long, Double>> finalScoreExamStudentTargetMap = (Map<String, Map<Long, Double>>) paramsMap.get("finalScoreExamStudentTargetMap");
+        Map<String, Map<Long, BigDecimal>> finalScoreExamStudentTargetMap = (Map<String, Map<Long, BigDecimal>>) paramsMap.get("finalScoreExamStudentTargetMap");
         Map<Long, CourseTargetWordDto> targetWordMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetWordMap");
         Map<Long, CourseTargetWordDto> targetWordMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetWordMap");
         if (!CollectionUtils.isEmpty(examStudentList)) {
         if (!CollectionUtils.isEmpty(examStudentList)) {
             List<TRExamStudent> trExamStudentList = new ArrayList<>(examStudentList.size());
             List<TRExamStudent> trExamStudentList = new ArrayList<>(examStudentList.size());
             Map<Long, ReportExamStudentTargetDto> reportExamStudentTargetDtoMap = new LinkedHashMap<>();
             Map<Long, ReportExamStudentTargetDto> reportExamStudentTargetDtoMap = new LinkedHashMap<>();
             for (ReportExamStudentDto reportExamStudentDto : examStudentList) {
             for (ReportExamStudentDto reportExamStudentDto : examStudentList) {
 //                Map<Long, Map<Long, DimensionDto>> map = finalScoreExamStudentDimensionMap.get(reportExamStudentDto.getStudentCode());
 //                Map<Long, Map<Long, DimensionDto>> map = finalScoreExamStudentDimensionMap.get(reportExamStudentDto.getStudentCode());
-                Map<Long, Double> map = finalScoreExamStudentTargetMap.get(reportExamStudentDto.getStudentCode());
+                Map<Long, BigDecimal> map = finalScoreExamStudentTargetMap.get(reportExamStudentDto.getStudentCode());
                 FinalScoreResult finalScoreResult = finalScoreResultMap.get(reportExamStudentDto.getStudentCode());
                 FinalScoreResult finalScoreResult = finalScoreResultMap.get(reportExamStudentDto.getStudentCode());
                 ReportExamStudentUsualScoreDto reportExamStudentUsualScoreSumDto = finalScoreResult.getUsualScoreDto();
                 ReportExamStudentUsualScoreDto reportExamStudentUsualScoreSumDto = finalScoreResult.getUsualScoreDto();
                 map.forEach((k, v) -> {
                 map.forEach((k, v) -> {
@@ -87,36 +87,35 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
                         BigDecimal targetMatrixSumScore = new BigDecimal(0);
                         BigDecimal targetMatrixSumScore = new BigDecimal(0);
                         AtomicReference<BigDecimal> matrixDegree = new AtomicReference<>(new BigDecimal(0));
                         AtomicReference<BigDecimal> matrixDegree = new AtomicReference<>(new BigDecimal(0));
                         if (!reportExamStudentTargetDtoMap.containsKey(k)) {
                         if (!reportExamStudentTargetDtoMap.containsKey(k)) {
-                            Double targetMatrixScore = 0.0d;
+                            BigDecimal targetMatrixScore = new BigDecimal(0);
                             if (Objects.nonNull(courseTargetWordDto.getFinalScoreDto())) {
                             if (Objects.nonNull(courseTargetWordDto.getFinalScoreDto())) {
                                 //old卷面分*权重/100
                                 //old卷面分*权重/100
                                 //new卷面分/目标分
                                 //new卷面分/目标分
 //                                    targetMatrixScore = new BigDecimal(v).divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
 //                                    targetMatrixScore = new BigDecimal(v).divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
                                 //卷面分*权重/100
                                 //卷面分*权重/100
-                                targetMatrixScore = new BigDecimal(v).divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
-                                BigDecimal bigDecimal = new BigDecimal(v).setScale(2, BigDecimal.ROUND_HALF_UP);
-                                BigDecimal targetEvaluationValue = bigDecimal.divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight().divide(courseTargetWordDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                targetMatrixScore = v.divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                BigDecimal targetEvaluationValue = v.divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight().divide(courseTargetWordDto.getTargetSumWeight(), 4, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
                                 matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
                                 matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
                             }
                             }
-                            targetMatrixSumScore = targetMatrixSumScore.add(new BigDecimal(targetMatrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
-                            reportExamStudentDto.setScore(reportExamStudentDto.getScore() + targetMatrixScore);
+//                            targetMatrixSumScore = targetMatrixSumScore.add(targetMatrixScore).setScale(2, BigDecimal.ROUND_HALF_UP);
+                            targetMatrixSumScore = targetMatrixSumScore.add(targetMatrixScore);
+                            reportExamStudentDto.setScore(reportExamStudentDto.getScore().add(targetMatrixScore));
 
 
                             if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
                             if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
-                                reportExamStudentFinalScoreDto.setTargetMatrixSumScore(targetMatrixSumScore.doubleValue());
+                                reportExamStudentFinalScoreDto.setTargetMatrixSumScore(targetMatrixSumScore);
                             }
                             }
                             ReportExamStudentTargetDto reportExamStudentTargetDto = null;
                             ReportExamStudentTargetDto reportExamStudentTargetDto = null;
                             //平时作业总和+累加
                             //平时作业总和+累加
                             if (!CollectionUtils.isEmpty(scoreObjDtoList)) {
                             if (!CollectionUtils.isEmpty(scoreObjDtoList)) {
                                 for (ReportExamStudentUsualScoreObjDto r : scoreObjDtoList) {
                                 for (ReportExamStudentUsualScoreObjDto r : scoreObjDtoList) {
-                                    BigDecimal bigDecimal = new BigDecimal(r.getScore()).setScale(2, BigDecimal.ROUND_HALF_UP);
-                                    BigDecimal targetEvaluationValue = bigDecimal.divide(r.getTargetScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(r.getTargetWeight().divide(courseTargetWordDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                    BigDecimal targetEvaluationValue = r.getScore().divide(r.getTargetScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(r.getTargetWeight().divide(courseTargetWordDto.getTargetSumWeight(), 4, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
                                     matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
                                     matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
                                 }
                                 }
-                                Double usualMatrixSumScore = scoreObjDtoList.stream().mapToDouble(ReportExamStudentUsualScoreObjDto::getMatrixScore).sum();
-                                reportExamStudentDto.setScore(reportExamStudentDto.getScore() + usualMatrixSumScore);
+                                Double usualMatrixSumScore = scoreObjDtoList.stream().mapToDouble(s -> s.getMatrixScore().doubleValue()).sum();
+                                reportExamStudentDto.setScore(reportExamStudentDto.getScore().add(new BigDecimal(usualMatrixSumScore).setScale(2, BigDecimal.ROUND_HALF_UP)));
                                 ReportExamStudentFinalScoreDto reportExamStudentFinalScoreTempDto = null;
                                 ReportExamStudentFinalScoreDto reportExamStudentFinalScoreTempDto = null;
                                 if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
                                 if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
-                                    reportExamStudentFinalScoreTempDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), targetMatrixSumScore.doubleValue(), finalScoreResult.getFinalScoreTarget().get(k));
+                                    reportExamStudentFinalScoreTempDto = new ReportExamStudentFinalScoreDto(courseTargetWordDto.getFinalScoreDto(), targetMatrixSumScore, finalScoreResult.getFinalScoreTarget().get(k));
                                 }
                                 }
 //                                ReportExamStudentTargetDto reportExamStudentTargetDto = new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreTempDto, new ReportExamStudentUsualScoreDto(courseTargetWordDto.getUsualScoreDto().getUsualScoreTargetSumWeight(), scoreObjDtoList.stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList())));
 //                                ReportExamStudentTargetDto reportExamStudentTargetDto = new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreTempDto, new ReportExamStudentUsualScoreDto(courseTargetWordDto.getUsualScoreDto().getUsualScoreTargetSumWeight(), scoreObjDtoList.stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList())));
                                 reportExamStudentTargetDto = new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreTempDto, new ReportExamStudentUsualScoreDto(scoreObjDtoList.stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList())), matrixDegree.get());
                                 reportExamStudentTargetDto = new ReportExamStudentTargetDto(courseTargetWordDto, reportExamStudentFinalScoreTempDto, new ReportExamStudentUsualScoreDto(scoreObjDtoList.stream().map(ReportExamStudentUsualScoreObjDto::new).collect(Collectors.toList())), matrixDegree.get());
@@ -127,22 +126,23 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
                         } else {
                         } else {
                             ReportExamStudentTargetDto reportExamStudentTargetDto = reportExamStudentTargetDtoMap.get(k);
                             ReportExamStudentTargetDto reportExamStudentTargetDto = reportExamStudentTargetDtoMap.get(k);
                             ReportExamStudentFinalScoreDto reportExamStudentFinalScoreAvgDto = null;
                             ReportExamStudentFinalScoreDto reportExamStudentFinalScoreAvgDto = null;
-                            Double targetMatrixScore = 0.0d;
+                            BigDecimal targetMatrixScore = new BigDecimal(0);
                             if (Objects.nonNull(reportExamStudentTargetDto.getFinalScore())) {
                             if (Objects.nonNull(reportExamStudentTargetDto.getFinalScore())) {
                                 reportExamStudentFinalScoreAvgDto = reportExamStudentTargetDto.getFinalScore();
                                 reportExamStudentFinalScoreAvgDto = reportExamStudentTargetDto.getFinalScore();
-                                targetMatrixScore = new BigDecimal(v).divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+                                targetMatrixScore = v.divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight()).setScale(2, BigDecimal.ROUND_HALF_UP);
 
 
-                                BigDecimal bigDecimal = new BigDecimal(v).setScale(2, BigDecimal.ROUND_HALF_UP);
-                                BigDecimal targetEvaluationValue = bigDecimal.divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight().divide(courseTargetWordDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                BigDecimal targetEvaluationValue = v.divide(courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(courseTargetWordDto.getFinalScoreDto().getFinalScoreSumWeight().divide(courseTargetWordDto.getTargetSumWeight(), 4, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
                                 matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
                                 matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
                                 reportExamStudentTargetDto.setMatrixDegree(matrixDegree.get());
                                 reportExamStudentTargetDto.setMatrixDegree(matrixDegree.get());
                             }
                             }
-                            targetMatrixSumScore = targetMatrixSumScore.add(new BigDecimal(targetMatrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
-                            reportExamStudentDto.setScore(reportExamStudentDto.getScore() + targetMatrixScore);
+//                            targetMatrixSumScore = targetMatrixSumScore.add(targetMatrixScore).setScale(2, BigDecimal.ROUND_HALF_UP);
+                            targetMatrixSumScore = targetMatrixSumScore.add(targetMatrixScore);
+                            reportExamStudentDto.setScore(reportExamStudentDto.getScore().add(targetMatrixScore));
 
 
                             if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
                             if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
-                                reportExamStudentFinalScoreDto.setTargetMatrixSumScore(targetMatrixSumScore.doubleValue());
-                                reportExamStudentFinalScoreAvgDto.setTargetMatrixSumScore(new BigDecimal(reportExamStudentFinalScoreAvgDto.getTargetMatrixSumScore()).add(targetMatrixSumScore).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+                                reportExamStudentFinalScoreDto.setTargetMatrixSumScore(targetMatrixSumScore);
+//                                reportExamStudentFinalScoreAvgDto.setTargetMatrixSumScore(reportExamStudentFinalScoreAvgDto.getTargetMatrixSumScore().add(targetMatrixSumScore).setScale(2, BigDecimal.ROUND_HALF_UP));
+                                reportExamStudentFinalScoreAvgDto.setTargetMatrixSumScore(reportExamStudentFinalScoreAvgDto.getTargetMatrixSumScore().add(targetMatrixSumScore));
                             }
                             }
                             ReportExamStudentUsualScoreDto reportExamStudentUsualScoreAvgDto = reportExamStudentTargetDto.getUsualScore();
                             ReportExamStudentUsualScoreDto reportExamStudentUsualScoreAvgDto = reportExamStudentTargetDto.getUsualScore();
 
 
@@ -152,11 +152,11 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
                                 List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjAvgDtoList = reportExamStudentUsualScoreAvgDto.getScoreList();
                                 List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjAvgDtoList = reportExamStudentUsualScoreAvgDto.getScoreList();
                                 for (int i = 0; i < reportExamStudentUsualScoreObjDtoList.size(); i++) {
                                 for (int i = 0; i < reportExamStudentUsualScoreObjDtoList.size(); i++) {
                                     ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto = reportExamStudentUsualScoreObjDtoList.get(i);
                                     ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto = reportExamStudentUsualScoreObjDtoList.get(i);
-                                    reportExamStudentDto.setScore(reportExamStudentDto.getScore() + reportExamStudentUsualScoreObjDto.getMatrixScore());
-                                    BigDecimal bigDecimal = new BigDecimal(reportExamStudentUsualScoreObjDto.getScore()).setScale(2, BigDecimal.ROUND_HALF_UP);
-                                    BigDecimal targetEvaluationValue = bigDecimal.divide(reportExamStudentUsualScoreObjDto.getTargetScore(), 2, BigDecimal.ROUND_HALF_UP).multiply(reportExamStudentUsualScoreObjDto.getTargetWeight().divide(courseTargetWordDto.getTargetSumWeight(), 2, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
+                                    reportExamStudentDto.setScore(reportExamStudentDto.getScore().add(reportExamStudentUsualScoreObjDto.getMatrixScore()));
+//                                    BigDecimal bigDecimal = reportExamStudentUsualScoreObjDto.getScore().setScale(2, BigDecimal.ROUND_HALF_UP);
+                                    BigDecimal targetEvaluationValue = reportExamStudentUsualScoreObjDto.getScore().divide(reportExamStudentUsualScoreObjDto.getTargetScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(reportExamStudentUsualScoreObjDto.getTargetWeight().divide(courseTargetWordDto.getTargetSumWeight(), 4, BigDecimal.ROUND_HALF_UP)).setScale(2, BigDecimal.ROUND_HALF_UP);
                                     matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
                                     matrixDegree.set(matrixDegree.get().add(targetEvaluationValue));
-                                    reportExamStudentUsualScoreObjAvgDtoList.get(i).setMatrixScore(new BigDecimal(reportExamStudentUsualScoreObjAvgDtoList.get(i).getMatrixScore()).add(new BigDecimal(reportExamStudentUsualScoreObjDto.getMatrixScore())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+                                    reportExamStudentUsualScoreObjAvgDtoList.get(i).setMatrixScore(reportExamStudentUsualScoreObjAvgDtoList.get(i).getMatrixScore().add(reportExamStudentUsualScoreObjDto.getMatrixScore()));
                                 }
                                 }
                             }
                             }
                             reportExamStudentTargetDtoMap.put(k, reportExamStudentTargetDto);
                             reportExamStudentTargetDtoMap.put(k, reportExamStudentTargetDto);
@@ -165,24 +165,24 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
                     }
                     }
                     reportExamStudentDto.setTargetList(targetList);
                     reportExamStudentDto.setTargetList(targetList);
                 });
                 });
-                reportExamStudentDto.setScore(new BigDecimal(reportExamStudentDto.getScore()).setScale(1, BigDecimal.ROUND_DOWN).doubleValue());
+                reportExamStudentDto.setScore(reportExamStudentDto.getScore().setScale(2, BigDecimal.ROUND_HALF_UP));
                 Collections.sort(reportExamStudentDto.getTargetList());
                 Collections.sort(reportExamStudentDto.getTargetList());
                 trExamStudentList.add(new TRExamStudent(trBasicInfo.getId(), reportExamStudentDto));
                 trExamStudentList.add(new TRExamStudent(trBasicInfo.getId(), reportExamStudentDto));
             }
             }
             //加入目标分&平均分&各课程目标平均分
             //加入目标分&平均分&各课程目标平均分
             BigDecimal size = new BigDecimal(examStudentList.size());
             BigDecimal size = new BigDecimal(examStudentList.size());
             List<ReportExamStudentTargetDto> targetDtoList = this.targetDtoParams(reportExamStudentTargetDtoMap, size);
             List<ReportExamStudentTargetDto> targetDtoList = this.targetDtoParams(reportExamStudentTargetDtoMap, size);
-            AtomicReference<Double> targetScoreSum = new AtomicReference<>(0.0d);
-            AtomicReference<Double> usualScoreSum = new AtomicReference<>(0.0d);
+            AtomicReference<BigDecimal> targetScoreSum = new AtomicReference<>(new BigDecimal(0));
+            AtomicReference<BigDecimal> usualScoreSum = new AtomicReference<>(new BigDecimal(0));
             targetDtoList.stream().peek(e -> {
             targetDtoList.stream().peek(e -> {
-                targetScoreSum.set(targetScoreSum.get() + (Objects.nonNull(e.getFinalScore()) ? e.getFinalScore().getMatrixAvgScore() : 0.0d));
+                targetScoreSum.set(targetScoreSum.get().add((Objects.nonNull(e.getFinalScore()) ? e.getFinalScore().getMatrixAvgScore() : new BigDecimal(0))));
                 if (Objects.nonNull(e.getUsualScore()) && !CollectionUtils.isEmpty(e.getUsualScore().getScoreList())) {
                 if (Objects.nonNull(e.getUsualScore()) && !CollectionUtils.isEmpty(e.getUsualScore().getScoreList())) {
-                    usualScoreSum.set(usualScoreSum.get() + e.getUsualScore().getScoreList().stream().mapToDouble(ReportExamStudentUsualScoreObjDto::getMatrixAvgScore).sum());
+                    usualScoreSum.set(usualScoreSum.get().add(new BigDecimal(e.getUsualScore().getScoreList().stream().mapToDouble(s -> s.getMatrixAvgScore().doubleValue()).sum())).setScale(2, BigDecimal.ROUND_HALF_UP));
                 }
                 }
             }).collect(Collectors.toList());
             }).collect(Collectors.toList());
 
 
-            Double score = new BigDecimal(targetScoreSum.get()).add(new BigDecimal(usualScoreSum.get())).setScale(1, BigDecimal.ROUND_DOWN).doubleValue();
-            ReportExamStudentDto reportExamStudentTargetDto = new ReportExamStudentDto("目标分", "目标分", null, 100.d, targetDtoList);
+            BigDecimal score = targetScoreSum.get().add(usualScoreSum.get()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            ReportExamStudentDto reportExamStudentTargetDto = new ReportExamStudentDto("目标分", "目标分", null, SystemConstant.PERCENT, targetDtoList);
             ReportExamStudentDto reportExamStudentAvgDto = new ReportExamStudentDto("平均分", "平均分", null, score, targetDtoList);
             ReportExamStudentDto reportExamStudentAvgDto = new ReportExamStudentDto("平均分", "平均分", null, score, targetDtoList);
             ReportExamStudentDto reportExamStudentTargetAvgDto = new ReportExamStudentDto("各课程目标平均分", "各课程目标平均分", null, null, targetDtoList);
             ReportExamStudentDto reportExamStudentTargetAvgDto = new ReportExamStudentDto("各课程目标平均分", "各课程目标平均分", null, null, targetDtoList);
 
 
@@ -422,20 +422,19 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
         reportExamStudentTargetDtoMap.forEach((k, v) -> {
         reportExamStudentTargetDtoMap.forEach((k, v) -> {
             ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = v.getFinalScore();//课程目标考核要素的平均分
             ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = v.getFinalScore();//课程目标考核要素的平均分
             if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
             if (Objects.nonNull(reportExamStudentFinalScoreDto)) {
-                BigDecimal matrixAvgScore = new BigDecimal(reportExamStudentFinalScoreDto.getTargetMatrixSumScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
-                reportExamStudentFinalScoreDto.setMatrixAvgScore(matrixAvgScore.doubleValue());
-
+                BigDecimal matrixAvgScore = reportExamStudentFinalScoreDto.getTargetMatrixSumScore().divide(size, 4, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
+                reportExamStudentFinalScoreDto.setMatrixAvgScore(matrixAvgScore);
                 v.setTargetMatrixAvgScore(reportExamStudentFinalScoreDto.getMatrixAvgScore());
                 v.setTargetMatrixAvgScore(reportExamStudentFinalScoreDto.getMatrixAvgScore());
             }
             }
             ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = v.getUsualScore();
             ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = v.getUsualScore();
             if (Objects.nonNull(reportExamStudentUsualScoreDto) && !CollectionUtils.isEmpty(reportExamStudentUsualScoreDto.getScoreList())) {
             if (Objects.nonNull(reportExamStudentUsualScoreDto) && !CollectionUtils.isEmpty(reportExamStudentUsualScoreDto.getScoreList())) {
                 List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
                 List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
                 for (ReportExamStudentUsualScoreObjDto r : reportExamStudentUsualScoreObjDtoList) {
                 for (ReportExamStudentUsualScoreObjDto r : reportExamStudentUsualScoreObjDtoList) {
-                    r.setMatrixAvgScore(new BigDecimal(r.getMatrixScore()).divide(size, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-                    v.setTargetMatrixAvgScore(Objects.nonNull(v.getTargetMatrixAvgScore()) ? v.getTargetMatrixAvgScore() : 0.0d + r.getMatrixAvgScore());
+                    r.setMatrixAvgScore(r.getMatrixScore().divide(size, 4, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP));
+                    v.setTargetMatrixAvgScore(Objects.nonNull(v.getTargetMatrixAvgScore()) ? v.getTargetMatrixAvgScore() : new BigDecimal(0).add(r.getMatrixAvgScore()));
                 }
                 }
             }
             }
-            v.setTargetMatrixAvgScore(new BigDecimal(v.getTargetMatrixAvgScore()).setScale(1, BigDecimal.ROUND_DOWN).doubleValue());
+            v.setTargetMatrixAvgScore(v.getTargetMatrixAvgScore().setScale(2, BigDecimal.ROUND_HALF_UP));
             targetDtoList.add(v);
             targetDtoList.add(v);
         });
         });
         Collections.sort(targetDtoList);
         Collections.sort(targetDtoList);

+ 5 - 4
distributed-print/src/main/java/com/qmth/distributed/print/api/TCPaperStructController.java

@@ -39,6 +39,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.annotation.Resource;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import javax.validation.Valid;
 import java.io.IOException;
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -162,7 +163,7 @@ public class TCPaperStructController {
                 }
                 }
             }
             }
             List<PaperStructDimensionResult> paperStructDimensionResultList = paperStructParams.getPaperStruct();
             List<PaperStructDimensionResult> paperStructDimensionResultList = paperStructParams.getPaperStruct();
-            Double score = paperStructDimensionResultList.stream().filter(s -> Objects.equals(s.getCourseTargetName(), c.getCourseTargetName())).mapToDouble(PaperStructDimensionResult::getScore).sum();
+            Double score = paperStructDimensionResultList.stream().filter(s -> Objects.equals(s.getCourseTargetName(), c.getCourseTargetName())).mapToDouble(s->s.getScore().doubleValue()).sum();
             Objects.requireNonNull(c.getTotalWeight(), "[" + c.getCourseTargetName() + "]未设置权重");
             Objects.requireNonNull(c.getTotalWeight(), "[" + c.getCourseTargetName() + "]未设置权重");
 //            Objects.requireNonNull(c.getTotalScore(), "[" + c.getCourseTargetName() + "]未设置目标分值");
 //            Objects.requireNonNull(c.getTotalScore(), "[" + c.getCourseTargetName() + "]未设置目标分值");
 //            if (new BigDecimal(score).compareTo(c.getTotalWeight()) == 1) {
 //            if (new BigDecimal(score).compareTo(c.getTotalWeight()) == 1) {
@@ -170,7 +171,7 @@ public class TCPaperStructController {
 //            }
 //            }
             paperStructDimensionResultList.stream().filter(s -> {
             paperStructDimensionResultList.stream().filter(s -> {
                 if (Objects.equals(s.getCourseTargetName(), c.getCourseTargetName())) {
                 if (Objects.equals(s.getCourseTargetName(), c.getCourseTargetName())) {
-                    s.getTargetList().stream().peek(e -> e.setFinalScoreQuestionScoreSum(score)).collect(Collectors.toList());
+                    s.getTargetList().stream().peek(e -> e.setFinalScoreQuestionScoreSum(new BigDecimal(score))).collect(Collectors.toList());
                     return true;
                     return true;
                 }
                 }
                 return false;
                 return false;
@@ -214,7 +215,7 @@ public class TCPaperStructController {
             }
             }
             paperStructDimensionResultList = new ArrayList<>(markQuestionList.size());
             paperStructDimensionResultList = new ArrayList<>(markQuestionList.size());
             for (MarkQuestion markQuestion : markQuestionList) {
             for (MarkQuestion markQuestion : markQuestionList) {
-                paperStructDimensionResultList.add(new PaperStructDimensionResult(markQuestion.getMainNumber(), markQuestion.getSubNumber(), markQuestion.getPaperNumber(), markQuestion.getTotalScore()));
+                paperStructDimensionResultList.add(new PaperStructDimensionResult(markQuestion.getMainNumber(), markQuestion.getSubNumber(), markQuestion.getPaperNumber(), new BigDecimal(markQuestion.getTotalScore())));
             }
             }
         } else {
         } else {
             ObeCourseWeightResult obeCourseWeightResult = trBasicInfoService.findCourseWeightResultRmi(obeCourseOutline.getId());
             ObeCourseWeightResult obeCourseWeightResult = trBasicInfoService.findCourseWeightResultRmi(obeCourseOutline.getId());
@@ -246,7 +247,7 @@ public class TCPaperStructController {
             }.getType());
             }.getType());
             paperStructDimensionResultList = new ArrayList<>(paperStructDtoList.size());
             paperStructDimensionResultList = new ArrayList<>(paperStructDtoList.size());
             for (PaperStructDto paperStructDto : paperStructDtoList) {
             for (PaperStructDto paperStructDto : paperStructDtoList) {
-                paperStructDimensionResultList.add(new PaperStructDimensionResult(paperStructDto.getMainNumber(), paperStructDto.getSubNumber(), tcPaperStruct.getPaperNumber(), paperStructDto.getScore()));
+                paperStructDimensionResultList.add(new PaperStructDimensionResult(paperStructDto.getMainNumber(), paperStructDto.getSubNumber(), tcPaperStruct.getPaperNumber(), new BigDecimal(paperStructDto.getScore())));
             }
             }
         }
         }
         return paperStructDimensionResultList;
         return paperStructDimensionResultList;

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

@@ -236,7 +236,7 @@ public class TRBasicInfoController {
                 List<PaperStructDimensionResult> paperStructDimensionResultList = GsonUtil.fromJson(tcPaperStruct.getPaperStructDimension(), new TypeToken<List<PaperStructDimensionResult>>() {
                 List<PaperStructDimensionResult> paperStructDimensionResultList = GsonUtil.fromJson(tcPaperStruct.getPaperStructDimension(), new TypeToken<List<PaperStructDimensionResult>>() {
                 }.getType());
                 }.getType());
                 for (CourseWeightDto c : obeCourseWeightResult.getSubmitForm()) {
                 for (CourseWeightDto c : obeCourseWeightResult.getSubmitForm()) {
-                    Double score = paperStructDimensionResultList.stream().filter(s -> Objects.equals(s.getCourseTargetName(), c.getCourseTargetName())).mapToDouble(PaperStructDimensionResult::getScore).sum();
+                    Double score = paperStructDimensionResultList.stream().filter(s -> Objects.equals(s.getCourseTargetName(), c.getCourseTargetName())).mapToDouble(s -> s.getScore().doubleValue()).sum();
                     Objects.requireNonNull(c.getTotalWeight(), "[" + c.getCourseTargetName() + "]未设置权重");
                     Objects.requireNonNull(c.getTotalWeight(), "[" + c.getCourseTargetName() + "]未设置权重");
 //                    Objects.requireNonNull(c.getTotalScore(), "[" + c.getCourseTargetName() + "]未设置目标分值");
 //                    Objects.requireNonNull(c.getTotalScore(), "[" + c.getCourseTargetName() + "]未设置目标分值");
 //                    if (new BigDecimal(score).compareTo(c.getTotalWeight()) == 1) {
 //                    if (new BigDecimal(score).compareTo(c.getTotalWeight()) == 1) {
@@ -389,7 +389,7 @@ public class TRBasicInfoController {
                     }.getType());
                     }.getType());
                     StringJoiner stringJoiner = new StringJoiner("");
                     StringJoiner stringJoiner = new StringJoiner("");
                     for (CourseWeightDto c : courseWeightDtoList) {
                     for (CourseWeightDto c : courseWeightDtoList) {
-                        Double score = paperStructDimensionResultList.stream().filter(s -> Objects.equals(s.getCourseTargetName(), c.getCourseTargetName())).mapToDouble(PaperStructDimensionResult::getScore).sum();
+                        Double score = paperStructDimensionResultList.stream().filter(s -> Objects.equals(s.getCourseTargetName(), c.getCourseTargetName())).mapToDouble(s -> s.getScore().doubleValue()).sum();
                         if (Objects.isNull(c.getTotalWeight())) {
                         if (Objects.isNull(c.getTotalWeight())) {
                             reportChangeResult.setTargetScoreChange(true);
                             reportChangeResult.setTargetScoreChange(true);
                             stringJoiner.add("[").add(c.getCourseTargetName()).add("]").add("未设置权重").add("\r\n");
                             stringJoiner.add("[").add(c.getCourseTargetName()).add("]").add("未设置权重").add("\r\n");