From 64b76130e7e24ec423ceae51e90b56ee30a26266 Mon Sep 17 00:00:00 2001 From: yangfei Date: Fri, 22 Jun 2018 17:24:13 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AB=98=E5=8D=B1=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/lyms/platform/pojo/AntExChuModel.java | 1 + .../operate/web/controller/ViewController.java | 133 +++++++++++++++-- .../platform/operate/web/facade/ViewFacade.java | 164 ++++++++++++++++++++- .../src/main/resources/gwyfzagl.doc | Bin 0 -> 29696 bytes 4 files changed, 287 insertions(+), 11 deletions(-) create mode 100644 platform-operate-api/src/main/resources/gwyfzagl.doc diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/AntExChuModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/AntExChuModel.java index ccfad95..1b7f736 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/AntExChuModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/AntExChuModel.java @@ -151,6 +151,7 @@ public class AntExChuModel extends BaseModel { private String fujianSele; private Date created; private String hospitalId; + //血压 private String bp; //丈夫健康情况 private String hHealthInfo; 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 fc84123..3aefcce 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 @@ -18,6 +18,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.List; @@ -165,16 +166,130 @@ public class ViewController extends BaseController { e.printStackTrace(); } } + + /** + * 导出高危孕产妇专案管理 + * @param id + * @param response + */ + @RequestMapping(value = "/downHightRiskExpostData", method = RequestMethod.GET) + public void downHightRiskExpostData(@RequestParam("parentId") String id,HttpServletResponse response) { + Map map = viewFacade.expHightRiskPostReview(id, null); + try { + // 验证License + if (!getLicense()) { + return; + } + Document doc;// 原始word路径 + try { + doc = new Document(ViewController.class.getClassLoader().getResourceAsStream("gwyfzagl.doc")); + + markData(doc, map);//普通数据 + + List> allAntExList = (List>) map.get("antExData"); + + NodeCollection allTables = doc.getChildNodes(NodeType.TABLE, true); //拿到所有表格 + + + DocumentBuilder builder = new DocumentBuilder(doc); + + List widthList = new ArrayList(); + for (int i = 0; i < 7; i++) + { + builder.moveToCell(0, 5, i, 0); //移动单元格 + double width = builder.getCellFormat().getWidth();//获取单元格宽度 + System.out.println("width:"+width); + widthList.add(width); + } + + builder.moveToBookmark("table"); //开始添加值 + 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(); + } + response.flushBuffer(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + @RequestMapping(value = "/downExpostData", method = RequestMethod.GET) -// @TokenRequired - public void downExPostData(@RequestParam("id") String id, - - HttpServletRequest request, HttpServletResponse response) { -// LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); -// if(loginState == null){ -// System.out.println("用户未登录!"); -// return; -// } + public void downExPostData(@RequestParam("id") String id,HttpServletRequest request, HttpServletResponse response) { Map map = viewFacade.expPostReview(id, null); try { // 验证License 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 288e017..23d8405 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 @@ -313,10 +313,10 @@ public class ViewFacade { } private void getscreenResult(List screenResult, Map map) { - if(CollectionUtils.isNotEmpty(screenResult)){ + if (CollectionUtils.isNotEmpty(screenResult)) { BasicConfigQuery basicConfigQuery = new BasicConfigQuery(); List> list = new ArrayList<>(); - for(String scr:screenResult){ + for (String scr : screenResult) { basicConfigQuery.setId(scr); List basicConfigs = basicConfigService.queryBasicConfig(basicConfigQuery); if (CollectionUtils.isNotEmpty(basicConfigs)) { @@ -2843,6 +2843,166 @@ public class ViewFacade { * * @return */ + public Map expHightRiskPostReview(String id, Integer userId) { + Map map = new HashMap(); + Patients patients = patientsService.findOnePatientById(id); + if (patients != null) { + /* 基础信息 */ + map.put("id", id); + map.put("name", patients.getUsername()); + map.put("age", DateUtil.getAge(patients.getBirth(), new Date()) + ""); + map.put("nation", getBasicConfig(patients.getPnationId())); + map.put("education", getBasicConfig(patients.getPlevelTypeId())); + Date dueDate = DateUtil.addDay(patients.getLastMenses(), 280); + //返回预产期 + map.put("lastMenstr", DateUtil.getyyyy_MM_dd(patients.getLastMenses())); + map.put("dueDate", DateUtil.getyyyy_MM_dd(dueDate)); + 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(), "")); + map.put("fmDate", DateUtil.getyyyy_MM_dd(patients.getFmDate())); + map.put("mremark", com.lyms.platform.common.utils.StringUtils.isEmpty(patients.getMremark(), "")); + List> allAntExList = getAntExAll(patients, map); + map.put("antExData", allAntExList); + } + + return map; + } + + private List> getAntExAll(Patients patients, Map map) { + List> dataMap = new ArrayList<>(); + //获取产程ID + String patientId = patients.getId(); + Organization organization = null; + + List patientIds = new ArrayList<>(); + patientIds.add(patientId); + + //建档记录 + if (null != patients.getHospitalId()) { + organization = organizationService.getOrganization(Integer.valueOf(patients.getHospitalId())); + } + + PatientsQuery patientsQuery = new PatientsQuery(); + patientsQuery.setSource(patients.getId()); + + patientsQuery.setBuildType(1); + List patients1 = patientsService.queryPatient(patientsQuery); + if (CollectionUtils.isNotEmpty(patients1)) { + for (Patients ps : patients1) { + patientIds.add(ps.getId()); + } + } + //初诊记录 + AntExChuQuery antExChuQuery = new AntExChuQuery(); + antExChuQuery.setYn(YnEnums.YES.getId()); + antExChuQuery.setParentIds(patientIds); + List antExChuModels = antenatalExaminationService.queryAntExChu(antExChuQuery); + if (CollectionUtils.isNotEmpty(antExChuModels)) { + for (AntExChuModel an : antExChuModels) { + List antExChu = new ArrayList(); + if (null != an.getHospitalId()) { + organization = organizationService.getOrganization(Integer.valueOf(an.getHospitalId())); + } + map.put("stature", an.getHeight()); + map.put("firstDate", DateUtil.getyyyy_MM_dd(an.getCheckTime())); + map.put("weight", an.getWeight()); + map.put("prodTime", UnitUtils.unitSplice(an.getProdTime(), UnitConstants.CI)); + map.put("pregnancyTimes", UnitUtils.unitSplice(an.getPregnancyTimes(), UnitConstants.CI)); + + // 血压 + String ssy = ""; + String szy = ""; + Map chBpMap = JsonUtil.getMap(an.getBp()); + if (MapUtils.isNotEmpty(chBpMap)) { + ssy = chBpMap.get("ssy"); + szy = chBpMap.get("szy"); + } + map.put("bp", UnitUtils.unitSplice(ssy + "/" + szy, UnitConstants.MMHG)); + + antExChu.add(DateUtil.getyyyy_MM_dd(an.getCheckTime())); + antExChu.add(ResolveUtils.getPregnancyWeek(patients.getLastMenses(), an.getCheckTime())); + String hightRiskStr = basicConfigService.getScreenResult(JsonUtil.jkstr2Obj(an.getHighrisk(), List.class)); + antExChu.add(hightRiskStr); + + List list2 = JsonUtil.toList(an.getHighrisk(), List.class); + HighScoreResult highScoreResult = antenatalExaminationFacade.queryRisk(list2, true); + + Set sbLev = new HashSet(); + for (int i = 0;i mp = (Map) highScoreResult.getLevel().get(i); + sbLev.add(mp.get("name")); + } + if(CollectionUtils.isNotEmpty(sbLev)){ + antExChu.add(sbLev.toString()); + }else{ + antExChu.add("健康"); + } + antExChu.add(an.getTreatOpinion()==null?" ":an.getTreatOpinion()); + antExChu.add(organization.getName()); + String doctName = ""; + if (org.apache.commons.lang.StringUtils.isNotEmpty(an.getProdDoctor())) { + Users users = usersService.getUsers(Integer.parseInt(an.getProdDoctor())); + if (users != null && users.getYn() == YnEnums.YES.getId()) { + doctName = users.getName(); + } + } + antExChu.add(doctName); + dataMap.add(antExChu); + } + } + + //复诊记录 + AntExQuery antExQuery = new AntExQuery(); + antExQuery.setYn(YnEnums.YES.getId()); + antExQuery.setParentIds(patientIds); + List list1 = antenatalExaminationService.queryAntenatalExamination(antExQuery.convertToQuery()); + if (CollectionUtils.isNotEmpty(list1)) { + for (AntenatalExaminationModel an : list1) { + List antExChu = new ArrayList(); + if (null != an.getHospitalId()) { + organization = organizationService.getOrganization(Integer.valueOf(an.getHospitalId())); + } + antExChu.add(DateUtil.getyyyy_MM_dd(an.getCheckDate())); + antExChu.add(ResolveUtils.getPregnancyWeek(patients.getLastMenses(), an.getCheckDate())); + String hightRiskStr = basicConfigService.getScreenResult(JsonUtil.jkstr2Obj(an.getRiskFactor(), List.class)); + antExChu.add(hightRiskStr); + + List list2 = JsonUtil.toList(an.getRiskFactor(), List.class); + HighScoreResult highScoreResult = antenatalExaminationFacade.queryRisk(list2, true); + List> checkList = ResolveUtils.queryHighRisk(highScoreResult); + Set sbLev = new HashSet(); + for (int i = 0;i mp = (Map) highScoreResult.getLevel().get(i); + sbLev.add(mp.get("name")); + } + if(CollectionUtils.isNotEmpty(sbLev)){ + antExChu.add(sbLev.toString()); + }else{ + antExChu.add("健康"); + } + antExChu.add(an.getTreatmentOpinion()==null?" ":an.getTreatmentOpinion()); + antExChu.add(organization.getName()); + String checkDoctor = ""; + if (org.apache.commons.lang.StringUtils.isNotEmpty(an.getCheckDoctor())) { + Users users = usersService.getUsers(Integer.parseInt(an.getCheckDoctor())); + if (users != null && users.getYn() == YnEnums.YES.getId()) { + checkDoctor = users.getName(); + } + } + antExChu.add(checkDoctor); + dataMap.add(antExChu); + } + } + return dataMap; + } + + /** + * 到处产后随访数据 + * + * @return + */ public Map expPostReview(String id, Integer userId) { Map map = new HashMap(); PostReviewModel postReviewModel = postReviewService.findOneById(id); diff --git a/platform-operate-api/src/main/resources/gwyfzagl.doc b/platform-operate-api/src/main/resources/gwyfzagl.doc new file mode 100644 index 0000000000000000000000000000000000000000..b4ef48c85f30b1962783c847c2a0809fa2221c9f GIT binary patch literal 29696 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 c=(mBu$Qbx?$;O#H?XY