package com.artfess.rescue.utils; import com.artfess.base.context.BaseContext; import com.artfess.base.feign.UCFeignService; import com.artfess.base.query.FieldRelation; import com.artfess.base.query.QueryFilter; import com.artfess.base.query.QueryOP; import com.artfess.base.util.AppUtil; import com.artfess.base.util.BeanUtils; import com.artfess.base.util.StringUtil; import com.artfess.uc.api.impl.util.ContextUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.fasterxml.jackson.databind.node.ObjectNode; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Component public class UserControlUtils { @Resource UCFeignService feignService; @Resource BaseContext baseContext; /** * 限制在部门层级,自己部门查看自己部门的数据 * * @param queryFilter */ public void addDeptPermission(QueryFilter queryFilter) { String deptId = baseContext.getCurrentDeptId(); List childOrg = feignService.getChildOrg(deptId); List collect = new ArrayList<>(); for (ObjectNode jsonNodes : childOrg) { String id = jsonNodes.get("id").asText(); collect.add(id); } collect.add(deptId); String orgIds = collect.stream().collect(Collectors.joining(",")); queryFilter.addFilter("CREATE_COMPANY_ID_", String.join("','", orgIds), QueryOP.IN, FieldRelation.AND); } /** * 限制在部门层级,自己部门查看自己部门的数据 * * @param queryFilter */ public void addOrgPermission(QueryFilter queryFilter, String orgName) { String orgId = baseContext.getCurrentOrgId(); List childOrg = feignService.getChildOrg(orgId); List collect = new ArrayList<>(); for (ObjectNode jsonNodes : childOrg) { String id = jsonNodes.get("id").asText(); collect.add(id); } collect.add(orgId); String orgIds = collect.stream().collect(Collectors.joining(",")); queryFilter.addFilter(orgName, String.join("','", orgIds), QueryOP.IN, FieldRelation.AND); } /** * 获取当前用户组织下所有子组织 * @return */ // public List getOrgIds(){ // String currentOrgId = baseContext.getCurrentOrgId(); // List childOrg = feignService.getChildOrg(currentOrgId); // List collect = new ArrayList<>(); // for (ObjectNode jsonNodes : childOrg) { // String id = jsonNodes.get("id").asText(); // collect.add(id); // } // collect.add(currentOrgId); // return collect; // } public List getOrgIds(){ String currentOrgId = baseContext.getCurrentOrgId(); List childOrg = feignService.getOrgHierarchy(currentOrgId); List collect = new ArrayList<>(); for (ObjectNode jsonNodes : childOrg) { String id = jsonNodes.get("id").asText(); collect.add(id); } collect.add(currentOrgId); return collect; } public List getOrgIds(String currentOrgId){ List childOrg = feignService.getChildOrg(currentOrgId); List collect = new ArrayList<>(); for (ObjectNode jsonNodes : childOrg) { String id = jsonNodes.get("id").asText(); collect.add(id); } collect.add(currentOrgId); return collect; } public String getOrgGrade(){ //定义查询的级别 List gradeList=new ArrayList<>(); gradeList.add("1"); gradeList.add("2"); gradeList.add("3"); UCFeignService service = AppUtil.getBean(UCFeignService.class); String userId = baseContext.getCurrentUserId(); if(StringUtil.isNotEmpty(userId)) { ObjectNode orgObj = service.getMainGroup(userId); //当满足该级别且为ogn时,直接返回组织id,否则递归去查找,直到满足条件 if (BeanUtils.isNotEmpty(orgObj)) { String orgKind = orgObj.get("orgKind").asText(); String grade = orgObj.get("grade").asText(); if(orgKind.equals("ogn")&&gradeList.contains(grade)){ return orgObj.get("id").asText(); } else { return getParentOrgGrade(orgObj.get("parentId").asText(),"id"); } } } return ""; } public static String getParentOrgGrade(String parentId,String attrName){ try { //定义查询的级别 List gradeList=new ArrayList<>(); gradeList.add("1"); gradeList.add("2"); gradeList.add("3"); UCFeignService service = AppUtil.getBean(UCFeignService.class); ObjectNode parentOrgObj = service.getOrgByIdOrCode(parentId); if(BeanUtils.isNotEmpty(parentOrgObj)){ String orgKind = parentOrgObj.get("orgKind").asText(); String grade = parentOrgObj.get("grade").asText(); if(orgKind.equals("ogn")&&gradeList.contains(grade)){ return parentOrgObj.get(attrName).asText(); } else{ String parentOrgParentId = parentOrgObj.get("parentId").asText(); return getParentOrgGrade(parentOrgParentId,attrName); } } } catch (Exception e) { } return ""; } /** * 增加创建单位,限制为当前用户的单位 * * @param queryFilter */ public void addPermissionByCreateOrgId(QueryFilter queryFilter) { String currentOrgId = baseContext.getCurrentOrgId(); List childOrg = feignService.getChildOrg(currentOrgId); List collect = new ArrayList<>(); for (ObjectNode jsonNodes : childOrg) { String id = jsonNodes.get("id").asText(); collect.add(id); } collect.add(currentOrgId); String orgIds = collect.stream().collect(Collectors.joining(",")); queryFilter.addFilter("CREATE_ORG_ID_", String.join("','", orgIds), QueryOP.IN, FieldRelation.AND); } /** * 权限限制-查询自己部门的 * * @param queryFilter */ public void addPermissionByCreateDeptId(QueryFilter queryFilter) { String deptId = baseContext.getCurrentDeptId(); queryFilter.addFilter("CREATE_COMPANY_ID_", deptId, QueryOP.EQUAL, FieldRelation.AND); } }