From 946dec6a15257c6a173eb089f18d446b2e9352df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E5=B1=95=E8=88=AA?= <2426745133@qq.com> Date: Mon, 22 Dec 2025 19:21:23 +0800 Subject: [PATCH] =?UTF-8?q?12-22-=E5=A4=A7=E5=B1=8F-=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E7=AE=A1=E7=90=86-=E7=AD=9B=E9=80=89=E4=BA=BA=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/IBusAttendanceService.java | 2 +- .../impl/BusAttendanceServiceImpl.java | 103 ++++++++++-------- .../service/BigScreenWebSocketServer.java | 6 +- 3 files changed, 65 insertions(+), 46 deletions(-) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java index eb673ff1..1cdf2065 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java @@ -229,7 +229,7 @@ public interface IBusAttendanceService extends IService{ */ Long getAttendanceUserCountByDate(Long projectId,LocalDate startDate, LocalDate endDate); - Map getRyglOnlineUserInfoData(Long projectId); + Map getRyglOnlineUserInfoData(Long projectId,String token); void getAttendanceInfo(Long projectId,Long timeType,Map map); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java index 961e226a..9a2e9e1c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java @@ -2779,18 +2779,37 @@ public class BusAttendanceServiceImpl extends ServiceImpl getRyglOnlineUserInfoData(Long projectId){ + public Map getRyglOnlineUserInfoData(Long projectId,String token){ //获取该项目的在线人员 再分辨出种类 - //先获取该项目所有人员 + //先获取该项目所有人员 走现有方法 LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(SubConstructionUser::getProjectId, projectId); lqw.eq(SubConstructionUser::getStatus,"0"); - //未入场人员也要统计坐标 打卡不统计(存疑) -// lqw.and(lqw1 -> -// lqw1.isNotNull(SubConstructionUser::getTeamId) -// .or() -// .isNotNull(SubConstructionUser::getContractorId)); List list = constructionUserService.list(lqw); + +// SubConstructionUserQueryReq req = new SubConstructionUserQueryReq(); +// req.setProjectId(projectId); +// LoginUser loginUser = LoginHelper.getLoginUser(token); +// Long userId = loginUser.getUserId(); +// SysUserVo sysUserVo = userService.selectUserById(userId); +// String appUserType = sysUserVo.getAppUserType(); +// List list1 = new ArrayList<>(); +// if ("2".equals(appUserType)) { +// List byUserId = projectTeamService.getByUserId(userId, req.getProjectId()); +// +// if (CollectionUtil.isEmpty(byUserId)) { +// return new HashMap<>(); +// } +// list1 = byUserId.stream().map(BusProjectTeamAppVo::getId).toList(); +// } +// +// // 查询数据库 +// LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.eq(SubConstructionUser::getProjectId, req.getProjectId()); +// wrapper.in(req.getTeamId() == null && "2".equals(appUserType), SubConstructionUser::getTeamId, list1); +// wrapper.eq(SubConstructionUser::getUserRole, "0"); +// List list = constructionUserService.list(wrapper); + //再去从聊天服务中获取在线的ID List onlineUserList = ChatServerHandler.getOnlineUserList(); //先查询出用户列表 @@ -2804,49 +2823,47 @@ public class BusAttendanceServiceImpl extends ServiceImpl map = new HashMap<>(); - map.put("zs",String.valueOf(zx+lx)); //总数 - map.put("zx", String.valueOf(zx)); //在线 - map.put("lx", String.valueOf(lx)); //离线 + map.put("zs",String.valueOf(zx + lx)); //总数 + map.put("zx", String.valueOf(zx)); + map.put("lx", String.valueOf(lx)); map.put("fbsl", String.valueOf(fb.get())); //分包 map.put("sg", String.valueOf(sg.get())); //施工 map.put("info", JSONUtil.toJsonStr(info)); //jd经度 wd维度 jslx角色类型 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/websocket/service/BigScreenWebSocketServer.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/websocket/service/BigScreenWebSocketServer.java index 30c247bf..65c1420c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/websocket/service/BigScreenWebSocketServer.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/websocket/service/BigScreenWebSocketServer.java @@ -101,12 +101,13 @@ public class BigScreenWebSocketServer { break; case 2: Long timeType = Long.parseLong(params.get("timeType").getFirst()); + String token = params.get("Authorization").getFirst().split("Bearer ")[1]; //判断参数 if (timeType != 1L && timeType != 2L && timeType != 3L) { throw new RuntimeException("时间类型参数错误"); } //先获取左边坐标得到map - Map infoData = busAttendanceService.getRyglOnlineUserInfoData(projectId); + Map infoData = busAttendanceService.getRyglOnlineUserInfoData(projectId,token); //获取右边数据 busAttendanceService.getAttendanceInfo(projectId, timeType, infoData); //返回数据 @@ -182,12 +183,13 @@ public class BigScreenWebSocketServer { break; case 2: String timeType = JSONUtil.parseObj(message).get("timeType").toString(); +// String token = JSONUtil.parseObj(message).get("token").toString().split("Bearer%20")[0]; //判断参数 if (Long.parseLong(timeType) != 1L && Long.parseLong(timeType) != 2L && Long.parseLong(timeType) != 3L) { throw new RuntimeException("时间类型参数错误"); } //先获取左边坐标得到map - Map infoData = busAttendanceService.getRyglOnlineUserInfoData(projectId); + Map infoData = busAttendanceService.getRyglOnlineUserInfoData(projectId,null); //获取右边数据 busAttendanceService.getAttendanceInfo(projectId, Long.valueOf(timeType), infoData); //返回数据