From a77a1561e952171d43a0449f4a05fe85e81fc941 Mon Sep 17 00:00:00 2001 From: liquanyu Date: Mon, 10 Oct 2016 09:43:01 +0800 Subject: [PATCH] code update --- .../com/lyms/platform/common/utils/ExcelUtil.java | 64 ++++++++ .../web/controller/BookbuildingController.java | 42 +++++- .../operate/web/facade/BookbuildingFacade.java | 165 ++++++++++++++++++++- 3 files changed, 265 insertions(+), 6 deletions(-) diff --git a/platform-common/src/main/java/com/lyms/platform/common/utils/ExcelUtil.java b/platform-common/src/main/java/com/lyms/platform/common/utils/ExcelUtil.java index 57e2040..e621928 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/utils/ExcelUtil.java +++ b/platform-common/src/main/java/com/lyms/platform/common/utils/ExcelUtil.java @@ -96,6 +96,70 @@ public class ExcelUtil } return out; } + + + public static OutputStream toChanExcel(OutputStream out, List> data, Map columName) + { + WritableWorkbook wwb; + try + { + wwb = Workbook.createWorkbook(out); + WritableSheet ws = wwb.createSheet("sheet", 0); // 创建一个工作表 + /** + * 设置单元格样式 + */ + WritableFont wf = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, Colour.BLACK); + WritableCellFormat wcf = new WritableCellFormat(wf); + ws.setRowView(0, 300); // 设置指定行高 + // 设置列宽 + for (int j = 0, columLen = columName.size(); j < columLen; j++) + { + ws.setColumnView(j, 15); + } + // 填充数据的内容 + Map map; + for (int i = 0, len = data.size(); i < len; i++) + { + map = data.get(i); + Iterator ite = columName.keySet().iterator(); + int j = 0; + String keyORvalue = ""; + String keyName = ""; + while (ite.hasNext()) + { + keyName = ite.next(); + if (i > 0) + { // 类容数据 + keyORvalue = map.get(keyName).toString(); + } + else + { // 第一行列名 + keyORvalue = map.get(keyName).toString(); + keyName = columName.get(keyName); + ws.addCell(new Label(j, 0, keyName, wcf)); + } + ws.addCell(new Label(j, 1 + i, keyORvalue)); + j++; + } + } + + wwb.write(); + wwb.close(); + } + catch (IOException e) + { + e.printStackTrace(); + } + catch (RowsExceededException e) + { + e.printStackTrace(); + } + catch (WriteException e) + { + e.printStackTrace(); + } + return out; + } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BookbuildingController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BookbuildingController.java index 8d90674..ed5442b 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BookbuildingController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/BookbuildingController.java @@ -2,6 +2,7 @@ package com.lyms.platform.operate.web.controller; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import com.lyms.platform.common.annotation.TokenRequired; @@ -9,6 +10,7 @@ import com.lyms.platform.common.base.LoginContext; import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.operate.web.facade.AntenatalExaminationFacade; import com.lyms.platform.operate.web.request.AntenatalExaminationQueryRequest; +import com.lyms.platform.operate.web.request.BabyManageRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @@ -188,10 +190,10 @@ public class BookbuildingController extends BaseController{ exDateStart, exDateEnd, name, - weekStarts, + weekStarts, weekEnds, hbsab, - hbeag, + hbeag, hbeab, hbcab, syphilis, @@ -204,4 +206,40 @@ public class BookbuildingController extends BaseController{ ); return objectResponse; } + + + @RequestMapping(value = "/exportChanReport", method = RequestMethod.GET) + @TokenRequired + public void exportChanReport(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse, + @RequestParam(required = false) String exDateStart, + @RequestParam(required = false) String exDateEnd, + @RequestParam(required = false) String name, + @RequestParam(required = false) Integer weekStarts, + @RequestParam(required = false) Integer weekEnds, + @RequestParam(required = false) String hbsab, + @RequestParam(required = false) String hbeag, + @RequestParam(required = false) String hbeab, + @RequestParam(required = false) String hbcab, + @RequestParam(required = false) String syphilis, + @RequestParam(required = false) String hiv, + @RequestParam(required = false) String hcv, + @RequestParam(required = false) String doctorNo, + @RequestParam(required = false) Integer page, + @RequestParam(required = false) Integer limit){ + LoginContext loginState = (LoginContext) httpServletRequest.getAttribute("loginContext"); + bookbuildingFacade.exportChanReport(loginState.getId(), httpServletResponse, + exDateStart, + exDateEnd, + name, + weekStarts, + weekEnds, + hbsab, + hbeag, + hbeab, + hbcab, + syphilis, + hiv, + hcv, + doctorNo); + } } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java index df8568c..c1b8db5 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BookbuildingFacade.java @@ -36,6 +36,8 @@ import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.operate.web.request.YunBookbuildingAddRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; import java.util.*; /** @@ -1085,7 +1087,7 @@ public class BookbuildingFacade { "WHERE C.YCY_STSTEM_ID= '"+hospitalId +"'"; - String sql = "SELECT * FROM ( SELECT A.EXAMINE_DATE,\n" + + String sql = "SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT A.EXAMINE_DATE,\n" + " A.NAME,\n" + " A.AGE,\n" + " A.NOW_WEEKS,\n" + @@ -1116,7 +1118,6 @@ public class BookbuildingFacade { " B.CITY_ID,\n" + " B.CITY,\n" + " B.PROVINCE_ID,\n" + - " B.PROVINCE,\n" + " B.PROVINCE\n" + " FROM ODS_F_AUXILIARY_EXAMI A " + " INNER JOIN ODS_F_GRAVIDA_RECORD B ON A.RECORD_ID=B.RECORD_ID \n" + @@ -1199,8 +1200,6 @@ public class BookbuildingFacade { sql+=" order by A.EXAMINE_DATE DESC,A.Name ASC ) A WHERE ROWNUM <= "+end+" ) WHERE RN >= "+start; - // order by A.EXAMINE_DATE DESC" - logger.info(sql); List> list = JdbcUtil.getListDataBySql(sql); @@ -1216,4 +1215,162 @@ public class BookbuildingFacade { listResponse.setErrormsg("成功"); return listResponse; } + + + public void exportChanReport(Integer userId, HttpServletResponse httpServletResponse, + String exDateStart, + String exDateEnd, + String name, + Integer weekStarts, + Integer weekEnds, + String hbsag, + String hbeag, + String hbeab, + String hbcab, + String syphilis, + String hiv, + String hcv, + String doctorNo) { + String hospitalId = autoMatchFacade.getHospitalId(userId); + String sql = "SELECT * FROM ( SELECT A.EXAMINE_DATE,\n" + + " A.NAME,\n" + + " A.AGE,\n" + + " A.NOW_WEEKS,\n" + + " A.NOW_WEEKS_DAY, \n" + + " B.EDD_DATE,\n" + + " A.HBSAG,\n" + + " A.HBSAB,\n" + + " A.HBEAG,\n" + + " A.HBEAB,\n" + + " A.HBCAB,\n" + + " A.SYPHILIS,\n" + + " A.HIV,\n" + + " A.HCV,\n" + + " (CASE WHEN A.HIGH_RISK_GRADE IS NULL THEN '绿色预警' ELSE A.HIGH_RISK_GRADE END) AS HIGH_RISK_GRADE,\n" + + " (CASE WHEN A.HIGH_RISK_FACTOR IS NULL THEN '健康' ELSE A.HIGH_RISK_FACTOR END) AS HIGH_RISK_FACTOR,\n" + + " A.NEXT_EXAMINE_DATE,\n" + + " A.EXAMINE_HISTORY_NUM,\n" + + " A.DOCTOR_NAME,\n" + + " A.DOCTOR_NAME AS BOOKER,\n" + + " DECODE(B.IS_VIP_ID,1,'增值服务','标准服务') AS SERVICE_STATUS,\n" + + " A.SUGGESTION,\n" + + " B.TEL_NO,\n" + + " B.HOME_ADDR,\n" + + " B.STREET_VALLAGE_ID,\n" + + " B.STREET_VALLAGE,\n" + + " B.AREA_COUNTY_ID,\n" + + " B.AREA_COUNTY,\n" + + " B.CITY_ID,\n" + + " B.CITY,\n" + + " B.PROVINCE_ID,\n" + + " B.PROVINCE,\n" + + " B.PROVINCE\n" + + " FROM ODS_F_AUXILIARY_EXAMI A " + + " INNER JOIN ODS_F_GRAVIDA_RECORD B ON A.RECORD_ID=B.RECORD_ID \n" + + " INNER JOIN ODS_D_HOSPITAL C ON A.HOSPITAL_NO=C.HOSPITAL_NO AND C.VER_NO=2 \n" + + " WHERE C.YCY_STSTEM_ID= '"+hospitalId +"'"; + if (StringUtils.isNotEmpty(exDateStart)) + { + sql += " AND A.EXAMINE_DATE>= to_date('"+exDateStart+"','yyyy-MM-dd')"; + } + if (StringUtils.isNotEmpty(exDateEnd)) + { + sql += " AND A.EXAMINE_DATE <= to_date('"+exDateEnd+"','yyyy-MM-dd')"; + } + + if (StringUtils.isNotEmpty(name)) + { + sql += " AND A.NAME LIKE '%"+name+"%'"; + } + + if (weekStarts != null) + { + sql += " AND A.NOW_WEEKS>= "+weekStarts; + } + + if (weekEnds != null) + { + sql += " AND A.NOW_WEEKS <= "+weekEnds; + } + + if (StringUtils.isNotEmpty(hbsag)) + { + sql += " AND A.HBSAG = "+hbsag; + } + + if (StringUtils.isNotEmpty(hbeag)) + { + sql += " AND A.HBEAG = "+hbeag; + } + + if (StringUtils.isNotEmpty(hbeab)) + { + sql += " AND A.HBEAB = "+hbeab; + } + + if (StringUtils.isNotEmpty(hbcab)) + { + sql += " AND A.HBCAB = "+hbcab; + } + if (StringUtils.isNotEmpty(syphilis)) + { + sql += " AND A.SYPHILIS = "+syphilis; + } + + if (StringUtils.isNotEmpty(hiv)) + { + sql += " AND A.HIV = "+hiv; + } + + if (StringUtils.isNotEmpty(hcv)) + { + sql += " AND A.HCV = "+hcv; + } + if (StringUtils.isNotEmpty(doctorNo)) + { + sql += " AND A.DOCTOR_NO = "+doctorNo; + } + + sql+=" order by A.EXAMINE_DATE DESC,A.Name ASC "; + + logger.info(sql); + try { + List> datas = JdbcUtil.getListDataBySql(sql); + OutputStream out = httpServletResponse.getOutputStream(); + Map cnames = new HashMap<>(); + cnames.put("EXAMINE_DATE", "产检日期"); + cnames.put("NAME", "姓名"); + cnames.put("AGE", "年龄"); + cnames.put("NOW_WEEKS", "孕周"); + cnames.put("EDD_DATE", "预产期"); + cnames.put("HBEAG", "乙肝表面抗原"); + cnames.put("HBSAB", "乙肝表面抗体"); + cnames.put("HBEAG", "乙肝e抗原"); + cnames.put("HBEAB", "乙肝e抗体"); + cnames.put("HBCAB", "乙肝核心抗体"); + cnames.put("SYPHILIS", "梅毒"); + cnames.put("HIV", "HIV"); + cnames.put("HCV", "丙肝"); + cnames.put("HIGH_RISK_GRADE", "高危等级"); + cnames.put("HIGH_RISK_FACTOR", "高危因素"); + cnames.put("NEXT_EXAMINE_DATE", "预约产检日期"); + cnames.put("EXAMINE_HISTORY_NUM", "本院产检次数"); + cnames.put("DOCTOR_NAME", "产检医生"); + cnames.put("BOOKER", "登记人"); + cnames.put("SERVICE_STATUS", "服务类型"); + cnames.put("SUGGESTION", "处理意见"); + cnames.put("TEL_NO", "联系方式"); + cnames.put("HOME_ADDR", "居住地"); + + httpServletResponse.setContentType("application/octet-stream"); + httpServletResponse.setCharacterEncoding("UTF-8"); + httpServletResponse.setHeader("Content-Disposition", "attachment;fileName="+"产检统计表.xls"); + ExcelUtil.toExcel(out,datas,cnames); + }catch (Exception e) + { + + } + + + } } \ No newline at end of file -- 1.8.3.1