From 13f78c74b001e87ecf89301be8f885c4aad28381 Mon Sep 17 00:00:00 2001 From: luyya Date: Fri, 4 Jul 2025 14:55:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A3=E5=9F=8E=E6=B1=87=E8=81=9Aredis?= =?UTF-8?q?=E8=BF=87=E6=9C=9F=E7=9B=91=E5=90=AC=E4=BF=AE=E6=94=B9=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E6=96=B0=E6=B7=BBdevice=5Fname?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/api/domain/vo/RemoteDeviceVo.java | 2 ++ .../data2es/handler/RedisExpireListener.java | 2 +- .../data2es/handler/RequestHandler.java | 26 ++++--------------- .../service/impl/StoreDataServiceImpl.java | 9 +++++-- .../service/impl/TDeviceServiceImpl.java | 8 +++--- 5 files changed, 20 insertions(+), 27 deletions(-) diff --git a/stwzhj-api/stwzhj-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteDeviceVo.java b/stwzhj-api/stwzhj-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteDeviceVo.java index fe8fbb81..177b8224 100644 --- a/stwzhj-api/stwzhj-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteDeviceVo.java +++ b/stwzhj-api/stwzhj-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteDeviceVo.java @@ -70,6 +70,8 @@ public class RemoteDeviceVo implements Serializable { private String cardNum; + private String deviceName; + /** * 0无效,1有效 */ diff --git a/stwzhj-modules/wzhj-data2es/src/main/java/org/dromara/data2es/handler/RedisExpireListener.java b/stwzhj-modules/wzhj-data2es/src/main/java/org/dromara/data2es/handler/RedisExpireListener.java index 73ba4e6d..b9ebc976 100644 --- a/stwzhj-modules/wzhj-data2es/src/main/java/org/dromara/data2es/handler/RedisExpireListener.java +++ b/stwzhj-modules/wzhj-data2es/src/main/java/org/dromara/data2es/handler/RedisExpireListener.java @@ -53,7 +53,7 @@ public class RedisExpireListener extends KeyExpirationEventMessageListener { public void onMessage(Message message, byte[] pattern) { String expireKey = message.toString(); if(StringUtils.isNotEmpty(expireKey) && - expireKey.startsWith(RedisConstants.ORG_CODE_PRE)){ + expireKey.startsWith(RedisConstants.ONLINE_USERS_TEN)){ handleExpiredEvent(expireKey); } } diff --git a/stwzhj-modules/wzhj-data2es/src/main/java/org/dromara/data2es/handler/RequestHandler.java b/stwzhj-modules/wzhj-data2es/src/main/java/org/dromara/data2es/handler/RequestHandler.java index 54bcbd85..b9916f85 100644 --- a/stwzhj-modules/wzhj-data2es/src/main/java/org/dromara/data2es/handler/RequestHandler.java +++ b/stwzhj-modules/wzhj-data2es/src/main/java/org/dromara/data2es/handler/RequestHandler.java @@ -7,9 +7,9 @@ package org.dromara.data2es.handler; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; -import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONPObject; +import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson2.util.JSONObject1O; import jodd.util.StringUtil; import org.apache.commons.lang.StringUtils; @@ -74,7 +74,8 @@ public class RequestHandler { //kafkaProducer.send(esGpsInfo, ConfigConstants.KAFKA_TOPIC_SEND_PRE+"."+ infoSource); //todo 2023年3月30日 cpu过载暂时隐藏 - kafkaTemplate.send(ConfigConstants.KAFKA_TOPIC_SEND_PRE+"."+deviceType, JSON.toJSONString(esGpsInfoVO2)); + kafkaTemplate.send(ConfigConstants.KAFKA_TOPIC_SEND_PRE+"."+deviceType, + JSON.toJSONString(esGpsInfoVO2, SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty)); //kafkaProducer.send(esGpsInfoVO2, ConfigConstants.KAFKA_TOPIC_SEND_PRE+"."+deviceType); //地市的kafka数据,如接收地市某个设备的数据可以对接此kafka topic //todo 暂时隐藏 @@ -144,7 +145,7 @@ public class RequestHandler { } Date gpsTime = esGpsInfoVo2.getGpsTime(); - String jsonValue = JSONUtil.toJsonStr(esGpsInfoVo2); + String jsonValue = JSON.toJSONString(esGpsInfoVo2, SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty); if(!Objects.isNull(gpsTime)){ //设置永不过期,便于前端查询设备的最后位置 ----2022年9月15日 @@ -174,23 +175,6 @@ public class RequestHandler { } - //方便根据组织机构计算数量 - - String zzjgdm = esGpsInfoVo2.getZzjgdm(); - if(esGpsInfoVo2.getOnline() == 1) { - if(StringUtils.isNotBlank(zzjgdm)) { - RedisUtils.set(RedisConstants.ORG_CODE_ONLINE_DEVICES + esGpsInfoVo2.getDeviceType() + ":" - + zzjgdm + ":" + esGpsInfoVo2.getDeviceCode(), jsonValue, RedisConstants.REDIS_NEVER_EXPIRE); - - } - - }else{ - if(StringUtils.isNotBlank(zzjgdm)) { - //如果是离线的情况,那么就清除这个在线的 - RedisUtils.del(RedisConstants.ORG_CODE_ONLINE_DEVICES + esGpsInfoVo2.getDeviceType() + ":" - + zzjgdm + ":" + esGpsInfoVo2.getDeviceCode()); - } - } } @@ -204,7 +188,7 @@ public class RequestHandler { @Async public void redisOnlineUserByPerson(EsGpsInfo esGpsInfo){ EsGpsInfoVO3 esGpsInfoVO3 = (EsGpsInfoVO3) esGpsInfo; - String jsonValue = JSONUtil.toJsonStr(esGpsInfoVO3); + String jsonValue = JSON.toJSONString(esGpsInfoVO3, SerializerFeature.WriteMapNullValue,SerializerFeature.WriteNullStringAsEmpty); Date gpsTime = esGpsInfoVO3.getGpsTime(); if(!Objects.isNull(gpsTime)){ diff --git a/stwzhj-modules/wzhj-data2es/src/main/java/org/dromara/data2es/service/impl/StoreDataServiceImpl.java b/stwzhj-modules/wzhj-data2es/src/main/java/org/dromara/data2es/service/impl/StoreDataServiceImpl.java index 5aa5e7cd..4d95dc7c 100644 --- a/stwzhj-modules/wzhj-data2es/src/main/java/org/dromara/data2es/service/impl/StoreDataServiceImpl.java +++ b/stwzhj-modules/wzhj-data2es/src/main/java/org/dromara/data2es/service/impl/StoreDataServiceImpl.java @@ -3,6 +3,8 @@ package org.dromara.data2es.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; @@ -197,13 +199,16 @@ public class StoreDataServiceImpl implements StoreDataService { if (null == qinwu){ return false; } - Object obj = RedisUtils.getBucket(RedisConstants.ONLINE_USERS + "9:" + qinwu.getImei()); - if (null == obj){ + JSONObject obj = RedisUtils.getBucket(RedisConstants.ONLINE_USERS + "9:" + qinwu.getImei()); + if (null == obj || JSONUtil.isNull(obj)){ return false; }else { // 如需按照gps最新时间来判断 可在这添加逻辑 EsGpsInfoVO3 esGpsInfoVO3 = BeanUtil.toBean(obj.toString(),EsGpsInfoVO3.class); + if (null == esGpsInfoVO3.getGpsTime()){ + return false; + } if (DateUtil.between(new Date(),esGpsInfoVO3.getGpsTime(), DateUnit.SECOND)>120){ return false; }else { diff --git a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/impl/TDeviceServiceImpl.java b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/impl/TDeviceServiceImpl.java index 9885e885..a3ee4f3b 100644 --- a/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/impl/TDeviceServiceImpl.java +++ b/stwzhj-modules/wzhj-system/src/main/java/org/dromara/system/service/impl/TDeviceServiceImpl.java @@ -112,7 +112,7 @@ public class TDeviceServiceImpl implements ITDeviceService { public List queryList(TDeviceBo bo) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); List list = baseMapper.selectVoList(lqw); - for (TDeviceVo vo : list) { + /*for (TDeviceVo vo : list) { if ("".equals(vo.getPoliceName()) || null == vo.getPoliceName()){ vo.setDeviceName(vo.getCarNum()); } @@ -125,7 +125,7 @@ public class TDeviceServiceImpl implements ITDeviceService { } - } + }*/ return list; } @@ -210,7 +210,9 @@ public class TDeviceServiceImpl implements ITDeviceService { lqw.in(null != bo.getZzjgdms() && bo.getZzjgdms().length>0,TDevice::getZzjgdm,bo.getZzjgdms()); lqw.eq(StringUtils.isNotBlank(bo.getZzjgmc()), TDevice::getZzjgmc, bo.getZzjgmc()); lqw.and(StringUtils.isNotBlank(bo.getPoliceName()),wrapper -> wrapper.like(TDevice::getPoliceNo, bo.getPoliceName()) - .or().like(TDevice::getPoliceName, bo.getPoliceName()).or().like(TDevice::getCarNum, bo.getPoliceName())); + .or().like(TDevice::getPoliceName, bo.getPoliceName()) + .or().like(TDevice::getCarNum, bo.getPoliceName()) + .or().like(TDevice::getDeviceName, bo.getPoliceName())); lqw.eq(StringUtils.isNotBlank(bo.getPhoneNum()), TDevice::getPhoneNum, bo.getPhoneNum()); lqw.eq(bo.getValid() != null, TDevice::getValid, bo.getValid()); lqw.eq(StringUtils.isNotBlank(bo.getRemark1()), TDevice::getRemark1, bo.getRemark1());