package com.bc.exam.modules.dict.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bc.exam.core.api.dto.PagingReqDTO;
import com.bc.exam.modules.dict.entity.SysDictData;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bc.exam.modules.dict.entity.SysDictType;

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

/**
 * @Description 描述:码值数据表 服务类
 * @Author A贾宇婷034244310
 * @Date 20260615
 */
public interface SysDictDataService extends IService<SysDictData> {

    /**
     * 根据类型 获取码值
     * @param code 码值类型
     * @return 码值list
     */
    List<SysDictData> getListByCode(String code);

    /**
     * 根据类型 获取所有码值
     * @param code 码值类型
     * @return 码值list
     */
    List<SysDictData> getAllListByCode(String code);

    /**
     * 根据sql 获取码值
     * @param sql 码值获取sql
     * @return 码值list
     */
    List<SysDictData> getListBySourceSql(String sql);

    /**
     * 通过sql 查询分页结果
     * @param query 分页入参
     * @param sql sql语句
     * @return 分页结果
     */
    IPage<SysDictData> pagingBySql(Page<SysDictData> query, String sql);

    /**
     * 通过码表 查询分页结果
     * @param query 分页入参
     * @param code 码值类型
     * @return 分页结果
     */
    IPage<SysDictData> pagingByCode(Page<SysDictData> query, String code);

    /**
     * 分页查询码值 主入口
     * @param reqDTO 分页查询入参
     * @return 分页结果
     */
    IPage<SysDictData> paging(PagingReqDTO<SysDictType> reqDTO);

    void saveData(SysDictData reqDTO);

    Map<String, List<SysDictData>> getAllEffectDicData();
}
