package com.bonus.sgzb.material.mapper;


import com.bonus.sgzb.base.api.domain.BackApplyInfo;
import com.bonus.sgzb.material.domain.ScrapApplyDetails;
import com.bonus.sgzb.base.api.domain.MachinePart;
import com.bonus.sgzb.material.domain.TmTask;
import com.bonus.sgzb.material.vo.ScrapApplyDetailsVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * 任务tm_taskMapper接口
 *
 * @author bonus
 * @date 2023-12-13
 */
@Mapper
public interface TaskMapper {
    /**
     * 查询任务tm_task
     *
     * @param taskId 任务tm_task主键
     * @return 任务tm_task
     */
    public TmTask selectTmTaskByTaskId(Long taskId);

    /**
     * 查询任务tm_task列表
     *
     * @param tmTask 任务tm_task
     * @return 任务tm_task集合
     */
    public List<TmTask> selectTmTaskList(TmTask tmTask);

    /**
     * 新增任务tm_task
     *
     * @param tmTask 任务tm_task
     * @return 结果
     */
    public int insertTmTask(TmTask tmTask);

    /**
     * 修改任务tm_task
     *
     * @param tmTask 任务tm_task
     * @return 结果
     */
    public int updateTmTask(TmTask tmTask);

    /**
     * 删除任务tm_task
     *
     * @param taskId 任务tm_task主键
     * @return 结果
     */
    public int deleteTmTaskByTaskId(Long taskId);

    /**
     * 批量删除任务tm_task
     *
     * @param taskIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTmTaskByTaskIds(Long[] taskIds);

    /**
     *获取TaskNum
     * @param date
     * @param taskType
     * @return
     */
    int selectTaskNumByMonth(@Param("date") Date date, @Param("taskType") Integer taskType);

    int insertSelective(TmTask bean);

    int insertAgreement(TmTask task);
    int updateTashStatus(TmTask task);

    int insertTmTaskByBackInfo(BackApplyInfo backApplyInfo);

    int insertAgreementByBackInfo(BackApplyInfo backApplyInfo);

    List<TmTask> getMaTypeDetails(BackApplyInfo backApplyInfo);

    MachinePart getMachineParts(TmTask typeId);

    /**
     * 获取任务编号
     *
     * @param nowDate
     * @param taskType
     * @return
     */
    String selectTaskNumByMonths(@Param("date") Date nowDate, @Param("taskType") Integer taskType);

    List<ScrapApplyDetailsVO> selectTmTaskListByDisposition(ScrapApplyDetails scrapApplyDetails);
}
