package com.bonus.material.clz.service;

import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.material.clz.domain.back.MaterialBackApplyDetails;
import com.bonus.material.clz.domain.back.MaterialBackApplyInfo;
import com.bonus.material.clz.domain.back.MaterialBackApplyTotalInfo;
import com.bonus.material.clz.domain.vo.back.MaterialBackApplyRequestVo;
import com.bonus.material.clz.domain.vo.back.MaterialBackMaCodeVo;

import java.util.List;

/**
 * @Author ma_sh
 * @create 2025/6/25 9:30
 */
public interface MaterialBackApplyInfoService {

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

    /**
     * 查询总站点退料记录数据
     * @param backApplyInfo
     * @return
     */
    List<MaterialBackApplyInfo> getTotalList(MaterialBackApplyInfo backApplyInfo);

    /**
     * 查询总站点退料详情数据
     * @param backApplyInfo
     * @return
     */
    List<MaterialBackApplyInfo> getDetailsList(MaterialBackApplyInfo backApplyInfo);

    /**
     * 获取退料任务详细信息
     * @param id
     * @param keyWord
     * @return
     */
    AjaxResult selectBackApplyInfoById(Long id, String keyWord);

    /**
     * 查询退料任务详情信息
     * @param backApplyDetails
     * @return
     */
    List<MaterialBackApplyDetails> getDetailsById(MaterialBackApplyDetails backApplyDetails);

    /**
     * 新增退料任务
     * @param dto
     * @return
     */
    AjaxResult insertBackApplyInfo(MaterialBackApplyRequestVo dto);

    /**
     * 修改退料任务
     * @param dto
     * @return
     */
    AjaxResult updateBackApplyInfo(MaterialBackApplyRequestVo dto);

    /**
     * 修改退料任务电子签名
     * @param dto
     * @return
     */
    int updateSignById(MaterialBackApplyInfo dto);

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

    /**
     * 工器具退料记录
     * @param info
     * @return
     */
    List<MaterialBackApplyTotalInfo> getBackInfoDetails(MaterialBackApplyTotalInfo info);

    /**
     * 工器具退料二级页面记录
     * @param info
     * @return
     */
    List<MaterialBackMaCodeVo> getSecondBackInfo(MaterialBackApplyTotalInfo info);

    /**
     * 在用设备类型树
     * @param bean
     * @return
     */
    AjaxResult getUseTypeTree(MaterialBackApplyInfo bean);

    /**
     * 根据班组和工程id查询领料机具
     * @param dto
     * @return
     */
    AjaxResult getMachineById(MaterialBackApplyInfo dto);

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

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