Quellcode durchsuchen

修改标准模板下载、自动部署的处理方式

sunyj vor 9 Jahren
Ursprung
Commit
136a04e14b

+ 15 - 4
src/main/java/com/uas/report/controller/FileController.java

@@ -1,5 +1,6 @@
 package com.uas.report.controller;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -32,8 +33,8 @@ public class FileController {
 
 	@RequestMapping("/autoDeploy")
 	@ResponseBody
-	public String autoDeploy(String userNames) {
-		return fileService.autoDeploy(userNames);
+	public String autoDeploy(String sourceUserName, String destinationUserNames) {
+		return fileService.autoDeploy(sourceUserName, destinationUserNames);
 	}
 
 	@RequestMapping("/upload")
@@ -97,8 +98,18 @@ public class FileController {
 	 */
 	@RequestMapping("/standardJrxmls")
 	@ResponseBody
-	public void standardJrxmls(String onlyData, HttpServletResponse response) {
-		fileService.downloadStandardJrxmls(response);
+	public Map<String, Object> standardJrxmls(String userName, String onlyData, HttpServletResponse response) {
+		// onlyData为真,只返回字节数据(自动部署时只获取标准模板字节数据),否则下载标准模板zip
+		if (!StringUtils.isEmpty(onlyData) && (onlyData.equals("1") || onlyData.equals("true"))) {
+			Map<String, Object> result = new HashMap<>();
+			// 不直接返回byte[],是因为客户端请求数据时,该请求可能会抛出异常,
+			// 之后客户端获取byte[]数据,进行处理时难以判断数据是文件数据还是异常信息
+			result.put("data", fileService.getStandardJrxmls(userName));
+			return result;
+		} else {
+			fileService.downloadStandardJrxmls(userName, response);
+			return null;
+		}
 	}
 
 	@RequestMapping("/delete")

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

@@ -52,7 +52,7 @@ public class PrintController {
 	 * 为UAS系统打印提供服务, 根据printType进行预览、打印、下载pdf、下载纯数据excel等操作
 	 * 
 	 * @param userName
-	 *            不为null;当前账套用户
+	 *            不为null;当前账套名
 	 * @param profile
 	 *            可选(UAS系统不必传递该参数),用于标识请求源(B2C、B2B)是正式、测试还是开发版本:prod、test、dev
 	 * @param reportName
@@ -107,7 +107,7 @@ public class PrintController {
 	 * 导出报表
 	 * 
 	 * @param userName
-	 *            不为null;当前账套用户
+	 *            不为null;当前账套名
 	 * @param profile
 	 *            可选(UAS系统不必传递该参数),用于标识请求源(B2C、B2B)是正式、测试还是开发版本:prod、test、dev
 	 * @param reportName
@@ -191,7 +191,7 @@ public class PrintController {
 	 * 报表预览时获取pdf流
 	 * 
 	 * @param userName
-	 *            不为null;当前账套用户
+	 *            不为null;当前账套名
 	 * @param profile
 	 *            可选(UAS系统不必传递该参数),用于标识请求源(B2C、B2B)是正式、测试还是开发版本:prod、test、dev
 	 * @param reportName
@@ -266,7 +266,7 @@ public class PrintController {
 	 * 获取生成的pdf或者xls的信息
 	 * 
 	 * @param userName
-	 *            不为null;当前账套用户
+	 *            不为null;当前账套名
 	 * @param profile
 	 *            可选(UAS系统不必传递该参数),用于标识请求源(B2C、B2B)是正式、测试还是开发版本:prod、test、dev
 	 * @param reportName

+ 20 - 5
src/main/java/com/uas/report/service/FileService.java

@@ -18,11 +18,13 @@ public interface FileService {
 	/**
 	 * 自动对新部署的账套进行下载模板、解压、配置路径等操作
 	 * 
-	 * @param userNames
-	 *            账套名称,多个账套以英文逗号隔开
+	 * @param sourceUserName
+	 *            模板来源(标准账套名称)
+	 * @param destinationUserNames
+	 *            新部署的账套
 	 * @return 部署结果
 	 */
-	public String autoDeploy(String userNames);
+	public String autoDeploy(String sourceUserName, String destinationUserNames);
 
 	/**
 	 * 上传文件至指定的账套下
@@ -71,9 +73,22 @@ public interface FileService {
 	public String getMasterPath(String userName);
 
 	/**
-	 * 获取标准模板
+	 * 下载指定账套的标准模板
+	 * 
+	 * @param userName
+	 *            账套名称
+	 * @param response
+	 */
+	public void downloadStandardJrxmls(String userName, HttpServletResponse response);
+
+	/**
+	 * 获取指定账套的标准模板数据
+	 * 
+	 * @param userName
+	 *            账套名称
+	 * @return 标准模板数据
 	 */
-	public void downloadStandardJrxmls(HttpServletResponse response);
+	public byte[] getStandardJrxmls(String userName);
 
 	/**
 	 * 获取账套下的所有资源

+ 29 - 12
src/main/java/com/uas/report/service/impl/FileServiceImpl.java

@@ -68,26 +68,27 @@ public class FileServiceImpl implements FileService {
 	};
 
 	@Override
-	public String autoDeploy(String userNames) {
-		logger.info("request... " + userNames);
-		if (StringUtils.isEmpty(userNames)) {
-			throw new ReportException("参数不能为空:userNames");
+	public String autoDeploy(String sourceUserName, String destinationUserNames) {
+		logger.info("request... " + destinationUserNames);
+		if (StringUtils.isEmpty(sourceUserName) || StringUtils.isEmpty(destinationUserNames)) {
+			throw new ReportException("参数不能为空:sourceUserName,destinationUserNames");
 		}
 		try {
-			logger.info("get standardJrxmls from " + sysConf.getStandardJrxmlsUrl() + "...");
+			String stantardJrxmlsUrl = String.format(sysConf.getStandardJrxmlsUrl(), sourceUserName);
+			logger.info("get standardJrxmls from " + stantardJrxmlsUrl + "...");
 			// 获取标准模板数据
 			JSONObject jsonObject = JSONObject.parseObject(IOUtils.toString(HttpClients.createDefault()
-					.execute(new HttpGet(URI.create(sysConf.getStandardJrxmlsUrl()))).getEntity().getContent()));
+					.execute(new HttpGet(URI.create(stantardJrxmlsUrl))).getEntity().getContent()));
 			byte[] data = jsonObject.getBytes("data");
 			if (ArrayUtils.isEmpty(data)) {
 				throw new ReportException("标准模板不存在");
 			}
-			String[] userNameArray = userNames.split(",");
+			String[] userNameArray = destinationUserNames.split(",");
 			// 创建账套路径并解压模板zip包
 			for (String userName : userNameArray) {
 				ZipUtils.unzip(data, getMasterPath(userName));
 			}
-			return "已自动部署:" + userNames;
+			return "已自动部署:" + destinationUserNames;
 		} catch (UnsupportedOperationException | IOException e) {
 			throw new ReportException(e).setDetailedMessage(e);
 		}
@@ -97,7 +98,7 @@ public class FileServiceImpl implements FileService {
 	public String upload(final String userName, String fileType, final MultipartFile file) {
 		String message = "";
 		if (StringUtils.isEmpty(userName)) {
-			message = "未传入当前账套用户名!";
+			message = "未传入当前账套名!";
 			logger.error(message);
 			return message;
 		}
@@ -204,14 +205,30 @@ public class FileServiceImpl implements FileService {
 	}
 
 	@Override
-	public void downloadStandardJrxmls(HttpServletResponse response) {
-		downloadZip(sysConf.getStandardMaster(), response);
+	public byte[] getStandardJrxmls(String userName) {
+		if (StringUtils.isEmpty(userName)) {
+			throw new ReportException("未传入当前账套名称!");
+		}
+		byte[] data = ZipUtils.zipFolder(getMasterPath(sysConf.getStandardMaster()) + "/" + userName,
+				FileServiceImpl.fileFilter);
+		if (ArrayUtils.isEmpty(data)) {
+			throw new ReportException("压缩失败");
+		}
+		return data;
+	}
+
+	@Override
+	public void downloadStandardJrxmls(String userName, HttpServletResponse response) {
+		if (StringUtils.isEmpty(userName)) {
+			throw new ReportException("未传入当前账套名称!");
+		}
+		downloadZip(sysConf.getStandardMaster() + "/" + userName, response);
 	}
 
 	@Override
 	public void downloadZip(String userName, HttpServletResponse response) {
 		if (StringUtils.isEmpty(userName)) {
-			throw new ReportException("未传入当前账套用户名!");
+			throw new ReportException("未传入当前账套名!");
 		}
 		String masterPath = getMasterPath(userName);
 		byte[] data = ZipUtils.zipFolder(masterPath, FileServiceImpl.fileFilter);

+ 1 - 1
src/main/java/com/uas/report/support/SysConf.java

@@ -30,7 +30,7 @@ public class SysConf {
 	private String localJrxmlDir;
 
 	/**
-	 * 标准账套名称(存放标准模板)
+	 * 标准账套(存放标准模板)
 	 */
 	@Value("#{sys.standardMaster}")
 	private String standardMaster;

+ 1 - 1
src/main/java/com/uas/report/util/ReportUtils.java

@@ -21,7 +21,7 @@ public class ReportUtils {
 	 */
 	public static void checkParameters(String userName, String reportName) {
 		if (StringUtils.isEmpty(userName)) {
-			throw new ReportException("未传入当前账套用户名!");
+			throw new ReportException("未传入当前账套名!");
 		}
 		if (StringUtils.isEmpty(reportName)) {
 			throw new ReportException("未传入报表名称!");

+ 1 - 1
src/main/resources/dev/sys.properties

@@ -3,4 +3,4 @@ localBaseDir=C:/sunyj/reports/60
 localImagesDir=/Picture
 localJrxmlDir=/jrxml
 standardMaster=STANDARD_MASTER
-standardJrxmlsUrl=http://print.ubtob.com/report/file/standardJrxmls?onlyData=1
+standardJrxmlsUrl=http://localhost:8090/report/file/standardJrxmls?userName=%s&onlyData=1

+ 1 - 1
src/main/resources/prod/sys.properties

@@ -2,4 +2,4 @@ localBaseDir=/opt/report/data
 localImagesDir=/Picture
 localJrxmlDir=/jrxml
 standardMaster=STANDARD_MASTER
-standardJrxmlsUrl=http://print.ubtob.com/report/file/standardJrxmls?onlyData=1
+standardJrxmlsUrl=http://print.ubtob.com/report/file/standardJrxmls?userName=%s&onlyData=1

+ 1 - 1
src/main/resources/test/sys.properties

@@ -2,4 +2,4 @@ localBaseDir=/data/reports
 localImagesDir=/Picture
 localJrxmlDir=/jrxml
 standardMaster=STANDARD_MASTER
-standardJrxmlsUrl=http://192.168.253.60:8090/report/file/standardJrxmls?onlyData=1
+standardJrxmlsUrl=http://192.168.253.60:8090/report/file/standardJrxmls?userName=%s&onlyData=1

+ 3 - 2
src/main/webapp/WEB-INF/views/console.html

@@ -69,11 +69,12 @@
 			<ol>
 				<strong><li class="title1">标准模板</li></strong>
 				<ol>
-					<li><a target="_blank">file/standardJrxmls</a></li>
+					<li><a target="_blank">file/standardJrxmls?userName=UAS</a></li>
+					<li><a target="_blank">file/standardJrxmls?userName=UAS&onlyData=1</a></li>
 				</ol>
 				<strong><li class="title1">自动部署新账套</li></strong>
 				<ol>
-					<li><a target="_blank">file/autoDeploy?userNames=UAS,UAS_TEST</a></li>
+					<li><a target="_blank">file/autoDeploy?sourceUserName=UAS&destinationUserNames=1,2</a></li>
 				</ol>
 			</ol>