diff --git a/platform-operate-api/pom.xml b/platform-operate-api/pom.xml index 4c49a3a..4008994 100644 --- a/platform-operate-api/pom.xml +++ b/platform-operate-api/pom.xml @@ -118,6 +118,16 @@ 1.12.0 --> + + org.jxls + jxls + 2.3.0 + + + org.jxls + jxls-poi + 1.0.9 + 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 08c44ba..760b2e4 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 @@ -481,7 +481,8 @@ public class PuerperaManageController extends BaseController { header.put("husbandName", "配偶姓名"); header.put("organization", "发放机构"); header.put("address", "镇街、村居或单位"); - header.put("childTime", "孩次"); + header.put("", "孩次"); +// header.put("childTime", "孩次"); header.put("gestation", "孕期"); header.put("bookbuildingDate", "发放时间"); header.put("serial", "首次发放序号"); 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 b2df9ed..f328f2f 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 @@ -14,6 +14,7 @@ import com.lyms.platform.operate.web.request.*; import com.lyms.platform.operate.web.result.*; import com.lyms.platform.operate.web.service.PatientWeightService; import com.lyms.platform.operate.web.utils.CommonsHelper; +import com.lyms.platform.operate.web.utils.JxlsUtils; import com.lyms.platform.operate.web.worker.QuanChanPatientWorker; import com.lyms.platform.operate.web.worker.QuanPatientWorker; import com.lyms.platform.operate.web.worker.WorkHR; @@ -1137,45 +1138,14 @@ public class PatientFacade { keyPregnantWomenExcelModelList.add(keyPregnantWomenExcelModel); } } - List> list = new ArrayList<>(); - for (KeyPregnantWomenExcelModel keyPregnantWomenExcelModel : keyPregnantWomenExcelModelList) { - Map map = BeanUtils.objectToObjectMap(keyPregnantWomenExcelModel); - for (String key : map.keySet()) { - if (org.apache.commons.lang.StringUtils.isEmpty(String.valueOf(map.get(key)))) { - map.put(key, " "); - } - } - list.add(map); - } - - //2:excel导出 - Map header = new LinkedHashMap<>(); - header.put("acceptanceTime", "接收日期"); - header.put("issuedTime", "下发日期"); - header.put("number", "编号"); - header.put("username", "姓名"); - header.put("age", "年龄"); - header.put("addressbs", "户籍/本市"); - header.put("addresswd", "外地/常驻"); - header.put("addressld", "流动"); - header.put("pregnancyTimes", "孕次"); - header.put("prodTime", "产次"); - header.put("dueDate", "预产期"); - header.put("addressRegister", "居住地址"); - header.put("phone", "孕妇手机"); - header.put("husbandPhone", "丈夫手机"); - header.put("rFactor", "重点疾病"); - header.put("rLevel", "高危等级"); - header.put("acknowledgingTiem", "确诊时间"); - header.put("exportime", "随访-第一次日期"); response.setContentType("application/force-download"); response.setHeader("Content-Disposition", "attachment;filename=" + new String(("重点孕妇登记表.xls").getBytes("UTF-8"), "ISO-8859-1")); - ExcelUtil.toExcel(response.getOutputStream(), list, header); -// String path = this.getClass().getResource("/").getPath() + "zddc.xls"; -// ExcelUtil.keyPregnantWomenExclFile2(path, response.getOutputStream(), list); -// ExcelUtil.writeWhExclFile(path, response.getOutputStream(), list); - + String path = this.getClass().getResource("/").getPath() + "zddc.xls"; + Map model=new HashMap(); + model.put("employees", keyPregnantWomenExcelModelList); + model.put("nowdate", new Date()); + JxlsUtils.exportExcel(path, response.getOutputStream(), model); } catch (Exception e) { ExceptionUtils.catchException(e, e.getMessage()); } @@ -1574,7 +1544,8 @@ public class PatientFacade { } //孕期:当前使用有孕== 有孕 - healthHandbookExcelModel.setGestation(healthHandbookExcelModel.getGestation()); + healthHandbookExcelModel.setGestation("已孕"); +// healthHandbookExcelModel.setGestation(healthHandbookExcelModel.getGestation()); //发放日期:当前日期 healthHandbookExcelModel.setBookbuildingDate(DateUtil.getyyyy_MM_dd(patients.getBookbuildingDate())); //首次发放序号:等待需求沟通 diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/JxlsUtils.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/JxlsUtils.java new file mode 100644 index 0000000..68aa277 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/utils/JxlsUtils.java @@ -0,0 +1,81 @@ +package com.lyms.platform.operate.web.utils; + +import org.jxls.common.Context; +import org.jxls.expression.JexlExpressionEvaluator; +import org.jxls.transform.Transformer; +import org.jxls.util.JxlsHelper; + +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * + * @author klguang + * + */ +public class JxlsUtils { + + private static final String TEMPLATE_PATH="jxls-template"; + + public static void exportExcel(InputStream is, OutputStream os, Map model) throws IOException{ + Context context = new Context(); + if (model != null) { + for (String key : model.keySet()) { + context.putVar(key, model.get(key)); + } + } + JxlsHelper jxlsHelper = JxlsHelper.getInstance(); + Transformer transformer = jxlsHelper.createTransformer(is, os); + JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator)transformer.getTransformationConfig().getExpressionEvaluator(); + Map funcs = new HashMap(); + funcs.put("utils", new JxlsUtils()); //添加自定义功能 + evaluator.getJexlEngine().setFunctions(funcs); + jxlsHelper.processTemplate(context, transformer); + } + + public static void exportExcel(File xls, File out, Map model) throws FileNotFoundException, IOException { + exportExcel(new FileInputStream(xls), new FileOutputStream(out), model); + } + + public static void exportExcel(String templateName, OutputStream os, Map model) throws FileNotFoundException, IOException { + File template = getTemplate(templateName); + if(template!=null){ + exportExcel(new FileInputStream(template), os, model); + } + } + + + //获取jxls模版文件 + + public static File getTemplate(String name){ +// String templatePath = JxlsUtils.class.getClassLoader().getResource(TEMPLATE_PATH).getPath(); + File template = new File(name); + if(template.exists()){ + return template; + } + return null; + } + + // 日期格式化 + public String dateFmt(Date date, String fmt) { + if (date == null) { + return ""; + } + try { + SimpleDateFormat dateFmt = new SimpleDateFormat(fmt); + return dateFmt.format(date); + } catch (Exception e) { + e.printStackTrace(); + } + return ""; + } + + // if判断 + public Object ifelse(boolean b, Object o1, Object o2) { + return b ? o1 : o2; + } + +} diff --git a/platform-operate-api/src/main/resources/zddc.xls b/platform-operate-api/src/main/resources/zddc.xls index 9b5a67b8982103ec8622ce37e7a4a072fc5fc6a8..8a004e27a0f3ee0e9d2b75be69f74c8fafa2fbea 100644 GIT binary patch literal 24576 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 literal 19968 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 PsV{{^Fa9U|CoS-Ai5#m3