From 51d9d7319a920592dc7b77e9e531b77cfe1c700f Mon Sep 17 00:00:00 2001 From: chenyouting <514333061@qq.com> Date: Fri, 1 Aug 2025 11:11:36 +0800 Subject: [PATCH] =?UTF-8?q?app=E8=AE=BE=E5=A4=87=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=EF=BC=8C=E6=96=B0=E5=A2=9E=E7=BA=AC=E5=BA=A6?= =?UTF-8?q?=E7=BB=8F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/service/AppDeviceBizService.java | 12 +++++++++++- .../mqtt/receiver/ReceiverMessageHandler.java | 17 ++++++++++++----- .../rule/ActiveReportingDeviceDataRule.java | 3 --- .../global/mqtt/rule/DeviceBootLogoRule.java | 2 +- .../app/service/impl/AppUserServiceImpl.java | 9 +++++++++ .../equipment/domain/vo/AppDeviceVo.java | 10 ++++++++++ 6 files changed, 43 insertions(+), 10 deletions(-) diff --git a/fys-admin/src/main/java/com/fuyuanshen/app/service/AppDeviceBizService.java b/fys-admin/src/main/java/com/fuyuanshen/app/service/AppDeviceBizService.java index 1a0cd9d..1815dcf 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/app/service/AppDeviceBizService.java +++ b/fys-admin/src/main/java/com/fuyuanshen/app/service/AppDeviceBizService.java @@ -141,6 +141,15 @@ public class AppDeviceBizService { item.setBattery("0"); } + String location = RedisUtils.getCacheObject(GLOBAL_REDIS_KEY+DeviceRedisKeyConstants.DEVICE_LOCATION_KEY_PREFIX + item.getDeviceImei()); + // 获取电量 + if(StringUtils.isNotBlank(location)){ + JSONObject jsonObject = JSONObject.parseObject(location); + item.setLatitude(jsonObject.getString("latitude")); + item.setLongitude(jsonObject.getString("longitude")); + }else{ + item.setBattery("0"); + } } }); } @@ -323,7 +332,8 @@ public class AppDeviceBizService { } // 获取经度纬度 - String locationInfo = GlobalConstants.GLOBAL_REDIS_KEY+DeviceRedisKeyConstants.DEVICE_LOCATION_KEY_PREFIX + device.getDeviceImei(); + String locationKey = GlobalConstants.GLOBAL_REDIS_KEY+DeviceRedisKeyConstants.DEVICE_LOCATION_KEY_PREFIX + device.getDeviceImei(); + String locationInfo = RedisUtils.getCacheObject(locationKey); if(StringUtils.isNotBlank(locationInfo)){ JSONObject jsonObject = JSONObject.parseObject(locationInfo); vo.setLongitude((String)jsonObject.get("longitude")); diff --git a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/receiver/ReceiverMessageHandler.java b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/receiver/ReceiverMessageHandler.java index f7619a6..5baddf6 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/receiver/ReceiverMessageHandler.java +++ b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/receiver/ReceiverMessageHandler.java @@ -1,10 +1,14 @@ package com.fuyuanshen.global.mqtt.receiver; import cn.hutool.core.lang.Dict; +import com.fuyuanshen.common.core.constant.GlobalConstants; import com.fuyuanshen.common.core.utils.ImageToCArrayConverter; +import com.fuyuanshen.common.core.utils.StringUtils; import com.fuyuanshen.common.json.utils.JsonUtils; +import com.fuyuanshen.common.redis.utils.RedisUtils; import com.fuyuanshen.global.mqtt.base.MqttRuleContext; import com.fuyuanshen.global.mqtt.base.MqttRuleEngine; +import com.fuyuanshen.global.mqtt.constants.DeviceRedisKeyConstants; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.Message; @@ -37,16 +41,19 @@ public class ReceiverMessageHandler implements MessageHandler { if (receivedTopic == null || payloadDict == null) { return; } - + String[] subStr = receivedTopic.split("/"); + String deviceImei = subStr[1]; + if(StringUtils.isNotBlank(deviceImei)){ + //在线状态 + String deviceOnlineStatusRedisKey = GlobalConstants.GLOBAL_REDIS_KEY+ DeviceRedisKeyConstants.DEVICE_ONLINE_STATUS_KEY_PREFIX + deviceImei; + RedisUtils.setCacheObject(deviceOnlineStatusRedisKey, "1"); + } + String state = payloadDict.getStr("state"); Object[] convertArr = ImageToCArrayConverter.convertByteStringToMixedObjectArray(state); if (convertArr.length > 0) { Byte val1 = (Byte) convertArr[0]; - String[] subStr = receivedTopic.split("/"); - System.out.println("收到设备id: " + subStr[1]); - String deviceImei = subStr[1]; - MqttRuleContext context = new MqttRuleContext(); context.setCommandType(val1); context.setConvertArr(convertArr); diff --git a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/ActiveReportingDeviceDataRule.java b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/ActiveReportingDeviceDataRule.java index fecffbe..6b37a47 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/ActiveReportingDeviceDataRule.java +++ b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/ActiveReportingDeviceDataRule.java @@ -85,9 +85,6 @@ public class ActiveReportingDeviceDataRule implements MqttMessageRule { // 存储到Redis,设置过期时间(例如24小时) RedisUtils.setCacheObject(deviceRedisKey, deviceInfoJson); - //在线状态 - String deviceOnlineStatusRedisKey = GlobalConstants.GLOBAL_REDIS_KEY+DeviceRedisKeyConstants.DEVICE_ONLINE_STATUS_KEY_PREFIX + deviceImei; - RedisUtils.setCacheObject(deviceOnlineStatusRedisKey, "1"); log.info("设备状态信息已异步发送到Redis: device={}, mainLightMode={}, laserLightMode={}, batteryPercentage={}", deviceImei, mainLightMode, laserLightMode, batteryPercentage); diff --git a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/DeviceBootLogoRule.java b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/DeviceBootLogoRule.java index 2d605a9..8b83e0f 100644 --- a/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/DeviceBootLogoRule.java +++ b/fys-admin/src/main/java/com/fuyuanshen/global/mqtt/rule/DeviceBootLogoRule.java @@ -52,7 +52,7 @@ public class DeviceBootLogoRule implements MqttMessageRule { byte[] arr = ImageToCArrayConverter.convertStringToByteArray(data); byte[] specificChunk = ImageToCArrayConverter.getChunk(arr, (val2 - 1), 512); System.out.println("第" + val2 + "块数据大小: " + specificChunk.length + " 字节"); - System.out.println("第" + val2 + "块数据: " + Arrays.toString(specificChunk)); +// System.out.println("第" + val2 + "块数据: " + Arrays.toString(specificChunk)); ArrayList intData = new ArrayList<>(); intData.add(3); diff --git a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/service/impl/AppUserServiceImpl.java b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/service/impl/AppUserServiceImpl.java index a362fe4..5c18916 100644 --- a/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/service/impl/AppUserServiceImpl.java +++ b/fys-modules/fys-app/src/main/java/com/fuyuanshen/app/service/impl/AppUserServiceImpl.java @@ -1,5 +1,10 @@ package com.fuyuanshen.app.service.impl; +import cn.dev33.satoken.exception.NotLoginException; +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.util.ObjectUtil; +import com.fuyuanshen.common.core.constant.Constants; +import com.fuyuanshen.common.core.domain.model.AppLoginUser; import com.fuyuanshen.common.core.utils.MapstructUtils; import com.fuyuanshen.common.core.utils.StringUtils; import com.fuyuanshen.common.mybatis.core.page.TableDataInfo; @@ -7,6 +12,9 @@ import com.fuyuanshen.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.fuyuanshen.common.satoken.utils.AppLoginHelper; +import com.fuyuanshen.common.satoken.utils.LoginHelper; +import com.fuyuanshen.common.tenant.helper.TenantHelper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -16,6 +24,7 @@ import com.fuyuanshen.app.domain.AppUser; import com.fuyuanshen.app.mapper.AppUserMapper; import com.fuyuanshen.app.service.IAppUserService; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Collection; diff --git a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/vo/AppDeviceVo.java b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/vo/AppDeviceVo.java index ac35877..1642c7f 100644 --- a/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/vo/AppDeviceVo.java +++ b/fys-modules/fys-equipment/src/main/java/com/fuyuanshen/equipment/domain/vo/AppDeviceVo.java @@ -66,4 +66,14 @@ public class AppDeviceVo implements Serializable { * 电量 百分比 */ private String battery; + + /** + * 纬度 + */ + private String latitude; + + /** + * 经度 + */ + private String longitude; }