From cbc80dd6d12355f8a7e40e7335174c3bdb4cf982 Mon Sep 17 00:00:00 2001 From: HuangHuiKang Date: Fri, 27 Feb 2026 18:04:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E5=A4=A7=E5=B1=8F=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E8=AE=B0=E5=BD=95GC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DeviceOperationRecordMapper.java | 2 +- .../iot/service/device/DeviceServiceImpl.java | 22 ++++++------------- .../DeviceOperationRecordMapper.xml | 17 ++++++++++++++ 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/deviceoperationrecord/DeviceOperationRecordMapper.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/deviceoperationrecord/DeviceOperationRecordMapper.java index 22c260db6..375f74125 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/deviceoperationrecord/DeviceOperationRecordMapper.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/deviceoperationrecord/DeviceOperationRecordMapper.java @@ -36,5 +36,5 @@ public interface DeviceOperationRecordMapper extends BaseMapperX selectLatestByDeviceAndRule(@Param("deviceIds") List deviceIds, @Param("ruleCodes") List ruleCodes); - + List selectLatestRecords(@Param("deviceIds") Collection deviceIds); } \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java index dd9c458fa..1ce799cbc 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/DeviceServiceImpl.java @@ -1330,22 +1330,14 @@ public class DeviceServiceImpl implements DeviceService { return Collections.emptyMap(); } - // 查询所有设备的最新运行记录 - List records = deviceOperationRecordMapper.selectList( - Wrappers.lambdaQuery() - .in(DeviceOperationRecordDO::getDeviceId, deviceIds) - .orderByDesc(DeviceOperationRecordDO::getCreateTime)); - - // 构建设备ID到最新记录的映射 - Map latestRecordMap = new HashMap<>(); - for (DeviceOperationRecordDO record : records) { - // 只保留每个设备的第一条记录(因为已经按创建时间倒序排序) - if (!latestRecordMap.containsKey(record.getDeviceId())) { - latestRecordMap.put(record.getDeviceId(), record); - } - } + List records = deviceOperationRecordMapper.selectLatestRecords(deviceIds); - return latestRecordMap; + // 直接用 Stream 转 Map + return records.stream() + .collect(Collectors.toMap( + DeviceOperationRecordDO::getDeviceId, + Function.identity() + )); } /** diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/deviceoperationrecord/DeviceOperationRecordMapper.xml b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/deviceoperationrecord/DeviceOperationRecordMapper.xml index 609456924..3725d2229 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/deviceoperationrecord/DeviceOperationRecordMapper.xml +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/resources/mapper/deviceoperationrecord/DeviceOperationRecordMapper.xml @@ -73,4 +73,21 @@ WHERE tmp.rn = 1 + \ No newline at end of file