From 5acc490fa6f77a9ed7b5976ee6a2e22b070df5bf Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 09 七月 2024 09:49:36 +0800
Subject: [PATCH] 角色管理联调修改、部门管理接口等代码上传

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java |  379 ++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 340 insertions(+), 39 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..4374a0a 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,34 +1,52 @@
 package com.vci.frameworkcore.compatibility.impl;
 
+import com.vci.corba.common.PLException;
+import com.vci.corba.common.data.UserEntityInfo;
+import com.vci.corba.framework.data.RoleInfo;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
 import com.vci.frameworkcore.constant.FrameWorkBtmTypeConstant;
+import com.vci.frameworkcore.dto.SmRoleDTO;
 import com.vci.frameworkcore.enumpck.RoleClassifyEnum;
 import com.vci.frameworkcore.enumpck.RoleControlAreaEnum;
 import com.vci.frameworkcore.model.SmRoleForPlatform1;
+import com.vci.frameworkcore.model.dto.SmUserDTO;
+import com.vci.frameworkcore.model.po.SmRolePO;
+import com.vci.frameworkcore.model.po.SmUserPO;
+import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
 import com.vci.frameworkcore.pagemodel.SmRoleVO;
+import com.vci.frameworkcore.pagemodel.SmUserVO;
+import com.vci.frameworkcore.properties.ConfigReader;
 import com.vci.omd.utils.ObjectTool;
+import com.vci.starter.poi.bo.ReadExcelOption;
+import com.vci.starter.poi.constant.ExcelLangCodeConstant;
+import com.vci.starter.poi.util.ExcelUtil;
 import com.vci.starter.web.constant.QueryOptionConstant;
+import com.vci.starter.web.enumpck.UserSecretEnum;
 import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.pagemodel.DataGrid;
-import com.vci.starter.web.pagemodel.PageHelper;
-import com.vci.starter.web.pagemodel.Tree;
-import com.vci.starter.web.pagemodel.TreeQueryObject;
+import com.vci.starter.web.pagemodel.*;
+import com.vci.starter.web.util.LangBaseUtil;
+import com.vci.web.util.BeanUtil;
 import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.WebThreadLocalUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.web.properties.WebProperties;
