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/OrgDeptQueryServiceImpl.java       |  149 +++++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java |    7 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java          |   89 ++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java                |   76 --
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/dto/OrgDepartmentDTO.java                       |   93 +++
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ControllerUtil.java                           |   30 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/po/SmRolePO.java                                |   42 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/pagemodel/SmRoleVO.java                               |    1 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java        |  313 +++++++----
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmRoleQueryServiceImpl.java        |  327 +++++++++++-
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/pagemodel/SmUserVO.java                               |   13 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmPwdStrategyQueryController.java          |    6 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java               |   35 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmRoleQueryController.java                 |  134 ++++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java                 |  140 ++++-
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmRoleQueryServiceI.java                |   65 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmRoleForPlatform1.java                         |   16 
 17 files changed, 1,202 insertions(+), 334 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ControllerUtil.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ControllerUtil.java
index 7c9b4d6..48b5c64 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ControllerUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/util/ControllerUtil.java
@@ -204,6 +204,7 @@
         }
         response.setContentType(contentType);
         response.setCharacterEncoding("UTF-8");
+        //閿欒鏃朵篃闇�瑕佽繖涓弬鏁�
         Cookie cookie = new Cookie("fileDownload", "true");
         cookie.setPath("/");
         response.addCookie(cookie);
@@ -217,6 +218,35 @@
             throw e;
         }
     }
+
+    /**
+     * 灏嗛敊璇殑淇℃伅杈撳叆娴佸啓鍏ュ埌杩斿洖娴佷腑
+     * @param response  鍝嶅簲瀵硅薄
+     * @param data 鏁版嵁鐨勪俊鎭�
+     * @throws IOException 鎷疯礉鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
+     */
+    public static void writeDataToResponse(HttpServletResponse response,String fileName,byte[] data,String contentType) throws IOException {
+        if (StringUtils.isBlank(contentType)) {
+            contentType = "application/force-download";
+        }
+        response.setContentType(contentType);
+        response.setCharacterEncoding("UTF-8");
+        //閿欒鏃朵篃闇�瑕佽繖涓弬鏁�
+        response.addHeader("Content-Disposition", "attachment; filename="+ fileName+ ";filename*=utf-8''" + fileName);
+        Cookie cookie = new Cookie("fileDownload", "true");
+        cookie.setPath("/");
+        response.addCookie(cookie);
+        try {
+            response.getOutputStream().write(data);
+        } catch (IOException e) {
+            //鏈夊彲鑳藉鎴风鐨勯摼鎺�
+            if (logger.isErrorEnabled()) {
+                logger.error("鍐欏叆鏂囦欢鍒板搷搴旀祦鍑洪敊", e);
+            }
+            throw e;
+        }
+    }
+
     /**
      * 灏嗙幆澧冨彉閲忎腑鐨勬煇涓枃浠跺啓鍒拌繑鍥炴祦涓�
      * @param response 鍝嶅簲瀵硅薄
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java
index 4a69cb5..bba3844 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java
@@ -1,7 +1,7 @@
 package com.vci.frameworkcore.compatibility;
 
 import com.vci.corba.common.PLException;
-import com.vci.corba.common.data.UserEntityInfo;
+import com.vci.frameworkcore.model.dto.OrgDepartmentDTO;
 import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
@@ -27,6 +27,15 @@
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
     OrgDepartmentVO getDeptByDeptOid(String deptOid) throws VciBaseException;
+
+    /**
+     * 鏍规嵁鐖堕儴闂ㄤ富閿幏鍙栧拰閮ㄩ棬鍚嶇О閮ㄩ棬鐨勪俊鎭�
+     * @param parentDeptOid 鐖堕儴闂ㄤ富閿�
+     * @param conditionMap 鏌ヨ鏉′欢
+     * @return 閮ㄩ棬鐨勬樉绀哄璞★紝濡傛灉閮ㄩ棬涓嶅瓨鍦ㄥ垯杩斿洖null锛屼笉浼氭姏鍑哄紓甯�
+     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
+     */
+    OrgDepartmentVO getDeptByDeptPOidAndCondition(String parentDeptOid,Map<String,String> conditionMap) throws VciBaseException;
 
     /**
      * 鎵归噺鑾峰彇閮ㄩ棬鐨勪俊鎭� 锛堟牴鎹儴闂ㄤ富閿級
@@ -94,7 +103,7 @@
     List<OrgDepartmentVO> listChildrenDeptByParentOid(String pkFatherDepartmment, Map<String, String> queryMap);
 
     /**
-     * 鑾峰彇鏌愪釜閮ㄩ棬鐨勬墍鏈夋浘缁忕殑涓嬬骇閮ㄩ棬
+     * 鑾峰彇鏌愪釜閮ㄩ棬鐨勬墍鏈夊眰绾х殑涓嬬骇閮ㄩ棬
      * @param pkFatherDepartmment 閮ㄩ棬鐨勪富閿�
      * @param queryMap 鏌ヨ鏉′欢
      * @return 閮ㄩ棬鏄剧ず瀵硅薄
@@ -124,11 +133,25 @@
     boolean saveUsersDept(String[] userOIds, String deptId) throws PLException;
 
     /**
-     * 鏍规嵁閮ㄩ棬鍚嶇О缁勬垚鐨勬爲璺緞锛屾煡璇㈤儴闂ㄤ俊鎭�
-     * @param deptTreeNameList 閮ㄩ棬鍚嶇О(涓婁笅绾ч儴闂ㄤ箣闂翠互鍙嶆枩鏉犻殧寮�(/))
-     * @return 杩斿洖鐨刱ey涓洪儴闂ㄥ悕绉扮粍鎴愮殑涓婁笅绾у叧绯伙紙deptTreeNameList涓殑姣忎釜鍏冪礌锛夛紝value涓哄搴旂殑閮ㄩ棬淇℃伅
+     * 澧炲姞閮ㄩ棬淇℃伅
+     * @param orgDepartmentDTO
+     * @return
      */
-    //Map<String,String> getDeptByTreeName(/*璇蜂紶鍘婚噸鍚庣殑list*/List<String> deptTreeNameList);
+    boolean addDept(OrgDepartmentDTO orgDepartmentDTO) throws PLException;
+
+    /**
+     * 淇敼閮ㄩ棬淇℃伅
+     * @param orgDepartmentDTO
+     * @return
+     */
+    boolean updateDept(OrgDepartmentDTO orgDepartmentDTO) throws PLException;
+
+    /**
+     * 鍒犻櫎閮ㄩ棬
+     * @param ids
+     * @return
+     */
+    boolean deleteDept(String[] ids) throws PLException;
 
     /**
      * 鑾峰彇鎵�鏈夐儴闂ㄧ殑淇℃伅
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmRoleQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmRoleQueryServiceI.java
index 535c9db..de158ff 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmRoleQueryServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmRoleQueryServiceI.java
@@ -1,16 +1,16 @@
 package com.vci.frameworkcore.compatibility;
 
 import com.vci.corba.common.PLException;
+import com.vci.frameworkcore.dto.SmRoleDTO;
 import com.vci.frameworkcore.pagemodel.SmRoleVO;
 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 java.io.File;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.locks.Condition;
 
 /**
  * 瑙掕壊鐨勬煡璇㈡湇鍔★紝鍏煎鏉ュ钩鍙帮紝鎵�鏈夌殑鎺ュ彛閮借繑鍥炴柊鐨勮鑹叉樉绀哄璞�
@@ -21,11 +21,11 @@
 
     /**
      * 鏍规嵁瑙掕壊涓婚敭鑾峰彇瑙掕壊鐨勪俊鎭�
-     * @param roleOid 瑙掕壊涓婚敭
+     * @param conditionMap 瑙掕壊涓婚敭
      * @return 瑙掕壊鐨勬樉绀哄璞★紝濡傛灉瑙掕壊涓嶅瓨鍦ㄥ垯杩斿洖null锛屼笉浼氭姏鍑哄紓甯�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
-    SmRoleVO getRoleByRoleOid(String roleOid) throws VciBaseException;
+    SmRoleVO getRoleByConditionMap(Map<String,String> conditionMap) throws VciBaseException;
 
     /**
      * 鎵归噺鑾峰彇瑙掕壊鐨勪俊鎭� 锛堟牴鎹鑹蹭富閿級
@@ -52,6 +52,14 @@
     String getRoleNameByRoleOid(String roleOid);
 
     /**
+     * 鏍规嵁瑙掕壊鍚嶆煡璇㈣鑹蹭俊鎭�
+     * @param roleNameList
+     * @param queryMap
+     * @return
+     */
+    List<SmRoleVO> listRoleByRoleName(Collection<String> roleNameList, Map<String, String> queryMap);
+
+    /**
      * 鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇鍏宠仈鐨勮鑹�
      * @param userOid 鐢ㄦ埛涓婚敭
      * @param queryMap 鏌ヨ鏉′欢锛屽鏋滈渶瑕佷娇鐢ㄧ敤鎴风殑灞炴�ф潵鏌ヨ鍙互浣跨敤pkUser.xxxx
@@ -75,15 +83,6 @@
      * @return 瑙掕壊鐨勬樉绀哄璞�
      */
     List<SmRoleVO> listRoleUnInUserOid(String userOid, Map<String, String> queryMap);
