From 259fb1faa5e3b444c6eda308294896b6f6823522 Mon Sep 17 00:00:00 2001 From: liquanyu Date: Fri, 8 Mar 2019 17:07:41 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AB=98=E5=8D=B1=E8=AF=84=E4=BC=B0=E6=8A=A5?= =?UTF-8?q?=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lyms/platform/biz/BasicConfigServiceTest.java | 2 - .../operate/web/controller/ViewController.java | 109 +++++++-------- .../platform/operate/web/facade/ViewFacade.java | 150 +++++++++++++++++++++ .../src/main/resources/fxpjbg.docx | Bin 0 -> 15379 bytes 4 files changed, 198 insertions(+), 63 deletions(-) create mode 100644 platform-operate-api/src/main/resources/fxpjbg.docx diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java index edc8826..bfcc6e6 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/BasicConfigServiceTest.java @@ -38,11 +38,9 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.query.BasicQuery; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; -import sun.awt.windows.WEmbeddedFrame; public class BasicConfigServiceTest { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ViewController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ViewController.java index 9ee6b3e..6bf1550 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ViewController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ViewController.java @@ -8,10 +8,12 @@ import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.result.BaseListResponse; import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.utils.DateUtil; import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.operate.web.facade.AntenatalExaminationFacade; import com.lyms.platform.operate.web.facade.MatdeliverFollowFacade; import com.lyms.platform.operate.web.facade.ViewFacade; +import com.lyms.platform.operate.web.utils.CommonsHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @@ -22,9 +24,7 @@ import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.io.IOException; import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.List; /** @@ -259,64 +259,6 @@ public class ViewController extends BaseController { } builder.endRow(); } - - // Table table = (Table) allTables.get(0); //拿到表格 - /*for(int i=0; i mp:allAntExList){ - // for(Map.Entry m:mp.entrySet()){ - // Bookmark mark = doc.getRange().getBookmarks().get(m.getKey()); - // if (mark != null&&m.getValue()!=null) { - // System.out.println(m.getKey()+":"+m.getValue()); - // mark.setText(m.getValue()); - // } - // } - // } sendToBrowser(doc, "导出", "doc", true, response); } catch (Exception e) { e.printStackTrace(); @@ -374,6 +316,51 @@ public class ViewController extends BaseController { } } + + /** + * 诸城孕产妇妊娠风险评估分级报告单.docx + * @param id + * @param request + * @param response + */ + @RequestMapping(value = "/downFxpjbgDoc", method = RequestMethod.GET) + @TokenRequired + public void downFxpjbgDoc(@RequestParam("id") String id, HttpServletRequest request, HttpServletResponse response) { + LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); + Map map = viewFacade.expHightPjData(id, loginState.getId()); + try { + // 验证License + if (!getLicense()) { + return; + } + Document doc = null;// 原始word路径 + try { + doc = new Document(ViewController.class.getClassLoader().getResourceAsStream("fxpjbg.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(); + } + } + + /** * 导出随访表 * diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java index a38f443..e854014 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ViewFacade.java @@ -3,6 +3,7 @@ package com.lyms.platform.operate.web.facade; import com.lyms.platform.biz.SequenceConstant; import com.lyms.platform.biz.service.*; import com.lyms.platform.common.constants.ErrorCodeConstants; +import com.lyms.platform.common.dao.operator.MongoQuery; import com.lyms.platform.common.enums.*; import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; @@ -3334,6 +3335,155 @@ public class ViewFacade { return map; } + + + public Map expHightPjData(String id, Integer userId) { + Map map = new HashMap(); + Patients patients = patientsService.findOnePatientById(id); + if (patients != null) { + /* 基础信息 */ + map.put("id", id); + map.put("userName", patients.getUsername()); + map.put("age", DateUtil.getAge(patients.getBirth(), new Date()) + ""); + map.put("birth", DateUtil.getyyyy_MM_dd(patients.getBirth())); + + map.put("week",DateUtil.getWeek(patients.getLastMenses(), new Date())+""); + map.put("cardNo", patients.getCardNo()); + + map.put("address", CommonsHelper.getResidence(patients.getProvinceRegisterId(), patients.getCityRegisterId(), + patients.getAreaRegisterId(), patients.getStreetRegisterId(), patients.getAddressRegister(), basicConfigService)); + + map.put("phone", com.lyms.platform.common.utils.StringUtils.isEmpty(patients.getPhone(), "")); + + StringBuffer sb = new StringBuffer(); + + AntExQuery antExQuery = new AntExQuery(); + antExQuery.setParentId(patients.getId()); + antExQuery.setYn(YnEnums.YES.getId()); + List list = antenatalExaminationService.queryAntenatalExamination(antExQuery.convertToQuery().addOrder(Sort.Direction.DESC, "checkDate").addOrder(Sort.Direction.DESC, "created")); + if (CollectionUtils.isNotEmpty(list)) + { + AntenatalExaminationModel antenatalExaminationModel = list.get(0); + String otherHighRisk= antenatalExaminationModel.getOtherRisk(); + + List otherHighRisks = new ArrayList<>(); + if (!(StringUtils.isEmpty(otherHighRisk)||"{}".equals(otherHighRisk)||"[]".equals(otherHighRisk))) { + if (otherHighRisk.startsWith("[") && otherHighRisk.endsWith("]")) { + List list2 = JsonUtil.toList(otherHighRisk, Map.class); + otherHighRisks.addAll(list2); + } else { + Map otherMap = JsonUtil.jkstr2Obj(otherHighRisk, Map.class); + otherHighRisks.add(otherMap); + } + + for (Map fmap : otherHighRisks) { + if (fmap.get("fyyse") != null) { + String fyyse = fmap.get("fyyse").toString(); + if (StringUtils.isNotEmpty(fyyse) && (fyyse.contains("49a36aea-c5b6-4162-87d2-9eb3c6ec00c2") || + fyyse.contains("eb146c03-b19f-4e28-b85f-fda574b2283b"))) + { + sb.append(fmap.get("fxysu").toString()); + sb.append("、"); + } + } + } + } + + } + else + { + AntExChuQuery antExChuQuery = new AntExChuQuery(); + antExChuQuery.setParentId(patients.getId()); + antExChuQuery.setYn(YnEnums.YES.getId()); + MongoQuery mongoQuery = antExChuQuery.convertToQuery(); + mongoQuery.addOrder(Sort.Direction.DESC, "checkTime"); + List list1 = antenatalExaminationService.queryAntExChu(mongoQuery); + if (CollectionUtils.isNotEmpty(list1)) + { + AntExChuModel antExChuModel = list1.get(0); + if (null != antExChuModel && !"{}".equals(antExChuModel.getOtherHighRisk()) && !"[]".equals(antExChuModel.getOtherHighRisk())) { + + String otherHighRisk = antExChuModel.getOtherHighRisk(); + List otherHighRisks = new ArrayList<>(); + if (!(StringUtils.isEmpty(otherHighRisk)||"{}".equals(otherHighRisk)||"[]".equals(otherHighRisk))) { + if (otherHighRisk.startsWith("[") && otherHighRisk.endsWith("]")) { + List list2 = JsonUtil.toList(otherHighRisk, Map.class); + otherHighRisks.addAll(list2); + } else { + Map otherMap = JsonUtil.jkstr2Obj(otherHighRisk, Map.class); + otherHighRisks.add(otherMap); + } + + for (Map fmap : otherHighRisks) { + if (fmap.get("fyyse") != null) { + String fyyse = fmap.get("fyyse").toString(); + if (StringUtils.isNotEmpty(fyyse) && (fyyse.contains("49a36aea-c5b6-4162-87d2-9eb3c6ec00c2") || + fyyse.contains("eb146c03-b19f-4e28-b85f-fda574b2283b"))) + { + sb.append(fmap.get("fxysu").toString()); + sb.append("、"); + } + } + } + } + + } + } + } + + + if (StringUtils.isNotEmpty(patients.getRiskLevelId()) && (patients.getRiskLevelId().contains("eb146c03-b19f-4e28-b85f-fda574b2283b") + || patients.getRiskLevelId().contains("49a36aea-c5b6-4162-87d2-9eb3c6ec00c2")) ) + { + + if (patients.getRiskLevelId().contains("eb146c03-b19f-4e28-b85f-fda574b2283b")) + { + map.put("red", "√"); + } + else + { + map.put("orange", "√"); + } + + if (CollectionUtils.isNotEmpty(patients.getRiskFactorId())) + { + for (String rid : patients.getRiskFactorId()) + { + BasicConfig basicConfig = basicConfigService.getOneBasicConfigById(rid); + if (basicConfig.getParentId().contains("49a36aea-c5b6-4162-87d2-9eb3c6ec00c2") || + basicConfig.getParentId().contains("eb146c03-b19f-4e28-b85f-fda574b2283b")) + { + sb.append(basicConfig.getName()); + sb.append("、"); + } + } + } + } + map.put("risk", StringUtils.isNotEmpty(sb.toString()) ? sb.toString().substring(0, sb.toString().length() - 1) : "" ); + + String[] times = DateUtil.getyyyy_MM_dd(new Date()).split("-"); + map.put("yy", times[0]); + map.put("mm", times[1]); + map.put("dd", times[2]); + + + + Users user = usersService.getUsers(userId); + + if (user != null) + { + map.put("doctor", user.getName()); + Organization organization = organizationService.getOrganization(user.getOrgId()); + if (organization != null && organization.getYn() == YnEnums.YES.getId()) { + map.put("hospitalName", organization.getName()); + } + } + map.put("time", DateUtil.getyyyy_MM_dd(new Date())); + } + + return map; + } + private List> getAntExAll(Patients patients, Map map) { List> dataMap = new ArrayList<>(); //获取产程ID diff --git a/platform-operate-api/src/main/resources/fxpjbg.docx b/platform-operate-api/src/main/resources/fxpjbg.docx new file mode 100644 index 0000000000000000000000000000000000000000..7f42cc82bd686b0c6415c4768d11ce135cb72c25 GIT binary patch literal 15379 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 k8TNZ3z~8;r{|fv&EkI5R?5E?!d