package com.bonus.material.back.service;

import java.util.List;

import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.back.domain.*;
import com.bonus.material.back.domain.vo.*;

/**
 * 退料任务Service接口
 *
 * @author xsheng
 * @date 2024-10-16
 */
public interface IBackApplyInfoService {
    /**
     * 查询退料任务
     *
     * @param id 退料任务主键
     * @return 退料任务
     */
    public AjaxResult selectBackApplyInfoById(Long id, String keyWord);

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

    /**
     * 更新电子签名
     */
    int updateSignById(BackApplyInfo backApplyInfo);

    /**
     * 新增退料任务
     *
     * @param dto 退料任务
     * @return 结果
     */
    public AjaxResult insertBackApplyInfo(BackApplyRequestVo dto);

    /**
     * 修改退料任务
     *
     * @param dto 退料任务
     * @return 结果
     */
    public AjaxResult updateBackApplyInfo(BackApplyRequestVo dto);

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

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

    /**
     * 提交退料申请
     * @param backApplyInfo
     * @return
     */
    AjaxResult submitBackApply(BackApplyInfo backApplyInfo);

    /**
     * 确认打印
     */
    AjaxResult editPrintStatus(Long id);

    /**
     * 新增退料任务app
     * @param dto
     * @return
     */
    AjaxResult insertApp(BackAppRequestVo dto);

    /**
     * app内层删除退料任务
     * @param backApplyInfo
     * @return
     */
    AjaxResult delete(BackApplyInfo backApplyInfo);

    /**
     * app编码检索
     * @param dto
     * @return
     */
    AjaxResult getMachine(BackApplyInfo dto);

    /**
     * app查询单个类型设备编码
     * @param backApplyInfo
     * @return
     */
    AjaxResult getMaCodeList(BackApplyInfo backApplyInfo);

    /**
     * app编码查看保存
     * @param maCode
     * @return
     */
    AjaxResult updateMaCode(MaCode maCode);

    /**
     * 查询工程是否结算
     * @param backApplyInfo
     * @return
     */
    AjaxResult selectIsSltById(BackApplyInfo backApplyInfo);

    /**
     * 根据退料任务id查询退料详情
     * @param backApplyDetails
     * @return
     */
    List<BackApplyDetails> getDetailsById(BackApplyDetails backApplyDetails);

    /**
     * app退料退回
     * @param backApplyDetails
     * @return
     */
    AjaxResult backOutBack(BackApplyDetails backApplyDetails);

    /**
     * 查询修试查询-退料查询列表
     * @param dto
     * @return
     */
    List<BackApplyVo> selectBackApplyList(BackApplyVo dto);

    /**
     * 查询修试查询-退料查询二级列表
     * @param dto
     * @return
     */
    BackApplyInfoVo selectSecondList(BackApplyInfoVo dto);

    /**
     * 根据单位和工程id查询领料机具
     * @param dto
     * @return
     */
    AjaxResult selectMachineById(BackApplyInfo dto);

    List<MaCodeVo> selectMachineByIdList(BackApplyInfo dto);

    /**
     * APP删除退料任务
     * @param id
     * @return
     */
    AjaxResult deleteByApp(Long id);

    AjaxResult getMachineByCode(BackApplyInfo dto);


    /**
     * 新增装卸单
     * @param bean
     * @return
     */
    AjaxResult addHandlingOrder(HandlingOrder bean);

    /**
     *装卸单列表展示
     * @param bean
     * @return
     */
    List<HandlingOrder> getHandlingOrderList(HandlingOrder bean);

    /**
     * 上传排号
     * @param bean
     * @return
     */
    AjaxResult uploadSort(HandlingOrder bean);

    /**
     * 查询未签字退料任务列表
     * @param backApplyInfo
     * @return
     */
    List<BackApplyInfo> getNoSignList(BackApplyInfo backApplyInfo);

    /**
     * 查询材料员待确认的任务
     * @param backApplyInfo
     * @return
     */
    List<BackApplyInfo> getCompleteBackTaskList(BackApplyInfo backApplyInfo);

    /**
     * 材料员确认接口
     * @param backApplyInfo
     * @return
     */
    int confirmMaterial(BackApplyInfo backApplyInfo);

    /**
     * 获取排号
     * @param bean
     * @return
     */
    AjaxResult getSort(HandlingOrder bean);

    /**
     * 获取出门证列表
     * @param bean
     * @return
     */
    List<ExitPermit> getExitPermitList(ExitPermit bean);

    /**
     * 新增出门证
     * @param bean
     * @return
     */
    AjaxResult addExitPermit(ExitPermit bean);

    /**
     * 班组退料提交
     * @param backApplyInfo
     * @return
     */
    AjaxResult submitBzBackApply(BackApplyInfo backApplyInfo);

    /**
     * 删除装卸单
     * @param bean
     * @return
     */
    AjaxResult delHandlingOrder(HandlingOrder bean);


    List<BackApplyInfo> selectNotSyncProject();

    int syncProject(BackApplyInfo backApplyInfo);

    int syncProjectDetails(BackApplyInfo backApplyInfo);
}