-
-    /**
-     * 鑾峰彇鏈叧鑱旀煇涓敤鎴风殑瑙掕壊
-     * @param userOid 鐢ㄦ埛涓婚敭
-     * @param queryMap 鏌ヨ鏉′欢锛屽鏋滈渶瑕佷娇鐢ㄧ敤鎴风殑灞炴�ф潵鏌ヨ鍙互浣跨敤pkUser.xxxx
-     * @param pageHelper 鍒嗛〉鍜屾帓搴忓璞★紝鑰佸钩鍙颁笉鏀寔浣跨敤瑙掕壊缂栧彿鏉ユ帓搴�
-     * @return 瑙掕壊鐨勬樉绀哄璞�
-     */
-    DataGrid<SmRoleVO> gridRoleUninUserOid(String userOid, Map<String, String> queryMap, PageHelper pageHelper);
 
     /**
      * 鎵归噺鏍规嵁鐢ㄦ埛鐨勪富閿潵鑾峰彇瑙掕壊
@@ -153,11 +152,41 @@
     List<Tree> refTreeRoles(TreeQueryObject treeQueryObject) throws VciBaseException;
 
     /**
-     * 璇ユ柟娉曞彧鏀寔涓�娆″彧鍏佽鍗曚釜鐢ㄦ埛鍒嗛厤澶氫釜瑙掕壊锛屼竴瀵瑰
-     * @param userOid
+     * 鏂板瑙掕壊
+     * @param smRoleDTO
+     * @return true鎴愬姛锛宖alse澶辫触
+     */
+    boolean addRole(SmRoleDTO smRoleDTO) throws PLException;
+
+    /**
+     * 淇敼瑙掕壊
+     * @param smRoleDTO
+     * @return
+     */
+    boolean updateRole(SmRoleDTO smRoleDTO) throws PLException;
+
+    /**
+     * 鍒犻櫎瑙掕壊
+     * @param ids
+     * @return
+     * @throws PLException
+     */
+    boolean deleteRole(String[] ids) throws PLException;
+
+    /**
+     * 瀵煎叆瑙掕壊
+     * @param file
+     * @return
+     * @throws VciBaseException
+     */
+    BaseResult importRole(File file) throws VciBaseException;
+
+    /**
+     * 淇濆瓨鐢ㄦ埛瑙掕壊鍏宠仈鍏崇郴
+     * @param userOids
      * @param roleIds
      * @return
      */
-    boolean saveRights(String userOid, String[] roleIds) throws PLException;
+    boolean saveRights(String[] userOids, String[] roleIds) throws PLException;
 
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
index eeb80ba..cd8c35f 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
@@ -63,15 +63,6 @@
     List<SmUserVO> listUserByUserOids(Collection<String> userOidCollections) throws VciBaseException;
 
     /**
-     * 鑾峰彇鐢ㄦ埛鐨勫垪琛紝榛樿浼氫互鐢ㄦ埛鍚嶅崌搴忔帓鍒楋紝鐢ㄦ埛鐨勭紪杈戦〉闈㈠垪琛ㄤ笉瑕佷娇鐢ㄨ繖涓帴鍙�
-     * @param queryMap 鏌ヨ鏉′欢
-     * @param pageHelper 鍒嗛〉鍜屾帓搴忕殑淇℃伅锛屽湪鍏煎鑰佸钩鍙扮殑鏃跺�欎細鑷姩鍏煎锛屽鏋滃睘鎬т笉瀛樺湪浼氳嚜鍔ㄥ拷鐣�
-     * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛�
-     * @throws VciBaseException 鍙傛暟涓虹┖鐨勬椂鍊欎細鎶涘嚭寮傚父
-     */
-    DataGrid<SmUserVO> gridUsers(Map<String, String> queryMap, PageHelper pageHelper) throws VciBaseException;
-
-    /**
      * 鐢ㄦ埛绠$悊鐣岄潰鍒嗛〉鏌ヨ
      * @param conditionMap 鏌ヨ鏉′欢
      * @param pageHelper 鍒嗛〉鍙傛暟
@@ -94,6 +85,23 @@
     String getUserNameByUserOid(String userOid);
 
     /**
+     * 鎵归噺鏍规嵁閮ㄩ棬鐨勪富閿幏鍙栫敤鎴�
+     * @param deptOidCollection 閮ㄩ棬鐨勪富閿泦鍚�
+     * @return 閮ㄩ棬涓婚敭鍜屽搴旂殑鐢ㄦ埛鏄剧ず瀵硅薄鍒楄〃鐨勬槧灏勶紝key閮ㄩ棬鐨勪富閿紝value鏄繖涓儴闂ㄤ笅鐨勭敤鎴�
+     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+     */
+    Map<String,List<SmUserVO>> batchListUserByDeptOids(Collection<String> deptOidCollection) throws VciBaseException;
+
+    /**
+     * 缁熻閮ㄩ棬涓嬬殑鐢ㄦ埛锛氬寘鍚瓙閮ㄩ棬涓嬬殑鐢ㄦ埛
+     * @param deptOid
+     * @param queryMap
+     * @return
+     * @throws VciBaseException
+     */
+    List<SmUserVO> countSmUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException;
+
+    /**
      * 鏌ヨ鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄
      * @param deptOid 閮ㄩ棬鐨勪富閿�
      * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮�
@@ -101,24 +109,6 @@
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
      */
     List<SmUserVO> listUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException;
-
-    /**
-     * 鏌ヨ鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
-     * @param deptOid 閮ㄩ棬鐨勪富閿�
-     * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮�
-     * @param pageHelper 鍒嗛〉鍜屾帓搴忎俊鎭紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-     */
-    DataGrid<SmUserVO> gridUserByDeptOid(String deptOid, Map<String, String> queryMap, PageHelper pageHelper) throws VciBaseException;
-
-    /**
-     * 鎵归噺鏍规嵁閮ㄩ棬鐨勪富閿幏鍙栫敤鎴�
-     * @param deptOidCollection 閮ㄩ棬鐨勪富閿泦鍚�
-     * @return 閮ㄩ棬涓婚敭鍜屽搴旂殑鐢ㄦ埛鏄剧ず瀵硅薄鍒楄〃鐨勬槧灏勶紝key閮ㄩ棬鐨勪富閿紝value鏄繖涓儴闂ㄤ笅鐨勭敤鎴�
-     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-     */
-    Map<String,List<SmUserVO>> batchListUserByDeptOids(Collection<String> deptOidCollection) throws VciBaseException;
 
     /**
      * 鏌ヨ涓嶅湪鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
@@ -130,33 +120,13 @@
     List<SmUserVO> listUserUnInDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException;
 
     /**
-     * 鏌ヨ涓嶅湪鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
-     * @param deptOid 閮ㄩ棬鐨勪富閿�
-     * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮�
-     * @param pageHelper 鍒嗛〉鍜屾帓搴忎俊鎭紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-     */
-    DataGrid<SmUserVO> gridUserUnInDeptOid(String deptOid, Map<String, String> queryMap, PageHelper pageHelper) throws VciBaseException;
-
-    /**
-     * 鏌ヨ鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄
+     *  鏌ヨ鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
      * @param roleOid 瑙掕壊鐨勪富閿�
      * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸瑙掕壊鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kRole.xxx杩欐牱鐨勬柟寮�
      * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛�
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
      */
     List<SmUserVO> listUserByRoleOid(String roleOid, Map<String, String> queryMap) throws VciBaseException;
-
-    /**
-     * 鏌ヨ鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
-     * @param roleOid 瑙掕壊鐨勪富閿�
-     * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸瑙掕壊鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kRole.xxx杩欐牱鐨勬柟寮�
-     * @param pageHelper 鍒嗛〉鍜屾帓搴忎俊鎭紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-     */
-    DataGrid<SmUserVO> gridUserByRoleOid(String roleOid, Map<String, String> queryMap, PageHelper pageHelper) throws VciBaseException;
 
     /**
      * 鏌ヨ涓嶅湪鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
@@ -166,16 +136,6 @@
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
      */
     List<SmUserVO> listUserUnInRoleOid(String roleOid, Map<String, String> queryMap) throws VciBaseException;
