浏览代码

测试报告

wangliang 1 年之前
父节点
当前提交
ced1457bc5

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

@@ -31,11 +31,14 @@ public class CourseTargetWebDto implements Serializable, Comparable<CourseTarget
     @ApiModelProperty(value = "毕业要求")
     @ApiModelProperty(value = "毕业要求")
     private String graduationRequirement;
     private String graduationRequirement;
 
 
+    @ApiModelProperty(value = "毕业要求指标点")
+    private String graduationRequirementPoint;
+
     @ApiModelProperty(value = "目标整体权重")
     @ApiModelProperty(value = "目标整体权重")
-    private BigDecimal targetWeight = new BigDecimal(0);
+    private BigDecimal targetSumWeight = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "目标整体分值")
     @ApiModelProperty(value = "目标整体分值")
-    private BigDecimal targetScore = new BigDecimal(0);
+    private BigDecimal targetSumScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "知识点集合")
     @ApiModelProperty(value = "知识点集合")
     private List<DimensionDto> dimensionList;
     private List<DimensionDto> dimensionList;
@@ -43,9 +46,6 @@ public class CourseTargetWebDto implements Serializable, Comparable<CourseTarget
     @ApiModelProperty(value = "目标达成评价值")
     @ApiModelProperty(value = "目标达成评价值")
     private BigDecimal evaluationValue = new BigDecimal(0);
     private BigDecimal evaluationValue = new BigDecimal(0);
 
 
-    @ApiModelProperty(value = "换算平均分")
-    private BigDecimal matrixAvgScore = new BigDecimal(0);
-
     @ApiModelProperty(value = "评价方式集合")
     @ApiModelProperty(value = "评价方式集合")
     private List<ReportEvaluationDto> evaluationList;
     private List<ReportEvaluationDto> evaluationList;
 
 
@@ -57,32 +57,33 @@ public class CourseTargetWebDto implements Serializable, Comparable<CourseTarget
         this.targetId = courseWeightDto.getCourseTargetId();
         this.targetId = courseWeightDto.getCourseTargetId();
         this.targetName = courseWeightDto.getCourseTargetName();
         this.targetName = courseWeightDto.getCourseTargetName();
         this.graduationRequirement = courseWeightDto.getDegreeRequirement();
         this.graduationRequirement = courseWeightDto.getDegreeRequirement();
-        this.targetWeight = courseWeightDto.getTotalWeight();
-        this.targetScore = courseWeightDto.getTotalScore();
+        this.graduationRequirementPoint = courseWeightDto.getDegreeRequirement();
+        this.targetSumWeight = courseWeightDto.getTotalWeight();
+        this.targetSumScore = courseWeightDto.getTotalScore();
     }
     }
 
 
-    public BigDecimal getMatrixAvgScore() {
-        return matrixAvgScore;
+    public String getGraduationRequirementPoint() {
+        return graduationRequirementPoint;
     }
     }
 
 
-    public void setMatrixAvgScore(BigDecimal matrixAvgScore) {
-        this.matrixAvgScore = matrixAvgScore;
+    public void setGraduationRequirementPoint(String graduationRequirementPoint) {
+        this.graduationRequirementPoint = graduationRequirementPoint;
     }
     }
 
 
-    public BigDecimal getTargetScore() {
-        return targetScore;
+    public BigDecimal getTargetSumWeight() {
+        return targetSumWeight;
     }
     }
 
 
-    public void setTargetScore(BigDecimal targetScore) {
-        this.targetScore = targetScore;
+    public void setTargetSumWeight(BigDecimal targetSumWeight) {
+        this.targetSumWeight = targetSumWeight;
     }
     }
 
 
-    public BigDecimal getTargetWeight() {
-        return targetWeight;
+    public BigDecimal getTargetSumScore() {
+        return targetSumScore;
     }
     }
 
 
-    public void setTargetWeight(BigDecimal targetWeight) {
-        this.targetWeight = targetWeight;
+    public void setTargetSumScore(BigDecimal targetSumScore) {
+        this.targetSumScore = targetSumScore;
     }
     }
 
 
     public BigDecimal getEvaluationValue() {
     public BigDecimal getEvaluationValue() {

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

@@ -30,14 +30,20 @@ public class CourseTargetWordDto implements Serializable, Comparable<CourseTarge
     @ApiModelProperty(value = "毕业要求")
     @ApiModelProperty(value = "毕业要求")
     private String graduationRequirement;
     private String graduationRequirement;
 
 
+    @ApiModelProperty(value = "毕业要求指标点")
+    private String graduationRequirementPoint;
+
     @ApiModelProperty(value = "目标整体权重")
     @ApiModelProperty(value = "目标整体权重")
-    private BigDecimal targetWeight = new BigDecimal(0);
+    private BigDecimal targetSumWeight = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "目标整体分值")
     @ApiModelProperty(value = "目标整体分值")
-    private BigDecimal targetScore = new BigDecimal(0);
+    private BigDecimal targetSumScore = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "换算平均分")
     @ApiModelProperty(value = "换算平均分")
