From d882aebbf8db1527172ac7fcf189f8b8204c0a5c Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 02 七月 2024 17:18:41 +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/OrgDeptQueryServiceImpl.java |   78 ++++++++++++++++++++++++++++++--------
 1 files changed, 61 insertions(+), 17 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java
index 7a92d79..f9ff061 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java
@@ -387,8 +387,9 @@
 			VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(conditionMap,OrgDeptForPlatform1.class);
 			orgDepartmentVOList = deptDO2VOs(boService.selectByQueryWrapper(queryWrapperForDO,OrgDeptForPlatform1.class));
 		}
-		TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions("pkFatherDepartment");
+		TreeWrapperOptions treeWrapperOptions = new TreeWrapperOptions();
 		BeanUtil.convert(treeQueryObject,treeWrapperOptions);
+		treeWrapperOptions.setParentFieldName("pkFatherDepartment");
 		return revisionModelUtil.doList2Trees(orgDepartmentVOList,treeWrapperOptions,dept->{
 			return dept.getId() + " " + dept.getName() + (FrameworkDataLCStatus.DISABLED.getValue().equals(dept.getLcStatus())?"銆愬仠鐢ㄣ��":"");
 		});
@@ -424,37 +425,80 @@
 
 	/**
 	 * 淇濆瓨閮ㄩ棬瑙掕壊鍏宠仈淇℃伅锛屽甫鏌ラ噸鍔熻兘
-	 * @param userId 鐢ㄦ埛id
-	 * @param deptIds 閮ㄩ棬id
+	 * @param userOIds 鐢ㄦ埛id
+	 * @param deptId 閮ㄩ棬id
 	 * @return
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public boolean saveUserDepts(String userId, List<String> deptIds) throws PLException {
-		if(Func.isBlank(userId) || Func.isEmpty(deptIds)){
+	public boolean saveUsersDept(String[] userOIds, String deptId) throws PLException {
+		if(Func.isEmpty(userOIds) || Func.isBlank(deptId)){
 			return false;
 		}
-		List<String> repeatDeptOidList = new ArrayList<>();
+		//鍏堣繘鎬ф煡閲嶅鐞�
+		List<String> repeatUserOidList = new ArrayList<>();
 		//寰幆杩涜鏌ラ噸锛岄伩鍏峣n澶т簬1000
-		WebUtil.switchCollectionForOracleIn(deptIds).stream().forEach(deptoids->{
-			String sql = "select pluseruid,pldeptuid from pluserdept where pluseruid = " + userId
-					+ " and " + "pldeptuid in ("+WebUtil.toInSql(deptoids.toArray(new String[0]))+")";
+		WebUtil.switchCollectionForOracleIn(Arrays.asList(userOIds)).stream().forEach(userOId->{
+			String sql = "select pluseruid,pldeptuid from pluserdept where pldeptuid = '" + deptId
+					+ "' and " + "pluseruid in ("+WebUtil.toInSql(userOId.toArray(new String[0]))+")";
 			List<BusinessObject> cbos = boService.queryBySql(sql, null);
 			if(!CollectionUtils.isEmpty(cbos)){
 				cbos.stream().forEach(cbo->{
-					repeatDeptOidList.add(ObjectTool.getNewBOAttributeValue(cbo,"pldeptuid"));
+					repeatUserOidList.add(ObjectTool.getNewBOAttributeValue(cbo,"pluseruid"));
 				});
 			}
-
 		});
-		//浠庡嵆灏嗚鎵ц淇濆瓨鐨勯儴闂╫id涓Щ闄ゅ綋鍓嶇敤鎴峰凡缁忓瓨鍦ㄥ叧鑱斿叧绯荤殑鐨勯儴闂╫id
-		deptIds.removeAll(repeatDeptOidList);
-		if(Func.isNotEmpty(deptIds)){
-			for (String deptId : deptIds){
-				platformClientUtil.getFrameworkService().saveUserDept(new String[]{userId}, deptId,null);
-			}
+
+		//浠庡嵆灏嗚鎵ц淇濆瓨鐨勭敤鎴穙id涓Щ闄ゅ綋鍓嶇敤鎴峰凡缁忓瓨鍦ㄥ叧鑱斿叧绯荤殑oid
+		//绉婚櫎閲嶅鐨�
+		List<String> tempList = new ArrayList<>(Arrays.asList(userOIds));
+		tempList.removeAll(repeatUserOidList);
+		userOIds = tempList.toArray(new String[tempList.size()]);
+		if(Func.isNotEmpty(userOIds)){
+			platformClientUtil.getFrameworkService().saveUserDept(userOIds, deptId,null);
 		}
 		return true;
 	}
 
+	/**
+	 * 鑾峰彇鎵�鏈夐儴闂ㄧ殑淇℃伅
+	 * @return key锛氶儴闂ㄧ敱鍚嶇О缁勬垚鐨勮矾寰勶紙/闂撮殧锛夛紝value瀵瑰簲鏈�灏忓眰绾х殑閮ㄩ棬淇℃伅
+	 */
+	@Override
+	public Map<String, OrgDepartmentVO> getDeptAllTreeMap() {
+		List<OrgDepartmentVO> orgDepartmentVOList = listAllLevelChildrenDeptByParentOid(null, null);
+		Map<String, OrgDepartmentVO> stringOrgDepartmentVOMap = convertToMap(orgDepartmentVOList);
+		return stringOrgDepartmentVOMap;
+	}
+
+	public Map<String, OrgDepartmentVO> convertToMap(List<OrgDepartmentVO> orgDepartmentVOList) {
+		Map<String, OrgDepartmentVO> map = new HashMap<>();
+		for (OrgDepartmentVO orgDepartmentVO : orgDepartmentVOList) {
+			String key = buildKey(orgDepartmentVO, orgDepartmentVOList);
+			map.put(key, orgDepartmentVO);
+		}
+		return map;
+	}
+
+	private String buildKey(OrgDepartmentVO orgDepartmentVO, List<OrgDepartmentVO> orgDepartmentVOList) {
+		StringBuilder keyBuilder = new StringBuilder();
+		OrgDepartmentVO current = orgDepartmentVO;
+		while (current != null) {
+			keyBuilder.insert(0, current.getName());
+			keyBuilder.insert(0, "/");
+			current = getParentDepartment(current.getPkFatherDepartment(), orgDepartmentVOList);
+		}
+		keyBuilder.deleteCharAt(0);
+		return keyBuilder.toString();
+	}
+
+	private OrgDepartmentVO getParentDepartment(String pkFatherDepartment, List<OrgDepartmentVO> orgDepartmentVOList) {
+		for (OrgDepartmentVO orgDepartmentVO : orgDepartmentVOList) {
+			if (pkFatherDepartment != null && pkFatherDepartment.equals(orgDepartmentVO.getOid())) {
+				return orgDepartmentVO;
+			}
+		}
+		return null;
+	}
+
 }

--
Gitblit v1.9.3