From 4915378334fd8bd304879d13be74bc565dfa5c94 Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Fri, 23 Jan 2026 11:09:51 +0800 Subject: [PATCH] =?UTF-8?q?feat(base):=20=E6=9B=B4=E6=96=B0=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E5=8F=82=E6=95=B0=E5=80=BC=E6=95=B0=E6=8D=AE=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E5=B1=82=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 优化最新参数聚合查询逻辑,支持按设备代码和参数代码分组获取最新记录 - 新增时间窗口过滤条件,提升查询性能和数据准确性 - 扩展设备状态统计功能,新增报警状态统计支持 - 更新三色灯状态查询逻辑,包含报警状态并优化时间范围筛选 - 添加数据库并行查询提示,提升大数据量查询性能 - 完善设备状态映射,增加报警状态及其对应的状态码排序 --- .../mapper/base/BaseDeviceParamValMapper.xml | 67 +++++++++++++------ 1 file changed, 48 insertions(+), 19 deletions(-) diff --git a/aucma-base/src/main/resources/mapper/base/BaseDeviceParamValMapper.xml b/aucma-base/src/main/resources/mapper/base/BaseDeviceParamValMapper.xml index 1fbbe7a..ddc19b8 100644 --- a/aucma-base/src/main/resources/mapper/base/BaseDeviceParamValMapper.xml +++ b/aucma-base/src/main/resources/mapper/base/BaseDeviceParamValMapper.xml @@ -24,13 +24,13 @@ @@ -92,7 +92,7 @@ - + SELECT * + FROM ( + SELECT + record_id, param_code, device_code, device_id, param_name, param_value, + collect_time, record_time, + ROW_NUMBER() OVER (ORDER BY device_code, param_code) AS row_num + FROM ( + SELECT + record_id, param_code, device_code, device_id, param_name, param_value, + collect_time, record_time, + ROW_NUMBER() OVER (PARTITION BY device_code, param_code ORDER BY NVL(record_time, collect_time) DESC) AS rn + FROM base_device_param_val B + WHERE 1=1 + AND device_code = #{deviceCode} + AND param_code = #{paramCode} + AND device_id = #{deviceId} + AND param_name LIKE '%' || #{paramName} || '%' + + + AND NVL(record_time, collect_time) BETWEEN #{beginTime} AND #{endTime} + + ) WHERE rn = 1 + ) WHERE row_num <= 200 WITH today_latest AS ( - SELECT + SELECT /*+ PARALLEL(4) */ device_code, param_value, ROW_NUMBER() OVER (PARTITION BY device_code ORDER BY NVL(record_time, collect_time) DESC) AS rn FROM base_device_param_val - WHERE TRUNC(collect_time) = TRUNC(SYSDATE) - AND param_name = '机台状态-开机时间' + WHERE param_name = '机台状态-开机时间' + AND collect_time >= TRUNC(SYSDATE) AND collect_time < TRUNC(SYSDATE) + 1 ) SELECT d.device_code AS deviceCode,