package com.manage.service.ipml; import com.manage.dao.*; import com.manage.entity.*; import com.manage.service.PowerService; import com.manage.vo.PowerTree; import com.manage.vo.Power_Sys_DictVo; import com.manage.vo.Power_UserAndRoleTree; import com.manage.vo.Power_UserVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.*; /** * @ProjectName: power * @Package: com.manage.service.ipml * @ClassName: Power_Sys_DictServiceImpl * @Description: java类作用描述 * @Author: 曾文和 * @CreateDate: 2019/4/16 15:11 * @UpdateUser: 更新者 * @UpdateDate: 2019/4/16 15:11 * @UpdateRemark: 更新说明 * @Version: 1.0 */ @Service @Transactional public class PowerServiceImpl implements PowerService { @Autowired private Power_Sys_DictMapper sysDictMapper; @Autowired private Power_UserMapper userMapper; @Autowired private Power_MenuMapper menuMapper; @Autowired private Power_Role_MenuMapper roleMenuMapper; @Autowired private Power_User_MenuMapper userMenuMapper; @Autowired private PowerMapper powerMapper; @Override public List selectAllSys() { return sysDictMapper.selectAllSys(); } @Override public List getMethodByMenuIdPowerTree(Integer menuId) { return menuMapper.selectMethodByMenuIdPowerTree(menuId); } /** * @ProjectName: getRolePowerTree * @Description: 角色树1.医院;2.系统;3.角色 * @Param 无 * @Return PowerTree * @Author: 曾文和 * @CreateDate: 2019/4/21 10:02 * @UpdateUser: 更新者 * @UpdateDate: 2019/4/21 10:02 * @UpdateRemark: 更新说明 * @Version: 1.0 */ @Override public List getRolePowerTree(String key) { //roleId为0为系统管理员,系统管理员全查,其余按医院查 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER"); List treeList = new ArrayList<>(); List userTree = new ArrayList<>(); if(user.getRoleId().equals(0)){ userTree = powerMapper.getRoleTree(null,null,key); }else{ userTree = powerMapper.getRoleTree(user.getUserId(),user.getRoleId(),key); } //1级医院 List hosList = new ArrayList<>(); //2级权限系统 List powerList = new ArrayList<>(); //3级科室 List deptList = new ArrayList<>(); //4级系统 List sysList = new ArrayList<>(); //5级用户 List roleList = new ArrayList<>(); if(null != userTree && !userTree.isEmpty()){ for(Power_UserAndRoleTree tree:userTree){ if(tree.getLevel().equals(1)){ hosList.add(tree); } if(tree.getLevel().equals(2)){ powerList.add(tree); } if(tree.getLevel().equals(3)){ deptList.add(tree); } if(tree.getLevel().equals(4)){ sysList.add(tree); } if(tree.getLevel().equals(5)){ roleList.add(tree); } } } if(null != hosList && !hosList.isEmpty()){ //组织树 int id = 1; int oneLevelId = 0; int twoLevelId = 0; for(Power_UserAndRoleTree hos : hosList){ //第一级医院 Power_UserAndRoleTree tree1 = new Power_UserAndRoleTree(); BeanUtils.copyProperties(hos,tree1); tree1.setId(id); oneLevelId = id; tree1.setSelfId(null); treeList.add(tree1); id++; //获取该医院不重复角色 Map roleListByHosId = new HashMap<>(); if(null != roleList && !roleList.isEmpty()) { //属于该医院的权限系统下有有该角色 for (Power_UserAndRoleTree powerRole : roleList) { if (null != powerRole.getParentId() && powerRole.getParentId().equals(hos.getSelfId())) { roleListByHosId.put(powerRole.getSelfId(),powerRole); } } } //第二级权限系统 if(null != powerList && !powerList.isEmpty()){ for(Power_UserAndRoleTree powerSys : powerList){ if(powerSys.getParentId().equals(hos.getSelfId())){ Power_UserAndRoleTree tree2 = new Power_UserAndRoleTree(); BeanUtils.copyProperties(powerSys,tree2); tree2.setId(id); twoLevelId = id; tree2.setParentId(oneLevelId); tree2.setSelfId(null); treeList.add(tree2); id++; //第三级角色 if(null != roleListByHosId && !roleListByHosId.isEmpty()){ //属于该医院的权限系统下有有该角色 for (Map.Entry entry : roleListByHosId.entrySet()) { if(entry.getValue().getParentId().equals(hos.getSelfId())){ Power_UserAndRoleTree tree3 = new Power_UserAndRoleTree(); BeanUtils.copyProperties(entry.getValue(),tree3); tree3.setId(id); tree3.setParentId(twoLevelId); tree3.setSysFlag("power"); treeList.add(tree3); id++; } } } } } } //取系统和角色 Map sysListByHosDeptId = new HashMap<>(); List tempRoleList = new ArrayList<>(); if(null != deptList && !deptList.isEmpty()) { for (Power_UserAndRoleTree dept : deptList) { if (dept.getParentId().equals(hos.getSelfId())) { Set sysFlagSet = new TreeSet<>(); //获取该科室不重复系统 if (null != sysList && !sysList.isEmpty()) { for (Power_UserAndRoleTree sys : sysList) { if (null != sys.getParentId() && sys.getDeptId().equals(dept.getDeptId())) { sysListByHosDeptId.put(sys.getSysFlag(),sys); sysFlagSet.add(sys.getSysFlag()); } } } //给角色设置系统权限 if (null != roleList && !roleList.isEmpty()) { for (Power_UserAndRoleTree role : roleList) { String sysFlagStr = ""; String deptId = role.getDeptId(); if(StringUtils.isNotBlank(deptId)){ //单一科室 if (!deptId.contains(",")) { if (deptId.equals(dept.getDeptId())) { if(null != sysFlagSet && !sysFlagSet.isEmpty()){ for(String sysFlag:sysFlagSet){ sysFlagStr += sysFlag + ","; } } if(StringUtils.isNotBlank(sysFlagStr)){ Power_UserAndRoleTree tempRole = new Power_UserAndRoleTree(); BeanUtils.copyProperties(role,tempRole); tempRole.setSysFlag(sysFlagStr); tempRoleList.add(tempRole); } } } else { //逗号隔开多科室 String[] deptIds = deptId.split(","); for (String deptStr : deptIds) { if (StringUtils.isNotBlank(deptStr) && deptStr.equals(dept.getDeptId())) { if(null != sysFlagSet && !sysFlagSet.isEmpty()){ for(String sysFlag:sysFlagSet){ sysFlagStr += sysFlag + ","; } } if(StringUtils.isNotBlank(sysFlagStr)){ Power_UserAndRoleTree tempRole = new Power_UserAndRoleTree(); BeanUtils.copyProperties(role,tempRole); tempRole.setSysFlag(sysFlagStr); tempRoleList.add(tempRole); } } } } } } } } } //第三级系统 if (null != sysListByHosDeptId && !sysListByHosDeptId.isEmpty()) { for (Map.Entry sys : sysListByHosDeptId.entrySet()) { if(sys.getValue().getParentId().equals(hos.getSelfId())){ Power_UserAndRoleTree tree5 = new Power_UserAndRoleTree(); BeanUtils.copyProperties(sys.getValue(), tree5); tree5.setId(id); tree5.setParentId(oneLevelId); tree5.setSelfId(null); treeList.add(tree5); twoLevelId = id; id++; //第四级角色 Map roleListBySys = new HashMap<>(); if (null != roleList && !roleList.isEmpty()) { for (Power_UserAndRoleTree role : tempRoleList) { String sysFlag = role.getSysFlag(); if(StringUtils.isNotBlank(sysFlag)){ //逗号隔开多系统 String[] sysFlags = sysFlag.split(","); for (String sysFlagStr : sysFlags) { if (StringUtils.isNotBlank(sysFlagStr) && sysFlagStr.equals(sys.getValue().getSysFlag())) { roleListBySys.put(role.getSelfId(),role); continue; } } } } } if(null != roleListBySys && !roleListBySys.isEmpty()){ for (Map.Entry roleBySys:roleListBySys.entrySet()) { Power_UserAndRoleTree tree6 = new Power_UserAndRoleTree(); BeanUtils.copyProperties(roleBySys.getValue(), tree6); tree6.setId(id); tree6.setParentId(twoLevelId); tree6.setSysFlag(sys.getValue().getSysFlag()); treeList.add(tree6); id++; } } } } } } } } return treeList; } /** * @ProjectName: getMenuBySysIdAndRoleIdPowerTree * @Description: 通过系统id和角色id获取该系统菜单权限树 * @Param Integer dictId:系统id,Integer roleId:角色id * @Return List * @Author: 曾文和 * @CreateDate: 2019/4/22 15:11 * @UpdateUser: 更新者 * @UpdateDate: 2019/4/22 15:11 * @UpdateRemark: 更新说明 * @Version: 1.0 */ @Override public List getMenuBySysIdAndRoleIdPowerTree(String sysFlag,Integer roleId) { List menus = menuMapper.selectAll(sysFlag, 1,roleId); //roleId为-100医院管理员,菜单功能全选中 if(null != roleId && roleId == -100){ if(null != menus && !menus.isEmpty()){ for (int i = 0; i < menus.size(); i++) { menus.get(i).setChecked("true"); } } }else{ //否则按角色菜单表该角色的权限选中 List roleMenus = roleMenuMapper.selectRoleMenuByRoleId(roleId); if(null != menus && !menus.isEmpty() && null != roleMenus && !roleMenus.isEmpty()){ for (int i = 0; i < menus.size(); i++) { for (int j = 0; j < roleMenus.size(); j++) { if(menus.get(i).getMenuId().equals(roleMenus.get(j).getMenuId())){ menus.get(i).setChecked("true"); break; } } } } } return menus; } /** * @ProjectName: addRoleMenu * @Description: 保存角色菜单表 * @Param roleId:角色id,dictId:系统id,menus:菜单id集合 * @Return 无 * @Author: 曾文和 * @CreateDate: 2019/4/22 9:54 * @UpdateUser: 更新者 * @UpdateDate: 2019/4/22 9:54 * @UpdateRemark: 更新说明 * @Version: 1.0 */ @Override public void addRoleMenu(Integer roleId,String sysFlag,String menus) { //查询该角色对应系统已有的权限,先删除后新增 roleMenuMapper.deleteRoleMenuByRoleAndSysFlag(sysFlag,roleId); if(StringUtils.isNotBlank(menus)){ HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER"); String userName = user.getUserName(); String[] menu = menus.split(","); List list = new ArrayList<>(); for(String m : menu){ if(StringUtils.isNotBlank(m)){ Power_Role_Menu roleMenu = new Power_Role_Menu(); roleMenu.setCreater(userName); roleMenu.setUpdater(userName); SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); roleMenu.setCreateDate(fmt.format(new Date())); roleMenu.setUpdateDate(fmt.format(new Date())); roleMenu.setRoleId(roleId); roleMenu.setMenuId(Integer.valueOf(m)); list.add(roleMenu); } } roleMenuMapper.simpleInsertRoleMenu(list); } } /**********************************************用户菜单权限操作********************************************************/ /** * @ProjectName: getUserPowerTree * @Description: 用户树1.医院;2.科室;3.科室;4用户 * @Param List * @Return 返回 * @Author: 曾文和 * @CreateDate: 2019/4/22 15:12 * @UpdateUser: 更新者 * @UpdateDate: 2019/4/22 15:12 * @UpdateRemark: 更新说明 * @Version: 1.0 */ @Override public List getUserPowerTree(String key) { //roleId为0为系统管理员,系统管理员全查,其余按医院查 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER"); List treeList = new ArrayList<>(); List userTree = new ArrayList<>(); if(user.getRoleId().equals(0)){ userTree = powerMapper.getUserTree(null,key); }else{ userTree = powerMapper.getUserTree(user.getUserId(),key); } //1级医院 List hosList = new ArrayList<>(); //2级权限系统 List powerList = new ArrayList<>(); //3级科室 List deptList = new ArrayList<>(); //4级系统 List sysList = new ArrayList<>(); //5级用户 List userList = new ArrayList<>(); if(null != userTree && !userTree.isEmpty()){ for(Power_UserAndRoleTree tree:userTree){ if(tree.getLevel().equals(1)){ hosList.add(tree); } if(tree.getLevel().equals(2)){ powerList.add(tree); } if(tree.getLevel().equals(3)){ deptList.add(tree); } if(tree.getLevel().equals(4)){ sysList.add(tree); } if(tree.getLevel().equals(5)){ userList.add(tree); } } } if(null != hosList && !hosList.isEmpty()){ //组织树 int id = 1; int oneLevelId = 0; int twoLevelId = 0; for(Power_UserAndRoleTree hos : hosList){ //第一级医院 Power_UserAndRoleTree tree1 = new Power_UserAndRoleTree(); BeanUtils.copyProperties(hos,tree1); tree1.setId(id); tree1.setSelfId(hos.getSelfId()); oneLevelId = id; treeList.add(tree1); id++; //第二级权限系统 if(null != powerList && !powerList.isEmpty()){ for(Power_UserAndRoleTree powerSys : powerList){ if(powerSys.getParentId().equals(hos.getSelfId())){ Power_UserAndRoleTree tree2 = new Power_UserAndRoleTree(); BeanUtils.copyProperties(powerSys,tree2); tree2.setId(id); twoLevelId = id; tree2.setParentId(oneLevelId); tree2.setSysFlag(powerSys.getSysFlag()); Boolean isParent = false; //第三级用户 if(null != userList && !userList.isEmpty()){ //属于该医院的权限系统下有有该用户 for(Power_UserAndRoleTree powerUser : userList){ if(null != powerUser.getParentId() && powerUser.getParentId().equals(hos.getSelfId())){ /*Power_UserAndRoleTree tree3 = new Power_UserAndRoleTree(); BeanUtils.copyProperties(powerUser,tree3); tree3.setId(id); tree3.setParentId(twoLevelId); if(StringUtils.isNotBlank(powerUser.getTel())){ tree3.setName(powerUser.getSelfId()+"-"+powerUser.getName()+"("+powerUser.getTel()+")"); tree3.setNewName(powerUser.getSelfId()+"-"+powerUser.getName()+"("+powerUser.getTel()+")"); }else{ tree3.setName(powerUser.getSelfId()+"-"+powerUser.getName()); tree3.setNewName(powerUser.getSelfId()+"-"+powerUser.getName()); } tree3.setSysFlag("power"); treeList.add(tree3); id++;*/ isParent = true; } } } tree2.setIsParent(isParent); treeList.add(tree2); id++; } } } //第二级科室 if(null != deptList && !deptList.isEmpty()){ for(Power_UserAndRoleTree dept : deptList){ if(dept.getParentId().equals(hos.getSelfId())){ Power_UserAndRoleTree tree4 = new Power_UserAndRoleTree(); BeanUtils.copyProperties(dept,tree4); tree4.setId(id); twoLevelId = id; tree4.setParentId(oneLevelId); tree4.setSelfId(Integer.valueOf(dept.getDeptId())); treeList.add(tree4); id++; } //第三级系统 if(null != sysList && !sysList.isEmpty()){ for(Power_UserAndRoleTree sys : sysList) { if (null != sys.getParentId() && sys.getDeptId().equals(dept.getDeptId()) && sys.getParentId().equals(hos.getSelfId())) { Power_UserAndRoleTree tree5 = new Power_UserAndRoleTree(); BeanUtils.copyProperties(sys,tree5); tree5.setId(id); tree5.setParentId(twoLevelId); tree5.setSysFlag(sys.getSysFlag()); Boolean isParent = false; //第四级用户 if(null != userList && !userList.isEmpty()) { for (Power_UserAndRoleTree users : userList) { String deptId = users.getDeptId(); if(StringUtils.isNotBlank(deptId)){ //单一科室 if(!deptId.contains(",")){ if(deptId.equals(dept.getDeptId())){ isParent = true; /*Power_UserAndRoleTree tree6 = new Power_UserAndRoleTree(); BeanUtils.copyProperties(users,tree6); tree6.setId(id); tree6.setParentId(threeLevelId); if(StringUtils.isNotBlank(users.getTel())){ tree6.setName(users.getSelfId()+"-"+users.getName()+"("+users.getTel()+")"); tree6.setNewName(users.getSelfId()+"-"+users.getName()+"("+users.getTel()+")"); }else{ tree6.setName(users.getSelfId()+"-"+users.getName()); tree6.setNewName(users.getSelfId()+"-"+users.getName()); } tree6.setSysFlag(sys.getSysFlag()); treeList.add(tree6); id++;*/ } }else{ //逗号隔开多科室 String[] deptIds = deptId.split(","); for (String deptStr : deptIds) { if(StringUtils.isNotBlank(deptStr) && deptStr.equals(dept.getDeptId())){ /*Power_UserAndRoleTree tree7 = new Power_UserAndRoleTree(); BeanUtils.copyProperties(users,tree7); tree7.setId(id); tree7.setParentId(threeLevelId); if(StringUtils.isNotBlank(users.getTel())){ tree7.setName(users.getSelfId()+"-"+users.getName()+"("+users.getTel()+")"); tree7.setNewName(users.getSelfId()+"-"+users.getName()+"("+users.getTel()+")"); }else{ tree7.setName(users.getSelfId()+"-"+users.getName()); tree7.setNewName(users.getSelfId()+"-"+users.getName()); } tree7.setSysFlag(sys.getSysFlag()); treeList.add(tree7); id++;*/ isParent = true; continue; } } } } } } tree5.setIsParent(isParent); treeList.add(tree5); id++; } } } } } } } return treeList; } @Override public List getUserTreeByHospitalId(Integer hospitalId) { List userList = userMapper.getUserTreeByHospitalId(hospitalId); List treeList = new ArrayList<>(); if(null != userList && !userList.isEmpty()){ for (Power_User users : userList) { Power_UserAndRoleTree tree6 = new Power_UserAndRoleTree(); if(StringUtils.isNotBlank(users.getUserTel())){ tree6.setName(users.getUserId()+"-"+users.getUserName()+"("+users.getUserTel()+")"); tree6.setNewName(users.getUserId()+"-"+users.getUserName()+"("+users.getUserTel()+")"); }else{ tree6.setName(users.getUserId()+"-"+users.getUserName()); tree6.setNewName(users.getUserId()+"-"+users.getUserName()); } treeList.add(tree6); } } return treeList; } @Override public List getUserTreeByDeptId(Integer deptId) { List userList = userMapper.getUserTreeByDeptId(deptId); List treeList = new ArrayList<>(); if(null != userList && !userList.isEmpty()){ for (Power_User users : userList) { Power_UserAndRoleTree tree6 = new Power_UserAndRoleTree(); if(StringUtils.isNotBlank(users.getUserTel())){ tree6.setName(users.getUserId()+"-"+users.getUserName()+"("+users.getUserTel()+")"); tree6.setNewName(users.getUserId()+"-"+users.getUserName()+"("+users.getUserTel()+")"); }else{ tree6.setName(users.getUserId()+"-"+users.getUserName()); tree6.setNewName(users.getUserId()+"-"+users.getUserName()); } treeList.add(tree6); } } return treeList; } //根据用户 /** * @ProjectName: getMenuBySysIdAndUerIdPowerTree * @Description: 通过系统id和用户id获取该系统的菜单权限 * @Param Integer dictId:系统id, Integer userId:用户id * @Return 返回 * @Author: 曾文和 * @CreateDate: 2019/4/22 15:07 * @UpdateUser: 更新者 * @UpdateDate: 2019/4/22 15:07 * @UpdateRemark: 更新说明 * @Version: 1.0 */ @Override public List getMenuBySysIdAndUerIdPowerTree(String sysFlag, Integer userId) { //查询对应系统的且状态为可用的菜单集合 //系统标识查 Power_User user = userMapper.selectByPrimaryKey(userId); List menus = menuMapper.selectAll(sysFlag, 1,user.getRoleId()); //roleId为-100医院管理员,菜单功能全选中 if(null != user.getRoleId() && user.getRoleId() == -100){ if(null != menus && !menus.isEmpty()){ for (int i = 0; i < menus.size(); i++) { menus.get(i).setChecked("true"); } } }else{ //否则查询对应系统的用户权限菜单id集合 List userMenus = userMenuMapper.selectUserAndRoleMenuPower(sysFlag, userId); if(null != menus && !menus.isEmpty() && null != userMenus && !userMenus.isEmpty()){ //有符合权限则checked设为true for (int i = 0; i < menus.size(); i++) { for (int j = 0; j < userMenus.size(); j++) { if(menus.get(i).getMenuId().equals(userMenus.get(j).getMenuId())){ menus.get(i).setChecked("true"); break; } } } } } return menus; } /** * @ProjectName: addUserMenu * @Description: 保存用户菜单表 * @Param Integer userId:用户id, Integer dictId:系统id, String menus:菜单id集合 * @Return 返回 * @Author: 曾文和 * @CreateDate: 2019/4/22 15:08 * @UpdateUser: 更新者 * @UpdateDate: 2019/4/22 15:08 * @UpdateRemark: 更新说明 * @Version: 1.0 */ @Override public void addUserMenu(Integer userId, String sysFlag, String menus) { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER"); String userName = user.getUserName(); //查询该用户对应系统在用户菜单表中已有的权限,先删除后新增 userMenuMapper.deleteUserMenuByUserIdAndSysFlag(sysFlag, userId); /* List userPowers = userMenuMapper.selectUserMenuPower(sysFlag,userId); if(null != userPowers && !userPowers.isEmpty()){ for (int i = 0; i < userPowers.size(); i++) { userMenuMapper.deleteByPrimaryKey(userPowers.get(i).getUserMenuId()); } }*/ Power_User power_user = userMapper.selectByPrimaryKey(userId); //查询该用户对应的角色菜单权限 List rolePowers = roleMenuMapper.selectRoleMenuPower(sysFlag, power_user.getRoleId()); if(null != rolePowers && !rolePowers.isEmpty()){ if(StringUtils.isBlank(menus)){ //全取消 List list = new ArrayList<>(); for (int i = 0; i < rolePowers.size(); i++) { list.add(addUserFunction(userName, userId, rolePowers.get(i).getMenuId().toString(), 0)); } userMenuMapper.simpleInsertUserMenu(list); }else{ //计算新增和删除 List roles = new ArrayList<>(); List users = new ArrayList<>(); for (int i = 0; i < rolePowers.size(); i++) { roles.add(rolePowers.get(i).getMenuId().toString()); } String[] menu = menus.split(","); users = Arrays.asList(menu); //新增部分 Collection inserts=new ArrayList(users); inserts.removeAll(roles); if(null != inserts && !inserts.isEmpty()){ //新增flag为1 List list = new ArrayList<>(); for (String insertMenu : inserts) { if(StringUtils.isNotBlank(insertMenu)){ list.add(addUserFunction(userName,userId,insertMenu,1)); } } userMenuMapper.simpleInsertUserMenu(list); } //删除部分 Collection deletes=new ArrayList(roles); deletes.removeAll(users); if(null != deletes && !deletes.isEmpty()){ List list = new ArrayList<>(); for(String deleteMenu : deletes){ if(StringUtils.isNotBlank(deleteMenu)){ list.add(addUserFunction(userName,userId,deleteMenu,0)); } } userMenuMapper.simpleInsertUserMenu(list); } } }else{ //未设置角色权限,全部添加到用户权限 if(StringUtils.isNotBlank(menus)) { String[] menu = menus.split(","); //新增flag为1 List list = new ArrayList<>(); for (String insertMenu : menu) { if (StringUtils.isNotBlank(insertMenu)) { list.add(addUserFunction(userName, userId, insertMenu, 1)); } } userMenuMapper.simpleInsertUserMenu(list); } } } //封装新增用户菜单权限表公共部分 private Power_User_Menu addUserFunction(String userName,Integer userId,String menu,Integer flag){ Power_User_Menu userMenu = new Power_User_Menu(); userMenu.setCreater(userName); userMenu.setUpdater(userName); SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); userMenu.setCreateDate(fmt.format(new Date())); userMenu.setUpdateDate(fmt.format(new Date())); userMenu.setUserId(userId); userMenu.setMenuId(Integer.valueOf(menu)); userMenu.setFlag(flag); return userMenu; } /** * @ProjectName: getRolePowerTreeBySysFlag * @Description: 病案管理系统接口 根据系统标识组织角色树 * @Param 无 * @Return PowerTree * @Author: 曾文和 * @CreateDate: 2019/7/9 10:02 * @UpdateUser: 更新者 * @UpdateDate: 2019/09/04 10:02 * @UpdateRemark: 重新查询 * @Version: 1.0 */ @Override public List getRolePowerTreeBySysFlag(String sysFlag,Power_User user) { //根据系统标识查询科室id List dicts = new ArrayList<>(); if(user.getRoleId() == 0){ dicts = sysDictMapper.selectAllByAdmin(); }/*else if(user.getRoleId() == -100){ dicts = sysDictMapper.selectAllByHosRoleId(user.getUserId()); }*/else{ dicts = sysDictMapper.selectAllByHosRoleId(user.getUserId(),user.getRoleId(),null); //dicts = sysDictMapper.selectAllByUserId(user.getUserId()); } //获取用户集合 List userList = new ArrayList<>(); List treeList = new ArrayList<>(); int id = 0; int oneLevel = 0; int twoLevel = 0; Map hospitalNameSet = new HashMap<>(); if(null != dicts && !dicts.isEmpty()){ for (int i = 0; i < dicts.size(); i++) { if(StringUtils.isNotBlank(dicts.get(i).getHospitalName())){ hospitalNameSet.put(dicts.get(i).getDictId(),dicts.get(i).getHospitalName()); } //用户集合 if(null == dicts.get(i).getDictId()){ userList.add(dicts.get(i)); } } } if(null != hospitalNameSet && !hospitalNameSet.isEmpty()){ for(Integer hosKey : hospitalNameSet.keySet()){ Map deptNameSet = new HashMap<>(); Map poweSysNameSet = new HashMap<>(); Set deptIds = new TreeSet<>(); //医院层 id++; oneLevel = id; PowerTree tree1 = new PowerTree(); tree1.setId(id); tree1.setName(hospitalNameSet.get(hosKey)); treeList.add(tree1); for (int i = 0; i < dicts.size(); i++) { //查询病案系统的科室 if(StringUtils.isNotBlank(dicts.get(i).getSysFlag()) && dicts.get(i).getSysFlag().equals(sysFlag) && dicts.get(i).getParentId().equals(hosKey) && null != dicts.get(i).getDictDeptId()){ deptIds.add(dicts.get(i).getDictDeptId()); } } if(null != deptIds && !deptIds.isEmpty()){ for(Integer deptId : deptIds){ for (int i = 0; i < dicts.size(); i++) { if(StringUtils.isNotBlank(dicts.get(i).getDeptIds()) && dicts.get(i).getDeptIds().equals(deptId.toString()) && StringUtils.isNotBlank(dicts.get(i).getDeptName())){ deptNameSet.put(dicts.get(i).getDeptIds(),dicts.get(i).getDeptName()); } } } if(null != deptNameSet && !deptNameSet.isEmpty()){ for (String key : deptNameSet.keySet()) { Map sysNameSet = new HashMap<>(); //科室层 id++; twoLevel = id; PowerTree tree2 = new PowerTree(); tree2.setId(id); tree2.setParentId(oneLevel); tree2.setName(deptNameSet.get(key)); treeList.add(tree2); Map roleMap = new HashMap<>(); if (null != userList && !userList.isEmpty()) { for (int j = 0; j < userList.size(); j++) { if(StringUtils.isNoneBlank(userList.get(j).getSysType())){ String deptIdss = userList.get(j).getDeptIds(); if(StringUtils.isNotBlank(deptIdss)){ if(!deptIdss.contains(",")){ if(deptIdss.equals(key)){ roleMap.put(userList.get(j).getParentId(),userList.get(j).getSysType()); } }else{ String[] deptIdsss = deptIdss.split(","); for(String deptId:deptIdsss){ if(StringUtils.isNotBlank(deptId) && deptId.equals(key)){ roleMap.put(userList.get(j).getParentId(),userList.get(j).getSysType()); } } } } } } for(Integer roleId:roleMap.keySet()){ //角色层 id++; PowerTree tree3 = new PowerTree(); tree3.setId(id); tree3.setParentId(twoLevel); tree3.setName(roleMap.get(roleId)); tree3.setSelfId(roleId); treeList.add(tree3); } } } } } } } return treeList; } /** * @ProjectName: getUserPowerTreeBySysFlag * @Description: 病案管理系统接口 根据系统标识组织用户树 * @Param 无 * @Return PowerTree * @Author: 曾文和 * @CreateDate: 2019/7/9 10:02 * @UpdateUser: 更新者 * @UpdateDate: 2019/9/4 10:02 * @UpdateRemark: 重新查询 * @Version: 1.0 */ @Override public List getUserPowerTreeBySysFlag(String sysFlag,Power_User user) { //根据系统标识查询科室id List dicts = new ArrayList<>(); if(user.getRoleId() == 0){ dicts = sysDictMapper.selectAllByAdmin(); }/*else if(user.getRoleId() == -100){ dicts = sysDictMapper.selectAllByHosRoleId(user.getUserId()); }*/else{ dicts = sysDictMapper.selectAllByHosRoleId(user.getUserId(),null,null); //dicts = sysDictMapper.selectAllByUserId(user.getUserId()); } List userList = new ArrayList<>(); List treeList = new ArrayList<>(); int id = 0; int oneLevel = 0; int twoLevel = 0; Map hospitalNameSet = new HashMap<>(); if(null != dicts && !dicts.isEmpty()){ for (int i = 0; i < dicts.size(); i++) { if(StringUtils.isNotBlank(dicts.get(i).getHospitalName())){ hospitalNameSet.put(dicts.get(i).getDictId(),dicts.get(i).getHospitalName()); } //用户集合 if(null == dicts.get(i).getDictId()){ userList.add(dicts.get(i)); } } } if(null != hospitalNameSet && !hospitalNameSet.isEmpty()){ for(Integer hosKey : hospitalNameSet.keySet()){ Map deptNameSet = new HashMap<>(); Map poweSysNameSet = new HashMap<>(); Set deptIds = new TreeSet<>(); //医院层 id++; oneLevel = id; PowerTree tree1 = new PowerTree(); tree1.setId(id); tree1.setName(hospitalNameSet.get(hosKey)); treeList.add(tree1); for (int i = 0; i < dicts.size(); i++) { //查询病案系统的科室 if(StringUtils.isNotBlank(dicts.get(i).getSysFlag()) && dicts.get(i).getSysFlag().equals(sysFlag) && dicts.get(i).getParentId().equals(hosKey)){ deptIds.add(dicts.get(i).getDictDeptId()); } } if(null != deptIds && !deptIds.isEmpty()){ for(Integer deptId : deptIds){ for (int i = 0; i < dicts.size(); i++) { if(StringUtils.isNotBlank(dicts.get(i).getDeptIds()) && dicts.get(i).getDeptIds().equals(deptId.toString()) && StringUtils.isNotBlank(dicts.get(i).getDeptName())){ deptNameSet.put(dicts.get(i).getDeptIds(),dicts.get(i).getDeptName()); } } } if(null != deptNameSet && !deptNameSet.isEmpty()){ for (String key : deptNameSet.keySet()) { //科室层 id++; twoLevel = id; PowerTree tree2 = new PowerTree(); tree2.setId(id); tree2.setParentId(oneLevel); tree2.setName(deptNameSet.get(key)); treeList.add(tree2); Map roleMap = new HashMap<>(); //sysName 用户id,hospitalTel 手机号,dictArea用户名,parentId角色id,sysType角色名 if (null != userList && !userList.isEmpty()) { for (int j = 0; j < userList.size(); j++) { if(StringUtils.isNoneBlank(userList.get(j).getDictArea())){ String deptIdss = userList.get(j).getDeptIds(); if(StringUtils.isNotBlank(deptIdss)){ if(!deptIdss.contains(",")){ if(deptIdss.equals(key)){ roleMap.put(Integer.valueOf(userList.get(j).getSysName()),userList.get(j)); } }else{ String[] deptIdsss = deptIdss.split(","); for(String deptId:deptIdsss){ if(StringUtils.isNotBlank(deptId) && deptId.equals(key)){ roleMap.put(Integer.valueOf(userList.get(j).getSysName()),userList.get(j)); } } } } } } for (Map.Entry map : roleMap.entrySet()) { //用户层 id++; PowerTree tree4 = new PowerTree(); tree4.setId(id); tree4.setParentId(twoLevel); if(StringUtils.isNotBlank(map.getValue().getHospitalTel())){ tree4.setName(map.getValue().getSysName()+"-"+map.getValue().getDictArea()+"("+map.getValue().getHospitalTel()+")"); }else{ tree4.setName(map.getValue().getSysName()+"-"+map.getValue().getDictArea()); } tree4.setSelfId(map.getKey()); tree4.setRoleId(map.getValue().getParentId()); treeList.add(tree4); } } } } } } } return treeList; } //归属管理的树 @Override public List getDictPowerTree(String content) { //roleId为0为系统管理员,系统管理员全查,其余按医院查 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER"); List dicts = new ArrayList<>(); if(user.getRoleId() == 0){ dicts = sysDictMapper.selectAll(content); }else if(user.getRoleId() == -100){ dicts = sysDictMapper.selectAllByHosRoleId(user.getUserId(),null,content); }else{ dicts = sysDictMapper.selectAllByUserId(user.getUserId(),content); } List treeList = new ArrayList<>(); PowerTree tree = new PowerTree(); tree.setId(1); tree.setSelfId(0); tree.setName("医院列表"); treeList.add(tree); int id = 1; int oneLevel = 0; int twoLevel = 0; Map hospitalNameSet = new HashMap<>(); if(null != dicts && !dicts.isEmpty()){ for (int i = 0; i < dicts.size(); i++) { if(StringUtils.isNotBlank(dicts.get(i).getHospitalName())){ hospitalNameSet.put(dicts.get(i).getDictId(),dicts.get(i).getHospitalName()); } } } if(null != hospitalNameSet && !hospitalNameSet.isEmpty()){ for(Integer hosKey : hospitalNameSet.keySet()){ Map deptNameSet = new HashMap<>(); Map poweSysNameSet = new HashMap<>(); //医院层 id++; oneLevel = id; PowerTree tree1 = new PowerTree(); tree1.setId(id); tree1.setParentId(1); tree1.setSelfId(hosKey); tree1.setName(hospitalNameSet.get(hosKey)); treeList.add(tree1); for (int i = 0; i < dicts.size(); i++) { if(user.getRoleId() == 0){ if(dicts.get(i).getDictId().equals(hosKey)){ String deptName = dicts.get(i).getDeptName(); if(StringUtils.isNoneBlank(deptName)){ deptNameSet.put(dicts.get(i).getDeptId(),dicts.get(i).getDeptName()); } } }else{ if(dicts.get(i).getParentId().equals(hosKey)){ String deptName = dicts.get(i).getDeptName(); if(StringUtils.isNoneBlank(deptName)){ deptNameSet.put(dicts.get(i).getDeptId(),dicts.get(i).getDeptName()); } } } //添加权限系统 if(dicts.get(i).getParentId() != null && StringUtils.isNotBlank(dicts.get(i).getSysFlag()) && dicts.get(i).getParentId().equals(hosKey) && "权限系统".equals(dicts.get(i).getSysType())){ poweSysNameSet.put(dicts.get(i).getDictId(),dicts.get(i)); } } //添加权限系统 if(null != poweSysNameSet && !poweSysNameSet.isEmpty()){ for (Integer key : poweSysNameSet.keySet()) { id++; twoLevel = id; PowerTree tree20 = new PowerTree(); tree20.setId(id); tree20.setParentId(oneLevel); tree20.setSelfId(key); tree20.setSysType(poweSysNameSet.get(key).getSysType()); tree20.setName(poweSysNameSet.get(key).getSysName()); tree20.setNewName(poweSysNameSet.get(key).getSysName()); treeList.add(tree20); } } if(null != deptNameSet && !deptNameSet.isEmpty()){ for (Integer key : deptNameSet.keySet()) { Map sysNameSet = new HashMap<>(); //科室层 id++; twoLevel = id; PowerTree tree2 = new PowerTree(); tree2.setId(id); tree2.setParentId(oneLevel); tree2.setName(deptNameSet.get(key)); tree2.setSelfId(0-key); treeList.add(tree2); for (int i = 0; i < dicts.size(); i++) { if(dicts.get(i).getDictDeptId() != null && dicts.get(i).getDictDeptId().equals(key) && dicts.get(i).getParentId() != null && dicts.get(i).getParentId().equals(hosKey)){ String sysName = dicts.get(i).getSysName(); if(StringUtils.isNoneBlank(sysName)){ sysNameSet.put(dicts.get(i).getDictId(),sysName); } } } if(null != sysNameSet && !sysNameSet.isEmpty()){ for (Integer dictId : sysNameSet.keySet()) { //系统层 id++; PowerTree tree3 = new PowerTree(); tree3.setId(id); tree3.setParentId(twoLevel); tree3.setName(sysNameSet.get(dictId)); tree3.setSelfId(dictId); treeList.add(tree3); } } } } } } return treeList; } }