添加规范说明

This commit is contained in:
孙小云 2026-01-17 13:05:43 +08:00
parent a0fd20ca51
commit f728d1f0c1
2 changed files with 70 additions and 42 deletions

View File

@ -46,48 +46,6 @@ public class DeviceServiceImpl implements IDeviceService {
Device model = deviceDomain.selectDeviceByDeviceId(deviceId);
return DeviceServiceConvert.toDTO(model);
}
/**
* 定时任务定期打印所有设备信息
* 执行时间启动后1分钟开始每2分钟执行一次可通过配置文件修改
* 配置项device.schedule.print-devices.initial-delay 初始延迟时间毫秒
* device.schedule.print-devices.fixed-delay 执行间隔时间毫秒
*/
@Scheduled(initialDelayString = "${device.schedule.update-devices.initial-delay:60000}",
fixedDelayString = "${device.schedule.update-devices.fixed-delay:120000}")
public void updateDevicesScheduled() {
try {
log.info("========== 开始执行定时任务:打印所有设备信息 ==========");
Iterable<List<DeviceInfo>> allDevices = iThingsBoardDomain.getAllDevices();
int totalCount = 0;
for (List<DeviceInfo> deviceBatch : allDevices) {
for (DeviceInfo device : deviceBatch) {
// 获取设备属性以获取活跃状态
Boolean activeStatus = false;
try {
AttributeMap attributes = iThingsBoardDomain.getDeviceAttributes(device.getId());
// 尝试从 AttributeMap 中获取 active 属性
Optional<Boolean> active = attributes.get(DeviceAttributes.ACTIVE);
if (active.isPresent()) {
activeStatus = active.get();
}
} catch (Exception e) {
log.debug("获取设备 {} 的活跃状态失败: {}", device.getId(), e.getMessage());
}
log.info("Device Name: {}, Device ID: {}, Device Type: {}, Active: {}",
device.getName(),
device.getId(),
device.getType(),
activeStatus);
totalCount++;
}
}
log.info("========== 定时任务执行完成,共打印 {} 个设备 ==========", totalCount);
} catch (Exception e) {
log.error("定时任务执行失败: {}", e.getMessage(), e);
}
}
}

View File

@ -0,0 +1,70 @@
package com.ruoyi.device.service.impl;
import com.ruoyi.device.domain.api.IThingsBoardDomain;
import com.ruoyi.device.domain.model.thingsboard.AttributeMap;
import com.ruoyi.device.domain.model.thingsboard.DeviceInfo;
import com.ruoyi.device.domain.model.thingsboard.constants.DeviceAttributes;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class SynService {
private static final Logger log = LoggerFactory.getLogger(SynService.class);
private final IThingsBoardDomain iThingsBoardDomain;
public SynService(IThingsBoardDomain iThingsBoardDomain) {
this.iThingsBoardDomain = iThingsBoardDomain;
}
/**
* 定时任务同步基础表数据
* 执行时间启动后1分钟开始每2分钟执行一次可通过配置文件修改
* 配置项device.schedule.print-devices.initial-delay 初始延迟时间毫秒
* device.schedule.print-devices.fixed-delay 执行间隔时间毫秒
*/
@Scheduled(initialDelayString = "${device.schedule.update-devices.initial-delay:60000}",
fixedDelayString = "${device.schedule.update-devices.fixed-delay:120000}")
public void updateDevicesScheduled() {
try {
log.info("========== 开始执行定时任务:同步基础表数据 ==========");
Iterable<List<DeviceInfo>> allDevices = iThingsBoardDomain.getAllDevices();
int totalCount = 0;
for (List<DeviceInfo> deviceBatch : allDevices) {
for (DeviceInfo device : deviceBatch) {
// 获取设备属性以获取活跃状态
Boolean activeStatus = false;
try {
AttributeMap attributes = iThingsBoardDomain.getDeviceAttributes(device.getId());
// 尝试从 AttributeMap 中获取 active 属性
Optional<Boolean> active = attributes.get(DeviceAttributes.ACTIVE);
if (active.isPresent()) {
activeStatus = active.get();
}
} catch (Exception e) {
log.debug("获取设备 {} 的活跃状态失败: {}", device.getId(), e.getMessage());
}
log.info("Device Name: {}, Device ID: {}, Device Type: {}, Active: {}",
device.getName(),
device.getId(),
device.getType(),
activeStatus);
totalCount++;
}
}
log.info("========== 定时任务执行完成,共打印 {} 个设备 ==========", totalCount);
} catch (Exception e) {
log.error("定时任务执行失败: {}", e.getMessage(), e);
}
}
}