package com.mes.device.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mes.device.entity.DeviceStatus; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.util.Date; import java.util.List; /** * 设备状态Mapper */ @Mapper public interface DeviceStatusMapper extends BaseMapper { /** * 根据设备ID获取最新的设备状态 */ @Select("SELECT * FROM device_status WHERE device_id = #{deviceId} " + "ORDER BY id DESC LIMIT 1") DeviceStatus getLatestByDeviceId(@Param("deviceId") String deviceId); /** * 更新设备状态(更新最新记录) */ @Update("UPDATE device_status ds1 " + "INNER JOIN (" + " SELECT MAX(id) as max_id FROM device_status WHERE device_id = #{deviceId}" + ") ds2 ON ds1.id = ds2.max_id " + "SET ds1.status = #{status}, ds1.last_heartbeat = #{lastHeartbeat} " + "WHERE ds1.device_id = #{deviceId}") int updateLatestStatus(@Param("deviceId") String deviceId, @Param("status") String status, @Param("lastHeartbeat") Date lastHeartbeat); /** * 根据设备ID列表获取最新的设备状态 */ @Select("") List getLatestByDeviceIds(@Param("deviceIds") List deviceIds); }