package com.ozs.appshow.service;

import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.ozs.appshow.dto.ChartInfoDTO;
import com.ozs.appshow.dto.ChartTypeDTO;
import com.ozs.appshow.dto.GetChartViewDTO;
import com.ozs.appshow.dto.RichTextFileR;
import com.ozs.appshow.dto.mdm.MdmInfoColumn;
import com.ozs.appshow.dto.mdm.MdmInfoDatabase;
import com.ozs.appshow.dto.mdm.MdmInfoTable;
import com.ozs.appshow.util.R;

public interface ChartInfoService {

	public R<List<ChartInfoDTO>> listChartInfo(String chartName, Integer chartType, Integer page, Integer pageSize,
			String sort, String order) throws Exception;

	/**
	 * 获取MDM数据库列表-非原始库
	 * 
	 * @param resourceName
	 * @return
	 */
	public R<List<MdmInfoDatabase>> listDatabase(String resourceName) throws Exception;

	/**
	 * 获取根据数据库ID获取数据表信息
	 * 
	 * @param databaseId
	 * @return
	 */
	public R<List<MdmInfoTable>> listTableByDatabaseId(String databaseId) throws Exception;

	/**
	 * 获取根据数据库ID获取字段信息
	 * 
	 * @param databaseId
	 * @return
	 */
	public R<List<MdmInfoColumn>> listColumnByTableId(String tableId) throws Exception;

	/**
	 * 获取图表类型
	 * 
	 * @return
	 */
	public R<List<ChartTypeDTO>> listChartType() throws Exception;

	/**
	 * 根据表Id生成获取DML
	 * 
	 * @param tableId
	 * @return
	 */
	public R<String> getDML(String tableId, String columnIds) throws Exception;

	/**
	 * 根据ID获取图表信息
	 * 
	 * @param id
	 * @return
	 */
	public R<ChartInfoDTO> getChartInfo(String id) throws Exception;

	public R<String> loadChartFile(MultipartFile file, String userId) throws Exception;

	public R<String> saveChartInfo(ChartInfoDTO chartInfoDTO) throws Exception;

	public R<String> updateChartInfo(ChartInfoDTO chartInfoDTO);

	/**
	 * 图表配置接口
	 * 
	 * @param chartInfoDTO
	 * @return
	 */
	public R<String> updateChartJson(ChartInfoDTO chartInfoDTO) throws Exception;

	/**
	 * 删除图表
	 * 
	 * @param id
	 * @return
	 */
	public R<String> removeChart(String id) throws Exception;

	/**
	 * 通过分类编号获取分类下图表
	 * 
	 * @param classCode
	 * @return
	 */
	public R<List<ChartInfoDTO>> listChartInfoByClass(String classCode) throws Exception;

	/**
	 * 图表预览
	 * 
	 * @param id
	 * @return
	 */
	public R<GetChartViewDTO> getChartView(String id);

	/**
	 * 富文本上传文件
	 * 
	 * @param file
	 * @param userId
	 * @return
	 * @throws Exception
	 */
	public RichTextFileR uploadRichTextFile(MultipartFile file, String userId) throws Exception;

}
