diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreMemTreeService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreMemTreeService.java index 65b34e1..508ebe1 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreMemTreeService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreMemTreeService.java @@ -79,9 +79,15 @@ public interface ICoreMemTreeService { @ApiOperation(value = "分装组织树",notes = "根据制定ID分装组织树") SysOrganize packTreeSysOrganizeById(List list, Long id); + @ApiOperation(value = "找到相应字节点",notes = "从一棵树中找到相应的子节点") + SysOrganize getTreeSysOrganizeById(List list, Long id); + @ApiOperation(value = "查询组织子节点",notes = "查询字节点组织ID") List findChildSysOrganize(SysOrganize organize); + @ApiOperation(value = "查询组织子节点",notes = "查询字节点组织ID") + List findSysOrganizeChildIdList(Long id); + /********************************************* End SysOrganize Tree *********************************************/ /********************************************* Start CommonTreeModel Tree *********************************************/ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrganizeController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrganizeController.java index b2f8a39..c0ee446 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrganizeController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysOrganizeController.java @@ -166,15 +166,31 @@ public class SysOrganizeController extends CoreBaseController{ @ApiOperation(value="查询组织",notes="组合查询组织外加分页") public ResultBean queryPosition(SysOrganize organize, Pager pager){ try{ - List refList = personnelService.findSysRefUserDepartmentByUserId(getSessionUser().getUser().getId()); - if(refList != null && refList.size() > 0){ - List idList = new ArrayList<>(refList.size()); - refList.forEach(ref ->idList.add(ref.getOrganizeId())); + List idList = new ArrayList<>(); - return ResultBean.success("操作成功").setListPager(organizeService.querySysOrganize(organize, idList, pager)) - .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + if(AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)){ + if(organize.getParentId() != null){ + idList = coreMemTreeService.findSysOrganizeChildIdList(organize.getParentId()); + } + }else{ + List refList = personnelService.findSysRefUserDepartmentByUserId(getSessionUser().getUser().getId()); + if(organize.getParentId() == null || organize.getParentId() <= 0){ + if(refList != null && refList.size() > 0){ + for (SysRefUserDepartment ref : refList) { + idList.add(ref.getOrganizeId()); + } + } + }else{ + List rootTreeList = personnelService.findSysOrganizeList(); + rootTreeList = coreMemTreeService.packTreeSysOrganize(rootTreeList,CommonEnumUtil.PARENT.DEFAULT.getValue()); + rootTreeList = coreMemTreeService.packTreeSysOrganizeBySysRefUserOrganize(rootTreeList,refList); + SysOrganize sysOrganizeTree = coreMemTreeService.getTreeSysOrganizeById(rootTreeList, organize.getParentId()); + idList = coreMemTreeService.findChildSysOrganize(sysOrganizeTree); + } } - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + + ListPager result = organizeService.querySysOrganize(organize, idList, pager); + return ResultBean.success("操作成功").setListPager(result).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); }catch(ImppBusiException busExcep){ return ResultBean.fail(busExcep); }catch(Exception e){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreMemTreeService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreMemTreeService.java index 89dc392..dad4c69 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreMemTreeService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreMemTreeService.java @@ -202,18 +202,55 @@ public class CoreMemTreeService implements ICoreMemTreeService { } @Override + public SysOrganize getTreeSysOrganizeById(List list, Long id) { + SysOrganize result = null; + if(list != null && list.size() > 0){ + for (SysOrganize organize : list) { + if(organize.getId().equals(id)){ + result = organize; + } else if(organize.getChildList() != null && organize.getChildList().size() > 0){ + result = getTreeSysOrganizeById(organize.getChildList(), id); + } + if(result != null){ + return result; + } + } + } + return result; + } + + @Override public List findChildSysOrganize(SysOrganize organize) { List result = new ArrayList<>(); - if(organize != null && organize.getChildList() != null && organize.getChildList().size() > 0){ - for (SysOrganize so : organize.getChildList()) { - result.add(so.getId()); - result.addAll(findChildSysOrganize(so)); + if(organize != null){ + if(organize.getChildList() != null && organize.getChildList().size() > 0){ + for (SysOrganize so : organize.getChildList()) { + result.add(so.getId()); + result.addAll(findChildSysOrganize(so)); + } } + result.add(organize.getId()); } return result; } + + @Override + public List findSysOrganizeChildIdList(Long id) { + SysOrganize organize = personnelService.getSysOrganizeById(id); + if(organize != null){ + List list = personnelService.findSysOrganizeList(); + if(list != null && list.size() > 0){ + SysOrganize treeSPosition = packTreeSysOrganizeById(list, organize.getId()); + List idList = findChildSysOrganize(treeSPosition); + idList.add(organize.getId()); + return idList; + } + } + return null; + } + /********************************************* End SysOrganize Tree *********************************************/ diff --git a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestUser.java b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestUser.java index 837d2e2..df0a8b3 100644 --- a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestUser.java +++ b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/TestUser.java @@ -448,7 +448,7 @@ // @Test // public void testUserInfo() throws Exception { // List roleList = roleService.findSysRoleAll(); -// List positionList = positionService.listSysPosition(); +// List positionList = positionService.findSysPositionAll(); // List departmentList = departmentService.listSysDepartment(); // // for (int y = 0; y < 10; y++) { @@ -655,7 +655,7 @@ // // public void testUserDetailModel(){ // List roleList = roleService.findSysRoleAll(); -// List positionList = positionService.listSysPosition(); +// List positionList = positionService.findSysPositionAll(); // List departmentList = departmentService.listSysDepartment(); // // UserDetailModel model = new UserDetailModel();