package com.aucma.base.mapper;

import com.aucma.base.domain.ProcessAlert;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 工艺预警Mapper接口
 *
 * @author Yinq
 * @date 2025-12-30
 */
public interface ProcessAlertMapper {
    /**
     * 查询工艺预警
     *
     * @param alertId 工艺预警主键
     * @return 工艺预警
     */
    public ProcessAlert selectProcessAlertByAlertId(@Param("alertId") Long alertId);

    /**
     * 查询工艺预警列表
     *
     * @param processAlert 工艺预警
     * @return 工艺预警集合
     */
    public List<ProcessAlert> selectProcessAlertList(ProcessAlert processAlert);

    /**
     * 新增工艺预警
     *
     * @param processAlert 工艺预警
     * @return 结果
     */
    public int insertProcessAlert(ProcessAlert processAlert);

    /**
     * 修改工艺预警
     *
     * @param processAlert 工艺预警
     * @return 结果
     */
    public int updateProcessAlert(ProcessAlert processAlert);

    /**
     * 删除工艺预警
     *
     * @param alertId 工艺预警主键
     * @return 结果
     */
    public int deleteProcessAlertByAlertId(@Param("alertId") Long alertId);

    /**
     * 批量删除工艺预警
     *
     * @param alertIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteProcessAlertByAlertIds(@Param("alertIds") Long[] alertIds);

    /**
     * 查询指定设备和参数的未处理预警
     *
     * @param deviceCode 设备编码
     * @param paramCode 参数编码
     * @return 工艺预警
     */
    public ProcessAlert selectUnhandledAlert(@Param("deviceCode") String deviceCode, @Param("paramCode") String paramCode);

    /**
     * 查询指定设备和参数的最新预警（包含已处理）
     *
     * @param deviceCode 设备编码
     * @param paramCode 参数编码
     * @return 工艺预警
     */
    public ProcessAlert selectLatestAlert(@Param("deviceCode") String deviceCode, @Param("paramCode") String paramCode);
}
