package com.njcn.gather.system.dictionary.service;

import com.njcn.gather.system.dictionary.pojo.param.DictTreeParam;
import com.njcn.gather.system.dictionary.pojo.po.DictTree;

import com.baomidou.mybatisplus.extension.service.IService;
import com.njcn.gather.system.dictionary.pojo.vo.DictTreeVO;

import java.util.List;


/**
 * @author caozehui
 * @data 2024/11/8
 */
public interface IDictTreeService extends IService<DictTree> {

    /**
     * 根据code查询字典树
     *
     * @param code 编码
     * @return 字典树
     */
    List<DictTree> getTreeByCode(String code);

    /**
     * 根据name查询字典树
     *
     * @param name 编码
     * @return 字典树
     */
    List<DictTree> getTreeByName(String name);

    boolean addDictTree(DictTreeParam dictTreeParam);

    boolean updateDictTree(DictTreeParam.UpdateParam param);

    boolean deleteDictTree(String id);

    /**
     * 根据id查询字典数据
     *
     * @param id id
     */
    DictTree queryById(String id);

    /**
     * 查询所有字典树
     *
     * @return
     */
    List<DictTree> queryTree();

    /**
     * 根据字典树id查询字典树
     *
     * @param ids
     * @return
     */
    List<DictTree> getDictTreeById(List<String> ids);

    DictTree getDictTreeByCode(String code);

    List<DictTree> listByFatherIds(List<String> fatherIdList);

    /**
     * 获取父级字典树
     * @param id 字典树ID
     * @return 父级字典树
     */
    DictTree queryParentById(String id);

    /**
     * 根据id获取所有子节点的ID
     * @param scriptId 字典树ID
     * @return 所有子节点ID
     */
    List<String> getChildIds(String scriptId);

    /**
     * 测试项排个序
     * @param scriptList 测试项
     * @return 有序的测试项
     */
    List<String> sort(List<String> scriptList);
}
