From 86576c789c81bb7b238022ef8346530bef662b31 Mon Sep 17 00:00:00 2001 From: "jian.wang" <824612544@qq.com> Date: Mon, 29 Jul 2024 15:23:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E5=B9=BF=E6=80=BB?= =?UTF-8?q?=E8=A1=80=E9=80=8F=E9=9C=80=E6=B1=82=20BUG=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commomSearch/CommomSearchController.java | 65 +++++++ .../emrApprove/ApproveController.java | 4 +- src/main/java/com/emr/dao/CommomMapper.java | 11 ++ .../emr/entity/approve/Emr_Apply_Approve.java | 10 ++ .../ImportExcel/ImportExcelJudgeMethod.java | 10 +- .../service/ImportExcel/ImportExcelUtil.java | 166 +++++++++++++++++- .../com/emr/vo/commomSearch/CommomVo.java | 8 + src/main/resources/mapper/CommomMapper.xml | 55 ++++++ .../commomSearch/commomListqf.jsp | 8 +- src/main/webapp/index.jsp | 2 +- .../recordManage/commomSearch/commomListqf.js | 31 ++-- .../commomSearch/showRecordIframeBloodFont.js | 53 +++--- .../static/js/template/借阅申请模板.xls | Bin 18944 -> 0 bytes src/main/webapp/static/pdfjs/build/pdf.js | 22 +++ 14 files changed, 396 insertions(+), 49 deletions(-) delete mode 100644 src/main/webapp/static/js/template/借阅申请模板.xls diff --git a/src/main/java/com/emr/controller/commomSearch/CommomSearchController.java b/src/main/java/com/emr/controller/commomSearch/CommomSearchController.java index ea8bc5d..bac59d7 100644 --- a/src/main/java/com/emr/controller/commomSearch/CommomSearchController.java +++ b/src/main/java/com/emr/controller/commomSearch/CommomSearchController.java @@ -27,6 +27,8 @@ import com.emr.vo.EmrPrintOrDownLoadInfo.EmrPrintOrDownLoadInfoVo; import com.emr.vo.FontVo.ScanAssortVo; import com.emr.vo.browseRecords; import com.emr.vo.commomSearch.*; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.util.CollectionUtils; @@ -47,6 +49,7 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.stream.Collectors; /** * @ProjectName:CommomSearchController @@ -128,6 +131,68 @@ public class CommomSearchController { return "recordManage/commomSearch/commomListqf"; } + @RequiresPermissions("/commom/imgStatisticsList") + @OptionalLog(module = "查看", methods = "常用查询页面") + @RequestMapping("imgStatisticsList") + public String imgStatisticsList(Model model, HttpServletRequest request) { + return "recordManage/commomSearch/imgStatisticsList"; + } + + /** + * @Description:根据期数统计 条数 图像数量 + * @param page + * @param limit + * @param commomVo + * @return + */ + @RequestMapping("queryImgStatistics") + @ResponseBody + public String queryImgStatistics(Integer page, Integer limit,CommomVo commomVo){ + if(null != page && null != limit){ + PageHelper.startPage(page, limit); + } + try{ + double totalImgSum = 0; + double totalPeriodsSum = 0; + //查询期数对应的图像数量 + List> dataImgMap = commomMapper.queryImgStatistics(commomVo); + //查询期数对应的条数 + List> dataCountMap = commomMapper.queryPeriodsStatistics(commomVo); + + //合并 + for(Map imgMap : dataImgMap){ + for(Map countMap : dataCountMap){ + if(imgMap.get("periods").equals(countMap.get("periods"))){ + imgMap.put("periodsNum",countMap.get("periodsNum")); + break; + } + } + } + //计算图像数量总和 + if(!CollectionUtils.isEmpty(dataImgMap)){ + for(Map map : dataImgMap){ + double imgNum = ObjectUtils.isEmpty(map.get("imgNum")) ? 0 : Double.parseDouble(map.get("imgNum").toString()); + double periodsNum = ObjectUtils.isEmpty(map.get("periodsNum")) ? 0 : Double.parseDouble(map.get("periodsNum").toString()); + + totalImgSum += imgNum; + totalPeriodsSum += periodsNum; + } + } + Map totalMap = new HashMap<>(); + totalMap.put("periods",0); + totalMap.put("imgNum",totalImgSum); + totalMap.put("periodsNum",totalPeriodsSum); + dataImgMap.add(totalMap); + + PageInfo pageInfo = new PageInfo<>(dataImgMap); + return JSON.toJSONString(pageInfo); + }catch (Exception e){ + ExceptionPrintUtil.printException(e); + e.printStackTrace(); + return null; + } + } + /** * @description: 加载是否初始化标识 * @params: Initialization diff --git a/src/main/java/com/emr/controller/emrApprove/ApproveController.java b/src/main/java/com/emr/controller/emrApprove/ApproveController.java index af7d1a7..7ae0470 100644 --- a/src/main/java/com/emr/controller/emrApprove/ApproveController.java +++ b/src/main/java/com/emr/controller/emrApprove/ApproveController.java @@ -1032,9 +1032,9 @@ public class ApproveController { String applyType = request.getParameter("applyType"); String applyReason = request.getParameter("applyReason"); //属性名 - String[] fieldNames = {"inpatientNo","name","admissTimes"}; + String[] fieldNames = {"inpatientNo","name","admissTimes","disDate","bornDate"}; //判断集中类中的方法名 - String[] judgeMethods = {"judgeInpatientNo1","judgeName","judgeAdmissTimes"}; + String[] judgeMethods = {"judgeInpatientNo1","judgeName","judgeAdmissTimes",null,null}; Emr_Apply_Approve applyApprove = new Emr_Apply_Approve(); SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Power_User user = (Power_User)request.getSession().getAttribute("CURRENT_USER"); diff --git a/src/main/java/com/emr/dao/CommomMapper.java b/src/main/java/com/emr/dao/CommomMapper.java index 3a39819..d258fcd 100644 --- a/src/main/java/com/emr/dao/CommomMapper.java +++ b/src/main/java/com/emr/dao/CommomMapper.java @@ -29,6 +29,13 @@ public interface CommomMapper { List selectPatientIdByAdmissTimesAndInpatientNoAndName( @Param("admissTimes") Short admissTimes,@Param("inpatientNo") String inpatientNo, @Param("name")String name,@Param("startTime2")String startTime2,@Param("endTime2")String endTime2); + + /** + * 根据 姓名、住院次数、病案号、出院日期、出生日期 查询patientId + * */ + List selectRecordInfo( + @Param("admissTimes") Short admissTimes,@Param("inpatientNo") String inpatientNo, + @Param("name")String name,@Param("disDate")String disDate,@Param("bornDate")String bornDate); /** * 根据patientId查询病案分类个数 * */ @@ -153,4 +160,8 @@ public interface CommomMapper { CommomVo getCommomTableList(@Param("inpatientNo") String inpatientNo, @Param("disDate") String disDate); Map queryTableConfig(String dataSource); + + List> queryImgStatistics(CommomVo commomVo); + + List> queryPeriodsStatistics(CommomVo commomVo); } \ No newline at end of file diff --git a/src/main/java/com/emr/entity/approve/Emr_Apply_Approve.java b/src/main/java/com/emr/entity/approve/Emr_Apply_Approve.java index d2d45f9..a13377b 100644 --- a/src/main/java/com/emr/entity/approve/Emr_Apply_Approve.java +++ b/src/main/java/com/emr/entity/approve/Emr_Apply_Approve.java @@ -65,6 +65,16 @@ public class Emr_Apply_Approve { private String deptName; + private Date bornDate; + + public Date getBornDate() { + return bornDate; + } + + public void setBornDate(Date bornDate) { + this.bornDate = bornDate; + } + public String getDeptName() { return deptName; } diff --git a/src/main/java/com/emr/service/ImportExcel/ImportExcelJudgeMethod.java b/src/main/java/com/emr/service/ImportExcel/ImportExcelJudgeMethod.java index 3d1b97d..6f71999 100644 --- a/src/main/java/com/emr/service/ImportExcel/ImportExcelJudgeMethod.java +++ b/src/main/java/com/emr/service/ImportExcel/ImportExcelJudgeMethod.java @@ -4,6 +4,7 @@ import com.emr.dao.CommomMapper; import com.emr.dao.ExportTaskDetailsMapper; import com.emr.dao.ExportTaskMapper; import com.emr.dao.approve.Emr_Apply_ApproveMapper; +import com.emr.dao.bloodPurification.BloodPurificationMapper; import com.emr.entity.ExportTask; import com.emr.entity.ExportTaskDetails; import com.emr.entity.Power_User; @@ -53,12 +54,12 @@ public class ImportExcelJudgeMethod { private CommomMapper commomMapper; @Autowired private Emr_Apply_ApproveMapper applyApproveMapper; - @Autowired private ExportTaskMapper exportTaskMapper; - @Autowired private ExportTaskDetailsMapper exportTaskDetailsMapper; + @Autowired + private BloodPurificationMapper bloodPurificationMapper; /****************************************导入公共判断******************************************************/ /** @@ -149,7 +150,10 @@ public class ImportExcelJudgeMethod { /****************************************自定义验证记录合法******************************************************/ public String judgeRecord(String fieldName, String value, Field f, Object object, String head)throws Exception{ Emr_Apply_Approve applyApprove = (Emr_Apply_Approve)object; - List patientIdList = commomMapper.selectPatientIdByAdmissTimesAndInpatientNoAndName(applyApprove.getAdmissTimes(), applyApprove.getInpatientNo(), applyApprove.getName(),null,null); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String disDate = ObjectUtils.isEmpty(applyApprove.getDisDate()) ? null : dateFormat.format(applyApprove.getDisDate()); + String bornDate = ObjectUtils.isEmpty(applyApprove.getBornDate()) ? null : dateFormat.format(applyApprove.getBornDate()); + List patientIdList = commomMapper.selectRecordInfo(applyApprove.getAdmissTimes(), applyApprove.getInpatientNo(), applyApprove.getName(),disDate, bornDate); if(null != patientIdList && !patientIdList.isEmpty()){ if(patientIdList.size() == 1){ HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); diff --git a/src/main/java/com/emr/service/ImportExcel/ImportExcelUtil.java b/src/main/java/com/emr/service/ImportExcel/ImportExcelUtil.java index bcf10b2..b7eac86 100644 --- a/src/main/java/com/emr/service/ImportExcel/ImportExcelUtil.java +++ b/src/main/java/com/emr/service/ImportExcel/ImportExcelUtil.java @@ -6,6 +6,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.*; +import org.springframework.util.ObjectUtils; import org.springframework.web.context.ContextLoader; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.multipart.MultipartFile; @@ -14,6 +15,8 @@ import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; /** @@ -254,6 +257,163 @@ public class ImportExcelUtil { excelEntity.setWorkBookKey(workBookKey); return excelEntity; } + + public static ImportExcelEntity fileImportByBloodPurification(MultipartFile multipartFile, String[] fieldNames, String[] judgeMethods, String jedgeMethod) { + Workbook workbook = null; + int successCount = 0; + int wrongCount = 0; + String workBookKey = ""; + //正确行数下角标 + List wrongRowIndex = new ArrayList<>(); + try { + /*把文件流copy读取到文件中*/ + workbook = WorkbookFactory.create(multipartFile.getInputStream()); + /*遍历sheet页*/ + for (int i = 0; i < workbook.getNumberOfSheets(); i++) { + Sheet sheet = workbook.getSheetAt(i); + if (sheet == null) { + continue; + } + //获取表头行 + //Row head = sheet.getRow(0); + //处理多级表头 + //Map headerMap = handleRow(sheet); + String[] head = {"序号","检查日期","患者姓名","透析日期","记录填写不完整","医嘱执行签名不规范","医护未签名","未做宣教","宣教填写不完整体","护患未签名","医生未签名","患者家属关系缺项","通路名称不规范","其他","责任护士","整改日期","整改签名","备注"}; + + List list = new ArrayList<>(); + for (int j = 4; j < sheet.getPhysicalNumberOfRows(); j++) { + Row row = sheet.getRow(j); + boolean flag = isRowEmpty(row); + if (!flag) { + if (row.getPhysicalNumberOfCells() != 0) { + StringBuilder wrongStr = new StringBuilder(); + for (int k = 0; k < fieldNames.length; k++) { + //对象赋值后返回错误对象 + wrongStr.append(getValueByField(object, fieldNames[k], getCellValue(row.getCell(k)), head[k], null)); + } + //有错误信息在行尾创建cell,并标红提示文字 + if (StringUtils.isBlank(wrongStr)) { + Constructor constructor = ObjectClass.getDeclaredConstructor(); + Object obj = (Object) constructor.newInstance(); + //判断是否有自定义条件 + if (StringUtils.isNotBlank(jedgeMethod)) { + //判断是否有报错信息,有报错信息添加到报错信息 + String valueByField = judgeMethod(jedgeMethod); + if (StringUtils.isNotBlank(valueByField)) { + wrongStr.append(valueByField); + } else { + successCount++; + wrongRowIndex.add(j); + //复制 + copy(object, obj); + list.add(obj); + } + } else { + successCount++; + wrongRowIndex.add(j); + //复制 + copy(object, obj); + list.add(obj); + } + } + if (StringUtils.isNotBlank(wrongStr)) { + //设置错误信息字体为红色加粗 + Font font = workbook.createFont(); + font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + font.setColor(HSSFColor.RED.index); + CellStyle cellStyle = workbook.createCellStyle(); + cellStyle.setFont(font); + Cell cell = row.createCell(fieldNames.length); + cell.setCellStyle(cellStyle); + cell.setCellType(HSSFCell.CELL_TYPE_STRING); + wrongStr = new StringBuilder(wrongStr.substring(0, wrongStr.length() - 1)); + cell.setCellValue(wrongStr.toString()); + wrongCount++; + } + } + } + } + //批量新增成功记录 + SimpleInsert(list); + //删除正确行 + if (!wrongRowIndex.isEmpty()) { + //定义删除次数,对应后方下角标都要减去删除次数 + int deleteCount = 0; + //递归删除 + removeSheet(sheet, deleteCount, wrongRowIndex); + } + } + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(); + } + //错误excel加入缓存 + if (wrongCount != 0) { + workBookKey = UUIDUtils.getUUID(); + workBookMap.put(workBookKey, workbook); + } + ImportExcelEntity excelEntity = new ImportExcelEntity(); + excelEntity.setSuccessCount(successCount); + excelEntity.setWrongCount(wrongCount); + excelEntity.setWorkBookKey(workBookKey); + return excelEntity; + } + + private static Map handleRow(Sheet sheet) { + // 创建一个Map来存储表头信息 + Map headerMap = new HashMap<>(); + //读取真实行数 + int physicalNumberOfRows = readExcelValueRows(sheet); + for (int i = 0; i <= physicalNumberOfRows - 1; i++) { + List fieldNames = new ArrayList<>(); + // 获取第表头 + Row headerRow = sheet.getRow(i); + int physicalNumberOfCells = headerRow.getPhysicalNumberOfCells(); + for (int j = 0; j < physicalNumberOfCells; j++) { + // 获取表头 + Cell cell = headerRow.getCell(j); + // 获取表头值 + String value = getCellValue(cell); + if(!ObjectUtils.isEmpty(value)){ + fieldNames.add(value); + } + } + // 存储表头信息 + headerMap.put("head" + i, fieldNames); + } + return headerMap; + } + + /** + * 用来得到真实行数 + * @param sheet 需要读取的Excel表格(excel文件的工作簿的名称) + * @return + * + */ + public static int readExcelValueRows(Sheet sheet) { + int realRow = 0;// 返回的真实行数 + for (int i = 1; i <= sheet.getLastRowNum(); i++) { + //i从1开始,不判断第一行标题行 + Row row = sheet.getRow(i); + if (row == null){ + continue; + } + for (Cell cell : row) { + if (cell == null){ + continue; + } + String value = getCellValue(cell); + if (value == null || "".equals(value)){ + continue; + } else{ + realRow++; + break; + } + } + } + return realRow; + } + //批量新增成功数据方法 private static int SimpleInsert(List list)throws Exception{ if(null != list && !list.isEmpty()){ @@ -348,11 +508,15 @@ public class ImportExcelUtil { String typeName = filedType.getName(); if("java.lang.Integer".equals(typeName)){ f.set(object,Integer.valueOf(value)); - }if("java.lang.Short".equals(typeName)){ + }else if("java.lang.Short".equals(typeName)){ f.set(object,Short.valueOf(value)); + }else if("java.util.Date".equals(typeName)){ + f.set(object,new SimpleDateFormat("yyyy-MM-dd").parse(value)); }else{ f.set(object,value); } + }else{ + f.set(object,value); } } break; diff --git a/src/main/java/com/emr/vo/commomSearch/CommomVo.java b/src/main/java/com/emr/vo/commomSearch/CommomVo.java index 262468e..f6a794b 100644 --- a/src/main/java/com/emr/vo/commomSearch/CommomVo.java +++ b/src/main/java/com/emr/vo/commomSearch/CommomVo.java @@ -467,8 +467,16 @@ public class CommomVo { private String radiotherapyNo; + private String periods; private String dataSource; + public String getPeriods() { + return periods; + } + + public void setPeriods(String periods) { + this.periods = periods; + } public String getRadiotherapyNo() { return radiotherapyNo; diff --git a/src/main/resources/mapper/CommomMapper.xml b/src/main/resources/mapper/CommomMapper.xml index ea39e8c..25817c4 100644 --- a/src/main/resources/mapper/CommomMapper.xml +++ b/src/main/resources/mapper/CommomMapper.xml @@ -81,6 +81,29 @@ AND dis_date between #{startTime2} + ' 00:00:00' and #{endTime2} + ' 23:59:59' + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/recordManage/commomSearch/commomListqf.jsp b/src/main/webapp/WEB-INF/views/recordManage/commomSearch/commomListqf.jsp index 36496e9..b93a5f2 100644 --- a/src/main/webapp/WEB-INF/views/recordManage/commomSearch/commomListqf.jsp +++ b/src/main/webapp/WEB-INF/views/recordManage/commomSearch/commomListqf.jsp @@ -27,13 +27,13 @@ overflow-y:scroll; }*/ .labelDiv { - padding-top: 2%; + padding: 1%; padding-right: 0; text-align: right; } .radioDiv { - padding-top: 2%; + padding: 1%; } /*搜索区域*/ @@ -176,7 +176,7 @@
- 血透查询 + 常用查询
@@ -620,7 +620,7 @@
-
diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp index 07f7db5..72edc69 100644 --- a/src/main/webapp/index.jsp +++ b/src/main/webapp/index.jsp @@ -104,7 +104,7 @@