package com.ruoyi.app.mapper;

import java.util.List;

import com.ruoyi.app.DTO.HookBindBatchListDTO;
import com.ruoyi.app.DTO.HookBindDetailDTO;
import com.ruoyi.app.domain.HookBind;
import com.ruoyi.app.domain.request.EditHookBindBatch;
import com.ruoyi.app.domain.request.ReqHookBind;
import com.ruoyi.app.domain.request.ReqHookBindList;

/**
 * 吊钩绑定Mapper接口
 * 
 * @author coede
 * @date 2025-03-19
 */
public interface HookBindMapper 
{
    /**
     * 查询吊钩绑定
     * 
     * @param batchNo 批次
     * @return 吊钩绑定
     */
    public HookBindBatchListDTO selectHookBindByBatch(String batchNo);

    /**
     * 查询吊钩绑定详情-仅修改使用无其他判断逻辑
     *
     * @param req 条件
     * @return 吊钩绑定
     */
    public List<HookBindDetailDTO> selectHookBindOnlyDetail(ReqHookBind req);

    /**
     * 查询吊钩绑定详情
     *
     * @param req 条件
     * @return 吊钩绑定
     */
    public List<HookBindDetailDTO> selectHookBindDetail(ReqHookBind req);

    /**
     * 查询吊钩绑定列表
     * 
     * @param hookBind 吊钩绑定
     * @return 吊钩绑定集合
     */
    public List<HookBind> selectHookBindList(HookBind hookBind);

    /**
     * 按批次查询吊钩绑定列表
     *
     * @param req 吊钩绑定
     * @return 吊钩绑定集合
     */
    public List<HookBindBatchListDTO> selectHookBindListByBatch(ReqHookBindList req);

    /**
     * 新增吊钩绑定
     * 
     * @param hookBind 吊钩绑定
     * @return 结果
     */
    public int insertHookBind(HookBind hookBind);

    /**
     * 批量新增吊钩绑定
     *
     * @param list 吊钩绑定
     * @return 结果
     */
    public int insertHookBindBatch(List<HookBind> list);

    /**
     * 校验分销批次的肉商是否唯一
     *
     * @param hookBind 吊钩绑定
     * @return 结果
     */
    public HookBind checkHookNoUnique(HookBind hookBind);

    /**
     * 修改吊钩绑定
     * 
     * @param hookBind 吊钩绑定
     * @return 结果
     */
    public int updateHookBind(HookBind hookBind);

    /**
     * 批量修改吊钩绑定
     *
     * @param req 吊钩绑定
     * @return 结果
     */
    public int updateHookBindBatch(EditHookBindBatch req);

    /**
     * 删除吊钩绑定
     * 
     * @param batchNo 吊钩绑定批次编号
     * @return 结果
     */
    public int deleteHookBindById(String batchNo);

    /**
     * 批量删除吊钩绑定
     * 
     * @param batchNos 需要删除的数据吊钩绑定批次编号集合
     * @return 结果
     */
    public int deleteHookBindByIds(String[] batchNos);

    /**
     * 根据血码统计吊钩绑定数量
     *
     * @param slaughterCode 血码
     * @return 结果
     */
    public int countHookBindBySlaughterCode(String slaughterCode);

    /**
     * 根据血码统计吊钩绑定数量
     *
     * @param batchNo 批次
     * @return 结果
     */
    public String[] selectHookNoByBatchNo(String batchNo);

    /**
     * 清除绑定关系
     *
     * @return 结果
     */
    public int cleanHookBind();
}
