Browse Source

DetailBand中元素的高度不进行动态调整;otherParameters参数类型改为String

sunyj 9 years ago
parent
commit
42034c3854

+ 8 - 11
pom.xml

@@ -20,8 +20,8 @@
 		<groovy.version>2.4.7</groovy.version>
 		<poi.version>3.10.1</poi.version>
 		<commons.fileupload.version>1.3.2</commons.fileupload.version>
-		<spring.security.acl.version>4.1.3.RELEASE</spring.security.acl.version>
-		<org.hibernate.core.version>3.3.2.GA</org.hibernate.core.version>
+		<fastjson.version>1.1.39</fastjson.version>
+		<jasperserver.api.version>6.3.0</jasperserver.api.version>
 	</properties>
 
 	<dependencies>
@@ -97,17 +97,14 @@
 			<version>${commons.fileupload.version}</version>
 		</dependency>
 
-		<!-- jasperserver api 依赖包 -->
 		<dependency>
-			<groupId>org.springframework.security</groupId>
-			<artifactId>spring-security-acl</artifactId>
-			<version>${spring.security.acl.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.hibernate</groupId>
-			<artifactId>hibernate-core</artifactId>
-			<version>${org.hibernate.core.version}</version>
+			<groupId>com.alibaba</groupId>
+			<artifactId>fastjson</artifactId>
+			<version>${fastjson.version}</version>
 		</dependency>
+
+		<!-- <dependency> <groupId>com.jaspersoft.jasperserver</groupId> <artifactId>jasperserver-api</artifactId> 
+			<version>${jasperserver.api.version}</version> </dependency> -->
 	</dependencies>
 
 	<build>

+ 6 - 4
src/main/java/com/uas/report/controller/PrintController.java

@@ -45,7 +45,8 @@ public class PrintController {
 	 * @param whereCondition
 	 *            可为null;where之后的条件(包括where)
 	 * @param otherParameters
-	 *            若模板已指定需要的参数,则不可为null;其他参数,区别于whereCondition,报表某些字段的值取决于这些参数
+	 *            若模板已指定需要的参数,则不可为null;其他参数,区别于whereCondition,报表某些字段的值取决于这些参数;
+	 *            JSON格式,数据为键值对
 	 * @param exportFileType
 	 *            报表导出的格式,默认为pdf
 	 * @param request
@@ -54,7 +55,7 @@ public class PrintController {
 	 */
 	@RequestMapping("/export")
 	@ResponseBody
-	public void export(String userName, String reportName, String whereCondition, Map<String, Object> otherParameters,
+	public void export(String userName, String reportName, String whereCondition, String otherParameters,
 			String exportFileType, HttpServletRequest request, HttpServletResponse response) {
 		String message = "";
 		if (StringUtils.isEmpty(userName)) {
@@ -108,7 +109,8 @@ public class PrintController {
 	 * @param whereCondition
 	 *            可为null;where之后的条件(包括where)
 	 * @param otherParameters
-	 *            若模板已指定需要的参数,则不可为null;其他参数,区别于whereCondition,报表某些字段的值取决于这些参数
+	 *            若模板已指定需要的参数,则不可为null;其他参数,区别于whereCondition,报表某些字段的值取决于这些参数;
+	 *            JSON格式,数据为键值对
 	 * @param pageIndex
 	 *            分页展示,当前页码,从0开始
 	 * @return
@@ -116,7 +118,7 @@ public class PrintController {
 	@RequestMapping(value = "/loadPdfData")
 	@ResponseBody
 	public Map<String, Object> loadPdfData(String userName, String reportName, String whereCondition,
-			Map<String, Object> otherParameters, Integer pageIndex) {
+			String otherParameters, Integer pageIndex) {
 		String message = "";
 		if (StringUtils.isEmpty(userName)) {
 			message = "未传入当前账套用户名!";

+ 6 - 4
src/main/java/com/uas/report/service/PrintService.java

@@ -20,12 +20,13 @@ public interface PrintService {
 	 * @param whereCondition
 	 *            可为null;where之后的条件(包括where)
 	 * @param otherParameters
-	 *            若模板已指定需要的参数,则不可为null;其他参数,区别于whereCondition,报表某些字段的值取决于这些参数
+	 *            若模板已指定需要的参数,则不可为null;其他参数,区别于whereCondition,报表某些字段的值取决于这些参数;
+	 *            JSON格式,数据为键值对
 	 * @param exportFileType
 	 *            报表导出的格式,默认为pdf
 	 * @return 导出的文件的字节数组
 	 */
-	public byte[] export(String userName, String reportName, String whereCondition, Map<String, Object> otherParameters,
+	public byte[] export(String userName, String reportName, String whereCondition, String otherParameters,
 			String exportFileType);
 
 	/**
@@ -38,11 +39,12 @@ public interface PrintService {
 	 * @param whereCondition
 	 *            可为null;where之后的条件(包括where)
 	 * @param otherParameters
-	 *            若模板已指定需要的参数,则不可为null;其他参数,区别于whereCondition,报表某些字段的值取决于这些参数
+	 *            若模板已指定需要的参数,则不可为null;其他参数,区别于whereCondition,报表某些字段的值取决于这些参数;
+	 *            JSON格式,数据为键值对
 	 * @param pageIndex
 	 *            分页展示,当前页码,从0开始
 	 * @return 报表数据"data": byte[];总页数"pageSize": Integer
 	 */
 	public Map<String, Object> preview(String userName, String reportName, String whereCondition,
-			Map<String, Object> otherParameters, Integer pageIndex);
+			String otherParameters, Integer pageIndex);
 }

+ 23 - 7
src/main/java/com/uas/report/service/impl/PrintServiceImpl.java

@@ -21,12 +21,17 @@ import org.springframework.util.StringUtils;
 
 import com.alibaba.druid.pool.DruidDataSource;
 import com.alibaba.druid.pool.DruidDataSourceFactory;
+import com.alibaba.fastjson.JSONObject;
 import com.uas.report.core.exception.SystemError;
 import com.uas.report.service.PrintService;
 import com.uas.report.util.ContextUtils;
 import com.uas.report.util.ReportConstants;
 
+import net.sf.jasperreports.engine.JRBand;
+import net.sf.jasperreports.engine.JRElement;
 import net.sf.jasperreports.engine.JRException;
+import net.sf.jasperreports.engine.JRSection;
+import net.sf.jasperreports.engine.JRTextField;
 import net.sf.jasperreports.engine.JasperCompileManager;
 import net.sf.jasperreports.engine.JasperExportManager;
 import net.sf.jasperreports.engine.JasperFillManager;
@@ -54,7 +59,7 @@ public class PrintServiceImpl implements PrintService {
 	private static Logger logger = Logger.getLogger(PrintService.class);
 
 	@Override
-	public byte[] export(String userName, String reportName, String whereCondition, Map<String, Object> otherParameters,
+	public byte[] export(String userName, String reportName, String whereCondition, String otherParameters,
 			String exportFileType) {
 		Map<String, Object> result = print(userName, reportName, whereCondition, otherParameters, exportFileType, null);
 		if (!CollectionUtils.isEmpty(result)) {
@@ -65,7 +70,7 @@ public class PrintServiceImpl implements PrintService {
 
 	@Override
 	public Map<String, Object> preview(String userName, String reportName, String whereCondition,
-			Map<String, Object> otherParameters, Integer pageIndex) {
+			String otherParameters, Integer pageIndex) {
 		return print(userName, reportName, whereCondition, otherParameters, null, pageIndex);
 	}
 
@@ -80,8 +85,8 @@ public class PrintServiceImpl implements PrintService {
 	 * @param pageIndex
 	 * @return
 	 */
-	private Map<String, Object> print(String userName, String reportName, String whereCondition,
-			Map<String, Object> otherParameters, String exportFileType, Integer pageIndex) {
+	private Map<String, Object> print(String userName, String reportName, String whereCondition, String otherParameters,
+			String exportFileType, Integer pageIndex) {
 		String message = "";
 		if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(reportName)) {
 			message = "参数错误";
@@ -131,8 +136,10 @@ public class PrintServiceImpl implements PrintService {
 		if (!StringUtils.isEmpty(whereCondition)) {
 			parameters.put(ReportConstants.PARAMETER_WHERE_CONDITION, whereCondition);
 		}
-		if (!CollectionUtils.isEmpty(otherParameters)) {
-			parameters.putAll(otherParameters);
+
+		// 不为空,并且去除空格后的长度大于2(不为{})
+		if (!StringUtils.isEmpty(otherParameters) && otherParameters.replace(" ", "").length() > 2) {
+			parameters.putAll(JSONObject.parseObject(otherParameters));
 		}
 
 		Connection connection = null;
@@ -198,7 +205,7 @@ public class PrintServiceImpl implements PrintService {
 				result.put("pageSize", jasperPrint.getPages().size());
 				return result;
 			} else {
-				message = "exportFileType 和 pageSize 不能同时为空!";
+				message = "exportFileType 和 pageIndex 不能同时为空!";
 				logger.error(message);
 				throw new SystemError(message);
 			}
@@ -371,5 +378,14 @@ public class PrintServiceImpl implements PrintService {
 		jasperDesign.setLeftMargin(0);
 		jasperDesign.setBottomMargin(0);
 		jasperDesign.setRightMargin(0);
+
+		// 设置DetailBand中的元素高度不动态调整
+		JRSection detailSection = jasperDesign.getDetailSection();
+		JRBand[] bands = detailSection.getBands();
+		JRElement[] elements = bands[0].getElements();
+		for (JRElement element : elements) {
+			JRTextField textField = (JRTextField) element;
+			textField.setStretchWithOverflow(false);
+		}
 	}
 }

+ 14 - 14
src/main/webapp/resources/js/preview/app.js

@@ -51,39 +51,40 @@ var getParameter = function(key) {
 	return null;
 };
 
-// 获取url
-var getUrl = function(page) {
+// 获取所有参数
+var getParameters = function() {
 	var userName = getParameter("userName");
 	var reportName = getParameter("reportName");
 	var whereCondition = getParameter("whereCondition");
 	var otherParameters = getParameter("otherParameters");
-	pageIndex = page || getParameter("pageIndex") || 1;
+	pageIndex = getParameter("pageIndex") || 1;
 
-	var previewUrl = "print/loadPdfData?";
+	var parameters = new Object();
 	if (userName) {
-		previewUrl += "userName=" + userName;
+		parameters.userName = userName;
 	}
 	if (reportName) {
-		previewUrl += "&reportName=" + reportName;
+		parameters.reportName = reportName;
 	}
 	if (whereCondition) {
-		previewUrl += "&whereCondition=" + whereCondition;
+		parameters.whereCondition = whereCondition;
 	}
 	if (otherParameters) {
-		previewUrl += "&otherParameters=" + otherParameters;
+		parameters.otherParameters = otherParameters;
 	}
 	if (pageIndex) {
-		previewUrl += "&pageIndex=" + pageIndex;
+		parameters.pageIndex = pageIndex;
 	}
-	return previewUrl;
+	return parameters;
 }
 
 // 获取数据
-function loadData(page, callback) {
+function loadData() {
 	$.ajax({
-		type : "get",
+		type : "post",
 		async : false,
-		url : page ? getUrl(page) : getUrl(),
+		url : "print/loadPdfData",
+		data : getParameters(),
 		success : function(data) {
 			pageSize = data.pageSize;
 			PDFData = base64_decode(data.data);
@@ -94,7 +95,6 @@ function loadData(page, callback) {
 				array[i] = PDFData.charCodeAt(i) & 0xff;
 			}
 			DEFAULT_URL = array;
-			callback && callback.call();
 		}
 	});
 };