JSD-8649 开源任务材料
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.

50 lines
2.4 KiB

package com.fr.plugin;
import com.fr.decision.webservice.bean.security.WatermarkBean;
import com.fr.decision.webservice.v10.security.SecurityService;
import com.fr.io.collection.ExportCollection;
import com.fr.io.exporter.AppExporter;
import com.fr.plugin.excel.ExAppExporter;
import com.fr.plugin.transform.ExecuteFunctionRecord;
import com.fr.plugin.transform.FunctionRecorder;
import com.fr.stable.StringUtils;
import com.fr.web.core.ReportSessionIDInfor;
import com.fr.web.core.reserve.DefaultExportExtension;
import com.fr.web.core.reserve.ExportFactory;
import com.fr.web.core.reserve.Operate;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@FunctionRecorder
public class WmExportProcessor extends DefaultExportExtension {
@Override
@ExecuteFunctionRecord
public ExportCollection createCollection(HttpServletRequest req, HttpServletResponse res,
ReportSessionIDInfor sessionIDInfor, String format,
String fileName, boolean isEmbed) throws Exception {
Operate operate = ExportFactory.getOperate(format.toLowerCase());
if(StringUtils.equals("image",format)){
res.setHeader("Content-Disposition", "attachment;filename="+fileName+".png");
}else{
res.setHeader("Content-Disposition", "attachment;filename="+fileName+"."+format);
}
if (StringUtils.equals(format, "excel")) {
SecurityService securityService = SecurityService.getInstance();
WatermarkBean parsedWatermarkBean = securityService.getParsedWatermarkBean(req);
if (StringUtils.isNotBlank(parsedWatermarkBean.getText())) {
if (operate != null) {
//先获取到真的AppExporter 然后构造我们自己的导出器
ExportCollection exportCollection = operate.newExportCollection(req, res, sessionIDInfor, fileName);
AppExporter exporter = exportCollection.getExporter();
ExAppExporter exAppExporter = new ExAppExporter(exporter, parsedWatermarkBean);
exportCollection.setExporter(exAppExporter);
return exportCollection;
}
}
}
ExportCollection exportCollection = operate.newExportCollection(req, res, sessionIDInfor, fileName);
return exportCollection;
}
}