Browse Source

初步实现文件下载

menglu 3 years ago
parent
commit
37d5dcfa4d

+ 29 - 10
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/service/rest/RestApi.java

@@ -5,6 +5,8 @@ import java.util.concurrent.ConcurrentHashMap;
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -15,11 +17,10 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.serializer.SerializerFeature;
-import com.persagy.ibms.core.util.FastJsonCompareUtil;
 import com.persagy.ibms.core.util.FilterUtil;
+import com.persagy.ibms.data.sdk.util.ExportUtil;
 import com.persagy.ibms.data.sdk.util.RWDAlarmUtil;
 import com.persagy.ibms.data.sdk.util.RepositoryContainer;
 import com.persagy.ibms.data.sdk.util.ToolUtil;
@@ -149,15 +150,33 @@ public class RestApi {
 
 	@PostMapping(path = { "/post_filter_and_page", "/zkt-sdk/post_filter_and_page" }, produces = "application/json;charset=UTF-8")
 	public String post_filter_and_page(@RequestBody String param, HttpServletRequest request) {
+		String result = FilterUtil.post_filter_and_page(RepositoryContainer.instance, param);
+		return result;
+	}
+
+	@PostMapping(path = { "/history_alarm", "/zkt-sdk/history_alarm" }, produces = "application/json;charset=UTF-8")
+	public String history_alarm(@RequestBody String param, HttpServletRequest request) {
 		JSONObject paramObject = JSON.parseObject(param);
-		JSONArray path = (JSONArray) paramObject.get("path");
-		if (FastJsonCompareUtil.Instance().Compare(path, RWDAlarmUtil.history_alarm_path, true)) {
-			String result = RWDAlarmUtil.post_filter_and_page(paramObject);
-			return result;
-		} else {
-			String result = FilterUtil.post_filter_and_page(RepositoryContainer.instance, param);
-			return result;
-		}
+		JSONObject result = RWDAlarmUtil.post_filter_and_page(paramObject);
+		return result.toJSONString();
+	}
+
+	@GetMapping(path = "/history_alarm_export_get/{param}")
+	public ResponseEntity<FileSystemResource> history_alarm_export_get(@PathVariable("param") String param) {
+		JSONObject params = JSON.parseObject(param);
+		JSONObject paramObject = new JSONObject();
+		paramObject.put("params", params);
+		ResponseEntity<FileSystemResource> fsr = ExportUtil.history_alarm_export(paramObject);
+		return fsr;
+	}
+
+	@RequestMapping(path = "/history_alarm_export_post", method = { RequestMethod.POST })
+	public ResponseEntity<FileSystemResource> history_alarm_export_post(@RequestParam(required = false) String param) {
+		JSONObject params = JSON.parseObject(param);
+		JSONObject paramObject = new JSONObject();
+		paramObject.put("params", params);
+		ResponseEntity<FileSystemResource> fsr = ExportUtil.history_alarm_export(paramObject);
+		return fsr;
 	}
 
 	@PostMapping(path = { "/control", "/zkt-sdk/control" }, produces = "application/json;charset=UTF-8")

+ 62 - 0
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/ExportUtil.java

@@ -0,0 +1,62 @@
+package com.persagy.ibms.data.sdk.util;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.core.io.FileSystemResource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+
+public class ExportUtil {
+	public static ResponseEntity<FileSystemResource> export(File file) {
+		if (file == null) {
+			return null;
+		}
+		HttpHeaders headers = new HttpHeaders();
+		headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
+		headers.add("Content-Disposition", "attachment; filename=" + System.currentTimeMillis() + ".xlsx");
+		headers.add("Pragma", "no-cache");
+		headers.add("Expires", "0");
+		headers.add("Last-Modified", new Date().toString());
+		headers.add("ETag", String.valueOf(System.currentTimeMillis()));
+
+		return ResponseEntity.ok().headers(headers).contentLength(file.length()).contentType(MediaType.parseMediaType("application/octet-stream"))
+				.body(new FileSystemResource(file));
+	}
+
+	public static ResponseEntity<FileSystemResource> history_alarm_export(JSONObject paramObject){
+		JSONObject result = RWDAlarmUtil.post_filter_and_page(paramObject);
+		JSONArray content = result.getJSONArray("content");
+		List<String> title = new ArrayList<String>();
+		title.add("itemName");
+		title.add("treatState");
+		ExcelSheet sheet = new ExcelSheet();
+		sheet.titleColList = title;
+		for (int i = 0; i < content.size(); i++) {
+			JSONObject contentItem = content.getJSONObject(i);
+			List<String> contentList = new ArrayList<String>();
+			for (String titleItem : title) {
+				contentList.add(contentItem.getString(titleItem));
+			}
+			sheet.contentListList.add(contentList);
+		}
+		Map<String, ExcelSheet> sheetMap = new HashMap<String, ExcelSheet>();
+		sheetMap.put("Sheet1", sheet);
+		String filepath = "abc.xlsx";
+		try {
+			ExcelUtil.Write(filepath, sheetMap);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		return ExportUtil.export(new File(filepath));
+	}
+
+}

+ 2 - 4
ibms-data-sdk/src/main/java/com/persagy/ibms/data/sdk/util/RWDAlarmUtil.java

@@ -23,8 +23,6 @@ import lombok.extern.slf4j.Slf4j;
 @Slf4j
 public class RWDAlarmUtil {
 
-	public static JSONArray history_alarm_path = new JSONArray();
-
 	static Map<Integer, String> statusMap = new HashMap<Integer, String>();
 	static Map<Integer, String> treatStateMap = new HashMap<Integer, String>();
 	static Map<String, String> levelMap = new HashMap<String, String>();
@@ -45,7 +43,7 @@ public class RWDAlarmUtil {
 		categoryMap.put("Sp", "空间报警");
 	}
 
-	public static String post_filter_and_page(JSONObject paramObject) {
+	public static JSONObject post_filter_and_page(JSONObject paramObject) {
 		JSONObject result = new JSONObject();
 		try {
 			JSONObject params = (JSONObject) paramObject.get("params");
@@ -143,7 +141,7 @@ public class RWDAlarmUtil {
 			log.error(message);
 			result.put("result", "failure");
 		}
-		return result.toJSONString();
+		return result;
 	}
 
 	public static void modify_alarm(JSONObject alarm) throws Exception {