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 9ef15a4..cdea500 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; /** * 孕产妇管理接口 @@ -53,6 +58,7 @@ public class PuerperaManageController extends BaseController { /** * 产妇管理查询接口 + * * @param managerRequest * @return */ @@ -94,6 +100,7 @@ public class PuerperaManageController extends BaseController { /** * 查询所有包括孕妇和产妇 + * * @param patientsQueryRequest * @param request * @return @@ -101,7 +108,7 @@ public class PuerperaManageController extends BaseController { @RequestMapping(value = "/allPats", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseResponse queryAllPatPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request) { + public BaseResponse queryAllPatPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest, HttpServletRequest request) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); return patientFacade.queryHighRisk1(patientsQueryRequest, null, null, loginState.getId(), "true", Boolean.FALSE); } @@ -115,13 +122,14 @@ public class PuerperaManageController extends BaseController { @RequestMapping(value = "/hPuer", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseResponse queryHighRiskPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request) { + public BaseResponse queryHighRiskPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest, HttpServletRequest request) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); BaseResponse baseResponse = patientFacade.queryHighRisk(patientsQueryRequest, Boolean.TRUE, 1, loginState.getId(), "true", Boolean.FALSE); return baseResponse; } + /** - *全部孕妇管理 + * 全部孕妇管理 * * @param patientsQueryRequest 全部孕妇管理查询 (因为请求参数一样同用一个对象) * @return 返回结果 @@ -129,53 +137,55 @@ public class PuerperaManageController extends BaseController { @RequestMapping(value = "/aPuer", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseResponse queryAllPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request) { + 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); } /** * 导出孕产妇数据 + * * @param patientsQueryRequest * @param request * @return */ @RequestMapping(value = "/exportData", method = RequestMethod.GET) @TokenRequired - public void exportAllPuer(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request,HttpServletResponse response) { + public void exportAllPuer(@Valid RiskPatientsQueryRequest patientsQueryRequest, HttpServletRequest request, HttpServletResponse response) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - patientFacade.exportAllPuer(patientsQueryRequest,loginState.getId(),response); + patientFacade.exportAllPuer(patientsQueryRequest, loginState.getId(), response); } /** * 导出孕产妇健康管理登记表(唐山滦县) + * * @param patientsQueryRequest * @param request * @return */ @RequestMapping(value = "/exportTsLxData", method = RequestMethod.GET) @TokenRequired - public void exportTsLxData(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request,HttpServletResponse response) { + public void exportTsLxData(@Valid RiskPatientsQueryRequest patientsQueryRequest, HttpServletRequest request, HttpServletResponse response) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - patientFacade.tsLxExport(patientsQueryRequest,loginState.getId(),response); + patientFacade.tsLxExport(patientsQueryRequest, loginState.getId(), response); } - /** * 区县产妇统计 + * * @param patientsQueryRequest * @param request * @return */ @RequestMapping(value = "/exportAllPuerpera", method = RequestMethod.GET) @TokenRequired - public void exportAllPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request,HttpServletResponse response) { + public void exportAllPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest, HttpServletRequest request, HttpServletResponse response) { patientsQueryRequest.setFmHospital(patientsQueryRequest.gethId()); patientsQueryRequest.setNotEnable("2"); - patientFacade.exportAllPuer(patientsQueryRequest,0,response); + patientFacade.exportAllPuer(patientsQueryRequest, 0, response); } @@ -187,18 +197,18 @@ public class PuerperaManageController extends BaseController { @RequestMapping(value = "/apatients", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseResponse queryAllPatients(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request){ + public BaseResponse queryAllPatients(@Valid RiskPatientsQueryRequest patientsQueryRequest, HttpServletRequest request) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - return patientFacade.queryHighRisk(patientsQueryRequest, null, 3,loginState.getId(),"true",Boolean.FALSE); + return patientFacade.queryHighRisk(patientsQueryRequest, null, 3, loginState.getId(), "true", Boolean.FALSE); } @RequestMapping(value = "/apatients/enums", method = RequestMethod.GET) @ResponseBody - public BaseResponse getEnums(){ + public BaseResponse getEnums() { Map map = new HashMap<>(); map.put("gwfz", basicConfigFacade.getBaseicConfigByParentId(SystemConfig.HIGH_RISK_ID)); List list = new ArrayList(); - for(int i=5;i<=100;i=i+5){ + for (int i = 5; i <= 100; i = i + 5) { list.add(i); } @@ -226,19 +236,16 @@ public class PuerperaManageController extends BaseController { @RequestMapping(value = "/apatients/rLevel", method = RequestMethod.GET) @ResponseBody - public BaseResponse rLevle(){ + public BaseResponse rLevle() { Map map = new HashMap<>(); List results = new ArrayList<>(); List riskLevelConfig = basicConfigFacade.getBaseicConfigByParentId(SystemConfig.HIGH_RISK_ID); - if (CollectionUtils.isNotEmpty(riskLevelConfig)) - { - for(BasicConfigResult levelConfig : riskLevelConfig) - { + if (CollectionUtils.isNotEmpty(riskLevelConfig)) { + for (BasicConfigResult levelConfig : riskLevelConfig) { //健康 - if ("e637b361-99cf-41eb-84f2-f0dab596e928".equals(levelConfig.getId())) - { + if ("e637b361-99cf-41eb-84f2-f0dab596e928".equals(levelConfig.getId())) { continue; } results.add(levelConfig); @@ -257,7 +264,7 @@ public class PuerperaManageController extends BaseController { @RequestMapping(value = "/findp", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseResponse getPatent(@Valid PatientQueryRequest request,HttpServletRequest request1){ + public BaseResponse getPatent(@Valid PatientQueryRequest request, HttpServletRequest request1) { LoginContext loginState = (LoginContext) request1.getAttribute("loginContext"); return patientFacade.findPatient(request, loginState.getId()); } @@ -270,7 +277,7 @@ public class PuerperaManageController extends BaseController { @RequestMapping(value = "/findp2", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseResponse getPatent2(@Valid PatientQueryRequest request,HttpServletRequest request1){ + public BaseResponse getPatent2(@Valid PatientQueryRequest request, HttpServletRequest request1) { LoginContext loginState = (LoginContext) request1.getAttribute("loginContext"); return patientFacade.findPatient2(request, loginState.getId()); } @@ -283,7 +290,7 @@ public class PuerperaManageController extends BaseController { @RequestMapping(value = "/sendPGuildSms", method = RequestMethod.POST) @ResponseBody @TokenRequired - public BaseResponse patientGuildSms(@RequestBody @Valid PatientGuideSmsRequest patientGuideSmsRequest,HttpServletRequest request1){ + public BaseResponse patientGuildSms(@RequestBody @Valid PatientGuideSmsRequest patientGuideSmsRequest, HttpServletRequest request1) { LoginContext loginState = (LoginContext) request1.getAttribute("loginContext"); return patientFacade.patientGuildSms(patientGuideSmsRequest, loginState.getId()); } @@ -297,9 +304,9 @@ public class PuerperaManageController extends BaseController { @RequestMapping(value = "/rhPuer", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseResponse queryRegionPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request) { + public BaseResponse queryRegionPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest, HttpServletRequest request) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); - return patientFacade.queryHighRisk(patientsQueryRequest, Boolean.TRUE, 1, loginState.getId(), "true",Boolean.TRUE); + return patientFacade.queryHighRisk(patientsQueryRequest, Boolean.TRUE, 1, loginState.getId(), "true", Boolean.TRUE); } /** @@ -310,7 +317,7 @@ public class PuerperaManageController extends BaseController { @RequestMapping(value = "/rapatients", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseResponse queryRegionAllPatients(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request){ + public BaseResponse queryRegionAllPatients(@Valid RiskPatientsQueryRequest patientsQueryRequest, HttpServletRequest request) { LoginContext loginState = (LoginContext) request.getAttribute("loginContext"); patientsQueryRequest.setFmHospital(patientsQueryRequest.gethId()); patientsQueryRequest.sethId(null); @@ -328,7 +335,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); } /** @@ -339,15 +346,15 @@ public class PuerperaManageController extends BaseController { @RequestMapping(value = "/allPuerpera", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseResponse queryPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request){ + 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); } /** - *区域全部孕妇管理 + * 区域全部孕妇管理 * * @param patientsQueryRequest 全部孕妇管理查询 (因为请求参数一样同用一个对象) * @return 返回结果 @@ -355,9 +362,9 @@ public class PuerperaManageController extends BaseController { @RequestMapping(value = "/raPuer", method = RequestMethod.GET) @ResponseBody @TokenRequired - public BaseResponse queryRegionAllPuerpera(@Valid RiskPatientsQueryRequest patientsQueryRequest,HttpServletRequest request) { + 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); } /** @@ -419,10 +426,10 @@ public class PuerperaManageController extends BaseController { header.put("bookbuildingDoctor", "建档医生"); String hospitalId = autoMatchFacade.getHospitalId(patientManagerRequest.getOperatorId()); - if("1000000114".equals(hospitalId)){ + if ("1000000114".equals(hospitalId)) { header.put("sendCareMan", "母子保健手册"); header.put("bookbuildingDate", "发放时间"); - }else{ + } else { header.put("bookbuildingDate", "建档时间"); } httpServletResponse.setContentType("application/force-download"); @@ -434,10 +441,9 @@ public class PuerperaManageController extends BaseController { } /** - * 母子保健手册导出 + * 母子保健手册导出 * - * @param httpServletRequest - // * @param patientManagerRequest + * @param httpServletRequest // * @param patientManagerRequest * @param httpServletResponse */ @TokenRequired @@ -483,4 +489,139 @@ 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 dffeb72..f60e94c 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 @@ -110,6 +110,7 @@ public class PatientFacade { private MatDeliverFollowService matDeliverFollowService; @Autowired private CouponMapper couponMapper; + /** * 修改产妇的社区 * @@ -1256,6 +1257,7 @@ public class PatientFacade { patientManagerResult.setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION); return patientManagerResult; } + public PatientManagerResult healthHandbookExcelManager(PatientManagerRequest patientManagerRequest) { PatientManagerResult patientManagerResult = new PatientManagerResult(); @@ -1330,13 +1332,13 @@ public class PatientFacade { //身份证号码:孕妇身份证号码 ==cardNo healthHandbookExcelModel.setCardNo(patients.getCardNo()); //发放机构:当前机构名称== 当前机构名称 - String hospitalName= couponMapper.getHospitalName(patients.getHospitalId()); - healthHandbookExcelModel.setOrganization(hospitalName==null?"诸城市人民医院":hospitalName); + String hospitalName = couponMapper.getHospitalName(patients.getHospitalId()); + healthHandbookExcelModel.setOrganization(hospitalName == null ? "诸城市人民医院" : hospitalName); //镇街、村居或单位:现住地址 healthHandbookExcelModel.setAddress(patients.getAddress()); //孩次:分娩儿童数 AntExChuModel data = antExService.findOne(patients.getId()); - healthHandbookExcelModel.setChildTime(data==null?1:(data.getProdTime()==null ? 1:data.getProdTime()+1)); + healthHandbookExcelModel.setChildTime(data == null ? 1 : (data.getProdTime() == null ? 1 : data.getProdTime() + 1)); //孕期:当前使用有孕== 有孕 healthHandbookExcelModel.setGestation(healthHandbookExcelModel.getGestation()); //发放日期:当前日期 @@ -1524,4 +1526,88 @@ 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; + } + + 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 ""; + } + }