Forráskód Böngészése

西安工业大学定制课程目标达成度

wangliang 8 hónapja
szülő
commit
da524cb975

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

@@ -177,7 +177,7 @@ public class TRBasicInfoController {
                         new QueryWrapper<TRExamStudent>().lambda().eq(TRExamStudent::getrBasicInfoId, trBasicInfo.getId()));
                 LinkedMultiValueMap<Long, Map<String, String>> finalScatterYMap = null;
                 if (!CollectionUtils.isEmpty(trExamStudentList)) {
-                    Map<Long, ConcurrentMap<String, Integer>> scatterYMap = new LinkedHashMap<>();
+                    Map<Long, ConcurrentMap<String, String>> scatterYMap = new LinkedHashMap<>();
                     List<ReportExamStudentDto> examStudentList = new ArrayList<>(trExamStudentList.size());
                     for (TRExamStudent trExamStudent : trExamStudentList) {
                         if (!Objects.equals(trExamStudent.getName(), "各课程目标平均分")
@@ -186,7 +186,7 @@ public class TRBasicInfoController {
                             List<ReportExamStudentTargetDto> reportExamStudentTargetDtoList = JSONArray.parseArray(trExamStudent.getResultDetail(), ReportExamStudentTargetDto.class);
                             for (ReportExamStudentTargetDto reportExamStudentTargetDto : reportExamStudentTargetDtoList) {
                                 if (Objects.nonNull(reportExamStudentTargetDto) && Objects.nonNull(reportExamStudentTargetDto.getMatrixDegree())) {
-                                    trBasicInfoService.getScatterValue(scatterYMap, reportExamStudentTargetDto);
+                                    trBasicInfoService.getScatterValue(scatterYMap, trExamStudent.getStudentCode(), reportExamStudentTargetDto);
                                 }
                             }
                         }

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

@@ -194,10 +194,11 @@ public interface TRBasicInfoService extends IService<TRBasicInfo> {
      * 获取散点图值
      *
      * @param scatterYMap
+     * @param studentCode
      * @param reportExamStudentTargetDto
      * @return
      */
-    public Map<Long, ConcurrentMap<String, Integer>> getScatterValue(Map<Long, ConcurrentMap<String, Integer>> scatterYMap, ReportExamStudentTargetDto reportExamStudentTargetDto);
+    public Map<Long, ConcurrentMap<String, String>> getScatterValue(Map<Long, ConcurrentMap<String, String>> scatterYMap, String studentCode, ReportExamStudentTargetDto reportExamStudentTargetDto);
 
     /**
      * 获取最终散点图值
@@ -205,7 +206,7 @@ public interface TRBasicInfoService extends IService<TRBasicInfo> {
      * @param scatterYMap
      * @return
      */
-    public LinkedMultiValueMap<Long, Map<String, String>> getFinalScatterValue(Map<Long, ConcurrentMap<String, Integer>> scatterYMap);
+    public LinkedMultiValueMap<Long, Map<String, String>> getFinalScatterValue(Map<Long, ConcurrentMap<String, String>> scatterYMap);
 
     /**
      * 构建公共课程目标达成度模板

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

@@ -1183,21 +1183,19 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
      * 获取散点图值
      *
      * @param scatterYMap
+     * @param studentCode
      * @param reportExamStudentTargetDto
      * @return
      */
-    public Map<Long, ConcurrentMap<String, Integer>> getScatterValue(Map<Long, ConcurrentMap<String, Integer>> scatterYMap, ReportExamStudentTargetDto reportExamStudentTargetDto) {
-        ConcurrentMap<String, Integer> map = null;
+    public Map<Long, ConcurrentMap<String, String>> getScatterValue(Map<Long, ConcurrentMap<String, String>> scatterYMap, String studentCode, ReportExamStudentTargetDto reportExamStudentTargetDto) {
+        ConcurrentMap<String, String> map = null;
         if (!scatterYMap.containsKey(reportExamStudentTargetDto.getTargetId())) {
             map = new ConcurrentHashMap<>();
-            map.put(reportExamStudentTargetDto.getMatrixDegree().toString(), 1);
+            map.put(studentCode, reportExamStudentTargetDto.getMatrixDegree().toString());
         } else {
             map = scatterYMap.get(reportExamStudentTargetDto.getTargetId());
             if (!map.containsKey(reportExamStudentTargetDto.getMatrixDegree().toString())) {
-                map.put(reportExamStudentTargetDto.getMatrixDegree().toString(), 1);
-            } else {
-                Integer value = map.get(reportExamStudentTargetDto.getMatrixDegree().toString());
-                map.put(reportExamStudentTargetDto.getMatrixDegree().toString(), ++value);
+                map.put(studentCode, reportExamStudentTargetDto.getMatrixDegree().toString());
             }
         }
         scatterYMap.put(reportExamStudentTargetDto.getTargetId(), map);
@@ -1211,11 +1209,11 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
      * @return
      */
     @Override
-    public LinkedMultiValueMap<Long, Map<String, String>> getFinalScatterValue(Map<Long, ConcurrentMap<String, Integer>> scatterYMap) {
+    public LinkedMultiValueMap<Long, Map<String, String>> getFinalScatterValue(Map<Long, ConcurrentMap<String, String>> scatterYMap) {
         LinkedMultiValueMap<Long, Map<String, String>> finalScatterYMap = new LinkedMultiValueMap<>();
-        for (Map.Entry<Long, ConcurrentMap<String, Integer>> entry : scatterYMap.entrySet()) {
-            ConcurrentMap<String, Integer> concurrentMap = entry.getValue();
-            for (Map.Entry<String, Integer> entry1 : concurrentMap.entrySet()) {
+        for (Map.Entry<Long, ConcurrentMap<String, String>> entry : scatterYMap.entrySet()) {
+            ConcurrentMap<String, String> concurrentMap = entry.getValue();
+            for (Map.Entry<String, String> entry1 : concurrentMap.entrySet()) {
                 Map<String, String> mapNew = new HashMap<>();
                 mapNew.put(entry1.getKey(), entry1.getValue().toString());
                 finalScatterYMap.add(entry.getKey(), mapNew);
@@ -1421,7 +1419,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
             trExamStudentNewList.remove(trExamStudentNewList.size() - 1);
 
             BigDecimal targetAvgScore = new BigDecimal(trExamStudentNewList.stream().mapToDouble(s -> s.getScore().doubleValue()).sum()).divide(new BigDecimal(trExamStudentNewList.size()), 2, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP);
-            Map<Long, ConcurrentMap<String, Integer>> scatterYMap = new LinkedHashMap<>();
+            Map<Long, ConcurrentMap<String, String>> scatterYMap = new LinkedHashMap<>();
             for (int i = 0; i < trExamStudentList.size(); i++) {
                 TRExamStudent trExamStudent = trExamStudentList.get(i);
                 RowRenderData examStudent_row = new RowRenderData();
@@ -1453,7 +1451,7 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
                             if (!Objects.equals(trExamStudent.getName(), "平均分")
                                     && !Objects.equals(trExamStudent.getName(), "各课程目标平均分")
                                     && Objects.nonNull(matrixDegree)) {
-                                trBasicInfoService.getScatterValue(scatterYMap, reportExamStudentTargetDto);
+                                trBasicInfoService.getScatterValue(scatterYMap, trExamStudent.getStudentCode(), reportExamStudentTargetDto);
                             }
                             BigDecimal scoreSum = new BigDecimal(0);
                             ReportExamStudentUsualScoreDto reportExamStudentUsualScoreDto = reportExamStudentTargetDto.getUsualScore();
@@ -1730,10 +1728,12 @@ public class TRBasicInfoServiceImpl extends ServiceImpl<TRBasicInfoMapper, TRBas
     protected ChartMultiSeriesRenderData buildScatterMap(List<Map<String, String>> list, CourseTargetWebDto courseTargetWebDto) {
         List<String> valueXList = new ArrayList<>();
         List<Number> titleYList = new ArrayList<>();
+        int index = 1;
         for (Map<String, String> m : list) {
             for (Map.Entry<String, String> entry : m.entrySet()) {
-                valueXList.add(entry.getValue());
-                titleYList.add(Double.parseDouble(entry.getKey()));
+                valueXList.add(index + "");
+                titleYList.add(Double.parseDouble(entry.getValue()));
+                ++index;
             }
         }
         ChartMultiSeriesRenderData scatterMap = Charts.ofMultiSeries(courseTargetWebDto.getTargetName(), valueXList.toArray(new String[valueXList.size()]))