package com.bonus.material.back.mapper;

import java.util.Date;
import java.util.List;

import com.bonus.material.back.domain.BackApplyDetails;
import com.bonus.material.back.domain.BackApplyInfo;
import com.bonus.material.back.domain.vo.MaCodeVo;
import com.bonus.material.settlement.domain.SltAgreementInfo;
import org.apache.ibatis.annotations.Param;

/**
 * 退料任务Mapper接口
 * 
 * @author xsheng
 * @date 2024-10-16
 */
public interface BackApplyInfoMapper {
    /**
     * 查询退料任务
     * 
     * @param id 退料任务主键
     * @return 退料任务
     */
    public BackApplyInfo selectBackApplyInfoById(Long id);

    /**
     * 查询退料任务列表
     * 
     * @param backApplyInfo 退料任务
     * @return 退料任务集合
     */
    public List<BackApplyInfo> selectBackApplyInfoList(BackApplyInfo backApplyInfo);

    /**
     * 新增退料任务
     * 
     * @param backApplyInfo 退料任务
     * @return 结果
     */
    public int insertBackApplyInfo(BackApplyInfo backApplyInfo);

    /**
     * 修改退料任务
     * 
     * @param backApplyInfo 退料任务
     * @return 结果
     */
    public int updateBackApplyInfo(BackApplyInfo backApplyInfo);

    /**
     * 删除退料任务
     * 
     * @param id 退料任务主键
     * @return 结果
     */
    public int deleteBackApplyInfoById(Long id);

    /**
     * 查询任务编号
     * @param date
     * @param taskType
     * @return
     */
    String selectTaskNumByMonth(@Param("date") Date date, @Param("taskType") Integer taskType);

    /**
     * 新增任务详情
     * @param details
     * @return
     */
    int insertBackApplyDetails(BackApplyDetails details);

    /**
     * 根据机具编码和类型查询机具是否存在
     * @param dto
     * @return
     */
    List<MaCodeVo> getMachineById(BackApplyInfo dto);

    /**
     * 根据任务id查询详情
     * @param id
     * @return
     */
    List<BackApplyDetails> selectBackApplyDetailsListByTaskId(Long id);

    /**
     * 根据设备编码查询设备信息
     * @param id
     * @return
     */
    List<MaCodeVo> selectByCode(Long id);

    /**
     * 新增机具退料详情
     * @param details
     * @return
     */
    int insertCheckDetails(BackApplyDetails details);

    /**
     * 删除退料主表
     * @param id
     * @return
     */
    int deleteBackApply(Long id);

    /**
     * 删除退料详情
     * @param id
     * @return
     */
    int deleteBackApplyDetails(Long id);

    /**
     * 删除机具退料详情
     * @param id
     * @return
     */
    int deleteCheckDetails(Long id);

    /**
     * 查询详情
     * @param backApplyInfo
     * @return
     */
    List<BackApplyInfo> selectBackDetails(BackApplyInfo backApplyInfo);

    /**
     * 更新任务状态
     * @param backApplyInfo
     * @return
     */
    int updateTaskStatus(BackApplyInfo backApplyInfo);

    /**
     * 更新退料单
     * @param backApplyInfo
     * @return
     */
    int updateBack(BackApplyInfo backApplyInfo);

    /**
     * 更新详情
     * @param backApplyInfo
     * @return
     */
    int updateBackDetails(BackApplyInfo backApplyInfo);

    /**
     * 更新机具退料详情
     * @param backApplyInfo
     * @return
     */
    int updateCheckDetails(BackApplyInfo backApplyInfo);

    /**
     * 查询维修列表
     * @param backApplyInfo
     * @return
     */
    List<BackApplyInfo> getWxList(BackApplyInfo backApplyInfo);

    /**
     * 查询维修单号
     * @param nowDate
     * @return
     */
    Integer selectTaskNumByMonthWx(@Param("date") Date nowDate);

    /**
     * 新增维修单
     * @param wx
     * @return
     */
    int insertRad(BackApplyInfo wx);

    /**
     * 查询结算信息
     * @param bean
     * @return
     */
    List<SltAgreementInfo> getStlInfo(BackApplyInfo bean);

    /**
     * 更新结算信息
     * @param info
     * @param record
     */
    void updateStlInfo(@Param("info") SltAgreementInfo info, @Param("record") BackApplyInfo record);

    /**
     * 更新结算信息2
     * @param info
     * @param record
     * @param backNum
     */
    void updateStlInfoTwo(@Param("info") SltAgreementInfo info,@Param("record") BackApplyInfo record, @Param("backNum") Integer backNum);

    /**
     * 新增结算信息
     * @param info
     * @param many
     */
    void insStlInfoTwo(@Param("info")SltAgreementInfo info, @Param("many")Integer many);

    /**
     * 更新详情
     * @param applyDetail
     * @return
     */
    int updateBackApplyDetails(BackApplyDetails applyDetail);
}
