From c68d6cb53ce7c23bbc53f624527ffecf86cd9e1e Mon Sep 17 00:00:00 2001 From: dfdg <2710245601@qq.com> Date: Thu, 11 Sep 2025 20:17:47 +0800 Subject: [PATCH] =?UTF-8?q?gps=E6=96=B0=E5=A2=9E=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/GpsEquipmentController.java | 4 +- .../org/dromara/gps/domain/GpsEquipment.java | 5 +++ .../dromara/gps/domain/bo/GpsEquipmentBo.java | 5 +++ .../gps/domain/bo/GpsEquipmentSonBo.java | 5 +++ .../dromara/gps/domain/vo/GpsEquipmentVo.java | 4 ++ .../service/impl/GpsEquipmentServiceImpl.java | 40 ++++++++++++++++--- .../impl/GpsEquipmentSonServiceImpl.java | 12 +++++- 7 files changed, 66 insertions(+), 9 deletions(-) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java index 5dda09a5..d59ccdb5 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/controller/GpsEquipmentController.java @@ -58,11 +58,11 @@ public class GpsEquipmentController extends BaseController { /** - * 接收设备数据 + * 获取用户打卡数据 * @param jsonData * @return */ - @PostMapping("/setData") + @PostMapping("/setAppData") public R setData(@RequestBody String jsonData) { log.info("接收设备数据:{}", jsonData); gpsEquipmentService.setData(jsonData); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipment.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipment.java index f26d8081..e2c06703 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipment.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/GpsEquipment.java @@ -83,5 +83,10 @@ public class GpsEquipment extends BaseEntity { */ private String alive; + /** + * 类型(0、设备,1、用户) + */ + private Integer gpsType; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentBo.java index 8dfffb3a..10b7c178 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentBo.java @@ -82,4 +82,9 @@ public class GpsEquipmentBo extends BaseEntity { private List idList; + /** + * 类型(0、设备,1、用户) + */ + private Integer gpsType; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java index 00fc29e0..78f04bfc 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/bo/GpsEquipmentSonBo.java @@ -116,4 +116,9 @@ public class GpsEquipmentSonBo extends BaseEntity { private Long projectId; + /** + * 类型(0、设备,1、用户) + */ + private Integer gpsType; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentVo.java index 816a30d5..0430b240 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/domain/vo/GpsEquipmentVo.java @@ -101,6 +101,10 @@ public class GpsEquipmentVo implements Serializable { private Integer type; + /** + * 类型(0、设备,1、用户) + */ + private Integer gpsType; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java index ebcd6f88..a7a3527b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentServiceImpl.java @@ -144,6 +144,7 @@ public class GpsEquipmentServiceImpl extends ServiceImpl params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByDesc(GpsEquipment::getId); + lqw.eq(bo.getGpsType() != null, GpsEquipment::getGpsType, bo.getGpsType()); lqw.eq(bo.getProjectId() != null, GpsEquipment::getProjectId, bo.getProjectId()); lqw.eq(bo.getUserId() != null, GpsEquipment::getUserId, bo.getUserId()); lqw.eq(StringUtils.isNotBlank(bo.getClientId()), GpsEquipment::getClientId, bo.getClientId()); @@ -209,6 +210,7 @@ public class GpsEquipmentServiceImpl extends ServiceImpl() .eq(GpsEquipment::getClientId, gpsEquipment.getClientId())); if(equipment == null){ + gpsEquipment.setGpsType(0); baseMapper.insert(gpsEquipment); } JSONObject attributes = jsonObject.getJSONObject("attributes"); @@ -437,14 +439,42 @@ public class GpsEquipmentServiceImpl extends ServiceImpl() + .eq(GpsEquipment::getProjectId, gpsEquipment.getProjectId()) + .eq(GpsEquipment::getUserId, gpsEquipment.getUserId())); + if(equipment == null){ + gpsEquipment.setGpsType(1); +// gpsEquipment.setClientId(jsonObject.getStr("deviceId")); + baseMapper.insert(gpsEquipment); + } + GpsEquipmentSonBo gpsEquipmentSonBo = new GpsEquipmentSonBo(); + gpsEquipmentSonBo.setLocLatitude(jsonObject.getBigDecimal("latitude")); + gpsEquipmentSonBo.setLocLongitude(jsonObject.getBigDecimal("longitude")); + gpsEquipmentSonBo.setUserId(gpsEquipment.getUserId()); + gpsEquipmentSonBo.setProjectId(gpsEquipment.getProjectId()); + gpsEquipmentSonBo.setLocAltitude(0L); + + + gpsEquipmentSonService.insertByBo(gpsEquipmentSonBo); + + String pushContent = buildPushMessage(gpsEquipmentSonBo); + +// WebSocketUtils.publishAll(pushContent); + // 2. 发布消息(根据是否有用户ID决定发送给指定用户或广播) + if (equipment != null && equipment.getProjectId() != null) { // 发送给指定用户(equipment.getUserId()) WebSocketMessageDto messageDto = new WebSocketMessageDto(); - messageDto.setMessage(jsonData); - messageDto.setSessionKeys(Collections.singletonList(1897160897167638522L)); + messageDto.setMessage(pushContent); + messageDto.setSessionKeys(Collections.singletonList(equipment.getProjectId())); WebSocketUtils.publishMessage(messageDto); - -// WebSocketUtils.publishAll(jsonData); - + } else { + // 无用户ID则广播给所有在线客户端 + WebSocketUtils.publishAll(pushContent); + } + // 保存到Redis并设置过期监听 + updateDeviceAliveStatus(gpsEquipment.getClientId()); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentSonServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentSonServiceImpl.java index 71e9b25c..2eaf1798 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentSonServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/gps/service/impl/GpsEquipmentSonServiceImpl.java @@ -65,8 +65,16 @@ public class GpsEquipmentSonServiceImpl extends ServiceImpl queryList(GpsEquipmentSonBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + if (bo.getGpsType() == 0){ + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + }else { + return baseMapper.selectVoList(new LambdaQueryWrapper() + .isNull(GpsEquipmentSon::getClientId) + .eq(GpsEquipmentSon::getUserId, bo.getUserId()) + .eq(GpsEquipmentSon::getProjectId, bo.getProjectId()) + .orderByDesc(GpsEquipmentSon::getCreateTime)); + } } private LambdaQueryWrapper buildQueryWrapper(GpsEquipmentSonBo bo) {