|
|
|
|
@ -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<OperationRulesVO> 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<HourEnergyValueVO> buildEmptyLast7Hours(LocalDateTime end) {
|
|
|
|
|
List<HourEnergyValueVO> 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<DayEnergyValueVO> buildEmptyLast7Days(LocalDate endDate) {
|
|
|
|
|
List<DayEnergyValueVO> 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<DayEnergyValueVO> 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<Map<String, Object>> rows =
|
|
|
|
|
tDengineService.queryLastDataByDaySafe(deviceIds, startDate, days);
|
|
|
|
|
|
|
|
|
|
// day -> deviceId -> cache
|
|
|
|
|
|
|
|
|
|
Map<String, Map<Long, TimePointCache>> dayCacheMap = new LinkedHashMap<>();
|
|
|
|
|
|
|
|
|
|
for (Map<String, Object> row : rows) {
|
|
|
|
|
|