决策报表导出实例demo
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

70 lines
2.9 KiB

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<String, Object> 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();
}
}
}
}