فهرست منبع

feat: 个人数据统计 update

shc 7 ماه پیش
والد
کامیت
9830310fd7

+ 24 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/manager/SysStatisticManager.java

@@ -840,12 +840,14 @@ public class SysStatisticManager {
                 userMap = new ArrayList<>(userList.size());
                 for (SysUser u : userList) {
                     String uId = u.getUserId().toString();
-                    Map<String, Object> uMap = new HashMap<>(7);
+                    Map<String, Object> uMap = new HashMap<>(10);
+                    // 用户ID
                     uMap.put("userId", u.getUserId());
+                    // 用户名
                     uMap.put("userName", u.getRealname());
+                    // 联系方式
                     uMap.put("phone", u.getUsername());
 
-
                     int userPkgCount = 0;
                     long userPkgScoreTotal = 0L;
                     List<WmScorePackageStatus> wmScorePackageStatuses = userId2PkgMap.get(uId);
@@ -854,20 +856,40 @@ public class SysStatisticManager {
                         userPkgScoreTotal = wmScorePackageStatuses.stream().mapToLong(s -> Long.parseLong(s.getUserScore())).sum();
                     }
 
+                    // 用户包数
                     uMap.put("userPkgCount", userPkgCount);
+                    // 用户包值
                     uMap.put("userPkgScoreTotal", userPkgScoreTotal);
                     deptPkgCount += userPkgCount;
                     deptPkgScoreTotal += userPkgScoreTotal;
 
                     int taskPkgCount = 0;
                     long taskScoreTotal = 0L;
+                    long passedScore = 0L;
+                    int passedCount = 0;
                     List<WmTask> tasks = userId2TaskMap.get(uId);
                     if (CollUtil.isNotEmpty(tasks)) {
+                        Map<String, List<WmTask>> statusMap = tasks.stream().collect(Collectors.groupingBy(WmTask::getTaskStatus));
+                        List<WmTask> passed = statusMap.get(UpmsState.TaskState.PASSED.getState());
+                        if (CollUtil.isNotEmpty(passed)) {
+                            passedScore = passed.stream().mapToInt(WmTask::getScore).sum();
+                            passedCount = passed.size();
+                        }
+
                         taskPkgCount = tasks.size();
                         taskScoreTotal = tasks.stream().mapToLong(WmTask::getScore).sum();
                     }
 
+                    // 审核通过值
+                    uMap.put("passedScore", passedScore);
+                    // 审核通过率
+                    uMap.put("passedCountRate", String.format("%.2f", 100.0 * (passedCount / taskPkgCount)));
+                    // 审核通过百分比
+                    uMap.put("passedRate", String.format("%.2f", 100.0 * (passedScore / taskScoreTotal)));
+
+                    // 任务数
                     uMap.put("userTaskCount", taskPkgCount);
+                    // 任务总值
                     uMap.put("taskScoreTotal", taskScoreTotal);
                     deptTaskCount += taskPkgCount;
                     deptTaskScoreTotal += taskScoreTotal;