diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java
index 3b8b3b9fcf..27179073e8 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java
@@ -170,6 +170,7 @@ public class DeviceServiceImpl implements DeviceService {
for (DeviceModelRulesDO deviceModelRulesDO : deviceModelRulesDOList) {
DevicePointRulesDO devicePointRulesDO = new DevicePointRulesDO();
BeanUtils.copyProperties(deviceModelRulesDO, devicePointRulesDO);
+ devicePointRulesDO.setId(null);
devicePointRulesDO.setDeviceId(deviceId);
devicePointRulesDOList.add(devicePointRulesDO);
}
diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/device/DeviceMapper.xml b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/device/DeviceMapper.xml
index 3804d3e6db..df35f684d8 100644
--- a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/device/DeviceMapper.xml
+++ b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/device/DeviceMapper.xml
@@ -30,6 +30,9 @@
left join iot_device iod on mo.machine_id = iod.id
where mo.deleted = 0
and mo.machine_id is not null
+ and iod.id is not null
+ and iod.deleted = 0
+ and mo.deleted = 0
and mo.code like concat(concat('%', #{pageReqVO.lineNode}), '%')
diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/energydevice/EnergyDeviceServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/energydevice/EnergyDeviceServiceImpl.java
index 9157b7ad0b..487bb10d84 100644
--- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/energydevice/EnergyDeviceServiceImpl.java
+++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/energydevice/EnergyDeviceServiceImpl.java
@@ -313,9 +313,10 @@ public class EnergyDeviceServiceImpl implements EnergyDeviceService {
);
if (energyDevice == null || StringUtils.isBlank(energyDevice.getRules())) {
- return Collections.emptyList();
+ return buildEmptyLast7Hours(LocalDateTime.now());
}
+
// 2. 解析规则
List rules = JsonUtils.parseArray(energyDevice.getRules(), OperationRulesVO.class);
if (rules.isEmpty()) return Collections.emptyList();
@@ -371,6 +372,35 @@ public class EnergyDeviceServiceImpl implements EnergyDeviceService {
return result;
}
+
+ private List buildEmptyLast7Hours(LocalDateTime end) {
+ List result = new ArrayList<>();
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH");
+ LocalDateTime start = end.minusHours(7);
+
+ for (int i = 0; i < 7; i++) {
+ LocalDateTime hourTime = start.plusHours(i);
+ HourEnergyValueVO vo = new HourEnergyValueVO();
+ vo.setHour(hourTime.format(formatter));
+ vo.setValue(formatDouble(0D));
+ result.add(vo);
+ }
+ return result;
+ }
+
+ private List buildEmptyLast7Days(LocalDate endDate) {
+ List result = new ArrayList<>();
+ int days = 7;
+ for (int i = 0; i < days; i++) {
+ LocalDate day = endDate.minusDays(days - i).plusDays(1); // 确保顺序从过去到今天
+ DayEnergyValueVO vo = new DayEnergyValueVO();
+ vo.setDay(day.toString());
+ vo.setValue(formatDouble(0D));
+ result.add(vo);
+ }
+ return result;
+ }
+
@Override
public List latestSevenDaysStatistics(Long deviceTypeId, Long orgId) {
@@ -383,8 +413,9 @@ public class EnergyDeviceServiceImpl implements EnergyDeviceService {
.last("LIMIT 1")
);
+
if (energyDevice == null || StringUtils.isBlank(energyDevice.getRules())) {
- return Collections.emptyList();
+ return buildEmptyLast7Days(LocalDate.now());
}
// 解析规则
@@ -413,7 +444,7 @@ public class EnergyDeviceServiceImpl implements EnergyDeviceService {
List