From bb2400b747193b7253ea4b0591a7ebbe55207748 Mon Sep 17 00:00:00 2001 From: xuyang <748613696@qq.com> Date: Tue, 7 Nov 2023 09:07:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A3=85=E7=BD=AE=E5=AE=9A=E6=97=B6=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E6=8E=A5=E5=85=A5=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../access/listener/RedisKeyExpirationListener.java | 6 +++++- .../njcn/access/service/impl/CsDeviceServiceImpl.java | 11 +++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/iot-access/access-boot/src/main/java/com/njcn/access/listener/RedisKeyExpirationListener.java b/iot-access/access-boot/src/main/java/com/njcn/access/listener/RedisKeyExpirationListener.java index dd4c817..7f0677b 100644 --- a/iot-access/access-boot/src/main/java/com/njcn/access/listener/RedisKeyExpirationListener.java +++ b/iot-access/access-boot/src/main/java/com/njcn/access/listener/RedisKeyExpirationListener.java @@ -75,6 +75,7 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene //判断失效的key是否为MQTT消费端存入的 String expiredKey = message.toString(); if(expiredKey.startsWith("MQTT:")){ + String nDid = expiredKey.split(":")[1]; //装置下线 csEquipmentDeliveryService.updateRunStatusBynDid(nDid, AccessEnum.OFFLINE.getCode()); @@ -94,13 +95,16 @@ public class RedisKeyExpirationListener extends KeyExpirationEventMessageListene Thread.sleep(1000); Integer status = csEquipmentDeliveryService.queryEquipmentBynDid(nDid).getRunStatus(); if (!Objects.isNull(status) && Objects.equals(status,AccessEnum.OFFLINE.getCode())){ + final int[] mid = {2}; ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(2); ScheduledFuture runnableFuture = executor.scheduleAtFixedRate(() -> { log.info("定时发送接入请求..."); - csDeviceService.devAccess(nDid, version); + csDeviceService.devAccessMid(nDid,version, mid[0]); Integer status2 = csEquipmentDeliveryService.queryEquipmentBynDid(nDid).getRunStatus(); if (Objects.equals(status2,AccessEnum.ONLINE.getCode())){ throw new BusinessException(CommonResponseEnum.SUCCESS); + } else { + mid[0] = mid[0] + 1; } //记录日志 logDto.setOperate("装置掉线,定时发送接入请求,装置为:" + nDid + ",请求的时间戳为:" + System.currentTimeMillis()); diff --git a/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/CsDeviceServiceImpl.java b/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/CsDeviceServiceImpl.java index d91efa7..3098996 100644 --- a/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/CsDeviceServiceImpl.java +++ b/iot-access/access-boot/src/main/java/com/njcn/access/service/impl/CsDeviceServiceImpl.java @@ -367,6 +367,17 @@ public class CsDeviceServiceImpl implements ICsDeviceService { publisher.send("/Pfm/DevCmd/"+version+"/"+nDid, new Gson().toJson(reqAndResParam),1,false); } + public void devAccessMid(String nDid,String version,Integer mid) { + ReqAndResDto.Req reqAndResParam = new ReqAndResDto.Req(); + reqAndResParam.setMid(mid); + reqAndResParam.setDid(0); + reqAndResParam.setPri(AccessEnum.FIRST_CHANNEL.getCode()); + reqAndResParam.setType(Integer.parseInt(TypeEnum.TYPE_5.getCode())); + reqAndResParam.setExpire(-1); + logger.info("设备接入报文为:" + new Gson().toJson(reqAndResParam)); + publisher.send("/Pfm/DevCmd/"+version+"/"+nDid, new Gson().toJson(reqAndResParam),1,false); + } + /** * 平台对设备发起主题询问命令 */