-    private BigDecimal matrixAvgScore = new BigDecimal(0);
+    private Double matrixAvgScore = 0.0d;
+
+    @ApiModelProperty(value = "目标达成评价值")
+    private BigDecimal evaluationValue = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "平时成绩信息")
     @ApiModelProperty(value = "平时成绩信息")
     private UsualScoreWordDto usualScoreDto;
     private UsualScoreWordDto usualScoreDto;
@@ -53,8 +59,17 @@ public class CourseTargetWordDto implements Serializable, Comparable<CourseTarge
         this.targetId = courseWeightDto.getCourseTargetId();
         this.targetId = courseWeightDto.getCourseTargetId();
         this.targetName = courseWeightDto.getCourseTargetName();
         this.targetName = courseWeightDto.getCourseTargetName();
         this.graduationRequirement = courseWeightDto.getDegreeRequirement();
         this.graduationRequirement = courseWeightDto.getDegreeRequirement();
-        this.targetScore = courseWeightDto.getTotalScore();
-        this.targetWeight = courseWeightDto.getTotalWeight();
+        this.graduationRequirementPoint = courseWeightDto.getDegreeRequirement();
+        this.targetSumScore = courseWeightDto.getTotalScore();
+        this.targetSumWeight = courseWeightDto.getTotalWeight();
+    }
+
+    public BigDecimal getEvaluationValue() {
+        return evaluationValue;
+    }
+
+    public void setEvaluationValue(BigDecimal evaluationValue) {
+        this.evaluationValue = evaluationValue;
     }
     }
 
 
     public String getGraduationRequirement() {
     public String getGraduationRequirement() {
@@ -65,12 +80,28 @@ public class CourseTargetWordDto implements Serializable, Comparable<CourseTarge
         this.graduationRequirement = graduationRequirement;
         this.graduationRequirement = graduationRequirement;
     }
     }
 
 
-    public BigDecimal getTargetScore() {
-        return targetScore;
+    public String getGraduationRequirementPoint() {
+        return graduationRequirementPoint;
+    }
+
+    public void setGraduationRequirementPoint(String graduationRequirementPoint) {
+        this.graduationRequirementPoint = graduationRequirementPoint;
+    }
+
+    public BigDecimal getTargetSumWeight() {
+        return targetSumWeight;
+    }
+
+    public void setTargetSumWeight(BigDecimal targetSumWeight) {
+        this.targetSumWeight = targetSumWeight;
+    }
+
+    public BigDecimal getTargetSumScore() {
+        return targetSumScore;
     }
     }
 
 
-    public void setTargetScore(BigDecimal targetScore) {
-        this.targetScore = targetScore;
+    public void setTargetSumScore(BigDecimal targetSumScore) {
+        this.targetSumScore = targetSumScore;
     }
     }
 
 
     public Long getTargetId() {
     public Long getTargetId() {
@@ -89,14 +120,6 @@ public class CourseTargetWordDto implements Serializable, Comparable<CourseTarge
         this.targetName = targetName;
         this.targetName = targetName;
     }
     }
 
 
-    public BigDecimal getTargetWeight() {
-        return targetWeight;
-    }
-
-    public void setTargetWeight(BigDecimal targetWeight) {
-        this.targetWeight = targetWeight;
-    }
-
     public UsualScoreWordDto getUsualScoreDto() {
     public UsualScoreWordDto getUsualScoreDto() {
         return usualScoreDto;
         return usualScoreDto;
     }
     }
@@ -113,11 +136,11 @@ public class CourseTargetWordDto implements Serializable, Comparable<CourseTarge
         this.finalScoreDto = finalScoreDto;
         this.finalScoreDto = finalScoreDto;
     }
     }
 
 
-    public BigDecimal getMatrixAvgScore() {
+    public Double getMatrixAvgScore() {
         return matrixAvgScore;
         return matrixAvgScore;
     }
     }
 
 
-    public void setMatrixAvgScore(BigDecimal matrixAvgScore) {
+    public void setMatrixAvgScore(Double matrixAvgScore) {
         this.matrixAvgScore = matrixAvgScore;
         this.matrixAvgScore = matrixAvgScore;
     }
     }
 
 

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

