From 8c4b79d994c5a95dd33d4b0313e2f2d63985e074 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 04 七月 2024 19:16:18 +0800
Subject: [PATCH] 角色管理、部门管理相关接口上传。

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java |  313 ++++++++++++++++++++++++++++++---------------------
 1 files changed, 185 insertions(+), 128 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 3bce07c..9930d7f 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
@@ -30,6 +30,7 @@
 import com.vci.starter.web.util.*;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.enumpck.UserTypeEnum;
+import com.vci.web.model.WFProcessClassifyDO;
 import com.vci.web.service.WebBoServiceI;
 import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
@@ -320,6 +321,7 @@
 		smUserVO.setEmail(userInfo.email);
 		smUserVO.setStatus(userInfo.status);
 		smUserVO.setPassword(userInfo.pwd);
+		smUserVO.setConfirmPassword(userInfo.pwd);
 		//鐢ㄦ埛鎵�灞為儴闂ㄧ殑鏌ヨ璁剧疆
 		List<OrgDepartmentVO> orgDepartmentVOList;
 		//鏌ョ湅鍏ㄥ眬鍙橀噺涓槸鍚﹀瓨鍦ㄩ儴闂ㄤ俊鎭紝瀛樺湪鐨勬儏鍐垫渶涓昏鏄拡瀵瑰鏉$敤鎴锋煡璇㈢殑鏃跺�欓伩鍏嶉噸澶嶆煡璇㈢殑
@@ -508,19 +510,6 @@
 	}
 
 	/**
-     * 鑾峰彇鐢ㄦ埛鐨勫垪琛紝榛樿浼氫互鐢ㄦ埛鍚嶅崌搴忔帓鍒楋紝鐢ㄦ埛鐨勭紪杈戦〉闈㈠垪琛ㄤ笉瑕佷娇鐢ㄨ繖涓帴鍙�
-     * @param queryMap 鏌ヨ鏉′欢
-     * @param pageHelper 鍒嗛〉鍜屾帓搴忕殑淇℃伅锛屽湪鍏煎鑰佸钩鍙扮殑鏃跺�欎細鑷姩鍏煎锛屽鏋滃睘鎬т笉瀛樺湪浼氳嚜鍔ㄥ拷鐣�
-     * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛�
-     * @throws VciBaseException 鍙傛暟涓虹┖鐨勬椂鍊欎細鎶涘嚭寮傚父
-     */
-	@Override
-	public DataGrid<SmUserVO> gridUsers(Map<String, String> queryMap,
-										PageHelper pageHelper) throws VciBaseException {
-		return gridUserByQueryField(null,null,queryMap,pageHelper,false);
-	}
-
-	/**
 	 * 鐢ㄦ埛绠$悊鐣岄潰鍒嗛〉鏌ヨ
 	 * @param conditionMap 鏌ヨ鏉′欢
 	 * @param pageHelper 鍒嗛〉鍙傛暟
@@ -532,8 +521,8 @@
 			pageHelper = new PageHelper(-1);
 		}
 		pageHelper.addDefaultAsc("PLTRUENAME");
-		//TODO:涓轰簡鏂逛究璋冭瘯锛屾墍浠ヨ繖鍎垮厛娉ㄩ噴鍐欐鍚庨潰璁板緱鏇存敼
 		String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
+		//String loginUserId = "Ludc";
 		//鍒嗛〉鏌ヨ
 		UserInfo[] userInfos = platformClientUtil.getFrameworkService().fetchUserInfoByCondition(
 				conditionMap.get("name"),
@@ -551,6 +540,7 @@
 			smRoleVOMap = smRoleQueryService.batchListRoleByUserOids(idList,null);
 			smPwdStrategyVOMap = smPwdStrategyQueryService.batchSmPwdStrategyByUserOids(idList);
 			dataGrid.setData(userInfoArr2VO(userInfos));
+			//TODO: 杩欎釜缁熻鎬绘暟鏈夐棶棰橈紝甯﹁繃鍘荤殑鍙傛暟涓嶈兘鍍忎笂闈㈤偅涓猣etchUserInfoByCondition鏌ヨ涓�鏍风粺璁″鍗寸殑鎬绘暟
 			dataGrid.setTotal(
 					platformClientUtil.getFrameworkService().getUserTotalByCondition(
 						conditionMap.get("name"),
@@ -607,24 +597,110 @@
 		return userVO.getName();
 	}
 
+	/**
+	 * 缁熻閮ㄩ棬涓嬬殑鐢ㄦ埛锛氬寘鍚瓙閮ㄩ棬涓嬬殑鐢ㄦ埛
+	 * @param deptOid
+	 * @param queryMap
+	 * @return
+	 * @throws VciBaseException
+	 */
+	@Override
+	public List<SmUserVO> countSmUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException {
+		//鏄惁鏌ヨ瀛愰儴闂ㄤ笅鍏宠仈鐨勭敤鎴�
+		List<OrgDepartmentVO> orgDepartmentVOList = orgDeptQueryService.listChildrenDeptByParentOid(deptOid, null);
+		List<String> deptOidCollection = orgDepartmentVOList.stream().map(OrgDepartmentVO::getOid).collect(Collectors.toList());
+		deptOidCollection.add(deptOid);//灏嗗綋鍓嶅眰鐨刼id涔熸斁杩涘幓
+		return listUserVOByDeptOid(queryMap,deptOidCollection,false);
+	}
+
 	 /**
-     * 鏌ヨ鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄
+     * 鏌ヨ鍦ㄦ煇涓儴闂ㄤ笅鐨勭敤鎴峰璞�
      * @param deptOid 閮ㄩ棬鐨勪富閿�
      * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮�
      * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
      */
 	@Override
