Commit 0164ee44 by 李小龙

组织树结构越级

parent f587ac7c
...@@ -55,19 +55,6 @@ public class PlatOrgController { ...@@ -55,19 +55,6 @@ public class PlatOrgController {
return ApiResponseUtils.success(platOrgService.subOrgList(platOrgQueryDTO)); return ApiResponseUtils.success(platOrgService.subOrgList(platOrgQueryDTO));
} }
@Action(module = "平台端-组织", name = "树形列表", code = "plat:org:tree")
@ApiOperation("树形列表")
@PostMapping("tree")
public ApiResponseEntity<List<PlatOrg>> tree(@RequestBody PlatOrgQueryDTO tntDept){
return ApiResponseUtils.success(platOrgService.tree(tntDept));
}
@ApiOperation("树形列表(AuthIgnore)")
@PostMapping("treeAuthIgnore")
public ApiResponseEntity<List<PlatOrg>> treeAuthIgnore(@RequestBody PlatOrgQueryDTO tntDept){
return ApiResponseUtils.success(platOrgService.tree(tntDept));
}
@Action(module = "平台端-组织", name = "新增", code = "plat:org:add") @Action(module = "平台端-组织", name = "新增", code = "plat:org:add")
@ApiOperation("新增") @ApiOperation("新增")
@PostMapping("add") @PostMapping("add")
...@@ -98,16 +85,10 @@ public class PlatOrgController { ...@@ -98,16 +85,10 @@ public class PlatOrgController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@ApiOperation("左上方组织树")
@PostMapping("deptTree")
public ApiResponseEntity<List<PlatOrg>> tree(){
return ApiResponseUtils.success(platUserService.getDeptTreeList());
}
@ApiOperation("当前账号的权限级别树") @ApiOperation("当前账号的权限级别树")
@PostMapping("belongToScopeTree") @PostMapping("belongToScopeTree")
public ApiResponseEntity<List<PlatOrg>> belongToScopeTree(@RequestBody BaseIdDTO baseIdDTO){ public ApiResponseEntity<List<PlatOrg>> belongToScopeTree(@RequestBody PlatOrg param){
return ApiResponseUtils.success(platOrgService.belongToOrgTree()); return ApiResponseUtils.success(platOrgService.belongToOrgTree(param));
} }
@ApiOperation("启用|禁用") @ApiOperation("启用|禁用")
......
...@@ -150,12 +150,6 @@ public class PlatRoleController { ...@@ -150,12 +150,6 @@ public class PlatRoleController {
return ApiResponseUtils.success(platUserService.getHotelList(deptDTO.getOrgId())); return ApiResponseUtils.success(platUserService.getHotelList(deptDTO.getOrgId()));
} }
@ApiOperation("管理范围可选值2")
@PostMapping("getCandidateDeptList2")
public ApiResponseEntity<List<PlatOrg>> getCandidateDeptList2(@RequestBody BaseOrgDTO deptDTO) {
return ApiResponseUtils.success(platUserService.getCandidateDeptList());
}
@Action(module = "平台端-角色", name = "分配管理权限", code = "tnt:role:assignDeptList") @Action(module = "平台端-角色", name = "分配管理权限", code = "tnt:role:assignDeptList")
@ApiOperation("分配管理权限") @ApiOperation("分配管理权限")
@PostMapping("assignDeptList") @PostMapping("assignDeptList")
......
...@@ -28,5 +28,5 @@ public class SysFileDTOVO extends BaseIdDTO { ...@@ -28,5 +28,5 @@ public class SysFileDTOVO extends BaseIdDTO {
private String fullPdfUrl; private String fullPdfUrl;
@ApiModelProperty("上传key") @ApiModelProperty("上传key")
private String Key; private String key;
} }
package com.makeit.module.controller.workstation;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "平台端-工作台")
@RestController
@RequestMapping("/plat/workstation")
public class WorkStationController {
}
...@@ -43,7 +43,7 @@ public class PlatOrg extends BaseBusEntity { ...@@ -43,7 +43,7 @@ public class PlatOrg extends BaseBusEntity {
private String status; private String status;
/** /**
* 类型 1-居家 2-机构 * 类型 1-居家 2-机构养老
*/ */
private String type; private String type;
...@@ -57,6 +57,9 @@ public class PlatOrg extends BaseBusEntity { ...@@ -57,6 +57,9 @@ public class PlatOrg extends BaseBusEntity {
private List<PlatOrg> children = new ArrayList<>(); private List<PlatOrg> children = new ArrayList<>();
@TableField(exist = false) @TableField(exist = false)
private String parentNodeId;
@TableField(exist = false)
private PlatOrg parent; private PlatOrg parent;
} }
\ No newline at end of file
...@@ -22,30 +22,11 @@ public interface PlatOrgService extends IService<PlatOrg> { ...@@ -22,30 +22,11 @@ public interface PlatOrgService extends IService<PlatOrg> {
List<PlatOrg> list(PlatOrgQueryDTO dto); List<PlatOrg> list(PlatOrgQueryDTO dto);
List<PlatOrg> tree(PlatOrgQueryDTO dto);
List<PlatOrg> treeCount(PlatOrgQueryDTO dto);
List<PlatOrg> tree(List<PlatOrg> tntDeptList);
List<PlatOrg> treeTop(List<PlatOrg> tntDeptList); List<PlatOrg> treeTop(List<PlatOrg> tntDeptList);
Map<String, PlatOrg> treeParentAndChildren(List<PlatOrg> tntDeptList);
List<PlatOrg> findSelfAndAllChildren(String deptId); List<PlatOrg> findSelfAndAllChildren(String deptId);
/**
* 根据部门名称获取部门及部门一下部门的数据集合
* @param deptId
* @param deptName
* @return
*/
List<PlatOrg> getDeptSelfAndChildrenByDeptName(String deptId, String deptName);
List<PlatOrg> findSelfAndAllParent(String deptId); List<PlatOrg> findSelfAndAllParent(String deptId);
...@@ -89,7 +70,7 @@ public interface PlatOrgService extends IService<PlatOrg> { ...@@ -89,7 +70,7 @@ public interface PlatOrgService extends IService<PlatOrg> {
* 当前账号所属角色的权限级别,可查看某一级或者某一级及其下级 * 当前账号所属角色的权限级别,可查看某一级或者某一级及其下级
* @return * @return
*/ */
List<PlatOrg> belongToOrgTree(); List<PlatOrg> belongToOrgTree(PlatOrg param);
/** /**
* 启用|禁用 * 启用|禁用
......
...@@ -88,11 +88,6 @@ public interface PlatUserService extends IService<PlatUser> { ...@@ -88,11 +88,6 @@ public interface PlatUserService extends IService<PlatUser> {
PlatRole getMaxRole(String userId); PlatRole getMaxRole(String userId);
List<PlatOrg> getDeptTreeList();
/** /**
* 根据部门名称获取部门列表 * 根据部门名称获取部门列表
* *
...@@ -106,8 +101,6 @@ public interface PlatUserService extends IService<PlatUser> { ...@@ -106,8 +101,6 @@ public interface PlatUserService extends IService<PlatUser> {
List<PlatOrg> getHotelList(String deptId); List<PlatOrg> getHotelList(String deptId);
List<PlatOrg> getCandidateDeptList();
List<PlatMenu> getMenuListByUserId(String userId); List<PlatMenu> getMenuListByUserId(String userId);
/** /**
......
...@@ -135,29 +135,6 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg> ...@@ -135,29 +135,6 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
} }
@Override @Override
public List<PlatOrg> tree(List<PlatOrg> tntDeptList) {
Map<String, PlatOrg> map = StreamUtil.toMap(tntDeptList, PlatOrg::getId);
List<PlatOrg> topList = new ArrayList<>(10);
tntDeptList.forEach(e -> {
PlatOrg parent = map.get(e.getParentId());
if (parent != null) {
List<PlatOrg> children = parent.getChildren();
if (children == null) {
children = new ArrayList<>(10);
parent.setChildren(children);
}
children.add(e);
} else {
topList.add(e);
}
});
return topList;
}
@Override
public List<PlatOrg> treeTop(List<PlatOrg> tntDeptList) { public List<PlatOrg> treeTop(List<PlatOrg> tntDeptList) {
Map<String, PlatOrg> map = StreamUtil.toMap(tntDeptList, PlatOrg::getId); Map<String, PlatOrg> map = StreamUtil.toMap(tntDeptList, PlatOrg::getId);
...@@ -179,30 +156,6 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg> ...@@ -179,30 +156,6 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
} }
@Override @Override
public Map<String, PlatOrg> treeParentAndChildren(List<PlatOrg> tntDeptList) {
Map<String, PlatOrg> map = StreamUtil.toMap(tntDeptList, PlatOrg::getId);
tntDeptList.forEach(e -> {
PlatOrg parent = map.get(e.getParentId());
if (parent != null) {
List<PlatOrg> children = parent.getChildren();
if (children == null) {
children = new ArrayList<>(10);
parent.setChildren(children);
}
children.add(e);
e.setParent(parent);
}
});
return map;
}
@Override
public List<PlatOrg> findSelfAndAllChildren(String deptId) {//只能从酒店或者部门开始 public List<PlatOrg> findSelfAndAllChildren(String deptId) {//只能从酒店或者部门开始
List<PlatOrg> deptList = list(new QueryWrapper<PlatOrg>().lambda() List<PlatOrg> deptList = list(new QueryWrapper<PlatOrg>().lambda()
...@@ -217,24 +170,6 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg> ...@@ -217,24 +170,6 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
return list; return list;
} }
@Override
public List<PlatOrg> getDeptSelfAndChildrenByDeptName(String deptId, String deptName) {
//获取所有酒店层级的部门列表
List<PlatOrg> selfAndChildren = findSelfAndAllChildren(deptId);
if (CollectionUtils.isNotEmpty(selfAndChildren)) {
//获取对应部门名称的部门数据
List<PlatOrg> tntDepts = StreamUtil.filter(selfAndChildren, e -> deptName.equals(e.getName()));
if (CollectionUtils.isNotEmpty(tntDepts)) {
List<PlatOrg> platOrgFilterByName = tree(selfAndChildren, Arrays.asList(tntDepts.get(0).getId()));
List<PlatOrg> tntDeptArrayList = new ArrayList<>(10);
flat(platOrgFilterByName, tntDeptArrayList);
return tntDeptArrayList;
}
}
return new ArrayList<>();
}
@Override @Override
public List<PlatOrg> findSelfAndAllParent(String deptId) { public List<PlatOrg> findSelfAndAllParent(String deptId) {
...@@ -330,44 +265,6 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg> ...@@ -330,44 +265,6 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
} }
@Override
public List<PlatOrg> tree(PlatOrgQueryDTO dto) {
List<PlatOrg> list = list(dto);
return tree(list);
}
@Override
public List<PlatOrg> treeCount(PlatOrgQueryDTO dto) {
List<PlatOrg> list = list(dto);
List<PlatOrg> tree = tree(list);
Map<PlatOrg, List<PlatOrg>> deptMap = new HashMap<>(16);
List<PlatOrg> deptList = new ArrayList<>(tree);
for (int i = 0; i < deptList.size(); i++) {
PlatOrg d = deptList.get(i);
List<PlatOrg> c = new ArrayList<>();
c.add(d);
for (int i1 = 0; i1 < c.size(); i1++) {
PlatOrg ctd = c.get(i1);
if (ctd.getChildren() != null) {
c.addAll(ctd.getChildren());
}
}
if (d.getChildren() != null) {
deptList.addAll(d.getChildren());
}
deptMap.put(d, c);
}
return tree;
}
@Transactional @Transactional
@Override @Override
...@@ -468,18 +365,22 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg> ...@@ -468,18 +365,22 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
/** /**
* 获取权限范围树 * 获取权限范围树
* 当前账号所属角色的权限级别,可查看某一级或者某一级及其下级 * 当前账号所属角色的权限级别
* 越级树结构
*
* *
* @return * @return
*/ */
@Override @Override
public List<PlatOrg> belongToOrgTree() { public List<PlatOrg> belongToOrgTree(PlatOrg param) {
PlatUserVO userVO = PlatUserUtil.getUserVO(); PlatUserVO userVO = PlatUserUtil.getUserVO();
String isTenant = userVO.getIsTenant(); String isTenant = userVO.getIsTenant();
//如果是租户账号 则有所有权限 //如果是租户账号 则有所有权限
if (StringUtils.equals(isTenant, CommonEnum.YES.getValue())) { if (StringUtils.equals(isTenant, CommonEnum.YES.getValue())) {
List<PlatOrg> orgList = this.list(new LambdaQueryWrapper<PlatOrg>().eq(PlatOrg::getStatus, CommonEnum.YES.getValue())); List<PlatOrg> orgList = this.list(new LambdaQueryWrapper<PlatOrg>()
return getOrgTree(orgList); .eq(PlatOrg::getStatus, CommonEnum.YES.getValue())
);
return getOrgTree(orgList, Collections.singletonList(TenantIdUtil.getTenantId()));
} }
//平台账号 //平台账号
...@@ -488,14 +389,8 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg> ...@@ -488,14 +389,8 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
if (CollectionUtils.isEmpty(orgList)) { if (CollectionUtils.isEmpty(orgList)) {
return new ArrayList<>(); return new ArrayList<>();
} }
Set<String> allOrgIdSet = orgList.stream().flatMap(vo -> {
String path = vo.getPath(); return createOrgTree(orgList);
String[] split = StringUtils.split(path, ",");
return Stream.of(split);
}).collect(Collectors.toSet());
List<PlatOrg> allOrgList = this.list(new LambdaQueryWrapper<PlatOrg>().in(BaseEntity::getId, allOrgIdSet).eq(PlatOrg::getStatus, CommonEnum.YES.getValue()));
orgList.addAll(allOrgList);
return getOrgTree(orgList);
} }
/** /**
...@@ -519,17 +414,55 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg> ...@@ -519,17 +414,55 @@ public class PlatOrgServiceImpl extends ServiceImpl<PlatOrgMapper, PlatOrg>
} }
/** /**
* 从租户开始的组织树 * 租户权限的组织树
* @param orgList * @param orgList
* @return * @return
*/ */
private List<PlatOrg> getOrgTree(List<PlatOrg> orgList) { private List<PlatOrg> getOrgTree(List<PlatOrg> orgList,List<String> dateScopeList) {
Map<String, List<PlatOrg>> parentIdMap = orgList.stream().collect(Collectors.groupingBy(PlatOrg::getParentId)); Map<String, List<PlatOrg>> parentIdMap = orgList.stream().collect(Collectors.groupingBy(PlatOrg::getParentId));
orgList.forEach(vo -> { orgList.forEach(vo -> {
List<PlatOrg> childList = parentIdMap.get(vo.getId()); List<PlatOrg> childList = parentIdMap.get(vo.getId());
vo.setChildren(childList); vo.setChildren(childList);
}); });
return orgList.stream().filter(vo -> StringUtils.equals(vo.getTenantId(), vo.getId())).collect(Collectors.toList()); return orgList.stream().filter(vo -> dateScopeList.contains(vo.getId())).collect(Collectors.toList());
}
/**
* 租户权限的组织树
* a,a1,d,d1,d2,e,(e2没权限),e3
* a->a1
* d->d1->d2
* e->e3
* @param orgList
* @return
*/
public List<PlatOrg> createOrgTree(List<PlatOrg> orgList) {
Map<String, PlatOrg> orgMap = orgList.stream().collect(Collectors.toMap(BaseEntity::getId, vo -> vo, (a, b) -> a));
for (PlatOrg platOrg : orgList) {
String[] split = platOrg.getPath().split(",");
findParent(orgMap,platOrg,split,split.length-1);
}
return orgList.stream().filter(vo->StringUtils.isBlank(vo.getParentNodeId())).collect(Collectors.toList());
}
/**
* 寻找最近的父节点
* @param orgMap 有权限的组织
* @param currOrg 当前组织
* @param orgArray 当前组织全路径
* @param index orgArray的下标
*/
private void findParent(Map<String,PlatOrg> orgMap,PlatOrg currOrg,String[] orgArray,int index){
PlatOrg platOrg = orgMap.get(orgArray[index]);
if(platOrg!=null){
platOrg.getChildren().add(currOrg);
currOrg.setParentNodeId(platOrg.getId());
return;
}
if(index==0){
return;
}
findParent(orgMap,currOrg,orgArray,--index);
} }
/** /**
......
...@@ -902,14 +902,6 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser> ...@@ -902,14 +902,6 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser>
return newList; return newList;
} }
@Override
public List<PlatOrg> getDeptTreeList() {//给左上角用
List<PlatOrg> newList = getDeptList();
return platOrgService.tree(newList);
}
@Override @Override
public List<PlatOrg> getDeptSelfAndChildrenByDeptName(List<String> deptNames, Map<String, PlatOrg> selfAndChildren) { public List<PlatOrg> getDeptSelfAndChildrenByDeptName(List<String> deptNames, Map<String, PlatOrg> selfAndChildren) {
if (CollectionUtils.isEmpty(deptNames)) { if (CollectionUtils.isEmpty(deptNames)) {
...@@ -973,12 +965,6 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser> ...@@ -973,12 +965,6 @@ public class PlatUserServiceImpl extends ServiceImpl<PlatUserMapper, PlatUser>
} }
@Override @Override
public List<PlatOrg> getCandidateDeptList() {//新增编辑角色 那边的管理范围 //不包含自己
List<PlatOrg> newList = getDeptList();
return platOrgService.tree(newList);
}
@Override
public List<PlatMenu> getMenuListByUserId(String userId) { public List<PlatMenu> getMenuListByUserId(String userId) {
return getBaseMapper().getMenuListByUserId(userId); return getBaseMapper().getMenuListByUserId(userId);
} }
......
...@@ -226,7 +226,7 @@ implements PlatTenantService { ...@@ -226,7 +226,7 @@ implements PlatTenantService {
//更新组织表 //更新组织表
platOrgService.edit(platOrg); platOrgService.edit(platOrg);
saasOperationLogService.add("平台端-租户账号-编辑", dto.getId()); saasOperationLogService.add("saas端-租户账号-编辑", dto.getId());
} }
...@@ -236,6 +236,7 @@ implements PlatTenantService { ...@@ -236,6 +236,7 @@ implements PlatTenantService {
platOrg.setName(platTenant.getName()); platOrg.setName(platTenant.getName());
platOrg.setStatus(platTenant.getStatus()); platOrg.setStatus(platTenant.getStatus());
platOrg.setId(platTenant.getId()); platOrg.setId(platTenant.getId());
platOrg.setPath("");
//租户没有父级 //租户没有父级
platOrg.setParentId("1"); platOrg.setParentId("1");
return platOrg; return platOrg;
...@@ -247,7 +248,7 @@ implements PlatTenantService { ...@@ -247,7 +248,7 @@ implements PlatTenantService {
TntUserJoinUtil.join(platUserService,Arrays.asList(userVO), PlatTenantDTOVO::getPlatUserId,(t,u)->t.setPlatUserVO(BeanDtoVoUtils.convert(u,PlatUserVO.class)) ,PlatUser::getId); TntUserJoinUtil.join(platUserService,Arrays.asList(userVO), PlatTenantDTOVO::getPlatUserId,(t,u)->t.setPlatUserVO(BeanDtoVoUtils.convert(u,PlatUserVO.class)) ,PlatUser::getId);
saasOperationLogService.add("平台端-租户账号-详情", id); saasOperationLogService.add("saas端-租户账号-详情", id);
return userVO; return userVO;
} }
...@@ -257,7 +258,7 @@ implements PlatTenantService { ...@@ -257,7 +258,7 @@ implements PlatTenantService {
public void del(String id) { public void del(String id) {
removeById(id); removeById(id);
saasOperationLogService.add("平台端-租户账号-删除", id); saasOperationLogService.add("saas端-租户账号-删除", id);
} }
...@@ -282,9 +283,9 @@ implements PlatTenantService { ...@@ -282,9 +283,9 @@ implements PlatTenantService {
updateById(tntTenant); updateById(tntTenant);
if (CommonEnum.YES.getValue().equals(dto.getStatus())) { if (CommonEnum.YES.getValue().equals(dto.getStatus())) {
saasOperationLogService.add("平台端-租户账号-启用", dto.getId()); saasOperationLogService.add("saas端-租户账号-启用", dto.getId());
} else { } else {
saasOperationLogService.add("平台端-租户账号-禁用", dto.getId()); saasOperationLogService.add("saas端-租户账号-禁用", dto.getId());
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment