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.
71 lines
2.9 KiB
71 lines
2.9 KiB
3 years ago
|
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();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|