-	public List<SmUserVO> listUserByDeptOid(String deptOid,
-			Map<String, String> queryMap) throws VciBaseException {
-		if(StringUtils.isBlank(deptOid)){
-			return new ArrayList<>();
-		}
-		return listUserByQueryField(QUERY_FIELD_DEPARTMENT,deptOid,queryMap,false);
+	public List<SmUserVO> listUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException {
+		//鏌ヨ褰撳墠閫変腑鐨勯儴闂ㄤ笅鐨勭敤鎴�
+		return listUserVOByDeptOid(queryMap,Arrays.asList(deptOid),false );
 	}
 
 	/**
-	 * 鑾峰彇鏌ヨ灏佽鍣紝榛樿鍙煡浜唒lstatus=0鍜宲lusertype=2锛屾帓搴忛粯璁lusername
+	 * 鏌ヨ涓嶅湪鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
+	 * @param deptOid 閮ㄩ棬鐨勪富閿�
+	 * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮�
+	 * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public List<SmUserVO> listUserUnInDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException {
+		// TODO:鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴峰喅瀹氳兘鏌ラ偅浜涚敤鎴�
+		String userType = "0";//WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUsertype();
+		//鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴风被鍨嬩笉鍚岋紝鏌ヨ涓嶅悓鐨勭敤鎴�
+		if(UserTypeEnum.SUPPER_ADMIN.getValue().equals(userType)){
+			//瓒呯鐢ㄦ埛鍙兘鏌ョ鐞嗗憳鐢ㄦ埛
+			queryMap.put("plusertype", "1");
+		}else{
+			//闄や簡瓒呯閮藉彧鑳芥煡鏅�氱敤鎴�
+			queryMap.put("plusertype", "2");
+		}
+		return listUserVOByDeptOid(queryMap,Arrays.asList(deptOid),true);
+	}
+
+	/**
+	 * 鐢ㄦ埛鏍规嵁閮ㄩ棬鏌ヨ鐨勭粺涓�鏂规硶
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param deptOidList 閮ㄩ棬涓婚敭
+	 * @param notIn true寰呴�夛紝false宸查��
+	 * @return
+	 */
+	private List<SmUserVO> listUserVOByDeptOid(Map<String,String> conditionMap/*鏀剧疆鏌ヨ鏉′欢*/,List<String> deptOidList,boolean notIn){
+		//鍏堟煡璇㈠凡閫変汉鍛榦id
+		List<String> userOidList = new ArrayList<>();
+		WebUtil.switchCollectionForOracleIn(deptOidList).stream().forEach(deptOids->{
+			String sql = "select pluseruid,pldeptuid from pluserdept where pldeptuid in (" + WebUtil.toInSql(deptOids.toArray(new String[0])) + ")";
+			List<BusinessObject> cbos = boService.queryBySql(sql, null);
+			//閬嶅巻鍑虹敤鎴蜂富閿�
+			cbos.stream().forEach(cbo->{
+				userOidList.add(ObjectTool.getNewBOAttributeValue(cbo,"pluseruid"));
+			});
+		});
+		//鏍规嵁鐢ㄦ埛oid鏌ヨ鐢ㄦ埛
+		VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(conditionMap, SmUserDO.class);
+		//娣诲姞杩炶〃鏌ヨ鏉′欢
+		queryWrapperForDO.setLinkTableSql(" left join pluserdept up on " + queryWrapperForDO.getTableNick() + ".pluid = up.pluseruid" +
+				" left join pldept pkDepartment on  up.pldeptuid = pkDepartment.pluid " +
+				" left join PLUSERPASSWORDSTRATEGY pkUserPassword on  " +queryWrapperForDO.getTableNick() + ".pluid = pkUserPassword.pluseruid ");
+		List<SmUserDO> smUserDOList = new ArrayList<>();
+		//userOidList涓虹┖鏃剁殑涓ょ鎯呭喌
+		if(Func.isEmpty(userOidList)){
+			//濡傛灉鏄凡閫夋煡璇㈣鏄庡凡閫変负绌虹洿鎺ヨ繑鍥炵┖
+			if(!notIn){
+				return new ArrayList<>();
+			}
+			//涓嶆槸宸查�夋煡璇㈣鏄庡緟閫変负绌猴紝鐩存帴鏌ヨ鐢ㄦ埛
+			smUserDOList.addAll(boService.selectByQueryWrapper(queryWrapperForDO, SmUserDO.class));
+		}else{
+			//宸查�夋煡璇紝鎴栧緟閫夋煡璇紝浣嗘槸璇ラ儴闂ㄥ瓨鍦ㄧ浉鍏抽厤缃�
+			WebUtil.switchCollectionForOracleIn(userOidList).stream().forEach(userOids->{
+				//鏌ヨ涓嶅湪鑼冨洿鍐呯殑锛氬緟閫変汉鍛�
+				if(notIn){
+					queryWrapperForDO.notIn(queryWrapperForDO.getTableNick()+".pluid",WebUtil.toInSql(userOids.toArray(new String[0])));
+
+				}else{
+					//宸查�変汉鍛樺拰缁熻
+					queryWrapperForDO.in(queryWrapperForDO.getTableNick()+".pluid",WebUtil.toInSql(userOids.toArray(new String[0])));
+				}
+				smUserDOList.addAll(boService.selectByQueryWrapper(queryWrapperForDO, SmUserDO.class));
+			});
+		}
+		return smUserDO2VOs(smUserDOList);
+	}
+
+	/**
+	 * 鑾峰彇鏌ヨ灏佽鍣紝榛樿鍙煡浜唒lstatus=0鍜宲lusertype=2锛堟敼鎴愭牴鎹綋鍓嶇櫥褰曠殑鐢ㄦ埛鏉ュ喅瀹氭煡浠�涔堢被鍨嬬殑鐢ㄦ埛锛夛紝
+	 * 鎺掑簭榛樿plusername
 	 * @param queryField 鏌ヨ灞炴��
 	 * @param queryValue 鏌ヨ鐨勫��
 	 * @param queryMap  鏌ヨ鏉′欢锛屽鏋滄槸瑙掕壊鐨勫睘鎬э紝闇�瑕佷娇鐢╬krole.xxx
@@ -655,24 +731,17 @@
 		}
 		addRoleQuerySql(queryMap,queryWrapperForDO);
 		queryWrapperForDO.eq("plstatus", "0");
-		queryWrapperForDO.eq("plusertype", "2");
-		queryWrapperForDO.setDistinct(true);
+		// TODO:鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴峰喅瀹氳兘鏌ラ偅浜涚敤鎴�
+		SessionInfo loginUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+		//鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴风被鍨嬩笉鍚岋紝鏌ヨ涓嶅悓鐨勭敤鎴�
+		if(UserTypeEnum.SUPPER_ADMIN.getValue().equals(loginUser.getUsertype())){
+			//瓒呯鐢ㄦ埛鍙兘鏌ョ鐞嗗憳鐢ㄦ埛
+			queryMap.put("plusertype", "1");
+		}else{
+			//闄や簡瓒呯閮藉彧鑳芥煡鏅�氱敤鎴�
+			queryMap.put("plusertype", "2");
+		}
 		return queryWrapperForDO;
-	}
-
-	/**
-     * 鏌ヨ鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
-     * @param deptOid 閮ㄩ棬鐨勪富閿�
-     * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮�
-     * @param pageHelper 鍒嗛〉鍜屾帓搴忎俊鎭紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-     */
-	@Override
-	public DataGrid<SmUserVO> gridUserByDeptOid(String deptOid,
-			Map<String, String> queryMap, PageHelper pageHelper)
-			throws VciBaseException {
-		return gridUserByQueryField(QUERY_FIELD_DEPARTMENT,deptOid,queryMap,pageHelper,false);
 	}
 
 	 /**
@@ -695,37 +764,6 @@
 	}
 
 	/**
-     * 鏌ヨ涓嶅湪鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
-     * @param deptOid 閮ㄩ棬鐨勪富閿�
-     * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮�
-     * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-     */
-	@Override
-	public List<SmUserVO> listUserUnInDeptOid(String deptOid,
-			Map<String, String> queryMap) throws VciBaseException {
-		if(StringUtils.isBlank(deptOid)){
-			return new ArrayList<>();
-		}
-		return listUserByQueryField(QUERY_FIELD_DEPARTMENT,deptOid,queryMap,true);
-	}
-
-	/**
-     * 鏌ヨ涓嶅湪鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
-     * @param deptOid 閮ㄩ棬鐨勪富閿�
-     * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮�
-     * @param pageHelper 鍒嗛〉鍜屾帓搴忎俊鎭紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-     */
-	@Override
-	public DataGrid<SmUserVO> gridUserUnInDeptOid(String deptOid,
-			Map<String, String> queryMap, PageHelper pageHelper)
-			throws VciBaseException {
-		return gridUserByQueryField(QUERY_FIELD_DEPARTMENT,deptOid,queryMap,pageHelper,true);
-	}
-
-	 /**
      * 鏌ヨ鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄
      * @param roleOid 瑙掕壊鐨勪富閿�
      * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸瑙掕壊鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kRole.xxx杩欐牱鐨勬柟寮�
@@ -735,26 +773,7 @@
 	@Override
 	public List<SmUserVO> listUserByRoleOid(String roleOid,
 			Map<String, String> queryMap) throws VciBaseException {
-		if(StringUtils.isBlank(roleOid)){
-			return new ArrayList<>();
-		}
-		return listUserByQueryField(QUERY_FIELD_ROLE,roleOid,queryMap,false);
-
-	}
-
-	/**
-     * 鏌ヨ鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
-     * @param roleOid 瑙掕壊鐨勪富閿�
-     * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸瑙掕壊鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kRole.xxx杩欐牱鐨勬柟寮�
-     * @param pageHelper 鍒嗛〉鍜屾帓搴忎俊鎭紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-     */
-	@Override
-	public DataGrid<SmUserVO> gridUserByRoleOid(String roleOid,
-			Map<String, String> queryMap, PageHelper pageHelper)
-			throws VciBaseException {
-		return gridUserByQueryField(QUERY_FIELD_ROLE,roleOid,queryMap,pageHelper,false);
+		return listUserVOByRoleOid(queryMap,roleOid,false);
 	}
 
 	/**
@@ -767,25 +786,54 @@
 	@Override
 	public List<SmUserVO> listUserUnInRoleOid(String roleOid,
 			Map<String, String> queryMap) throws VciBaseException {
-		if(StringUtils.isBlank(roleOid)){
-			return new ArrayList<>();
+		// TODO:鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴峰喅瀹氳兘鏌ラ偅浜涚敤鎴�
+		String usertype = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUsertype();
+		//鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴风被鍨嬩笉鍚岋紝鏌ヨ涓嶅悓鐨勭敤鎴�
+		if(UserTypeEnum.SUPPER_ADMIN.getValue().equals(usertype)){
+			//瓒呯鐢ㄦ埛鍙兘鏌ョ鐞嗗憳鐢ㄦ埛
+			queryMap.put("plusertype", "1");
+		}else{
+			//闄や簡瓒呯閮藉彧鑳芥煡鏅�氱敤鎴�
+			queryMap.put("plusertype", "2");
 		}
-		return listUserByQueryField(QUERY_FIELD_ROLE,roleOid,queryMap,true);
+		return listUserVOByRoleOid(queryMap,roleOid,true);
 	}
 
-	 /**
-     * 鏌ヨ涓嶅湪鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
-     * @param roleOid 瑙掕壊鐨勪富閿�
-     * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸瑙掕壊鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kRole.xxx杩欐牱鐨勬柟寮�
-     * @param pageHelper 鍒嗛〉鍜屾帓搴忎俊鎭紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-     */
-	@Override
-	public DataGrid<SmUserVO> gridUserUnInRoleOid(String roleOid,
-			Map<String, String> queryMap, PageHelper pageHelper)
-			throws VciBaseException {
-		return gridUserByQueryField(QUERY_FIELD_ROLE,roleOid,queryMap,pageHelper,true);
+	/**
+	 * 鐢ㄦ埛鏍规嵁瑙掕壊鏌ヨ鐨勭粺涓�鏂规硶
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param roleOid 瑙掕壊涓婚敭
+	 * @param notIn true涓嶅湪鑼冨洿鍐咃紝false鍐嶈寖鍥村唴
+	 * @return
+	 */
+	private List<SmUserVO> listUserVOByRoleOid(Map<String,String> conditionMap,String roleOid,boolean notIn){
+		//listUserByQueryField杩欎釜鏂规硶鏆傛椂涓嶈兘婊¤冻鎴戠幇鍦ㄧ殑鏌ヨ闇�姹傦紝骞朵笖寮曠敤鐨勫湴鏂硅緝澶氾紝鎵�浠ヤ笉澶ソ鏀瑰姩
+		//1銆佸厛鏌ヨ涓庡綋鍓嶈鑹插瓨鍦ㄥ叧鑱斿叧绯荤殑鐢ㄦ埛
+		String sql = "select pluseruid,plroleuid from pluserrole where plroleuid = '" + roleOid +"'";
+		List<BusinessObject> cbos = boService.queryBySql(sql, null);
+		List<String> userOidList = new ArrayList<>();
+		if(CollectionUtils.isEmpty(cbos)){
+			return new ArrayList<>();
+		}
+		//閬嶅巻鍑虹敤鎴蜂富閿�
+		cbos.stream().forEach(cbo->{
+			userOidList.add(ObjectTool.getNewBOAttributeValue(cbo,"pluseruid"));
+		});
+		//2銆佸啀鏌ヨ鐢ㄦ埛
+		VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(conditionMap, SmUserDO.class);
+		List<SmUserDO> smUserDOS = new ArrayList<>();
+		queryWrapperForDO.setLinkTableSql(" left join pluserdept up on " + queryWrapperForDO.getTableNick() + ".pluid = up.pluseruid" +
+				" left join pldept pkDepartment on  up.pldeptuid = pkDepartment.pluid " +
+				" left join PLUSERPASSWORDSTRATEGY pkUserPassword on  " +queryWrapperForDO.getTableNick() + ".pluid = pkUserPassword.pluseruid ");
+		WebUtil.switchCollectionForOracleIn(userOidList).stream().forEach(userOids->{
+			if(notIn){
+				queryWrapperForDO.notIn("pluid",WebUtil.toInSql(userOids.toArray(new String[0])));
+			}else{
+				queryWrapperForDO.in("pluid",WebUtil.toInSql(userOids.toArray(new String[0])));
+			}
+			smUserDOS.addAll(boService.selectByQueryWrapper(queryWrapperForDO, SmUserDO.class));
+		});
+		return smUserDO2VOs(smUserDOS);
 	}
 
 	/**
@@ -1037,14 +1085,20 @@
 		smUserDTO.setPwdUpdateTime(date);
 		smUserDTO.setStatus((short) 0);
 		smUserDTO.setCreateTime(date);
-		smUserDTO.setLastModifyTime(date);
-		String loginUserName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
-		smUserDTO.setCreator(loginUserName);
-		//smUserDTO.setCreator("developer");
-		smUserDTO.setLastModifier(loginUserName);
-		//smUserDTO.setLastModifier("developer");
+		SessionInfo loginUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+		String loginUserId = loginUser.getUserId();
+		//鐢ㄦ埛绫诲瀷锛岀幇鍦ㄦ寜鐓у綋鍓嶇櫥褰曠殑鐢ㄦ埛鍐冲畾浠栨墍娣诲姞鐨勭敤鎴风骇鍒�
+		//瓒呯娣诲姞鐨勫氨鏄鐞嗗憳
+		if(UserTypeEnum.SUPPER_ADMIN.getValue().equals(loginUser.getUsertype())){
+			smUserDTO.setUserType(Short.parseShort(UserTypeEnum.ADMIN.getValue()));
+		}else {
+			//绠$悊鍛樻坊鍔犵殑灏辨槸鏅�氱敤鎴�
+			smUserDTO.setUserType(Short.parseShort(UserTypeEnum.USER.getValue()));
+		}
+		smUserDTO.setCreator(loginUserId);
+		smUserDTO.setLastModifier(loginUserId);
 		UserInfo userInfo = changeSmUserDTOToUserInfo(smUserDTO);
-		UserEntityInfo userEntityInfo = new UserEntityInfo(loginUserName, "");
+		UserEntityInfo userEntityInfo = new UserEntityInfo(loginUserId, "");
 		String oid = platformClientUtil.getFrameworkService().saveUser(userInfo, userEntityInfo);
 		if (Func.isEmpty(oid)) {
 			return false;
@@ -1052,7 +1106,6 @@
 		if(Func.isNotBlank(smUserDTO.getPkDepartment())){
 			//鎵ц淇濆瓨鐢ㄦ埛閮ㄩ棬鍏宠仈鍏崇郴
 			orgDeptQueryService.saveUsersDept(new String[]{oid},smUserDTO.getPkDepartment());
-			//platformClientUtil.getFrameworkService().saveUserDept(new String[]{oid}, smUserDTO.getPkDepartment(), userEntityInfo);
 		}
 		return true;
 	}
@@ -1082,14 +1135,16 @@
 		if(Func.isEmpty(dbSmUserVO) || Func.isBlank(dbSmUserVO.getOid())){
 			throw new PLException("500", new String[] { "褰撳墠淇敼鐨勭敤鎴蜂笉瀛樺湪"});
 		}
-
-		smUserDTO.setLastModifyTime(new Date());
-		String loginUserName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
+		SessionInfo loginUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+		String loginUserName = loginUser.getUserId();
 		smUserDTO.setLastModifier(loginUserName);
+		smUserDTO.setUserType(Short.parseShort(dbSmUserVO.getUserType()));
+		smUserDTO.setPwdUpdateTime(dbSmUserVO.getLastModifyPasswordTime());
+		smUserDTO.setIsDeptLeader(smUserDTO.getIsDeptLeader().equals("涓嶆槸") ? "0":"1");
 		UserInfo userInfo = changeSmUserDTOToUserInfo(smUserDTO);
 		boolean updateBoolean = platformClientUtil.getFrameworkService().updateUser(userInfo, new UserEntityInfo(loginUserName, null));
 		//淇敼鎴愬姛锛屽苟涓旂敤鎴峰叧鑱旈儴闂ㄦ湁鎵�鏇存敼
-		if(updateBoolean && Func.isNotEmpty(smUserDTO.getPkDepartment()) && !smUserDTO.getPkDepartment().equals(dbSmUserVO.getPkDepartment())){
+		if(updateBoolean && !smUserDTO.getPkDepartment().equals(dbSmUserVO.getPkDepartment())){
 			//鎵ц淇濆瓨鐢ㄦ埛閮ㄩ棬鍏宠仈鍏崇郴
 			orgDeptQueryService.saveUsersDept(new String[]{dbSmUserVO.getOid()},smUserDTO.getPkDepartment());
 		}
@@ -1144,8 +1199,8 @@
 		//鏍规嵁褰撳墠鍒涘缓杩欎釜鐢ㄦ埛鐨勪汉鎵�缁戝畾瀵嗙爜绛栫暐鏉ヨ繘琛屽瘑鐮佹牎楠�
 		try {
 			//TODO:涓轰簡鏂逛究璋冭瘯锛屾墍浠ヨ繖鍎垮厛娉ㄩ噴鍐欐鍚庨潰璁板緱鏇存敼
-			//String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
-			String userName = "developer";
+			String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
+			//String userName = "developer";
 			String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(userName, smUserDTO.getPassword(),null);
 			if (!StringUtils.isBlank(error)) {
 				throw new VciBaseException("褰撳墠璁剧疆鐨勫瘑鐮侊紝瀵嗙爜绛栫暐鏍¢獙鏈�氳繃");
@@ -1175,7 +1230,7 @@
 		userInfo.status = user.getStatus();
 		userInfo.createTime = user.getCreateTime().getTime();
 		userInfo.createUser = user.getCreator() == null ? "" : user.getCreator();
-		userInfo.updateTime = user.getLastModifyTime().getTime();
+		userInfo.updateTime = System.currentTimeMillis();
 		userInfo.updateUser = user.getLastModifier() == null ? "" : user.getLastModifier();
 		userInfo.pwdUpdateTime = user.getPwdUpdateTime().getTime();
 		userInfo.grantor = user.getGrantor() == null ? "" : user.getGrantor();
@@ -1191,11 +1246,12 @@
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean deleteUser(String[] ids) throws PLException {
-		if(Func.isEmpty(ids)){
-			throw new VciBaseException("寰呭垹闄ょ殑鐢ㄦ埛id鍒楄〃涓嶈兘涓虹┖锛�");
-		}
+		VciBaseUtil.alertNotNull(ids,"瑕佸垹闄ょ殑鐢ㄦ埛涓婚敭");
 		//璋冪敤platformClientUtil鐨勫垹闄ょ敤鎴风殑鏂规硶锛屼細涓�璧峰垹闄ゆ帀鍏峰鍏宠仈鍏崇郴鐨勪竴浜涗俊鎭紝濡傞儴闂�
-		return platformClientUtil.getFrameworkService().deleteUser(ids, null);
+		return platformClientUtil.getFrameworkService().deleteUser(
+				ids,
+				new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(),null)
+		);
 	}
 
 	/**
@@ -1219,6 +1275,8 @@
 	 */
 	@Override
 	public String downloadImportTemplate(String downloadFileName) {
+		//鐣岄潰娌′紶鍚嶇О锛屼娇鐢ㄩ粯璁ゅ悕绉�
+		downloadFileName = Func.isBlank(downloadFileName) ?  "鐢ㄦ埛瀵煎叆妯℃澘_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss"):downloadFileName;
 		// 璁剧疆琛ㄥ崟鍒楀悕
 		List<String> columns = new ArrayList<>(Arrays.asList("璐﹀彿", "瀵嗙爜", "濮撳悕", "鐢靛瓙閭", "涓撲笟", "鎻忚堪", "閮ㄩ棬(涓婁笅绾ч儴闂ㄤ箣闂翠互鍙嶆枩鏉犻殧寮�(/))"));
 		//鑾峰彇鏄惁瀵煎嚭瀵嗙骇閰嶇疆椤�
@@ -1271,8 +1329,8 @@
 			//1銆佽鍙杄xcel涓殑鏁版嵁锛岀粍鎴愬璞�
 			ReadExcelOption excelOption = new ReadExcelOption();
 			//褰撳墠鐧诲綍鐨勭敤鎴疯处鍙�
-			//String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
-			String loginUserId = "developer";
+			String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
+			//String loginUserId = "developer";
 			UserEntityInfo userEntityInfo = new UserEntityInfo(loginUserId,null);
 			//鏄惁瀵煎叆瀵嗙骇閰嶇疆
 			boolean exportSecretGrade = Boolean.parseBoolean(ConfigReader.getConfigValue("exportSecretGrade"));
@@ -1334,7 +1392,6 @@
 				smUserDTO.setPwdUpdateTime(date);
 				smUserDTO.setStatus((short) 0);
 				smUserDTO.setCreateTime(date);
-				smUserDTO.setLastModifyTime(date);
 				smUserDTO.setCreator(loginUserId);
 				smUserDTO.setLastModifier(loginUserId);
 				//淇濆瓨鐢ㄦ埛

--
Gitblit v1.9.3