package com.ruoyi.system.mapper;

import com.ruoyi.common.core.domain.entity.AssetType;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 资产类型Mapper接口
 * 
 * @author boman
 * @date 2025-02-17
 */
public interface AssetTypeMapper 
{
    /**
     * 查询资产类型
     * 
     * @param assetId 资产类型主键
     * @return 资产类型
     */
    public AssetType selectAssetTypeByAssetId(Long assetId);

    /**
     * 查询资产类型列表
     * 
     * @param assetType 资产类型
     * @return 资产类型集合
     */
    public List<AssetType> selectAssetTypeList(AssetType assetType);
    public List<AssetType> selectAssetTypeListTree(AssetType assetType);

    /**
     * 新增资产类型
     * 
     * @param assetType 资产类型
     * @return 结果
     */
    public int insertAssetType(AssetType assetType);

    /**
     * 修改资产类型
     * 
     * @param assetType 资产类型
     * @return 结果
     */
    public int updateAssetType(AssetType assetType);

    /**
     * 删除资产类型
     * 
     * @param assetId 资产类型主键
     * @return 结果
     */
    public int deleteAssetTypeByAssetId(Long assetId);

    /**
     * 批量删除资产类型
     * 
     * @param assetIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAssetTypeByAssetIds(Long[] assetIds);


    AssetType checkAssetNameUnique(@Param("assetName") String assetName, @Param("parentId") Long parentId);

   int selectNormalChildrenAssetById(Long assetId);

    int hasChildByAssetId(Long assetId);

    /**
     * 根据ID查询所有子资产分类
     *
     * @param assetId 资产分类iD
     * @return 资产分类列表
     */
    public List<AssetType> selectChildrenAssetTypeById(Long assetId);
    int updateAssetTypeChildren(@Param("assetTypes") List<AssetType> assetTypes);
}
