夏文涛 2 лет назад
Родитель
Сommit
5c8e0bc744

+ 21 - 11
src/main/java/com/template/controller/SmartEvaluateTeacherController.java

@@ -529,7 +529,7 @@ public class SmartEvaluateTeacherController implements SmartEvaluateTeacherContr
                     Optional<SmartEvaluateTdetail> oset = sets.stream().filter(e -> e.getScoreManageId().equals(detail.getId())).findFirst();
                     if (oset != null && oset.isPresent()) {
                         child.setOwnNum(oset.get().getOwnNum());
-                        ownerTotal.add(new BigDecimal(oset.get().getOwnNum()));
+                        ownerTotal = ownerTotal.add(new BigDecimal(oset.get().getOwnNum()));
                     }
                     childs.add(child);
                 }
@@ -553,20 +553,30 @@ public class SmartEvaluateTeacherController implements SmartEvaluateTeacherContr
         SmartEvaluateTeacher teacher = smartEvaluateTeacherService.getSmartEvaluateTeacherById(id);
         QueryWrapper<SmartEvaluateTdetail> queryWrapper1 = new QueryWrapper<>();
         queryWrapper1.eq("deleted", 0);
-        queryWrapper1.eq("parent_id", 0);
-        queryWrapper1.eq("term", teacher.getTerm());
-        queryWrapper1.eq("card_no", teacher.getCardNo());
+        queryWrapper1.eq("term_id", teacher.getTermId());
+        queryWrapper1.eq("user_id", teacher.getUserId());
         List<SmartEvaluateTdetail> detailList = smartEvaluateTdetailService.getEvaluateTdetailByKey(queryWrapper1);
         List<SmartScoreManage> scoreManages = smartScoreManageService.queryDatasByTermId(teacher.getTermId());
+        List<SmartScoreManage> parentScoreManages =  scoreManages.stream().filter(e -> e.getParentId().intValue() == 0).collect(Collectors.toList());
         List<JSONObject> resultJson = new ArrayList<>();
-        for (int i = 0; i < detailList.size(); i++) {
+        for (SmartScoreManage parentData:parentScoreManages) {
             JSONObject jsonObject = new JSONObject();
-            SmartEvaluateTdetail smartEvaluateTdetail = detailList.get(i);
-            Optional<SmartScoreManage> manageData = scoreManages.stream().filter(e -> e.getId().equals(smartEvaluateTdetail.getId())).findFirst();
-            String scoreItem = manageData != null && manageData.isPresent() ? manageData.get().getScoreItem() : "";
-            double avgScore = smartEvaluateTdetailService.getAvgEvaluateScore(teacher.getTerm(), scoreItem);
-            jsonObject.put("name", scoreItem);
-            jsonObject.put("ownScore", smartEvaluateTdetail.getOwnNum());
+            BigDecimal ownScore = new BigDecimal(0.0);
+            Double avgScore = 0.0;
+            Integer num = 0;
+            List<SmartScoreManage> childs = scoreManages.stream().filter(e -> e.getParentId().equals(parentData.getId())).collect(Collectors.toList());
+            for (SmartScoreManage child :childs) {
+                Optional<SmartEvaluateTdetail> oChild = detailList.stream().filter(e -> e.getScoreManageId().equals(child.getId())).findFirst();
+                if(oChild != null && oChild.isPresent()){
+                    ownScore = ownScore.add(new BigDecimal(oChild.get().getOwnNum()));
+                    num++;
+                }
+            }
+
+            avgScore = num == 0 ? 0 : (new BigDecimal(ownScore.doubleValue() / num).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+
+            jsonObject.put("name", parentData.getScoreItem());
+            jsonObject.put("ownScore", ownScore);
             jsonObject.put("avgScore", avgScore);
             resultJson.add(jsonObject);
         }