package cn.com.victorysoft.business.analyze.dao;

import cn.com.victorysoft.business.analyze.entity.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

@Mapper
public interface CustomSearchDao {

    /**
     * 根据ID查询数据源
     */
    CstDataSource selectDataSourceById(String dataSourceId);

    /**
     * 查询附录数据
     */
    List<CstDictData> selectDictData(@Param("dataSource") CstDataSource dataSource, @Param("searchText") String searchText);

    /**
     * 查询单位的模板列表
     */
    List<CstTemplate> selectTemplates(String unitcode);

    /**
     * 查询模板对象
     */
    CstTemplate selectTemplate(String id);

    /**
     * 删除模板指标
     */
    int deleteTemplate(String id);

    /**
     * 插入模板指标
     */
    void insertTemplate(CstTemplate template);

    /**
     * 更新模板指标
     */
    void updateTemplate(CstTemplate template);

    /**
     * 查询模板数据表
     */
    List<CstTemplateTable> selectTemplateTables(String templateId);

    /**
     * 删除模板数据表
     */
    int deleteTemplateTables(String templateId);

    /**
     * 插入模板数据表
     */
    void insertTemplateTables(List<CstTemplateTable> indicators);

    /**
     * 查询模板指标
     */
    List<CstTemplateIndicator> selectTemplateIndicators(String templateId);

    /**
     * 删除模板指标
     */
    int deleteTemplateIndicators(String templateId);

    /**
     * 插入模板指标
     */
    void insertTemplateIndicators(List<CstTemplateIndicator> indicators);

    /**
     * 查询模板条件列表
     */
    List<CstTemplateCondition> selectTemplateConditions(String templateId);

    /**
     * 查询模板条件
     */
    CstTemplateCondition selectTemplateCondition(@Param("templateId") String templateId, @Param("indicatorId") String indicatorId);

    /**
     * 删除模板条件
     */
    int deleteTemplateConditions(String templateId);

    /**
     * 插入模板条件
     */
    void insertTemplateConditions(List<CstTemplateCondition> conditions);

    /**
     * 查询模板共享
     */
    List<CstTemplateShare> selectTemplateShares(String templateId);

    /**
     * 删除模板共享
     */
    int deleteTemplateShares(String templateId);

    /**
     * 插入模板共享
     */
    void insertTemplateShares(List<CstTemplateShare> shares);

    /**
     * 查询数据表
     */
    List<CstTable> selectTables();

    /**
     * 查询数据表对象
     */
    CstTable selectTable(String tableId);

    /**
     * 查询关联表
     */
    List<CstTable> selectRelateTables(String tableId);

    /**
     * 查询数据表指标列表
     */
    List<CstTableIndicator> selectTableIndicators(String tableId);

    /**
     * 查询数据表指标
     */
    CstTableIndicator selectTableIndicator(String id);

    /**
     * 查询查询类型
     */
    List<CstQueryType> selectQueryTypes();

    /**
     * 查询数据表关联
     */
    List<CstTableRelation> selectTableRelations(List<String> mainTableIds);

    /**
     * 查询数据表关联
     */
    List<Map<String, Object>> search(String sql);

    /**
     * 根据报表类型查询指标
     */
    List<CstTableIndicator> selectByIndicators(@Param("tableType") String tableType, @Param("indicators") List<CstIndicator> indicators);

    List<CstIndicator> selectIndicators(@Param("tableType") String tableType, @Param("searchField") String searchField);

}
