Browse Source

报表预览;下载pdf、xls格式报表

sunyj 9 years ago
parent
commit
c47c0b1fa8

+ 15 - 7
src/main/java/com/uas/report/controller/PrintController.java

@@ -129,10 +129,9 @@ public class PrintController {
 	 * @param request
 	 * @return
 	 */
-	@RequestMapping(value = "/preview")
-	public String preview(String userName, String reportName, String whereCondition,
-			Map<String, Object> otherParameters, HttpServletRequest request) {
-		// TODO
+	@RequestMapping(value = "/getData")
+	public String getData(String userName, String reportName, String whereCondition,
+			Map<String, Object> otherParameters, HttpServletRequest request, HttpServletResponse response) {
 		String message = "";
 		if (StringUtils.isEmpty(userName)) {
 			message = "未传入当前账套用户名!";
@@ -156,10 +155,19 @@ public class PrintController {
 			request.setAttribute("message", message);
 			return "error.jsp";
 		}
-		request.setAttribute("data", data);
-		request.setAttribute("message", "test");
+
+		try {
+			response.setContentType("application/pdf");
+			OutputStream outputStream = response.getOutputStream();
+			outputStream.write(data);
+			outputStream.flush();
+			outputStream.close();
+		} catch (IOException e) {
+			logger.error("浏览器重复请求!");
+		}
+
 		message = "报表 " + reportName + " 预览完成!";
 		logger.info(message);
-		return "preview.jsp";
+		return null;
 	}
 }

+ 59 - 8
src/main/webapp/WEB-INF/views/preview.jsp

@@ -1,24 +1,75 @@
 <%@ page language="java" contentType="text/html; UTF-8"
 	pageEncoding="UTF-8"%>
 <%@ page language="java" import="java.io.IOException"%>
+<%@ page language="java" import="org.springframework.util.StringUtils"%>
+<%@ page language="java" import="java.util.Map"%>
+<%@ page language="java" import="java.net.URLEncoder"%>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+
 <title>Preview</title>
 <%
-	byte[] data = (byte[]) request.getAttribute("data");
-%>
+	Map map = request.getParameterMap();
 
+	String userName = request.getParameter("userName");
+	String reportName = request.getParameter("reportName");
+	String whereCondition = request.getParameter("whereCondition");
+	String otherParameters = request.getParameter("otherParameters");
+	//byte[] data = (byte[]) request.getAttribute("data");
+%>
 </head>
 <body>
+
 	<%
-		response.reset();
-		response.setContentType("application/pdf");
-		response.getOutputStream().write(data);
-		out.clear();
-		out = pageContext.pushBody();
+		StringBuilder urlStringBuilder = new StringBuilder("print/getData");
+		//参数前是否需要添加&
+		boolean needAnd = false;
+		if (!StringUtils.isEmpty(userName)) {
+			urlStringBuilder.append("?userName=").append(userName);
+			needAnd = true;
+		}
+		if (!StringUtils.isEmpty(reportName)) {
+			if (needAnd) {
+				urlStringBuilder.append("&");
+			} else {
+				urlStringBuilder.append("?");
+			}
+			urlStringBuilder.append("reportName=").append(reportName);
+		}
+		if (!StringUtils.isEmpty(whereCondition)) {
+			if (needAnd) {
+				urlStringBuilder.append("&");
+			} else {
+				urlStringBuilder.append("?");
+			}
+			urlStringBuilder.append("whereCondition=").append(whereCondition);
+		}
+		if (!StringUtils.isEmpty(otherParameters)) {
+			if (needAnd) {
+				urlStringBuilder.append("&");
+			} else {
+				urlStringBuilder.append("?");
+			}
+			urlStringBuilder.append("otherParameters=").append(otherParameters);
+		}
 	%>
-	}
+
+	<form
+		action="<%=urlStringBuilder.toString().replace("getData", "")%>&exportFileType=pdf"
+		method="post">
+		<input stype="cursor:pointer" type="submit" value="export as pdf">
+	</form>
+
+	<form
+		action="<%=urlStringBuilder.toString().replace("getData", "")%>&exportFileType=xls"
+		method="post">
+		<input stype="cursor:pointer" type="submit" value="export as xls">
+	</form>
+
+	<iframe id="pdf_frame" name="pdf_frame"
+		src="<%=urlStringBuilder.toString()%>" scrolling="no" frameBorder="0"
+		style="height: 620px; width: 100%"> </iframe>
 </body>
 </html>

+ 1 - 0
src/main/webapp/WEB-INF/webmvc.xml

@@ -27,5 +27,6 @@
 	</bean>
 
 	<mvc:view-controller path="/" view-name="index.jsp" />
+	<mvc:view-controller path="/preview" view-name="preview.jsp" />
 
 </beans>