+import com.vci.web.enumpck.UserTypeEnum;
 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;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.io.File;
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
-import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
 
 /**
  * 瑙掕壊鐨勬煡璇㈡湇鍔★紝鍏煎鏉ュ钩鍙帮紝绱犳湁鐨勬帴鍙i兘杩斿洖鏂扮殑瑙掕壊鏄剧ず瀵硅薄
@@ -45,22 +63,38 @@
 	private WebBoServiceI boService;
 
 	/**
+	 * 骞冲彴璋冪敤瀹㈡埛绔�
+	 */
+	@Autowired
+	private PlatformClientUtil platformClientUtil;
+
+	private final Integer QUERY_IN_LIMIT = 1000;
+
+	/**
+	 * 鏃ュ織
+	 */
+	private Logger logger = LoggerFactory.getLogger(getClass());
+
+	/**
      * 鏍规嵁瑙掕壊涓婚敭鑾峰彇瑙掕壊鐨勪俊鎭�
-     * @param roleOid 瑙掕壊涓婚敭
+     * @param conditionMap 瑙掕壊涓婚敭
      * @return 瑙掕壊鐨勬樉绀哄璞★紝濡傛灉瑙掕壊涓嶅瓨鍦ㄥ垯杩斿洖null锛屼笉浼氭姏鍑哄紓甯�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
 	@Override
-	public SmRoleVO getRoleByRoleOid(String roleOid) throws VciBaseException {
-		if(StringUtils.isBlank(roleOid)){
+	public SmRoleVO getRoleByConditionMap(Map<String,String> conditionMap) throws VciBaseException {
+		if(Func.isEmpty(conditionMap)){
 			return null;
 		}
-		SmRoleForPlatform1 role = boService.selectByOid(roleOid, SmRoleForPlatform1.class);
-		if(role == null || StringUtils.isBlank(role.getPluid())){
-			throw new VciBaseException(DATA_OID_NOT_EXIST);
+		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap,SmRoleForPlatform1.class);
+		List<SmRoleForPlatform1> smRoleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, SmRoleForPlatform1.class);
+		if(Func.isNotEmpty(smRoleForPlatform1s) && Func.isNotBlank(smRoleForPlatform1s.get(0).getPluid())){
+			//瑙掕壊鍚嶄笉鑳介噸澶嶆墍浠ョ洿鎺ュ彇绗竴涓厓绱�
+			return platformRole2SmRoleVO(smRoleForPlatform1s.get(0));
 		}
-		return platformRole2SmRoleVO(role);
+		return null;
 	}
+
 	/**
      * 鎵归噺鑾峰彇瑙掕壊鐨勪俊鎭� 锛堟牴鎹鑹蹭富閿級
      * @param roleOidCollections 瑙掕壊涓婚敭鐨勯泦鍚堬紝鍙互瓒呰繃1000涓�
@@ -84,6 +118,7 @@
 		});
 		return 	platformRole2SmRoleVOs(roles);
 	}
+
 	/**
      * 鑾峰彇瑙掕壊鐨勫垪琛紝榛樿浼氫互瑙掕壊鍚嶅崌搴忔帓鍒楋紝瑙掕壊鐨勭紪杈戦〉闈㈠垪琛ㄤ笉瑕佷娇鐢ㄨ繖涓帴鍙�
      * @param queryMap 鏌ヨ鏉′欢
@@ -92,15 +127,12 @@
      * @throws VciBaseException 鍙傛暟涓虹┖鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
 	@Override
-	public DataGrid<SmRoleVO> gridRoles(Map<String, String> queryMap,
-										PageHelper pageHelper) throws VciBaseException {
+	public DataGrid<SmRoleVO> gridRoles(Map<String, String> queryMap, PageHelper pageHelper) throws VciBaseException {
 		if(pageHelper == null){
 			pageHelper = new PageHelper(-1);
 		}
 		pageHelper.addDefaultAsc("plname");
 		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(queryMap,SmRoleForPlatform1.class,pageHelper);
-		//鎴戜滑涓嶈兘鏄剧ず涓夊憳鍜岀鐞嗗憳鐨勮鑹�
-		queryWrapper.eq("pltype","2");
 		List<SmRoleForPlatform1> roleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, SmRoleForPlatform1.class);
 		DataGrid<SmRoleVO> dataGrid = new DataGrid<>();
 		if(!CollectionUtils.isEmpty(roleForPlatform1s)){
@@ -109,6 +141,7 @@
 		}
 		return dataGrid;
 	}
+
 	 /**
      * 鏍规嵁瑙掕壊涓婚敭鑾峰彇瑙掕壊鐨勫鍚�
      * @param roleOid 瑙掕壊涓婚敭
@@ -117,9 +150,52 @@
 	@Override
 	public String getRoleNameByRoleOid(String roleOid) {
 		WebUtil.alertNotNull(roleOid,"瑙掕壊涓婚敭");
-		return getRoleByRoleOid(roleOid).getName();
+		Map<String, String> conditionMap = new HashMap<>();
+		conditionMap.put("pluid",roleOid);
+		return getRoleByConditionMap(conditionMap).getName();
 	}
-	 /**
+
+	/**
+	 * 鏍规嵁瑙掕壊鍚嶆煡璇㈣鑹蹭俊鎭�
+	 * @param roleNameList
+	 * @param queryMap
+	 * @return
+	 */
+	@Override
+	public List<SmRoleVO> listRoleByRoleName(Collection<String> roleNameList, Map<String, String> queryMap) {
+		if(Func.isEmpty(roleNameList)){
+			return new ArrayList<>();
+		}
+		if(queryMap == null){
+			queryMap = new HashMap<>();
+		}
+		List<SmRoleForPlatform1> roles = new ArrayList<>();
+		if(roleNameList.size() > QUERY_IN_LIMIT){
+			Map<String, String> finalQueryMap = queryMap;
+			WebUtil.switchCollectionForOracleIn(roleNameList).stream().forEach(roleNames->{
+				Map<String,String> conditionMap = new HashMap<>();
+				finalQueryMap.forEach((key,value)->{
+					conditionMap.put(key,value);
+				});
+				conditionMap.put("plname", QueryOptionConstant.IN + WebUtil.toInSql(roleNames.toArray(new String[0])));
+				VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap,SmRoleForPlatform1.class);
+				List<SmRoleForPlatform1> roleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, SmRoleForPlatform1.class);
+				if(!CollectionUtils.isEmpty(roleForPlatform1s)){
+					roles.addAll(roleForPlatform1s);
+				}
+			});
+		}else{
+			queryMap.put("plname", QueryOptionConstant.IN + WebUtil.toInSql(roleNameList.toArray(new String[0])));
+		}
+		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(queryMap,SmRoleForPlatform1.class);
+		List<SmRoleForPlatform1> roleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, SmRoleForPlatform1.class);
+		if(!CollectionUtils.isEmpty(roleForPlatform1s)){
+			roles.addAll(roleForPlatform1s);
+		}
+		return platformRole2SmRoleVOs(roles);
+	}
+
+	/**
      * 鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇鍏宠仈鐨勮鑹�
      * @param userOid 鐢ㄦ埛涓婚敭
      * @param queryMap 鏌ヨ鏉′欢锛屽鏋滈渶瑕佷娇鐢ㄧ敤鎴风殑灞炴�ф潵鏌ヨ鍙互浣跨敤pkUser.xxxx
@@ -170,6 +246,7 @@
 		}
 		return platformRole2SmRoleVOs(roles);
 	}
+
 	  /**
      * 鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇鍏宠仈鐨勮鑹�
      * @param userOid 鐢ㄦ埛涓婚敭
@@ -210,6 +287,7 @@
 		}
 		return gridRoles(queryMap,pageHelper);
 	}
+
 	 /**
      * 鑾峰彇鏈叧鑱旀煇涓敤鎴风殑瑙掕壊
      * @param userOid 鐢ㄦ埛涓婚敭
@@ -219,20 +297,10 @@
 	@Override
 	public List<SmRoleVO> listRoleUnInUserOid(String userOid,
 			Map<String, String> queryMap) {
+
 		return listRoleByUserOid(userOid,queryMap,true);
 	}
-	/**
-     * 鑾峰彇鏈叧鑱旀煇涓敤鎴风殑瑙掕壊
-     * @param userOid 鐢ㄦ埛涓婚敭
-     * @param queryMap 鏌ヨ鏉′欢锛屽鏋滈渶瑕佷娇鐢ㄧ敤鎴风殑灞炴�ф潵鏌ヨ鍙互浣跨敤pkUser.xxxx
-     * @param pageHelper 鍒嗛〉鍜屾帓搴忓璞★紝鑰佸钩鍙颁笉鏀寔浣跨敤瑙掕壊缂栧彿鏉ユ帓搴�
-     * @return 瑙掕壊鐨勬樉绀哄璞�
-     */
-	@Override
-	public DataGrid<SmRoleVO> gridRoleUninUserOid(String userOid,
-			Map<String, String> queryMap, PageHelper pageHelper) {
-		return gridRoleByUserOid(userOid,queryMap,pageHelper,true);
-	}
+
 	  /**
      * 鎵归噺鏍规嵁鐢ㄦ埛鐨勪富閿潵鑾峰彇瑙掕壊
      * @param userOidCollection 鐢ㄦ埛涓婚敭闆嗗悎
@@ -255,16 +323,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 +350,7 @@
 		}
 		return new HashMap<>();
 	}
+
 	 /**
      * 鏍规嵁鏉冮檺涓婚敭鑾峰彇鍏宠仈鐨勮鑹�
      * @param functionOid 鏉冮檺涓婚敭
@@ -444,8 +516,9 @@
 		}
 		return new HashMap<>();
 	}
+
 	 /**
-     * 鍙傜収瑙掕壊鐨勫垪琛紝涓夊憳绠$悊鐨勪笁涓鑹蹭笉浼氭樉绀�
+     * 鍙傜収瑙掕壊鐨勫垪琛紝瓒呯鏌ュ叏閮紝鍏朵粬鐨勯兘鏄煡鏅�氱殑锛堜笉鍖呭惈涓夊憳锛�
      * @param queryMap 鏌ヨ鏉′欢
      * @param pageHelper 鍒嗛〉鍜屾帓搴忕殑淇℃伅锛屽湪鍏煎鑰佸钩鍙扮殑鏃跺�欎細鑷姩鍏煎锛屽鏋滃睘鎬т笉瀛樺湪浼氳嚜鍔ㄥ拷鐣�
      * @return 瑙掕壊鐨勬樉绀哄璞″垪琛�
@@ -455,8 +528,14 @@
 	public DataGrid<SmRoleVO> refGridRoles(Map<String, String> queryMap,
 			PageHelper pageHelper) throws VciBaseException {
 		//鑰佸钩鍙版病鏈夌敓鏁堢姸鎬�
+		//鏍规嵁褰撳墠鐢ㄦ埛鏉ュ喅瀹氳兘鏌ラ偅浜涜鑹诧細鏅�氱敤鎴峰彧鑳芥煡鏅�氳鑹诧紝绠$悊鍛樺拰鏅�氱敤鎴峰彧鑳芥煡鏅�氳鑹�
+		String usertype = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUsertype();
+		if(!UserTypeEnum.SUPPER_ADMIN.getValue().equals(usertype)){
+			queryMap.put("pltype","2");
+		}
 		return gridRoles(queryMap, pageHelper);
 	}
+
 	  /**
      * 瑙掕壊鐨勬爲褰㈠睍绀猴紝甯哥敤浜庤鑹查�夋嫨鐢ㄦ埛鐨勯〉闈娇鐢�
      * @param treeQueryObject 鏍戞煡璇㈠璞�
@@ -488,6 +567,227 @@
 	}
 
 	/**
+	 * 鎴愬憳绠$悊鍒嗛厤瑙掕壊璋冪敤锛屼繚瀛樼敤鎴疯鑹插叧鑱斿叧绯�
+	 * @param userOids
+	 * @param roleIds
+	 * @return
+	 */
+	@Override
+	public boolean saveRights(String[] userOids, String[] roleIds) throws PLException {
+		VciBaseUtil.alertNotNull(userOids,"鐢ㄦ埛涓婚敭");
+		//roleIds鍏佽涓虹┖锛屼负绌烘椂娓呯┖褰撳墠鐢ㄦ埛鐨勬潈闄�
+		UserEntityInfo userEntityInfo = new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(),null);
+		return platformClientUtil.getFrameworkService().saveRights(roleIds,userOids,userEntityInfo);
+	}
+
+	/**
+	 * 瑙掕壊绠$悊鍒嗛厤鎴愬憳鎺ュ彛璋冪敤
+	 * @param userOids
+	 * @param roleId
+	 * @return
+	 * @throws PLException
+	 */
+	@Override
+	public boolean saveRight(String[] userOids, String roleId) throws PLException {
+		VciBaseUtil.alertNotNull(roleId,"瑙掕壊涓婚敭");
+		//roleIds鍏佽涓虹┖锛屼负绌烘椂娓呯┖褰撳墠鐢ㄦ埛鐨勬潈闄�
+		UserEntityInfo userEntityInfo = new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(),null);
+		return platformClientUtil.getFrameworkService().saveRight(roleId,userOids,userEntityInfo);
+	}
+
+	/**
+	 * 鏂板瑙掕壊
+	 * @param smRoleDTO
+	 * @return true鎴愬姛锛宖alse澶辫触
+	 */
+	@Override
+	public boolean addRole(SmRoleDTO smRoleDTO) throws PLException {
+		//鍒ょ┖
+		VciBaseUtil.alertNotNull(
+				smRoleDTO,"娣诲姞鐨勮鑹插璞�",
+				smRoleDTO.getName(),"瑙掕壊鍚�");
+		//瑙掕壊鍚嶅垽閲�
+		Map<String, String> conditionMap = new HashMap<>();
+		conditionMap.put("plname",smRoleDTO.getName());
+		SmRoleVO dbSmRoleVO = getRoleByConditionMap(conditionMap);
+		if(Func.isNotEmpty(dbSmRoleVO)){
+			throw new VciBaseException("璇ヨ鑹插悕绉板凡缁忓瓨鍦�,璇蜂慨鏀�!");
+		}
+		SessionInfo loginUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+		String userId = loginUser.getUserId();
+		//瑙掕壊绫诲瀷锛岃繖閲岃缃簡浼氬湪changeRoleObjectToRoleInfo涓浆鎹�
+		if(UserTypeEnum.SUPPER_ADMIN.getValue().equals(loginUser.getUsertype())){
+			smRoleDTO.setRoleClassify(RoleClassifyEnum.MANAGE.getValue());
+		}else {
+			smRoleDTO.setRoleClassify(RoleClassifyEnum.BUSINESS.getValue());
+		}
+		//鐢熸垚瀛樺偍鐨刢orba瀵硅薄
+		Date date = new Date();
+		smRoleDTO.setCreateTime(date);
+		smRoleDTO.setCreator(userId);
+		smRoleDTO.setLastModifier(userId);
+		RoleInfo roleInfo = changeSmRoleDTOToRoleInfo(smRoleDTO);
+		UserEntityInfo userEntityInfo = new UserEntityInfo(userId, "");
+		String oid = platformClientUtil.getFrameworkService().saveRole(roleInfo, userEntityInfo,null);
+		if (Func.isEmpty(oid)) {
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * 淇敼瑙掕壊
+	 * @param smRoleDTO
+	 * @return
+	 */
+	@Override
+	public boolean updateRole(SmRoleDTO smRoleDTO) throws PLException {
+		//鍒ょ┖
+		VciBaseUtil.alertNotNull(
+				smRoleDTO,"娣诲姞鐨勮鑹插璞�",
+				smRoleDTO.getName(),"瑙掕壊鍚�");
+		//鏌ヨ鏁版嵁搴撲腑鐨勶紝鏍规嵁瑙掕壊鍚嶆煡
+		Map<String, String> conditionMap = new HashMap<>();
+		conditionMap.put("plname",smRoleDTO.getName());
+		SmRoleVO dbSmRoleVO = getRoleByConditionMap(conditionMap);
+		//鏍规嵁涓婚敭娌℃煡璇㈠埌浜嗙敤鎴�
+		if(Func.isEmpty(dbSmRoleVO) || Func.isBlank(dbSmRoleVO.getOid())){
+			throw new PLException("500", new String[] { "褰撳墠淇敼鐨勮鑹蹭笉瀛樺湪!"});
+		}
+		//瑙掕壊鍚嶇浉绛夛紝浣嗘槸涓婚敭涓嶇浉绛夛紝璇存槑淇敼涓虹殑瑙掕壊鍚嶅凡瀛樺湪锛屼笉鑳介噸澶�
+		if(dbSmRoleVO.getName().equals(smRoleDTO.getName()) && !dbSmRoleVO.getOid().equals(smRoleDTO.getOid())){
+			throw new PLException("500", new String[] { "璇ヨ鑹插悕绉板凡缁忓瓨鍦�,璇蜂慨鏀�!"});
+		}
+		SmRoleDTO smRoleDTO1 = new SmRoleDTO();
+		BeanUtil.copy(dbSmRoleVO,smRoleDTO1);
+		smRoleDTO1.setName(smRoleDTO.getName());
+		smRoleDTO1.setDescription(smRoleDTO.getDescription());
+		String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();; //"developer"
+		smRoleDTO.setLastModifier(loginUserId);
+		RoleInfo roleInfo = changeSmRoleDTOToRoleInfo(smRoleDTO1);
+		boolean updateBoolean = platformClientUtil.getFrameworkService().updateRole(roleInfo, new UserEntityInfo(loginUserId, null));
+		return updateBoolean;
+	}
+
+	/**
+	 * 鍒犻櫎瑙掕壊
+	 * @param ids
+	 * @return
+	 * @throws PLException
+	 */
+	@Override
+	public boolean deleteRole(String[] ids) throws PLException {
+		VciBaseUtil.alertNotNull(ids,"瑕佸垹闄ょ殑瑙掕壊涓婚敭");
+		//鍏峰杩炲甫鍒犻櫎鐨勫姛鑳斤紝濡傝鑹茶彍鍗曟巿鏉冭〃閲岄潰鐨勬巿鏉冧俊鎭�
+		return platformClientUtil.getFrameworkService().deleteRole(
+				ids,
+				new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(), null)
+		);
+	}
+
+	/**
+	 * 瀵煎叆瑙掕壊
+	 * @param file
+	 * @return
+	 * @throws VciBaseException
+	 */
+	@Override
+	public BaseResult importRole(File file) throws VciBaseException {
+		VciBaseUtil.alertNotNull(file,"excel鏂囦欢");
+		if(!file.exists()){
+			throw new VciBaseException("瀵煎叆鐨別xcel鏂囦欢涓嶅瓨鍦�,{0}",new String[]{file.getPath()});
+		}
+		try{
+			//1銆佽鍙杄xcel涓殑鏁版嵁锛岀粍鎴愬璞�
+			ReadExcelOption excelOption = new ReadExcelOption();
+			//璇诲彇excel杞崲涓簆o瀵硅薄
+			List<SmRolePO> poList = ExcelUtil.readDataObjectFromExcel(file, SmRolePO.class,excelOption,(value, po, fieldName)->{});
+			//鍘婚櫎閮芥槸绌虹殑鎯呭喌
+			if(CollectionUtils.isEmpty(poList)){
+				return BaseResult.fail(ExcelLangCodeConstant.IMPORT_CONTENT_NULL,new String[]{});
+			}
+			//鏁版嵁搴撴煡璇㈡槸鍚︽湁宸插瓨鍦ㄧ殑瑙掕壊鍚嶏紝鏂逛究鍚庣画鍋氬垽閲嶅鐞�
+			List<SmRoleVO> smRoleVOList = this.listRoleByRoleName(poList.stream().map(SmRolePO::getName).collect(Collectors.toSet()),null);
+			List<String> repeatRoleName = new ArrayList<>();
+			if(Func.isNotEmpty(smRoleVOList)){
+				repeatRoleName = smRoleVOList.stream().map(SmRoleVO::getName).collect(Collectors.toList());
+			}
+			//褰撳墠excel涓槸鍚﹂噸澶嶇敤鐨勫垽閲峂ap:锛坘ey锛氳处鍙凤紝value锛氳鍙凤級
+			Map<String, String> excelReapeat = new HashMap<>();
+			//鍒ゆ柇蹇呭~灞炴�ф槸鍚︿负绌猴紝瑙掕壊鏄惁宸插瓨鍦紝浠ュ強琛ㄦ牸鍐呮槸鍚﹂噸澶�
+			List<String> finalRepeatroleName = repeatRoleName;
+			poList.stream().forEach(smRolePO -> {
+				//鍏堝蹇呭~灞炴�у垽绌哄鐞�
+				if(Func.isBlank(smRolePO.getName())){
+					throw new VciBaseException("绗��"+smRolePO.getRowIndex()+"銆戣锛宺olenameerror");
+				}else if(finalRepeatroleName.contains(smRolePO.getName())){//鍒ゆ柇瑙掕壊鍚嶆槸鍚︿笌搴撲腑閲嶅
+					throw new VciBaseException("绗��"+smRolePO.getRowIndex()+"銆戣锛岃鑹插悕鍦ㄧ郴缁熶腑宸茬粡瀛樺湪,璇蜂慨鏀�!");
+				}else if(excelReapeat.containsKey(smRolePO.getName())){//琛ㄦ牸涓垽閲�
+					throw new VciBaseException("绗��"+excelReapeat.get(smRolePO.getName())+"銆戣鍜岀銆�"+smRolePO.getRowIndex()+"銆戣鏁版嵁锛岃鑹插悕閲嶅");
+				}
+				excelReapeat.put(smRolePO.getName(),smRolePO.getRowIndex());
+			});
+			//淇濆瓨閫昏緫
+			poList.stream().forEach(smRolePO->{
+				try {
+					SmRoleDTO smRoleDTO = new SmRoleDTO();
+					BeanUtil.copy(smRolePO,smRoleDTO);
+					//SessionInfo loginUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+					String userId = "developer";//loginUser.getUserId();
+					//瑙掕壊绫诲瀷锛岃繖閲岃缃簡浼氬湪changeRoleObjectToRoleInfo涓浆鎹�
+					if(UserTypeEnum.SUPPER_ADMIN.getValue().equals("0")){
+						smRoleDTO.setRoleClassify(RoleClassifyEnum.MANAGE.getValue());
+					}else {
+						smRoleDTO.setRoleClassify(RoleClassifyEnum.BUSINESS.getValue());
+					}
+					//鐢熸垚瀛樺偍鐨刢orba瀵硅薄
+					Date date = new Date();
+					smRoleDTO.setCreateTime(date);
+					smRoleDTO.setCreator(userId);
+					smRoleDTO.setLastModifier(userId);
+					RoleInfo roleInfo = changeSmRoleDTOToRoleInfo(smRoleDTO);
+					UserEntityInfo userEntityInfo = new UserEntityInfo(userId, "");
+					//鎵ц淇濆瓨
+					platformClientUtil.getFrameworkService().saveRole(roleInfo, userEntityInfo);
+				} catch (PLException e) {
+					e.printStackTrace();
+					throw new VciBaseException("鎵ц鍒扮銆�"+smRolePO.getRowIndex()+"銆戣淇濆瓨閫昏緫鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e));
+				}
+			});
+		}catch (Exception e){
+			if(logger.isErrorEnabled()){
+				logger.error("璇诲彇excel鍐呭鏃舵垨淇濆瓨瑙掕壊淇℃伅鏃跺嚭鐜颁簡閿欒锛屽叿浣撳師鍥狅細",e.getMessage());
+			}
+			e.printStackTrace();
+			return BaseResult.fail(LangBaseUtil.getErrorMsg(e),new String[]{},e);
+		}
+		return BaseResult.success("瑙掕壊瀵煎叆鎴愬姛锛�");
+	}
+
+	/**
+	 * 瑙掕壊DTO瀵硅薄杞琧orba瀵硅薄
+	 * @param role
+	 * @return
+	 */
+	public RoleInfo changeSmRoleDTOToRoleInfo(SmRoleDTO role) {
+		RoleInfo roleInfo = new RoleInfo();
+		roleInfo.id = role.getOid() == null ? "" : role.getOid();
+		roleInfo.name = role.getName();
+		roleInfo.description = role.getDescription() == null ? "" : role.getDescription();
+		//绠$悊鍛樿鑹查粯璁や负1锛屾櫘閫氳鑹查粯璁や负2锛屼絾鏄兘闇�瑕佽缃皬涓�涓紝鍥犱负鍚庡彴鍒ゆ柇褰搕ype<2鏃朵細鎷縯ype+1
+		if(RoleClassifyEnum.MANAGE.getValue().equals(role.getRoleClassify())){
+			roleInfo.type = 0;
+		}else{
+			roleInfo.type = 1;
+		}
+		roleInfo.createTime = role.getCreateTime().getTime();
+		roleInfo.createUser = role.getCreator() == null ? "" : role.getCreator();
+		roleInfo.updateTime = System.currentTimeMillis();
+		roleInfo.updateUser = role.getLastModifier() == null ? "" : role.getLastModifier();
+		return roleInfo;
+	}
+
+	/**
 	 * 瑙掕壊鐨勮浆鎹紝榛樿鍏ㄩ儴鏄痓s鎺у埗鐨勮鑹�
 	 * @param roleForPlatform1List 鍘熷钩鍙扮殑瑙掕壊
 	 * @return 瑙掕壊鐨勬樉绀哄璞�
@@ -496,7 +796,7 @@
 		List<SmRoleVO> roleVOList = new ArrayList<>();
 		if(!CollectionUtils.isEmpty(roleForPlatform1List)){
 			roleForPlatform1List.stream().forEach(s -> {
-				roleVOList.add( platformRole2SmRoleVO(s));
+				roleVOList.add(platformRole2SmRoleVO(s));
 			});
 		}
 		return roleVOList;
@@ -519,11 +819,12 @@
 		}
 		roleVO.setRoleClassifyText(RoleClassifyEnum.getTextByValue(roleVO.getRoleClassify()));
 		roleVO.setRoleControlArea(RoleControlAreaEnum.BS.getValue());
-		roleVO.setRoleClassifyText(RoleControlAreaEnum.BS.getText());
-		roleVO.setCreateTime(roleForPlatform1.getPlcreatetime());
+		roleVO.setRoleControlAreaText(RoleControlAreaEnum.BS.getText());
+		roleVO.setDescription(roleForPlatform1.getPldesc());
+		roleVO.setCreateTime(new Date(roleForPlatform1.getPlcreatetime()));
 		roleVO.setCreator(roleForPlatform1.getPlcreateuser());
 		roleVO.setLastModifier(roleForPlatform1.getPlupdateuser());
-		roleVO.setLastModifyTime(roleForPlatform1.getPlupdatetime());
+		roleVO.setLastModifyTime(new Date(roleForPlatform1.getPlupdatetime()));
 		roleVO.setBtmname(FrameWorkBtmTypeConstant.SM_ROLE_BTM_TYPE);
 		roleVO.setOwner(roleVO.getCreator());
 		roleVO.setTs(roleVO.getLastModifyTime());

--
Gitblit v1.9.3