diff --git a/src/main/java/com/emr/controller/OverTimeSetController.java b/src/main/java/com/emr/controller/OverTimeSetController.java index f5e34e4..577005b 100644 --- a/src/main/java/com/emr/controller/OverTimeSetController.java +++ b/src/main/java/com/emr/controller/OverTimeSetController.java @@ -1,8 +1,8 @@ package com.emr.controller; -import com.emr.dao.EmrOvertimeSetMapper; +import com.alibaba.fastjson.JSON; +import com.emr.entity.ArchiveRemindDeptUser; import com.emr.entity.EmrOvertimeSet; -import com.emr.entity.Emr_Dictionary; import com.emr.service.ipml.EmrOvertimeSetService; import com.emr.util.ExceptionPrintUtil; import com.emr.util.Msg; @@ -11,6 +11,7 @@ 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.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; @@ -87,4 +88,29 @@ public class OverTimeSetController { return null; } } + + /** + * 保存取消提醒科室集合 + * @return + */ + @RequestMapping(value="updateRemindCancleSet",method = RequestMethod.POST) + @ResponseBody + public Msg updateRemindCancleSet(String deptIds) throws Exception{ + overtimeSetService.updateRemindCancleSet(deptIds); + return Msg.success(); + } + + /** + * 保存取消提醒科室单独提醒个别用户集合 + * @return + */ + @RequestMapping(value="updateRemindDeptUserSet",method = RequestMethod.POST) + @ResponseBody + public Msg updateRemindDeptUserSet(String jsonStr) throws Exception{ + //json字符串转换成list集合 + List list = JSON.parseArray(jsonStr, ArchiveRemindDeptUser.class); + //批量添加 + overtimeSetService.updateRemindDeptUserSet(list); + return Msg.success(); + } } diff --git a/src/main/java/com/emr/dao/ArchiveRemindDeptUserInfoMapper.java b/src/main/java/com/emr/dao/ArchiveRemindDeptUserInfoMapper.java new file mode 100644 index 0000000..03f9254 --- /dev/null +++ b/src/main/java/com/emr/dao/ArchiveRemindDeptUserInfoMapper.java @@ -0,0 +1,19 @@ +package com.emr.dao; + +import com.emr.entity.ArchiveRemindDeptUserInfo; + +public interface ArchiveRemindDeptUserInfoMapper extends CommomMapper{ + int deleteByPrimaryKey(Integer id); + + int insert(ArchiveRemindDeptUserInfo record); + + int insertSelective(ArchiveRemindDeptUserInfo record); + + ArchiveRemindDeptUserInfo selectByPrimaryKey(Integer id); + + int updateByPrimaryKeySelective(ArchiveRemindDeptUserInfo record); + + int updateByPrimaryKey(ArchiveRemindDeptUserInfo record); + + int updateSendSuccess(); +} \ No newline at end of file diff --git a/src/main/java/com/emr/dao/ArchiveRemindDeptUserMapper.java b/src/main/java/com/emr/dao/ArchiveRemindDeptUserMapper.java index 5e860ac..f156b22 100644 --- a/src/main/java/com/emr/dao/ArchiveRemindDeptUserMapper.java +++ b/src/main/java/com/emr/dao/ArchiveRemindDeptUserMapper.java @@ -4,7 +4,7 @@ import com.emr.entity.ArchiveRemindDeptUser; import java.util.List; -public interface ArchiveRemindDeptUserMapper { +public interface ArchiveRemindDeptUserMapper extends CommomMapper{ int deleteByPrimaryKey(Integer id); int insert(ArchiveRemindDeptUser record); @@ -18,4 +18,6 @@ public interface ArchiveRemindDeptUserMapper { int updateByPrimaryKey(ArchiveRemindDeptUser record); List selectAll(); + + void deleteRemindDeptUser(); } \ No newline at end of file diff --git a/src/main/java/com/emr/dao/ArchiveRemindcancleDeptMapper.java b/src/main/java/com/emr/dao/ArchiveRemindcancleDeptMapper.java index 9e4d208..8b6d538 100644 --- a/src/main/java/com/emr/dao/ArchiveRemindcancleDeptMapper.java +++ b/src/main/java/com/emr/dao/ArchiveRemindcancleDeptMapper.java @@ -1,10 +1,11 @@ package com.emr.dao; import com.emr.entity.ArchiveRemindcancleDept; +import org.apache.ibatis.annotations.Param; import java.util.List; -public interface ArchiveRemindcancleDeptMapper { +public interface ArchiveRemindcancleDeptMapper{ int deleteByPrimaryKey(Integer id); int insert(ArchiveRemindcancleDept record); @@ -18,4 +19,6 @@ public interface ArchiveRemindcancleDeptMapper { int updateByPrimaryKey(ArchiveRemindcancleDept record); List selectAll(); + + void updateRemindCancleSet(@Param("deptIds") String deptIds); } \ No newline at end of file diff --git a/src/main/java/com/emr/dao/CommomMapper.java b/src/main/java/com/emr/dao/CommomMapper.java new file mode 100644 index 0000000..8319a5e --- /dev/null +++ b/src/main/java/com/emr/dao/CommomMapper.java @@ -0,0 +1,23 @@ +package com.emr.dao; + +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @ProjectName: + * @Description: + * @Param 传输参数 + * @Return + * @Author: 曾文和 + * @CreateDate: 2020/10/29 13:22 + * @UpdateUser: 曾文和 + * @UpdateDate: 2020/10/29 13:22 + * @UpdateRemark: 更新说明 + * @Version: 1.0 + */ +public interface CommomMapper { + int selectColByTableName(@Param("tableName")String tableName); + + void insertBatch(@Param("list") List list); +} diff --git a/src/main/java/com/emr/entity/ArchiveRemindDeptUserInfo.java b/src/main/java/com/emr/entity/ArchiveRemindDeptUserInfo.java new file mode 100644 index 0000000..35aeb12 --- /dev/null +++ b/src/main/java/com/emr/entity/ArchiveRemindDeptUserInfo.java @@ -0,0 +1,194 @@ +package com.emr.entity; + +import java.io.Serializable; +import java.util.Date; + +public class ArchiveRemindDeptUserInfo implements Serializable { + private Integer id; + + private String userName; + + private String userTel; + + private String name; + + private Integer roleId; + + private String deptCode; + + private Date createTime; + + private Byte sendSuccess; + + private String sendContext; + + private String roleName; + + private String deptName; + + private String userWechat; + + private Integer int1; + + private String str1; + + private Integer int2; + + private String str2; + + private static final long serialVersionUID = 1L; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName == null ? null : userName.trim(); + } + + public String getUserTel() { + return userTel; + } + + public void setUserTel(String userTel) { + this.userTel = userTel == null ? null : userTel.trim(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public Integer getRoleId() { + return roleId; + } + + public void setRoleId(Integer roleId) { + this.roleId = roleId; + } + + public String getDeptCode() { + return deptCode; + } + + public void setDeptCode(String deptCode) { + this.deptCode = deptCode == null ? null : deptCode.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Byte getSendSuccess() { + return sendSuccess; + } + + public void setSendSuccess(Byte sendSuccess) { + this.sendSuccess = sendSuccess; + } + + public String getSendContext() { + return sendContext; + } + + public void setSendContext(String sendContext) { + this.sendContext = sendContext == null ? null : sendContext.trim(); + } + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName == null ? null : roleName.trim(); + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName == null ? null : deptName.trim(); + } + + public String getUserWechat() { + return userWechat; + } + + public void setUserWechat(String userWechat) { + this.userWechat = userWechat == null ? null : userWechat.trim(); + } + + public Integer getInt1() { + return int1; + } + + public void setInt1(Integer int1) { + this.int1 = int1; + } + + public String getStr1() { + return str1; + } + + public void setStr1(String str1) { + this.str1 = str1 == null ? null : str1.trim(); + } + + public Integer getInt2() { + return int2; + } + + public void setInt2(Integer int2) { + this.int2 = int2; + } + + public String getStr2() { + return str2; + } + + public void setStr2(String str2) { + this.str2 = str2 == null ? null : str2.trim(); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", userName=").append(userName); + sb.append(", userTel=").append(userTel); + sb.append(", name=").append(name); + sb.append(", roleId=").append(roleId); + sb.append(", deptCode=").append(deptCode); + sb.append(", createTime=").append(createTime); + sb.append(", sendSuccess=").append(sendSuccess); + sb.append(", sendContext=").append(sendContext); + sb.append(", roleName=").append(roleName); + sb.append(", deptName=").append(deptName); + sb.append(", userWechat=").append(userWechat); + sb.append(", int1=").append(int1); + sb.append(", str1=").append(str1); + sb.append(", int2=").append(int2); + sb.append(", str2=").append(str2); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/emr/quart/Task1.java b/src/main/java/com/emr/quart/Task1.java index 1326c1f..a2157a0 100644 --- a/src/main/java/com/emr/quart/Task1.java +++ b/src/main/java/com/emr/quart/Task1.java @@ -1,22 +1,27 @@ package com.emr.quart; +import com.emr.dao.ArchiveRemindDeptUserInfoMapper; import com.emr.dao.ArchiveRemindDeptUserMapper; import com.emr.dao.ArchiveRemindcancleDeptMapper; -import com.emr.entity.ArchiveRemindDeptUser; -import com.emr.entity.ArchiveRemindcancleDept; -import com.emr.entity.Archive_Master_Vo; -import com.emr.service.ipml.RecordService; +import com.emr.dao.RecordMapper; +import com.emr.entity.*; +import com.emr.service.ipml.CommomService; +import com.emr.service.ipml.EmrOvertimeSetService; import com.emr.service.ipml.StatisticsService; +import com.emr.util.ExceptionPrintUtil; import com.emr.vo.RecordSearch; +import com.emr.vo.SubmitRecord; import com.emr.vo.User; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; import org.apache.shiro.util.CollectionUtils; 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 java.util.Date; -import java.util.List; +import java.lang.reflect.Field; +import java.util.*; /** * @ProjectName: @@ -32,39 +37,306 @@ import java.util.List; */ @Component public class Task1 { + private static Logger log = Logger.getLogger("myMsg"); @Value("${overDateSet}") private String overDateSet; @Autowired - private RecordService recordService; + private RecordMapper recordMapper; @Autowired private ArchiveRemindcancleDeptMapper remindcancleDeptMapper; @Autowired private ArchiveRemindDeptUserMapper remindDeptUserMapper; @Autowired private StatisticsService statisticsService; + @Autowired + private EmrOvertimeSetService overtimeSetService; + @Autowired + private CommomService commomService; + @Autowired + private ArchiveRemindDeptUserInfoMapper remindDeptUserInfoMapper; @Scheduled(cron="#{@getCronValue}") public void task1(){ + Date date = new Date(); try { - List userList = statisticsService.getUserList("admin"); + long start = System.currentTimeMillis(); RecordSearch recordSearch = new RecordSearch(); + //设置查询超期标识 + recordSearch.setFlag(2); + //设置起始时间 + recordSearch.setStartDate(overDateSet); + //设置提前提醒天数 + EmrOvertimeSet emrOvertimeSet = overtimeSetService.selectByPrimaryKey(1); + recordSearch.setSurplus(emrOvertimeSet.getSurplusDays()); //查询超期记录 - //List submitRecords = recordService.selectRecordGroupDeptAndRole(recordSearch); - /*if(!CollectionUtils.isEmpty(submitRecords)){ + List list = recordMapper.selectUnCountGroupDept(recordSearch); + if(!CollectionUtils.isEmpty(list)){ + //定义添加记录集合 + List remindList = new ArrayList<>(); + //获取用户集合 + List userListTemp = statisticsService.getUserList("admin"); //查询科室取消提醒集合 List cancleDeptList = remindcancleDeptMapper.selectAll(); //查询科室取消单独开启的用户 List deptUsers = remindDeptUserMapper.selectAll(); - //获取用户集合 - List userList = statisticsService.getUserList(); - for(Archive_Master_Vo vo : submitRecords){ - //通知医生 - - //通知医生质控员 - + for(SubmitRecord vo : list){ + //获取科室编号 + String deptCode = vo.getDeptName(); + if(StringUtils.isNotBlank(deptCode)) { + //定义需要通知的集合 + List userList = new ArrayList<>(); + //根据科室取消提醒集合判断是否需要提醒 + boolean remindFlag = judgeRemindFlag(deptCode, cancleDeptList); + if(!remindFlag){ + //通知取消通知的该科室下需要通知的用户 + userList = selectUserListByDeptUsers(userListTemp,deptUsers,deptCode); + }else{ + //通知该科室所有用户 + userList = userListTemp; + } + if(!CollectionUtils.isEmpty(userList)) { + //通知医生 + remindList.addAll(remindDoctor(vo, userListTemp,recordSearch,date)); + //通知除了医生其他审核角色 + selectRemindOtherRoleInfo(date, remindList, vo, userList); + } + } + } + log.info(remindList); + //批量添加进提醒记录表 + if(!CollectionUtils.isEmpty(remindList)){ + commomService.insertBatch("archive_remind_dept_user_info",remindList,remindDeptUserInfoMapper); + } + try { + //添加第三方库表 + int i = 1/0; + //修改记录表当天记录send_success字段为1 + remindDeptUserInfoMapper.updateSendSuccess(); + }catch (Exception e){ + log.info("通知超期提前提醒业务总共"+list.size()+"个科室发送第三方库表失败"); + e.printStackTrace(); + ExceptionPrintUtil.printException(e); } - }*/ + } + long end = System.currentTimeMillis(); + log.info("通知超期提前提醒业务总共"+list.size()+"个科室总耗时:"+(end-start)/1000.0+"s"); }catch (Exception e){ e.printStackTrace(); } } + + /** + * 通知除了医生其他审核角色 + * @param date 当前时间 + * @param remindList 返回的list集合 + * @param vo 对应科室各个审核角色超期份数 + * @param userList 用户集合 + * @throws Exception + */ + private void selectRemindOtherRoleInfo(Date date, List remindList, SubmitRecord vo, List userList) throws Exception { + //通知医生质控员 + remindList.addAll(remindDoctorCheck(vo, userList, 5, "unDoctorCheckCount",date)); + //通知科主任 + remindList.addAll(remindDoctorCheck(vo, userList, 6, "unDirectorCheckCount",date)); + //通知护士 + remindList.addAll(remindDoctorCheck(vo, userList, 2, "unNurseSubmitCount",date)); + //通知护士质控员 + remindList.addAll(remindDoctorCheck(vo, userList, 8, "unNurseCheckCount",date)); + //通知护士长 + remindList.addAll(remindDoctorCheck(vo, userList, 7, "unHeadNurseCount",date)); + //通知病案室 + remindList.addAll(remindDoctorCheck(vo, userList, 3, "unRecordRoomCount",date)); + } + + /** + * 获取需要通知用户 + * @param userListTemp + * @param deptUsers + * @return + */ + private List selectUserListByDeptUsers(List userListTemp, List deptUsers,String deptName) { + List userList = new ArrayList<>(); + if(!CollectionUtils.isEmpty(deptUsers) && !CollectionUtils.isEmpty(userListTemp)){ + for(User user : userListTemp){ + if(StringUtils.isNotBlank(user.getDeptCode()) && user.getDeptCode().equals(deptName)) { + for (ArchiveRemindDeptUser deptUser : deptUsers) { + if (user.getUserName().equals(deptUser.getUserName())) { + userList.add(user); + break; + } + } + } + } + } + return userList; + } + + /** + * 通知除了主管医生其余审核角色 + * @param vo + * @param userList + * @return + */ + private List remindDoctorCheck(SubmitRecord vo, List userList,Integer roleId,String fieldName,Date date) throws Exception{ + List list = new ArrayList<>(); + //通过放射获取属性值,获取待审核份数 + Field field = vo.getClass().getDeclaredField(fieldName); + field.setAccessible(true); + Integer unCheckCount = (Integer) field.get(vo); + if(unCheckCount > 0){ + //获取该角色的用户集合 + List roleUserList = selectUserByDeptCodeAndRoleId(vo.getDeptName(), roleId, userList); + if(!CollectionUtils.isEmpty(roleUserList)){ + for(User user : roleUserList) { + //根据用户名获取用户 + User currentUser = selectUserByUserName(user.getUserName(),userList); + //添加记录 + ArchiveRemindDeptUserInfo obj = setArchiveRemindDeptUserInfo(vo, currentUser, unCheckCount,date); + list.add(obj); + } + } + } + return list; + } + + /** + * 通知主管医生 + * @param vo + * @param userList + * @return + */ + private List remindDoctor(SubmitRecord vo, List userList,RecordSearch recordSearch,Date date) { + List list = new ArrayList<>(); + if(vo.getUnDoctorSubmitCount() > 0){ + String deptCode = vo.getDeptName(); + recordSearch.setDeptName(deptCode); + //查询超期记录 + List masterVoList = recordMapper.selectRecordGroupDeptAndRole(recordSearch); + if(!CollectionUtils.isEmpty(masterVoList)){ + Map map = new HashMap<>(); + for(Archive_Master_Vo masterVo : masterVoList){ + //主管医生分组 + map.put(masterVo.getDoctorInCharge(),masterVo.getOverTimeCounts()); + } + for(String key : map.keySet()){ + //根据科室和姓名获取用户信息 + User user = selectUserByUserName(key,deptCode, userList); + //设置插入信息 + int count = map.get(key); + ArchiveRemindDeptUserInfo obj = setArchiveRemindDeptUserInfo(vo, user, count,date); + list.add(obj); + } + } + } + return list; + } + + /** + * 添加通知记录表 + * @param vo + * @param currentUser + * @param count + * @return + */ + private ArchiveRemindDeptUserInfo setArchiveRemindDeptUserInfo(SubmitRecord vo,User currentUser,int count,Date date) { + //填充信息 + ArchiveRemindDeptUserInfo obj = new ArchiveRemindDeptUserInfo(); + //设置科室编号 + obj.setDeptCode(vo.getDeptName()); + //设置科室名称 + obj.setDeptName(vo.getDeptNameCn()); + //设置创建时间 + obj.setCreateTime(date); + //设置初始化标识 + obj.setSendSuccess(new Byte("0")); + //设置用户名 + obj.setUserName(currentUser.getUserName()); + String name = ""; + if(null != currentUser){ + name = currentUser.getName(); + obj.setRoleId(currentUser.getRoleId()); + obj.setRoleName(currentUser.getRoleName()); + obj.setUserTel(currentUser.getUserTel()); + obj.setUserWechat(currentUser.getUserWechat()); + }else{ + name = "无效用户"; + obj.setRoleId(-1); + obj.setRoleName("无效角色"); + } + //设置姓名 + obj.setName(name); + //设置发送内容 xx,您有x份病历无纸化归档系统待审核 + String sendContext = name + ",您有"+count+"份病历无纸化归档系统待审核"; + obj.setSendContext(sendContext); + return obj; + } + + /** + * 根据用户名获取用户 + * @param userName + * @param userList + * @return + */ + private User selectUserByUserName(String userName, List userList) { + if(!CollectionUtils.isEmpty(userList)){ + for(User user : userList){ + if(StringUtils.isNotBlank(user.getUserTel()) && user.getUserName().equals(userName)){ + return user; + } + } + } + return new User(); + } + + /** + * 根据科室编号和姓名获取用户 + * @param name + * @param deptCode + * @param userList + * @return + */ + private User selectUserByUserName(String name, String deptCode,List userList) { + if(!CollectionUtils.isEmpty(userList)){ + for(User user : userList){ + if(StringUtils.isNotBlank(user.getUserTel()) && user.getName().equals(name) && StringUtils.isNotBlank(user.getDeptCode()) && user.getDeptCode().equals(deptCode)){ + return user; + } + } + } + return new User(); + } + + /** + * 根据科室编号和角色id获取用户集合 + * @param deptCode + * @param roleId + * @param userList + * @return + */ + private List selectUserByDeptCodeAndRoleId(String deptCode,Integer roleId,List userList) { + List list = new ArrayList<>(); + if(!CollectionUtils.isEmpty(userList)){ + for(User user : userList){ + if(StringUtils.isNotBlank(user.getUserTel()) && user.getRoleId().equals(roleId) && StringUtils.isNotBlank(user.getDeptCode()) && user.getDeptCode().equals(deptCode)){ + list.add(user); + } + } + } + return list; + } + + /** + * 根据科室取消提醒集合判断是否需要提醒 + * @param deptCode + * @param cancleDeptList + * @return + */ + private boolean judgeRemindFlag(String deptCode, List cancleDeptList) { + //遍历科室取消提醒集合,判断是否存在该科室 + for(ArchiveRemindcancleDept obj : cancleDeptList){ + if(StringUtils.isNotBlank(obj.getDeptCode()) && obj.getDeptCode().equals(deptCode)){ + return false; + } + } + return true; + } } diff --git a/src/main/java/com/emr/service/ipml/CommomService.java b/src/main/java/com/emr/service/ipml/CommomService.java new file mode 100644 index 0000000..5af81fb --- /dev/null +++ b/src/main/java/com/emr/service/ipml/CommomService.java @@ -0,0 +1,52 @@ +package com.emr.service.ipml; + +import com.emr.dao.CommomMapper; +import org.apache.shiro.util.CollectionUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; +import java.util.List; + +/** + * @ProjectName: + * @Description: + * @Param 传输参数 + * @Return + * @Author: 曾文和 + * @CreateDate: 2020/10/29 13:21 + * @UpdateUser: 曾文和 + * @UpdateDate: 2020/10/29 13:21 + * @UpdateRemark: 更新说明 + * @Version: 1.0 + */ +@Service +@Transactional +public class CommomService { + /** + * 批量添加 + * @param tableName 表名 + * @param list 批量添加的集合数据 + * @param commomMapper 调用执行mapper接口 + */ + public void insertBatch(String tableName, List list,CommomMapper commomMapper){ + if(!CollectionUtils.isEmpty(list)){ + //根据list数量插入 + ///查询表列数 + int colCount = commomMapper.selectColByTableName(tableName); + int simpleInsertCount = 2100/colCount; + List insertList = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + //处理批量添加sql太长问题,设定个数为180 + if(i != 0 && insertList.size()%simpleInsertCount == 0){ + insertList.clear(); + } + insertList.add(list.get(i)); + //是180的倍数或最后一个 + if(insertList.size()%simpleInsertCount == 0 || i == list.size() - 1){ + //批量添加 + commomMapper.insertBatch(insertList); + } + } + } + } +} diff --git a/src/main/java/com/emr/service/ipml/EmrOvertimeSetService.java b/src/main/java/com/emr/service/ipml/EmrOvertimeSetService.java index 7966c48..d6570db 100644 --- a/src/main/java/com/emr/service/ipml/EmrOvertimeSetService.java +++ b/src/main/java/com/emr/service/ipml/EmrOvertimeSetService.java @@ -1,5 +1,6 @@ package com.emr.service.ipml; +import com.alibaba.fastjson.JSON; import com.emr.dao.ArchiveRemindDeptUserMapper; import com.emr.dao.ArchiveRemindcancleDeptMapper; import com.emr.dao.EmrOvertimeSetMapper; @@ -16,9 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; /** * @ProjectName: @@ -45,6 +44,8 @@ public class EmrOvertimeSetService { private ArchiveRemindcancleDeptMapper remindcancleDeptMapper; @Autowired private ArchiveRemindDeptUserMapper remindDeptUserMapper; + @Autowired + private CommomService commomService; /** * 根据主键查询 * @return @@ -111,15 +112,26 @@ public class EmrOvertimeSetService { //查询取消科室提醒单独提醒的用户 List remindDeptUsers = remindDeptUserMapper.selectAll(); //定义角色id集合 - Integer[] roleList = {1,2,3,5,6,7,8}; + String roleListJson = "[" + + "{'roleId':1,roleName:'医生'}," + + "{'roleId':5,roleName:'医生质控员'}," + + "{'roleId':6,roleName:'科主任'}," + + "{'roleId':2,roleName:'护士'}," + + "{'roleId':3,roleName:'护士质控员'}," + + "{'roleId':7,roleName:'护士长'}," + + "{'roleId':8,roleName:'病案室人员'}" + + "]"; + List roleList = JSON.parseArray(roleListJson, User.class); //设定用户id从20000开始 int id = 1; int twoParentId = 0; + int threeParentId = 0; //组织用户 for(Emr_Dictionary dictionary : dictionaries) { - //获取编码 + //获取科室编码 String code = dictionary.getCode(); if(StringUtils.isNotBlank(code)) { + //第一层,科室层 CommomTree tree1 = new CommomTree(); tree1.setId(id); twoParentId = id; @@ -129,41 +141,67 @@ public class EmrOvertimeSetService { tree1.setParentId(0); //过滤字典类别科室 科室code=null //定义存在用户的科室 - boolean flag = false; - boolean checkedFlag = false; - for (User user : userList) { - //获取用户所属科室 - String deptCode = user.getDeptCode(); - //判断是否是审核角色 - boolean contains = Arrays.asList(roleList).contains(user.getRoleId()); - if (StringUtils.isNotBlank(deptCode) && deptCode.equals(code) && contains) { - CommomTree tree2 = new CommomTree(); - tree2.setId(id); - id++; - tree2.setParentId(twoParentId); - String name = user.getName(); - if(StringUtils.isNotBlank(name)){ - tree2.setName(user.getUserName() + "-" + name); - }else{ - tree2.setName(user.getUserName()); - } - //判断是否用户选中 - if(!CollectionUtils.isEmpty(remindDeptUsers)){ - for(ArchiveRemindDeptUser remindDeptUser : remindDeptUsers){ - if(remindDeptUser.getUserName().equals(user.getUserName())){ - tree2.setChecked("true"); - checkedFlag = true; - break; + boolean deptFlag = false; + boolean deptCheckedFlag = false; + for(User role : roleList){ + //第二层,审核角色层 + CommomTree tree2 = new CommomTree(); + tree2.setId(id); + threeParentId = id; + id++; + tree2.setParentId(twoParentId); + tree2.setName(role.getRoleName()); + //定义存在用户的角色 + boolean roleFlag = false; + boolean roleCheckedFlag = false; + for (User user : userList) { + //第三层,用户层 + //获取用户所属科室 + String deptCode = user.getDeptCode(); + if (StringUtils.isNotBlank(deptCode) && deptCode.equals(code) && role.getRoleId().equals(user.getRoleId())) { + CommomTree tree3 = new CommomTree(); + tree3.setId(id); + id++; + tree3.setParentId(threeParentId); + String name = user.getName(); + if(StringUtils.isNotBlank(name)){ + tree3.setName(user.getUserName() + "-" + name); + }else{ + tree3.setName(user.getUserName()); + } + //设置工号 + tree3.setRealName(user.getUserName()); + //设置科室编号 + tree3.setCode(deptCode); + //设置角色id + tree3.setRealParentId(user.getRoleId()); + //判断是否用户选中 + if(!CollectionUtils.isEmpty(remindDeptUsers)){ + for(ArchiveRemindDeptUser remindDeptUser : remindDeptUsers){ + if(remindDeptUser.getUserName().equals(user.getUserName())){ + tree3.setChecked("true"); + deptCheckedFlag = true; + roleCheckedFlag = true; + break; + } } } + list.add(tree3); + deptFlag = true; + roleFlag = true; + } + } + //角色不存在用户则移除。不添加 + if(roleFlag){ + if(roleCheckedFlag) { + tree2.setChecked("true"); } list.add(tree2); - flag = true; } } //科室不存在用户则移除。不添加 - if(flag){ - if(checkedFlag) { + if(deptFlag){ + if(deptCheckedFlag) { tree1.setChecked("true"); } list.add(tree1); @@ -174,4 +212,23 @@ public class EmrOvertimeSetService { } return list; } + + /** + * 保存取消科室树 + * @param deptIds + */ + public void updateRemindCancleSet(String deptIds) { + remindcancleDeptMapper.updateRemindCancleSet(deptIds); + } + + /** + * 保存取消提醒科室单独提醒个别用户集合 + * @param list + */ + public void updateRemindDeptUserSet(List list){ + //先清空表 + remindDeptUserMapper.deleteRemindDeptUser(); + //批量插入 + commomService.insertBatch("archive_remind_dept_user",list,remindDeptUserMapper); + } } diff --git a/src/main/java/com/emr/vo/CommomTree.java b/src/main/java/com/emr/vo/CommomTree.java index 0490f86..9825b9f 100644 --- a/src/main/java/com/emr/vo/CommomTree.java +++ b/src/main/java/com/emr/vo/CommomTree.java @@ -27,4 +27,8 @@ public class CommomTree { private String checked; private String code; + + private String realName; + + private Integer realParentId; } diff --git a/src/main/java/com/emr/vo/RecordSearch.java b/src/main/java/com/emr/vo/RecordSearch.java index fe17757..012ebc5 100644 --- a/src/main/java/com/emr/vo/RecordSearch.java +++ b/src/main/java/com/emr/vo/RecordSearch.java @@ -51,4 +51,9 @@ public class RecordSearch { * 时间标识1:日;2:月;3:年 */ private Integer dateFlag; + + /** + * 距超期剩余天数 + */ + private Integer surplus; } diff --git a/src/main/java/com/emr/vo/User.java b/src/main/java/com/emr/vo/User.java index 7d1d562..ed8a402 100644 --- a/src/main/java/com/emr/vo/User.java +++ b/src/main/java/com/emr/vo/User.java @@ -27,6 +27,26 @@ public class User { private String deptCode; + private String userTel; + + private String userWechat; + + public String getUserWechat() { + return userWechat; + } + + public void setUserWechat(String userWechat) { + this.userWechat = userWechat; + } + + public String getUserTel() { + return userTel; + } + + public void setUserTel(String userTel) { + this.userTel = userTel; + } + public String getDeptCode() { return deptCode; } diff --git a/src/main/resources/config/config.properties b/src/main/resources/config/config.properties index e545ae7..ab4c711 100644 --- a/src/main/resources/config/config.properties +++ b/src/main/resources/config/config.properties @@ -52,4 +52,7 @@ allAddortIds = 00000000 nurseAssortIds = 'C70E8C427A3648B79BE80798C08F4D12','85DAE73A87D047D28C222E878C78C670' #\u7528\u4E8E\u8D85\u671F\u901A\u77E5\uFF0C\u53EA\u901A\u77E5\u8BE5\u65E5\u671F\u4EE5\u540E\u7684\u51FA\u9662\u8D85\u671F\u7684\u8BB0\u5F55 -overDateSet = 2020-10-26 +overDateSet = 2020-07-26 + +#\u5404\u5BA1\u6838\u89D2\u8272\u7528\u6237id 1\uFF1A\u533B\u751F\uFF1B2\uFF1A\u62A4\u58EB\uFF1B3\uFF1A\u75C5\u6848\u5BA4\u4EBA\u5458\uFF1B5\uFF1A\u533B\u751F\u8D28\u63A7\u5458\uFF1B6\uFF1A\u79D1\u4E3B\u4EFB\uFF1B7\uFF1A\u62A4\u58EB\u957F\uFF1B8\uFF1A\u62A4\u58EB\u8D28\u63A7\u5458 + diff --git a/src/main/resources/mapper/ArchiveRemindDeptUserInfoMapper.xml b/src/main/resources/mapper/ArchiveRemindDeptUserInfoMapper.xml new file mode 100644 index 0000000..1cc7ac5 --- /dev/null +++ b/src/main/resources/mapper/ArchiveRemindDeptUserInfoMapper.xml @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + id, user_name, user_tel, name, role_id, dept_code, create_time, send_success, send_context, + role_name, dept_name, user_wechat, int1, str1, int2, str2 + + + + delete from archive_remind_dept_user_info + where id = #{id,jdbcType=INTEGER} + + + insert into archive_remind_dept_user_info (id, user_name, user_tel, + name, role_id, dept_code, + create_time, send_success, send_context, + role_name, dept_name, user_wechat, + int1, str1, int2, + str2) + values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=NVARCHAR}, #{userTel,jdbcType=VARCHAR}, + #{name,jdbcType=NVARCHAR}, #{roleId,jdbcType=INTEGER}, #{deptCode,jdbcType=VARCHAR}, + #{createTime,jdbcType=TIMESTAMP}, #{sendSuccess,jdbcType=TINYINT}, #{sendContext,jdbcType=NVARCHAR}, + #{roleName,jdbcType=NVARCHAR}, #{deptName,jdbcType=NVARCHAR}, #{userWechat,jdbcType=NVARCHAR}, + #{int1,jdbcType=INTEGER}, #{str1,jdbcType=NVARCHAR}, #{int2,jdbcType=INTEGER}, + #{str2,jdbcType=NVARCHAR}) + + + insert into archive_remind_dept_user_info + + + id, + + + user_name, + + + user_tel, + + + name, + + + role_id, + + + dept_code, + + + create_time, + + + send_success, + + + send_context, + + + role_name, + + + dept_name, + + + user_wechat, + + + int1, + + + str1, + + + int2, + + + str2, + + + + + #{id,jdbcType=INTEGER}, + + + #{userName,jdbcType=NVARCHAR}, + + + #{userTel,jdbcType=VARCHAR}, + + + #{name,jdbcType=NVARCHAR}, + + + #{roleId,jdbcType=INTEGER}, + + + #{deptCode,jdbcType=VARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{sendSuccess,jdbcType=TINYINT}, + + + #{sendContext,jdbcType=NVARCHAR}, + + + #{roleName,jdbcType=NVARCHAR}, + + + #{deptName,jdbcType=NVARCHAR}, + + + #{userWechat,jdbcType=NVARCHAR}, + + + #{int1,jdbcType=INTEGER}, + + + #{str1,jdbcType=NVARCHAR}, + + + #{int2,jdbcType=INTEGER}, + + + #{str2,jdbcType=NVARCHAR}, + + + + + update archive_remind_dept_user_info + + + user_name = #{userName,jdbcType=NVARCHAR}, + + + user_tel = #{userTel,jdbcType=VARCHAR}, + + + name = #{name,jdbcType=NVARCHAR}, + + + role_id = #{roleId,jdbcType=INTEGER}, + + + dept_code = #{deptCode,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + send_success = #{sendSuccess,jdbcType=TINYINT}, + + + send_context = #{sendContext,jdbcType=NVARCHAR}, + + + role_name = #{roleName,jdbcType=NVARCHAR}, + + + dept_name = #{deptName,jdbcType=NVARCHAR}, + + + user_wechat = #{userWechat,jdbcType=NVARCHAR}, + + + int1 = #{int1,jdbcType=INTEGER}, + + + str1 = #{str1,jdbcType=NVARCHAR}, + + + int2 = #{int2,jdbcType=INTEGER}, + + + str2 = #{str2,jdbcType=NVARCHAR}, + + + where id = #{id,jdbcType=INTEGER} + + + update archive_remind_dept_user_info + set user_name = #{userName,jdbcType=NVARCHAR}, + user_tel = #{userTel,jdbcType=VARCHAR}, + name = #{name,jdbcType=NVARCHAR}, + role_id = #{roleId,jdbcType=INTEGER}, + dept_code = #{deptCode,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + send_success = #{sendSuccess,jdbcType=TINYINT}, + send_context = #{sendContext,jdbcType=NVARCHAR}, + role_name = #{roleName,jdbcType=NVARCHAR}, + dept_name = #{deptName,jdbcType=NVARCHAR}, + user_wechat = #{userWechat,jdbcType=NVARCHAR}, + int1 = #{int1,jdbcType=INTEGER}, + str1 = #{str1,jdbcType=NVARCHAR}, + int2 = #{int2,jdbcType=INTEGER}, + str2 = #{str2,jdbcType=NVARCHAR} + where id = #{id,jdbcType=INTEGER} + + + insert into archive_remind_dept_user_info(user_name, user_tel, + name, role_id, dept_code, + create_time, send_success, send_context, + role_name, dept_name, user_wechat, + int1, str1, int2, + str2) + values + + (#{item.userName,jdbcType=NVARCHAR}, #{item.userTel,jdbcType=VARCHAR}, + #{item.name,jdbcType=NVARCHAR}, #{item.roleId,jdbcType=INTEGER}, #{item.deptCode,jdbcType=VARCHAR}, + #{item.createTime,jdbcType=TIMESTAMP}, #{item.sendSuccess,jdbcType=TINYINT}, #{item.sendContext,jdbcType=NVARCHAR}, + #{item.roleName,jdbcType=NVARCHAR}, #{item.deptName,jdbcType=NVARCHAR}, #{item.userWechat,jdbcType=NVARCHAR}, + #{item.int1,jdbcType=INTEGER}, #{item.str1,jdbcType=NVARCHAR}, #{item.int2,jdbcType=INTEGER}, + #{item.str2,jdbcType=NVARCHAR}) + + + + + UPDATE archive_remind_dept_user_info + SET send_success = 1 + WHERE + datediff( + DAY, + create_time, + getdate ())=0 + + \ No newline at end of file diff --git a/src/main/resources/mapper/ArchiveRemindDeptUserMapper.xml b/src/main/resources/mapper/ArchiveRemindDeptUserMapper.xml index 031c5b5..918cfc5 100644 --- a/src/main/resources/mapper/ArchiveRemindDeptUserMapper.xml +++ b/src/main/resources/mapper/ArchiveRemindDeptUserMapper.xml @@ -128,4 +128,15 @@ + + + truncate table archive_remind_dept_user + + + + insert into archive_remind_dept_user(dept_code,user_name,role_id) values + + (#{item.deptCode},#{item.userName},#{item.roleId}) + + \ No newline at end of file diff --git a/src/main/resources/mapper/ArchiveRemindcancleDeptMapper.xml b/src/main/resources/mapper/ArchiveRemindcancleDeptMapper.xml index 4c110f0..ff57f05 100644 --- a/src/main/resources/mapper/ArchiveRemindcancleDeptMapper.xml +++ b/src/main/resources/mapper/ArchiveRemindcancleDeptMapper.xml @@ -104,4 +104,14 @@ + + + truncate table archive_remindcancle_dept; + + insert into archive_remindcancle_dept(dept_code) values + + (#{item}) + + + \ No newline at end of file diff --git a/src/main/resources/mapper/Commom.xml b/src/main/resources/mapper/Commom.xml new file mode 100644 index 0000000..d949bd9 --- /dev/null +++ b/src/main/resources/mapper/Commom.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/mapper/RecordMapper.xml b/src/main/resources/mapper/RecordMapper.xml index ca09588..2d1debf 100644 --- a/src/main/resources/mapper/RecordMapper.xml +++ b/src/main/resources/mapper/RecordMapper.xml @@ -13,6 +13,10 @@ AND archive_master.DOCTOR_IN_CHARGE in (${doctorInCharge}) + + + AND archive_master.ArchiveState != '128' + AND archive_master.dept_name in (${deptName}) @@ -190,7 +194,12 @@ emr_overtime_set WHERE id = 1 - ) > 0 + ) > + + + #{surplus} + 0 + @@ -91,7 +91,7 @@
-

不接收提醒科室设置

+

取消提醒科室设置

@@ -119,7 +119,7 @@
-

关闭科室提醒单独提醒科室用户设置

+

取消科室提醒个别用户开启提醒设置

@@ -171,6 +171,7 @@ initTree(path+"/overtime/selectRemindDeptTree",'科室列表',1); initTree(path+"/overtime/selectRemindDeptUserTree",'用户列表',2); }); + /** * 保存基础信息设置 */ @@ -190,6 +191,69 @@ }) }); + /** + * 保存取消提醒科室设置 + */ + $("#remindCancleDeptBtn").click(function(){ + //获取取消提醒科室设置树选中 + var deptIds = ''; + var zTree = $.fn.zTree.getZTreeObj("ztree1"); + var nodes=zTree.getCheckedNodes(true); + for (var i = 0; i < nodes.length; i++) { + if(nodes[i].level == 1){ + if(deptIds != ''){ + deptIds += ","; + } + deptIds += nodes[i].code; + } + } + $.ajax({ + type:'post', + url:path+'/overtime/updateRemindCancleSet', + data:{deptIds:deptIds}, + dateType:'json', + success:function(data){ + if(data.code == 100){ + toastr.success("保存成功"); + }else{ + toastr.error(data.msg); + } + } + }) + }); + + /** + * 保存取消提醒科室单独提醒个别用户设置 + */ + $("#remindDeptUserBtn").click(function(){ + //获取取消提醒科室单独提醒个别用户设置树选中 + var saveNodes = []; + var zTree = $.fn.zTree.getZTreeObj("ztree2"); + var nodes=zTree.getCheckedNodes(true); + for (var i = 0; i < nodes.length; i++) { + if(nodes[i].level == 3){ + var obj = new Map(); + obj['deptCode'] = nodes[i].code; + obj['userName'] = nodes[i].realName; + obj['roleId'] = nodes[i].realParentId; + saveNodes.push(obj); + } + } + $.ajax({ + type:'post', + url:path+'/overtime/updateRemindDeptUserSet', + data:{jsonStr:JSON.stringify(saveNodes)}, + dateType:'json', + success:function(data){ + if(data.code == 100){ + toastr.success("保存成功"); + }else{ + toastr.error(data.msg); + } + } + }) + }); + var zNodes = []; var opts = { lines: 13, // The number of lines to draw |小长条的数量 @@ -219,18 +283,22 @@ type: "POST", async:false, success: function (result) { - zNodes.push({id: 0, parentId: 0, name: treeName, open: true}); + //定义根节点是否选中 + var rootChecked = true; if (result != null) { - for (var i = 0; i < result.length; i++) { - var obj = {}; - obj.id = result[i].id; - obj.parentId = result[i].parentId; - obj.code = result[i].code; - obj.name = result[i].name.trim(); - obj.checked = result[i].checked; - zNodes.push(obj); + for(var ele in result){ + zNodes.push(result[ele]); + if(result[ele].checked == null){ + rootChecked = false; + } } } + //判断是否根节点选中 + if(rootChecked && result != null){ + zNodes.push({id: 0, parentId: 0, name: treeName, open: true,checked:"true"}); + }else{ + zNodes.push({id: 0, parentId: 0, name: treeName, open: true}); + } $.fn.zTree.init($("#ztree"+num), setting, zNodes); spinner.spin(); }, error: function () {