wangliang 1 рік тому
батько
коміт
f916d3a602

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

@@ -49,6 +49,12 @@ public class CourseTargetWebDto implements Serializable, Comparable<CourseTarget
     @ApiModelProperty(value = "评价方式集合")
     private List<ReportEvaluationDto> evaluationList;
 
+    @ApiModelProperty(value = "知识点卷面总分")
+    private Double dimensionScoreSum = 0.0d;
+
+    @ApiModelProperty(value = "知识点集合")
+    private String dimensionPoint;
+
     public CourseTargetWebDto() {
 
     }
@@ -62,6 +68,22 @@ public class CourseTargetWebDto implements Serializable, Comparable<CourseTarget
         this.targetSumScore = courseWeightDto.getTotalScore();
     }
 
+    public String getDimensionPoint() {
+        return dimensionPoint;
+    }
+
+    public void setDimensionPoint(String dimensionPoint) {
+        this.dimensionPoint = dimensionPoint;
+    }
+
+    public Double getDimensionScoreSum() {
+        return dimensionScoreSum;
+    }
+
+    public void setDimensionScoreSum(Double dimensionScoreSum) {
+        this.dimensionScoreSum = dimensionScoreSum;
+    }
+
     public String getGraduationRequirementPoint() {
         return graduationRequirementPoint;
     }

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

@@ -51,6 +51,12 @@ public class CourseTargetWordDto implements Serializable, Comparable<CourseTarge
     @ApiModelProperty(value = "期末成绩信息")
     private FinalScoreWordDto finalScoreDto;
 
+    @ApiModelProperty(value = "知识点卷面总分")
+    private Double dimensionScoreSum = 0.0d;
+
+    @ApiModelProperty(value = "知识点集合")
+    private String dimensionPoint;
+
     public CourseTargetWordDto() {
 
     }
@@ -64,6 +70,22 @@ public class CourseTargetWordDto implements Serializable, Comparable<CourseTarge
         this.targetSumWeight = courseWeightDto.getTotalWeight();
     }
 
+    public String getDimensionPoint() {
+        return dimensionPoint;
+    }
+
+    public void setDimensionPoint(String dimensionPoint) {
+        this.dimensionPoint = dimensionPoint;
+    }
+
+    public Double getDimensionScoreSum() {
+        return dimensionScoreSum;
+    }
+
+    public void setDimensionScoreSum(Double dimensionScoreSum) {
+        this.dimensionScoreSum = dimensionScoreSum;
+    }
+
     public BigDecimal getEvaluationValue() {
         return evaluationValue;
     }

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

@@ -189,7 +189,8 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
             finalScoreResultMap = finalScoreResultList.stream().collect(Collectors.toMap(FinalScoreResult::getStudentCode, Function.identity(), (dto1, dto2) -> dto1));
 
             examStudentList = new ArrayList<>(finalScoreResultList.size());
-            for (FinalScoreResult finalScoreResult : finalScoreResultList) {
+            for (int i = 0; i < finalScoreResultList.size(); i++) {
+                FinalScoreResult finalScoreResult = finalScoreResultList.get(i);
                 //解析期末成绩知识点
                 List<TCFinalScoreDto> tcFinalScoreDtoList = GsonUtil.fromJson(finalScoreResult.getFinalScoreDetail(), new TypeToken<List<TCFinalScoreDto>>() {
                 }.getType());
@@ -205,15 +206,21 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                                 //考生知识点
                                 this.calculateFinalScoreByExamStudent(finalScoreExamStudentDimensionMap,
                                         finalScoreResult, courseTargetDto, dimensionDto, score);
-                                //目标-考生知识点去重
-                                if (!targetDimensionMap.containsKey(courseTargetDto.getTargetId())) {
-                                    Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
-                                    dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
-                                    targetDimensionMap.put(courseTargetDto.getTargetId(), dimensionMap);
-                                } else {
-                                    Map<Long, DimensionDto> dimensionMap = targetDimensionMap.get(courseTargetDto.getTargetId());
-                                    if (!dimensionMap.containsKey(dimensionDto.getDimensionId())) {
-                                        dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, score));
+                                if (i == 0) {//计算各知识点原始卷面分总和
+                                    Double paperScore = paperStructResult.getScore();
+                                    //目标-考生知识点去重
+                                    if (!targetDimensionMap.containsKey(courseTargetDto.getTargetId())) {
+                                        Map<Long, DimensionDto> dimensionMap = new LinkedHashMap<>();
+                                        dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, paperScore));
+                                        targetDimensionMap.put(courseTargetDto.getTargetId(), dimensionMap);
+                                    } else {
+                                        Map<Long, DimensionDto> dimensionMap = targetDimensionMap.get(courseTargetDto.getTargetId());
+                                        if (!dimensionMap.containsKey(dimensionDto.getDimensionId())) {
+                                            dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, paperScore));
+                                        } else {
+                                            DimensionDto dimensionDtoTemp = dimensionMap.get(dimensionDto.getDimensionId());
+                                            dimensionMap.put(dimensionDto.getDimensionId(), new DimensionDto(courseTargetDto.getTargetId(), dimensionDto, dimensionDtoTemp.getDimensionScore().doubleValue() + paperScore.doubleValue()));
+                                        }
                                         targetDimensionMap.put(courseTargetDto.getTargetId(), dimensionMap);
                                     }
                                 }
@@ -223,11 +230,20 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                 }
 
                 Map<Long, CourseTargetWordDto> finalTargetWordMap = targetWordMap;
