From 1451f5d4f300cf1da6f660d38de03b031eed09d7 Mon Sep 17 00:00:00 2001 From: hujl <123@qq.com> Date: Fri, 14 May 2021 19:07:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=8F=8A=E7=AD=BE=E6=94=B6?= =?UTF-8?q?=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 +- .../controller/MedicalHandleController.java | 19 +- .../controller/MedicalRecallController.java | 20 +- .../controller/TempHandleWzController.java | 23 +- .../com/emr/controller/VCountController.java | 85 +--- .../emr/controller/ZdAssortController.java | 9 - .../controller/beHospitaledController.java | 28 +- .../com/emr/controller/commitController.java | 63 ++- .../com/emr/controller/faultController.java | 30 +- .../emr/controller/inHospitalController.java | 26 +- .../emr/controller/lastVerifyController.java | 175 +++++++- .../controller/medicalOverdueController.java | 20 +- .../medicalRecallDateController.java | 20 +- .../com/emr/controller/storageController.java | 45 +- .../com/emr/controller/taskController.java | 2 +- .../controller/unfileMedicalController.java | 21 +- .../com/emr/dao/Archive_MasterMapper.java | 7 + .../java/com/emr/entity/Archive_Master.java | 31 ++ .../com/emr/entity/Archive_Master_Vo.java | 53 +++ .../emr/service/Archive_MasterService.java | 14 + .../emr/service/Emr_Fault_DetailService.java | 7 + .../ipml/Archive_MasterServiceImpl.java | 10 + .../ipml/Emr_Fault_DetailServiceImpl.java | 5 + .../java/com/emr/util/ThreadExcelUtils.java | 406 ++++++++++++++++++ src/main/resources/config/jdbc.properties | 16 +- .../resources/mapper/Archive_MasterMapper.xml | 84 +++- .../mapper/Emr_Fault_DetailMapper.xml | 17 +- src/main/resources/mapper/Emr_LogMapper.xml | 2 +- .../views/beHospitaledDir/beHospList.jsp | 2 +- .../WEB-INF/views/commitDir/commitList.jsp | 10 +- .../WEB-INF/views/faultDir/faultList.jsp | 130 +++++- .../views/lastVerifyDir/lastVerifyList.jsp | 390 +++++++++++++++-- .../medicalHandlerDir/medicalHandlerList.jsp | 35 +- .../medicalOverdueDir/medicalOverdueList.jsp | 26 +- .../medicalRecallDateDir/recallDateList.jsp | 3 +- .../medicalRecallDir/medicalRecallList.jsp | 80 +++- .../MedicalRecordStorage.jsp | 7 +- .../MedicalRecordStorageLog.jsp | 53 ++- .../WEB-INF/views/pdfDir/pdfLastDir.jsp | 122 ++++-- src/main/webapp/WEB-INF/views/reloadWz.jsp | 33 +- .../unfileMedicalDir/unfileMedicalList.jsp | 48 +-- 41 files changed, 1682 insertions(+), 502 deletions(-) create mode 100644 src/main/java/com/emr/util/ThreadExcelUtils.java diff --git a/pom.xml b/pom.xml index 8092caf8..9fd30987 100644 --- a/pom.xml +++ b/pom.xml @@ -569,7 +569,12 @@ guava 19.0 - + + diff --git a/src/main/java/com/emr/controller/MedicalHandleController.java b/src/main/java/com/emr/controller/MedicalHandleController.java index ea30fe1d..68798091 100644 --- a/src/main/java/com/emr/controller/MedicalHandleController.java +++ b/src/main/java/com/emr/controller/MedicalHandleController.java @@ -3,7 +3,7 @@ package com.emr.controller; import com.emr.entity.*; import com.emr.service.Archive_MasterService; import com.emr.service.Archive_Master_FollowingService; -import com.emr.util.ExportExcelUtil; +import com.emr.util.ThreadExcelUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -39,18 +39,15 @@ public class MedicalHandleController { @ResponseBody @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception { - String tableThNames = "病历清单id,住院号,住院次数,名字,性别,入院科室,入院日期,出院科室,出院日期,处理人,处理时间,处理状态"; - String fieldCns = "id,inpNo,visitId,name,sex,deptAdmissionTo,admissionDateTime,deptName,dischargeDateTime,handleName,handleTime,followingContent"; - //构造excel的数据 - List list = archiveMasterService.selectHandleDetail(archiveMasterVo); - + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"病历清单id","住院号","住院次数","名字","性别","入院科室","入院日期","出院科室","出院日期","处理人","处理时间","处理状态"}; + String[] fileNames = {"id","inpNo","visitId","name","sex","deptAdmissionTo","admissionDateTime","deptName","dischargeDateTime","handleName","handleTime","followingContent"}; //文件名 String fileName = "病案室处理列表" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + //构造excel的数据 + List list = archiveMasterService.selectHandleDetail(archiveMasterVo); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } @ResponseBody diff --git a/src/main/java/com/emr/controller/MedicalRecallController.java b/src/main/java/com/emr/controller/MedicalRecallController.java index 3d1d0279..d368c804 100644 --- a/src/main/java/com/emr/controller/MedicalRecallController.java +++ b/src/main/java/com/emr/controller/MedicalRecallController.java @@ -9,7 +9,7 @@ package com.emr.controller; import com.emr.annotation.OptionalLog; import com.emr.entity.*; import com.emr.service.*; -import com.emr.util.ExportExcelUtil; +import com.emr.util.ThreadExcelUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; @@ -64,11 +64,13 @@ public class MedicalRecallController { @ResponseBody @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, Emr_Fault_Vo emrFaultVo) throws Exception { - String tableThNames = "ID,病历清单id,住院号,住院次数,名字,性别,身份证,入院科室,入院日期,出院科室,出院日期,状态,归档状态"; - String fieldCns = "id,archiveDetailId,inpNo,visitId,name,sex,idNo,deptAdmissionTo,admissionDateTime,deptName,dischargeDateTime,state,archivestate"; + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"ID","病历清单id","住院号","住院次数","名字","性别","身份证","入院科室","入院日期","出院科室","出院日期","状态","归档状态"}; + String[] fileNames = {"id","archiveDetailId","inpNo","visitId","name","sex","idNo","deptAdmissionTo","admissionDateTime","deptName","dischargeDateTime","state","archivestate"}; + //文件名 + String fileName = "召回信息数据" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; //构造excel的数据 List list = emrFaultDetailService.selectByCol(emrFaultVo); - Emr_Dictionary dic = new Emr_Dictionary(); dic.setEffective(1); dic.setTypecode("dept_code"); @@ -89,14 +91,8 @@ public class MedicalRecallController { } } } - - //文件名 - String fileName = "召回信息数据" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } @Transactional diff --git a/src/main/java/com/emr/controller/TempHandleWzController.java b/src/main/java/com/emr/controller/TempHandleWzController.java index 35ae0a01..db485b7c 100644 --- a/src/main/java/com/emr/controller/TempHandleWzController.java +++ b/src/main/java/com/emr/controller/TempHandleWzController.java @@ -4,22 +4,18 @@ import com.emr.entity.*; import com.emr.service.Archive_MasterService; import com.emr.service.TempMasterIDService; import com.emr.service.Temp_InfoService; -import com.emr.util.ExportExcelUtil; +import com.emr.util.ThreadExcelUtils; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -137,18 +133,15 @@ public class TempHandleWzController { @ResponseBody @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, Temp_Info tempInfo) throws Exception { - String tableThNames = "病案id"; - String fieldCns = "masterId"; - //构造excel的数据 - List list = tempInfoService.selByCol(tempInfo); - + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"病案id"}; + String[] fileNames = {"masterId"}; //文件名 String fileName = "缺失列表" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + //构造excel的数据 + List list = tempInfoService.selByCol(tempInfo); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } /*@RequestMapping("reloadWzAll") diff --git a/src/main/java/com/emr/controller/VCountController.java b/src/main/java/com/emr/controller/VCountController.java index ae939cb2..77079e29 100644 --- a/src/main/java/com/emr/controller/VCountController.java +++ b/src/main/java/com/emr/controller/VCountController.java @@ -6,12 +6,9 @@ */ package com.emr.controller; -import com.emr.annotation.OptionalLog; import com.emr.entity.*; import com.emr.service.*; -import com.emr.util.ExportExcelUtil; -import org.apache.axis.client.Call; -import org.apache.axis.client.Service; +import com.emr.util.ThreadExcelUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -20,9 +17,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.xml.namespace.QName; import java.text.SimpleDateFormat; -import java.util.Arrays; import java.util.Date; import java.util.List; @@ -57,71 +52,28 @@ public class VCountController { return v_countService.selectByCol(vCount); } - @ResponseBody @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, V_Count vCount) throws Exception { - String tableThNames = "科室代码,科室名称,出院人数,已归档,未归档,死亡人数,归档率(%),2日率(%),3日率(%),7日率(%)"; - String fieldCns = "deptCode,deptName,outNum,fileNum,unfileNum,deathNum,fileRate,day2Rate,day3Rate,day7Rate"; - //构造excel的数据 - List list = v_countService.selectByCol(vCount); -// for (int i = 0; i < list.size(); i++) { -// if(list.get(i).getInNum()==null){ -// list.get(i).setInNum(0); -// } -// if (list.get(i).getOutNum() == null) { -// list.get(i).setOutNum(0); -// } -// if (list.get(i).getFileNum() == null) { -// list.get(i).setFileNum(0); -// } -// if (list.get(i).getUnfileNum() == null) { -// list.get(i).setUnfileNum(0); -// } -// if (list.get(i).getDeathNum() == null) { -// list.get(i).setDeathNum(0); -// } -// if (list.get(i).getFileRate() == null) { -// list.get(i).setFileRate("0.0%"); -// }else{ -// Double val= Double.valueOf(list.get(i).getFileRate())/100; -// list.get(i).setFileRate(val+"%"); -// } -// if (list.get(i).getDay2Rate() == null) { -// list.get(i).setDay2Rate("0.0%"); -// } else { -// Double val = Double.valueOf(list.get(i).getDay2Rate()) / 100; -// list.get(i).setDay2Rate(val + "%"); -// } -// if (list.get(i).getDay3Rate() == null) { -// list.get(i).setDay3Rate("0.0%"); -// } else { -// Double val = Double.valueOf(list.get(i).getDay3Rate()) / 100; -// list.get(i).setDay3Rate(val + "%"); -// } -// if (list.get(i).getDay7Rate() == null) { -// list.get(i).setDay7Rate("0.0%"); -// } else { -// Double val = Double.valueOf(list.get(i).getDay7Rate()) / 100; -// list.get(i).setDay7Rate(val + "%"); -// } -// } - + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"科室代码","科室名称","出院人数","已归档","未归档","死亡人数","归档率(%)","2日率(%)","3日率(%)","7日率(%)"}; + String[] fileNames = {"deptCode","deptName","outNum","fileNum","unfileNum","deathNum","fileRate","day2Rate","day3Rate","day7Rate"}; //文件名 String fileName = "统计数据" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + //构造excel的数据 + List list = v_countService.selectByCol(vCount); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } - @ResponseBody @RequestMapping(value = "/exportExcel2") public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception { - String tableThNames = "名字,入院科室,入院日期,出院科室,出院日期,主管医生"; - String fieldCns = "name,deptAdmissionTo,admissionDateTime,deptName,dischargeDateTime,doctorInCharge"; + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"名字,入院科室,入院日期,出院科室,出院日期,主管医生"}; + String[] fileNames = {"name","deptAdmissionTo","admissionDateTime","deptName","dischargeDateTime","doctorInCharge"}; + //文件名 + String fileName = "未归档病历列表" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; //构造excel的数据 List list = archiveMasterService.selectByUnfile(archiveMasterVo); Emr_Dictionary dic = new Emr_Dictionary(); @@ -129,14 +81,12 @@ public class VCountController { dic.setTypecode("dept_code"); //科室列表 List dicList = emrDictionaryService.dicByTypeCode(dic); - for (int i = 0; i < list.size(); i++) { //替换科室 for (int k = 0; k < dicList.size(); k++) { String deptName = list.get(i).getDeptName(); //入院科室dept_admission_to String dept2 = list.get(i).getDeptAdmissionTo(); - if ((deptName != null && deptName.equals(dicList.get(k).getCode())) || (dept2 != null && dept2.equals(dicList.get(k).getCode()))) { //出院科室 if(deptName != null) { @@ -148,14 +98,9 @@ public class VCountController { } } } + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); - //文件名 - String fileName = "未归档病历列表" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); } /*@ResponseBody diff --git a/src/main/java/com/emr/controller/ZdAssortController.java b/src/main/java/com/emr/controller/ZdAssortController.java index f1815b2e..9d544734 100644 --- a/src/main/java/com/emr/controller/ZdAssortController.java +++ b/src/main/java/com/emr/controller/ZdAssortController.java @@ -7,22 +7,13 @@ package com.emr.controller; import com.emr.entity.*; -import com.emr.service.Emr_DictionaryService; -import com.emr.service.Emr_Fault_DetailService; -import com.emr.service.Emr_Fault_TypeService; import com.emr.service.Zd_AssortService; -import com.emr.util.ExportExcelUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; -import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Date; import java.util.List; @Controller diff --git a/src/main/java/com/emr/controller/beHospitaledController.java b/src/main/java/com/emr/controller/beHospitaledController.java index 0d081966..2c38f323 100644 --- a/src/main/java/com/emr/controller/beHospitaledController.java +++ b/src/main/java/com/emr/controller/beHospitaledController.java @@ -8,9 +8,7 @@ package com.emr.controller; import com.emr.entity.*; import com.emr.service.*; -import com.emr.util.ExportExcelUtil; -import org.apache.axis.client.Call; -import org.apache.axis.client.Service; +import com.emr.util.ThreadExcelUtils; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; import org.apache.shiro.SecurityUtils; @@ -26,7 +24,6 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import javax.xml.namespace.QName; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; @@ -46,9 +43,6 @@ public class beHospitaledController { @Autowired private Emr_Staff_RemarkService emrStaffRemarkService; - @Autowired - private Emr_PictureService emrPictureService; - @Autowired(required = false) private Archive_Master_FollowingService archive_master_followingService; @@ -57,15 +51,12 @@ public class beHospitaledController { @Value("${HomepageMethod}") private String HomepageMethod; - @RequestMapping(value = "/beHosps") public String inHospitals(Model model) { //return "beHospitaledDir/beHospListNow"; return "beHospitaledDir/beHospList"; } - - @ResponseBody @RequestMapping(value = "/beHospList") public OffsetLimitPage beHospList(HttpServletRequest request, HttpServletResponse response, Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit) { @@ -73,21 +64,18 @@ public class beHospitaledController { return result; } - @ResponseBody @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception { - String tableThNames = "病历清单id,住院号,住院次数,名字,性别,身份证,出院科室,出院日期,主管医生,状态,医生是否提交,医生,医生提交日期,护士是否提交,护士,护士提交日期,电子病历医生提交,电子病历护士提交,是否死亡"; - String fieldCns = "id,inpNo,visitId,name,sex,idNo,deptName,dischargeDateTime,doctorInCharge,archivestate,cmtDoctor,doctorName,cmtDoctorDate,cmtNurse,nurseName,cmtDurseDate,emrDoctorCmt,emrNureCmt,deathFlag"; - //构造excel的数据beHospList - List list = archiveMasterService.selectByColumn(archiveMasterVo); + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"病历清单id","住院号","住院次数","名字","性别","身份证","出院科室","出院日期","主管医生","状态","医生是否提交","医生","医生提交日期","护士是否提交","护士","护士提交日期","电子病历医生提交","电子病历护士提交","是否死亡"}; + String[] fileNames = {"id","inpNo","visitId","name","sex","idNo","deptName","dischargeDateTime","doctorInCharge","archivestate","cmtDoctor","doctorName","cmtDoctorDate","cmtNurse","nurseName","cmtDurseDate","emrDoctorCmt","emrNureCmt","deathFlag"}; //文件名 String fileName = "出院浏览" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + //构造excel的数据beHospList + List list = archiveMasterService.selectByColumn(archiveMasterVo); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } @ResponseBody diff --git a/src/main/java/com/emr/controller/commitController.java b/src/main/java/com/emr/controller/commitController.java index 895beb02..2e0380b8 100644 --- a/src/main/java/com/emr/controller/commitController.java +++ b/src/main/java/com/emr/controller/commitController.java @@ -8,12 +8,9 @@ package com.emr.controller; import com.emr.entity.*; import com.emr.service.Archive_MasterService; -import com.emr.service.Emr_DictionaryService; import com.emr.service.Emr_Fault_DetailService; import com.emr.service.Emr_Fault_TypeService; -import com.emr.util.ExportExcelUtil; -import org.apache.cxf.endpoint.Client; -import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; +import com.emr.util.ThreadExcelUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; @@ -60,18 +57,16 @@ public class commitController { @ResponseBody @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception { - String tableThNames = "病历清单id,住院号,住院次数,名字,性别,身份证,出院科室,出院日期,主管医生,状态,医生是否提交,医生,医生提交日期,护士是否提交,护士,护士提交日期,是否死亡"; - String fieldCns = "id,inpNo,visitId,name,sex,idNo,deptName,dischargeDateTime,doctorInCharge,archivestate,cmtDoctor,doctorName,cmtDoctorDate,cmtNurse,nurseName,cmtDurseDate,deathFlag"; + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"病历清单id","住院号","住院次数","名字","性别","身份证","出院科室","出院日期","主管医生","状态","医生是否提交","医生","医生提交日期","护士是否提交","护士","护士提交日期","是否死亡"}; + String[] fileNames = {"id,inpNo","visitId","name","sex","idNo","deptName","dischargeDateTime","doctorInCharge","archivestate","cmtDoctor","doctorName","cmtDoctorDate","cmtNurse","nurseName","cmtDurseDate","deathFlag"}; + //文件名 + String fileName = "科主任审核" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; //构造excel的数据 List list = archiveMasterService.selectByCmtCol(archiveMasterVo); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); - //文件名 - String fileName = "科主任审核" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); } @@ -133,10 +128,10 @@ public class commitController { @RequestMapping(value = "/updateStateByArchivId") public int updateStateByArchivId(HttpServletRequest request, HttpServletResponse response, Emr_Fault_Detail emrFaultDetail) { response.setCharacterEncoding("utf-8"); - //修改病案归档状态 - Archive_Master archiveMaster = new Archive_Master(); - archiveMaster.setId(emrFaultDetail.getArchiveDetailId()); - archiveMaster.setArchivestate("已归档"); + //修改病案归档状态 + Archive_Master archiveMaster = new Archive_Master(); + archiveMaster.setId(emrFaultDetail.getArchiveDetailId()); + archiveMaster.setArchivestate("已归档"); int bol =0; // int bol = archiveMasterService.updateByClo(archiveMaster); // @@ -171,18 +166,15 @@ public class commitController { @ResponseBody @RequestMapping(value = "/exportBbSelExcel") public void exportBbSelExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception { - String tableThNames = "科室编码,科室名称,出院人数,已初审病历数,未初审病历数,超期未初审病历数"; - String fieldCns = "dept_name,name,checkDoctor,lockinfo,inpNo,visitId"; - //构造excel的数据 - List list = archiveMasterService.bbSel(archiveMasterVo); - + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"科室编码","科室名称","出院人数","已初审病历数","未初审病历数","超期未初审病历数"}; + String[] fileNames = {"dept_name","name","checkDoctor","lockinfo","inpNo","visitId"}; //文件名 String fileName = "当前科室归档情况报表" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + //构造excel的数据 + List list = archiveMasterService.bbSel(archiveMasterVo); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } @@ -197,18 +189,15 @@ public class commitController { @ResponseBody @RequestMapping(value = "/exportBbSel2Excel") public void exportBbSel2Excel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception { - String tableThNames = "病历清单id,住院号,住院次数,名字,科室编码,科室名称,主管医生,状态,入院日期,出院日期,超期天数"; - String fieldCns = "id,inpNo,visitId,name,deptName,doctorName,doctorInCharge,archivestate,admissionDateTime,dischargeDateTime,nurseName"; - //构造excel的数据 - List list = archiveMasterService.bbSel2(archiveMasterVo); - + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"病历清单id","住院号","住院次数","名字","科室编码","科室名称","主管医生","状态","入院日期","出院日期","超期天数"}; + String[] fileNames = {"id","inpNo","visitId","name","deptName","doctorName","doctorInCharge","archivestate","admissionDateTime","dischargeDateTime","nurseName"}; //文件名 String fileName = "当前科室超期病历详情" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + //构造excel的数据 + List list = archiveMasterService.bbSel2(archiveMasterVo); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } diff --git a/src/main/java/com/emr/controller/faultController.java b/src/main/java/com/emr/controller/faultController.java index 76cc7464..5b044c6e 100644 --- a/src/main/java/com/emr/controller/faultController.java +++ b/src/main/java/com/emr/controller/faultController.java @@ -10,7 +10,7 @@ import com.emr.entity.*; import com.emr.service.Emr_DictionaryService; import com.emr.service.Emr_Fault_DetailService; import com.emr.service.Emr_Fault_TypeService; -import com.emr.util.ExportExcelUtil; +import com.emr.util.ThreadExcelUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; @@ -25,13 +25,12 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.text.SimpleDateFormat; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; @Controller @RequestMapping("fault") public class faultController { + @Autowired private Emr_Fault_DetailService emrFaultDetailService; @@ -53,12 +52,14 @@ public class faultController { return result; } - @ResponseBody @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, Emr_Fault_Vo emrFaultVo) throws Exception { - String tableThNames = "ID,病历清单id,住院号,住院次数,姓名,出院科室,出院日期,归档状态,评分,回退内容,缺陷选项,缺陷内容,创建时间"; - String fieldCns = "id,archiveDetailId,inpNo,visitId,name,deptName,dischargeDateTime,archivestate,score,backContent,assortId,content,createTime"; + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"病历清单id","住院号","住院次数","姓名","出院科室","出院日期","归档状态","评分","回退内容","缺陷选项","缺陷内容","创建时间"}; + String[] fileNames = {"archiveDetailId","inpNo","visitId","name","deptName","dischargeDateTime","archivestate","score","backContent","assortId","content","createTime"}; + //文件名 + String fileName = "缺陷信息数据" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; //构造excel的数据 List list = emrFaultDetailService.selectByCol(emrFaultVo); Emr_Dictionary dic = new Emr_Dictionary(); @@ -101,15 +102,12 @@ public class faultController { } } } - - - //文件名 - String fileName = "缺陷信息数据" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + /* System.out.println("开始执行导出......."); + long start = System.currentTimeMillis();*/ + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); + /* long end = System.currentTimeMillis(); + System.out.println("耗时:" + (end - start) / 1000 + "秒");*/ } diff --git a/src/main/java/com/emr/controller/inHospitalController.java b/src/main/java/com/emr/controller/inHospitalController.java index 1be1f7cc..8ffa5290 100644 --- a/src/main/java/com/emr/controller/inHospitalController.java +++ b/src/main/java/com/emr/controller/inHospitalController.java @@ -11,7 +11,6 @@ import com.emr.entity.*; import com.emr.service.*; import com.emr.util.*; import com.itextpdf.text.pdf.PdfReader; -import com.lowagie.text.DocumentException; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.ibatis.annotations.Param; @@ -93,25 +92,16 @@ public class inHospitalController { @ResponseBody @RequestMapping(value = "/exportExcel") - public String exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception { - String result=""; - String tableThNames = "病历清单id,住院号,住院次数,名字,性别,身份证,入院科室,入院日期,主管医生,状态"; - String fieldCns = "id,inpNo,visitId,name,sex,idNo,deptAdmissionTo,admissionDateTime,doctorInCharge,archivestate"; + public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception { + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"病历清单id","住院号","住院次数","名字","性别","身份证","入院科室","入院日期","主管医生","状态"}; + String[] fileNames = {"id","inpNo","visitId","name","sex","idNo","deptAdmissionTo","admissionDateTime","doctorInCharge","archivestate"}; + //文件名 + String fileName = "在院浏览" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; //构造excel的数据 List list = archiveMasterService.selectByCol(archiveMasterVo); - if(list.size()>0) { - //文件名 - String fileName = "在院浏览" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); - result="导出成功!"; - }else{ - result="查询结果无记录!"; - } - return result; + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } @ResponseBody diff --git a/src/main/java/com/emr/controller/lastVerifyController.java b/src/main/java/com/emr/controller/lastVerifyController.java index 8fb47697..63e1d5dc 100644 --- a/src/main/java/com/emr/controller/lastVerifyController.java +++ b/src/main/java/com/emr/controller/lastVerifyController.java @@ -8,18 +8,18 @@ package com.emr.controller; import com.emr.entity.*; import com.emr.service.*; -import com.emr.util.ExportExcelUtil; +import com.emr.util.ThreadExcelUtils; import com.emr.util.XMLUtil; import com.emr.webservice.MedicalRecordShowBackContent.MR_FILE_CALLBACK_RECORD; import com.emr.webservice.MedicalRecordShowBackContent.MR_FILE_INDEX_CALLBACK; import org.apache.axis.client.Call; import org.apache.axis.client.Service; -import org.apache.cxf.endpoint.Client; -import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; +import org.apache.axis.encoding.XMLType; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.Model; @@ -29,10 +29,13 @@ import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.xml.namespace.QName; +import javax.xml.rpc.ParameterMode; +import javax.xml.rpc.ServiceException; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.io.UnsupportedEncodingException; +import java.rmi.RemoteException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @@ -40,6 +43,10 @@ import java.util.List; @Controller @RequestMapping("lastVerify") public class lastVerifyController { + @Value("${EMRQualityControl}") + private String EMRQualityControl; + @Value("${EMRQualityControlParamName}") + private String EMRQualityControlParamName; @Autowired private Archive_MasterService archiveMasterService; @@ -73,18 +80,15 @@ public class lastVerifyController { @ResponseBody @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception { - String tableThNames = "病历清单id,住院号,住院次数,名字,性别,身份证,出院科室,出院日期,主管医生,状态,医生是否提交,医生,医生提交日期,护士是否提交,护士,护士提交日期,电子病历医生提交,电子病历护士提交,是否死亡"; - String fieldCns = "id,inpNo,visitId,name,sex,idNo,deptName,dischargeDateTime,doctorInCharge,archivestate,cmtDoctor,doctorName,cmtDoctorDate,cmtNurse,nurseName,cmtDurseDate,emrDoctorCmt,emrNureCmt,deathFlag"; - //构造excel的数据 - List list = archiveMasterService.selectByLast(archiveMasterVo); - + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"病历清单id","住院号","住院次数","名字","性别","身份证","出院科室","出院日期","主管医生","状态","医生是否提交","医生","医生提交日期","护士是否提交","护士","护士提交日期","电子病历医生提交","电子病历护士提交","是否死亡","是否签收","签收人","签收时间"}; + String[] fileNames = {"id","inpNo","visitId","name","sex","idNo","deptName","dischargeDateTime","doctorInCharge","archivestate","cmtDoctor","doctorName","cmtDoctorDate","cmtNurse","nurseName","cmtDurseDate","emrDoctorCmt","emrNureCmt","deathFlag","is_sign","signer","sign_time"}; //文件名 String fileName = "病案室终审" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + //构造excel的数据 + List list = archiveMasterService.selectByLast(archiveMasterVo); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } @@ -263,8 +267,83 @@ public class lastVerifyController { return bol; } + @ResponseBody + @RequestMapping(value = "/updateSignState") + public String updateStateByArchivId(HttpServletRequest request, HttpServletResponse response, Archive_Master archiveMaster) throws UnsupportedEncodingException { + request.setCharacterEncoding("utf-8"); + response.setCharacterEncoding("utf-8"); + String result=""; + int isSign=archiveMaster.getIsSign(); + List list = archiveMasterService.selByCol(archiveMaster); + if(list.size()>0){ + //修改 + archiveMaster=list.get(0); + if(archiveMaster.getIsSign()!=isSign) { + // 从session获取用户名 + Subject currentUser = SecurityUtils.getSubject(); + Session session = currentUser.getSession(); + String username = (String) session.getAttribute("userSession");//获取前面登录的用户名 + + //参数输入 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String nowTime = format.format(new Date()); + archiveMaster.setIsSign(isSign); + if (isSign == 0) { + archiveMaster.setSigner(""); + archiveMaster.setSignTime(""); + } else if (isSign == 1) { + // System.out.println((archiveMaster.getIsscaned().equals("1"))+"===="+archiveMaster.getIsscaned()!="1"); + if(archiveMaster.getIsscaned().equals("1") && archiveMaster.getIsscaned()!="1") { + result = "该份病案签收失败,纸质病历未送病案室!"; + return result; + }else { + archiveMaster.setSigner(username); + archiveMaster.setSignTime(nowTime); + } + } + int bol = archiveMasterService.updateByClo(archiveMaster); + if (bol == 1) { + String followingContent=""; + String followingType=""; + if(isSign == 1) { + result = "该份病案签收成功!"; + followingContent="病案签收成功"; + followingType="12"; + }else{ + result = "该份病案取消签收成功!"; + followingContent="病案取消签收成功"; + followingType="13"; + } + //2021-05-13 following表中添加签收操作记录 + Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER"); + String handleName = user.getUserPosition();//姓名 + Archive_Master_Following archive_master_following = new Archive_Master_Following(); + archive_master_following.setMasterId(archiveMaster.getId()); + archive_master_following.setFollowingType(followingType); + archive_master_following.setFollowingContent(followingContent); + archive_master_following.setHandleTime(nowTime); + archive_master_following.setHandleId(username); + archive_master_following.setHandleName(handleName); + archive_master_followingService.insertSelective(archive_master_following); + } else { + result = "该份病案签收失败!"; + } + + }else{ + if(isSign==1) { + result = "该份病案已经签收!"; + }else if(isSign==0){ + result = "该份病案已经取消签收!"; + } + } + }else{ + result="该份病案并不存在!"; + } + return result; + } + - @RequestMapping("getImg2") + @RequestMapping("getImg2") public void getImg2(HttpServletRequest request, HttpServletResponse response, String path) throws IOException { FileInputStream fis = null; OutputStream os = null; @@ -298,7 +377,7 @@ public class lastVerifyController { @Transactional @ResponseBody @RequestMapping(value = "/emrShowBackReason") - public String emrShowBackReason(Emr_Fault_Detail emrFaultDetail) throws Exception { + public String emrShowBackReason(HttpServletRequest request, HttpServletResponse response, Emr_Fault_Detail emrFaultDetail) throws Exception { SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); String nowTime = format1.format(new Date()); //退回原因 @@ -308,7 +387,7 @@ public class lastVerifyController { assortName.append(emr_fault_vo.getAssortName()+";"); } Archive_Master archive_master = archiveMasterService.selectById(emrFaultDetail.getArchiveDetailId()); - String result="False"; + String result="false"; if (archive_master!=null){ result = emrWebServiceShowBackReason(archive_master.getPatientId(), Integer.parseInt(archive_master.getVisitId()), @@ -397,16 +476,70 @@ public class lastVerifyController { MR_FILE_CALLBACK_RECORD = XMLUtil.convertToXml(inputParam1); MR_FILE_INDEX_CALLBACK = XMLUtil.convertToXml(inputParam2); - String endpoint = "http://10.6.1.152:8037/SignWebService.asmx?WSDL"; - String method = "MedicalRecordRepair"; - - JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(); + /* String endpoint = "http://10.6.1.152:8037/SignWebService.asmx?WSDL"; + String method = "MedicalRecordRepair";*/ + //StringBuffer sb = new StringBuffer("\n\n"); + StringBuffer sb = new StringBuffer("\n\n"); + sb.append(MR_FILE_CALLBACK_RECORD); + sb.append("\n"); + sb.append(MR_FILE_INDEX_CALLBACK); + sb.append("\n"); + sb.append(""); + + /*JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance(); Client client = factory.createClient(endpoint); Object[] res = null; res = client.invoke(method,MR_FILE_CALLBACK_RECORD,MR_FILE_INDEX_CALLBACK); + */ //String xml = (String) res[0]; //System.err.println("@@@@@@@@@@@@@@@@@" + xml); - return (String) res[0]; + //return (String) res[0]; + String result=""; + try { + String endpoint = EMRQualityControl; + String[] subStrs = endpoint.split("="); + String url = ""; + String subStr =""; + url = subStrs[0]; + if(subStrs.length>1){ + subStr = getURLEncoderString(subStrs[1]); + } + endpoint = url+"="+subStr; + Service service = new Service(); + Call call = null; + try { + call = (Call) service.createCall(); + } catch (ServiceException e) { + } + call.setTargetEndpointAddress(endpoint); + call.setOperationName(new QName("http://bjgoodwillcis.com", "XMLMessageServer")); + call.addParameter(EMRQualityControlParamName, XMLType.XSD_STRING, ParameterMode.IN);//接口的参数 + call.setReturnType(XMLType.XSD_STRING);//设置返回类型 + try { + result = (String) call.invoke(new Object[]{sb.toString()}); + //System.err.println(result); + } catch (RemoteException e) { + e.printStackTrace(); + result = e.getMessage(); + System.err.println(result); + } + } catch (Exception e) { + System.err.println(e.toString()); + } + return result; + } + + public static String getURLEncoderString(String str) { + String result = ""; + if (null == str) { + return ""; + } + try { + result = java.net.URLEncoder.encode(str, "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return result; } } diff --git a/src/main/java/com/emr/controller/medicalOverdueController.java b/src/main/java/com/emr/controller/medicalOverdueController.java index 1986dac6..ca305cce 100644 --- a/src/main/java/com/emr/controller/medicalOverdueController.java +++ b/src/main/java/com/emr/controller/medicalOverdueController.java @@ -1,10 +1,9 @@ package com.emr.controller; -import com.emr.entity.Archive_Master; import com.emr.entity.Archive_Master_Vo; import com.emr.entity.OffsetLimitPage; import com.emr.service.Archive_MasterService; -import com.emr.util.ExportExcelUtil; +import com.emr.util.ThreadExcelUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -46,17 +45,14 @@ public class medicalOverdueController { @ResponseBody @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception { - String tableThNames = "住院号,住院次数,姓名,入院科室,出院科室,出院日期,科室提交,初审人,主管医生,超期天数"; - String fieldCns = "inpNo,visitId,name,deptAdmissionTo,deptName,dischargeDateTime,createTime,firstInstance,doctorInCharge,overdue"; - //构造excel的数据 - List list = archiveMasterService.selectOverdue(archiveMasterVo); - + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"住院号","住院次数","姓名","入院科室","出院科室","出院日期","科室提交","初审人","主管医生","超期天数"}; + String[] fileNames = {"inpNo","visitId","name","deptAdmissionTo","deptName","dischargeDateTime","createTime","firstInstance","doctorInCharge","overdue"}; //文件名 String fileName = "首次签收超期列表" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + //构造excel的数据 + List list = archiveMasterService.selectOverdue(archiveMasterVo); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } } diff --git a/src/main/java/com/emr/controller/medicalRecallDateController.java b/src/main/java/com/emr/controller/medicalRecallDateController.java index 00269509..8f7436d8 100644 --- a/src/main/java/com/emr/controller/medicalRecallDateController.java +++ b/src/main/java/com/emr/controller/medicalRecallDateController.java @@ -10,7 +10,7 @@ import com.emr.entity.Emr_Log; import com.emr.entity.Emr_Log_Vo; import com.emr.entity.OffsetLimitPage; import com.emr.service.LogService; -import com.emr.util.ExportExcelUtil; +import com.emr.util.ThreadExcelUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -47,19 +47,15 @@ public class medicalRecallDateController { @ResponseBody @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, Emr_Log_Vo emrLogVo) throws Exception { - String tableThNames = "日志id,病历清单id,住院号,住院次数,名字,性别,身份证,召回人,召回时间,召回原因,状态,归档状态"; - String fieldCns = "logId,archiveDetailId,inpNo,visitId,name,sex,idNo,creater,createDate,recallReason,state,archivestate"; - emrLogVo.setLogContent("病案召回"); - emrLogVo.setSysFlag("EMR_Medical_Record"); - //构造excel的数据 - List list = logService.selectByCol(emrLogVo); + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"日志id","病历清单id","住院号","住院次数","名字","性别","身份证","召回人","召回时间","召回原因","状态","归档状态"}; + String[] fileNames = {"logId","archiveDetailId","inpNo","visitId","name","sex","idNo","creater","createDate","recallReason","state","archivestate"}; //文件名 String fileName = "日志信息数据" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + //构造excel的数据 + List list = logService.selectByCol(emrLogVo); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } @ResponseBody diff --git a/src/main/java/com/emr/controller/storageController.java b/src/main/java/com/emr/controller/storageController.java index 425de28e..23d77de5 100644 --- a/src/main/java/com/emr/controller/storageController.java +++ b/src/main/java/com/emr/controller/storageController.java @@ -9,12 +9,11 @@ package com.emr.controller; import com.emr.annotation.OptionalLog; import com.emr.entity.*; import com.emr.service.*; -import com.emr.util.ExportExcelUtil; +import com.emr.util.ThreadExcelUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; @@ -53,44 +52,20 @@ public class storageController { @RequestMapping(value = "/StorageList") public OffsetLimitPage recallList(HttpServletRequest request, HttpServletResponse response, Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit) { OffsetLimitPage result = emrFaultDetailService.selectStorageByCol(emrFaultVo, offset, limit); - return result; } @ResponseBody @RequestMapping(value = "/exportExcel") - public void exportExcel(HttpServletResponse response, Emr_Fault_Vo emrFaultVo) throws Exception { - String tableThNames = "ID,病历清单id,住院号,住院次数,名字,性别,身份证,入院科室,入院日期,出院科室,出院日期,状态,归档状态"; - String fieldCns = "id,archiveDetailId,inpNo,visitId,name,sex,idNo,deptAdmissionTo,admissionDateTime,deptName,dischargeDateTime,state,archivestate"; - //构造excel的数据 - List list = emrFaultDetailService.selectByCol(emrFaultVo); - - Emr_Dictionary dic = new Emr_Dictionary(); - dic.setEffective(1); - dic.setTypecode("dept_code"); - //科室列表 - List dicList = emrDictionaryService.dicByTypeCode(dic); - for (int i = 0; i < list.size(); i++) { - //替换科室 - for (int k = 0; k < dicList.size(); k++) { - String deptName = list.get(i).getDeptName(); - if (deptName.equals(dicList.get(k).getCode())) { - //出院科室 - deptName = deptName.replace(deptName, dicList.get(k).getName()); - list.get(i).setDeptName(deptName); - //入院科室dept_admission_to - deptName = list.get(i).getDeptAdmissionTo(); - deptName = deptName.replace(deptName, dicList.get(k).getName()); - list.get(i).setDeptAdmissionTo(deptName); - } - } - } + public void exportExcel(HttpServletResponse response,Archive_Master_Vo archiveMasterVo) throws Exception { + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"住院号","住院次数","名字","性别","撤回人","撤回时间","归档状态","状态"}; + String[] fileNames = {"inpNo","visitId","name","sex","handleName","handleTime","archivestate","followingContent"}; //文件名 - String fileName = "召回信息数据" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + String fileName = "病案封存日志" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; + //构造excel的数据 + List list=archiveMasterService.selectByFollowinglog(archiveMasterVo); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } /** diff --git a/src/main/java/com/emr/controller/taskController.java b/src/main/java/com/emr/controller/taskController.java index a34f372f..2f7a4200 100644 --- a/src/main/java/com/emr/controller/taskController.java +++ b/src/main/java/com/emr/controller/taskController.java @@ -42,8 +42,8 @@ public class taskController { @Value("${autoPdfUrl}") private String autoPdfUrl; - @Scheduled(cron="${fileDelay}")//每天4点触发cron="0 0 4 * * ?" //@Scheduled(cron="0/1 * * * * ? ") //每1秒执行一次 + @Scheduled(cron="${fileDelay}")//每天4点触发cron="0 0 4 * * ?" public void task() throws IOException { //static\img\pdfFiles\typesPdf //String projectPath = System.getProperty("user.dir") + "\\static\\img\\pdfFiles\\typesPdf\\"; diff --git a/src/main/java/com/emr/controller/unfileMedicalController.java b/src/main/java/com/emr/controller/unfileMedicalController.java index d0c42a4a..22f2f58d 100644 --- a/src/main/java/com/emr/controller/unfileMedicalController.java +++ b/src/main/java/com/emr/controller/unfileMedicalController.java @@ -6,13 +6,11 @@ */ package com.emr.controller; -import com.emr.entity.Archive_Master; import com.emr.entity.Archive_Master_Vo; -import com.emr.entity.Emr_Dictionary; import com.emr.entity.OffsetLimitPage; import com.emr.service.Archive_MasterService; import com.emr.service.Emr_DictionaryService; -import com.emr.util.ExportExcelUtil; +import com.emr.util.ThreadExcelUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -53,18 +51,15 @@ public class unfileMedicalController { @ResponseBody @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletResponse response, Archive_Master_Vo archiveMasterVo) throws Exception { - String tableThNames = "病历清单id,住院号,住院次数,名字,性别,身份证,入院科室,入院日期,出院科室,出院日期,主管医生,状态,医生是否提交,医生,医生提交日期,护士是否提交,护士,护士提交日期,电子病历医生提交,电子病历护士提交,是否死亡"; - String fieldCns = "id,inpNo,visitId,name,sex,idNo,deptAdmissionTo,admissionDateTime,deptName,dischargeDateTime,doctorInCharge,archivestate,cmtDoctor,doctorName,cmtDoctorDate,cmtNurse,nurseName,cmtDurseDate,emrDoctorCmt,emrNureCmt,deathFlag"; - //构造excel的数据 - List list = archiveMasterService.selectByUnfile(archiveMasterVo); - + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + String[] header = {"病历清单id","住院号","住院次数","名字","性别","身份证","入院科室","入院日期","出院科室","出院日期","主管医生","状态","医生是否提交","医生","医生提交日期","护士是否提交","护士","护士提交日期","电子病历医生提交","电子病历护士提交","是否死亡"}; + String[] fileNames = {"id,inpNo","visitId","name","sex","idNo","deptAdmissionTo","admissionDateTime","deptName","dischargeDateTime","doctorInCharge","archivestate","cmtDoctor","doctorName","cmtDoctorDate","cmtNurse","nurseName","cmtDurseDate","emrDoctorCmt","emrNureCmt","deathFlag"}; //文件名 String fileName = "未归档病历列表" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xls"; - //ExportExcelUtil - ExportExcelUtil exportExcelUtil = new ExportExcelUtil(); - response.setContentType("application/ms-excel;charset=gbk"); - //导出excel的操作 - exportExcelUtil.expordExcel(tableThNames, fieldCns, list, fileName, response); + //构造excel的数据 + List list = archiveMasterService.selectByUnfile(archiveMasterVo); + ThreadExcelUtils utils = new ThreadExcelUtils(fileName, "", header, fileNames); + String result=utils.exportExcelToFilePath(response,utils.listConvert(list)); } diff --git a/src/main/java/com/emr/dao/Archive_MasterMapper.java b/src/main/java/com/emr/dao/Archive_MasterMapper.java index f72d9dcd..f9d086f3 100644 --- a/src/main/java/com/emr/dao/Archive_MasterMapper.java +++ b/src/main/java/com/emr/dao/Archive_MasterMapper.java @@ -35,6 +35,13 @@ public interface Archive_MasterMapper { */ Archive_Master selectById(String id); + /** + * 根据字段查询记录 + * @param archiveMaster + * @return + */ + List selByCol(Archive_Master archiveMaster); + /** * 根据可选字段查询住院相关记录 * @param record diff --git a/src/main/java/com/emr/entity/Archive_Master.java b/src/main/java/com/emr/entity/Archive_Master.java index 9d2b046d..a8bc1f11 100644 --- a/src/main/java/com/emr/entity/Archive_Master.java +++ b/src/main/java/com/emr/entity/Archive_Master.java @@ -77,6 +77,13 @@ public class Archive_Master { //2021-3-20 新增总分 private BigDecimal score; + //2021-5-13 新增签收 + private Integer isSign; + + private String signer; + + private String signTime; + public BigDecimal getScore() { return score; } @@ -356,4 +363,28 @@ public class Archive_Master { public void setBedNumber(String bedNumber) { this.bedNumber = bedNumber; } + + public Integer getIsSign() { + return isSign; + } + + public void setIsSign(Integer isSign) { + this.isSign = isSign; + } + + public String getSigner() { + return signer; + } + + public void setSigner(String signer) { + this.signer = signer == null ? null : signer.trim(); + } + + public String getSignTime() { + return signTime; + } + + public void setSignTime(String signTime) { + this.signTime = signTime == null ? null : signTime.trim(); + } } \ No newline at end of file diff --git a/src/main/java/com/emr/entity/Archive_Master_Vo.java b/src/main/java/com/emr/entity/Archive_Master_Vo.java index 33c18a9a..0ab2f8bf 100644 --- a/src/main/java/com/emr/entity/Archive_Master_Vo.java +++ b/src/main/java/com/emr/entity/Archive_Master_Vo.java @@ -121,10 +121,23 @@ public class Archive_Master_Vo { private String overdueDays; + //2021-3-20 新增总分 private String score; + //2021-2 缺陷数 private int numb; + //2021-5-13 新增签收 + private Integer isSign; + + private String signer; + + private String signTime; + + private String startSignDate; + + private String endSignDate; + public String getOverdueDays() { return overdueDays; } @@ -569,6 +582,46 @@ public class Archive_Master_Vo { public void setNumb(int numb) { this.numb = numb; } + + public Integer getIsSign() { + return isSign; + } + + public void setIsSign(Integer isSign) { + this.isSign = isSign; + } + + public String getSigner() { + return signer; + } + + public void setSigner(String signer) { + this.signer = signer == null ? null : signer.trim(); + } + + public String getSignTime() { + return signTime; + } + + public void setSignTime(String signTime) { + this.signTime = signTime == null ? null : signTime.trim(); + } + + public String getStartSignDate() { + return startSignDate; + } + + public void setStartSignDate(String startSignDate) { + this.startSignDate = startSignDate; + } + + public String getEndSignDate() { + return endSignDate; + } + + public void setEndSignDate(String endSignDate) { + this.endSignDate = endSignDate; + } } diff --git a/src/main/java/com/emr/service/Archive_MasterService.java b/src/main/java/com/emr/service/Archive_MasterService.java index fa7ca076..9a86501c 100644 --- a/src/main/java/com/emr/service/Archive_MasterService.java +++ b/src/main/java/com/emr/service/Archive_MasterService.java @@ -19,6 +19,12 @@ public interface Archive_MasterService { * @return */ Archive_Master selectById(String id); + /** + * 根据字段查询记录 + * @param archiveMaster + * @return + */ + List selByCol(Archive_Master archiveMaster); /** * 根据条件查找病案在院列表分页 * @param archiveMasterVo @@ -199,6 +205,14 @@ public interface Archive_MasterService { //封存日志 OffsetLimitPage selectByFollowinglog(Archive_Master_Vo record, Integer offset, Integer limit); + /** + * 封存日志 + * + * @param record + * @return + */ + List selectByFollowinglog(Archive_Master_Vo archiveMasterVo); + /** * 查询病案是否存在 * */ diff --git a/src/main/java/com/emr/service/Emr_Fault_DetailService.java b/src/main/java/com/emr/service/Emr_Fault_DetailService.java index 4f9a6ccf..aa22882b 100644 --- a/src/main/java/com/emr/service/Emr_Fault_DetailService.java +++ b/src/main/java/com/emr/service/Emr_Fault_DetailService.java @@ -98,6 +98,13 @@ public interface Emr_Fault_DetailService { OffsetLimitPage selectStorageByCol(Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit); + /** + * 根据ArchiveState in('已归档','已封存')等查询记录 + * @param emrFaultVo + * @return + */ + List selectStorageByCol(Emr_Fault_Vo emrFaultVo); + List getQualityControlList(Emr_Fault_Vo emrFaultVo);//获取质控缺陷评分列表 OffsetLimitPage getQualityControlList(Emr_Fault_Vo emrFaultVo, Integer offset, Integer limit); diff --git a/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java b/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java index 0f4a9596..1f750bdb 100644 --- a/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java +++ b/src/main/java/com/emr/service/ipml/Archive_MasterServiceImpl.java @@ -43,6 +43,11 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { return archiveMasterMapper.selectById(id); } + @Override + public List selByCol(Archive_Master archiveMaster) { + return archiveMasterMapper.selByCol(archiveMaster); + } + @Override public OffsetLimitPage selectByCol(Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit) { PageHelper.offsetPage(offset, limit); @@ -357,6 +362,11 @@ public class Archive_MasterServiceImpl implements Archive_MasterService { return new OffsetLimitPage((Page) list); } + @Override + public List selectByFollowinglog(Archive_Master_Vo archiveMasterVo) { + return archiveMasterMapper.selectByFollowinglog(archiveMasterVo); + } + @Override public List selectByObject(String patientId,String visitId) { return archiveMasterMapper.selectByObject(patientId,visitId); diff --git a/src/main/java/com/emr/service/ipml/Emr_Fault_DetailServiceImpl.java b/src/main/java/com/emr/service/ipml/Emr_Fault_DetailServiceImpl.java index 1763e22e..f1bc36da 100644 --- a/src/main/java/com/emr/service/ipml/Emr_Fault_DetailServiceImpl.java +++ b/src/main/java/com/emr/service/ipml/Emr_Fault_DetailServiceImpl.java @@ -204,6 +204,11 @@ public class Emr_Fault_DetailServiceImpl implements Emr_Fault_DetailService { return new OffsetLimitPage((Page) list); } + @Override + public List selectStorageByCol(Emr_Fault_Vo emrFaultVo) { + return emrFaultDetailMapper.selectStorageByCol(emrFaultVo); + } + @Override public List getQualityControlList(Emr_Fault_Vo emrFaultVo) { return emrFaultDetailMapper.getQualityControlList(emrFaultVo); diff --git a/src/main/java/com/emr/util/ThreadExcelUtils.java b/src/main/java/com/emr/util/ThreadExcelUtils.java new file mode 100644 index 00000000..68370524 --- /dev/null +++ b/src/main/java/com/emr/util/ThreadExcelUtils.java @@ -0,0 +1,406 @@ +package com.emr.util; + +import com.emr.entity.Emr_Fault_Vo; +import org.apache.commons.beanutils.PropertyUtilsBean; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFFont; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.hssf.util.HSSFColor; +import org.apache.poi.ss.usermodel.*; + +import java.beans.PropertyDescriptor; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.lang.reflect.InvocationTargetException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import org.apache.commons.beanutils.PropertyUtils; + +import javax.servlet.http.HttpServletResponse; + +/** + * 多线程多sheet导出数据 + */ +public class ThreadExcelUtils { + /** + * 定义每个 sheet 最多数量 + */ + public static final Integer EXCEL_MAX_CNT = 50000; + + private Workbook wb; + private String fileName; + private String filePath; + private String[] hearders; + private String[] fields; + + public Workbook getWb() { + return wb; + } + + public String getFileName() { + return fileName; + } + + public String getFilePath() { + return filePath; + } + + public String[] getHearders() { + return hearders; + } + + public String[] getFields() { + return fields; + } + + /** + * @param fileName + * 文件名称 + * @param filePath + * 文件路径 + * @param hearders + * 文件头 + * @param fields + * 字段属性 + */ + public ThreadExcelUtils(String fileName, String filePath, + String[] hearders, String[] fields) { + this.wb = new HSSFWorkbook(); + this.fileName = fileName; + this.filePath = filePath; + this.hearders = hearders; + this.fields = fields; + } + + public List> listConvert(List list) { + List> list_map = new ArrayList>(); // 定义List>数组
          // list为外部传进来的list集合 + if (CollectionUtils.isNotEmpty(list)) { + list.forEach(item ->{ + Map map = null; + try { + map = (Map) PropertyUtils.describe(item); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + list_map.add(map ); + + }); + } + return list_map; + } + public static void main(String[] args) throws Exception { + HttpServletResponse response = null; + // List> lists = new ArrayList>(); + List list = new ArrayList(); + // 造数据 + for (int i = 0; i < 10000; i++) { + Emr_Fault_Vo emrFaultVo=new Emr_Fault_Vo(); + emrFaultVo.setId(i); + emrFaultVo.setDeptName("xxxxxx"); + emrFaultVo.setCreater("xxxxxx"); + emrFaultVo.setUpdater("xxxxxxx"); + list.add(emrFaultVo); + } + + String[] header = { "id", "部门", "创建人","修改人" }; + String[] fileNames = { "id", "deptName", "creater","updater" }; + String filePath = "C:\\Users\\Administrator\\Desktop\\test\\excelDir"; + String filename = "测试表 " + getDate(new Date()) + ".xls"; + ThreadExcelUtils utils = new ThreadExcelUtils(filename, filePath, + header, fileNames); + System.out.println("开始执行导出......."); + long start = System.currentTimeMillis(); + utils.exportExcelToFilePath(response,utils.listConvert(list)); + long end = System.currentTimeMillis(); + System.out.println("耗时:" + (end - start) / 1000 + "秒"); + } + + /** + * @param list + * 数据 + */ + public String exportExcelToFilePath(HttpServletResponse response, List> list) + throws Exception { + /** + * 代码里面使用Content-Disposition来确保浏览器弹出下载对话框的时候。 + * response.addHeader("Content-Disposition","attachment");一定要确保没有做过关于禁止浏览器缓存的操作 + */ + /* response.setHeader("Cache-Control", "No-cache"); + response.flushBuffer(); */ + + String result="成功导出Excel!"; + int excelSize = EXCEL_MAX_CNT; // 每个Excel文件条数 + int totalCount = list.size(); // 查询结果总条数 + int pageCount = 0;// 总sheet页个数 + int numPage = totalCount % excelSize; // 是否整页数 + if (numPage > 0) + pageCount = totalCount / excelSize + 1; + else + pageCount = totalCount / excelSize; + // 创建线程池 多sheet多线程写入 线程数 为sheet页的 1/4 + Integer threadNumber = pageCount / 4; + if (threadNumber == 0) + threadNumber = 1; + ExecutorService threadPool = Executors.newFixedThreadPool(threadNumber); + // 创建栅栏 等待任务完成 + CountDownLatch countDownLatch = new CountDownLatch(pageCount); + // 循环遍历投递任务 + for (int i = 1; i <= pageCount; i++) { + ThraedExcel thraedExcel = new ThraedExcel(list, i, pageCount, + numPage, this); + thraedExcel.setCountDownLatch(countDownLatch); + threadPool.execute(thraedExcel); + } + countDownLatch.await(); + Workbook wb = getWb(); + OutputStream os = response.getOutputStream(); + //导出excel建议加上重置输出流,可以不加该代码,但是如果不加必须要保证输出流中不应该在存在其他数据,否则导出会有问题 + response.reset(); + //处理乱码 + fileName = new String(fileName.getBytes("gbk"), "iso-8859-1"); + //attachment为以附件方式下载 + response.setContentType("application/vnd.ms-excel"); + //代码里面使用Content-Disposition来确保浏览器弹出下载对话框的时候。 + response.setHeader("Content-disposition", "attachment;filename=" + fileName); + response.setBufferSize(1024); + /* File file = new File(filePath); + if (!file.exists()) {//文件夹不存在 + file.mkdirs();//创建目录 + }*/ + //FileOutputStream fout = new FileOutputStream(new File(file, fileName)); + try { + //wb.write(fout); + wb.write(os);//将excel中的数据写到输出流中,用于文件的输出 + os.close(); + } catch (IOException e) { + e.printStackTrace(); + result="导出Excel异常!"; + } + // System.out.println("文件写入完成"); + // 立即销毁线程池 + threadPool.shutdownNow(); + return result; + } + + public static String getDate(Date date) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat( + "yyyyMMddHHmmss"); + String format = simpleDateFormat.format(date); + return format; + } + + /** + * JavaBean转Map + * + * @param obj + * @return + */ + public static Map beanToMap(Object obj) { + Map params = new HashMap(0); + try { + PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean(); + PropertyDescriptor[] descriptors = propertyUtilsBean + .getPropertyDescriptors(obj); + int length = descriptors.length; + for (int i = 0; i < length; i++) { + String name = descriptors[i].getName(); + if (!StringUtils.equals(name, "class")) { + params.put(name, propertyUtilsBean.getNestedProperty(obj, + name)); + } + } + } catch (Exception e) { + System.err.println("bean 转Map出错"); + e.printStackTrace(); + } + return params; + } + + /*** + * 线程写入sheet + */ + private static class ThraedExcel implements Runnable { + + private List> list;// 数据 + private Integer sheetNumber;// 当前sheet页 + private Integer totalSheetCount;// 总数据 + private int numPage; // 是否整页数 + private Integer excelSize; + private ThreadExcelUtils threadExcelUtils; + // 栅栏对象 + private CountDownLatch countDownLatch; + + /** + * @param list + * 总数据 + * @param sheetNumber + * 当前sheet页 + * @param totalSheetCount + * 总sheet页 + * @param numPage + * 是否整数 + */ + public ThraedExcel(List> list, Integer sheetNumber, + Integer totalSheetCount, Integer numPage, + ThreadExcelUtils threadExcelUtils) { + this.list = list;// 总数据 + this.sheetNumber = sheetNumber;// 当前sheet页 + this.totalSheetCount = totalSheetCount;// 总sheet页 + this.numPage = numPage;// 是否整除 + this.excelSize = ThreadExcelUtils.EXCEL_MAX_CNT;// 没个sheet最大数量 + this.threadExcelUtils = threadExcelUtils;// 当前线程对象 + } + + public void setCountDownLatch(CountDownLatch countDownLatch) { + this.countDownLatch = countDownLatch; + } + + @Override + public void run() { + List> sheetList = null; + if (totalSheetCount > 1) { + if (numPage == 0) { + sheetList = list.subList((sheetNumber - 1) * excelSize, + excelSize * sheetNumber); + } else { + if (sheetNumber == totalSheetCount) { + sheetList = list.subList((sheetNumber - 1) * excelSize, + list.size()); + } else { + sheetList = list.subList((sheetNumber - 1) * excelSize, + excelSize * (sheetNumber)); + } + } + } else + sheetList = list; + // 开始写入数据 + createWorkBook(sheetList); + + if (this.countDownLatch != null) + this.countDownLatch.countDown(); + } + + /**水平居中、垂直居中 + * 字体:宋体 + * 字体大小:16号 + * 加粗 + *@paramworkbook + *@return + */ + public static CellStyle getStyle() { + HSSFWorkbook wb=new HSSFWorkbook(); + CellStyle cellstyle=wb.createCellStyle(); + HSSFCellStyle setBorder = wb.createCellStyle(); + setBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中 + setBorder.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中 + Font font=wb.createFont();//字体 + font.setFontName("宋体");//字体 + font.setFontHeightInPoints((short)16);//字号 + font.setColor((short) 15); + font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示 + cellstyle.setFont(font); + setBorder.setFont(font);//选择需要用到的字体格式; + return cellstyle; + + } + + /*** + * 写出数据 + */ + private void createWorkBook(List> sheetList) { + Sheet sheet = null; + Row row = null; + CellStyle cellStyle =null; + synchronized (ThreadExcelUtils.class) { + String fileName = threadExcelUtils.getFileName(); + Workbook wb = threadExcelUtils.getWb(); + sheet = wb.createSheet(fileName + "_" + this.sheetNumber); + row = sheet.createRow(0); + //row.setRowStyle(getStyle()); + cellStyle = wb.createCellStyle(); + //水平居中 + cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); + //垂直居中 + cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); + + //关键点 IndexedColors.AQUA.getIndex() 对应颜色 + //cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); + //cellStyle.setBottomBorderColor(IndexedColors.RED.getIndex()); + //cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND); + //Cell cell = row.createCell((short) 1); + // cell.setCellValue("A1"); + //cell.setCellStyle(cellStyle); + + HSSFFont font = (HSSFFont) wb.createFont();//创建字体对象 + //字体加粗 + font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + //字体颜色变红 + font.setColor(HSSFColor.RED.index); + //如果font中存在设置后的字体,并放置到cellStyle对象中,此时该单元格中就具有了样式字体 + cellStyle.setFont(font); + //row.setRowStyle(style); + } + + String[] header = threadExcelUtils.getHearders(); + String[] fields = threadExcelUtils.getFields(); + // 设置标题 + for (int i = 0; i < header.length; i++) { + // row.getCell(i).setCellStyle(style); + row.createCell(i).setCellValue(header[i]); + row.getCell(i).setCellStyle(cellStyle); + + + } + // 开始写入数据 + if (sheetList != null && sheetList.size() > 0) { + int dataLength = sheetList.size(); + for (int i = 0; i < dataLength; i++) { + if (i == 3 || i == 8 || i == 15) { + sheet.setColumnWidth(i, 20 * 256); + } else { + sheet.setColumnWidth(i, 15 * 256); + } + + Row row1 = sheet.createRow(i + 1); + Object obj = sheetList.get(i); + Map map = (obj instanceof Map) ? (Map) obj + : beanToMap(obj); + int length = fields.length; + for (int j = 0; j < length; j++) { + String key = fields[j]; + Object value = map.get(key); + if (value != null) { + // 不晓得 此处为啥有线程安全问题 + synchronized (ThreadExcelUtils.class) { + if (value instanceof Date) { + SimpleDateFormat sdf = new SimpleDateFormat( + "yyyy-MM-dd"); + String format = sdf.format(value); + row1.createCell(j).setCellValue(format); + } else { + try { + row1.createCell(j).setCellValue( + value.toString()); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/config/jdbc.properties b/src/main/resources/config/jdbc.properties index 0ed0dd40..0bb58fa0 100644 --- a/src/main/resources/config/jdbc.properties +++ b/src/main/resources/config/jdbc.properties @@ -1,8 +1,10 @@ +#SQLServerݿ jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc.url=jdbc:sqlserver://120.27.212.36:1433;databaseName=emr_recode_test #jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=emr_recode_test jdbc.username=sa jdbc.password=docus@702 + #hibernate config hibernate.dialect=org.hibernate.dialect.SQLServerDialect hibernate.show_sql=true @@ -12,6 +14,7 @@ hibernate.hbm2ddl.auto=update hibernate.current_session_context_class=thread hibernate.jdbc.batch_size=50 hibernate.enable_lazy_load_no_trans=true + #ͼƬַ pictureUrl=D:\\test\\uploadImage #ԶPDFַD:\tesst\autoPdf @@ -26,9 +29,11 @@ expired=7 deathExpired=7 #ʱգÿ4㴥0 0 4 * * ?:ԶPDFַautoPdfUrlPDFļڻбַ fileDelay=0 0 4 * * ? -#ʱϢ :ÿ3㴥0 0 3 * * ?,ÿ1ִһ0/1 * * * * ? +#ʱϢ :ÿ3㴥0 0 3 * * ?,ÿ1ִһ0/1 * * * * ? [] [] [Сʱ] [] [] [] [] fixedDelay=0 0 3 * * ? + +#Ȩϵͳ˿8080 #powerUrl=http://127.0.0.1:8080/power/font/getMenusByUserIdAndSysFlag #POWER_URLHEAD=http://127.0.0.1:8080/power #POWER_JSP=http://127.0.0.1:8080/power @@ -37,6 +42,7 @@ fixedDelay=0 0 3 * * ? #HomepageMethod=CheckData #powerGetUserList=http://127.0.0.1:8080/power/font/getUserList?userName=admin +#Ȩϵͳ˿9999 powerUrl=http://127.0.0.1:9999/power/font/getMenusByUserIdAndSysFlag POWER_URLHEAD=http://127.0.0.1:9999/power POWER_JSP=http://127.0.0.1:9999/power @@ -45,6 +51,10 @@ HomepageDictionary=http://127.0.0.1:9999/WholeCheckInterface/services/HomepageDi HomepageMethod=CheckData powerGetUserList=http://127.0.0.1:9999/power/font/getUserList?userName=admin +#ӿ +EMRQualityControl=http://10.6.0.170:57772/csp/healthshare/jhipnew/JHIPLIB.SOAP.BS.XmlService.cls?CfgItem=JH5003MRAtoEMR +EMRQualityControlParamName=Message + allAddortIds = 00000000 pdfWater = \u5e7f\u4e1c\u533b\u79d1\u5927\u5b66\u9644\u5c5e\u533b\u9662 @@ -56,3 +66,7 @@ pdfWater = \u5e7f\u4e1c\u533b\u79d1\u5927\u5b66\u9644\u5c5e\u533b\u9662 + + + + diff --git a/src/main/resources/mapper/Archive_MasterMapper.xml b/src/main/resources/mapper/Archive_MasterMapper.xml index 2bb8bcd4..e5ec3450 100644 --- a/src/main/resources/mapper/Archive_MasterMapper.xml +++ b/src/main/resources/mapper/Archive_MasterMapper.xml @@ -40,6 +40,9 @@ + + + @@ -87,12 +90,16 @@ + + + id, patient_id, inp_no, visit_id, name, sex, dept_name, discharge_date_time, ArchiveState, admission_date_time, dept_admission_to, check_doctor, check_datetime, checked_doctor, transfer_dept, checked_datetime, LockInfo, DOCTOR_IN_CHARGE, ID_NO, DISCHARGE_DISPOSITION, dept_code_lend,isscaned,is_scanning, - cmt_doctor,cmt_nurse,doctor_name,nurse_name,cmt_doctor_date,cmt_nurse_date,emr_doctor_cmt,emr_nure_cmt,death_flag,bed_number + cmt_doctor,cmt_nurse,doctor_name,nurse_name,cmt_doctor_date,cmt_nurse_date,emr_doctor_cmt,emr_nure_cmt,death_flag, + bed_number,is_sign,signer,sign_time + + \ No newline at end of file diff --git a/src/main/resources/mapper/Emr_LogMapper.xml b/src/main/resources/mapper/Emr_LogMapper.xml index 75c6f476..1290e336 100644 --- a/src/main/resources/mapper/Emr_LogMapper.xml +++ b/src/main/resources/mapper/Emr_LogMapper.xml @@ -172,7 +172,7 @@ ) f on l.log_title=f.archive_detail_id where 1=1 - + and m.inp_no like '%'+#{inpNo,jdbcType=NCHAR}+'%' diff --git a/src/main/webapp/WEB-INF/views/beHospitaledDir/beHospList.jsp b/src/main/webapp/WEB-INF/views/beHospitaledDir/beHospList.jsp index 971d9ca4..852e774a 100644 --- a/src/main/webapp/WEB-INF/views/beHospitaledDir/beHospList.jsp +++ b/src/main/webapp/WEB-INF/views/beHospitaledDir/beHospList.jsp @@ -2706,7 +2706,7 @@ data: {cmtNurse: nursFlag, id: id, lockinfo: lockinfo, content: content, isscaned: isScanedChk2}, success: function (result) { $("#nursModal").modal('hide'); - if (result == "成功") { + if (result.indexOf("成功")) { $("#table").bootstrapTable("refresh"); toastr.success("归档护士提交成功!"); } else { diff --git a/src/main/webapp/WEB-INF/views/commitDir/commitList.jsp b/src/main/webapp/WEB-INF/views/commitDir/commitList.jsp index 5b01d4e2..c7f60221 100644 --- a/src/main/webapp/WEB-INF/views/commitDir/commitList.jsp +++ b/src/main/webapp/WEB-INF/views/commitDir/commitList.jsp @@ -3098,8 +3098,6 @@ deptName = $("#deptName").val().toString(); } } - //console.log(deptName); - var temp = { limit: limit, //页面大小 @@ -4332,13 +4330,9 @@ //导出excel功能 $("#excelBtn").click(function () { - // var id = "" + $("#id").val(); var inpNo = "" + $("#inpNo").val(); var visitId = "" + $("#visitId").val(); var name = "" + $("#name").val(); - //var idNo = "" + $("#idNo").val(); - //var state = "" + $("#state").val(); - // var archivestate = "" + $("#archivestate").val(); var url = window.location.href; var deptName = url.substring(url.lastIndexOf('&') + 1).replace("depts=", ""); var len = ($("#deptName").val()).length; @@ -4352,11 +4346,11 @@ var startDateTo = $("#startDateTo").val(); var endDateTo = $("#endDateTo").val(); var bedNumber = $("#bedNumber").val(); + var idNo= $("#idNo").val(); window.location.href = "${path}/commCtr/exportExcel?inpNo=" + inpNo + "&visitId=" + visitId + - "&name=" + name + "&deptName=" + deptName + "&archivestate=" + archivestate + "&name=" + name + "&deptName=" + deptName + "&archivestate=" + archivestate+ "&idNo=" + idNo + "&startDateTo=" + startDateTo + "&endDateTo=" + endDateTo + "&bedNumber=" + bedNumber; - ; }); diff --git a/src/main/webapp/WEB-INF/views/faultDir/faultList.jsp b/src/main/webapp/WEB-INF/views/faultDir/faultList.jsp index 99730d17..53843529 100644 --- a/src/main/webapp/WEB-INF/views/faultDir/faultList.jsp +++ b/src/main/webapp/WEB-INF/views/faultDir/faultList.jsp @@ -12,6 +12,12 @@ <%@include file="../../jspf/comm.jspf" %> + + +