From 2be0d87aca55e636c451bd9463f67dafcf3c502a Mon Sep 17 00:00:00 2001 From: lishuai Date: Mon, 19 Aug 2024 14:09:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E6=B2=A1=E6=9C=89=E9=87=8D=E7=BD=AEbug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=202024=E5=B9=B48=E6=9C=8819=E6=97=A514:08:19?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../quartz/timetask/task/ThingStatusTask.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/modules/quartz/src/main/java/com/thing/quartz/timetask/task/ThingStatusTask.java b/modules/quartz/src/main/java/com/thing/quartz/timetask/task/ThingStatusTask.java index 00a4cbd..865bfd8 100644 --- a/modules/quartz/src/main/java/com/thing/quartz/timetask/task/ThingStatusTask.java +++ b/modules/quartz/src/main/java/com/thing/quartz/timetask/task/ThingStatusTask.java @@ -7,6 +7,7 @@ import com.thing.common.core.enumeration.ThingStatus; import com.thing.common.core.utils.JacksonUtil; import com.thing.common.data.tskv.TsKvDTO; import com.thing.common.tskv.service.TsKvService; +import com.thing.thing.cache.service.ThingCache; import com.thing.thing.context.service.ThingManageContextService; import com.thing.thing.model.dto.IotThingModelDTO; import lombok.RequiredArgsConstructor; @@ -38,6 +39,7 @@ public class ThingStatusTask implements ITask { private final ThingManageContextService thingManageContextService; private final TsKvService tsKvService; + private final ThingCache cache; /** * 执行定时任务接口 @@ -58,23 +60,28 @@ public class ThingStatusTask implements ITask { //处理 List statusList = optionalList.get().stream() .map(item -> { + IotThingModelDTO iotThingModelDTO = JacksonUtil.convertValue(item, IotThingModelDTO.class); //找到最大时间的属性 Optional optionalMax = lastTsKvList.stream() .filter(tsKvDTO -> StringUtils.equals(tsKvDTO.getThingCode(),item.get(CacheNameEnum.ModelField.THING_MODEL_CODE.getField()).asText())) .max(Comparator.comparing(TsKvDTO::getTs)); if(optionalMax.isEmpty()){ - item.put(CacheNameEnum.ModelField.THING_MODEL_STATUS.getField(),ThingStatus.OFFLINE.getCode()); + iotThingModelDTO.setStatus(ThingStatus.OFFLINE.getCode()); +// item.put(CacheNameEnum.ModelField.THING_MODEL_STATUS.getField(),ThingStatus.OFFLINE.getCode()); }else{ TsKvDTO tsKvDTO = optionalMax.get(); //根据当前时间和获取的最新时间 若大于45min 则离线 否则为在线 boolean isOffline = System.currentTimeMillis() - tsKvDTO.getTs() > TIME_INTERVAL; - item.put(CacheNameEnum.ModelField.THING_MODEL_STATUS.getField(),isOffline ? ThingStatus.OFFLINE.getCode() : ThingStatus.ONLINE.getCode()); - item.put(CacheNameEnum.ModelField.THING_MODEL_STATUS_TS.getField(),new Date(tsKvDTO.getTs()).getTime()); + iotThingModelDTO.setStatus(isOffline ? ThingStatus.OFFLINE.getCode() : ThingStatus.ONLINE.getCode()); + iotThingModelDTO.setStatusTs(new Date(tsKvDTO.getTs()).getTime()); + // item.put(CacheNameEnum.ModelField.THING_MODEL_STATUS.getField(),isOffline ? ThingStatus.OFFLINE.getCode() : ThingStatus.ONLINE.getCode()); + // item.put(CacheNameEnum.ModelField.THING_MODEL_STATUS_TS.getField(),new Date(tsKvDTO.getTs()).getTime()); } - return JacksonUtil.convertValue(item, IotThingModelDTO.class); + return iotThingModelDTO; }).collect(Collectors.toList()); //修改状态 thingManageContextService.saveModelBatch(statusList); + cache.clearTopic(CacheNameEnum.THING_MODEL); log.info("设备在线离线 statusTask end"); }