From f460356fdbb3350ae771903a853f1308b0195a90 Mon Sep 17 00:00:00 2001 From: liquanyu Date: Fri, 31 May 2019 14:11:29 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E7=82=B9=E5=AD=95=E5=A6=87=E7=99=BB?= =?UTF-8?q?=E8=AE=B0=E9=9A=8F=E8=AE=BF=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/PuerperaManageController.java | 152 ++++++++++++++++++++- .../platform/operate/web/facade/PatientFacade.java | 73 ++++++++++ 2 files changed, 221 insertions(+), 4 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PuerperaManageController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PuerperaManageController.java index 4c323e8..08c44ba 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PuerperaManageController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PuerperaManageController.java @@ -1,5 +1,6 @@ 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; @@ -32,7 +33,11 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.awt.*; +import java.io.IOException; +import java.io.InputStream; import java.util.*; +import java.util.List; /** * 孕产妇管理接口 @@ -131,7 +136,7 @@ public class PuerperaManageController extends BaseController { @TokenRequired public BaseResponse queryAllPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - return patientFacade.queryHighRisk(patientsQueryRequest,null,1,loginState.getId(),"true",Boolean.FALSE); + return patientFacade.queryHighRisk(patientsQueryRequest, null, 1, loginState.getId(), "true", Boolean.FALSE); } @@ -338,7 +343,7 @@ public class PuerperaManageController extends BaseController { patientsQueryRequest.setStartAge(null); patientsQueryRequest.setEndAge(null); - return patientFacade.queryHighRisk(patientsQueryRequest, null, 3,loginState.getId(),"true",Boolean.TRUE); + return patientFacade.queryHighRisk(patientsQueryRequest, null, 3, loginState.getId(), "true", Boolean.TRUE); } /** @@ -352,7 +357,7 @@ public class PuerperaManageController extends BaseController { public BaseResponse queryPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request){ patientsQueryRequest.setFmHospital(patientsQueryRequest.gethId()); patientsQueryRequest.setNotEnable("2"); - return patientFacade.queryHighRisk(patientsQueryRequest, null, 3,0,"true",Boolean.FALSE); + return patientFacade.queryHighRisk(patientsQueryRequest, null, 3, 0, "true", Boolean.FALSE); } @@ -367,7 +372,7 @@ public class PuerperaManageController extends BaseController { @TokenRequired public BaseResponse queryRegionAllPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - return patientFacade.queryHighRisk(patientsQueryRequest,null,1,loginState.getId(),"true",Boolean.TRUE); + return patientFacade.queryHighRisk(patientsQueryRequest, null, 1, loginState.getId(), "true", Boolean.TRUE); } /** @@ -493,4 +498,143 @@ public class PuerperaManageController extends BaseController { ExceptionUtils.catchException(e, "childbirthManagerExcel异常"); } } + + + //孕妇随访本 + @TokenRequired + @RequestMapping(value = "/gravidaFollowWord", method = RequestMethod.GET) + public void gravidaFollowWord(@RequestParam("pid") String pid, HttpServletResponse response) { + + Map map = patientFacade.gravidaFollowWord(pid, response); + try { + // 验证License + if (!getLicense()) { + return; + } + Document doc = null;// 原始word路径 + try { + doc = new Document(ViewController.class.getClassLoader().getResourceAsStream("sfdjb.docx")); + + /* DocumentBuilder builder = new DocumentBuilder(doc); + if (map.containsKey("red")) { + builder.moveToBookmark("red"); + markFrameText(builder, (String) map.get("red")); + map.remove("red"); + } + if (map.containsKey("orange")) { + builder.moveToBookmark("orange"); + markFrameText(builder, (String) map.get("orange")); + map.remove("orange"); + }*/ + + markData(doc, map);//普通数据 + sendToBrowser(doc, "导出", "doc", true, response); + } catch (Exception e) { + e.printStackTrace(); + } + response.flushBuffer(); + + + + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 获取license + * + * @return + */ + 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; + } + + /** + * 向客户端发送数据 + * + * @param doc com.aspose.words.Document + * @param docName 返回客户端的word文件名 + * @param formatType DOC 或者 DOCX + * @param openNewWindow 在线打开或者下载 + * @param response + * @throws Exception + */ + 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); + } + } + + /** + * 添加特殊字 + * + * @param builder + * @param text + */ + public void markFrameText(DocumentBuilder builder, String text) { + try { + if (com.lyms.platform.common.utils.StringUtils.isEmpty(text) || "null".equals(text)) { + return; + } + builder.getFont().getBorder().clearFormatting(); + builder.getFont().getBorder().setColor(Color.black); + builder.getFont().getBorder().setLineWidth(1); + builder.getFont().getBorder().setLineStyle(LineStyle.SINGLE); + builder.getFont().getBorder().setDistanceFromText(2); + // builder.getFont().getBorder().setShadow(true); + builder.write(text); + } catch (Exception e) { + e.printStackTrace(); + } + } + + 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(); + } + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java index cf561d2..9b21c4a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/PatientFacade.java @@ -1694,4 +1694,77 @@ public class PatientFacade { return new BaseObjectResponse().setData(patientBaseResult).setErrormsg("成功").setErrorcode(ErrorCodeConstants.SUCCESS); } + + /*** + *重点孕妇登记随访本 + * + */ + public Map gravidaFollowWord(String pid, HttpServletResponse response) { + Map dataMap = new HashMap<>(); + if (StringUtils.isNotEmpty(pid)) { + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(pid)), Patients.class); + dataMap.put("name", patients.getUsername()); + dataMap.put("age", DateUtil.getAge(patients.getBirth())); + //孕次 + AntExChuModel antExChuModel = mongoTemplate.findOne(Query.query(Criteria.where("pid").is(pid)), AntExChuModel.class); + if (null != antExChuModel) { + dataMap.put("pregnancySecond", antExChuModel.getPregnancyTimes()); + //产次 + dataMap.put("parity", antExChuModel.getProdTime()); + } + //预产期 + dataMap.put("dueDate", DateUtil.getyyyy_MM_dd(patients.getDueDate())); + //身份证号 + if (StringUtils.isNotEmpty(patients.getPcerteTypeId()) && "70ae1d93-2964-46bc-83fa-bec9ff605b1c".equals(patients.getPcerteTypeId())) { + dataMap.put("cardNo", patients.getCardNo()); + } + //孕妇电话 + dataMap.put("gravidaPhone", patients.getPhone()); + //丈夫电话 + dataMap.put("husbandPhone", patients.getHusbandPhone() != null ? patients.getHusbandPhone() : null); + //住址 + dataMap.put("address", CommonsHelper.getResidence(patients.getProvinceRegisterId(), patients.getCityRegisterId(), + patients.getAreaRegisterId(), patients.getStreetRegisterId(), patients.getAddressRegister(), basicConfigService)); + dataMap.put("weeks", DateUtil.getWeek(patients.getLastMenses())); + //确诊单位 + dataMap.put("diagnosis", "诸城人民医院"); + dataMap.put("created", DateUtil.getyyyy_MM_dd(patients.getCreated())); + //户籍 + if (StringUtils.isNotEmpty(patients.getPliveTypeId())) { + if ("57624c440cf23d4631523ea1".equals(patients.getPliveTypeId())) { + dataMap.put("cz", "√"); + } else if ("5a371bce0cf2ab082ac30433".equals(patients.getPliveTypeId())) { + dataMap.put("zz", "√"); + } else if ("57624c5e0cf23d4631523ea2".equals(patients.getPliveTypeId())) { + dataMap.put("ld", "√"); + } + } + if (CollectionUtils.isNotEmpty(patients.getRiskFactorId())) { + List riskFactor = patients.getRiskFactorId(); + StringBuffer riskStr = new StringBuffer(); + for (String risk : riskFactor) { + riskStr.append(getBasicConfig(risk) + " "); + } + dataMap.put("highRisk", riskStr); + } + //判断风险等级 + if (StringUtils.isNotEmpty(patients.getRiskLevelId())) { + String str = patients.getRiskLevelId(); + String substr = str.substring(1, str.length() - 1); + String[] strings = substr.split(","); + for (String strs : strings) { + if ("\"49a36aea-c5b6-4162-87d2-9eb3c6ec00c2\"".equals(strs)) { + dataMap.put("orange", "√"); + } else if ("\"eb146c03-b19f-4e28-b85f-fda574b2283b\"".equals(strs)) { + dataMap.put("red", "√"); + } else if ("\"224b2329-cb82-4da3-a071-8527f8283aab\"".equals(strs)) { + dataMap.put("purple", "√"); + } else if ("\"315107bd-91fe-42a1-9237-752f3c046a40\"".equals(strs)) { + dataMap.put("yellow", "√"); + } + } + } + } + return dataMap; + } } -- 1.8.3.1