Przeglądaj źródła

课程目标达成度统计支持多个课程目标

wangliang 8 miesięcy temu
rodzic
commit
651604c7a8

+ 7 - 2
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/service/TRBasicInfoService.java

@@ -138,9 +138,12 @@ public interface TRBasicInfoService extends IService<TRBasicInfo> {
      * @param finalScatterYMap
      * @param courseSuggestDtoList
      * @param courseTargetWebDtoList
+     * @param examStudentSize
      */
     public void buildCourseTargetColumnDiagram3(LinkedMultiValueMap<Long, Map<String, String>> finalScatterYMap,
-                                                List<CourseSuggestDto> courseSuggestDtoList, List<CourseTargetWebDto> courseTargetWebDtoList);
+                                                List<CourseSuggestDto> courseSuggestDtoList,
+                                                List<CourseTargetWebDto> courseTargetWebDtoList,
+                                                int examStudentSize);
 
     /**
      * 根据考试id/课程编码/试卷编码删除数据
@@ -239,10 +242,12 @@ public interface TRBasicInfoService extends IService<TRBasicInfo> {
      * @param finalScatterYMap
      * @param courseSuggestDtoList
      * @param courseTargetWebDtoList
+     * @param examStudentSize
      */
     public void buildXagyuCourseTargetColumnDiagram1(LinkedMultiValueMap<Long, Map<String, String>> finalScatterYMap,
                                                      List<XagyuCourseSuggestDto> courseSuggestDtoList,
-                                                     List<CourseTargetWebDto> courseTargetWebDtoList);
+                                                     List<CourseTargetWebDto> courseTargetWebDtoList,
+                                                     int examStudentSize);
 
     /**
      * 构建考生成绩

+ 25 - 7
teachcloud-obe/src/main/java/com/qmth/teachcloud/obe/service/impl/TRBasicInfoServiceImpl.java

@@ -8,6 +8,7 @@ import com.deepoove.poi.data.*;
 import com.deepoove.poi.data.style.CellStyle;
 import com.deepoove.poi.data.style.ParagraphStyle;
 import com.deepoove.poi.data.style.RowStyle;
+import com.google.common.collect.ImmutableMap;
 import com.google.gson.reflect.TypeToken;
 import com.qmth.distributed.print.business.bean.dto.ExamStudentDto;
 import com.qmth.distributed.print.business.service.BasicExamStudentService;
@@ -693,7 +694,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
             courseReportBean.setCourseTargetTable6(this.buildWordTable6(map));
             courseReportBean.setCourseTargetColumnDiagram1(this.buildCourseTargetColumnDiagram1(map));
             courseReportBean.setCourseTargetColumnDiagram2(this.buildCourseTargetColumnDiagram2(map));
-            this.buildCourseTargetColumnDiagram3(finalScatterYMap, courseReportBean.getCourseBasicBean().getCourseSuggestList(), courseTargetWebDtoList);
+            this.buildCourseTargetColumnDiagram3(finalScatterYMap, courseReportBean.getCourseBasicBean().getCourseSuggestList(), courseTargetWebDtoList, scoreList.size());
         }
         return tableRenderDataExamStudent;
     }
@@ -807,16 +808,24 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
      * @param finalScatterYMap
      * @param courseSuggestDtoList
      * @param courseTargetWebDtoList
+     * @param examStudentSize
      */
     @Override
     public void buildCourseTargetColumnDiagram3(LinkedMultiValueMap<Long, Map<String, String>> finalScatterYMap,
                                                 List<CourseSuggestDto> courseSuggestDtoList,
-                                                List<CourseTargetWebDto> courseTargetWebDtoList) {
+                                                List<CourseTargetWebDto> courseTargetWebDtoList,
+                                                int examStudentSize) {
         Map<Long, CourseTargetWebDto> courseTargetWebDtoMap = courseTargetWebDtoList.stream().collect(Collectors.toMap(CourseTargetWebDto::getTargetId, Function.identity(), (dto1, dto2) -> dto1));
         for (CourseSuggestDto courseSuggestDto : courseSuggestDtoList) {
             CourseTargetWebDto courseTargetWebDto = courseTargetWebDtoMap.get(courseSuggestDto.getTargetId());
             List<Map<String, String>> list = finalScatterYMap.get(courseSuggestDto.getTargetId());
-            if (Objects.nonNull(courseTargetWebDto) && !CollectionUtils.isEmpty(list)) {
+            if (CollectionUtils.isEmpty(list)) {
+                list = new ArrayList<>();
+                for (int i = 0; i < examStudentSize; i++) {
+                    list.add(ImmutableMap.of((i + 1) + "", "0"));
+                }
+            }
+            if (Objects.nonNull(courseTargetWebDto)) {
                 courseSuggestDto.setCourseTargetColumnDiagram3(this.buildScatterMap(list, courseTargetWebDto));
             }
         }
@@ -1291,12 +1300,13 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
         if (!CollectionUtils.isEmpty(map)) {
             List<CourseTargetWebDto> courseTargetWebDtoList = (List<CourseTargetWebDto>) map.get("courseTargetWebDtoList");
             tableRenderDataExamStudent = (TableRenderData) map.get("tableRenderDataExamStudent");
+            List<BigDecimal> scoreList = (List<BigDecimal>) map.get("scoreList");
             LinkedMultiValueMap<String, BigDecimal> scoreListMap = (LinkedMultiValueMap<String, BigDecimal>) map.get("scoreListMap");
             LinkedMultiValueMap<Long, Map<String, String>> finalScatterYMap = (LinkedMultiValueMap<Long, Map<String, String>>) map.get("finalScatterYMap");
             Map<String, Object> mapScore = this.buildXagyuScoreOtherMap(scoreListMap);
             xagyuCourseReportBean.setXagyuCourseTargetTable2(this.buildXagyuWordTable2(mapScore));
             xagyuCourseReportBean.setXagyuCourseTargetColumnDiagram1(this.buildCourseTargetColumnDiagram2(map));
-            this.buildXagyuCourseTargetColumnDiagram1(finalScatterYMap, xagyuCourseReportBean.getXagyuCourseBasicBean().getCourseSuggestList(), courseTargetWebDtoList);
+            this.buildXagyuCourseTargetColumnDiagram1(finalScatterYMap, xagyuCourseReportBean.getXagyuCourseBasicBean().getCourseSuggestList(), courseTargetWebDtoList, scoreList.size());
         }
         return tableRenderDataExamStudent;
     }
@@ -1307,14 +1317,21 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
      * @param finalScatterYMap
      * @param courseSuggestDtoList
      * @param courseTargetWebDtoList
+     * @param examStudentSize
      */
     @Override
-    public void buildXagyuCourseTargetColumnDiagram1(LinkedMultiValueMap<Long, Map<String, String>> finalScatterYMap, List<XagyuCourseSuggestDto> courseSuggestDtoList, List<CourseTargetWebDto> courseTargetWebDtoList) {
+    public void buildXagyuCourseTargetColumnDiagram1(LinkedMultiValueMap<Long, Map<String, String>> finalScatterYMap, List<XagyuCourseSuggestDto> courseSuggestDtoList, List<CourseTargetWebDto> courseTargetWebDtoList, int examStudentSize) {
         Map<Long, CourseTargetWebDto> courseTargetWebDtoMap = courseTargetWebDtoList.stream().collect(Collectors.toMap(CourseTargetWebDto::getTargetId, Function.identity(), (dto1, dto2) -> dto1));
         for (XagyuCourseSuggestDto courseSuggestDto : courseSuggestDtoList) {
             CourseTargetWebDto courseTargetWebDto = courseTargetWebDtoMap.get(courseSuggestDto.getTargetId());
             List<Map<String, String>> list = finalScatterYMap.get(courseSuggestDto.getTargetId());
-            if (Objects.nonNull(courseTargetWebDto) && !CollectionUtils.isEmpty(list)) {
+            if (CollectionUtils.isEmpty(list)) {
+                list = new ArrayList<>();
+                for (int i = 0; i < examStudentSize; i++) {
+                    list.add(ImmutableMap.of((i + 1) + "", "0"));
+                }
+            }
+            if (Objects.nonNull(courseTargetWebDto)) {
                 courseSuggestDto.setXagyuCourseTargetColumnDiagram2(this.buildScatterMap(list, courseTargetWebDto));
             }
         }
@@ -1738,10 +1755,11 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                 ++index;
             }
         }
+        String evaluationValue = Objects.nonNull(courseTargetWebDto.getEvaluationValue()) ? SystemConstant.df.format(courseTargetWebDto.getEvaluationValue()) : "0";
         ChartMultiSeriesRenderData scatterMap = Charts.ofMultiSeries(courseTargetWebDto.getTargetName(), valueXList.toArray(new String[valueXList.size()]))
                 .addSeries("Y值", titleYList.toArray(new Number[titleYList.size()]))
                 .setxAsixTitle("学生代号")
-                .setyAsixTitle("达成值" + SystemConstant.df.format(courseTargetWebDto.getEvaluationValue()))
+                .setyAsixTitle("达成值" + evaluationValue)
                 .create();
         return scatterMap;
     }