package com.bonus.material.common.mapper;

import com.bonus.common.biz.domain.ProjectTreeNode;
import com.bonus.common.biz.domain.TreeNode;
import com.bonus.common.biz.domain.TypeTreeNode;
import com.bonus.material.back.domain.BackApplyInfo;
import com.bonus.material.basic.domain.BmProject;
import com.bonus.material.basic.domain.BmUnit;
import com.bonus.material.common.domain.dto.SelectDto;
import com.bonus.material.common.domain.vo.AgreementVo;
import com.bonus.material.common.domain.vo.SelectVo;
import org.springframework.stereotype.Repository;
import java.util.List;

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

    /**
     * 工程下拉选
     * @param bmProject
     * @return List<BmProject>
     * @description 工程
     * @author cwchen
     * @date 2023/12/20 15:05
     */
    List<ProjectTreeNode> getProjectList(BmProject bmProject);

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


    /**
     * 往来单位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);

    /**
     * 在用设备类型树4级
     * @param bean
     * @return
     */
    List<TypeTreeNode> getUseTypeTreeL4(BackApplyInfo bean);

    /**
     * 在用设备类型树3级
     * @param list
     * @return
     */
    List<TypeTreeNode> getUseTypeTreeL3(List<Long> list);

    /**
     * 在用设备类型树2级
     * @param list
     * @return
     */
    List<TypeTreeNode> getUseTypeTreeL21(List<Long> list);

    /**
     * 获取单位下拉选app
     * @param bmUnit
     * @return
     */
    List<BmUnit> getUnitListApp(BmUnit bmUnit);

    /**
     * 获取工程下拉选app
     * @param bmProject
     * @return
     */
    List<BmProject> getProjectListApp(BmProject bmProject);
}
