diff --git a/src/main/java/com/emr/controller/beHospitaledController.java b/src/main/java/com/emr/controller/beHospitaledController.java index d0cf992..6e42f1c 100644 --- a/src/main/java/com/emr/controller/beHospitaledController.java +++ b/src/main/java/com/emr/controller/beHospitaledController.java @@ -7,7 +7,10 @@ package com.emr.controller; import com.emr.dao.ArchiveFlowRoleMapper; -import com.emr.entity.*; +import com.emr.entity.ArchiveFlowRole; +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.service.ipml.ArchiveFlowInfoService; import com.emr.util.ExceptionPrintUtil; diff --git a/src/main/java/com/emr/quart/Task1.java b/src/main/java/com/emr/quart/Task1.java index cbbc663..21365ab 100644 --- a/src/main/java/com/emr/quart/Task1.java +++ b/src/main/java/com/emr/quart/Task1.java @@ -70,6 +70,7 @@ public class Task1 { recordSearch.setSurplus(emrOvertimeSet.getSurplusDays()); //查询超期记录 List list = recordMapper.selectUnCountGroupDept(recordSearch); + log.info(list); if(!CollectionUtils.isEmpty(list)){ //定义添加记录集合 List remindList = new ArrayList<>(); @@ -79,6 +80,8 @@ public class Task1 { List cancleDeptList = remindcancleDeptMapper.selectAll(); //查询科室取消单独开启的用户 List deptUsers = remindDeptUserMapper.selectAll(); + //定义病案室待审核数量 + int unRecordRoomCount = 0; for(SubmitRecord vo : list){ //获取科室编号 String deptCode = vo.getDeptName(); @@ -101,7 +104,11 @@ public class Task1 { selectRemindOtherRoleInfo(remindList, vo, userList); } } + //统计病案室待审核数量 + unRecordRoomCount += vo.getUnRecordRoomCount(); } + //添加提醒病案室用户信息 + selectRemindRecordRoomInfo(remindList, userListTemp, cancleDeptList, deptUsers, unRecordRoomCount); log.info(remindList); //处理添加数据业务 insertData(list, remindList); @@ -170,7 +177,7 @@ public class Task1 { } /** - * 通知除了医生其他审核角色 + * 通知除了医生、病案室剩余其他审核角色 * @param remindList 返回的list集合 * @param vo 对应科室各个审核角色超期份数 * @param userList 用户集合 @@ -187,8 +194,6 @@ public class Task1 { remindList.addAll(remindDoctorCheck(vo, userList, 8, "unNurseCheckCount")); //通知护士长 remindList.addAll(remindDoctorCheck(vo, userList, 7, "unHeadNurseCount")); - //通知病案室 - remindList.addAll(remindDoctorCheck(vo, userList, 3, "unRecordRoomCount")); } /** @@ -215,7 +220,42 @@ public class Task1 { } /** - * 通知除了主管医生其余审核角色 + *通知病案室 + * @param remindList + * @param userListTemp + * @param cancleDeptList + * @param deptUsers + * @param unRecordRoomCount + * @throws Exception + */ + private void selectRemindRecordRoomInfo(List remindList, List userListTemp, List cancleDeptList, List deptUsers, int unRecordRoomCount) throws Exception { + if(unRecordRoomCount > 0){ + //定义需要通知的集合 + List recordRoomList = new ArrayList<>(); + //添加病案室提醒通知 deptCode = 507 + String recordRoomDeptCode = "507"; + //根据科室取消提醒集合判断是否需要提醒 + boolean recordRoomRemindFlag = judgeRemindFlag(recordRoomDeptCode, cancleDeptList); + if(!recordRoomRemindFlag){ + //通知取消通知的该科室下需要通知的用户 + recordRoomList = selectUserListByDeptUsers(userListTemp,deptUsers,recordRoomDeptCode); + }else{ + //通知该科室所有用户 + recordRoomList = userListTemp; + } + if(!CollectionUtils.isEmpty(recordRoomList)){ + SubmitRecord recordRoomVo = new SubmitRecord(); + recordRoomVo.setUnRecordRoomCount(unRecordRoomCount); + recordRoomVo.setDeptName(recordRoomDeptCode); + recordRoomVo.setDeptNameCn("病案室"); + //通知病案室 + remindList.addAll(remindDoctorCheck(recordRoomVo, recordRoomList, 3, "unRecordRoomCount")); + } + } + } + + /** + * 通知除了主管医生、病案室其余审核角色 * @param vo * @param userList * @return @@ -227,8 +267,15 @@ public class Task1 { field.setAccessible(true); Integer unCheckCount = (Integer) field.get(vo); if(unCheckCount > 0){ + List roleUserList = new ArrayList<>(); //获取该角色的用户集合 - List roleUserList = selectUserByDeptCodeAndRoleId(vo.getDeptName(), roleId, userList); + if(roleId != 3) { + //非病案室人员 + roleUserList = selectUserByDeptCodeAndRoleId(vo.getDeptName(), roleId, userList); + }else{ + //病案室人员 + roleUserList = selectUserByDeptCodeAndRoleId("507",roleId, userList); + } if(!CollectionUtils.isEmpty(roleUserList)){ for(User user : roleUserList) { //根据用户名获取用户 @@ -253,6 +300,7 @@ public class Task1 { if(vo.getUnDoctorSubmitCount() > 0){ String deptCode = vo.getDeptName(); recordSearch.setDeptName(deptCode); + recordSearch.setInfoId(2); //查询超期记录 List masterVoList = recordMapper.selectRecordGroupDeptAndRole(recordSearch); if(!CollectionUtils.isEmpty(masterVoList)){ @@ -295,7 +343,7 @@ public class Task1 { //设置用户名 obj.setUserName(currentUser.getUserName()); String name = ""; - if(null != currentUser){ + if(null != currentUser.getUserName()){ name = currentUser.getName(); obj.setRoleId(currentUser.getRoleId()); obj.setRoleName(currentUser.getRoleName()); @@ -406,6 +454,7 @@ public class Task1 { return list; } + /** * 根据科室取消提醒集合判断是否需要提醒 * @param deptCode diff --git a/src/main/java/com/emr/service/ipml/EmrOvertimeSetService.java b/src/main/java/com/emr/service/ipml/EmrOvertimeSetService.java index d6570db..09b63f5 100644 --- a/src/main/java/com/emr/service/ipml/EmrOvertimeSetService.java +++ b/src/main/java/com/emr/service/ipml/EmrOvertimeSetService.java @@ -117,9 +117,9 @@ public class EmrOvertimeSetService { "{'roleId':5,roleName:'医生质控员'}," + "{'roleId':6,roleName:'科主任'}," + "{'roleId':2,roleName:'护士'}," + - "{'roleId':3,roleName:'护士质控员'}," + + "{'roleId':8,roleName:'护士质控员'}," + "{'roleId':7,roleName:'护士长'}," + - "{'roleId':8,roleName:'病案室人员'}" + + "{'roleId':3,roleName:'病案室人员'}" + "]"; List roleList = JSON.parseArray(roleListJson, User.class); //设定用户id从20000开始 diff --git a/src/main/resources/mapper/RecordMapper.xml b/src/main/resources/mapper/RecordMapper.xml index b0741f6..2efee84 100644 --- a/src/main/resources/mapper/RecordMapper.xml +++ b/src/main/resources/mapper/RecordMapper.xml @@ -427,11 +427,17 @@ archive_master.DOCTOR_IN_CHARGE, archive_master.visit_id, archive_master.discharge_date_time, - v_overtime_record.overtime_days, + + + v_overtime_record.overtime_days, + archive_masterTemp.overTimeCounts from archive_master - inner join v_overtime_record - on archive_master.id = v_overtime_record.id + + + inner join v_overtime_record + on archive_master.id = v_overtime_record.id + inner join (select DOCTOR_IN_CHARGE,COUNT(DOCTOR_IN_CHARGE) overTimeCounts from archive_master