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