-
-    /**
-     * 鏌ヨ涓嶅湪鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃
-     * @param roleOid 瑙掕壊鐨勪富閿�
-     * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸瑙掕壊鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kRole.xxx杩欐牱鐨勬柟寮�
-     * @param pageHelper 鍒嗛〉鍜屾帓搴忎俊鎭紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒�
-     * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-     */
-    DataGrid<SmUserVO> gridUserUnInRoleOid(String roleOid, Map<String, String> queryMap, PageHelper pageHelper) throws VciBaseException;
 
     /**
      * 鎵归噺鏍规嵁瑙掕壊鐨勪富閿幏鍙栫敤鎴�
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 f9ff061..22618bc 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
@@ -1,22 +1,20 @@
 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.DeptInfo;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI;
+import com.vci.frameworkcore.model.dto.OrgDepartmentDTO;
 import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
 import com.vci.frameworkcore.model.OrgDeptForPlatform1;
-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.revision.bo.TreeWrapperOptions;
 import com.vci.starter.revision.service.RevisionModelUtil;
 import com.vci.starter.web.constant.QueryOptionConstant;
 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.BeanUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
@@ -67,13 +65,38 @@
      * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
      */
 	@Override
-	public OrgDepartmentVO getDeptByDeptOid(String deptOid)
-			throws VciBaseException {
+	public OrgDepartmentVO getDeptByDeptOid(String deptOid) throws VciBaseException {
 		if(StringUtils.isBlank(deptOid)){
 			return null;
 		}
 		OrgDeptForPlatform1 deptForPlatform1 = boService.selectByOid(deptOid, OrgDeptForPlatform1.class);
 		return deptDO2VO(deptForPlatform1);
+	}
+
+	/**
+	 * 鏍规嵁鐖堕儴闂ㄤ富閿幏鍙栧拰閮ㄩ棬鍚嶇О閮ㄩ棬鐨勪俊鎭�
+	 * @param parentDeptOid 鐖堕儴闂ㄤ富閿�
+	 * @param conditionMap 閮ㄩ棬鍚嶇О
+	 * @return 閮ㄩ棬鐨勬樉绀哄璞★紝濡傛灉閮ㄩ棬涓嶅瓨鍦ㄥ垯杩斿洖null锛屼笉浼氭姏鍑哄紓甯�
+	 * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮暟鎹簱瀛樺湪闂鐨勬椂鍊欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public OrgDepartmentVO getDeptByDeptPOidAndCondition(String parentDeptOid,Map<String,String> conditionMap) throws VciBaseException {
+		if(Func.isEmpty(conditionMap)){
+			conditionMap = new HashMap();
+		}
+		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(new HashMap<>(),OrgDeptForPlatform1.class);
+		//鐖朵富閿负绌烘煡椤跺眰
+		if(Func.isBlank(parentDeptOid)){
+			queryWrapper.isNull("plparentuid");
+		}else{
+			queryWrapper.eq("plparentuid",parentDeptOid);
+		}
+		List<OrgDeptForPlatform1> roleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, OrgDeptForPlatform1.class);
+		if(Func.isEmpty(roleForPlatform1s)){
+			return null;
+		}
+		return deptDO2VO(roleForPlatform1s.get(0));
 	}
 
 	/**
@@ -137,7 +160,7 @@
 				depts.addAll(roleForPlatform1s);
 			}
 		});
-		return 	deptDO2VOs(depts);
+		return deptDO2VOs(depts);
 	}
 
 	/**
@@ -153,6 +176,7 @@
 		if(pageHelper == null){
 			pageHelper = new PageHelper(-1);
 		}
+		//鏍规嵁閮ㄩ棬缂栧彿鎺掑簭
 		pageHelper.addDefaultAsc("plnum");
 		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(queryMap,OrgDeptForPlatform1.class,pageHelper);
 		List<OrgDeptForPlatform1> deptForPlatform1s = boService.selectByQueryWrapper(queryWrapper, OrgDeptForPlatform1.class);
@@ -432,9 +456,6 @@
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean saveUsersDept(String[] userOIds, String deptId) throws PLException {
-		if(Func.isEmpty(userOIds) || Func.isBlank(deptId)){
-			return false;
-		}
 		//鍏堣繘鎬ф煡閲嶅鐞�
 		List<String> repeatUserOidList = new ArrayList<>();
 		//寰幆杩涜鏌ラ噸锛岄伩鍏峣n澶т簬1000
@@ -461,6 +482,110 @@
 	}
 
 	/**
+	 * 澧炲姞閮ㄩ棬淇℃伅
+	 * @param orgDepartmentDTO
+	 * @return
+	 */
+	@Override
+	public boolean addDept(OrgDepartmentDTO orgDepartmentDTO) throws PLException {
+		//鍒ょ┖
+		VciBaseUtil.alertNotNull(
+				orgDepartmentDTO,"娣诲姞鐨勯儴闂ㄥ璞�",
+				orgDepartmentDTO.getName(),"閮ㄩ棬鍚�");
+		//閮ㄩ棬鍚嶅垽閲�
+		Map<String, String> conditionMap = new HashMap<>();
+		conditionMap.put("plname",orgDepartmentDTO.getName());
+		conditionMap.put("plnum",QueryOptionConstant.OR + orgDepartmentDTO.getId());
+		OrgDepartmentVO departmentVO = getDeptByDeptPOidAndCondition(orgDepartmentDTO.getPkFatherDepartment(), conditionMap);
+		if(Func.isNotEmpty(departmentVO)){
+			throw new VciBaseException("鍚屼竴鐖惰妭鐐逛笅璇ラ儴闂ㄥ悕绉版垨缂栧彿宸茬粡瀛樺湪,璇蜂慨鏀�!");
+		}
+		//SessionInfo loginUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
+		String userId = "developer";//loginUser.getUserId();
+
+		//鐢熸垚瀛樺偍鐨刢orba瀵硅薄
+		orgDepartmentDTO.setCreateTime(new Date());
+		orgDepartmentDTO.setCreator(userId);
+		orgDepartmentDTO.setLastModifier(userId);
+		orgDepartmentDTO.setStatus((short) 0);
+		DeptInfo deptInfo = changeOrgDeptDTOToDeptInfo(orgDepartmentDTO);
+		UserEntityInfo userEntityInfo = new UserEntityInfo(userId, "");
+		String oid = platformClientUtil.getFrameworkService().saveDepartment(deptInfo, userEntityInfo);
+		if (Func.isEmpty(oid)) {
+			return false;
+		}
+		return true;
+	}
+
+	/**
+	 * 淇敼閮ㄩ棬淇℃伅
+	 * @param orgDepartmentDTO
+	 * @return
+	 */
+	@Override
+	public boolean updateDept(OrgDepartmentDTO orgDepartmentDTO) throws PLException {
+		//鍒ょ┖
+		VciBaseUtil.alertNotNull(
+				orgDepartmentDTO,"淇敼鐨勯儴闂ㄥ璞�",
+				orgDepartmentDTO.getOid(),"鐢ㄦ埛涓婚敭",
+				orgDepartmentDTO.getId(),"鐢ㄦ埛鍚�"
+		);
+		//鎸塷id鏌ヨ鏁版嵁搴撲腑宸插瓨鍦ㄧ殑
+		OrgDepartmentVO departmentVO = getDeptByDeptOid(orgDepartmentDTO.getOid());
+		//鏍规嵁涓婚敭娌℃煡璇㈠埌
+		OrgDepartmentDTO orgDepartmentDTO1 = new OrgDepartmentDTO();
+		//榛樿灞炴�х粰璧嬪�间笂
+		//BeanUtil.convert(departmentVO,orgDepartmentDTO1);
+		Func.copy(departmentVO,orgDepartmentDTO);
+		//orgDepartmentDTO1.setName(orgDepartmentDTO.getName());
+		//orgDepartmentDTO1.setCode(orgDepartmentDTO.getCode());
+		//orgDepartmentDTO1.setDescription(orgDepartmentDTO.getDescription());
+		String loginUserId = "developer";//WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
+		orgDepartmentDTO1.setLastModifier(loginUserId);
+		DeptInfo deptInfo = changeOrgDeptDTOToDeptInfo(orgDepartmentDTO1);
+		boolean updateBoolean = platformClientUtil.getFrameworkService().updateDepartment(deptInfo, new UserEntityInfo(loginUserId, null));
+		return updateBoolean;
+	}
+
+	/**
+	 * Dto瀵硅薄杞琧orb瀵硅薄
+	 * @param orgDepartmentDTO
+	 * @return
+	 */
+	public DeptInfo changeOrgDeptDTOToDeptInfo(OrgDepartmentDTO orgDepartmentDTO) {
+		DeptInfo departmentInfo = new DeptInfo();
+		departmentInfo.id = orgDepartmentDTO.getOid() == null ? "" : orgDepartmentDTO.getOid();
+		departmentInfo.name = orgDepartmentDTO.getName() == null ? "" : orgDepartmentDTO.getName();
+		departmentInfo.num = orgDepartmentDTO.getId() == null ? "" : orgDepartmentDTO.getId();
+		departmentInfo.code = orgDepartmentDTO.getCode() == null ? "" : orgDepartmentDTO.getCode();
+		departmentInfo.specialties = orgDepartmentDTO.getSpecialties() == null ? "" : orgDepartmentDTO.getSpecialties();
+		departmentInfo.status = orgDepartmentDTO.getStatus() == 0 ? 0 : orgDepartmentDTO.getStatus();
+		departmentInfo.description = orgDepartmentDTO.getDescription() == null ? "" : orgDepartmentDTO.getDescription();
+		departmentInfo.parentId = orgDepartmentDTO.getPkFatherDepartment() == null ? "" : orgDepartmentDTO.getPkFatherDepartment();
+		departmentInfo.createUser = orgDepartmentDTO.getCreator() == null ? "" : orgDepartmentDTO.getCreator();
+		departmentInfo.createTime = orgDepartmentDTO.getCreateTime().getTime();
+		departmentInfo.updateTime = System.currentTimeMillis();
+		departmentInfo.updateUser = orgDepartmentDTO.getLastModifier() == null ? "" : orgDepartmentDTO.getLastModifier();
+		//departmentInfo.grantor = orgDepartmentDTO.getGrantor() == null ? "" : orgDepartmentDTO.getGrantor();
+		return departmentInfo;
+	}
+
+	/**
+	 * 鍒犻櫎閮ㄩ棬
+	 * @param ids
+	 * @return
+	 */
+	@Override
+	public boolean deleteDept(String[] ids) throws PLException {
+		VciBaseUtil.alertNotNull(ids,"瑕佸垹闄ょ殑閮ㄩ棬涓婚敭");
+		//鍏峰杩炲甫鍒犻櫎鐨勫姛鑳斤紝濡傝鑹茶彍鍗曟巿鏉冭〃閲岄潰鐨勬巿鏉冧俊鎭�
+		return platformClientUtil.getFrameworkService().deleteDepartment(
+				ids,
+				new UserEntityInfo("developer"/*WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId()*/, null)
+		);
+	}
+
+	/**
 	 * 鑾峰彇鎵�鏈夐儴闂ㄧ殑淇℃伅
 	 * @return key锛氶儴闂ㄧ敱鍚嶇О缁勬垚鐨勮矾寰勶紙/闂撮殧锛夛紝value瀵瑰簲鏈�灏忓眰绾х殑閮ㄩ棬淇℃伅
 	 */
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java
index e9a2c13..36e1db7 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java
@@ -20,6 +20,7 @@
 import com.vci.starter.web.pagemodel.PageHelper;
 import com.vci.starter.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.service.WebBoServiceI;
 import com.vci.web.util.Func;
@@ -181,7 +182,11 @@
     public boolean saveUserPasswordStrateg(String[] userIds, String passwordStrategId) throws PLException {
         VciBaseUtil.alertNotNull(userIds,"鐢ㄦ埛涓婚敭",passwordStrategId,"瀵嗙爜瀹夊叏绛栫暐涓婚敭");
         //TODO锛氳繖閲屾病鏈夊仛鏌ラ噸澶勭悊锛屾槑澶╄寰楅獙璇佷竴涓嬭繖鍎挎槸涓嶆槸浼氳嚜鍔ㄥ仛saveOrUpdate鐨勫鐞�
-        return platformClientUtil.getFrameworkService().saveUserPasswordStrateg(userIds,passwordStrategId,new UserEntityInfo());
+        return platformClientUtil.getFrameworkService().saveUserPasswordStrateg(
+                userIds,
+                passwordStrategId,
+                new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(),null)
+        );
     }
 
     /**
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 4543a1b..fa9b95d 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
@@ -2,38 +2,51 @@
 
 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兘杩斿洖鏂扮殑瑙掕壊鏄剧ず瀵硅薄
@@ -55,22 +68,31 @@
 	@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;
 	}
 
 	/**
@@ -111,7 +133,6 @@
 		}
 		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)){
@@ -129,10 +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
@@ -234,20 +297,8 @@
 	@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);
+		return listRoleByUserOid(userOid,queryMap,true);
 	}
 
 	  /**
@@ -467,7 +518,7 @@
 	}
 
 	 /**
-     * 鍙傜収瑙掕壊鐨勫垪琛紝涓夊憳绠$悊鐨勪笁涓鑹蹭笉浼氭樉绀�
+     * 鍙傜収瑙掕壊鐨勫垪琛紝瓒呯鏌ュ叏閮紝鍏朵粬鐨勯兘鏄煡鏅�氱殑锛堜笉鍖呭惈涓夊憳锛�
      * @param queryMap 鏌ヨ鏉′欢
      * @param pageHelper 鍒嗛〉鍜屾帓搴忕殑淇℃伅锛屽湪鍏煎鑰佸钩鍙扮殑鏃跺�欎細鑷姩鍏煎锛屽鏋滃睘鎬т笉瀛樺湪浼氳嚜鍔ㄥ拷鐣�
      * @return 瑙掕壊鐨勬樉绀哄璞″垪琛�
@@ -477,6 +528,11 @@
 	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);
 	}
 
@@ -511,16 +567,208 @@
 	}
 
 	/**
-	 * 璇ユ柟娉曞彧鏀寔涓�娆″彧鍏佽鍗曚釜鐢ㄦ埛鍒嗛厤澶氫釜瑙掕壊锛屼竴瀵瑰
-	 * @param userOid
+	 * 淇濆瓨鐢ㄦ埛瑙掕壊鍏宠仈鍏崇郴
+	 * @param userOids
 	 * @param roleIds
 	 * @return
 	 */
 	@Override
