From df7c73dc7f577eaadcc698b711fe30d08855aa83 Mon Sep 17 00:00:00 2001 From: "review512jwy@163.com" <“review512jwy@163.com”> Date: Thu, 9 Apr 2026 10:51:55 +0800 Subject: [PATCH] =?UTF-8?q?main=E8=AE=BE=E5=A4=87=E5=92=8Csub=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=EF=BC=8C=E5=9B=BE=E8=A1=A8=E6=95=B0=E6=8D=AE=E9=80=89?= =?UTF-8?q?=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../back/dto/device/LineDataSearchParams.java | 3 +++ .../dongjian/dashboard/back/vo/data/BaseData.java | 3 +++ .../impl/DeviceDataAccumulateServiceImpl.java | 9 ++++++++- .../service/impl/DeviceDataBaStatusServiceImpl.java | 12 ++++++++++-- .../service/impl/DeviceDataMeasureServiceImpl.java | 13 +++++++++---- 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/device/LineDataSearchParams.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/device/LineDataSearchParams.java index fe2a1a2..1ed005b 100644 --- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/device/LineDataSearchParams.java +++ b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/device/LineDataSearchParams.java @@ -6,6 +6,9 @@ import lombok.Data; @Data public class LineDataSearchParams { + @Schema(description = "设备源,1-main,2-sub", example = "2") + private Integer deviceSource; + @Schema(description = "device ID") private String deviceId; diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/BaseData.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/BaseData.java index 3c72960..45e936c 100644 --- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/BaseData.java +++ b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/vo/data/BaseData.java @@ -65,4 +65,7 @@ public class BaseData { @Schema(description = "数据小数位数", example = "2") private Integer dashboardDecimalPlaces; + @Schema(description = "设备源,1-main,2-sub", example = "2") + private Integer deviceSource; + } diff --git a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAccumulateServiceImpl.java b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAccumulateServiceImpl.java index 564934e..4e248b1 100644 --- a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAccumulateServiceImpl.java +++ b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataAccumulateServiceImpl.java @@ -168,8 +168,10 @@ public class DeviceDataAccumulateServiceImpl implements DeviceDataAccumulateServ //*** 填充今天/昨天/去年值 **// // 今天值,要先看备用S设备,有S的话优先用这个 + boolean subIsNewer = todayDeviceIds.contains(sDeviceId); + data.setDeviceSource(subIsNewer ? 2 : 1); data.setCumulativeValue(CommonUtil.formatDecimal( - getIncrement(todayDeviceIds.contains(sDeviceId) ? todayMap.get(sDeviceId) : todayMap.get(deviceId), DeviceIncrement::getTodayIncrement), + getIncrement(subIsNewer ? todayMap.get(sDeviceId) : todayMap.get(deviceId), DeviceIncrement::getTodayIncrement), data.getDashboardDecimalPlaces()) ); data.setYesterdayValue(CommonUtil.formatDecimal(getIncrement(yesterdayMap.get(deviceId), DeviceIncrement::getYesterdayIncrement), data.getDashboardDecimalPlaces())); @@ -197,6 +199,11 @@ public class DeviceDataAccumulateServiceImpl implements DeviceDataAccumulateServ @Override public SimpleDataResponse> getLineData(Integer searchType, LineDataSearchParams lineDataSearchParams, Long companyId, Long userId, Integer languageType) { + if (2 == lineDataSearchParams.getDeviceSource()) { + Map deviceId85ToSMap = commonOpt.buildDeviceId85ToSMap(List.of(lineDataSearchParams.getDeviceId())); + lineDataSearchParams.setDeviceId(deviceId85ToSMap.get(lineDataSearchParams.getDeviceId())); + } + if (null == searchType) { searchType = 2;//默认全部数据 } 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 f352ac8..d89fb54 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 @@ -159,7 +159,9 @@ public class DeviceDataBaStatusServiceImpl implements DeviceDataBaStatusService // data.setStatus111(commonOpt.buildStatus111(deviceId, deviceId85To111Map, deviceInfo111Map, realtime111Map, objectMapper)); data.setStatus111(commonOpt.buildRawFirstValue(deviceId, deviceId85To111Map, realtime111Map, objectMapper)); - if(sNewerDeviceIds.contains(sDeviceId)) { + boolean subIsNewer = sNewerDeviceIds.contains(sDeviceId); + data.setDeviceSource(subIsNewer ? 2 : 1); + if(subIsNewer) { data.setRunningStatus(commonOpt.mapLastValue(objectMapper, sDeviceInfo.get(sDeviceId).getDataMapping(), realtimeSMap.get(sDeviceId))); } else { data.setRunningStatus(commonOpt.mapLastValue(objectMapper, data.getDataMapping(), realtime85Map.get(deviceId))); @@ -168,7 +170,7 @@ public class DeviceDataBaStatusServiceImpl implements DeviceDataBaStatusService // 判断设备是否在 favorited_device 表中 data.setCollected(favoritedDeviceIds.contains(deviceId) ? 1 : 0); //停止、运行状态 - if(sNewerDeviceIds.contains(sDeviceId)) { + if(subIsNewer) { data.setStopRun(commonOpt.judgeStopRun(objectMapper, realtimeSMap.get(sDeviceId))); } else { data.setStopRun(commonOpt.judgeStopRun(objectMapper, realtime85Map.get(deviceId))); @@ -190,6 +192,12 @@ public class DeviceDataBaStatusServiceImpl implements DeviceDataBaStatusService @Override public SimpleDataResponse> getLineData(Integer searchType, LineDataSearchParams lineDataSearchParams, Long companyId, Long userId, Integer languageType) { + + if (2 == lineDataSearchParams.getDeviceSource()) { + Map deviceId85ToSMap = commonOpt.buildDeviceId85ToSMap(List.of(lineDataSearchParams.getDeviceId())); + lineDataSearchParams.setDeviceId(deviceId85ToSMap.get(lineDataSearchParams.getDeviceId())); + } + List lineDataList = new ArrayList<>(); LineData lineData = new LineData(); diff --git a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataMeasureServiceImpl.java b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataMeasureServiceImpl.java index 89fc2a9..14366a4 100644 --- a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataMeasureServiceImpl.java +++ b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataMeasureServiceImpl.java @@ -189,10 +189,9 @@ public class DeviceDataMeasureServiceImpl implements DeviceDataMeasureService { } // 获取所有 MeasurementValue 并用逗号连接(不需要日期过滤) // 20260109需求,对测量值,要先看备用S设备,有S的话优先用这个,最大值最小值不需要 - List source = - (sortedRealtimeS != null && !sortedRealtimeS.isEmpty()) - ? sortedRealtimeS - : sortedRealtime; + boolean subIsNewer = (sortedRealtimeS != null && !sortedRealtimeS.isEmpty()); + data.setDeviceSource(subIsNewer ? 2 : 1); + List source = subIsNewer ? sortedRealtimeS : sortedRealtime; String measurementValues = source.stream() .map(DashboardRealtimeMeasure::getUploadValue) // 提取每个 UploadValue .filter(StringUtils::isNotBlank) // 过滤空值 @@ -235,6 +234,12 @@ public class DeviceDataMeasureServiceImpl implements DeviceDataMeasureService { @Override public SimpleDataResponse> getLineData(Integer searchType, LineDataSearchParams lineDataSearchParams, Long companyId, Long userId, Integer languageType) { + + if (2 == lineDataSearchParams.getDeviceSource()) { + Map deviceId85ToSMap = commonOpt.buildDeviceId85ToSMap(List.of(lineDataSearchParams.getDeviceId())); + lineDataSearchParams.setDeviceId(deviceId85ToSMap.get(lineDataSearchParams.getDeviceId())); + } + if (null == searchType) { searchType = 2;//默认全部数据 }