package com.chinaweal.aiccs.aiccs.revoke.service;

import com.chinaweal.aiccs.aiccs.revoke.entity.BizRevEnt;

import javax.servlet.ServletOutputStream;
import java.util.List;
import java.util.Map;

/**
 * 批吊审批流程生成文件创建
 *
 * @Author Lee
 * @Since 2021/5/17 18:02
 */
public interface CreateFileService {

    /**
     * 生成立案/不予立案审批表
     *
     * @param bizseq     业务号
     * @param pripid     主体id
     * @param areaName   区名称
     * @param workflowId 工作流id
     */
    void createCaseApprovalDocx(String bizseq, String areaName, String pripid, String workflowId) throws Exception;

    /**
     * 生成听证告知审批表
     *
     * @param bizseq     业务号
     * @param workflowId 流程id
     */
    void createHearingApprovalDocx(String bizseq, String entname, String workflowId);

    /**
     * 生成行政处罚建议审批表
     *
     * @param bizseq     业务号
     * @param workflowId 流程id
     */
    void createPunishAdviceApprDocx(String bizseq, String areaName, String workflowId) throws Exception;

    /**
     * 生成行政处罚决定审批表
     *
     * @param bizseq     业务号
     * @param workflowId 流程id
     */
    void createPunishDecisionApprDocx(String bizseq, String areaName, String workflowId) throws Exception;

    /**
     * 生成决定审批表
     *
     * @param bizseq     业务号
     * @param workflowId 流程id
     */
    void createDecisionApprovalDocx(String bizseq, String entname, String workflowId);

    /**
     * 生成送达审批表
     *
     * @param bizseq     业务号
     * @param workflowId 流程id
     */
    void createSendApprovalDocx(String bizseq, String workflowId);

    /**
     * 生成调查审批表
     *
     * @param bizseq     业务号
     * @param workflowId 流程id
     * @param areaName   区名称
     * @param entname    主体名称
     */
    void createInvestigateApprovalDocx(String bizseq, String areaName, String entname, String workflowId);


    /**
     * 根据模板生成文件
     *
     * @param bizseq     业务号-作文件夹
     * @param fileName   文件名
     * @param attachtype 文书类型
     * @param path       模板文件路径
     * @param map        模板参数
     */
    String createDocx(String bizseq, String fileName, String attachtype, String path, Map<String, Object> map);

    /**
     * 根据模板生成pdf文件
     *
     * @param bizseq     业务号-作文件夹
     * @param fileName   文件名
     * @param attachtype 文书类型
     * @param path       模板文件路径
     * @param map        模板参数
     */
    String createPdf(String bizseq, String fileName, String attachtype, String path, Map<String, Object> map);

    ;

    /**
     * 根据模板生成pdf文件
     *
     * @param bizseq       业务号-作文件夹
     * @param title        标题
     * @param fileName     文件名
     * @param moduleType   业务模块类型
     * @param attachtype   文书类型
     * @param templatePath 模版路径
     * @param data         渲染数据
     */
    String createPdfCommon(String bizseq, String title, String fileName, String moduleType, String attachtype, String templatePath, Map<String, Object> data);

    /**
     * 根据模板生成pdf文件
     *
     * @param bizseq     业务号-作文件夹
     * @param fileName   文件名
     * @param attachtype 文书类型
     * @param path       模板文件路径
     * @param map        模板参数
     * @param os
     */
    ServletOutputStream createPdfStream(String bizseq, String fileName, String attachtype, String path, Map<String, Object> map, ServletOutputStream os);

    /**
     * 根据模板生成文件 对象参数
     *
     * @param bizseq     业务号-作文件夹
     * @param fileName   文件名
     * @param attachtype 文书类型
     * @param path       模板文件路径
     * @param map        模板数据集合
     */
    void createDocxWithModel(String bizseq, String fileName, String attachtype, String path, Map<String, Object> map);

    /**
     * 根据模板生成案件终结调查报告文件
     *
     * @param bizseq     业务号-作文件夹
     * @param fileName   文件名
     * @param attachtype 文书类型
     * @param path       模板文件路径
     * @param map        模板数据集合
     */
    void createCasePdfWithModel(String bizseq, String fileName, String attachtype, String path, Map<String, Object> map);

//    /**
//     *  根据指定列生成主体Excel清单
//     * @param pripids
//     */
//    String createEntExcel(String bizseq,String attachtype,List<String> pripids);

    /**
     * 根据指定列生成主体Excel清单
     *
     * @param bizRevEnts
     */
    String createEntExcel(String bizseq, String attachtype, List<BizRevEnt> bizRevEnts);

    String createPdfZx(String bizseq, String fileName, String number, String path, Map<String, Object> map);
}
