From 51542c2d2272cfe19db8e7dbc07cccc1c448d22a Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期五, 20 九月 2024 15:17:05 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 166 insertions(+), 1 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java index 6a52208..3357a53 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java @@ -1,5 +1,7 @@ package com.vci.frameworkcore.compatibility.impl; +import com.vci.corba.framework.data.DeptInfo; +import com.vci.corba.framework.data.RoleInfo; import com.vci.dto.SmUserDTO; import com.vci.common.util.ThreeDES; import com.vci.corba.common.PLException; @@ -10,6 +12,7 @@ import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI; import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI; import com.vci.frameworkcore.compatibility.SmUserQueryServiceI; +import com.vci.frameworkcore.enumpck.OrgTypeEnum; import com.vci.model.SmUserDO; import com.vci.pagemodel.SmUserVO; import com.vci.po.SmUserPO; @@ -36,6 +39,7 @@ import com.vci.web.util.WebUtil; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.util.HSSFColor; +import org.apache.poi.ss.formula.functions.T; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -942,7 +946,168 @@ return treeList; } - /** + /** + * 鑾峰彇瑙掕壊鏁版嵁 + * @param treeQueryObject + * @return + * @throws VciBaseException + */ + @Override + public List<Tree> refPersonOrgTree(TreeQueryObject treeQueryObject) throws VciBaseException { + List<Tree> rootTreeList=new ArrayList<>(); + Map<String,String> conditionMap=treeQueryObject.getConditionMap(); + if(CollectionUtils.isEmpty(conditionMap)) { + conditionMap = new HashMap<>(); + } + String dataType=StringUtils.isNotBlank(conditionMap.get("dataType"))?conditionMap.get("dataType"):"";//鏁版嵁绫诲瀷 + String parentId=StringUtils.isNotBlank(conditionMap.get("parentId"))?conditionMap.get("parentId"):"";//鐖惰妭鐐� + String orgType=StringUtils.isNotBlank(conditionMap.get("orgType"))?conditionMap.get("orgType"):"";//鎺ュ彛鏌ヨ鍖呭惈鐨勭被鍨� + try { + initChildTree(dataType,orgType,parentId,rootTreeList); + } catch (PLException e) { + throw new VciBaseException("鐢ㄦ埛鏉冮檺閫夋嫨鏍戝姞杞藉け璐�:"+e.getMessage()); + } + return rootTreeList; + } + + /*** + * + * @param dataType + * @param orgType + * @param parentId + */ + private void initChildTree(String dataType,String orgType, String parentId, List<Tree>rootTreeList) throws PLException { + if(StringUtils.isBlank(parentId)){ + Tree rootTree=new Tree("root","浜哄憳缁勭粐","root"); + rootTree.setParentBtmName("root"); + rootTree.setExpanded(true); + List<Tree> childList=new ArrayList<>(); + if(OrgTypeEnum.ORG_TYPE_USER.getValue().equals(orgType)){//濡傛灉鏄汉鍛� + Tree userTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_USER.getValue(),"鐢ㄦ埛",OrgTypeEnum.ORG_TYPE_USER.getValue(),OrgTypeEnum.ORG_TYPE_USER.getValue(),rootTree); + childList.add(userTree); + }else if(OrgTypeEnum.ORG_TYPE_DEPT.getValue().equals(orgType)){//濡傛灉鏄儴闂� + Tree departmentTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_DEPT.getValue(),"閮ㄩ棬",OrgTypeEnum.ORG_TYPE_DEPT.getValue(),OrgTypeEnum.ORG_TYPE_DEPT.getValue(),rootTree); + childList.add(departmentTree); + }else if(OrgTypeEnum.ORG_TYPE_ROLE.getValue().equals(orgType)){//濡傛灉鏄鑹� + Tree roleTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_ROLE.getValue(),"瑙掕壊",OrgTypeEnum.ORG_TYPE_ROLE.getValue(),OrgTypeEnum.ORG_TYPE_ROLE.getValue(),rootTree); + childList.add(roleTree); + }else{ + Tree userTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_USER.getValue(),"鐢ㄦ埛",OrgTypeEnum.ORG_TYPE_USER.getValue(),OrgTypeEnum.ORG_TYPE_USER.getValue(),rootTree); + childList.add(userTree); + Tree departmentTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_DEPT.getValue(),"閮ㄩ棬",OrgTypeEnum.ORG_TYPE_DEPT.getValue(),OrgTypeEnum.ORG_TYPE_DEPT.getValue(),rootTree); + childList.add(departmentTree); + Tree roleTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_ROLE.getValue(),"瑙掕壊",OrgTypeEnum.ORG_TYPE_ROLE.getValue(),OrgTypeEnum.ORG_TYPE_ROLE.getValue(),rootTree); + childList.add(roleTree); + } + if(childList.size()>0){ + rootTree.setExpanded(true); + rootTree.setChildren(childList); + } + rootTreeList.add(rootTree); + }else{ + if(OrgTypeEnum.ORG_TYPE_ROOT.getValue().equals(dataType)){//濡傛灉鐖惰妭鐐规湁鍊硷紝鍒欓渶瑕佸垽鏂槸鍔犺浇浠�涔堣妭鐐� + Tree rootTree=new Tree("root","浜哄憳缁勭粐","root"); + rootTree.setParentBtmName("root"); + rootTree.setExpanded(true); + if(OrgTypeEnum.ORG_TYPE_USER.getValue().equals(orgType)){//濡傛灉鏄汉鍛� + Tree userTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_USER.getValue(),"鐢ㄦ埛",OrgTypeEnum.ORG_TYPE_USER.getValue(),OrgTypeEnum.ORG_TYPE_USER.getValue(),rootTree); + rootTreeList.add(userTree); + }else if(OrgTypeEnum.ORG_TYPE_DEPT.getValue().equals(orgType)){//濡傛灉鏄儴闂� + Tree departmentTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_DEPT.getValue(),"閮ㄩ棬",OrgTypeEnum.ORG_TYPE_DEPT.getValue(),OrgTypeEnum.ORG_TYPE_DEPT.getValue(),rootTree); + rootTreeList.add(departmentTree); + }else if(OrgTypeEnum.ORG_TYPE_ROLE.getValue().equals(orgType)){//濡傛灉鏄鑹� + Tree roleTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_ROLE.getValue(),"瑙掕壊",OrgTypeEnum.ORG_TYPE_ROLE.getValue(),OrgTypeEnum.ORG_TYPE_ROLE.getValue(),rootTree); + rootTreeList.add(roleTree); + }else{ + Tree userTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_USER.getValue(),"鐢ㄦ埛",OrgTypeEnum.ORG_TYPE_USER.getValue(),OrgTypeEnum.ORG_TYPE_USER.getValue(),rootTree); + rootTreeList.add(userTree); + Tree departmentTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_DEPT.getValue(),"閮ㄩ棬",OrgTypeEnum.ORG_TYPE_DEPT.getValue(),OrgTypeEnum.ORG_TYPE_DEPT.getValue(),rootTree); + rootTreeList.add(departmentTree); + Tree roleTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_ROLE.getValue(),"瑙掕壊",OrgTypeEnum.ORG_TYPE_ROLE.getValue(),OrgTypeEnum.ORG_TYPE_ROLE.getValue(),rootTree); + rootTreeList.add(roleTree); + } + }else if(OrgTypeEnum.ORG_TYPE_USER.getValue().equals(dataType)) {//濡傛灉浼犺繘鏉ョ殑鏄痷ser鑺傜偣 + if(OrgTypeEnum.ORG_TYPE_USER.getValue().equals(parentId)) { + Tree userTree = initDataTreeNode(OrgTypeEnum.ORG_TYPE_USER.getValue(), "鐢ㄦ埛", OrgTypeEnum.ORG_TYPE_USER.getValue(), OrgTypeEnum.ORG_TYPE_USER.getValue(), null); + UserInfo[] infos = platformClientUtil.getFrameworkService().fetchUserInfo(); + Arrays.stream(infos).forEach(info -> { + Tree childTree = initDataTreeNode(info.id, info.trueName + "(" + info.userName + ")", info, OrgTypeEnum.ORG_TYPE_USER.getValue(), userTree); + rootTreeList.add(childTree); + }); + } + }else if(OrgTypeEnum.ORG_TYPE_DEPT.getValue().equals(dataType)) {//濡傛灉鏄儴闂� + DeptInfo[] deptInfos=new DeptInfo[]{}; + Tree departmentTree=new Tree(); + if(OrgTypeEnum.ORG_TYPE_DEPT.getValue().equals(parentId)) { + departmentTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_DEPT.getValue(),"閮ㄩ棬",OrgTypeEnum.ORG_TYPE_DEPT.getValue(),OrgTypeEnum.ORG_TYPE_DEPT.getValue(),null); + deptInfos = platformClientUtil.getFrameworkService().fetchDepartmentInfo(); + }else{ + deptInfos=platformClientUtil.getFrameworkService().fetchDepartmentInfoByParentId(parentId); + DeptInfo deptInfo=platformClientUtil.getFrameworkService().fetchDepartmentInfoById(parentId); + departmentTree=initDataTreeNode(deptInfo.id,deptInfo.name,deptInfo,OrgTypeEnum.ORG_TYPE_DEPT.getValue(),null); + } + if(!CollectionUtils.isEmpty(Arrays.asList(deptInfos))){ + Tree finalDepartmentTree = departmentTree; + Arrays.stream(deptInfos).forEach(deptInfo -> { + Tree childTree=initDataTreeNode(deptInfo.id,deptInfo.name,deptInfo,OrgTypeEnum.ORG_TYPE_DEPT.getValue(), finalDepartmentTree); + rootTreeList.add(childTree); + }); + } + if(!OrgTypeEnum.ORG_TYPE_DEPT.getValue().equals(parentId)) { + UserInfo[] infos = platformClientUtil.getFrameworkService().getUserByDeptId(parentId); + if (infos != null && infos.length > 0) { + Tree finalDepartmentTree = departmentTree; + Arrays.stream(infos).forEach(info -> { + Tree childTree = initDataTreeNode(info.id, info.trueName + "(" + info.userName + ")", info, OrgTypeEnum.ORG_TYPE_USER.getValue(), finalDepartmentTree); + rootTreeList.add(childTree); + }); + } + } + + }else if(OrgTypeEnum.ORG_TYPE_ROLE.getValue().equals(dataType)) {//濡傛灉鏄鑹� + if(OrgTypeEnum.ORG_TYPE_ROLE.getValue().equals(parentId)){ + Tree roleTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_ROLE.getValue(),"瑙掕壊",OrgTypeEnum.ORG_TYPE_ROLE.getValue(),OrgTypeEnum.ORG_TYPE_ROLE.getValue(),null); + RoleInfo[] roleInfos=platformClientUtil.getFrameworkService().fetchRoleInfo(); + if(roleInfos!=null&&roleInfos.length>0) { + Arrays.stream(roleInfos).forEach(info -> { + Tree childTree = initDataTreeNode(info.id, info.name, info, OrgTypeEnum.ORG_TYPE_ROLE.getValue(), roleTree); + rootTreeList.add(childTree); + }); + } + }else{ + RoleInfo roleInfo=platformClientUtil.getFrameworkService().fetchRoleInfoById(parentId); + Tree roleTree=initDataTreeNode(roleInfo.id,roleInfo.name,roleInfo,OrgTypeEnum.ORG_TYPE_ROLE.getValue(),null); + UserInfo[] infos=platformClientUtil.getFrameworkService().fetchUserInfoByRoleId(roleInfo.id,roleInfo.type); + if(infos!=null&&infos.length>0) { + Arrays.stream(infos).forEach(info -> { + Tree childTree = initDataTreeNode(info.id, info.trueName + "(" + info.userName + ")", info, OrgTypeEnum.ORG_TYPE_USER.getValue(), roleTree); + rootTreeList.add(childTree); + }); + } + } + } + } + } + + /*** + * + * @param oid + * @param text + * @param o + * @param type + * @param parentTree + * @return + */ + private Tree initDataTreeNode(String oid,String text,Object o,String type,Tree parentTree){ + Tree ObjectTreeNode=new Tree(oid,text,o); + ObjectTreeNode.setParentBtmName(type); + if(parentTree!=null) { + ObjectTreeNode.setParentId(parentTree.getParentId()); + ObjectTreeNode.setParentName(parentTree.getParentName()); + } + return ObjectTreeNode; + } + /** * 鏍¢獙瀵嗙爜鏄惁鐩稿悓锛屽湪鏂板钩鍙颁腑瀛樺偍鐨勫瘑鐮佹槸涓ゆmd5 * @param userOid 鐢ㄦ埛涓婚敭 * @param md5Password 宸茬粡md5鍔犲瘑涓�娆$殑瀵嗙爜--鑰佺殑骞冲彴閲屼笉鑳藉姞瀵� -- Gitblit v1.9.3