From 1c7b2e67f624b15acc02e759c3396725c05c0599 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Thu, 29 Jan 2026 09:53:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=9B=BE24=E5=B0=8F=E6=97=B6?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E5=A4=84=E7=90=86=EF=BC=8C=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E5=8F=96=E6=B6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/DeviceDataBaStatusServiceImpl.java | 97 ------------------- 1 file changed, 97 deletions(-) diff --git a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java index 5bb8fcc..243b435 100644 --- a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java +++ b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java @@ -234,107 +234,10 @@ public class DeviceDataBaStatusServiceImpl implements DeviceDataBaStatusService lineData.setAttrCode(lineDataSearchParams.getAttrCodeList()[0]); lineData.getYData().put("common", yCommon); - fillToEndOfDay(lineData);//补全24小时的算法 - lineDataList.add(lineData); } return SimpleDataResponse.success(lineDataList); } - public static void fillToEndOfDay(LineData lineData) { - DateTimeFormatter DF = Constants.FORMATTER_YMDHMS; - - List xData = lineData.getXData(); - Map> yData = lineData.getYData(); - - // 至少 1 个点才能补 - if (xData == null || xData.isEmpty()) { - return; - } - - // 最后一个已有时间点 - LocalDateTime lastTime = LocalDateTime.parse( - xData.get(xData.size() - 1), DF - ); - - LocalDate date = lastTime.toLocalDate(); - - // 当天 00:00 - LocalDateTime startOfDay = date.atStartOfDay(); - - // 当天 24:00(次日 00:00) - LocalDateTime endOfDay = date.plusDays(1).atStartOfDay(); - - // 如果已经到 24 点,不补 - if (!lastTime.isBefore(endOfDay)) { - return; - } - - // 已有数据占据的时长(0 点 → 最后一个点) - long existSeconds = Duration.between(startOfDay, lastTime).getSeconds(); - long daySeconds = Duration.between(startOfDay, endOfDay).getSeconds(); // 86400 - - if (existSeconds <= 0 || daySeconds <= 0) { - return; - } - - int existCount = xData.size(); - - // 等比例推算全天应有点数 - double ratio = (double) existSeconds / daySeconds; - int totalCount = (int) Math.ceil(existCount / ratio); - int appendCount = totalCount - existCount; - - if (appendCount <= 0) { - return; - } - - // 防止点数爆炸 - int MAX_APPEND = 300; - appendCount = Math.min(appendCount, MAX_APPEND); - - // 剩余可补时长 - long appendSeconds = Duration.between(lastTime, endOfDay).getSeconds(); - - // 计算步长(兜底) - long stepSeconds = appendSeconds / appendCount; - if (stepSeconds <= 0) { - stepSeconds = appendSeconds; - } - - LocalDateTime cursor = lastTime; - boolean appended = false; - - // 按比例补点 - for (int i = 0; i < appendCount; i++) { - cursor = cursor.plusSeconds(stepSeconds); - - if (!cursor.isBefore(endOfDay)) { - break; - } - - xData.add(cursor.format(DF)); - appended = true; - - for (List series : yData.values()) { - series.add(null); - } - } - - // 保底:如果最后一个点仍然 < 23:59:59,强制补一个 - LocalDateTime finalTime = LocalDateTime.parse( - xData.get(xData.size() - 1), DF - ); - - LocalDateTime lastSecondOfDay = endOfDay.minusSeconds(1); - - if (finalTime.isBefore(lastSecondOfDay)) { - xData.add(lastSecondOfDay.format(DF)); - for (List series : yData.values()) { - series.add(null); - } - } - } - }