package com.norteksoft.acs.base.utils; import java.util.ArrayList; import java.util.List; import com.norteksoft.acs.base.enumeration.ConditionType; import com.norteksoft.acs.entity.authorization.Role; import com.norteksoft.acs.service.authorization.StandardRoleManager; import com.norteksoft.mms.module.entity.Menu; import com.norteksoft.mms.module.service.MenuManager; import com.norteksoft.product.util.ContextUtils; import com.norteksoft.product.util.JsonParser; import com.norteksoft.product.util.ZTreeUtils; import com.norteksoft.product.util.tree.TreeNode; import com.norteksoft.product.util.tree.ZTreeNode; import com.norteksoft.product.web.struts2.Struts2Utils; /** * 数据授权获取ItemType树 * @author Administrator * */ public class PermissionItemTreeUtil { /** * 获得系统角色树 * @return */ public static String getSystemRoleTree(){ List<ZTreeNode> treeNodes = new ArrayList<ZTreeNode>(); MenuManager menuManager = (MenuManager)ContextUtils.getBean("menuManager"); boolean isHasBranch = ContextUtils.hasBranch();//当前租户内是否有分支机构 StandardRoleManager standardRoleManager = (StandardRoleManager)ContextUtils.getBean("standardRoleManager"); List<Menu> menus = menuManager.getEnabledStandardRootMenuByCompany(); for(Menu menu:menus){ ZTreeNode root = new ZTreeNode("systemId~~"+menu.getSystemId()+"~~"+menu.getName(),"0",menu.getName(), "false", "false", "", "", "folder", ""); treeNodes.add(root); List<Role> roles=standardRoleManager.getAllStandardRole(menu.getSystemId()); roleSystemTree(roles,isHasBranch,treeNodes,"systemId~~"+menu.getSystemId()+"~~"+menu.getName(),"~~"); } return JsonParser.object2Json(treeNodes); } /** * 数据分类中获取用户+标准值树 * 创建人时的树:人员树+当前用户+直属上级+直属下级 * @param usersList * @param departments * @return */ public static String getCreatorTree(String currentTreeId) { //******************标准值树******************************* List<ZTreeNode> treeNodes = new ArrayList<ZTreeNode>(); if(currentTreeId.equals("0")){//只是初始化时才加载标准值树,点击部门或分支机构节点时不加载该标准值树 ZTreeNode root = new ZTreeNode("standard~~all","0","标准值", "true", "false", "", "", "department", ""); treeNodes.add(root); String standarName = null; standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_ID.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_ID+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_DIRECT_SUPERIOR_ID.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_DIRECT_SUPERIOR_ID+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_DIRECT_LOWER_ID.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_DIRECT_LOWER_ID+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); } return JsonParser.object2Json(treeNodes); } /** * 数据分类中获取部门+标准值树 * 创建人部门时的树:部门树+当前用户部门+上级部门+顶级部门+下级部门+下级部门(继承)+直属上级的部门+直属下级的部门 * @param columns * @param currentTreeId * @param showStandardField * @return */ public static String getDepartmentTree( String currentTreeId) { //******************标准值树******************************* List<ZTreeNode> treeNodes = new ArrayList<ZTreeNode>(); if(currentTreeId.equals("0")){//只是初始化时才加载标准值树,点击部门或分支机构节点时不加载该标准值树 ZTreeNode root = new ZTreeNode("standard~~all","0","标准值", "true", "false", "", "", "department", ""); treeNodes.add(root); String standarName = null; standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_DEPARTMENT.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_DEPARTMENT+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_SUPERIOR_DEPARTMENT.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_SUPERIOR_DEPARTMENT+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_TOP_DEPARTMENT.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_TOP_DEPARTMENT+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_CHILD_DEPARTMENT.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_CHILD_DEPARTMENT+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_CHILDREN_DEPARTMENT.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_CHILDREN_DEPARTMENT+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_DIRECT_SUPERIOR_DEPARTMENT.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_DIRECT_SUPERIOR_DEPARTMENT+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_DIRECT_LOWER_DEPARTMENT.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_DIRECT_LOWER_DEPARTMENT+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); } return JsonParser.object2Json(treeNodes); } /** * 数据分类中获取角色+标准值树 * 创建人的角色时的树:创建人拥有权限的角色树+当前用户角色+直属上级角色+直属下级角色 * @return */ public static String getRoleTree(){ //******************标准值树******************************* List<ZTreeNode> treeNodes = new ArrayList<ZTreeNode>(); ZTreeNode root = new ZTreeNode("standard~~all","0","标准值", "true", "false", "", "", "folder", ""); treeNodes.add(root); String standarName = null; standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_ROLE.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_ROLE+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "folder", ""); treeNodes.add(root); standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_DIRECT_SUPERIOR_ROLE.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_DIRECT_SUPERIOR_ROLE+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "folder", ""); treeNodes.add(root); standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_DIRECT_LOWER_ROLE.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_DIRECT_LOWER_ROLE+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "folder", ""); treeNodes.add(root); //******************角色树**************************** boolean isHasBranch = ContextUtils.hasBranch();//当前租户内是否有分支机构 MenuManager menuManager = (MenuManager)ContextUtils.getBean("menuManager"); StandardRoleManager standardRoleManager = (StandardRoleManager)ContextUtils.getBean("standardRoleManager"); root = new ZTreeNode("allRole","0","角色", "false", "false", "", "", "folder", ""); treeNodes.add(root); List<Menu> menus = menuManager.getEnabledStandardRootMenuByCompany(); for(Menu menu:menus){ root = new ZTreeNode("systemId~~"+menu.getSystemId()+"~~"+menu.getName(),"allRole",menu.getName(), "false", "false", "", "", "folder", ""); treeNodes.add(root); List<Role> roles=standardRoleManager.getAllStandardRole(menu.getSystemId()); roleSystemTree(roles,isHasBranch,treeNodes,"systemId~~"+menu.getSystemId()+"~~"+menu.getName(),null); } return JsonParser.object2Json(treeNodes); } private static List<TreeNode> roleSystemTree(List<Role> roles,boolean isHasBranch,List<ZTreeNode> treeNodes,String parentId,String operatorFlag) { if(operatorFlag==null)operatorFlag = "_"; List<TreeNode> roleTreeNodes = new ArrayList<TreeNode>(); TreeNode rolesTreeContent = null; for (Role role : roles) { String nodeId = ""; String nodeName = ""; if(isHasBranch){ nodeId = "role"+operatorFlag+role.getId()+"~~"+role.getName()+"("+role.getBusinessSystem().getName()+"/"+role.getSubCompanyName()+")"; nodeName = role.getName()+"("+role.getSubCompanyName()+")"; }else{ nodeId = "role"+operatorFlag+role.getId()+"~~"+role.getName()+"("+role.getBusinessSystem().getName()+")"; nodeName = role.getName(); } ZTreeNode root = new ZTreeNode(nodeId,parentId ,nodeName, "false", "false", "", "", "folder", ""); treeNodes.add(root); roleTreeNodes.add(rolesTreeContent); } return roleTreeNodes; } /** * 数据分类中获取工作组+标准值树 * 创建人的工作组时的树:工作组树+当前用户工作组+直属上级的工作组+直属下级的工作组 * @param columns * @param currentTreeId * @return */ public static String getWorkgroupTree(String currentTreeId) { List<ZTreeNode> treeNodes = new ArrayList<ZTreeNode>(); //******************标准值树******************************* ZTreeNode root = new ZTreeNode("standard~~all","0","标准值", "true", "false", "", "", "department", ""); treeNodes.add(root); String standarName = null; standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_WORKGROUP.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_WORKGROUP+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_DIRECT_SUPERIOR_WORKGROUP.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_DIRECT_SUPERIOR_WORKGROUP+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); standarName = Struts2Utils.getText(ConditionType.CURRENT_USER_DIRECT_LOWER_WORKGROUP.getCode()); root = new ZTreeNode("standard~~"+ConditionType.CURRENT_USER_DIRECT_LOWER_WORKGROUP+"=="+standarName,"standard~~all",standarName, "false", "false", "", "", "department", ""); treeNodes.add(root); return JsonParser.object2Json(treeNodes); } }