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