package com.ruoyi.web.modules.industryservice.mapper;

import java.util.Date;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.web.modules.industryservice.domain.BizYakDiseaseWarning;

/**
 * 牦牛疾病预警表 {@code biz_yak_disease_warning} Mapper。
 * <p>XML：{@code mapper/industryservice/BizYakDiseaseWarningMapper.xml}</p>
 */
public interface BizYakDiseaseWarningMapper
{
    /** 主键查询 */
    BizYakDiseaseWarning selectBizYakDiseaseWarningById(Long id);

    /**
     * 条件列表。
     * <p>支持牧场、类型、预警时间上下界、可见牧场集合、关键字等（见 XML {@code where}）。</p>
     */
    List<BizYakDiseaseWarning> selectBizYakDiseaseWarningList(BizYakDiseaseWarning query);

    /** 插入一条预警 */
    int insertBizYakDiseaseWarning(BizYakDiseaseWarning row);

    /**
     * 按牧场名 + 类型查某自然月内是否已有预警（历史去重/幂等辅助）。
     */
    BizYakDiseaseWarning selectMonthlyWarningByPastureName(@Param("pastureName") String pastureName,
            @Param("warningType") int warningType, @Param("monthStart") Date monthStart,
            @Param("monthEnd") Date monthEnd);

    /** 按数据来源 + 设备号查一条（第三方指标类去重） */
    BizYakDiseaseWarning selectByDataSourceAndDeviceNo(@Param("dataSource") String dataSource,
            @Param("deviceNo") String deviceNo);

    /** 更新预警内容字段（文案、测值、参考范围等） */
    int updateAlertContent(BizYakDiseaseWarning row);

    /** 按来源 + 设备号删除 */
    int deleteByDataSourceAndDeviceNo(@Param("dataSource") String dataSource, @Param("deviceNo") String deviceNo);

    /** 按来源 + 设备号批量删除 */
    int deleteByDataSourceAndDeviceNos(@Param("dataSource") String dataSource, @Param("deviceNos") List<String> deviceNos);
}
