package com.bonus.material.ma.mapper;

import com.bonus.common.biz.domain.lease.LeaseOutDetails;
import com.bonus.material.common.domain.vo.SelectVo;
import com.bonus.material.ma.domain.MaTypeHistory;
import com.bonus.material.ma.domain.StandardConfigBean;
import com.bonus.material.ma.domain.Type;
import com.bonus.material.ma.domain.vo.MaTypeConfigVo;
import com.bonus.material.ma.domain.vo.MaTypeSelectVo;
import com.bonus.material.ma.domain.vo.MaTypeVo;
import com.bonus.material.ma.domain.vo.StandardConfigDetailsVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;

/**
 * 机械设备标准配置管理Mapper接口
 * @author hay
 */
@Mapper
public interface StandardConfigManageMapper {

    /**
     * 查询机械设备标准配置管理树
     * @return
     */
    List<StandardConfigBean> selectStandardConfigTree();

    /**
     * 根据level层级和typeID 查询父级ID
     * @param bean
     * @return
     */
    List<Integer> selectParentId(StandardConfigDetailsVo bean);

    /**
     * 根据父级ID 查询子级
     * @param configId
     * @param bean
     * @return
     */
    List<StandardConfigDetailsVo> getListByParentId(@Param("configId") Long configId,@Param("bean")  StandardConfigDetailsVo bean);

    /**
     * 根据配置id 查询配置详情
     * @param configName
     * @param parentId
     * @return
     */
    StandardConfigBean queryByNameAndParentId(@Param("configName") String configName, @Param("parentId") Long parentId);

    /**
     * 新增配置
     * @param bean
     * @return
     */
    int insertConfig(StandardConfigBean bean);

    /**
     * 修改配置
     * @param bean
     * @return
     */
    int updateConfig(StandardConfigBean bean);

    /**
     * 根据配置id 查询配置详情
     * @param configId
     * @return
     */
    List<StandardConfigDetailsVo> selectByConfigId(Long configId);

    /**
     * 根据配置id 删除配置
     * @param bean
     * @return
     */
    int deleteConfigByConfigId(StandardConfigBean bean);

    /**
     * 根据配置id 删除配置详情
     * @param bean
     * @return
     */
    int deleteConfigDetailByConfigId(StandardConfigBean bean);

    /**
     * 根据configId和typeId 查询是否存在数据
     * @param bean
     * @return
     */
    int getCountById(StandardConfigDetailsVo bean);

    /**
     * 新增配置详情
     * @param bean
     * @return
     */
    int addConfigDetails(StandardConfigDetailsVo bean);

    /**
     * 修改配置详情
     * @param bean
     * @return
     */
    int updateConfigDetails(StandardConfigDetailsVo bean);

    /**
     * 删除配置详情
     * @param bean
     * @return
     */
    int delConfigDetails(StandardConfigDetailsVo bean);

    /**
     * 标准配置下拉选--只有二级数据
     * @param bean
     * @return
     */
    List<StandardConfigBean> getConfigLevelTwoList(StandardConfigBean bean);

    /**
     * 根据配置id查询配置明细
     * 返回参数和规格型号树参数一致
     * @param configId
     * @return
     */
    List<StandardConfigDetailsVo> getListsByConfigId(Long configId);

}
