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> cheshi = new ArrayList>(); + for (int i = 0; i < 10; i++) { + Map map = new HashMap(); + map.put("xuhao", "傻得"); + map.put("neirong", "内容" + i); + cheshi.add(map); + } + + dataMap.put("cheshi", cheshi); + } +}*/ diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java index 6213bf2..f769a06 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyBookbuildingFacade.java @@ -22,6 +22,7 @@ import com.lyms.platform.operate.web.request.*; import com.lyms.platform.operate.web.result.*; import com.lyms.platform.operate.web.service.ITrackDownService; import com.lyms.platform.operate.web.utils.BabyListTask; +import com.lyms.platform.operate.web.utils.CommonsHelper; import com.lyms.platform.operate.web.utils.GrowthCountTask; import com.lyms.platform.operate.web.utils.MongoUtil; import com.lyms.platform.permission.model.*; @@ -31,6 +32,11 @@ import com.lyms.platform.permission.service.PatientServiceService; import com.lyms.platform.permission.service.UsersService; import com.lyms.platform.pojo.*; import com.lyms.platform.query.*; +import freemarker.cache.FileTemplateLoader; +import freemarker.cache.TemplateLoader; +import freemarker.template.Configuration; +import freemarker.template.Template; +import freemarker.template.TemplateException; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.*; import org.apache.commons.lang.math.NumberUtils; @@ -38,12 +44,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.OutputStream; +import java.io.*; import java.util.*; import java.util.concurrent.Callable; import java.util.concurrent.Future; @@ -64,6 +71,9 @@ public class BabyBookbuildingFacade { private HisService hisServiceV2; @Autowired + private ViewFacade viewFacade; + + @Autowired private QingLongXianHisService qingLongXianHisService; @Autowired @@ -3853,5 +3863,120 @@ public class BabyBookbuildingFacade { return parentIds; } + /* public void exportManagementRecords(String id) { + + } + public void createWord(String id) { + Configuration cfg = new Configuration(); + TemplateLoader templateLoader = null; + String path = ""; + //Map dataMap = new HashMap(); + Map dataMap = getData(id); + //使用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(); + } + }*/ + + public Map getData(String id) { + Map dataMap = new HashMap<>(); + if (StringUtils.isNotEmpty(id)) { + BabyModel babyModel = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(id)), BabyModel.class); + dataMap.put("babyName", babyModel.getName()); + dataMap.put("sex", babyModel.getSex() != 0 ? "男" : "女"); + String[] times = DateUtil.getyyyy_MM_dd(babyModel.getBirth()).split("-"); + dataMap.put("nian", times[0]); + dataMap.put("yue", times[1]); + dataMap.put("ri", times[2]); + String[] created = DateUtil.getyyyy_MM_dd(babyModel.getCreated()).split("-"); + dataMap.put("createdYear", created[0]); + dataMap.put("createdMnth", created[1]); + dataMap.put("createdDay", created[2]); + if (null != babyModel.getEndCaseTime()) { + String[] endTime = DateUtil.getyyyy_MM_dd(babyModel.getEndCaseTime()).split("-"); + dataMap.put("ednYear", endTime[0]); + dataMap.put("endMnth", endTime[1]); + dataMap.put("endDay", endTime[2]); + } + if (babyModel.getHighRisk() != 0 && CollectionUtils.isNotEmpty(babyModel.getHighRiskInfo())) { + dataMap.put("hig", "高危儿因素"); + String highRiskInfos = basicConfigFacade.queryBaseInfoByStr(babyModel.getHighRiskInfo()); + dataMap.put("higHrisk", highRiskInfos); + } + if (babyModel.getWeakSon() != 0 && CollectionUtils.isNotEmpty(babyModel.getWeakSonInfo())) { + dataMap.put("wask", "体弱儿因素"); + String weakSonsInfo = basicConfigFacade.queryBaseInfoByStr(babyModel.getWeakSonInfo()); + dataMap.put("weakSone", weakSonsInfo); + } + dataMap.put("phone", babyModel.getFphone()); + dataMap.put("parentName", babyModel.getMname()); + List babyCheckModel = mongoTemplate.find(Query.query(Criteria.where("buildId").is(id)), BabyCheckModel.class); + if (CollectionUtils.isNotEmpty(babyCheckModel)) { + List listMap = new ArrayList<>(); + for (BabyCheckModel babyCheck : babyCheckModel) { + Map map = new HashMap<>(); + dataMap.put("mainFoster", babyCheck.getMainFoster()); + /* map.put("checkTime", DateUtil.getyyyy_MM_dd(babyCheck.getCheckDate())); + map.put("age", DateUtil.getBabyMonthAge(babyModel.getBirth(), babyCheck.getCheckDate()));*/ + + } + System.out.println(dataMap.get("mainFoster")); + if ("0".equals(dataMap.get("mainFoster"))) { + dataMap.put("filiation", "父子"); + } else if ("1".equals(dataMap.get("mainFoster"))) { + dataMap.put("filiation", "母子"); + } else if ("2".equals(dataMap.get("mainFoster")) || "3".equals(dataMap.get("mainFoster"))) { + dataMap.put("filiation", "祖孙"); + } else if ("4".equals(dataMap.get("mainFoster")) || "5".equals(dataMap.get("mainFoster"))) { + dataMap.put("filiation", "外祖孙"); + } else if ("6".equals(dataMap.get("mainFoster"))) { + dataMap.put("filiation", "其他"); + } + } + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(babyModel.getParentId())), Patients.class); + //市区 + dataMap.put("city", CommonsHelper.getName1(patients.getCityRegisterId(), basicConfigService)); + //县 + dataMap.put("county", CommonsHelper.getName1(patients.getAreaRegisterId(), basicConfigService)); + //乡镇 + dataMap.put("township", CommonsHelper.getName1(patients.getStreetRegisterId(), basicConfigService)); + //村 + dataMap.put("village", patients.getAddressRegister()); + dataMap.put("education", getBasicConfig(babyModel.getmLevelId())); + } + return dataMap; + } + + private String getBasicConfig(String id) { + if (com.lyms.platform.common.utils.StringUtils.isEmpty(id)) { + return ""; + } + BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(id); + if (null != basicConfig) { + return basicConfig.getName(); + } + return ""; + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/WordUtil.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/WordUtil.java new file mode 100644 index 0000000..2ae64f7 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/WordUtil.java @@ -0,0 +1,73 @@ +/* +package com.lyms.platform.operate.web.facade; + +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 WordUtil { + private Configuration configuration = null; + + public WordUtil() { + configuration = new Configuration(); + configuration.setDefaultEncoding("UTF-8"); + } + 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> cheshi = new ArrayList>(); + for (int i = 0; i < 10; i++) { + Map map = new HashMap(); + map.put("xuhao", "傻得"); + map.put("neirong", "内容" + i); + cheshi.add(map); + } + + dataMap.put("cheshi", cheshi); + } +} +*/ -- 1.8.3.1