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

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

/**
 * 养殖大户数据填报 Mapper（表 {@code biz_large_livestock_farmer}，物理删除）。
 */
public interface BizLargeLivestockFarmerMapper
{
    /** 主键查询 */
    BizLargeLivestockFarmer selectBizLargeLivestockFarmerById(Long id);

    /**
     * 唯一键冲突计数（手工新增/修改校验用）。
     *
     * @param excludeId 修改时排除自身主键；新增传 null
     */
    int countByUniqueExcludeId(@Param("statYear") Integer statYear, @Param("statMonth") Integer statMonth,
            @Param("villageDeptId") Long villageDeptId, @Param("enterpriseName") String enterpriseName,
            @Param("excludeId") Long excludeId);

    /**
     * 按唯一键查一条，供导入 upsert 判断更新或插入。
     * 唯一键：年 + 月 + 村 + 企业名称。
     */
    BizLargeLivestockFarmer selectByUnique(@Param("statYear") Integer statYear, @Param("statMonth") Integer statMonth,
            @Param("villageDeptId") Long villageDeptId, @Param("enterpriseName") String enterpriseName);

    /** 列表查询（支持年、月、乡镇、企业名称等条件） */
    List<BizLargeLivestockFarmer> selectBizLargeLivestockFarmerList(BizLargeLivestockFarmer query);

    /** 插入；使用自增主键回填 {@code id} */
    int insertBizLargeLivestockFarmer(BizLargeLivestockFarmer row);

    /** 按主键全量更新业务字段 */
    int updateBizLargeLivestockFarmer(BizLargeLivestockFarmer row);

    /** 按主键批量物理删除 */
    int deleteBizLargeLivestockFarmerByIds(@Param("ids") Long[] ids);
}
