package com.bonus.material.clz.mapper;

import com.bonus.material.back.domain.vo.MaCodeVo;
import com.bonus.material.clz.domain.TeamVo;
import com.bonus.material.clz.domain.machine.MaterialUseStorageInfo;
import com.bonus.material.clz.domain.vo.MaterialRetainedTeamTotalVo;
import com.bonus.material.clz.domain.vo.MaterialRetainedTeamVo;
import com.bonus.material.clz.domain.vo.MaterialSltAgreementInfo;
import com.bonus.material.ma.domain.Machine;
import com.bonus.material.clz.domain.BmTeam;
import com.bonus.material.clz.domain.machine.MaterialStorageInfo;
import com.bonus.material.clz.domain.vo.MaterialRetainedEquipmentInfo;

import java.util.List;

/**
 * @Author ma_sh
 * @create 2025/6/25 13:29
 */
public interface MaterialMachineMapper {

    /**
     * 获取机具追溯管理数据
     * @param machine
     * @return
     */
    List<Machine> getMachineInfo(Machine machine);

    /**
     * 保有设备总量查询
     * @param bean
     * @return
     */
    List<MaterialRetainedEquipmentInfo> getRetainedEquipmentList(MaterialRetainedEquipmentInfo bean);

    /**
     * 查询材料站在库设备
     * @param bean
     * @return
     */
    List<MaterialStorageInfo> getMaCodeList(MaterialStorageInfo bean);

    /**
     * 查询在库设备详情
     * @param useStorageInfo
     * @return
     */
    MaterialStorageInfo selectInFo(MaterialStorageInfo useStorageInfo);

    /**
     * 班组库存查询
     * @param bean
     * @return
     */
    List<MaterialRetainedEquipmentInfo> getTeamUseNumList(MaterialRetainedEquipmentInfo bean);

    /**
     * 班组库存详情查询
     * @param info
     * @return
     */
    List<MaterialRetainedEquipmentInfo> getTeamUseNumDetailsList(MaterialRetainedEquipmentInfo info);

    /**
     * 班组预警详情查询
     * @param username
     * @return
     */
    BmTeam getTeamData(String username);

    /**
     * 工器具台账查询
     * @param bean
     * @return
     */
    List<MaterialRetainedEquipmentInfo> getToolsLedgerList(MaterialRetainedEquipmentInfo bean);

    /**
     * 工器具台账详情查询
     * @param bean
     * @return
     */
    List<MaterialRetainedEquipmentInfo> getToolsLedgerDetailsList(MaterialRetainedEquipmentInfo bean);

    /**
     * 工器具台账详情查询
     * @param bean1
     * @return
     */
    List<MaterialRetainedEquipmentInfo> getToolsDetailsListByTeam(MaCodeVo bean1);

    /**
     * 工器具台账详情查询
     * @param bean
     * @return
     */
    List<MaterialRetainedEquipmentInfo> getToolsDetailsList(MaterialRetainedEquipmentInfo bean);

    /**
     * 获取设备状态
     * @param machine1
     * @return
     */
    List<MaterialSltAgreementInfo> selectStatusById(Machine machine1);

    /**
     * 获取设备状态
     * @param machine
     * @return
     */
    List<Machine> getSltAgreementInfo(Machine machine);

    /**
     * 查询在用设备详情
     * @param bean
     * @return
     */
    List<MaterialUseStorageInfo> getUserRecords(MaterialUseStorageInfo bean);

    /**
     * 查询在用设备详情
     * @param useStorageInfo
     * @return
     */
    MaterialUseStorageInfo selectUseInFo(MaterialUseStorageInfo useStorageInfo);

    /**
     * 根据agreementIdList查询工器具台账信息
     * @param bean
     * @return
     */
    List<MaterialRetainedEquipmentInfo> getTotalList(MaterialRetainedEquipmentInfo bean);

    /**
     * 班组库存查询
     * @param bean
     * @return
     */
    List<MaterialRetainedTeamTotalVo> getTeamNumList(MaterialRetainedEquipmentInfo bean);

    /**
     * 班组库存查询二级页面
     * @param bean
     * @return
     */
    List<MaterialRetainedTeamVo> getTeamNumSecondList(MaterialRetainedEquipmentInfo bean);

    /**
     * 班组库存查询三级页面
     * @param bean
     * @return
     */
    List<MaterialRetainedEquipmentInfo> getTeamNumThirdList(MaterialRetainedEquipmentInfo bean);

    /**
     * 查询保有总量详情
     * @param bean
     * @return
     */
    List<MaterialRetainedEquipmentInfo> getTotalInfoList(MaterialRetainedEquipmentInfo bean);

    /**
     * 班组进出场记录
     * @param bean
     * @return
     */
    List<TeamVo> getTeamInOrOutInfo(TeamVo bean);

    /**
     * 获取项目部总数
     * @param bean
     * @return
     */
    Integer selectDepartNum(MaterialRetainedEquipmentInfo bean);

    /**
     * 获取工程总数
     * @param bean
     * @return
     */
    Integer selectProjectNum(MaterialRetainedEquipmentInfo bean);

    /**
     * 获取班组总数
     * @param bean
     * @return
     */
    Integer selectTeamNum(MaterialRetainedEquipmentInfo bean);

    /**
     * 获取站内库存，在用量，保有量
     * @param bean
     * @return
     */
    MaterialRetainedEquipmentInfo getRetainTotalInfo(MaterialRetainedEquipmentInfo bean);

    /**
     * 库存量
     * @param bean
     * @return
     */
    MaterialRetainedEquipmentInfo getRetainStoreInfo(MaterialRetainedEquipmentInfo bean);

    /**
     * 查询目前还有库存的设备
     * @param bean
     * @return
     */
    List<MaterialRetainedEquipmentInfo> getRetainInfoList(MaterialRetainedEquipmentInfo bean);

    /**
     * 查询目前正在使用的设备
     * @param bean
     * @return
     */
    List<MaterialRetainedEquipmentInfo> getUsInfoList(MaterialRetainedEquipmentInfo bean);
}
