smart-switch-java/smart-switch-service/src/main/java/com/ruoyi/iot/domain/CurrentDeviceData.java

68 lines
2.1 KiB
Java
Raw Normal View History

2024-04-23 11:19:24 +08:00
package com.ruoyi.iot.domain;
2024-04-19 16:36:24 +08:00
import com.ruoyi.common.utils.NumberUtils;
2024-04-23 11:19:24 +08:00
import com.ruoyi.ss.device.domain.enums.DeviceOutageWay;
2024-04-19 16:36:24 +08:00
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<CurrentDatastream> datastreams;
/**
* 转换为设备信息
* @return
*/
public IotDeviceInfo parseDeviceInfo() {
IotDeviceInfo device = IotDeviceInfo.newDefaultInstance();
device.setAt(new Date());
device.setMac(title);
device.setId(id);
2024-04-23 11:19:24 +08:00
if (CollectionUtils.isEmpty(datastreams)) {
return device;
}
2024-05-06 18:06:58 +08:00
2024-04-19 16:36:24 +08:00
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":
2024-05-06 18:06:58 +08:00
device.setW(NumberUtils.nonNullDecimal(value).divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP));
2024-04-19 16:36:24 +08:00
break;
case "S":
device.setS(value);
break;
case "M":
2024-05-06 18:06:58 +08:00
device.setM(NumberUtils.nonNullDecimal(value).divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP));
2024-04-19 16:36:24 +08:00
break;
case "SET":
DeviceOutageWay deviceOutageWay = DeviceOutageWay.parse(value);
device.setSet(deviceOutageWay.getValue());
break;
default:
break;
}
}
return device;
}
}