package com.common.mapper; import com.common.entity.DeviceCollectTask; import org.apache.ibatis.annotations.*; import java.util.List; import java.util.Map; @Mapper public interface DeviceCollectTaskMapper { /** * 根据ID查询采集任务 */ @Select("SELECT * FROM device_collect_task WHERE id = #{id}") DeviceCollectTask selectById(Integer id); /** * 查询所有采集任务 */ @Select("SELECT * FROM device_collect_task") List selectAll(); /** * 根据设备ID查询采集任务 */ @Select("SELECT * FROM device_collect_task WHERE device_id = #{deviceId}") List selectByDeviceId(Integer deviceId); /** * 根据方法类型查询采集任务 */ @Select("SELECT * FROM device_collect_task WHERE method = #{method}") List selectByMethod(Integer method); /** * 根据任务名称模糊查询 */ @Select("SELECT * FROM device_collect_task WHERE task_name LIKE CONCAT('%', #{taskName}, '%')") List selectByTaskNameLike(String taskName); /** * 查询成功的采集任务 */ @Select("SELECT * FROM device_collect_task WHERE last_success_time IS NOT NULL") List selectSuccessTasks(); /** * 查询失败的采集任务 */ @Select("SELECT * FROM device_collect_task WHERE last_failed_time IS NOT NULL") List selectFailedTasks(); /** * 多条件组合查询 */ List selectByCondition(DeviceCollectTask condition); /** * 插入采集任务 */ @Insert("INSERT INTO device_collect_task (created_at, updated_at, device_id, method, task_name, " + "first_time, last_success_time, last_failed_time, detail_id, epm, epm_peak, " + "process_architecture, task_count, recent_discover_time, epm_upper_limit) " + "VALUES (NOW(), NOW(), #{deviceId}, #{method}, #{taskName}, #{firstTime}, " + "#{lastSuccessTime}, #{lastFailedTime}, #{detailId}, #{epm}, #{epmPeak}, " + "#{processArchitecture}, #{taskCount}, #{recentDiscoverTime}, #{epmUpperLimit})") @Options(useGeneratedKeys = true, keyProperty = "id") int insert(DeviceCollectTask task); /** * 更新采集任务 */ @Update("UPDATE device_collect_task SET " + "updated_at = NOW(), " + "device_id = #{deviceId}, " + "method = #{method}, " + "task_name = #{taskName}, " + "first_time = #{firstTime}, " + "last_success_time = #{lastSuccessTime}, " + "last_failed_time = #{lastFailedTime}, " + "detail_id = #{detailId}, " + "epm = #{epm}, " + "epm_peak = #{epmPeak}, " + "process_architecture = #{processArchitecture}, " + "task_count = #{taskCount}, " + "recent_discover_time = #{recentDiscoverTime}, " + "epm_upper_limit = #{epmUpperLimit} " + "WHERE id = #{id}") int update(DeviceCollectTask task); /** * 删除采集任务 */ @Delete("DELETE FROM device_collect_task WHERE id = #{id}") int deleteById(Integer id); /** * 根据设备ID删除采集任务 */ @Delete("DELETE FROM device_collect_task WHERE device_id = #{deviceId}") int deleteByDeviceId(Integer deviceId); /** * 更新任务成功状态 */ @Update("UPDATE device_collect_task SET " + "last_success_time = NOW(), " + "updated_at = NOW(), " + "task_count = COALESCE(task_count, 0) + 1 " + "WHERE id = #{id}") int updateSuccessStatus(Integer id); /** * 更新任务失败状态 */ @Update("UPDATE device_collect_task SET " + "last_failed_time = NOW(), " + "updated_at = NOW() " + "WHERE id = #{id}") int updateFailedStatus(Integer id); /** * 更新EPM指标 */ @Update("UPDATE device_collect_task SET " + "epm = #{epm}, " + "epm_peak = GREATEST(COALESCE(epm_peak, 0), #{epm}), " + "updated_at = NOW() " + "WHERE id = #{id}") int updateEpm(@Param("id") Integer id, @Param("epm") Integer epm); /** * 统计设备采集任务数量 */ @Select("SELECT COUNT(*) FROM device_collect_task WHERE device_id = #{deviceId}") int countByDeviceId(Integer deviceId); /** * 获取设备的最新采集任务 */ @Select("SELECT * FROM device_collect_task WHERE device_id = #{deviceId} ORDER BY updated_at DESC LIMIT 1") DeviceCollectTask selectLatestByDeviceId(Integer deviceId); }