package com.ruoyi.iot.domain; import com.ruoyi.common.constant.IotConstants; import com.ruoyi.common.utils.NumberUtils; import com.ruoyi.ss.device.domain.enums.DeviceOutageWay; import lombok.Data; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Date; import java.util.List; /** * @author wjh * 2024/3/20 */ @Data public class CurrentDeviceData { private String id; private String title; private List datastreams; /** * 转换为设备信息 * @return */ public IotDeviceInfo parseDeviceInfo() { IotDeviceInfo device = IotDeviceInfo.newDefaultInstance(); device.setAt(new Date()); device.setMac(title); device.setId(id); if (CollectionUtils.isEmpty(datastreams)) { return device; } for (CurrentDatastream stream : datastreams) { String value = stream.getValue().toString(); switch (stream.getId()) { case "V": device.setV(NumberUtils.nonNullDecimal(value)); break; case "P": device.setP(NumberUtils.nonNullDecimal(value)); break; case "A": device.setA(NumberUtils.nonNullDecimal(value)); break; case "W": device.setW(NumberUtils.nonNullDecimal(value).divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP)); break; case "S": device.setS(value); break; case "M": device.setM(NumberUtils.nonNullDecimal(value).divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP)); break; case "SET": DeviceOutageWay deviceOutageWay = DeviceOutageWay.parse(value); device.setSet(deviceOutageWay.getValue()); break; case "TIME": device.setTime(NumberUtils.nonNullDecimal(value)); break; default: break; } } return device; } }