Browse Source

用户状态统计列表开发

gao.qiang 1 week ago
parent
commit
017e032710

+ 28 - 16
business-service/src/main/resources/mapper/service/BaseUserMapper.xml

@@ -83,14 +83,23 @@
         FROM sys_user u
         WHERE u.status = 1
           AND u.del_flag = 1
-          AND EXISTS (
-            SELECT 1
-            FROM sys_dept d1
-                     LEFT JOIN sys_dept d2 ON d1.dept_id = d2.parent_id AND d2.status = 1 AND d2.del_flag = 1
-            WHERE d1.status = 1
-              AND d1.del_flag = 1
-              AND (d1.dept_name = '工务部' OR d2.dept_name = '工务部')
-              AND u.dept_id IN (d1.dept_id, d2.dept_id)
+          AND u.dept_id IN (
+            SELECT dept_id
+            FROM sys_dept
+            WHERE dept_name = '工务部'
+              AND status = 1
+              AND del_flag = 1
+            UNION ALL
+            SELECT dept_id
+            FROM sys_dept
+            WHERE
+                parent_id = (SELECT dept_id
+                             FROM sys_dept
+                             WHERE dept_name = '工务部'
+                               AND status = 1
+                               AND del_flag = 1)
+              AND status = 1
+              AND del_flag = 1
         );
     </select>
     <select id="getUsersByIds" resultType="com.ozs.service.entity.BaseUser">
@@ -107,14 +116,17 @@
         FROM sys_user u
         WHERE u.status = 1
           AND u.del_flag = 1
-          AND EXISTS (
-            SELECT 1
-            FROM sys_dept d1
-                     LEFT JOIN sys_dept d2 ON d1.dept_id = d2.parent_id AND d2.status = 1 AND d2.del_flag = 1
-            WHERE d1.status = 1
-              AND d1.del_flag = 1
-              AND (d1.dept_name = '工务部' AND d2.dept_name LIKE '%工务段%')
-              AND u.dept_id IN (d1.dept_id, d2.dept_id)
+          AND u.dept_id IN (
+            SELECT dept_id
+            FROM sys_dept
+            WHERE
+                parent_id = (SELECT dept_id
+                             FROM sys_dept
+                             WHERE dept_name = '工务部'
+                               AND status = 1
+                               AND del_flag = 1)
+              AND status = 1
+              AND del_flag = 1
         );
     </select>
     <select id="getUserLists" resultType="java.lang.String">

+ 6 - 10
hazard-admin/src/main/java/com/ozs/web/core/util/InsertUserStateUtil.java

@@ -55,20 +55,16 @@ public class InsertUserStateUtil {
         List<String>  userLists =baseUserMapper.getUserLists();
 
 
-        // 使用Set提高查找性能
-        Set<String> onlineSet = new HashSet<>(onlineUser);
-        Set<String> userSet = new HashSet<>(userIdList);
-        Set<String> userAll = new HashSet<>(userIdsAll);
 
         // 计算差集和交集
-        Set<String> offlineUsers = userSet.stream()
-                .filter(userId -> !onlineSet.contains(userId))
+        Set<String> offlineUsers = userIdList.stream()
+                .filter(userId -> !onlineUser.contains(userId))
                 .collect(Collectors.toSet());
-        Set<String> offlineUsersAll = userAll.stream()
-                .filter(userId -> !onlineSet.contains(userId))
+        Set<String> offlineUsersAll = userIdsAll.stream()
+                .filter(userId -> !onlineUser.contains(userId))
                 .collect(Collectors.toSet());
-        Set<String> onlineUsers = onlineSet.stream()
-                .filter(userSet::contains)
+        Set<String> onlineUsers = onlineUser.stream()
+                .filter(userIdList::contains)
                 .collect(Collectors.toSet());
 
         // 批量查询用户信息,减少数据库查询