diff --git a/src/main/java/com/ruoyi/device/service/impl/SynService.java b/src/main/java/com/ruoyi/device/service/impl/SynService.java index 0d55a6c..351948d 100644 --- a/src/main/java/com/ruoyi/device/service/impl/SynService.java +++ b/src/main/java/com/ruoyi/device/service/impl/SynService.java @@ -11,7 +11,11 @@ import com.ruoyi.device.domain.model.Dock; import com.ruoyi.device.domain.model.DockAircraft; import com.ruoyi.device.domain.model.thingsboard.AttributeMap; 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.DeviceTelemetry; import com.ruoyi.device.service.enums.DeviceType; import org.slf4j.Logger; 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.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import java.util.regex.Pattern; @Service @@ -403,6 +403,38 @@ public class SynService { } else { log.info("无人机已存在,跳过插入: deviceId={}, aircraftName={}", deviceId, deviceName); } + + TelemetryMap telemetryMap = iThingsBoardDomain.getPredefinedDeviceTelemetry(deviceName); + + Optional>> + psdkDevicesOption = telemetryMap.get(DeviceTelemetry.PSDK_WIDGET_VALUES); + + if(psdkDevicesOption.isPresent()) { + List 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_sn,IOT中的设备ID 为空 + // 更新 无人机挂载表 表 + + + // 更新 device_aircraft_payload 表 + // 判断改表中是否存在 payload_id 为 device_payload 中主键的数据 + // 存在的话,判断 aircraft_id 字段是否等于 deviceName , 不等于则更新 aircraft_id + // 等于则什么都不做; + // 表中不否存在 payload_id 为 device_payload 中主键的数据,则插入数据 + // dock_id为 无人机表关联的基础表的主键 + + } + } + } + } + + // 无人机已存在,无需更新 return existingAircraft.getAircraftId(); }