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 e7064f3..76532c0 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 @@ -1,7 +1,7 @@ package cn.estsh.i3plus.core.api.iservice.busi; -import cn.estsh.i3plus.pojo.platform.bean.SysPosition; -import cn.estsh.i3plus.pojo.platform.bean.SysRefUserPosition; +import cn.estsh.i3plus.pojo.model.platform.CommonTreeModel; +import cn.estsh.i3plus.pojo.platform.bean.*; import io.swagger.annotations.ApiOperation; import java.util.List; @@ -59,5 +59,65 @@ public interface ICoreMemTreeService { @ApiOperation(value = "查询岗位子节点",notes = "查询字节点岗位ID") List findChildSysPosition(SysPosition position); + @ApiOperation(value = "查询岗位子节点",notes = "查询字节点岗位ID") + List findSysPositionChildIdList(Long id); + + /********************************************* Start SysOrganize Tree *********************************************/ + + @ApiOperation(value = "分装组织树",notes = "分装组织树") + List packTreeSysOrganize(List list,Long parentId); + + @ApiOperation(value = "分装组织树",notes = "根据用户组织关系分装组织树") + List packTreeSysOrganizeBySysRefUserOrganize(List list, List refList); + + @ApiOperation(value = "分装组织树",notes = "根据用户组织关系分装组织树") + List packTreeSysOrganizeBySysRefUserInfoOrganize(List list, List refList); + + @ApiOperation(value = "分装组织树",notes = "根据制定IDS分装组织树") + List packTreeSysOrganizeByIds(List list, List ids); + + @ApiOperation(value = "分装组织树",notes = "根据制定ID分装组织树") + SysOrganize packTreeSysOrganizeById(List list, Long id); + + @ApiOperation(value = "查询组织子节点",notes = "查询字节点组织ID") + List findChildSysOrganize(SysOrganize organize); + + /********************************************* End SysOrganize Tree *********************************************/ + + /********************************************* Start CommonTreeModel Tree *********************************************/ + + @ApiOperation(value = "组织树转TreeModel",notes = "根据帐号ID 分装TreeModel") + List packTreeTreeModelUser(List organizeList,List departmentList,List refList); + + @ApiOperation(value = "组织树转TreeModel",notes = "使用分装好的树转为TreeMode") + List packTreeTreeModelSysOrganize(List list); + + @ApiOperation(value = "组织树转TreeModel",notes = "使用分装好的树转为TreeMode") + List packTreeTreeModelSysDepartment(List list); + + List packTreeTreeModel(List list, List departmentList); + + /********************************************* End CommonTreeModel Tree *********************************************/ + + + /********************************************* Start SysDepartment Tree *********************************************/ + @ApiOperation(value = "分装部门树",notes = "分装部门树") + List packTreeSysDepartment(List list,Long parentId); + + @ApiOperation(value = "分装部门树",notes = "根据用户部门关系分装部门树") + List packTreeSysDepartmentBySysRefUserOrganize(List list, List refList); + + @ApiOperation(value = "分装部门树",notes = "根据用户部门关系分装部门树") + List packTreeSysDepartmentBySysRefUserInfoOrganize(List list, List refList); + + @ApiOperation(value = "分装部门树",notes = "根据制定IDS分装部门树") + List packTreeSysDepartmentByIds(List list, List ids); + + @ApiOperation(value = "分装部门树",notes = "根据制定ID分装部门树") + SysDepartment packTreeSysDepartmentById(List list, Long id); + + @ApiOperation(value = "查询部门子节点",notes = "查询字节点部门ID") + List findChildSysDepartment(SysDepartment organize); + /********************************************* End SysDepartment Tree *********************************************/ } diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java index b7bb4e1..e8dd211 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java @@ -85,7 +85,7 @@ public interface IPersonnelService { List findSysRoleByUserId(Long userId); @ApiOperation(value = "查询账号部门关系") - List findSysRefUserDepartmentById(Long userId); + List findSysRefUserDepartmentByUserId(Long userId); @ApiOperation(value = "查询账号部门关系") List querySysRefUserDepartmentByUserDetailModel(UserDetailModel model); @@ -99,12 +99,19 @@ public interface IPersonnelService { @ApiOperation(value = "查询账号部门关系") List findSysUserDepartmentByInfoId(Long infoId); + @ApiOperation(value = "查询所有部门信息") + List findSysUserDepartmentList(); + @ApiOperation(value = "查询用户部门关系") List findSysUserInfoOrganize(Long infoId); @ApiOperation(value = "查询账户组织关系") List findSysUserOrganize(Long infoId); + List findSysOrganizeList(); + + List findSysPositionList(); + @ApiOperation(value = "查询用户岗位关系") List findSysRefUserPositionById(Long infoId); diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysOrganizeService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysOrganizeService.java index 09d834e..68e1c86 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysOrganizeService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysOrganizeService.java @@ -4,6 +4,7 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import cn.estsh.i3plus.pojo.platform.bean.SysOrganize; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserDepartment; import io.swagger.annotations.ApiOperation; import java.util.List; @@ -71,6 +72,8 @@ public interface ISysOrganizeService { @ApiOperation(value = "查询组织信息",notes = "查询 组织信息(分页、组合)") ListPager querySysOrganize(SysOrganize organize, Pager pager); + ListPager querySysOrganize(SysOrganize organize,List idList, Pager pager); + /** * 根据id 数据 * @param id @@ -85,4 +88,12 @@ public interface ISysOrganizeService { */ @ApiOperation(value = "查询组织个数") long getSysOrganizeCount(); + + /** + * 根据 组织ID 查询当前用户所有组织数据 + * @return + */ + @ApiOperation(value = "查询当前用户所有组织数据",notes = "查询当前用户所有组织数据") + List findOrganizeIdByRefUsers(List sysRefUserDepartments); + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java index 4d069de..1f903b6 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java @@ -297,7 +297,7 @@ public class PersonnelController extends CoreBaseController { List refUserInfoDepartmentList = personnelService.findSysRefUserInfoDepartmentById(info.getId()); List refUserPositionList = personnelService.findSysRefUserPositionById(info.getId()); - List refUserDepartmentList = personnelService.findSysRefUserDepartmentById(user.getId()); + List refUserDepartmentList = personnelService.findSysRefUserDepartmentByUserId(user.getId()); List refUserRoleList = personnelService.findSysRefUserRoleById(user.getId()); SysFile image = info.getUserImageId() != null ? fileService.getSysFileById(info.getUserImageId()) : null; @@ -331,7 +331,7 @@ public class PersonnelController extends CoreBaseController { SysUser user = personnelService.getSysUserById(Long.parseLong(id)); - List refUserInfoDepartmentList = personnelService.findSysRefUserDepartmentById(user.getId()); + List refUserInfoDepartmentList = personnelService.findSysRefUserDepartmentByUserId(user.getId()); List refUserRoleList = personnelService.findSysRefUserRoleById(user.getId()); resultMap.put("refUserDepartmentList", refUserInfoDepartmentList); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMemTreeController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMemTreeController.java index dd51e35..17fd3c3 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMemTreeController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMemTreeController.java @@ -6,8 +6,8 @@ import cn.estsh.i3plus.core.api.iservice.busi.ISysPositionService; import cn.estsh.i3plus.platform.common.util.PlatformConstWords; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; -import cn.estsh.i3plus.pojo.platform.bean.SysPosition; -import cn.estsh.i3plus.pojo.platform.bean.SysRefUserPosition; +import cn.estsh.i3plus.pojo.model.platform.CommonTreeModel; +import cn.estsh.i3plus.pojo.platform.bean.*; import cn.estsh.i3plus.pojo.platform.repository.SysRefUserPositionRepository; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.exception.ImppBusiException; @@ -155,4 +155,49 @@ public class SysMemTreeController extends CoreBaseController { } } + /** + * 根据用户ID 获取用户组织树 + * @return + */ + @GetMapping(value="/organize/user") + @ApiOperation(value="查询岗位树",notes="通过部门主键获取岗位树,-1为根节点") + public ResultBean findSysOrganizeByUser() { + try { + List list = personnelService.findSysOrganizeList(); + List listTree = memTreeService.packTreeSysOrganize(list, CommonEnumUtil.PARENT.DEFAULT.getValue()); + List refList = personnelService.findSysRefUserDepartmentByUserId(getSessionUser().getUser().getId()); + List userTreeList = memTreeService.packTreeSysOrganizeBySysRefUserOrganize(listTree, refList); + + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(userTreeList); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + /** + * 根据用户ID 获取用户组织树 + * @return + */ + @GetMapping(value="/organize-department/user") + @ApiOperation(value="查询岗位树",notes="通过部门主键获取岗位树,-1为根节点") + public ResultBean findTreeModelUser() { + try { + List refList = personnelService.findSysRefUserDepartmentByUserId(getSessionUser().getUser().getId()); + if(refList != null && refList.size()> 0){ + List organizeList = personnelService.findSysOrganizeList(); + List departmentList = personnelService.findSysUserDepartmentList(); + + List result = memTreeService.packTreeTreeModelUser(organizeList, departmentList, refList); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result); + } + + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } } 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 3236956..b2f8a39 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 @@ -1,5 +1,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; +import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService; +import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; import cn.estsh.i3plus.core.api.iservice.busi.ISysOrganizeService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.tool.StringTool; @@ -9,6 +11,7 @@ import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.platform.bean.SysOrganize; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserDepartment; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; @@ -21,9 +24,13 @@ import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * @Description : 组织对外接口 @@ -42,6 +49,12 @@ public class SysOrganizeController extends CoreBaseController{ @Autowired private ISysOrganizeService organizeService; + @Autowired + private IPersonnelService personnelService; + + @Autowired + private ICoreMemTreeService coreMemTreeService; + /** * 新增组织 * @param organize 组织 @@ -133,8 +146,9 @@ public class SysOrganizeController extends CoreBaseController{ @ApiOperation(value = "查询所有组织", notes = "查询所有组织") public ResultBean findSysOrganizeAll() { try { - List list = organizeService.listSysOrganize(); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(list); + List refList = personnelService.findSysRefUserDepartmentByUserId(getSessionUser().getUser().getId()); + List result = organizeService.findOrganizeIdByRefUsers(refList); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); } catch (Exception e) { @@ -152,8 +166,15 @@ public class SysOrganizeController extends CoreBaseController{ @ApiOperation(value="查询组织",notes="组合查询组织外加分页") public ResultBean queryPosition(SysOrganize organize, Pager pager){ try{ - ListPager listPager = organizeService.querySysOrganize(organize, pager); - return ResultBean.success("操作成功").setListPager(listPager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + 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())); + + return ResultBean.success("操作成功").setListPager(organizeService.querySysOrganize(organize, idList, pager)) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + } + return ResultBean.success("操作成功").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/controller/busi/SysPositionController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPositionController.java index 5b8e13a..b7f6a91 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPositionController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysPositionController.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; +import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService; import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; import cn.estsh.i3plus.core.api.iservice.busi.ISysPositionService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -48,6 +49,9 @@ public class SysPositionController extends CoreBaseController { @Autowired private IPersonnelService personnelService; + @Autowired + private ICoreMemTreeService memTreeService; + /** * 返回内容添加岗位 * @@ -148,7 +152,14 @@ public class SysPositionController extends CoreBaseController { List refList = personnelService.findSysRefUserPositionById(getSessionUser().getUserInfo().getId()); if(refList != null && refList.size() > 0){ List idList = new ArrayList<>(); - refList.forEach(ref -> idList.add(ref.getPositionId())); + + if(position.getParentId() != null){ + idList = memTreeService.findSysPositionChildIdList(position.getParentId()); + }else{ + for (SysRefUserPosition ref : refList) { + idList.add(ref.getPositionId()); + } + } ListPager listPager = positionService.querySysPosition(position,idList, pager); return ResultBean.success("操作成功").setListPager(listPager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); 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 1c1a699..246e9a7 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 @@ -1,10 +1,13 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService; -import cn.estsh.i3plus.platform.common.util.CommonConstWords; +import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.platform.bean.SysPosition; -import cn.estsh.i3plus.pojo.platform.bean.SysRefUserPosition; +import cn.estsh.i3plus.pojo.base.enumutil.ModelEnumUtil; +import cn.estsh.i3plus.pojo.model.platform.CommonTreeModel; +import cn.estsh.i3plus.pojo.platform.bean.*; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -20,12 +23,15 @@ import java.util.List; @Service public class CoreMemTreeService implements ICoreMemTreeService { + @Autowired + private IPersonnelService personnelService; + @Override public List packTreeSysPosition(List list, Long parentId) { List result = new ArrayList<>(); - List copyList = new ArrayList<>(list); if(list != null && list.size() > 0){ + List copyList = new ArrayList<>(list); list.forEach(position -> { if(position.getParentId() != null && position.getParentId().equals(parentId)){ result.add(position); @@ -43,9 +49,7 @@ public class CoreMemTreeService implements ICoreMemTreeService { List ids = new ArrayList<>(refList.size()); if(refList != null && refList.size() > 0){ - refList.forEach(ref ->{ - ids.add(ref.getPositionId()); - }); + refList.forEach(ref -> ids.add(ref.getPositionId())); } return packTreeSysPositionByIds(list, ids); @@ -100,4 +104,299 @@ public class CoreMemTreeService implements ICoreMemTreeService { return result; } + + @Override + public List findSysPositionChildIdList(Long id) { + SysPosition position = personnelService.getSysPositionById(id); + if(position != null){ + List list = personnelService.findSysPositionList(); + if(list != null && list.size() > 0){ + List treeList = packTreeSysPosition(list, CommonEnumUtil.PARENT.DEFAULT.getValue()); + SysPosition treeSPosition = packTreeSysPositionById(treeList, position.getId()); + List idList = findChildSysPosition(treeSPosition); + idList.add(position.getId()); + return idList; + } + } + return null; + } + + /********************************************* Start SysOrganize Tree *********************************************/ + @Override + public List packTreeSysOrganize(List list, Long parentId) { + List result = new ArrayList<>(); + + if(list != null && list.size() > 0){ + List copyList = new ArrayList<>(list); + list.forEach(organize -> { + if(organize.getParentId() != null && organize.getParentId().equals(parentId)){ + result.add(organize); + copyList.remove(organize); + organize.setChildList(packTreeSysOrganize(copyList, organize.getId())); + } + }); + } + + return result; + } + + @Override + public List packTreeSysOrganizeBySysRefUserOrganize(List list, List refList) { + List ids = new ArrayList<>(refList.size()); + + if(refList != null && refList.size() > 0){ + refList.forEach(ref -> ids.add(ref.getOrganizeId())); + } + + return packTreeSysOrganizeByIds(list, ids); + } + + @Override + public List packTreeSysOrganizeBySysRefUserInfoOrganize(List list, List refList) { + List ids = new ArrayList<>(refList.size()); + + if(refList != null && refList.size() > 0){ + refList.forEach(ref ->{ + ids.add(ref.getOrganizeId()); + }); + } + + return packTreeSysOrganizeByIds(list, ids); + } + + @Override + public List packTreeSysOrganizeByIds(List list, List ids) { + List result = new ArrayList<>(); + + if(list != null && list.size() > 0){ + list.forEach(organize -> { + if(organize.getChildList() == null || organize.getChildList().size() <= 0){ + if(ids.contains(organize.getId())){ + result.add(organize); + } + }else{ + List childList = packTreeSysOrganizeByIds(organize.getChildList(), ids); + if(ids.contains(organize.getId()) || childList != null && childList.size() > 0){ + organize.setChildList(childList); + result.add(organize); + } + } + }); + } + + return result; + } + + @Override + public SysOrganize packTreeSysOrganizeById(List list, Long id) { + if(list != null && list.size() > 0){ + for (SysOrganize organize : list) { + if(organize.getId().equals(id)){ + organize.setChildList(packTreeSysOrganize(list, organize.getId())); + return organize; + } + } + } + return null; + } + + @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)); + } + } + + return result; + } + /********************************************* End SysOrganize Tree *********************************************/ + + + /********************************************* Start CommonTreeModel Tree *********************************************/ + + @Override + public List packTreeTreeModelUser(List organizeList, List departmentList, List refList) { + if(refList != null && organizeList != null && departmentList != null){ + List organizeIdList = new ArrayList<>(); + List departmentIdList = new ArrayList<>(); + + refList.forEach(ref -> { + if(!organizeIdList.contains(ref.getOrganizeId())){ + organizeIdList.add(ref.getOrganizeId()); + } + if(!departmentIdList.contains(ref.getDepartmentId())){ + departmentIdList.add(ref.getDepartmentId()); + } + }); + + organizeList = packTreeSysOrganize(organizeList, CommonEnumUtil.PARENT.DEFAULT.getValue()); + organizeList = packTreeSysOrganizeByIds(organizeList, organizeIdList); + + departmentList = packTreeSysDepartment(departmentList, CommonEnumUtil.PARENT.DEFAULT.getValue()); + departmentList = packTreeSysDepartmentByIds(departmentList, departmentIdList); + + List modelList = packTreeTreeModelSysOrganize(organizeList); + List result = packTreeTreeModel(modelList, departmentList); + return result; + } + + return null; + } + + @Override + public List packTreeTreeModelSysOrganize(List list) { + List result = new ArrayList<>(); + + if(list != null && list.size() > 0){ + for (SysOrganize organize : list) { + CommonTreeModel model = new CommonTreeModel(); + model.setBeanType(ModelEnumUtil.COMMON_TREE_TYPE.TYPE_ORGANIZE.getValue()); + model.setBean(organize); + model.getChildList().addAll(packTreeTreeModelSysOrganize(organize.getChildList())); + + result.add(model); + } + } + + return result; + } + + @Override + public List packTreeTreeModelSysDepartment(List list) { + List result = new ArrayList<>(); + + if(list != null && list.size() > 0){ + for (SysDepartment department : list) { + CommonTreeModel model = new CommonTreeModel(); + model.setBeanType(ModelEnumUtil.COMMON_TREE_TYPE.TYPE_DEPARTMENT.getValue()); + model.setBean(department); + model.getChildList().addAll(packTreeTreeModelSysDepartment(department.getChildList())); + + result.add(model); + } + } + + return result; + } + + @Override + public List packTreeTreeModel(List list, List departmentList) { + if(list != null && list.size() > 0 && departmentList != null && departmentList.size() > 0){ + list.forEach(model -> { + SysOrganize organize = (SysOrganize) model.getBean(); + List departments = new ArrayList<>(); + departmentList.forEach(department -> { + if(department.getParentId().equals(CommonEnumUtil.PARENT.DEFAULT.getValue()) && department.getOrganizeId().equals(organize.getId())){ + departments.add(department); + } + }); + List childList = new ArrayList<>(); + childList.addAll(packTreeTreeModel(model.getChildList(), departmentList)); + childList.addAll(packTreeTreeModelSysDepartment(departments)); + model.setChildList(childList); + }); + } + return list; + } + + /********************************************* Start CommonTreeModel Tree *********************************************/ + + /********************************************* Start SysDepartment Tree *********************************************/ + @Override + public List packTreeSysDepartment(List list, Long parentId) { + List result = new ArrayList<>(); + + if(list != null && list.size() > 0){ + List copyList = new ArrayList<>(list); + list.forEach(department -> { + if(department.getParentId() != null && department.getParentId().equals(parentId)){ + result.add(department); + copyList.remove(department); + department.setChildList(packTreeSysDepartment(copyList, department.getId())); + } + }); + } + + return result; + } + + @Override + public List packTreeSysDepartmentBySysRefUserOrganize(List list, List refList) { + List ids = new ArrayList<>(refList.size()); + + if(refList != null && refList.size() > 0){ + refList.forEach(ref -> ids.add(ref.getDepartmentId())); + } + + return packTreeSysDepartmentByIds(list, ids); + } + + @Override + public List packTreeSysDepartmentBySysRefUserInfoOrganize(List list, List refList) { + List ids = new ArrayList<>(refList.size()); + + if(refList != null && refList.size() > 0){ + refList.forEach(ref -> ids.add(ref.getDepartmentId())); + } + + return packTreeSysDepartmentByIds(list, ids); + } + + @Override + public List packTreeSysDepartmentByIds(List list, List ids) { + List result = new ArrayList<>(); + + if(list != null && list.size() > 0){ + list.forEach(department -> { + if(department.getChildList() == null || department.getChildList().size() <= 0){ + if(ids.contains(department.getId())){ + result.add(department); + } + }else{ + List childList = packTreeSysDepartmentByIds(department.getChildList(), ids); + if(ids.contains(department.getId()) || childList != null && childList.size() > 0){ + department.setChildList(childList); + result.add(department); + } + } + }); + } + + return result; + } + + @Override + public SysDepartment packTreeSysDepartmentById(List list, Long id) { + if(list != null && list.size() > 0){ + for (SysDepartment department : list) { + if(department.getId().equals(id)){ + department.setChildList(packTreeSysDepartment(list, department.getId())); + return department; + } + } + } + return null; + } + + @Override + public List findChildSysDepartment(SysDepartment department) { + List result = new ArrayList<>(); + + if(department != null && department.getChildList() != null && department.getChildList().size() > 0){ + for (SysDepartment dep : department.getChildList()) { + result.add(dep.getId()); + result.addAll(findChildSysDepartment(dep)); + } + } + + return result; + } + /********************************************* End SysDepartment Tree *********************************************/ + + + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java index e4791df..7004b17 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java @@ -18,7 +18,6 @@ import cn.estsh.i3plus.pojo.model.platform.UserDetailModel; import cn.estsh.i3plus.pojo.platform.bean.*; import cn.estsh.i3plus.pojo.platform.repository.*; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; -import cn.estsh.i3plus.pojo.wms.sqlpack.WmsHqlPack; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; @@ -98,13 +97,13 @@ public class PersonnelServiceService implements IPersonnelService { @Override public SysUser saveSysUser(SysUser user) { - LOGGER.debug("平台账号 SysUser user:{}", user); + LOGGER.info("平台账号 SysUser user:{}", user); return userRDao.save(user); } @Override public SysUserInfo saveSysUserInfo(SysUserInfo info) { - LOGGER.debug("平台用户 SysUserInfo info:{}", info); + LOGGER.info("平台用户 SysUserInfo info:{}", info); return userInfoRDao.save(info); } @@ -115,7 +114,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override public void updateSysUserOrganize(Long userId, Long organizeId) { - LOGGER.debug("平台账号 SysUser userId:{} organizeId",userId, organizeId); + LOGGER.info("平台账号 SysUser userId:{} organizeId",userId, organizeId); SysUser user = userRDao.getById(userId); if(user != null){ user.setOrganizeId(organizeId); @@ -126,7 +125,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override @ApiOperation(value = "删除账号信息") public void deleteSysUser(Long[] userIdList,String userName) { - LOGGER.debug("平台账号 SysUser userIdList:{}", userIdList); + LOGGER.info("平台账号 SysUser userIdList:{}", userIdList); // 删除账号信息 userRDao.updateValidStatusByPropertyIn("id", userIdList,CommonEnumUtil.IS_VAILD.INVAILD.getValue(), userName); @@ -138,7 +137,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override @ApiOperation(value = "删除用户信息") public void deleteSysUserInfo(Long[] infoIdList,String userName) { - LOGGER.debug("平台用户 SysUserInfo infoIdList:{}", infoIdList); + LOGGER.info("平台用户 SysUserInfo infoIdList:{}", infoIdList); // 删除用户信息 userInfoRDao.updateValidStatusByPropertyIn("id", infoIdList,CommonEnumUtil.IS_VAILD.INVAILD.getValue(), userName); @@ -154,7 +153,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override public List findSysUserByIds(Long[] ids) { - LOGGER.debug("平台用户 SysUserInfo ids:{}", ids); + LOGGER.info("平台用户 SysUserInfo ids:{}", ids); String infoWhere = CoreHqlPack.packHqlIds("id", ids); return userRDao.findByHqlWhere(infoWhere); @@ -162,7 +161,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override public List querySysUserByUserDetailModelOrIds(UserDetailModel model, List ids) { - LOGGER.debug("平台用户 SysUser model:{} ids:{}", model, ids); + LOGGER.info("平台用户 SysUser model:{} ids:{}", model, ids); String modeWhere = HqlModelPack.packHqlSysUserByModelOrIds(model, ids); return userRDao.findByHqlWhere(modeWhere); @@ -171,7 +170,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override @ApiOperation(value = "查询账号信息") public ListPager querySysUserPagerByUserDetailModelOrIds(UserDetailModel model,Pager pager, List ids) { - LOGGER.debug("平台用户 SysUser model:{} ids:{}", model, ids); + LOGGER.info("平台用户 SysUser model:{} ids:{}", model, ids); String modeWhere = HqlModelPack.packHqlSysUserByModelOrIds(model, ids); pager = PagerHelper.getPager(pager, userRDao.findByHqlWhereCount(modeWhere)); @@ -200,7 +199,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override public SessionUser queryUserLogin(String userName, String password, String languageCode) { - LOGGER.debug("平台用户 SYS_USER loginName:{} \t password:{} \t languageCode:{}", userName, password, languageCode); + LOGGER.info("平台用户 SYS_USER loginName:{} \t password:{} \t languageCode:{}", userName, password, languageCode); UserToken token = new UserToken(userName,password,languageCode); SessionUser sessionUser = AuthUtil.login(token); AuthUtil.setSessionUser(sessionUser); @@ -215,7 +214,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override public List findSysUserInfoByIds(Long[] ids) { - LOGGER.debug("平台用户 SysUserInfo ids:{}", ids); + LOGGER.info("平台用户 SysUserInfo ids:{}", ids); String infoWhere = CoreHqlPack.packHqlIds("id", ids); return userInfoRDao.findByHqlWhere(infoWhere); @@ -223,7 +222,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override public List findSysRefUserRoleById(Long userId) { - LOGGER.debug("平台账号角色 SysRefUserRole userId:{}", userId); + LOGGER.info("平台账号角色 SysRefUserRole userId:{}", userId); return refUserRoleRDao.findByProperty("userId",userId); } @@ -248,8 +247,8 @@ public class PersonnelServiceService implements IPersonnelService { } @Override - public List findSysRefUserDepartmentById(Long userId) { - LOGGER.debug("平台账号部门 SysRefUserDepartment userId:{}", userId); + public List findSysRefUserDepartmentByUserId(Long userId) { + LOGGER.info("平台账号部门 SysRefUserDepartment userId:{}", userId); return refUserDepartmentRDao.findByProperty("userId",userId); } @@ -273,14 +272,14 @@ public class PersonnelServiceService implements IPersonnelService { @Override public List findSysRefUserInfoDepartmentById(Long infoId) { - LOGGER.debug("平台用户部门关系 SysRefUserInfoDepartment infoId:{}", infoId); + LOGGER.info("平台用户部门关系 SysRefUserInfoDepartment infoId:{}", infoId); return refUserInfoDepartmentRDao.findByProperty("userId",infoId); } @Override @ApiOperation(value = "查询用户部门关系") public List findSysUserInfoDepartmentByInfoId(Long infoId) { - LOGGER.debug("平台用户部门 SysDepartment infoId:{}", infoId); + LOGGER.info("平台用户部门 SysDepartment infoId:{}", infoId); List result = new ArrayList<>(); List refs = findSysRefUserInfoDepartmentById(infoId); @@ -298,10 +297,10 @@ public class PersonnelServiceService implements IPersonnelService { @Override @ApiOperation(value = "查询账号部门关系") public List findSysUserDepartmentByInfoId(Long infoId) { - LOGGER.debug("平台用户部门 SysDepartment infoId:{}", infoId); + LOGGER.info("平台用户部门 SysDepartment infoId:{}", infoId); List result = new ArrayList<>(); - List refs = findSysRefUserDepartmentById(infoId); + List refs = findSysRefUserDepartmentByUserId(infoId); if(refs != null && refs.size() > 0){ Long[] ids = new Long[refs.size()]; for (int i = 0; i < refs.size(); i++) { @@ -314,8 +313,16 @@ public class PersonnelServiceService implements IPersonnelService { } @Override + public List findSysUserDepartmentList() { + LOGGER.info("平台用户部门 SysOrganize Find All"); + return departmentRDao.findByProperty( + new String[]{"isDeleted","isValid"}, + new Object[]{CommonEnumUtil.IS_DEAL.NO.getValue(),CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + } + + @Override public List findSysUserInfoOrganize(Long infoId) { - LOGGER.debug("平台用户部门 SysDepartment infoId:{}", infoId); + LOGGER.info("平台用户部门 SysDepartment infoId:{}", infoId); List result = new ArrayList<>(); List refs = findSysRefUserInfoDepartmentById(infoId); @@ -332,10 +339,10 @@ public class PersonnelServiceService implements IPersonnelService { @Override public List findSysUserOrganize(Long infoId) { - LOGGER.debug("平台用户部门 SysDepartment infoId:{}", infoId); + LOGGER.info("平台用户部门 SysOrganize infoId:{}", infoId); List result = new ArrayList<>(); - List refs = findSysRefUserDepartmentById(infoId); + List refs = findSysRefUserDepartmentByUserId(infoId); if(refs != null && refs.size() > 0){ List ids = new ArrayList<>(); refs.forEach(ref -> { @@ -350,8 +357,24 @@ public class PersonnelServiceService implements IPersonnelService { } @Override + public List findSysOrganizeList() { + LOGGER.info("平台用户组织 SysOrganize Find All"); + return organizeRDao.findByProperty( + new String[]{"isDeleted","isValid"}, + new Object[]{CommonEnumUtil.IS_DEAL.NO.getValue(),CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + } + + @Override + public List findSysPositionList() { + LOGGER.info("平台用户岗位 SysOrganize Find All"); + return positionRDao.findByProperty( + new String[]{"isDeleted","isValid"}, + new Object[]{CommonEnumUtil.IS_DEAL.NO.getValue(),CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + } + + @Override public List findSysRefUserPositionById(Long infoId) { - LOGGER.debug("平台用户岗位 SysRefUserPosition infoId:{}", infoId); + LOGGER.info("平台用户岗位 SysRefUserPosition infoId:{}", infoId); return refUserPositionRDao.findByProperty("userId",infoId); } @@ -408,7 +431,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override @ApiOperation(value = "重置密码检查") public Integer checkSysUserResetPassword(SysUser user) { - LOGGER.debug("平台用户岗位 SysUser user:{}", user); + LOGGER.info("平台用户岗位 SysUser user:{}", user); Integer num = 0; if(user != null){ String day = DateFormatUtils.ISO_8601_EXTENDED_DATE_FORMAT.format(new Date()); @@ -431,7 +454,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override public void checkSysPositionRef(Long positionId) { - LOGGER.debug("平台岗位 SysPosition positionId:{}", positionId); + LOGGER.info("平台岗位 SysPosition positionId:{}", positionId); if(positionId != null){ List positionList = positionRDao.findByProperty("parentId", positionId); @@ -466,7 +489,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override public void checkSysDepartmentRef(Long departmentId) { - LOGGER.debug("平台部门 SysDepartment departmentId:{}", departmentId); + LOGGER.info("平台部门 SysDepartment departmentId:{}", departmentId); if(departmentId != null){ List departmentList = departmentRDao.findByProperty("parentId", departmentId); @@ -511,7 +534,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override public void checkSysOrganizeRef(Long organizeId) { - LOGGER.debug("平台部门 SysOrganize organizeId:{}", organizeId); + LOGGER.info("平台部门 SysOrganize organizeId:{}", organizeId); if(organizeId != null){ List organizeList = organizeRDao.findByProperty("parentId", organizeId); @@ -568,7 +591,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override public void checkSysUserPassword(String password) { - LOGGER.debug("平台用户 SysUser password:{}", password); + LOGGER.info("平台用户 SysUser password:{}", password); if(StringUtils.isNotBlank(password)){ // 密码长度校验 @@ -784,7 +807,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override public void refreshRefSysUserRole(Long userId, Long[] roleIds) { - LOGGER.debug("账号角色关系信息 RefSysUserRole userId:{} roleIds:{} ", userId,roleIds); + LOGGER.info("账号角色关系信息 RefSysUserRole userId:{} roleIds:{} ", userId,roleIds); SysUser user = userRDao.getById(userId); if(user != null){ // 根据IDS 查询所有的角色信息 @@ -822,7 +845,7 @@ public class PersonnelServiceService implements IPersonnelService { @Override public void refreshUpdateSysRoleRdd(Long roleId) { - LOGGER.debug("角色信息 RefSysUserRole roleId:{}", roleId); + LOGGER.info("角色信息 RefSysUserRole roleId:{}", roleId); if(roleId != null){ SysRole role = roleRDao.getById(roleId); if(role != null){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysOrganizeService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysOrganizeService.java index 33d2179..96852bf 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysOrganizeService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysOrganizeService.java @@ -2,12 +2,15 @@ package cn.estsh.i3plus.core.apiservice.serviceimpl.busi; import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; import cn.estsh.i3plus.core.api.iservice.busi.ISysOrganizeService; +import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import cn.estsh.i3plus.pojo.platform.bean.SysOrganize; +import cn.estsh.i3plus.pojo.platform.bean.SysRefUserDepartment; import cn.estsh.i3plus.pojo.platform.repository.SysOrganizeRepository; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; @@ -18,8 +21,11 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @Description : 组织业务接口实现 @@ -42,9 +48,6 @@ public class SysOrganizeService implements ISysOrganizeService { @Autowired private IPersonnelService personnelService; - - - @Override @ApiOperation(value = "更新组织", notes = "传入持久化组织对象,进行更新") public void updateSysOrganize(SysOrganize organize) { @@ -170,24 +173,14 @@ public class SysOrganizeService implements ISysOrganizeService { @ApiOperation(value = "查询组织信息", notes = "查询 组织信息(分页、组合)") public ListPager querySysOrganize(SysOrganize organize, Pager pager) { LOGGER.info("组织信息 SysOrganize find SysOrganize page"); + return querySysOrganize(organize, null, pager); + } - if (organize == null) { - //不传入实体对象,查询所有 - int count = organizeRDao.listCount(); - pager = PagerHelper.getPager(pager, count); - return new ListPager(organizeRDao.listPager(pager), pager); - } else { - if (organize.getParentId() != null) { - SysOrganize parent = coreTreeService.getSysOrganizeTreeById(organize.getParentId()); - List childIds = coreTreeService.findSysOrganizeChildIds(parent); - organize.setChildIdList(childIds); - } - - //生成hql查询语句 - String hqlPack = CoreHqlPack.packHqlSysOrganize(organize); - pager = PagerHelper.getPager(pager, organizeRDao.findByHqlWhereCount(hqlPack)); - return new ListPager(organizeRDao.findByHqlWherePage(hqlPack + organize.orderBy(), pager), pager); - } + @Override + public ListPager querySysOrganize(SysOrganize organize, List idList, Pager pager) { + DdlPackBean packBean = CoreHqlPack.packHqlSysOrganize(organize, idList); + pager = PagerHelper.getPager(pager, organizeRDao.findByHqlWhereCount(packBean)); + return new ListPager(organizeRDao.findByHqlWherePage(packBean, pager), pager); } @Override @@ -201,4 +194,15 @@ public class SysOrganizeService implements ISysOrganizeService { public long getSysOrganizeCount() { return organizeRDao.listCount(); } + + @Override + @ApiOperation(value = "查询当前用户所有组织数据", notes = "查询当前用户所有组织数据") + public List findOrganizeIdByRefUsers(List sysRefUserDepartments) { + if (CollectionUtils.isEmpty(sysRefUserDepartments)) { + return null; + } else { + DdlPackBean packBean = CoreHqlPack.packHqlSysOrganize(sysRefUserDepartments); + return organizeRDao.findByHqlWhere(packBean); + } + } }