添加挂载

This commit is contained in:
孙小云 2026-01-19 09:12:27 +08:00
parent 4a36cdf89f
commit 41a86fb8b7
1 changed files with 38 additions and 6 deletions

View File

@ -11,7 +11,11 @@ import com.ruoyi.device.domain.model.Dock;
import com.ruoyi.device.domain.model.DockAircraft; import com.ruoyi.device.domain.model.DockAircraft;
import com.ruoyi.device.domain.model.thingsboard.AttributeMap; import com.ruoyi.device.domain.model.thingsboard.AttributeMap;
import com.ruoyi.device.domain.model.thingsboard.DeviceInfo; import com.ruoyi.device.domain.model.thingsboard.DeviceInfo;
import com.ruoyi.device.domain.model.thingsboard.TelemetryMap;
import com.ruoyi.device.domain.model.thingsboard.TelemetryValue;
import com.ruoyi.device.domain.model.thingsboard.attributes.psdk.PsdkDevice;
import com.ruoyi.device.domain.model.thingsboard.constants.DeviceAttributes; import com.ruoyi.device.domain.model.thingsboard.constants.DeviceAttributes;
import com.ruoyi.device.domain.model.thingsboard.constants.DeviceTelemetry;
import com.ruoyi.device.service.enums.DeviceType; import com.ruoyi.device.service.enums.DeviceType;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -19,14 +23,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@Service @Service
@ -403,6 +403,38 @@ public class SynService {
} else { } else {
log.info("无人机已存在,跳过插入: deviceId={}, aircraftName={}", deviceId, deviceName); log.info("无人机已存在,跳过插入: deviceId={}, aircraftName={}", deviceId, deviceName);
} }
TelemetryMap telemetryMap = iThingsBoardDomain.getPredefinedDeviceTelemetry(deviceName);
Optional<TelemetryValue<List<PsdkDevice>>>
psdkDevicesOption = telemetryMap.get(DeviceTelemetry.PSDK_WIDGET_VALUES);
if(psdkDevicesOption.isPresent()) {
List<PsdkDevice> psdkDevices = psdkDevicesOption.get().getValue();
if(!CollectionUtils.isEmpty(psdkDevices)) {
for (PsdkDevice psdkDevice : psdkDevices) {
if(Objects.nonNull(psdkDevice.getSpeaker()) &&
Objects.nonNull(psdkDevice.getPsdk_sn()) && !psdkDevice.getPsdk_sn().isEmpty()) {
// 第一步 插入喊话器设备 没有则新增
// 判断 device_payload 挂载SN号 中如果不存在为Psdk_sn的数据则插入
// 插入 device_payload 挂载类为喊话器需要定义一个挂载的枚举类型
// 挂载显示名称为喊话器 挂载SN号string Psdk_snIOT中的设备ID 为空
// 更新 无人机挂载表
// 更新 device_aircraft_payload
// 判断改表中是否存在 payload_id device_payload 中主键的数据
// 存在的话判断 aircraft_id 字段是否等于 deviceName , 不等于则更新 aircraft_id
// 等于则什么都不做
// 表中不否存在 payload_id device_payload 中主键的数据则插入数据
// dock_id为 无人机表关联的基础表的主键
}
}
}
}
// 无人机已存在无需更新 // 无人机已存在无需更新
return existingAircraft.getAircraftId(); return existingAircraft.getAircraftId();
} }