@@ -38,7 +38,7 @@ public class DimensionDto implements Serializable, Comparable<DimensionDto> {
     @ApiModelProperty(value = "换算分数")
     @ApiModelProperty(value = "换算分数")
     private Double dimensionMatrixScore = 0.0d;
     private Double dimensionMatrixScore = 0.0d;
 
 
-    @ApiModelProperty(value = "换算分")
+    @ApiModelProperty(value = "换算平均分")
     private Double dimensionMatrixAvgScore = 0.0d;
     private Double dimensionMatrixAvgScore = 0.0d;
 
 
     public DimensionDto() {
     public DimensionDto() {

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

@@ -15,11 +15,8 @@ import java.util.List;
  */
  */
 public class ReportCourseEvaluationResultDto implements Serializable {
 public class ReportCourseEvaluationResultDto implements Serializable {
 
 
-    @ApiModelProperty(value = "课程总目标")
-    private String target;
-
-    @ApiModelProperty(value = "课程目标达成评价值")
-    private BigDecimal targetValue = new BigDecimal(0);
+    @ApiModelProperty(value = "课程目标总达成评价值")
+    private BigDecimal targetEvaluationSumValue = new BigDecimal(0);
 
 
     @ApiModelProperty(value = "课程目标集合")
     @ApiModelProperty(value = "课程目标集合")
     private List<CourseTargetWebDto> targetList;
     private List<CourseTargetWebDto> targetList;
@@ -28,9 +25,8 @@ public class ReportCourseEvaluationResultDto implements Serializable {
 
 
     }
     }
 
 
-    public ReportCourseEvaluationResultDto(String target, BigDecimal targetValue, List<CourseTargetWebDto> targetList) {
-        this.target = target;
-        this.targetValue = targetValue;
+    public ReportCourseEvaluationResultDto(BigDecimal targetEvaluationSumValue, List<CourseTargetWebDto> targetList) {
+        this.targetEvaluationSumValue = targetEvaluationSumValue;
         this.targetList = targetList;
         this.targetList = targetList;
     }
     }
 
 
@@ -38,20 +34,12 @@ public class ReportCourseEvaluationResultDto implements Serializable {
         this.targetList = targetList;
         this.targetList = targetList;
     }
     }
 
 
-    public String getTarget() {
-        return target;
-    }
-
-    public void setTarget(String target) {
-        this.target = target;
-    }
-
-    public BigDecimal getTargetValue() {
-        return targetValue;
+    public BigDecimal getTargetEvaluationSumValue() {
+        return targetEvaluationSumValue;
     }
     }
 
 
-    public void setTargetValue(BigDecimal targetValue) {
-        this.targetValue = targetValue;
+    public void setTargetEvaluationSumValue(BigDecimal targetEvaluationSumValue) {
+        this.targetEvaluationSumValue = targetEvaluationSumValue;
     }
     }
 
 
     public List<CourseTargetWebDto> getTargetList() {
     public List<CourseTargetWebDto> getTargetList() {

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

@@ -40,6 +40,9 @@ public class ReportEvaluationDto implements Serializable, Comparable<ReportEvalu
     @ApiModelProperty(value = "目标分值")
     @ApiModelProperty(value = "目标分值")
     private BigDecimal targetScore = new BigDecimal(0);
     private BigDecimal targetScore = new BigDecimal(0);
 
 
+    @ApiModelProperty(value = "换算平均分")
+    private Double targetAvgScore = 0.0d;
+
     public ReportEvaluationDto() {
     public ReportEvaluationDto() {
 
 
     }
     }
@@ -52,6 +55,14 @@ public class ReportEvaluationDto implements Serializable, Comparable<ReportEvalu
         this.targetScore = courseWeightDetailDto.getTargetScore();
         this.targetScore = courseWeightDetailDto.getTargetScore();
     }
     }
 
 
+    public Double getTargetAvgScore() {
+        return targetAvgScore;
+    }
+
+    public void setTargetAvgScore(Double targetAvgScore) {
+        this.targetAvgScore = targetAvgScore;
+    }
+
     public Long getTargetId() {
     public Long getTargetId() {
         return targetId;
         return targetId;
     }
     }

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

@@ -55,8 +55,8 @@ public class ReportExamStudentTargetDto implements Serializable, Comparable<Repo
         this.targetId = courseTargetWordDto.getTargetId();
         this.targetId = courseTargetWordDto.getTargetId();
         this.targetName = courseTargetWordDto.getTargetName();
         this.targetName = courseTargetWordDto.getTargetName();
         this.graduationRequirement = courseTargetWordDto.getGraduationRequirement();
         this.graduationRequirement = courseTargetWordDto.getGraduationRequirement();
-        this.targetSumWeight = courseTargetWordDto.getTargetWeight();
-        this.targetSumScore = courseTargetWordDto.getTargetScore();
+        this.targetSumWeight = courseTargetWordDto.getTargetSumWeight();
+        this.targetSumScore = courseTargetWordDto.getTargetSumScore();
         this.finalScore = finalScore;
         this.finalScore = finalScore;
         this.usualScore = usualScore;
         this.usualScore = usualScore;
     }
     }

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

@@ -39,12 +39,13 @@ public interface TRBasicInfoService extends IService<TRBasicInfo> {
     public Map<String, Object> getReportCalculateParams(TRBasicInfo trBasicInfo, List<PaperStructResult> paperStructResultList);
     public Map<String, Object> getReportCalculateParams(TRBasicInfo trBasicInfo, List<PaperStructResult> paperStructResultList);
 
 
     /**
     /**
-     * 计算课程达成度考生明细
+     * 计算课程考核成绩评价结果
      *
      *
+     * @param trBasicInfo
      * @param paramsMap
      * @param paramsMap
      * @return
      * @return
      */
      */
-    public ReportCourseEvaluationResultDto reportCalculateCourseEvaluationResult(Map<String, Object> paramsMap);
+    public ReportCourseEvaluationResultDto reportCalculateCourseEvaluationResult(TRBasicInfo trBasicInfo, Map<String, Object> paramsMap);
 
 
     /**
     /**
      * 获取报告
      * 获取报告

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

@@ -13,6 +13,7 @@ import com.qmth.distributed.print.business.bean.result.FinalScoreResult;
 import com.qmth.distributed.print.business.bean.result.report.PaperStructResult;
 import com.qmth.distributed.print.business.bean.result.report.PaperStructResult;
 import com.qmth.distributed.print.business.entity.TCPaperStruct;
 import com.qmth.distributed.print.business.entity.TCPaperStruct;
 import com.qmth.distributed.print.business.entity.TRBasicInfo;
 import com.qmth.distributed.print.business.entity.TRBasicInfo;
+import com.qmth.distributed.print.business.entity.TRExamStudent;
 import com.qmth.distributed.print.business.mapper.TRBasicInfoMapper;
 import com.qmth.distributed.print.business.mapper.TRBasicInfoMapper;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.distributed.print.business.service.*;
 import com.qmth.teachcloud.common.entity.BasicSemester;
 import com.qmth.teachcloud.common.entity.BasicSemester;
@@ -208,56 +209,15 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                             List<DimensionDto> dimensionDtoList = courseTargetDto.getDimensionList();
                             List<DimensionDto> dimensionDtoList = courseTargetDto.getDimensionList();
                             for (DimensionDto dimensionDto : dimensionDtoList) {
                             for (DimensionDto dimensionDto : dimensionDtoList) {
                                 //考生知识点
                                 //考生知识点
-                                if (!finalScoreExamStudentDimensionMap.containsKey(finalScoreResult.getStudentCode())) {
-                                    Map<Long, Map<Long, DimensionDto>> map = new LinkedHashMap<>();
-                                    Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
-                                    dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
-                                    map.put(courseTargetDto.getTargetId(), dimensionMap);
-                                    finalScoreExamStudentDimensionMap.put(finalScoreResult.getStudentCode(), map);
-                                } else {
-                                    Map<Long, Map<Long, DimensionDto>> map = finalScoreExamStudentDimensionMap.get(finalScoreResult.getStudentCode());
-                                    if (!map.containsKey(courseTargetDto.getTargetId())) {
-                                        Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
-                                        dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
-                                        map.put(courseTargetDto.getTargetId(), dimensionMap);
-                                    } else {
-                                        Map<Long, DimensionDto> dimensionMap = map.get(courseTargetDto.getTargetId());
-                                        if (!dimensionMap.containsKey(dimensionDto.getDimensionId())) {
-                                            dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
-                                        } else {
-                                            DimensionDto dimensionDtoTemp = dimensionMap.get(dimensionDto.getDimensionId());
-                                            dimensionDtoTemp.setDimensionScore(dimensionDtoTemp.getDimensionScore().doubleValue() + score.doubleValue());
-                                        }
-                                        map.put(courseTargetDto.getTargetId(), dimensionMap);
-                                    }
-                                    finalScoreExamStudentDimensionMap.put(finalScoreResult.getStudentCode(), map);
-                                }
+                                this.calculateFinalScoreByExamStudent(finalScoreExamStudentDimensionMap,
+                                        finalScoreResult, courseTargetDto, dimensionDto, score);
                             }
                             }
                         }
                         }
                     }
                     }
                 }
                 }
 
 
                 //解析平时作业分数图
                 //解析平时作业分数图
-                JSONArray usualScoreJsonArray = JSONArray.parseArray(finalScoreResult.getUsualScore());
-                Map<Long, List<ReportExamStudentUsualScoreObjDto>> scoreListMap = new LinkedHashMap<>();
-                ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(scoreListMap);
-                for (int i = 0; i < usualScoreJsonArray.size(); i++) {
-                    JSONObject jsonObject = usualScoreJsonArray.getJSONObject(i);
-                    if (usualScoreMap.containsKey(jsonObject.get("name"))) {
-                        ReportEvaluationDto reportEvaluationDto = usualScoreMap.get(jsonObject.get("name").toString());
-                        List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = !scoreListMap.containsKey(reportEvaluationDto.getTargetId()) ? new ArrayList<>() : scoreListMap.get(reportEvaluationDto.getTargetId());
-                        //计算平时作业转换
-                        Double score = Objects.nonNull(jsonObject.get("score")) ? Double.parseDouble(jsonObject.get("score").toString()) : 0d;
-                        CourseTargetWordDto courseTargetWordDto = targetWordMap.get(reportEvaluationDto.getTargetId());
-                        UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
-                        Double matrixScore = new BigDecimal(score).divide(bigDecimal, 2, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
-                        reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumWeight(), usualScoreWordDto.getUsualScoreTargetSumScore()));
-                        scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
-                    }
-                }
-                scoreListMap.forEach((k, v) -> {
-                    Collections.sort(v);
-                });
+                ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = this.calculateUsualScoreByExamStudent(finalScoreResult, usualScoreMap, targetWordMap);
                 finalScoreResult.setUsualScoreDto(reportExamStudentUsualScoreDto);
                 finalScoreResult.setUsualScoreDto(reportExamStudentUsualScoreDto);
                 examStudentList.add(new ReportExamStudentDto(finalScoreResult));
                 examStudentList.add(new ReportExamStudentDto(finalScoreResult));
             }
             }
@@ -283,65 +243,62 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
     }
     }
 
 
     /**
     /**
-     * 计算课程达成度考生明细
+     * 计算课程考核成绩评价结果
      *
      *
-     * @param paramsMap
+     * @param trBasicInfo
      * @return
      * @return
      */
      */
     @Override
     @Override
-    public ReportCourseEvaluationResultDto reportCalculateCourseEvaluationResult(Map<String, Object> paramsMap) {
+    public ReportCourseEvaluationResultDto reportCalculateCourseEvaluationResult(TRBasicInfo trBasicInfo, Map<String, Object> paramsMap) {
         ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = null;
         ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = null;
-        List<PaperStructResult> paperStructResultList = (List<PaperStructResult>) paramsMap.get("paperStructResultList");
-        Map<Long, CourseTargetWordDto> targetMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetMap");
-        Map<String, ReportEvaluationDto> usualScoreOverviewDtoMap = (Map<String, ReportEvaluationDto>) paramsMap.get("usualScoreOverviewDtoMap");
-        Map<Long, FinalScoreOverviewDto> finalScoreOverviewDtoMap = (Map<Long, FinalScoreOverviewDto>) paramsMap.get("finalScoreOverviewDtoMap");
-
-        //TODO 课程考核成绩评价结果-待曹子轩补充目标/评价方式数据,有测试数据
-        if (!CollectionUtils.isEmpty(paperStructResultList) && !CollectionUtils.isEmpty(targetMap)) {
-            List<CourseTargetWebDto> targetList = new ArrayList<>(targetMap.size());
-            BigDecimal targetValue = new BigDecimal(0);
-            targetMap.forEach((k, v) -> {
-                Double evaluationAvg = 0.0d, evaluationScore = 0.0d;
-                BigDecimal evaluationWeight = new BigDecimal(0);
-                List<ReportEvaluationDto> reportEvaluationDtoList = new ArrayList<>();
-                if (!CollectionUtils.isEmpty(usualScoreOverviewDtoMap)) {
-                    ReportEvaluationDto reportEvaluationDto = usualScoreOverviewDtoMap.get("作业" + k);
-//                    ReportEvaluationDto reportEvaluationDto = new ReportEvaluationDto(usualScoreOverviewDto.getEvaluationId(), usualScoreOverviewDto.getEvaluation(), usualScoreOverviewDto.getEvaluationDesc(), new BigDecimal(30), new BigDecimal(40), 0.0d);
-//                    reportEvaluationDtoList.add(reportEvaluationDto);
-
-                    //课程目标-平时作业达成度计算
-//                    if (Objects.nonNull(reportEvaluationDto.getWeight()) && reportEvaluationDto.getWeight().doubleValue() > 0d) {
-//                        evaluationAvg = evaluationAvg.doubleValue() + reportEvaluationDto.getAvg();
-//                        evaluationScore = evaluationScore.doubleValue() + reportEvaluationDto.getScore();
-//                        evaluationWeight = evaluationWeight.add(reportEvaluationDto.getWeight());
-//                        Map<String, BigDecimal> usualScoreWeight = v.getUsualScoreWeight();
-//                        usualScoreWeight = CollectionUtils.isEmpty(usualScoreWeight) ? new LinkedHashMap<>() : usualScoreWeight;
-//                        usualScoreWeight.put(reportEvaluationDto.getName(), reportEvaluationDto.getWeight().add(new BigDecimal(new Random().nextInt(10))));
-//                        v.setUsualScoreWeight(usualScoreWeight);
-//                    }
-                }
-                if (!CollectionUtils.isEmpty(finalScoreOverviewDtoMap)) {
-                    FinalScoreOverviewDto finalScoreOverviewDto = finalScoreOverviewDtoMap.get(k);
-//                    ReportEvaluationDto reportEvaluationDto1 = new ReportEvaluationDto(finalScoreOverviewDto.getEvaluationId(), finalScoreOverviewDto.getEvaluation(), finalScoreOverviewDto.getEvaluationDesc(), new BigDecimal(70), new BigDecimal(60), 0.0d);
-//                    reportEvaluationDtoList.add(reportEvaluationDto1);
-
-                    //课程目标-期末成绩达成度计算
-//                    if (Objects.nonNull(reportEvaluationDto1.getWeight()) && reportEvaluationDto1.getWeight().doubleValue() > 0d) {
-//                        evaluationAvg = evaluationAvg.doubleValue() + reportEvaluationDto1.getAvg();
-//                        evaluationScore = evaluationScore.doubleValue() + reportEvaluationDto1.getScore();
-//                        evaluationWeight = evaluationWeight.add(reportEvaluationDto1.getWeight());
-//                        v.setFinalScoreWeight(reportEvaluationDto1.getWeight().subtract(new BigDecimal(new Random().nextInt(10))));
-//                    }
+        List<TRExamStudent> trExamStudentList = trExamStudentService.list(new QueryWrapper<TRExamStudent>().lambda().eq(TRExamStudent::getrBasicInfoId, trBasicInfo.getId()));
+        if (!CollectionUtils.isEmpty(trExamStudentList)) {
+            BigDecimal targetEvaluationSumValue = new BigDecimal(0);
+            Map<Long, CourseTargetWebDto> targetWebMap = (Map<Long, CourseTargetWebDto>) paramsMap.get("targetWebMap");
+            Map<Long, CourseTargetWordDto> targetWordMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetWordMap");
+            TRExamStudent targetAvg = trExamStudentList.get(trExamStudentList.size() - 2);//平均分
+            if (Objects.nonNull(targetAvg) && Objects.equals(targetAvg.getName(), "平均分") && Objects.nonNull(targetAvg.getResultDetail())) {
+                List<ReportExamStudentTargetDto> reportExamStudentTargetAvgDtoList = GsonUtil.fromJson(targetAvg.getResultDetail(), new TypeToken<List<ReportExamStudentTargetDto>>() {
+                }.getType());
+                for (ReportExamStudentTargetDto r : reportExamStudentTargetAvgDtoList) {
+                    Double targetAvgSumScore = 0.0d;//平均分总和
+                    BigDecimal targetSumScore = new BigDecimal(0);//目标分总和
+                    if (targetWebMap.containsKey(r.getTargetId())) {
+                        CourseTargetWebDto courseTargetWebDto = targetWebMap.get(r.getTargetId());
+                        CourseTargetWordDto courseTargetWordDto = targetWordMap.get(r.getTargetId());
+
+                        List<ReportEvaluationDto> reportEvaluationDtoList = courseTargetWebDto.getEvaluationList();
+                        Map<Long, ReportEvaluationDto> reportEvaluationDtoMap = reportEvaluationDtoList.stream().collect(Collectors.toMap(ReportEvaluationDto::getEvaluationId, Function.identity(), (dto1, dto2) -> dto1));
+
+                        ReportExamStudentFinalScoreDto reportExamStudentFinalScoreDto = r.getFinalScore();
+                        ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = r.getUsualScore();
+
+                        //期末成绩换算
+                        ReportEvaluationDto reportEvaluationDto = reportEvaluationDtoMap.get(reportExamStudentFinalScoreDto.getEvaluationId());
+                        reportEvaluationDto.setTargetAvgScore(reportExamStudentFinalScoreDto.getMatrixAvgScore());
+                        targetAvgSumScore = targetAvgSumScore + reportEvaluationDto.getTargetAvgScore();
+                        targetSumScore = targetSumScore.add(reportEvaluationDto.getTargetScore());
+
+                        //平时作业换算
+                        List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = reportExamStudentUsualScoreDto.getScoreList();
+                        for (ReportExamStudentUsualScoreObjDto reportExamStudentUsualScoreObjDto : reportExamStudentUsualScoreObjDtoList) {
+                            reportEvaluationDto = reportEvaluationDtoMap.get(reportExamStudentUsualScoreObjDto.getEvaluationId());
+                            reportEvaluationDto.setTargetAvgScore(reportExamStudentUsualScoreObjDto.getMatrixAvgScore());
+                            targetAvgSumScore = targetAvgSumScore + reportEvaluationDto.getTargetAvgScore();
+                            targetSumScore = targetSumScore.add(reportEvaluationDto.getTargetScore());
+                        }
+
+                        //计算目标达成度
+                        BigDecimal targetEvaluationValue = new BigDecimal(targetAvgSumScore).divide(targetSumScore, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
+                        courseTargetWebDto.setEvaluationValue(targetEvaluationValue);
+                        targetEvaluationSumValue = targetEvaluationSumValue.add(targetEvaluationValue);
+
+                        courseTargetWordDto.setEvaluationValue(targetEvaluationValue);
+                    }
                 }
                 }
-                Double evaluationValue = new BigDecimal(evaluationAvg).add(new BigDecimal(evaluationScore)).divide(evaluationWeight, 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
-
-//                CourseTargetDto courseTargetDto = new CourseTargetDto(k, v.getTargetName(), k, "评价方式" + k, "评价方式描述" + k, reportEvaluationDtoList, evaluationValue);
-//                targetList.add(courseTargetDto);
-//                v.updateInfo(courseTargetDto);
-//                targetValue.set(new BigDecimal(targetValue.get()).add(new BigDecimal(courseTargetDto.getEvaluationValue())).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
-            });
-            Collections.sort(targetList);
-            reportCourseEvaluationResultDto = new ReportCourseEvaluationResultDto("测试课程总目标1", targetValue, targetList);
+                reportCourseEvaluationResultDto = new ReportCourseEvaluationResultDto(targetEvaluationSumValue, new ArrayList<>(targetWebMap.values()));
+            }
+            paramsMap.put("targetWebMap", targetWebMap);
         }
         }
         return reportCourseEvaluationResultDto;
         return reportCourseEvaluationResultDto;
     }
     }
@@ -378,26 +335,31 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         List<PaperStructResult> paperStructResultList = GsonUtil.fromJson(tcPaperStruct.getPaperStruct(), new TypeToken<List<PaperStructResult>>() {
         List<PaperStructResult> paperStructResultList = GsonUtil.fromJson(tcPaperStruct.getPaperStruct(), new TypeToken<List<PaperStructResult>>() {
         }.getType());
         }.getType());
 
 
+        //课程目标考核分布
         ReportCourseEvaluationSpreadDto reportCourseEvaluationSpreadDto = new ReportCourseEvaluationSpreadDto(paperStructResultList);
         ReportCourseEvaluationSpreadDto reportCourseEvaluationSpreadDto = new ReportCourseEvaluationSpreadDto(paperStructResultList);
         if (Objects.nonNull(reportCourseEvaluationSpreadDto)) {
         if (Objects.nonNull(reportCourseEvaluationSpreadDto)) {
-            //课程目标考核分布-分数图
             reportCourseEvaluationSpreadDto.setScoreList(trBasicInfoService.getScoreList(trBasicInfo, markPaper));
             reportCourseEvaluationSpreadDto.setScoreList(trBasicInfoService.getScoreList(trBasicInfo, markPaper));
             trBasicInfo.setCourseEvaluationSpread(JacksonUtil.parseJson(reportCourseEvaluationSpreadDto));
             trBasicInfo.setCourseEvaluationSpread(JacksonUtil.parseJson(reportCourseEvaluationSpreadDto));
             trBasicInfo.getReportResult().setCourseEvaluationSpreadInfo(reportCourseEvaluationSpreadDto);
             trBasicInfo.getReportResult().setCourseEvaluationSpreadInfo(reportCourseEvaluationSpreadDto);
         }
         }
 
 
         Map<String, Object> paramsMap = trBasicInfoService.getReportCalculateParams(trBasicInfo, paperStructResultList);
         Map<String, Object> paramsMap = trBasicInfoService.getReportCalculateParams(trBasicInfo, paperStructResultList);
-//        ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = trBasicInfoService.reportCalculateCourseEvaluationResult(paramsMap);
-//        if (Objects.nonNull(reportCourseEvaluationResultDto)) {
-//            trBasicInfo.setCourseEvaluationResult(JacksonUtil.parseJson(reportCourseEvaluationResultDto));
-//            trBasicInfo.getReportResult().setCourseEvaluationResultInfo(reportCourseEvaluationResultDto);
-//        }
+
         //课程目标达成评价明细结果-考生集合
         //课程目标达成评价明细结果-考生集合
         List<ReportExamStudentDto> examStudentNewList = trExamStudentService.getExamStudentReportDetail(trBasicInfo, paramsMap);
         List<ReportExamStudentDto> examStudentNewList = trExamStudentService.getExamStudentReportDetail(trBasicInfo, paramsMap);
         ReportCourseEvaluationResultDetailDto reportCourseEvaluationResultDetailDto = new ReportCourseEvaluationResultDetailDto(examStudentNewList);
         ReportCourseEvaluationResultDetailDto reportCourseEvaluationResultDetailDto = new ReportCourseEvaluationResultDetailDto(examStudentNewList);
         if (Objects.nonNull(reportCourseEvaluationResultDetailDto)) {
         if (Objects.nonNull(reportCourseEvaluationResultDetailDto)) {
             trBasicInfo.getReportResult().setCourseEvaluationResultDetailInfo(reportCourseEvaluationResultDetailDto);
             trBasicInfo.getReportResult().setCourseEvaluationResultDetailInfo(reportCourseEvaluationResultDetailDto);
         }
         }
+
+        //课程考核成绩评价结果
+        ReportCourseEvaluationResultDto reportCourseEvaluationResultDto = trBasicInfoService.reportCalculateCourseEvaluationResult(trBasicInfo, paramsMap);
+        if (Objects.nonNull(reportCourseEvaluationResultDto)) {
+            trBasicInfo.setCourseEvaluationResult(JacksonUtil.parseJson(reportCourseEvaluationResultDto));
+            trBasicInfo.getReportResult().setCourseEvaluationResultInfo(reportCourseEvaluationResultDto);
+        }
+
+        //存储数据
         if (Objects.nonNull(paramsMap.get("targetWordMap"))) {
         if (Objects.nonNull(paramsMap.get("targetWordMap"))) {
             Map<Long, CourseTargetWordDto> targetWordMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetWordMap");
             Map<Long, CourseTargetWordDto> targetWordMap = (Map<Long, CourseTargetWordDto>) paramsMap.get("targetWordMap");
             List<CourseTargetWordDto> courseTargetWordDtoList = new ArrayList<>(targetWordMap.values());
             List<CourseTargetWordDto> courseTargetWordDtoList = new ArrayList<>(targetWordMap.values());
@@ -457,6 +419,81 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         }
         }
     }
     }
 
 
+    /**
+     * 计算考生期末成绩知识点纬度
+     *
+     * @param finalScoreExamStudentDimensionMap
+     * @param finalScoreResult
+     * @param courseTargetDto
+     * @param dimensionDto
+     * @param score
+     */
+    protected void calculateFinalScoreByExamStudent(Map<String, Map<Long, Map<Long, DimensionDto>>> finalScoreExamStudentDimensionMap,
+                                                    FinalScoreResult finalScoreResult,
+                                                    CourseTargetWebDto courseTargetDto,
+                                                    DimensionDto dimensionDto,
+                                                    Double score) {
+        if (!finalScoreExamStudentDimensionMap.containsKey(finalScoreResult.getStudentCode())) {
+            Map<Long, Map<Long, DimensionDto>> map = new LinkedHashMap<>();
+            Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
+            dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
+            map.put(courseTargetDto.getTargetId(), dimensionMap);
+            finalScoreExamStudentDimensionMap.put(finalScoreResult.getStudentCode(), map);
+        } else {
+            Map<Long, Map<Long, DimensionDto>> map = finalScoreExamStudentDimensionMap.get(finalScoreResult.getStudentCode());
+            if (!map.containsKey(courseTargetDto.getTargetId())) {
+                Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
+                dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
+                map.put(courseTargetDto.getTargetId(), dimensionMap);
+            } else {
+                Map<Long, DimensionDto> dimensionMap = map.get(courseTargetDto.getTargetId());
+                if (!dimensionMap.containsKey(dimensionDto.getDimensionId())) {
+                    dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
+                } else {
+                    DimensionDto dimensionDtoTemp = dimensionMap.get(dimensionDto.getDimensionId());
+                    dimensionDtoTemp.setDimensionScore(dimensionDtoTemp.getDimensionScore().doubleValue() + score.doubleValue());
+                }
+                map.put(courseTargetDto.getTargetId(), dimensionMap);
+            }
+            finalScoreExamStudentDimensionMap.put(finalScoreResult.getStudentCode(), map);
+        }
+    }
+
+    /**
+     * 计算考生平时成绩
+     *
+     * @param finalScoreResult
+     * @param usualScoreMap
+     * @param targetWordMap
+     * @return
+     */
+    protected ReportExamStudentUsualScoreDto calculateUsualScoreByExamStudent(FinalScoreResult finalScoreResult,
+                                                                              Map<String, ReportEvaluationDto> usualScoreMap,
+                                                                              Map<Long, CourseTargetWordDto> targetWordMap) {
+        BigDecimal bigDecimal = new BigDecimal(100);
+        JSONArray usualScoreJsonArray = JSONArray.parseArray(finalScoreResult.getUsualScore());
+        Map<Long, List<ReportExamStudentUsualScoreObjDto>> scoreListMap = new LinkedHashMap<>();
+        ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = new ReportExamStudentUsualScoreDto(scoreListMap);
+        for (int i = 0; i < usualScoreJsonArray.size(); i++) {
+            JSONObject jsonObject = usualScoreJsonArray.getJSONObject(i);
+            if (usualScoreMap.containsKey(jsonObject.get("name"))) {
+                ReportEvaluationDto reportEvaluationDto = usualScoreMap.get(jsonObject.get("name").toString());
+                List<ReportExamStudentUsualScoreObjDto> reportExamStudentUsualScoreObjDtoList = !scoreListMap.containsKey(reportEvaluationDto.getTargetId()) ? new ArrayList<>() : scoreListMap.get(reportEvaluationDto.getTargetId());
+                //计算平时作业转换
+                Double score = Objects.nonNull(jsonObject.get("score")) ? Double.parseDouble(jsonObject.get("score").toString()) : 0d;
+                CourseTargetWordDto courseTargetWordDto = targetWordMap.get(reportEvaluationDto.getTargetId());
+                UsualScoreWordDto usualScoreWordDto = courseTargetWordDto.getUsualScoreDto();
+                Double matrixScore = new BigDecimal(score).divide(bigDecimal, 2, BigDecimal.ROUND_HALF_UP).multiply(reportEvaluationDto.getTargetScore()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
+                reportExamStudentUsualScoreObjDtoList.add(new ReportExamStudentUsualScoreObjDto(reportEvaluationDto.getTargetId(), reportEvaluationDto, score, matrixScore, usualScoreWordDto.getUsualScoreTargetSumWeight(), usualScoreWordDto.getUsualScoreTargetSumScore()));
+                scoreListMap.put(reportEvaluationDto.getTargetId(), reportExamStudentUsualScoreObjDtoList);
+            }
+        }
+        scoreListMap.forEach((k, v) -> {
+            Collections.sort(v);
+        });
+        return reportExamStudentUsualScoreDto;
+    }
+
     /**
     /**
      * 计算分数比率
      * 计算分数比率
      *
      *