package com.tptj.demo.hg.form.export.processor; import com.fanruan.api.log.LogKit; import com.fanruan.api.web.FlushKit; import com.fr.form.main.Form; import com.fr.form.stable.fun.AbstractFormExportProcessor; import com.fr.form.ui.BaseChartEditor; import com.fr.form.ui.ElementCaseEditorProvider; import com.fr.form.ui.container.WLayout; import com.fr.intelli.record.Focus; import com.fr.json.JSONObject; import com.fr.record.analyzer.EnableMetrics; import com.fr.report.worksheet.FormElementCase; import com.fr.stable.EncodeConstants; import com.fr.web.core.FormSessionIDInfor; import com.fr.web.core.SessionPoolManager; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.URLEncoder; import java.util.Map; /** * @author 秃破天际 * @version 10.0 * Created by 秃破天际 on 2021-04-08 **/ @EnableMetrics public class Demo extends AbstractFormExportProcessor { @Override @Focus(id = "com.tptj.demo.hg.form.export.processor.v10",text = "form export processor") public void dealWithExport(HttpServletRequest req, HttpServletResponse res, String sessionID) { PrintWriter writer =null; try{ FormSessionIDInfor info = SessionPoolManager.getSessionIDInfor(sessionID, FormSessionIDInfor.class); //决策报表的标题,常用于作为导出的文件名 String title = info.getWebTitle(); res.setContentType("application/json"); res.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(title, EncodeConstants.ENCODING_UTF_8)+".json\""); //决策报表计算使用的所有参数,常用于处理文件名 Map parameters = info.getParameterMap4Execute(); //决策报表的结果,也是导出数据的主体内容 Form form = info.getForm2Show(); //要导出的图表 BaseChartEditor[] charts = form.getAllCharts(); //整个决策报表的布局,所有的控件/图表/报表块之类的全部在里面 WLayout container = form.getContainer(); //要导出的所有报表块 ElementCaseEditorProvider[] elements = form.getElementCases(); for( ElementCaseEditorProvider element : elements ){ //报表块的内容 FormElementCase elementCase = (FormElementCase) element.getElementCase(); } writer = new PrintWriter(new OutputStreamWriter(res.getOutputStream())); writer.print(JSONObject.create() .put("format",parameters.get("format")) .put("sessionID",sessionID) ); }catch(Exception e){ LogKit.error(e.getMessage(),e); }finally { if( null != writer ){ writer.close(); } } } }