fix:修改gc问题

liutao_branch
HuangHuiKang 1 month ago
parent 44b13a750d
commit 0eb8ae4ac1

@ -1685,54 +1685,59 @@ public class TDengineService {
return Collections.emptyList(); return Collections.emptyList();
} }
List<Object> params = new ArrayList<>(); // 优化:分组查询每个设备的最新记录
StringBuilder sql = new StringBuilder( List<DeviceOperationRecordDO> allResults = new ArrayList<>();
"SELECT * FROM besure_server.iot_device_operation_record " +
"WHERE deleted = 0 AND device_id IN ("
);
for (int i = 0; i < deviceIds.size(); i++) { for (Long deviceId : deviceIds) {
if (i > 0) sql.append(", "); StringBuilder sql = new StringBuilder(
sql.append("?"); "SELECT * FROM besure_server.iot_device_operation_record " +
params.add(deviceIds.get(i)); "WHERE deleted = 0 AND device_id = ? "
} );
sql.append(") ");
if (CollectionUtils.isNotEmpty(ruleCodes)) { List<Object> params = new ArrayList<>();
sql.append("AND rule IN ("); params.add(deviceId);
for (int i = 0; i < ruleCodes.size(); i++) {
if (i > 0) sql.append(", "); if (CollectionUtils.isNotEmpty(ruleCodes)) {
sql.append("?"); sql.append("AND rule IN (");
params.add(ruleCodes.get(i)); for (int i = 0; i < ruleCodes.size(); i++) {
if (i > 0) sql.append(", ");
sql.append("?");
params.add(ruleCodes.get(i));
}
sql.append(") ");
} }
sql.append(") ");
}
sql.append("ORDER BY create_time DESC"); sql.append("ORDER BY create_time DESC LIMIT 1"); // 每个设备只取最新1条
try { try {
return jdbcTemplate.query(sql.toString(), params.toArray(), (rs, rowNum) -> { List<DeviceOperationRecordDO> deviceResults = jdbcTemplate.query(
DeviceOperationRecordDO d = new DeviceOperationRecordDO(); sql.toString(),
// d.setTs(rs.getTimestamp("ts") != null ? rs.getTimestamp("ts").toLocalDateTime() : null); params.toArray(),
// d.setId(rs.getLong("id")); (rs, rowNum) -> {
d.setDeviceId(rs.getLong("device_id")); DeviceOperationRecordDO d = new DeviceOperationRecordDO();
d.setModelId(rs.getLong("model_id")); d.setDeviceId(rs.getLong("device_id"));
d.setRule(rs.getString("rule")); d.setModelId(rs.getLong("model_id"));
d.setAddressValue(rs.getString("address_value")); d.setRule(rs.getString("rule"));
d.setCreator(rs.getString("creator")); d.setAddressValue(rs.getString("address_value"));
d.setCreateTime(rs.getTimestamp("create_time") != null ? rs.getTimestamp("create_time").toLocalDateTime() : null); d.setCreator(rs.getString("creator"));
d.setUpdater(rs.getString("updater")); d.setCreateTime(rs.getTimestamp("create_time") != null ? rs.getTimestamp("create_time").toLocalDateTime() : null);
d.setUpdateTime(rs.getTimestamp("update_time") != null ? rs.getTimestamp("update_time").toLocalDateTime() : null); d.setUpdater(rs.getString("updater"));
d.setDeleted(rs.getBoolean("deleted")); d.setUpdateTime(rs.getTimestamp("update_time") != null ? rs.getTimestamp("update_time").toLocalDateTime() : null);
d.setTenantId(String.valueOf(rs.getLong("tenant_id"))); d.setDeleted(rs.getBoolean("deleted"));
d.setRuleId(rs.getLong("rule_id")); d.setTenantId(String.valueOf(rs.getLong("tenant_id")));
return d; d.setRuleId(rs.getLong("rule_id"));
}); return d;
});
allResults.addAll(deviceResults);
} catch (Exception e) {
log.error("查询设备{}的最新记录失败", deviceId, e);
}
} catch (Exception e) {
log.error("查询失败", e);
return Collections.emptyList();
} }
return allResults;
} }
/** /**

Loading…
Cancel
Save