package com.smppw.modaq.application.components.report.parser;

import com.smppw.modaq.common.exception.ReportParseException;
import com.smppw.modaq.domain.dto.report.ReportData;
import com.smppw.modaq.domain.dto.report.ReportParserParams;

import java.io.IOException;

/**
 * @author wangzaijun
 * @date 2024/9/9 19:18
 * @description 报告模板解析器，计划支持pdf、word等
 */
public interface ReportParser<T extends ReportData> {
    /**
     * 获取当前解析器名称
     *
     * @return /
     */
    default String getParser() {
        return this.getClass().getSimpleName();
    }

    /**
     * 报告模板解析接口
     * 扩展支持月报、季报和年报，解析文件格式支持pdf、word和excel
     *
     * @param params 解析请求参数
     * @return 解析结果
     * @throws IOException 文件io异常
     */
    T parse(ReportParserParams params) throws IOException, ReportParseException;
}
