package com.ynet.life.controller; import com.ynet.gene.core.Context; import com.ynet.gene.core.GENEConstance; import com.ynet.gene.session.InvalidSessionException; import com.ynet.gene.session.Session; import com.ynet.gene.web.servlet.ModelAndView; import com.ynet.gene.web.servlet.mvc.BizLogicException; import com.ynet.gene.web.servlet.mvc.GENEFlowExecuteResult; import com.ynet.gene.web.servlet.mvc.InvalidInputException; import com.ynet.life.base.LifeConstants; import com.ynet.life.base.LifeStandard; import com.ynet.life.base.Trace; import com.ynet.life.exception.TranFailException; import com.ynet.life.format.LifeStringFilter; import com.ynet.life.util.BirtEngine; import com.ynet.util.algorithm.RandomStringUtils; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.birt.core.exception.BirtException; import org.eclipse.birt.report.engine.api.HTMLRenderOption; import org.eclipse.birt.report.engine.api.IReportEngine; import org.eclipse.birt.report.engine.api.IReportRunnable; import org.eclipse.birt.report.engine.api.IRunAndRenderTask; import org.eclipse.birt.report.model.api.ScalarParameterHandle; /* loaded from: com_ynet_life_controller.jar:com/ynet/life/controller/LifeReportRequestController.class */ public class LifeReportRequestController extends LifeRequestController { private static final String HTML_CHAR_ENCODE = ""; private static final String HTML_STYLE = ""; private static final String HTML_SCRIPT = ""; private static final String HTML_TABLE_HEAD = ""; private static final String HTML_EXPORT_TOOL = ""; private static final String HTML_PRINT_TOOL = ""; private static final String HTML_OTHER_TOOL = "
"; private static final String HTML_TABLE_TAIL = "
"; private static final String HTML_PARAMETER_HEAD = ""; private static final String HTML_IFRAME = ""; @Override // com.ynet.life.controller.LifeRequestController public ModelAndView doRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { if (this.openMonitor) { this.accessInfo.newAccess(); } Session session = doSessionCheck(request, response); if (session == null) { Trace.logError("LifeSession", "Session not exist or timeout"); throw LifeConstants.EXCEPTION_SESSION_TIMEOUT; } Context sessionContext = (Context) session.getAttribute(GENEConstance.ATTR_CONTEXT); if (sessionContext != null) { preActionWork(request, sessionContext); } Map model = new HashMap(); model.put(GENEConstance.ATTR_CONTEXT, sessionContext); GENEFlowExecuteResult result = executeGENELogic(sessionContext, request, response); model.put(GENEConstance.ATTR_CONTEXT, result.context); if (result.e != null) { if (result.e instanceof InvalidInputException) { throw result.e; } if (result.e instanceof InvalidSessionException) { this.sessionManager.removeSession(session); throw new BizLogicException(model, result.e); } throw new BizLogicException(model, result.e); } Context context = result.context; try { ServletContext sc = request.getSession().getServletContext(); String designFile = (String) context.getDataValue("designFile"); String format = (String) context.getDataValue("format"); String reportFile = (String) context.getDataValue("reportFile"); try { try { ServletOutputStream outputStream = response.getOutputStream(); IReportEngine birtReportEngine = BirtEngine.getBirtEngine(sc); IReportRunnable design = birtReportEngine.openReportDesign(String.valueOf(sc.getRealPath("WEB-INF/mvcs" + request.getContextPath() + "/reports")) + "/" + designFile); List allParameter = design.getDesignHandle().getAllParameters(); for (int i = 0; i < allParameter.size(); i++) { ScalarParameterHandle phandle = (ScalarParameterHandle) allParameter.get(i); String parameterName = phandle.getName(); String parameterValue = ((String) context.getDataValue(parameterName)) == null ? "" : (String) context.getDataValue(parameterName); phandle.setDefaultValue(parameterValue); } IRunAndRenderTask task = birtReportEngine.createRunAndRenderTask(design); HTMLRenderOption options = new HTMLRenderOption(); options.setBaseImageURL(String.valueOf(request.getContextPath()) + "/images"); options.setImageDirectory(sc.getRealPath("/images")); if (format == null || "html".equalsIgnoreCase(format)) { response.setContentType("text/html"); options.setOutputFormat("html"); options.setEmbeddable(true); outputStream.write(HTML_CHAR_ENCODE.getBytes()); outputStream.write(HTML_STYLE.getBytes()); outputStream.write(HTML_SCRIPT.getBytes()); outputStream.write(HTML_TABLE_HEAD.getBytes()); outputStream.write(HTML_EXPORT_TOOL.getBytes()); outputStream.write(HTML_PRINT_TOOL.getBytes()); outputStream.write(HTML_OTHER_TOOL.getBytes()); outputStream.write(HTML_TABLE_TAIL.getBytes()); outputStream.write(("").getBytes()); outputStream.write(HTML_PARAMETER_HEAD.getBytes()); Iterator it = request.getParameterMap().keySet().iterator(); while (it.hasNext()) { String paramName = LifeStringFilter.filterHtmlTag((String) it.next()); String paramValue = LifeStringFilter.filterHtmlTag(request.getParameter(paramName)); outputStream.write(("").getBytes()); } outputStream.write(HTML_PARAMETER_TAIL.getBytes()); outputStream.write(HTML_IFRAME.getBytes()); outputStream.flush(); } else { response.setContentType("application/pdf"); response.setHeader("Content-Disposition", "attachment; filename=" + getFileName(String.valueOf(reportFile) + ".pdf")); options.setOutputFormat("pdf"); } options.setOutputStream(outputStream); task.setRenderOption(options); task.run(); task.close(); context.terminate(); return null; } catch (BirtException be) { Trace.logError(GENEConstance.GENE_MVC, "报表生成失败", be); throw new TranFailException("EBLN0000", be.getMessage(), be); } } catch (IOException ex) { Trace.logError(GENEConstance.GENE_MVC, "报表生成失败", ex); throw new TranFailException("EBLN0000", ex.getMessage(), ex); } } catch (Throwable th) { context.terminate(); throw th; } } @Override // com.ynet.life.controller.LifeRequestController protected void preActionWork(HttpServletRequest request, Context sessionContext) throws TranFailException { LifeAccessCenter.checkUserPrivilege(request, getName(), sessionContext); LifeAccessCenter.checkSubmitTimestamp(request, sessionContext); } protected String getFileName(String fileName) { return String.valueOf(LifeStandard.getServerTime("yyyyMMddHHmmssSSS")) + RandomStringUtils.random(5, "0-9|A-Z|a-z", (String) null) + "_" + fileName; } }