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