|
@@ -3,12 +3,19 @@ package com.welampiot.service.impl;
|
|
|
import com.welampiot.dao.LampInfoLogDao;
|
|
|
import com.welampiot.dto.LampInfoLogDTO;
|
|
|
import com.welampiot.service.LampInfoLogService;
|
|
|
+import com.welampiot.utils.ToolUtils;
|
|
|
import com.welampiot.vo.AllAlarmInfoLogVO;
|
|
|
import com.welampiot.vo.LampLogVO;
|
|
|
+import lombok.val;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
|
public class LampInfoLogServiceImpl implements LampInfoLogService {
|
|
@@ -69,4 +76,99 @@ public class LampInfoLogServiceImpl implements LampInfoLogService {
|
|
|
public LampInfoLogDTO getBeforeTodayLampInfoLog(Integer lampId) {
|
|
|
return lampInfoLogDao.getBeforeTodayLampInfoLog(lampId);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public LampLogVO getNowDayLightTimeLogList(Integer lampId, Integer lastLightTime) {
|
|
|
+ List<LampInfoLogDTO> logList = lampInfoLogDao.getNowDayLampInfoLogList(lampId);
|
|
|
+
|
|
|
+ // 按时间分组,取每一个小时最后一个
|
|
|
+ Map<LocalDateTime, LampInfoLogDTO> logs = logList.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ log -> parseLocalDateTime(log.getUpdateTime()),
|
|
|
+ log -> log,
|
|
|
+ (existing, replacement) -> existing.getUpdateTime().compareTo(replacement.getUpdateTime()) > 0 ? existing : replacement));
|
|
|
+
|
|
|
+ // 初始化 dataList 和 dateList
|
|
|
+ List<Object> dataList = new ArrayList<>();
|
|
|
+ List<Object> dateList = new ArrayList<>();
|
|
|
+
|
|
|
+ String nowTime = ToolUtils.getNowTime();
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ LocalDateTime first = parseLocalDateTime(nowTime).withHour(0);
|
|
|
+ LocalDateTime end = parseLocalDateTime(nowTime).withHour(23);
|
|
|
+
|
|
|
+ Integer lightTime = lastLightTime;
|
|
|
+ for (LocalDateTime time = first; time.isBefore(end); time = time.plusHours(1)) {
|
|
|
+ LampInfoLogDTO current = logs.get(time);
|
|
|
+
|
|
|
+ if (current != null) {
|
|
|
+ int value = current.getWorkTimeTotal() - lightTime;
|
|
|
+ if (value < 0) value = current.getWorkTimeTotal();
|
|
|
+ dataList.add(value);
|
|
|
+ lightTime = current.getWorkTimeTotal();
|
|
|
+ } else {
|
|
|
+ dataList.add(0);
|
|
|
+ }
|
|
|
+ String timeStr = time.format(formatter);
|
|
|
+ dateList.add(timeStr);
|
|
|
+ }
|
|
|
+
|
|
|
+ LampLogVO lampLogVO = new LampLogVO();
|
|
|
+ lampLogVO.setDateList(dateList);
|
|
|
+ lampLogVO.setDataList(dataList);
|
|
|
+ return lampLogVO;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static LocalDateTime parseLocalDateTime(String dateStr) {
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ return LocalDateTime.parse(dateStr, formatter).withMinute(0).withSecond(0);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ String nowTime = "2024-12-13 14:01:15"; // 假设这是你从 ToolUtils.getNowTime() 获取的时间字符串
|
|
|
+ LocalDateTime first = parseLocalDateTime(nowTime).withHour(0);
|
|
|
+ LocalDateTime end = parseLocalDateTime(nowTime).withHour(23);
|
|
|
+ System.out.println("first = " + first.format(formatter));
|
|
|
+ System.out.println("end = " + end.format(formatter));
|
|
|
+ System.out.println("first = " + first.minusHours(1).format(formatter));
|
|
|
+
|
|
|
+ List<LampInfoLogDTO> list = new ArrayList<>();
|
|
|
+ val lampInfoLogDTO = new LampInfoLogDTO();
|
|
|
+ lampInfoLogDTO.setUpdateTime("2024-12-13 08:12:25");
|
|
|
+ lampInfoLogDTO.setWorkTimeTotal(234);
|
|
|
+
|
|
|
+ val lampInfoLogDTO1 = new LampInfoLogDTO();
|
|
|
+ lampInfoLogDTO1.setUpdateTime("2024-12-13 08:38:56");
|
|
|
+ lampInfoLogDTO1.setWorkTimeTotal(236);
|
|
|
+
|
|
|
+ val lampInfoLogDTO2 = new LampInfoLogDTO();
|
|
|
+ lampInfoLogDTO2.setUpdateTime("2024-12-13 10:12:25");
|
|
|
+ lampInfoLogDTO2.setWorkTimeTotal(238);
|
|
|
+
|
|
|
+ val lampInfoLogDTO3 = new LampInfoLogDTO();
|
|
|
+ lampInfoLogDTO3.setUpdateTime("2024-12-13 11:12:25");
|
|
|
+ lampInfoLogDTO3.setWorkTimeTotal(239);
|
|
|
+
|
|
|
+ val lampInfoLogDTO4 = new LampInfoLogDTO();
|
|
|
+ lampInfoLogDTO4.setUpdateTime("2024-12-13 12:22:23");
|
|
|
+ lampInfoLogDTO4.setWorkTimeTotal(240);
|
|
|
+
|
|
|
+ val lampInfoLogDTO5 = new LampInfoLogDTO();
|
|
|
+ lampInfoLogDTO5.setUpdateTime("2024-12-13 12:45:25");
|
|
|
+ lampInfoLogDTO5.setWorkTimeTotal(241);
|
|
|
+ list.add(lampInfoLogDTO);
|
|
|
+ list.add(lampInfoLogDTO1);
|
|
|
+ list.add(lampInfoLogDTO2);
|
|
|
+ list.add(lampInfoLogDTO3);
|
|
|
+ list.add(lampInfoLogDTO4);
|
|
|
+ list.add(lampInfoLogDTO5);
|
|
|
+
|
|
|
+ Map<LocalDateTime, LampInfoLogDTO> logs = list.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ log -> parseLocalDateTime(log.getUpdateTime()),
|
|
|
+ log -> log,
|
|
|
+ (existing, replacement) -> existing.getUpdateTime().compareTo(replacement.getUpdateTime()) > 0 ? existing : replacement));
|
|
|
+ System.out.println("logs = " + logs);
|
|
|
+ }
|
|
|
}
|