package com.njcn.harmonic.service.report;

import com.njcn.harmonic.pojo.param.ReportSearchParam;
import com.njcn.harmonic.pojo.param.ReportTemplateParam;
import com.njcn.harmonic.pojo.po.ExcelRptTemp;
import com.njcn.harmonic.common.pojo.vo.ReportTemplateVO;
import com.njcn.harmonic.pojo.vo.ReportTreeVO;
import com.njcn.harmonic.pojo.vo.SysDeptTempVO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * pqs
 * 自定义报表
 * @author cdf
 * @date 2022/8/16
 */
public interface CustomReportService {


    /**
     * 新增自定义报表模板
     * @author qijian
     * @date 2022/10/18
     */
    boolean addCustomReportTemplate(ReportTemplateParam reportTemplateParam);


    /**
     * 修改自定义报表模板
     * @author qijian
     * @date 2022/10/18
     */
    boolean updateCustomReportTemplate(ReportTemplateParam.UpdateReportTemplateParam reportTemplateParam);

    /**
     * 根据id获取模板
     * @author qijian
     * @date 2022/10/18
     */
    ExcelRptTemp getCustomReportTemplateById(String id);


    /**
     * 模板列表
     * @author qijian
     * @date 2022/10/18
     */
    List<ReportTemplateVO> getTemplateList(ReportSearchParam reportSearchParam);

    /**
     * 删除模板
     * @author qijian
     * @date 2022/10/18
     */
    boolean delTemplate(ReportSearchParam reportSearchParam);


    /**
     * 切换模板激活状态
     * @author qijian
     * @date 2022/10/18
     */
    boolean updateStatus(ReportSearchParam reportSearchParam);


    /**
     * 替换报表数据并返回
     *
     * @param reportSearchParam 请求参数
     * @param response
     * @author qijian
     * @date 2022/10/18
     */
    void getCustomReport(ReportSearchParam reportSearchParam, HttpServletResponse response);



    /**
     * 查询报告模板树节点
     * @author cdf
     * @date 2022/8/26
     */
    List<ReportTreeVO> reportChooseTree();

    List<ReportTreeVO> targetLimitChooseTree();

    /**
     * 台账类型树
     * @author cdf
     * @date 2023/10/23
     */
    List<ReportTreeVO> terminalChooseTree();

    /**
     * 绑定/解绑模板数据
     * @author qijian
     * @date 2022/10/18
     */
    boolean updateBindTemplate(List<ReportSearchParam> reportSearchParams);

    /**
     * 根据模板ID查询数据
     * @author qijian
     * @date 2022/10/18
     */
    List<SysDeptTempVO> getDataByTempId(String id);

    /**
     * 根据部门查询模板
     * @author qijian
     * @date 2022/10/18
     */
    List<ReportTemplateVO> getTemplateByDept(String id);

    void viewCustomReportTemplateById(String id, HttpServletResponse response);



}