-	public boolean saveRights(String userOid, String[] roleIds) throws PLException {
-		VciBaseUtil.alertNotNull(userOid,"鐢ㄦ埛涓婚敭");
+	public boolean saveRights(String[] userOids, String[] roleIds) throws PLException {
+		VciBaseUtil.alertNotNull(userOids,"鐢ㄦ埛涓婚敭");
 		//roleIds鍏佽涓虹┖锛屼负绌烘椂娓呯┖褰撳墠鐢ㄦ埛鐨勬潈闄�
-		return platformClientUtil.getFrameworkService().saveRights(roleIds,new String[]{userOid},new UserEntityInfo());
+		return platformClientUtil.getFrameworkService().saveRights(roleIds,userOids,new 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("pluid",smRoleDTO.getOid());
+		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;
 	}
 
 	/**
@@ -532,7 +780,7 @@
 		List<SmRoleVO> roleVOList = new ArrayList<>();
 		if(!CollectionUtils.isEmpty(roleForPlatform1List)){
 			roleForPlatform1List.stream().forEach(s -> {
-				roleVOList.add( platformRole2SmRoleVO(s));
+				roleVOList.add(platformRole2SmRoleVO(s));
 			});
 		}
 		return roleVOList;
@@ -555,11 +803,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());
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);
 				//淇濆瓨鐢ㄦ埛
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java
index 46be906..c7e9675 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java
@@ -1,13 +1,16 @@
 package com.vci.frameworkcore.controller;
 
 import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI;
+import com.vci.frameworkcore.model.dto.OrgDepartmentDTO;
 import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
 import com.vci.starter.web.annotation.controller.VciUnCheckRight;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
 import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.util.Func;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
@@ -31,24 +34,28 @@
     private OrgDeptQueryServiceI deptQueryService;
 
     /**
-     * 閮ㄩ棬鐨勬爲褰㈠弬鐓�
+     * 閮ㄩ棬鐨勬爲褰㈠弬鐓э紝閮ㄩ棬绠$悊涔熺敤鐨勮繖涓煡璇㈡帴鍙�
      * @param treeQueryObject 鏍戝舰鏁版嵁鐨勬煡璇㈠璞★紝鍖呮嫭鏌ヨ鏉′欢锛屼笂绾т富閿紝鏄惁澶氶�夌瓑锛岋紙extandParamsMap涓坊鍔�"showAllDepartmentNode"涓�"true"鏃�,骞朵笖parentOid涓虹┖锛岃繑鍥炵粨鏋滀腑浼氬寘鍚�滄墍鏈夐儴闂ㄢ�濊繖涓妭鐐癸級
      * @return 閮ㄩ棬鐨勬爲褰㈠弬鐓э紝宸茬粡杞崲浜嗕笂涓嬬骇鍏崇郴
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父锛屽鏋滄槸鑰佺殑椤圭洰閲屼笉鎶涘嚭寮傚父
      */
     @RequestMapping(value = "/refTree",method = RequestMethod.GET)
-    //@VciUnCheckRight
     public BaseResult<Tree> refTree(TreeQueryObject treeQueryObject) throws VciBaseException{
-        List<Tree> deptTreeList = deptQueryService.refTreeDept(treeQueryObject);
-        return  BaseResult.tree(deptTreeList);
-        //鑰佺殑椤圭洰渚濈劧鏄坊鍔爐ry catch锛屾柟娉曢噷涓嶆姏鍑哄紓甯�
-        //BaseResult.fail("杩欓噷杩斿洖鍓嶇鐨勯敊璇俊鎭�");
+        try {
+            List<Tree> deptTreeList = deptQueryService.refTreeDept(treeQueryObject);
+            return  BaseResult.tree(deptTreeList);
+        }catch (Exception e) {
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("閮ㄩ棬鏍戞煡璇㈡椂鍑虹幇閿欒锛屽師鍥狅細" + exceptionMessage);
+            return BaseResult.fail("閮ㄩ棬鏍戞煡璇㈡椂鍑虹幇閿欒锛屽師鍥狅細" + e.getMessage());
+        }
     }
 
     /**
-     * 閮ㄩ棬鏌ヨ锛屽甫鍒嗛〉
+     * 閮ㄩ棬鍒楄〃鏌ヨ锛屽甫鍒嗛〉
      * @param queryObject
-     * @return
+     * @return 杩斿洖鐨刲ist涓嶆槸tree缁撴瀯鐨�
      */
     @RequestMapping(value = "/refDataGrid",method = RequestMethod.GET)
     public BaseResult<OrgDepartmentVO> refDataGrid(BaseQueryObject queryObject){
@@ -57,20 +64,78 @@
     }
 
     /**
-     * 淇濆瓨閮ㄩ棬瑙掕壊鍏宠仈淇℃伅锛屽甫鏌ラ噸鍔熻兘
+     * 淇濆瓨閮ㄩ棬鐢ㄦ埛鍏宠仈淇℃伅锛屽钩鍙拌嚜甯︽煡閲嶅姛鑳�
      * @param userOIds 鐢ㄦ埛id
      * @param deptId 閮ㄩ棬oid
      * @return
      */
     @RequestMapping(value = "/saveUsersDepts",method = RequestMethod.POST)
     public BaseResult saveUsersDepts(String[] userOIds, String deptId){
+        //涓嶈兘鍚屾椂涓虹┖
+        if(Func.isEmpty(userOIds) && Func.isBlank(deptId)){
+            return BaseResult.fail("瑙掕壊涓婚敭鍜岄儴闂ㄤ富閿紝鍙傛暟涓嶈兘鍚屾椂涓虹┖!");
+        }
         try {
-            return deptQueryService.saveUsersDept(userOIds,deptId) ? BaseResult.success("瑙掕壊鍒嗛厤鎴愬姛锛�"):BaseResult.fail("瑙掕壊鍒嗛厤澶辫触锛�");
+            return deptQueryService.saveUsersDept(userOIds,deptId) ? BaseResult.success("閮ㄩ棬鍒嗛厤鎴愬姛锛�"):BaseResult.fail("閮ㄩ棬鍒嗛厤澶辫触锛�");
         }catch (Exception e){
             e.printStackTrace();
             String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
-            log.error("鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇锛屽叧鑱旂殑瑙掕壊鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
-            return BaseResult.fail("鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇锛屽叧鑱旂殑瑙掕壊鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+            log.error("鍏宠仈鐨勯儴闂ㄦ椂鍑虹幇閿欒锛屽師鍥狅細" + exceptionMessage);
+            return BaseResult.fail("鍏宠仈鐨勯儴闂ㄦ椂鍑虹幇閿欒锛屽師鍥狅細" + exceptionMessage);
+        }
+    }
+
+    /**
+     * 鏂板鍗曟潯閮ㄩ棬
+     * @param orgDepartmentDTO
+     * @return
+     */
+    @RequestMapping(value = "/addDept",method = RequestMethod.POST)
+    @VciUnCheckRight
+    public BaseResult addDept(@RequestBody OrgDepartmentDTO orgDepartmentDTO){
+        try {
+            return deptQueryService.addDept(orgDepartmentDTO) ? BaseResult.success("閮ㄩ棬娣诲姞鎴愬姛锛�"):BaseResult.fail("閮ㄩ棬娣诲姞澶辫触锛�");
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("娣诲姞閮ㄩ棬鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+            return BaseResult.fail("娣诲姞閮ㄩ棬鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+        }
+    }
+
+    /**
+     * 淇敼閮ㄩ棬淇℃伅
+     * @param orgDepartmentDTO
+     * @return
+     */
+    @RequestMapping(value = "/updateDept",method = RequestMethod.PUT)
+    @VciUnCheckRight
+    public BaseResult updateRole(@RequestBody OrgDepartmentDTO orgDepartmentDTO){
+        try {
+            return deptQueryService.updateDept(orgDepartmentDTO) ? BaseResult.success("閮ㄩ棬淇敼鎴愬姛锛�"):BaseResult.fail("閮ㄩ棬淇敼澶辫触锛�");
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("淇敼閮ㄩ棬鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+            return BaseResult.fail("淇敼閮ㄩ棬鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+        }
+    }
+
+    /**
+     * 鍒犻櫎閮ㄩ棬
+     * @param ids 瑕佸垹闄ょ殑閮ㄩ棬涓婚敭
+     * @return
+     */
+    @RequestMapping(value = "/deleteDept",method = RequestMethod.DELETE)
+    @VciUnCheckRight
+    public BaseResult deleteDept(String[] ids){
+        try {
+            return deptQueryService.deleteDept(ids) ? BaseResult.success("鍒犻櫎閮ㄩ棬鎴愬姛锛�"):BaseResult.fail("鍒犻櫎閮ㄩ棬澶辫触锛�");
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("娣诲姞閮ㄩ棬鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+            return BaseResult.fail("娣诲姞閮ㄩ棬鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
         }
     }
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmPwdStrategyQueryController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmPwdStrategyQueryController.java
index 47b20fb..99f46f6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmPwdStrategyQueryController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmPwdStrategyQueryController.java
@@ -74,6 +74,12 @@
         }
     }
 
+    /**
+     * 淇濆瓨鐢ㄦ埛瀵嗙爜绛栫暐鍏宠仈鍏崇郴
+     * @param userIds
+     * @param passwordStrategId
+     * @return
+     */
     @RequestMapping(value = "/saveUserPasswordStrateg",method = RequestMethod.POST)
     public BaseResult saveUserPasswordStrateg(String[] userIds, String passwordStrategId){
         try {
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmRoleQueryController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmRoleQueryController.java
index 3ba6449..02d7ab6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmRoleQueryController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmRoleQueryController.java
@@ -1,19 +1,22 @@
 package com.vci.frameworkcore.controller;
 
 import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
+import com.vci.frameworkcore.constant.FrameWorkLangCodeConstant;
+import com.vci.frameworkcore.dto.SmRoleDTO;
 import com.vci.frameworkcore.pagemodel.SmRoleVO;
 import com.vci.starter.web.annotation.controller.VciUnCheckRight;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
+import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.starter.web.util.WebThreadLocalUtil;
+import com.vci.web.enumpck.UserTypeEnum;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.File;
 import java.util.List;
 import java.util.Map;
 
@@ -56,17 +59,23 @@
     }
 
     /**
-     * 瑙掕壊鐨勫垪琛ㄦ煡璇細鐢ㄤ簬涓嬫媺锛岃繕鏈夊垪琛ㄧ瓑鍏ㄦ煡璇㈠満鏅�
+     * 瑙掕壊鐨勫垪琛ㄦ煡璇細鐢ㄤ簬瑙掕壊绠$悊鍒楄〃绛夋煡璇㈠満鏅細浼氭牴鎹綋鍓嶇櫥褰曠殑鐢ㄦ埛绫诲瀷鏉ュ喅瀹氭煡璇㈤偅浜涜鑹�
      * @param queryObject 鏌ヨ瀵硅薄锛屽寘鍚簡鏌ヨ鏉′欢锛屽垎椤碉紝鎺掑簭绛�,鍗冲厑璁镐娇鐢⊿mRoleVO閲岀殑鎵�鏈夊睘鎬т綔涓烘煡璇㈡潯浠�
      * @return 鍖呭惈涓夊憳鐨勮鑹� 鐨勬樉绀哄璞″垪琛ㄦ暟鎹紝璇疯幏鍙栧叾涓殑data灞炴��
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父锛屽鏋滄槸鑰佺殑椤圭洰閲屼笉鎶涘嚭寮傚父
      */
     @RequestMapping(value = "/gridRoles",method = RequestMethod.GET)
-    //@VciUnCheckRight
     public BaseResult<SmRoleVO> gridRoles(BaseQueryObject queryObject) {
         try {
             if(queryObject == null){
                 queryObject = new BaseQueryObject();
+            }
+            //鏍规嵁褰撳墠鐢ㄦ埛鏉ュ喅瀹氳兘鏌ラ偅浜涜鑹�
+            String usertype = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUsertype();
+            if(UserTypeEnum.SUPPER_ADMIN.getValue().equals(usertype)){
+                queryObject.getConditionMap().put("pltype","1");
+            }else {
+                queryObject.getConditionMap().put("pltype","2");
             }
             DataGrid<SmRoleVO> roleVOData = roleQueryService.gridRoles(queryObject.getConditionMap(),queryObject.getPageHelper());
             return BaseResult.dataGrid(roleVOData);
@@ -97,24 +106,6 @@
     }
 
     /**
-     * 鍒嗛厤瑙掕壊锛氫繚瀛樼敤鎴疯鑹插叧鑱斿叧绯�
-     * @param userOid
-     * @param roleIds
-     * @return
-     */
-    @RequestMapping(value = "/saveRights",method = RequestMethod.POST)
-    public BaseResult saveRights(String userOid, String[] roleIds){
-        try {
-            return roleQueryService.saveRights(userOid,roleIds) ? BaseResult.success("瑙掕壊鍒嗛厤鎴愬姛锛�"):BaseResult.fail("瑙掕壊鍒嗛厤澶辫触锛�");
-        }catch (Exception e){
-            e.printStackTrace();
-            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
-            log.error("鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇锛屽叧鑱旂殑瑙掕壊鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
-            return BaseResult.fail("鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇锛屽叧鑱旂殑瑙掕壊鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
-        }
-    }
-
-    /**
      * 瑙掕壊鐨勬爲褰㈠弬鐓�
      * @param treeQueryObject 鏍戝舰鏁版嵁鐨勬煡璇㈠璞★紝鍖呮嫭鏌ヨ鏉′欢锛屼笂绾т富閿紝鏄惁澶氶�夌瓑锛宔xtandParamsMap涓坊鍔�"showAllRoleNode"涓�"true"鏃讹紝杩斿洖缁撴灉涓細鍖呭惈鈥滄墍鏈夎鑹测�濊繖涓妭鐐�
      * @return 瑙掕壊鐨勬爲褰㈠弬鐓э紝鏃犱笂涓嬬骇鍏崇郴
@@ -128,4 +119,97 @@
         //BaseResult.fail("杩欓噷杩斿洖鍓嶇鐨勯敊璇俊鎭�");
     }
 
+    /**
+     * 鏂板鍗曟潯瑙掕壊
+     * @param smRoleDTO
+     * @return
+     */
+    @RequestMapping(value = "/addRole",method = RequestMethod.POST)
+    public BaseResult addRole(@RequestBody SmRoleDTO smRoleDTO){
+        try {
+            return roleQueryService.addRole(smRoleDTO) ? BaseResult.success("瑙掕壊娣诲姞鎴愬姛锛�"):BaseResult.fail("瑙掕壊娣诲姞澶辫触锛�");
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("娣诲姞瑙掕壊鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+            return BaseResult.fail("娣诲姞瑙掕壊鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+        }
+    }
+
+    /**
+     * 淇敼瑙掕壊
+     * @param smRoleDTO
+     * @return
+     */
+    @RequestMapping(value = "/updateRole",method = RequestMethod.PUT)
+    public BaseResult updateRole(@RequestBody SmRoleDTO smRoleDTO){
+        try {
+            return roleQueryService.updateRole(smRoleDTO) ? BaseResult.success("瑙掕壊淇敼鎴愬姛锛�"):BaseResult.fail("瑙掕壊淇敼澶辫触锛�");
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("淇敼瑙掕壊鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+            return BaseResult.fail("淇敼瑙掕壊鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+        }
+    }
+
+    /**
+     * 鍒犻櫎瑙掕壊
+     * @param ids
+     * @return
+     */
+    @RequestMapping(value = "/deleteRole",method = RequestMethod.DELETE)
+    public BaseResult deleteRole(String[] ids){
+        try {
+            return roleQueryService.deleteRole(ids) ? BaseResult.success("鍒犻櫎鐢ㄦ埛鎴愬姛锛�"):BaseResult.fail("鍒犻櫎鐢ㄦ埛澶辫触锛�");
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("娣诲姞鐢ㄦ埛鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+            return BaseResult.fail("娣诲姞鐢ㄦ埛鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+        }
+    }
+
+    /**
+     * 瀵煎叆瑙掕壊
+     * @param file
+     * @return
+     * @throws VciBaseException
+     */
+    @RequestMapping(value = "/importRole",method = RequestMethod.POST)
+    public BaseResult importRole(MultipartFile file){
+        String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + LocalFileUtil.getFileNameForIE(file.getOriginalFilename());
+        File file1 = new File(excelFileName);
+        try {
+            file.transferTo(new File(excelFileName));
+            if (file != null) {
+                return roleQueryService.importRole(file1);
+            } else {
+                return BaseResult.fail(FrameWorkLangCodeConstant.IMPORT_FAIL, new String[]{"鏃犲鍏ョ殑鏂囦欢"});
+            }
+        }catch (Throwable e) {
+            throw new VciBaseException(e.getMessage(),new String[0],e);
+        }finally {
+            file1.delete();
+        }
+    }
+
+    /**
+     * 鍒嗛厤瑙掕壊锛氫繚瀛樼敤鎴疯鑹插叧鑱斿叧绯伙紝鐢ㄦ埛绠$悊鐨勫垎閰嶈鑹插拰瑙掕壊绠$悊鐨勫垎閰嶆垚鍛樺叡鐢�
+     * @param userOids
+     * @param roleIds
+     * @return
+     */
+    @RequestMapping(value = "/saveRights",method = RequestMethod.POST)
+    public BaseResult saveRights(String[] userOids, String[] roleIds){
+        try {
+            return roleQueryService.saveRights(userOids,roleIds) ? BaseResult.success("瑙掕壊鍒嗛厤鎴愬姛锛�"):BaseResult.fail("瑙掕壊鍒嗛厤澶辫触锛�");
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇锛屽叧鑱旂殑瑙掕壊鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+            return BaseResult.fail("鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇锛屽叧鑱旂殑瑙掕壊鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+        }
+    }
+
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java
index 494db59..b325c16 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java
@@ -11,6 +11,7 @@
 import com.vci.starter.web.util.LangBaseUtil;
 import com.vci.starter.web.util.LocalFileUtil;
 import com.vci.starter.web.util.VciBaseUtil;
+import com.vci.web.util.Func;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +21,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.IOException;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -71,39 +73,126 @@
     }
 
     /**
-     * 浣跨敤閮ㄩ棬鏉ヨ幏鍙栫敤鎴风殑鍙傜収鍒楄〃
+     * 閮ㄩ棬绠$悊缁熻鎸夐挳锛屾煡璇㈡帴鍙�
+     * @param pkDepartment
+     * @param queryObject
+     * @return 鍖呭惈瀛愰儴闂ㄤ笅鐨勭敤鎴�
+     * @throws VciBaseException
+     */
+    @RequestMapping(value = "/countSmUserByDeptOid",method = RequestMethod.GET)
+    @VciUnCheckRight
+    public BaseResult<List<SmUserVO>> countSmUserByDeptOid(String pkDepartment,BaseQueryObject queryObject) throws VciBaseException{
+        VciBaseUtil.alertNotNull(pkDepartment,"閮ㄩ棬涓婚敭");
+        try {
+            if(queryObject == null){
+                queryObject = new BaseQueryObject();
+            }
+            List<SmUserVO> userVODataGrid = userQueryService.countSmUserByDeptOid(pkDepartment, queryObject.getConditionMap());
+            return BaseResult.dataList(userVODataGrid);
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("閫氳繃閮ㄩ棬涓婚敭鑾峰彇鍦ㄨ閮ㄩ棬涓嬬殑锛岀敤鎴峰弬鐓у垪琛ㄦ椂鍑虹幇閿欒锛屽師鍥狅細" + exceptionMessage);
+            return BaseResult.fail("閫氳繃閮ㄩ棬涓婚敭鑾峰彇鍦ㄨ閮ㄩ棬涓嬬殑锛岀敤鎴峰弬鐓у垪琛ㄦ椂鍑虹幇閿欒锛屽師鍥狅細" + exceptionMessage);
+        }
+    }
+
+    /**
+     * 浣跨敤閮ㄩ棬涓婚敭鑾峰彇锛屽湪璇ラ儴闂ㄤ笅鐨勭敤鎴风敤鎴峰弬鐓у垪琛�
      * @param pkDepartment 閮ㄩ棬鐨勪富閿紝涓嶈兘涓虹┖
      * @param queryObject 鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑,鍗冲厑璁镐娇鐢⊿mUserVO閲岀殑鎵�鏈夊睘鎬т綔涓烘煡璇㈡潯浠讹紝涔熷彲浠ヤ娇鐢╬kRole.xxx锛宲kDepartment.xxx,pkDuty.xxx杩欐牱鏉ユ煡璇�
      * @return 鏅�氱敤鎴凤紙涓嶅寘鍚笁鍛橈紝涔熶笉鍖呭惈鍋滅敤鐨勶級鐨勬樉绀哄璞″垪琛ㄦ暟鎹紝璇疯幏鍙栧叾涓殑data灞炴��
      * @throws VciBaseException 閮ㄩ棬涓婚敭涓虹┖銆佹煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父锛屽鏋滄槸鑰佺殑椤圭洰閲屼笉鎶涘嚭寮傚父
      */
-    @RequestMapping(value = "/refDataGridByPkDepartment",method = RequestMethod.GET)
-    public BaseResult<SmUserVO> refDataGridByPkDepartment(String pkDepartment,BaseQueryObject queryObject) throws VciBaseException{
-        if(queryObject == null){
-            queryObject = new BaseQueryObject();
+    @RequestMapping(value = "/listUserByDeptOid",method = RequestMethod.GET)
+    @VciUnCheckRight
+    public BaseResult<List<SmUserVO>> listUserByDeptOid(String pkDepartment,BaseQueryObject queryObject) throws VciBaseException{
+        VciBaseUtil.alertNotNull(pkDepartment,"閮ㄩ棬涓婚敭");
+        try {
+            if(queryObject == null){
+                queryObject = new BaseQueryObject();
+            }
+            List<SmUserVO> userVODataGrid = userQueryService.listUserByDeptOid(pkDepartment, queryObject.getConditionMap());
+            return BaseResult.dataList(userVODataGrid);
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("閫氳繃閮ㄩ棬涓婚敭鑾峰彇鍦ㄨ閮ㄩ棬涓嬬殑锛岀敤鎴峰弬鐓у垪琛ㄦ椂鍑虹幇閿欒锛屽師鍥狅細" + exceptionMessage);
+            return BaseResult.fail("閫氳繃閮ㄩ棬涓婚敭鑾峰彇鍦ㄨ閮ㄩ棬涓嬬殑锛岀敤鎴峰弬鐓у垪琛ㄦ椂鍑虹幇閿欒锛屽師鍥狅細" + exceptionMessage);
         }
-        DataGrid<SmUserVO> userVODataGrid = userQueryService.gridUserByDeptOid(pkDepartment, queryObject.getConditionMap(), queryObject.getPageHelper());
-        return BaseResult.dataGrid(userVODataGrid);
-        //濡傛灉鏄�佺殑椤圭洰锛屽簲璇ュ湪gridUserByDeptOid涓婃坊鍔爐ry锛宑atch锛岀劧鍚巆atch閲屽簲璇ヤ娇鐢ㄤ笅闈㈢殑浠g爜
-        //BaseResult.fail("杩欓噷杩斿洖鍓嶇鐨勯敊璇俊鎭�");
     }
 
     /**
-     * 浣跨敤瑙掕壊鏉ヨ幏鍙栫敤鎴风殑鍙傜収鍒楄〃
-     * @param pkRole 瑙掕壊鐨勪富閿紝涓嶈兘涓虹┖
+     * 浣跨敤閮ㄩ棬涓婚敭鑾峰彇锛屼笉鍦ㄨ閮ㄩ棬涓嬬殑鐢ㄦ埛鐢ㄦ埛鍙傜収鍒楄〃
+     * @param pkDepartment 閮ㄩ棬鐨勪富閿紝涓嶈兘涓虹┖
      * @param queryObject 鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑,鍗冲厑璁镐娇鐢⊿mUserVO閲岀殑鎵�鏈夊睘鎬т綔涓烘煡璇㈡潯浠讹紝涔熷彲浠ヤ娇鐢╬kRole.xxx锛宲kDepartment.xxx,pkDuty.xxx杩欐牱鏉ユ煡璇�
-     * @return 鏅�氱敤鎴凤紙涓嶅寘鍚笁鍛橈紝涔熶笉鍖呭惈鍋滅敤鐨勶級鐨勬樉绀哄璞″垪琛ㄦ暟鎹紝璇疯幏鍙栧叾涓殑data灞炴��
-     * @throws VciBaseException 瑙掕壊鐨勪富閿负绌恒�佹煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父锛屽鏋滄槸鑰佺殑椤圭洰閲屼笉鎶涘嚭寮傚父
+     * @return 鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴峰喅瀹氭煡閭d簺鐢ㄦ埛鍑烘潵锛岀殑鏄剧ず瀵硅薄鍒楄〃鏁版嵁锛岃鑾峰彇鍏朵腑鐨刣ata灞炴��
+     * @throws VciBaseException 閮ㄩ棬涓婚敭涓虹┖銆佹煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父锛屽鏋滄槸鑰佺殑椤圭洰閲屼笉鎶涘嚭寮傚父
      */
-    @RequestMapping(value = "/refDataGridByPkRole",method = RequestMethod.GET)
-    public BaseResult<SmUserVO> refDataGridByPkRole(String pkRole,BaseQueryObject queryObject) throws VciBaseException{
-        if(queryObject == null){
-            queryObject = new BaseQueryObject();
+    @RequestMapping(value = "/listUserUnInDeptOid",method = RequestMethod.GET)
+    @VciUnCheckRight
+    public BaseResult<List<SmUserVO>> listUserUnInDeptOid(String pkDepartment,BaseQueryObject queryObject) throws VciBaseException{
+        VciBaseUtil.alertNotNull(pkDepartment,"閮ㄩ棬涓婚敭");
+        try {
+            if(queryObject == null){
+                queryObject = new BaseQueryObject();
+            }
+            List<SmUserVO> userVODataGrid = userQueryService.listUserUnInDeptOid(pkDepartment, queryObject.getConditionMap());
+            return BaseResult.dataList(userVODataGrid);
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("閫氳繃閮ㄩ棬涓婚敭鑾峰彇涓嶅湪璇ラ儴闂ㄤ笅鐨勶紝鐢ㄦ埛鍙傜収鍒楄〃鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+            return BaseResult.fail("閫氳繃閮ㄩ棬涓婚敭鑾峰彇涓嶅湪璇ラ儴闂ㄤ笅鐨勶紝鐢ㄦ埛鍙傜収鍒楄〃鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
         }
-        DataGrid<SmUserVO> userVODataGrid = userQueryService.gridUserByRoleOid(pkRole, queryObject.getConditionMap(), queryObject.getPageHelper());
-        return  BaseResult.dataGrid(userVODataGrid);
-        //濡傛灉鏄�佺殑椤圭洰锛屽簲璇ュ湪gridUserByRoleOid涓婃坊鍔爐ry锛宑atch锛岀劧鍚巆atch閲屽簲璇ヤ娇鐢ㄤ笅闈㈢殑浠g爜
-        //BaseResult.fail("杩欓噷杩斿洖鍓嶇鐨勯敊璇俊鎭�");
+    }
+
+    /**
+     * 浣跨敤瑙掕壊鑾峰彇鍏宠仈鐨勭敤鎴峰弬鐓у垪琛細琚仠鐢ㄧ殑鐢ㄦ埛涔熶細鏌ュ嚭鏉�
+     * @param pkRole 瑙掕壊鐨勪富閿紝涓嶈兘涓虹┖
+     * @param queryObject 鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+     * @return
+     * @throws VciBaseException
+     */
+    @RequestMapping(value = "/listUserByRoleOid",method = RequestMethod.GET)
+    public BaseResult<List<SmUserVO>> listUserByRoleOid(String pkRole,BaseQueryObject queryObject) throws VciBaseException{
+        VciBaseUtil.alertNotNull(pkRole,"瑙掕壊涓婚敭");
+        try {
+            if(queryObject == null){
+                queryObject = new BaseQueryObject();
+            }
+            List<SmUserVO> smUserVOList = userQueryService.listUserByRoleOid(pkRole, queryObject.getConditionMap());
+            return  BaseResult.dataList(smUserVOList);
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("閫氳繃瑙掕壊鏉ヨ幏鍙栫敤鎴风殑鍙傜収鍒楄〃鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+            return BaseResult.fail("閫氳繃瑙掕壊鏉ヨ幏鍙栫敤鎴风殑鍙傜収鍒楄〃鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + exceptionMessage);
+        }
+    }
+
+    /**
+     * 浣跨敤瑙掕壊鑾峰彇涓嶅湪鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛鍙傜収鍒楄〃
+     * @param pkRole 瑙掕壊鐨勪富閿紝涓嶈兘涓虹┖
+     * @param queryObject 鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
+     * @return
+     * @throws VciBaseException
+     */
+    @RequestMapping(value = "/listUserUnInRoleOid",method = RequestMethod.GET)
+    public BaseResult<List<SmUserVO>> listUserUnInRoleOid(String pkRole,BaseQueryObject queryObject) throws VciBaseException{
+        VciBaseUtil.alertNotNull(pkRole,"瑙掕壊涓婚敭");
+        try {
+            if(queryObject == null){
+                queryObject = new BaseQueryObject();
+            }
+            List<SmUserVO> smUserVOList = userQueryService.listUserUnInRoleOid(pkRole, queryObject.getConditionMap());
+            return  BaseResult.dataList(smUserVOList);
+        }catch (Exception e){
+            e.printStackTrace();
+            String exceptionMessage = VciBaseUtil.getExceptionMessage(e);
+            log.error("鑾峰彇涓嶅湪褰撳墠瑙掕壊涓嬬殑锛岀敤鎴峰弬鐓у垪琛ㄦ椂鍑虹幇閿欒锛屽師鍥狅細" + exceptionMessage);
+            return BaseResult.fail("鑾峰彇涓嶅湪褰撳墠瑙掕壊涓嬬殑锛岀敤鎴峰弬鐓у垪琛ㄦ椂鍑虹幇閿欒锛屽師鍥狅細" + exceptionMessage);
+        }
     }
 
     /**
@@ -125,7 +214,7 @@
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父锛屽鏋滄槸鑰佺殑椤圭洰閲屼笉鎶涘嚭寮傚父
      */
     @RequestMapping(value = "/getDataGridUsers",method = RequestMethod.GET)
-    @VciUnCheckRight
+    //@VciUnCheckRight
     public BaseResult<SmUserVO> getDataGridUsers(BaseQueryObject queryObject) throws VciBaseException {
         try {
             DataGrid<SmUserVO> userVODataGrid = userQueryService.getDataGridUsers(queryObject.getConditionMap(),queryObject.getPageHelper());
@@ -220,14 +309,14 @@
     @RequestMapping(value = "/downloadImportTemplate",method = RequestMethod.GET)
     @VciUnCheckRight
     public void downloadImportTemplate(String downloadFileName, HttpServletResponse response){
-        String excelPath = userQueryService.downloadImportTemplate(downloadFileName);
         try {
+            String excelPath = userQueryService.downloadImportTemplate(downloadFileName);
             ControllerUtil.writeFileToResponse(response,excelPath);
-        } catch (IOException e) {
+        } catch (Exception e) {
             String msg = "涓嬭浇鐢ㄦ埛瀵煎叆妯℃澘鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + LangBaseUtil.getErrorMsg(e);
             try {
                 e.printStackTrace();
-                ControllerUtil.writeDataToResponse(response, StringUtils.isNotBlank(msg)?msg.getBytes():new byte[0],null);
+                ControllerUtil.writeDataToResponse(response,"error_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss") + ".txt", StringUtils.isNotBlank(msg)?msg.getBytes():new byte[0],null);
             } catch (IOException ioException) {
                 ioException.printStackTrace();
             }
@@ -238,7 +327,6 @@
      * 浜哄憳瀵煎叆
      */
     @RequestMapping(value = "/importUser",method = RequestMethod.POST)
-    @VciUnCheckRight
     public BaseResult importUser(MultipartFile file){
         String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + LocalFileUtil.getFileNameForIE(file.getOriginalFilename());
         File file1 = new File(excelFileName);
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmRoleForPlatform1.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmRoleForPlatform1.java
index 0fd7445..6af3bdc 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmRoleForPlatform1.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmRoleForPlatform1.java
@@ -1,6 +1,6 @@
 package com.vci.frameworkcore.model;
 
-import com.vci.frameworkcore.constant.FrameWorkDefaultValueConstant;
+import com.vci.frameworkcore.constant.FrameWorkBtmTypeConstant;
 import com.vci.starter.web.annotation.VciBtmType;
 import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
 
@@ -11,7 +11,7 @@
  * @author weidy
  * @date 2020/2/27
  */
-@VciBtmType(name = "role",text = "瑙掕壊",tableName = "plrole",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
+@VciBtmType(name = FrameWorkBtmTypeConstant.SM_ROLE_BTM_TYPE,tableName = "plrole",lifeCycle = FrameWorkLcStatusConstant.EMTYPE_LIFE_CYCLE)
 public class SmRoleForPlatform1 implements java.io.Serializable{
 
     /**
@@ -41,7 +41,7 @@
     /**
      * 鍒涘缓鏃堕棿
      */
-    private Date plcreatetime;
+    private Long plcreatetime;
 
     /**
      * 鍒涘缓浜�
@@ -51,7 +51,7 @@
     /**
      * 鏈�鍚庝慨鏀规椂闂�
      */
-    private Date plupdatetime;
+    private Long plupdatetime;
 
     /**
      * 鏈�鍚庝慨鏀逛汉
@@ -95,11 +95,11 @@
         this.pltype = pltype;
     }
 
-    public Date getPlcreatetime() {
+    public Long getPlcreatetime() {
         return plcreatetime;
     }
 
-    public void setPlcreatetime(Date plcreatetime) {
+    public void setPlcreatetime(Long plcreatetime) {
         this.plcreatetime = plcreatetime;
     }
 
@@ -111,11 +111,11 @@
         this.plcreateuser = plcreateuser == null ? null : plcreateuser.trim();
     }
 
-    public Date getPlupdatetime() {
+    public Long getPlupdatetime() {
         return plupdatetime;
     }
 
-    public void setPlupdatetime(Date plupdatetime) {
+    public void setPlupdatetime(Long plupdatetime) {
         this.plupdatetime = plupdatetime;
     }
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/dto/OrgDepartmentDTO.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/dto/OrgDepartmentDTO.java
new file mode 100644
index 0000000..7de034e
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/dto/OrgDepartmentDTO.java
@@ -0,0 +1,93 @@
+package com.vci.frameworkcore.model.dto;
+
+import com.vci.starter.web.pagemodel.BaseModelVO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 閮ㄩ棬鏁版嵁浼犺緭瀵硅薄
+ * @author ludc
+ * @date 2024/7/3 18:07
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OrgDepartmentDTO extends BaseModelVO {
+
+    /**
+     * 绂佹淇敼璇ュ��
+     */
+    private static final long serialVersionUID = 6241492355863644455L;
+
+    /**
+     * 閮ㄩ棬缂栧彿
+     */
+    private String id;
+
+    /**
+     * 閮ㄩ棬鍚嶇О
+     */
+    private String name;
+
+    /**
+     * 涓婄骇閮ㄩ棬
+     */
+    private String pkFatherDepartment;
+
+    /**
+     * 涓婄骇閮ㄩ棬鍚嶇О
+     */
+    private String pkFatherDepartmentName;
+
+    /**
+     * 鎵�灞炵粍缁�
+     */
+    private String pkOrganization;
+
+    /**
+     * 鎵�灞炵粍缁囧悕绉�
+     */
+    private String pkOrganizationName;
+
+    /**
+     * 鎺掑簭鍙�
+     */
+    private Integer orderNum;
+
+    /**
+     * 閮ㄩ棬涓荤棰嗗
+     */
+    private String pkLeader;
+
+    /**
+     * 閮ㄩ棬涓荤棰嗗濮撳悕
+     */
+    private String pkLeaderName;
+
+    /**
+     * 閮ㄩ棬浣嶇疆
+     */
+    private String address;
+
+    /**
+     * 閮ㄩ棬鑱旂郴鐢佃瘽
+     */
+    private String tel;
+
+    /**
+     * 閮ㄩ棬浠e彿锛屽搴旇〃涓璸lcode瀛楁
+     */
+    private String code;
+
+    /**
+     * 涓撲笟
+     */
+    public String specialties;
+
+    /**
+     * 鐘舵��
+     */
+    public short status;
+
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/po/SmRolePO.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/po/SmRolePO.java
new file mode 100644
index 0000000..bf2d53d
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/po/SmRolePO.java
@@ -0,0 +1,42 @@
+package com.vci.frameworkcore.model.po;
+
+import com.vci.starter.poi.annotation.ExcelColumn;
+import com.vci.starter.web.pagemodel.BaseModelVO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 瑙掕壊鐨勫鍏ュ鍑哄璞�
+ * @author ludc
+ * @date 2024/7/1 16:53
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SmRolePO extends BaseModelVO {
+
+    /**
+     * 绂佹淇敼杩欎釜鍊�
+     */
+    private static final long serialVersionUID = -2239512786206928201L;
+
+    /**
+     * 鎵�鍦ㄦ暟鎹
+     */
+    @ExcelColumn(rowIndexColumn = true,value = "")
+    private String rowIndex;
+
+    /**
+     * 鍚嶇О
+     */
+    @ExcelColumn(value="鍚嶇О",nullable = false)
+    private String name;
+
+    /**
+     * 鎻忚堪
+     */
+    @ExcelColumn(value="鎻忚堪")
+    private String description;
+
+}
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/pagemodel/SmRoleVO.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/pagemodel/SmRoleVO.java
index ec7533f..f934f9e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/pagemodel/SmRoleVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/pagemodel/SmRoleVO.java
@@ -29,7 +29,6 @@
      */
     private String roleClassify;
 
-
     /**
      * 瑙掕壊绫诲瀷鏄剧ず鏂囨湰
      */
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/pagemodel/SmUserVO.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/pagemodel/SmUserVO.java
index 30fa851..42c4e4e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/pagemodel/SmUserVO.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/pagemodel/SmUserVO.java
@@ -116,6 +116,11 @@
     private String password;
 
     /**
+     * 纭瀵嗙爜锛岀敤鏉ュ湪淇敼鐢ㄦ埛淇℃伅鐣岄潰鍥炶皟鐨�
+     */
+    private String confirmPassword;
+
+    /**
      * 瀵嗙爜閿欒娆℃暟
      */
     private Integer pwdWrongCount;
@@ -173,6 +178,14 @@
         this.password = password;
     }
 
+    public String getConfirmPassword() {
+        return confirmPassword;
+    }
+
+    public void setConfirmPassword(String confirmPassword) {
+        this.confirmPassword = confirmPassword;
+    }
+
     public void setStatus(short status) {
         this.status = status;
     }

--
Gitblit v1.9.3