You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1096 lines
56 KiB
Java

6 years ago
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<Power_Sys_DictVo> selectAllSys() {
return sysDictMapper.selectAllSys();
}
@Override
public List<Power_Menu> 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<Power_UserAndRoleTree> getRolePowerTree(String key) {
//roleId为0为系统管理员系统管理员全查其余按医院查
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER");
List<Power_UserAndRoleTree> treeList = new ArrayList<>();
List<Power_UserAndRoleTree> 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<Power_UserAndRoleTree> hosList = new ArrayList<>();
//2级权限系统
List<Power_UserAndRoleTree> powerList = new ArrayList<>();
//3级科室
List<Power_UserAndRoleTree> deptList = new ArrayList<>();
//4级系统
List<Power_UserAndRoleTree> sysList = new ArrayList<>();
//5级用户
List<Power_UserAndRoleTree> 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<Integer,Power_UserAndRoleTree> 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<Integer, Power_UserAndRoleTree> 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<String,Power_UserAndRoleTree> sysListByHosDeptId = new HashMap<>();
List<Power_UserAndRoleTree> tempRoleList = new ArrayList<>();
if(null != deptList && !deptList.isEmpty()) {
for (Power_UserAndRoleTree dept : deptList) {
if (dept.getParentId().equals(hos.getSelfId())) {
Set<String> 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<String,Power_UserAndRoleTree> 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<Integer,Power_UserAndRoleTree> 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<Integer,Power_UserAndRoleTree> 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: idid
* @Param Integer dictIdid,Integer roleId:id
* @Return List<Power_Menu>
* @Author:
* @CreateDate: 2019/4/22 15:11
* @UpdateUser:
* @UpdateDate: 2019/4/22 15:11
* @UpdateRemark:
* @Version: 1.0
*/
@Override
public List<Power_Menu> getMenuBySysIdAndRoleIdPowerTree(String sysFlag,Integer roleId) {
List<Power_Menu> 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<Power_Role_Menu> 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 roleIdid,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<Power_Role_Menu> 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<PowerTree>
* @Return
* @Author:
* @CreateDate: 2019/4/22 15:12
* @UpdateUser:
* @UpdateDate: 2019/4/22 15:12
* @UpdateRemark:
* @Version: 1.0
*/
@Override
public List<Power_UserAndRoleTree> getUserPowerTree(String key) {
//roleId为0为系统管理员系统管理员全查其余按医院查
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER");
List<Power_UserAndRoleTree> treeList = new ArrayList<>();
List<Power_UserAndRoleTree> userTree = new ArrayList<>();
if(user.getRoleId().equals(0)){
userTree = powerMapper.getUserTree(null,key);
}else{
userTree = powerMapper.getUserTree(user.getUserId(),key);
}
//1级医院
List<Power_UserAndRoleTree> hosList = new ArrayList<>();
//2级权限系统
List<Power_UserAndRoleTree> powerList = new ArrayList<>();
//3级科室
List<Power_UserAndRoleTree> deptList = new ArrayList<>();
//4级系统
List<Power_UserAndRoleTree> sysList = new ArrayList<>();
//5级用户
List<Power_UserAndRoleTree> 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<Power_UserAndRoleTree> getUserTreeByHospitalId(Integer hospitalId) {
List<Power_User> userList = userMapper.getUserTreeByHospitalId(hospitalId);
List<Power_UserAndRoleTree> 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<Power_UserAndRoleTree> getUserTreeByDeptId(Integer deptId) {
List<Power_User> userList = userMapper.getUserTreeByDeptId(deptId);
List<Power_UserAndRoleTree> 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: idid
* @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<Power_Menu> getMenuBySysIdAndUerIdPowerTree(String sysFlag, Integer userId) {
//查询对应系统的且状态为可用的菜单集合
//系统标识查
Power_User user = userMapper.selectByPrimaryKey(userId);
List<Power_Menu> 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<Power_User_Menu> 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 userIdid, Integer dictIdid, 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<Power_User_Menu> 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<Power_Role_Menu> rolePowers = roleMenuMapper.selectRoleMenuPower(sysFlag, power_user.getRoleId());
if(null != rolePowers && !rolePowers.isEmpty()){
if(StringUtils.isBlank(menus)){
//全取消
List<Power_User_Menu> 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<String> roles = new ArrayList<>();
List<String> 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<String> inserts=new ArrayList<String>(users);
inserts.removeAll(roles);
if(null != inserts && !inserts.isEmpty()){
//新增flag为1
List<Power_User_Menu> list = new ArrayList<>();
for (String insertMenu : inserts) {
if(StringUtils.isNotBlank(insertMenu)){
list.add(addUserFunction(userName,userId,insertMenu,1));
}
}
userMenuMapper.simpleInsertUserMenu(list);
}
//删除部分
Collection<String> deletes=new ArrayList<String>(roles);
deletes.removeAll(users);
if(null != deletes && !deletes.isEmpty()){
List<Power_User_Menu> 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<Power_User_Menu> 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<PowerTree> getRolePowerTreeBySysFlag(String sysFlag,Power_User user) {
//根据系统标识查询科室id
List<Power_Sys_DictVo> 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<Power_Sys_DictVo> userList = new ArrayList<>();
List<PowerTree> treeList = new ArrayList<>();
int id = 0;
int oneLevel = 0;
int twoLevel = 0;
Map<Integer,String> 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<String,String> deptNameSet = new HashMap<>();
Map<Integer,Power_Sys_DictVo> poweSysNameSet = new HashMap<>();
Set<Integer> 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<Integer,Power_Sys_DictVo> 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<Integer,String> 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<PowerTree> getUserPowerTreeBySysFlag(String sysFlag,Power_User user) {
//根据系统标识查询科室id
List<Power_Sys_DictVo> 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<Power_Sys_DictVo> userList = new ArrayList<>();
List<PowerTree> treeList = new ArrayList<>();
int id = 0;
int oneLevel = 0;
int twoLevel = 0;
Map<Integer,String> 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<String,String> deptNameSet = new HashMap<>();
Map<Integer,Power_Sys_DictVo> poweSysNameSet = new HashMap<>();
Set<Integer> 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<Integer,Power_Sys_DictVo> roleMap = new HashMap<>();
//sysName 用户idhospitalTel 手机号,dictArea用户名parentId角色idsysType角色名
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<Integer,Power_Sys_DictVo> 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<PowerTree> getDictPowerTree(String content) {
//roleId为0为系统管理员系统管理员全查其余按医院查
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER");
List<Power_Sys_DictVo> 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<PowerTree> 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<Integer,String> 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<Integer,String> deptNameSet = new HashMap<>();
Map<Integer,Power_Sys_DictVo> 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<Integer,String> 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;
}
}