+                Map<Long, CourseTargetWebDto> finalTargetWebMap = targetWebMap;
                 targetDimensionMap.forEach((k, v) -> {
                     List<DimensionDto> dimensionDtoList = new ArrayList<>(v.values());
                     Collections.sort(dimensionDtoList);
+                    Double dimensionScoreSum = dimensionDtoList.stream().mapToDouble(DimensionDto::getDimensionScore).sum();
+                    List<String> dimensionDtoNameList = dimensionDtoList.stream().map(s -> s.getDimensionName()).collect(Collectors.toList());
                     if (finalTargetWordMap.containsKey(k)) {
                         finalTargetWordMap.get(k).getFinalScoreDto().setDimensionList(dimensionDtoList);
+                        finalTargetWordMap.get(k).setDimensionScoreSum(dimensionScoreSum);
+                        finalTargetWordMap.get(k).setDimensionPoint(String.join(",", dimensionDtoNameList));
+                    }
+                    if (finalTargetWebMap.containsKey(k)) {
+                        finalTargetWebMap.get(k).setDimensionScoreSum(dimensionScoreSum);
+                        finalTargetWebMap.get(k).setDimensionPoint(String.join(",", dimensionDtoNameList));
                     }
                     Map<Long, Map<Long, DimensionDto>> mapExamStudent1 = finalScoreExamStudentDimensionMap.get(finalScoreResult.getStudentCode());
                     Map<Long, DimensionDto> mapExamStudent2 = mapExamStudent1.get(k);
@@ -517,17 +533,18 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         RowRenderData header4_1 = Rows.of("序号", "考核项目", "考核内容所涵盖的知识单元", "目标分值", "对应的课程目标").rowStyle(this.getHeadRowStyle()).create();
         List<CourseTargetTableBean4> courseTargetTableBean4List = new ArrayList<>();
         BigDecimal finalScoreSum4 = new BigDecimal(0), finalScoreTargetSumWeight4 = new BigDecimal(0);
-        Integer seq4 = 1;
         for (int i = 0; i < courseTargetWordDtoList.size(); i++) {
             CourseTargetWordDto courseTargetWordDto = courseTargetWordDtoList.get(i);
             FinalScoreWordDto finalScoreWordDto = courseTargetWordDto.getFinalScoreDto();
-            finalScoreSum4 = finalScoreSum4.add(finalScoreWordDto.getFinalScoreTargetSumScore());
+            finalScoreSum4 = finalScoreSum4.add(new BigDecimal(courseTargetWordDto.getDimensionScoreSum()));
             finalScoreTargetSumWeight4 = finalScoreTargetSumWeight4.add(finalScoreWordDto.getFinalScoreSumWeight());
-            List<DimensionDto> dimensionDtoList = courseTargetWordDto.getFinalScoreDto().getDimensionList();
-            for (DimensionDto dimensionDto : dimensionDtoList) {
-                CourseTargetTableBean4 courseTargetTableBean4 = new CourseTargetTableBean4(seq4++, courseTargetWordDto.getGraduationRequirement(), dimensionDto.getDimensionName(), dimensionDto.getDimensionScore(), courseTargetWordDto.getTargetName());
-                courseTargetTableBean4List.add(courseTargetTableBean4);
-            }
+//            List<DimensionDto> dimensionDtoList = courseTargetWordDto.getFinalScoreDto().getDimensionList();
+//            for (DimensionDto dimensionDto : dimensionDtoList) {
+//                CourseTargetTableBean4 courseTargetTableBean4 = new CourseTargetTableBean4(seq4++, courseTargetWordDto.getGraduationRequirement(), dimensionDto.getDimensionName(), dimensionDto.getDimensionScore(), courseTargetWordDto.getTargetName());
+//                courseTargetTableBean4List.add(courseTargetTableBean4);
+//            }
+            CourseTargetTableBean4 courseTargetTableBean4 = new CourseTargetTableBean4((i + 1), courseTargetWordDto.getGraduationRequirement(), courseTargetWordDto.getDimensionPoint(), courseTargetWordDto.getDimensionScoreSum(), courseTargetWordDto.getTargetName());
+            courseTargetTableBean4List.add(courseTargetTableBean4);
         }
         finalScoreTargetSumWeight4 = finalScoreTargetSumWeight4.divide(new BigDecimal(courseTargetWordDtoList.size()), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
         String tableFootTitle4 = "合计${dimensionScoreSum}分,占课程总评成绩的${dimensionSumWeight}%";
@@ -573,7 +590,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
             examStudent_cells_1.add(Cells.of("行政班级").center().create());
             examStudent_cells_2.addAll(examStudent_cells_1);
 
-            Map<Long, Integer> targetUsualScoreSizeMap = new HashMap<>();
+            Map<Long, Integer> targetUsualScoreSizeMap = new LinkedHashMap<>();
             TRExamStudent trExamStudentTemp = trExamStudentList.get(0);
 
             RowRenderData[] rowRenderDataExamStudent = new RowRenderData[trExamStudentList.size() + 2];

+ 0 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TRExamStudentServiceImpl.java

@@ -81,10 +81,6 @@ public class TRExamStudentServiceImpl extends ServiceImpl<TRExamStudentMapper, T
                                 dimensionDto.setDimensionMatrixScore(matrixScore);
                                 dimensionMatrixSumScore = dimensionMatrixSumScore.add(new BigDecimal(matrixScore)).setScale(2, BigDecimal.ROUND_HALF_UP);
                                 reportExamStudentDto.setScore(reportExamStudentDto.getScore() + matrixScore);
-                            }
-                            //如果换算出来的知识点总分超过了期末考试目标分,则
-                            if (courseTargetWordDto.getFinalScoreDto().getFinalScoreTargetSumScore().compareTo(dimensionMatrixSumScore) == -1) {
-
                             }
                             //平时作业总和+累加
                             Double usualMatrixSumScore = scoreObjDtoList.stream().mapToDouble(ReportExamStudentUsualScoreObjDto::getMatrixScore).sum();