From 7a171b5193feef1d201b7d273b64ba2aebaddcda Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 26 六月 2024 18:22:01 +0800
Subject: [PATCH] 成员管理:分配角色、分配部门、分配部门界面查询、角色角色界面查询等接口添加

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java |   63 ++++++++++++++++++++++++++++++-
 1 files changed, 60 insertions(+), 3 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java
index 6ad8bf9..c71204f 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java
@@ -1,11 +1,14 @@
 package com.vci.frameworkcore.compatibility.impl;
 
+import com.vci.corba.common.PLException;
+import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
 import com.vci.frameworkcore.constant.FrameWorkBtmTypeConstant;
 import com.vci.frameworkcore.enumpck.RoleClassifyEnum;
 import com.vci.frameworkcore.enumpck.RoleControlAreaEnum;
 import com.vci.frameworkcore.model.SmRoleForPlatform1;
+import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
 import com.vci.frameworkcore.pagemodel.SmRoleVO;
 import com.vci.omd.utils.ObjectTool;
 import com.vci.starter.web.constant.QueryOptionConstant;
@@ -18,6 +21,7 @@
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.properties.WebProperties;
 import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -26,6 +30,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -45,6 +50,12 @@
 	private WebBoServiceI boService;
 
 	/**
+	 * 骞冲彴璋冪敤瀹㈡埛绔�
+	 */
+	@Autowired
+	private PlatformClientUtil platformClientUtil;
+
+	/**
      * 鏍规嵁瑙掕壊涓婚敭鑾峰彇瑙掕壊鐨勪俊鎭�
      * @param roleOid 瑙掕壊涓婚敭
      * @return 瑙掕壊鐨勬樉绀哄璞★紝濡傛灉瑙掕壊涓嶅瓨鍦ㄥ垯杩斿洖null锛屼笉浼氭姏鍑哄紓甯�
@@ -61,6 +72,7 @@
 		}
 		return platformRole2SmRoleVO(role);
 	}
+
 	/**
      * 鎵归噺鑾峰彇瑙掕壊鐨勪俊鎭� 锛堟牴鎹鑹蹭富閿級
      * @param roleOidCollections 瑙掕壊涓婚敭鐨勯泦鍚堬紝鍙互瓒呰繃1000涓�
@@ -84,6 +96,7 @@
 		});
 		return 	platformRole2SmRoleVOs(roles);
 	}
+
 	/**
      * 鑾峰彇瑙掕壊鐨勫垪琛紝榛樿浼氫互瑙掕壊鍚嶅崌搴忔帓鍒楋紝瑙掕壊鐨勭紪杈戦〉闈㈠垪琛ㄤ笉瑕佷娇鐢ㄨ繖涓帴鍙�
      * @param queryMap 鏌ヨ鏉′欢
@@ -109,6 +122,7 @@
 		}
 		return dataGrid;
 	}
+
 	 /**
      * 鏍规嵁瑙掕壊涓婚敭鑾峰彇瑙掕壊鐨勫鍚�
      * @param roleOid 瑙掕壊涓婚敭
@@ -119,6 +133,7 @@
 		WebUtil.alertNotNull(roleOid,"瑙掕壊涓婚敭");
 		return getRoleByRoleOid(roleOid).getName();
 	}
+
 	 /**
      * 鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇鍏宠仈鐨勮鑹�
      * @param userOid 鐢ㄦ埛涓婚敭
@@ -170,6 +185,7 @@
 		}
 		return platformRole2SmRoleVOs(roles);
 	}
+
 	  /**
      * 鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇鍏宠仈鐨勮鑹�
      * @param userOid 鐢ㄦ埛涓婚敭
@@ -210,6 +226,7 @@
 		}
 		return gridRoles(queryMap,pageHelper);
 	}
+
 	 /**
      * 鑾峰彇鏈叧鑱旀煇涓敤鎴风殑瑙掕壊
      * @param userOid 鐢ㄦ埛涓婚敭
@@ -221,6 +238,7 @@
 			Map<String, String> queryMap) {
 		return listRoleByUserOid(userOid,queryMap,true);
 	}
+
 	/**
      * 鑾峰彇鏈叧鑱旀煇涓敤鎴风殑瑙掕壊
      * @param userOid 鐢ㄦ埛涓婚敭
@@ -233,6 +251,7 @@
 			Map<String, String> queryMap, PageHelper pageHelper) {
 		return gridRoleByUserOid(userOid,queryMap,pageHelper,true);
 	}
+
 	  /**
      * 鎵归噺鏍规嵁鐢ㄦ埛鐨勪富閿潵鑾峰彇瑙掕壊
      * @param userOidCollection 鐢ㄦ埛涓婚敭闆嗗悎
@@ -255,16 +274,19 @@
 				List<BusinessObject> cbos = boService.queryBySql(sql, null);
 				if(!CollectionUtils.isEmpty(cbos)){
 					cbos.stream().forEach(cbo->{
-						String userOid = ObjectTool.getBOAttributeValue(cbo,"pluseruid");
+						String userOid = ObjectTool.getNewBOAttributeValue(cbo,"pluseruid");
 						List<String> roleOids = userRoleOidMap.getOrDefault(userOid,new ArrayList<>());
-						roleOids.add(ObjectTool.getBOAttributeValue(cbo,"plroleuid"));
+						roleOids.add(ObjectTool.getNewBOAttributeValue(cbo,"plroleuid"));
 						userRoleOidMap.put(userOid,roleOids);
 					});
 				}
 			}
 		});
 		if(!CollectionUtils.isEmpty(roleVOList)){
-			Map<String, SmRoleVO> roleVOMap = roleVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
+			//杩欏効搴旇瀵箁oleVOList鍋氫竴娆″幓閲嶅鐞嗭紝鍥犱负鑲畾浼氭湁閲嶅鐨勮鑹茶鏌ュ嚭鏉�
+			Map<String, SmRoleVO> roleVOMap = roleVOList.stream()
+					.collect(Collectors.toMap(SmRoleVO::getOid, Function.identity(), (existing, replacement) -> existing));
+			//Map<String, SmRoleVO> roleVOMap = roleVOList.stream().collect(Collectors.toMap(s -> s.getOid(), t -> t));
 			Map<String, List<SmRoleVO>> userRoleVOMap = new HashMap<>();
 			userRoleOidMap.forEach((userOid,roleOids)->{
 				List<SmRoleVO> roleVOS = new ArrayList<>();
@@ -279,6 +301,7 @@
 		}
 		return new HashMap<>();
 	}
+
 	 /**
      * 鏍规嵁鏉冮檺涓婚敭鑾峰彇鍏宠仈鐨勮鑹�
      * @param functionOid 鏉冮檺涓婚敭
@@ -444,6 +467,7 @@
 		}
 		return new HashMap<>();
 	}
+
 	 /**
      * 鍙傜収瑙掕壊鐨勫垪琛紝涓夊憳绠$悊鐨勪笁涓鑹蹭笉浼氭樉绀�
      * @param queryMap 鏌ヨ鏉′欢
@@ -457,6 +481,7 @@
 		//鑰佸钩鍙版病鏈夌敓鏁堢姸鎬�
 		return gridRoles(queryMap, pageHelper);
 	}
+
 	  /**
      * 瑙掕壊鐨勬爲褰㈠睍绀猴紝甯哥敤浜庤鑹查�夋嫨鐢ㄦ埛鐨勯〉闈娇鐢�
      * @param treeQueryObject 鏍戞煡璇㈠璞�
@@ -488,6 +513,38 @@
 	}
 
 	/**
+	 * 璇ユ柟娉曞彧鏀寔涓�娆″彧鍏佽鍗曚釜鐢ㄦ埛鍒嗛厤澶氫釜瑙掕壊锛屼竴瀵瑰
+	 * @param userOid
+	 * @param roleIds
+	 * @return
+	 */
+	@Override
+	public boolean saveRights(String userOid, String[] roleIds) throws PLException {
+		VciBaseUtil.alertNotNull(userOid,"鐢ㄦ埛涓婚敭");
+		//roleIds鍏佽涓虹┖锛屼负绌烘椂娓呯┖褰撳墠鐢ㄦ埛鐨勬潈闄�
+		//鍏堟煡閲�
+		if(Func.isNotEmpty(roleIds)){
+			List<String> repeatRoleOidList = new ArrayList<>();
+			//寰幆杩涜鏌ラ噸锛岄伩鍏峣n澶т簬1000
+			WebUtil.switchCollectionForOracleIn(Arrays.asList(roleIds)).stream().forEach(deptoids->{
+				String sql = "select pluseruid,plroleuid from pluserrole where pluseruid = '" + userOid
+						+ "' and " + "plroleuid in ("+WebUtil.toInSql(deptoids.toArray(new String[0]))+")";
+				List<BusinessObject> cbos = boService.queryBySql(sql, null);
+				if(!CollectionUtils.isEmpty(cbos)){
+					cbos.stream().forEach(cbo->{
+						repeatRoleOidList.add(ObjectTool.getNewBOAttributeValue(cbo,"plroleuid"));
+					});
+				}
+			});
+			//绉婚櫎閲嶅鐨�
+			List<String> tempList = new ArrayList<>(Arrays.asList(roleIds));
+			tempList.removeAll(repeatRoleOidList);
+			roleIds = tempList.toArray(new String[tempList.size()]);
+		}
+		return platformClientUtil.getFrameworkService().saveRights(roleIds,new String[]{userOid},new UserEntityInfo());
+	}
+
+	/**
 	 * 瑙掕壊鐨勮浆鎹紝榛樿鍏ㄩ儴鏄痓s鎺у埗鐨勮鑹�
 	 * @param roleForPlatform1List 鍘熷钩鍙扮殑瑙掕壊
 	 * @return 瑙掕壊鐨勬樉绀哄璞�

--
Gitblit v1.9.3