From 1bd5782806bba89e1e59a7d86f24dba244246951 Mon Sep 17 00:00:00 2001
From: wangbo <184677810@qq.com>
Date: Tue, 21 May 2019 09:33:13 +0800
Subject: [PATCH] =?UTF-8?q?=E5=84=BF=E4=BF=9D=E7=BB=93=E6=A1=88=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
platform-operate-api/pom.xml | 25 +++-
.../web/controller/BabyBuildController.java | 90 ++++++++++++++
.../platform/operate/web/controller/WordTest.java | 77 ++++++++++++
.../operate/web/facade/BabyBookbuildingFacade.java | 129 ++++++++++++++++++++-
.../lyms/platform/operate/web/facade/WordUtil.java | 73 ++++++++++++
5 files changed, 387 insertions(+), 7 deletions(-)
create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/WordTest.java
create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/WordUtil.java
diff --git a/platform-operate-api/pom.xml b/platform-operate-api/pom.xml
index b4d40ff..ce4e598 100644
--- a/platform-operate-api/pom.xml
+++ b/platform-operate-api/pom.xml
@@ -12,14 +12,14 @@
-
-
-
+
+
+
-
-
+
+
com.aspose
@@ -98,6 +98,21 @@
2.6.12
+
+
+
+
+
+
+
diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java
index 9e203fe..248c212 100644
--- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java
+++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BabyBuildController.java
@@ -1,6 +1,7 @@
package com.lyms.platform.operate.web.controller;
+import com.aspose.words.*;
import com.lyms.platform.common.annotation.TokenRequired;
import com.lyms.platform.common.base.BaseController;
import com.lyms.platform.common.base.LoginContext;
@@ -28,8 +29,11 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
+import java.io.IOException;
+import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.List;
+import java.util.Map;
/*
@@ -560,5 +564,91 @@ public class BabyBuildController extends BaseController {
babyBookbuildingFacade.exportWcBabyReportExcl(loginState.getId(), time, hospitalId, response);
}
+ //导出管理记录表
+ @RequestMapping(value = "/exportWcBabyReportExcl", method = RequestMethod.GET)
+ @TokenRequired
+ public void exportManagementRecords(HttpServletRequest request, HttpServletResponse response,
+ @RequestParam(required = false) String id) {
+ LoginContext loginState = (LoginContext) request.getAttribute("loginContext");
+ Map map = babyBookbuildingFacade.getData(id);
+ try {
+ // 验证License
+ if (!getLicense()) {
+ return;
+ }
+ Document doc = null;// 原始word路径
+ try {
+ doc = new Document(ViewController.class.getClassLoader().getResourceAsStream("jlb.docx"));
+ markData(doc, map);//普通数据
+ sendToBrowser(doc, "导出", "doc", true, response);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ response.flushBuffer();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ public static boolean getLicense() {
+ boolean result = false;
+ try {
+ InputStream is = ViewController.class.getClassLoader().getResourceAsStream("license.xml");
+ License aposeLic = new License();
+ aposeLic.setLicense(is);
+ result = true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+ public void markData(Document doc, Map data) {
+ try {
+ for (Map.Entry m : data.entrySet()) {
+ if (m.getValue() == null || "null".equals(m.getValue())) {
+ continue;
+ }
+ BookmarkCollection books = doc.getRange().getBookmarks();
+ Bookmark bookmark = books.get(m.getKey());
+ if (bookmark != null) {
+ bookmark.setText(String.valueOf(m.getValue()));
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void sendToBrowser(Document doc, String docName, String formatType,
+ boolean openNewWindow, HttpServletResponse response)
+ throws Exception {
+ String extension = formatType;
+
+ if (formatType.equals("WML") || formatType.equals("FOPC"))
+ extension = "XML";
+
+ String fileName = docName + "." + extension;
+
+ if (openNewWindow)
+ response.setHeader("content-disposition", "attachment; filename="
+ + fileName);
+ else
+ response.addHeader("content-disposition", "inline; filename="
+ + fileName);
+
+ if ("doc".equals(formatType)) {
+ response.setContentType("application/msword");
+ doc.save(response.getOutputStream(), SaveFormat.DOC);
+ } else if ("docx".equals(formatType)) {
+ response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
+ doc.save(response.getOutputStream(), SaveFormat.DOCX);
+ } else if ("pdf".equals(formatType)) {
+ response.setContentType("application/pdf");
+ doc.save(response.getOutputStream(), SaveFormat.PDF);
+ }
+ }
+
}
\ No newline at end of file
diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/WordTest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/WordTest.java
new file mode 100644
index 0000000..64c4a97
--- /dev/null
+++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/WordTest.java
@@ -0,0 +1,77 @@
+/*
+package com.lyms.platform.operate.web.controller;
+
+
+import freemarker.cache.FileTemplateLoader;
+import freemarker.cache.TemplateLoader;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+public class WordTest {
+
+ private Configuration configuration = null;
+
+ public static void main(String[] args) {
+ com.lyms.platform.operate.web.controller.WordTest test = new com.lyms.platform.operate.web.controller.WordTest();
+ test.createWord();
+ }
+
+
+ public void createWord() {
+ Configuration cfg = new Configuration();
+ TemplateLoader templateLoader = null;
+ String path = "";
+ Map dataMap = new HashMap();
+ getData(dataMap);
+ //使用FileTemplateLoader
+ Template t = null;
+ try {
+ path = this.getClass().getResource("/").getPath();
+ templateLoader = new FileTemplateLoader(new File(path));
+ cfg.setTemplateLoader(templateLoader);
+ t = cfg.getTemplate("jlb.ftl", "UTF-8");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ File outFile = new File("D:/outFile" + Math.random() * 10000 + ".doc"); //导出文件
+ Writer out = null;
+ try {
+ out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
+ } catch (FileNotFoundException e1) {
+ e1.printStackTrace();
+ }
+
+ try {
+ t.process(dataMap, out); //将填充数据填入模板文件并输出到目标文件
+ } catch (TemplateException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private void getData(Map dataMap) {
+ dataMap.put("title", "标题");
+ dataMap.put("nian", "2016");
+ dataMap.put("yue", "3");
+ dataMap.put("ri", "6");
+ //dataMap.put("shenheren", "lc");
+ List