package com.bonus.sgzb.material.mapper;

import com.bonus.sgzb.material.domain.AgreementVo;
import com.bonus.sgzb.material.domain.SelectDto;
import com.bonus.sgzb.material.domain.SelectVo;
import com.bonus.sgzb.material.domain.TreeNode;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 10488
 * 统一下拉选
 */
@Repository("SelectMapper")
public interface SelectMapper {
    /**
     * 往来单位下拉选
     * @param dto
     * @return List<SelectVo>
     * @description 往来单位
     * @author cwchen
     * @date 2023/12/20 14:23
     */
    List<SelectVo> getUnitData(SelectDto dto);

    /**
     * 工程下拉选
     * @param dto
     * @return List<SelectVo>
     * @description 工程
     * @author cwchen
     * @date 2023/12/20 15:05
     */
    List<SelectVo> getProData(SelectDto dto);

    /**
     * 机具类型下拉选
     * @param dto
     * @return List<SelectVo>
     * @description 机具类型
     * @author cwchen
     * @date 2023/12/20 16:02
     */
    List<SelectVo> getMaTypeData(SelectDto dto);

    /**
     * 数据字典下拉选
     * @param dto
     * @return List<SelectVo>
     * @description 数据字典下拉选
     * @author cwchen
     * @date 2023/12/20 16:23
     */
    List<SelectVo> getDictByPidCbx(SelectDto dto);

    /**
     * 单位树/归属部门/所属上级
     * @param dto
     * @return List<TreeVo>
     * @description 单位树/归属部门/所属上级
     * @author cwchen
     * @date 2023/12/20 17:10
     */
    List<TreeNode> getDeptTree(SelectDto dto);

    /**
     * 岗位下拉选
     * @param dto
     * @return List<SelectVo>
     * @description 岗位下拉选
     * @author cwchen
     * @date 2023/12/20 17:50
     */
    List<SelectVo> getPostCbx(SelectDto dto);

    /**
     * 角色下拉选
     * @param dto
     * @return List<SelectVo>
     * @description 角色下拉选
     * @author cwchen
     * @date 2023/12/20 17:56
     */
    List<SelectVo> getRoleCbx(SelectDto dto);

    /**
     * 单位类型下拉选
     * @param dto
     * @return List<SelectVo>
     * @description 单位类型下拉选
     * @author cwchen
     * @date 2023/12/20 18:01
     */
    List<SelectVo> getUnitTypeCbx(SelectDto dto);

    /**
     * 设备类型树
     * @param dto
     * @return List<TreeNode>
     * @description 设备类型树
     * @author cwchen
     * @date 2023/12/20 18:15
     */
    List<TreeNode> getDeviceTypeTree(SelectDto dto);

    /**
     * 资产属性
     * @param dto
     * @return List<SelectVo>
     * @description 资产属性
     * @author cwchen
     * @date 2023/12/20 19:48
     */
    List<SelectVo> getAssetAttributesCbx(SelectDto dto);

    /**
     * 机具厂家
     * @param dto
     * @return List<SelectVo>
     * @description 机具厂家
     * @author cwchen
     * @date 2023/12/20 19:57
     */
    List<SelectVo> getDeviceFactoryCbx(SelectDto dto);

    /**
     * 工程项目
     * @param dto
     * @return List<SelectVo>
     * @description 工程项目
     * @author cwchen
     * @date 2023/12/20 20:01
     */
    List<SelectVo> getProCbx(SelectDto dto);

    /**
     * 配件所属上级树
     * @param
     * @return List<TreeNode>
     * @description 配件所属上级树
     * @author cwchen
     * @date 2023/12/20 20:26
     */
    List<TreeNode> getAccessoryTree();

    /**
     * 货架
     * @param dto
     * @return List<TreeNode>
     * @description 货架
     * @author cwchen
     * @date 2023/12/20 20:36
     */
    List<TreeNode> getGoodsShelvesCbx(SelectDto dto);

    /**
     * 用户/维修员/库管员/采购员-下拉选
     * @param dto
     * @return List<SelectVo>
     * @description 用户/维修员/库管员/采购员-下拉选
     * @author cwchen
     * @date 2023/12/20 20:54
     */
    List<SelectVo> getUserByRoleIdCbxSelect(SelectDto dto);

    /**
     * 用户/维修员/库管员/采购员-树
     * @param dto
     * @return List<TreeNode>
     * @description 用户/维修员/库管员/采购员-树
     * @author cwchen
     * @date 2023/12/20 21:02
     */
    List<TreeNode> getUserByRoleIdCbxTree(SelectDto dto);

    /**
     * 往来单位id和标段工程id获取协议信息
     * @param dto
     * @return AgreementVo
     * @description 往来单位id和标段工程id获取协议信息
     * @author cwchen
     * @date 2023/12/21 10:53
     */
    List<AgreementVo> getAgreementInfoById(SelectDto dto);

    /**
    * 配件所属上级树
    * @param dto
    * @return List<TreeNode>
    */
    List<TreeNode> getPartTree(SelectDto dto);
}
