package com.zt.plat.module.qms.common.dic.service;

import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.module.qms.common.dic.controller.vo.DictionaryBusinessPageReqVO;
import com.zt.plat.module.qms.common.dic.controller.vo.DictionaryBusinessRespVO;
import com.zt.plat.module.qms.common.dic.controller.vo.DictionaryBusinessSaveReqVO;
import com.zt.plat.module.qms.common.dic.dal.dataobject.DictionaryBusinessDO;
import com.zt.plat.module.qms.core.legend.vo.DictModel;
import jakarta.validation.Valid;

import java.util.List;
import java.util.Map;

/**
 * 业务参数字典 Service 接口
 *
 * @author 后台管理
 */
public interface DictionaryBusinessService {

    //通过查询指定table的 text code key 获取字典值
    String queryTableDictTextByKey(String table, String text, String code, String key);

    //通过字典code及字典项的value获取字典文本
    String queryDictTextByKey(String code, String key);
    String queryDictTextByID(String code, String id);

    //通过查询指定table的 text code key 获取字典值，可批量查询
    List<DictModel> queryTableDictText(String table, String text, String code, List<String> keys);

    //通过多个字典code查询翻译文本
    Map<String, List<DictModel>> queryManyDict(List<String> dictCodeList, List<String> keys);
//    Map<String, List<DictModel>> queryManyDictByIDs(List<String> dictCodeList, List<String> ids);

    List<DictionaryBusinessDO> queryDictItemsByKey(String key);

    CommonResult<DictionaryBusinessRespVO> getDataByDataKey(String key);
    String getValueByDataKey(String key);


    //保存分类
    CommonResult<DictionaryBusinessRespVO> saveCategory(@Valid DictionaryBusinessSaveReqVO createReqVO);

    //保存数据
    CommonResult<DictionaryBusinessRespVO> saveData(@Valid DictionaryBusinessSaveReqVO createReqVO);


    /*获取分类树数据*/
    List<DictionaryBusinessDO> getTreeData();

    List<DictionaryBusinessDO> listByParId(Long parId, String nodeType);

    CommonResult<String> updateAllIdPath(Long parentId, Integer level);

    /**
     * 创建业务参数字典
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    DictionaryBusinessRespVO createDictionaryBusiness(@Valid DictionaryBusinessSaveReqVO createReqVO);

    /**
     * 更新业务参数字典
     *
     * @param updateReqVO 更新信息
     */
    void updateDictionaryBusiness(@Valid DictionaryBusinessSaveReqVO updateReqVO);

    /**
     * 删除业务参数字典
     *
     * @param id 编号
     */
    void deleteDictionaryBusiness(Long id);

    /**
    * 批量删除业务参数字典
    *
    * @param ids 编号
    */
    void deleteDictionaryBusinessListByIds(List<Long> ids);

    /**
     * 获得业务参数字典
     *
     * @param id 编号
     * @return 业务参数字典
     */
    DictionaryBusinessDO getDictionaryBusiness(Long id);

    /**
     * 获得业务参数字典分页
     *
     * @param pageReqVO 分页查询
     * @return 业务参数字典分页
     */
    PageResult<DictionaryBusinessDO> getDictionaryBusinessPage(DictionaryBusinessPageReqVO pageReqVO);

}