From 79dd20bae9e8af17d5d66b67da4ca6ebc56cd9dd Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 26 六月 2024 11:15:43 +0800
Subject: [PATCH] 用户管理:部门接口修改上传

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java       |   59 +++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmPwdStrategyQueryServiceImpl.java |   13 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmPwdStrategyQueryServiceI.java         |    9 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java                |    4 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java        |  222 ++++++++++--
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/OrgDeptQueryServiceI.java               |   11 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java                 |   36 +-
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseQueryObject.java                     |   30 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmPasswordStrategyDO.java                       |    3 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/dto/SmUserDTO.java                              |  545 ++++++++++++++++++++++++++++++++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmUserDO.java                                   |   37 ++
 11 files changed, 863 insertions(+), 106 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseQueryObject.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseQueryObject.java
index d7a4d34..221f804 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseQueryObject.java
+++ b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/pagemodel/BaseQueryObject.java
@@ -1,6 +1,5 @@
 package com.vci.starter.web.pagemodel;
 
-
 import com.alibaba.fastjson.annotation.JSONField;
 import org.apache.commons.lang3.StringUtils;
 
@@ -56,32 +55,32 @@
 	/**
 	 * 鏌ヨ鏉′欢鐨勬槧灏勫叧绯�
 	 */
-	@JSONField()
-	private Map<String,String> conditionMap = new HashMap<String, String>();
+	@JSONField
+	private Map<String,String> conditionMap = new HashMap<>();
 
 	/**
 	 * 褰撳墠椤�
 	 */
-	@JSONField()
+	@JSONField
 	private int page = 1;
 	// 褰撳墠椤�
 	/**
 	 * 鎺掑簭瀛楁
 	 */
-	@JSONField()
+	@JSONField
 	private String sort;
 	// 鎺掑簭瀛楁  ---鍓嶇鍙敮鎸佷娇鐢ㄤ竴涓瓧娈垫潵鎺掑簭锛屼絾鏄悗鍙板疄闄呭彲浠ヤ娇鐢ㄥ涓瓧娈垫潵鎺掑簭锛屾墍浠ュ彲浠ヤ娇鐢ㄩ�楀彿鍒嗗壊
 	/**
 	 * 鎺掑簭绫诲瀷
 	 */
-	@JSONField()
+	@JSONField
 	private String order;
 	// asc/desc,濡傛灉鏈夊涓帓搴忓瓧娈垫椂锛岃繖閲屼篃闇�瑕佺敤閫楀彿鍒嗗壊锛屼笖涓巗ort鐨勪綅缃搴�
 
 	/**
 	 * 姣忛〉鏄剧ず椤垫暟
 	 */
-	@JSONField()
+	@JSONField
 	private int limit = 25;//姣忛〉鏄剧ず鐨勬潯鏁�
 
 	/**
@@ -90,6 +89,14 @@
 	 */
 	public Map<String, String> getConditionMap() {
 		return conditionMap;
+	}
+
+	/**
+	 * 璁剧疆鏌ヨ鏉′欢
+	 * @param conditionMap 鏌ヨ鏉′欢鐨勬槧灏勫叧绯�
+	 */
+	public void setConditionMap(Map<String, String> conditionMap) {
+		this.conditionMap = conditionMap;
 	}
 
 	/**
@@ -110,14 +117,6 @@
 			return conditionMapHasNick;
 		}
 		return null;
-	}
-
-	/**
-	 * 璁剧疆鏌ヨ鏉′欢
-	 * @param conditionMap 鏌ヨ鏉′欢鐨勬槧灏勫叧绯�
-	 */
-	public void setConditionMap(Map<String, String> conditionMap) {
-		this.conditionMap = conditionMap;
 	}
 
 	public int getPage() {
@@ -236,4 +235,5 @@
 				", limit=" + limit +
 				'}';
 	}
+
 }
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 edff563..754f12a 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,5 +1,6 @@
 package com.vci.frameworkcore.compatibility;
 
+import com.vci.corba.common.PLException;
 import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.DataGrid;
@@ -56,7 +57,7 @@
      * @param queryMap 鏌ヨ鏉′欢锛屽鏋滈渶瑕佷娇鐢ㄧ敤鎴风殑灞炴�ф潵鏌ヨ鍙互浣跨敤pkUser.xxxx
      * @return 閮ㄩ棬鐨勬樉绀哄璞�
      */
-    OrgDepartmentVO listDeptByUserOid(String userOid, Map<String, String> queryMap);
+    List<OrgDepartmentVO> listDeptByUserOid(String userOid, Map<String, String> queryMap);
 
     /**
      * 鑾峰彇鏈叧鑱旀煇涓敤鎴风殑閮ㄩ棬
@@ -113,4 +114,12 @@
      */
     DataGrid refTreeGridDept(TreeQueryObject treeQueryObject);
 
+    /**
+     * 淇濆瓨閮ㄩ棬瑙掕壊鍏宠仈淇℃伅锛屽甫鏌ラ噸鍔熻兘
+     * @param userId 鐢ㄦ埛id
+     * @param deptIds 閮ㄩ棬oid
+     * @return
+     */
+    boolean saveUserDepts(String userId, List<String> deptIds) throws PLException;
+
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmPwdStrategyQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmPwdStrategyQueryServiceI.java
index daac304..ee003c4 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmPwdStrategyQueryServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmPwdStrategyQueryServiceI.java
@@ -1,17 +1,8 @@
 package com.vci.frameworkcore.compatibility;
 
 import com.vci.corba.common.PLException;
-import com.vci.corba.omd.data.BusinessObject;
-import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
 import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO;
-import com.vci.frameworkcore.pagemodel.SmRoleVO;
 import com.vci.starter.web.exception.VciBaseException;
-import com.vci.starter.web.util.BeanUtil;
-import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.web.model.SmPasswordStrategyDO;
-import com.vci.web.util.WebUtil;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.util.CollectionUtils;
 
 import java.util.Collection;
 import java.util.List;
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 9290c23..b3f35ba 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
@@ -1,15 +1,13 @@
 package com.vci.frameworkcore.compatibility;
 
 import com.vci.corba.common.PLException;
-import com.vci.frameworkcore.dto.SmUserDTO;
-import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO;
+import com.vci.frameworkcore.model.dto.SmUserDTO;
 import com.vci.frameworkcore.pagemodel.SmUserVO;
 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.web.model.SmUserDO;
 
 import java.util.Collection;
 import java.util.List;
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 f2a737f..7a92d79 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,5 +1,6 @@
 package com.vci.frameworkcore.compatibility.impl;
 
+import com.vci.corba.common.PLException;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI;
 import com.vci.frameworkcore.lcstatuspck.FrameworkDataLCStatus;
@@ -20,10 +21,13 @@
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 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.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.*;
@@ -43,6 +47,12 @@
 	 */
 	@Autowired
 	private WebBoServiceI boService;
+
+	/**
+	 * 骞冲彴璋冪敤瀹㈡埛绔�
+	 */
+	@Autowired
+	private PlatformClientUtil platformClientUtil;
 
 	/**
 	 * 瀵硅薄鎿嶄綔宸ュ叿绫�
@@ -179,7 +189,7 @@
 		if(queryMap == null){
 			queryMap = new HashMap<>();
 		}
-		List<OrgDeptForPlatform1> roles = new ArrayList<>();
+		List<OrgDeptForPlatform1> deptForPlatform1s = new ArrayList<>();
 		if(userOid.contains(",")){
 			Map<String, String> finalQueryMap = queryMap;
 			WebUtil.switchCollectionForOracleIn(WebUtil.str2List(userOid)).stream().forEach(userOids->{
@@ -191,7 +201,7 @@
 				VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap,OrgDeptForPlatform1.class);
 				List<OrgDeptForPlatform1> roleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, OrgDeptForPlatform1.class);
 				if(!CollectionUtils.isEmpty(roleForPlatform1s)){
-					roles.addAll(roleForPlatform1s);
+					deptForPlatform1s.addAll(roleForPlatform1s);
 				}
 			});
 		}else {
@@ -200,9 +210,9 @@
 		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(queryMap,OrgDeptForPlatform1.class);
 		List<OrgDeptForPlatform1> roleForPlatform1s = boService.selectByQueryWrapper(queryWrapper, OrgDeptForPlatform1.class);
 		if(!CollectionUtils.isEmpty(roleForPlatform1s)){
-			roles.addAll(roleForPlatform1s);
+			deptForPlatform1s.addAll(roleForPlatform1s);
 		}
-		return deptDO2VOs(roles);
+		return deptDO2VOs(deptForPlatform1s);
 	}
 
 	/**
@@ -212,13 +222,13 @@
      * @return 閮ㄩ棬鐨勬樉绀哄璞�
      */
 	@Override
-	public OrgDepartmentVO listDeptByUserOid(String userOid,
+	public List<OrgDepartmentVO> listDeptByUserOid(String userOid,
 			Map<String, String> queryMap) {
 		List<OrgDepartmentVO> departmentVOS = listDeptByUserOid(userOid, queryMap, false);
 		if(CollectionUtils.isEmpty(departmentVOS)){
-			return null;
+			return new ArrayList<>();
 		}
-		return departmentVOS.get(0);
+		return departmentVOS;
 	}
 
 	/**
@@ -412,4 +422,39 @@
 		return dataGrid;
 	}
 
+	/**
+	 * 淇濆瓨閮ㄩ棬瑙掕壊鍏宠仈淇℃伅锛屽甫鏌ラ噸鍔熻兘
+	 * @param userId 鐢ㄦ埛id
+	 * @param deptIds 閮ㄩ棬id
+	 * @return
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean saveUserDepts(String userId, List<String> deptIds) throws PLException {
+		if(Func.isBlank(userId) || Func.isEmpty(deptIds)){
+			return false;
+		}
+		List<String> repeatDeptOidList = new ArrayList<>();
+		//寰幆杩涜鏌ラ噸锛岄伩鍏峣n澶т簬1000
+		WebUtil.switchCollectionForOracleIn(deptIds).stream().forEach(deptoids->{
+			String sql = "select pluseruid,pldeptuid from pluserdept where pluseruid = " + userId
+					+ " and " + "pldeptuid in ("+WebUtil.toInSql(deptoids.toArray(new String[0]))+")";
+			List<BusinessObject> cbos = boService.queryBySql(sql, null);
+			if(!CollectionUtils.isEmpty(cbos)){
+				cbos.stream().forEach(cbo->{
+					repeatDeptOidList.add(ObjectTool.getNewBOAttributeValue(cbo,"pldeptuid"));
+				});
+			}
+
+		});
+		//浠庡嵆灏嗚鎵ц淇濆瓨鐨勯儴闂╫id涓Щ闄ゅ綋鍓嶇敤鎴峰凡缁忓瓨鍦ㄥ叧鑱斿叧绯荤殑鐨勯儴闂╫id
+		deptIds.removeAll(repeatDeptOidList);
+		if(Func.isNotEmpty(deptIds)){
+			for (String deptId : deptIds){
+				platformClientUtil.getFrameworkService().saveUserDept(new String[]{userId}, deptId,null);
+			}
+		}
+		return true;
+	}
+
 }
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 5aac379..ddedfc6 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
@@ -4,17 +4,12 @@
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI;
 import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
-import com.vci.frameworkcore.model.OrgDeptForPlatform1;
-import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
+import com.vci.frameworkcore.model.SmPasswordStrategyDO;
 import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO;
-import com.vci.frameworkcore.pagemodel.SmRoleVO;
-import com.vci.frameworkcore.pagemodel.SmUserVO;
 import com.vci.omd.utils.ObjectTool;
-import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.util.BeanUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.web.model.SmPasswordStrategyDO;
 import com.vci.web.service.WebBoServiceI;
 import com.vci.web.util.Func;
 import com.vci.web.util.WebUtil;
@@ -24,9 +19,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.util.*;
-import java.util.function.Function;
 import java.util.stream.Collectors;
-
 import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
 
 /**
@@ -163,10 +156,10 @@
     @Override
     public SmPasswordStrategyVO getPasswordStrategyVOByUserOid(String userOid) throws PLException {
         WebUtil.alertNotNull(userOid,"鐢ㄦ埛鐨勪富閿�");
-        if(smUserQueryService.checkUserExist(null,userOid)){
+        if(!smUserQueryService.checkUserExist(null,userOid)){
             throw new VciBaseException(DATA_OID_NOT_EXIST);
         }
-        String sql = "select plpasswordstrategyuid,pluseruid from pluserpasswordstrategy where pluseruid = '"+ userOid +"')";
+        String sql = "select plpasswordstrategyuid,pluseruid from pluserpasswordstrategy where pluseruid = '"+ userOid +"'";
         List<BusinessObject> cbos = boService.queryBySql(sql, null);
         if(Func.isNotEmpty(cbos)){
             return getPasswordStrategyVOByOid(ObjectTool.getNewBOAttributeValue(cbos.get(0), "plpasswordstrategyuid"));
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 2f5a410..9c3d497 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
@@ -1,16 +1,17 @@
 package com.vci.frameworkcore.compatibility.impl;
 
 import com.vci.client.common.objects.UserObject;
-import com.vci.client.common.providers.ClientServiceProvider;
 import com.vci.common.util.ThreeDES;
 import com.vci.corba.common.PLException;
+import com.vci.corba.common.data.UserEntityInfo;
 import com.vci.corba.framework.data.UserInfo;
 import com.vci.corba.omd.data.BusinessObject;
 import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI;
 import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI;
 import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI;
 import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
-import com.vci.frameworkcore.dto.SmUserDTO;
+import com.vci.frameworkcore.model.dto.SmUserDTO;
+import com.vci.frameworkcore.model.SmUserDO;
 import com.vci.frameworkcore.pagemodel.OrgDepartmentVO;
 import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO;
 import com.vci.frameworkcore.pagemodel.SmRoleVO;
@@ -26,11 +27,8 @@
 import com.vci.starter.web.util.BeanUtil;
 import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.util.VciDateUtil;
-import com.vci.starter.web.util.WebThreadLocalUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
 import com.vci.web.enumpck.UserTypeEnum;
-import com.vci.web.model.SmPasswordStrategyDO;
-import com.vci.web.model.SmUserDO;
 import com.vci.web.service.WebBoServiceI;
 import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
@@ -38,9 +36,11 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.util.*;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 import static com.vci.frameworkcore.constant.FrameWorkBusLangCodeConstant.DATA_OID_NOT_EXIST;
@@ -171,7 +171,7 @@
 	 * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父
 	 */
 	private SmUserVO getUserByField(String queryField,String queryValue) throws VciBaseException{
-		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(null,SmUserDO.class,null,true);
+		VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(null, SmUserDO.class,null,true);
 		queryWrapper.eq(queryWrapper.getTableNick() + "." +queryField,queryValue);
 		queryWrapper.setDistinct(true);
 		queryWrapper.wrapperSql();
@@ -277,7 +277,7 @@
 	 * @param userInfoArr 涓氬姟鏁版嵁鏁扮粍
 	 * @return 鏄剧ず瀵硅薄闆嗗悎
 	 */
-	private List<SmUserVO> userInfoArr2VO(UserInfo[] userInfoArr) {
+	private List<SmUserVO> userInfoArr2VO(UserInfo[] userInfoArr) throws PLException {
 		List<SmUserVO> userVOList = new ArrayList<>();
 		for(UserInfo userInfo : userInfoArr){
 			userVOList.add(userInfo2VO(userInfo));
@@ -290,7 +290,10 @@
 	 * @param userInfo 骞冲彴杩斿洖鐨勪笟鍔℃暟鎹�
 	 * @return 鐢ㄦ埛鏄剧ず瀵硅薄
 	 */
-	private SmUserVO userInfo2VO(UserInfo userInfo) {
+	private SmUserVO userInfo2VO(UserInfo userInfo) throws PLException {
+		if(Func.isBlank(userInfo.id)){
+			return new SmUserVO();
+		}
 		SmUserVO smUserVO = new SmUserVO();
 		smUserVO.setOid(userInfo.id);
 		smUserVO.setId(userInfo.userName);
@@ -302,7 +305,13 @@
 		smUserVO.setDescription(userInfo.desc);
 		smUserVO.setEmail(userInfo.email);
 		//鐢ㄦ埛鎵�灞為儴闂ㄧ殑鏌ヨ璁剧疆
-		List<OrgDepartmentVO> orgDepartmentVOList = orgDepartmentVOMap.get(userInfo.id);
+		List<OrgDepartmentVO> orgDepartmentVOList;
+		//鏌ョ湅鍏ㄥ眬鍙橀噺涓槸鍚﹀瓨鍦ㄩ儴闂ㄤ俊鎭紝瀛樺湪鐨勬儏鍐垫渶涓昏鏄拡瀵瑰鏉$敤鎴锋煡璇㈢殑鏃跺�欓伩鍏嶉噸澶嶆煡璇㈢殑
+		if(Func.isNotEmpty(orgDepartmentVOMap)){
+			orgDepartmentVOList = orgDepartmentVOMap.get(userInfo.id);
+		}else {
+			orgDepartmentVOList = orgDeptQueryService.listDeptByUserOid(userInfo.id,null);
+		}
 		smUserVO.setPkDepartment(
 				Func.isEmpty(orgDepartmentVOList) ?
 						null:orgDepartmentVOList.stream().map(OrgDepartmentVO::getOid).collect(Collectors.joining(","))
@@ -312,11 +321,23 @@
 						null:orgDepartmentVOList.stream().map(OrgDepartmentVO::getName).collect(Collectors.joining(","))
 		);
 		//瀵嗙爜绛栫暐鏌ヨ璁剧疆
-		SmPasswordStrategyVO smPasswordStrategyVO = smPwdStrategyVOMap.getOrDefault(userInfo.id,new SmPasswordStrategyVO());
+		SmPasswordStrategyVO smPasswordStrategyVO;
+		if(Func.isNotEmpty(smPwdStrategyVOMap)){
+			smPasswordStrategyVO = smPwdStrategyVOMap.getOrDefault(userInfo.id,new SmPasswordStrategyVO());
+		}else {
+			smPasswordStrategyVO = smPwdStrategyQueryService.getPasswordStrategyVOByUserOid(userInfo.id);
+			//濡傛灉涓嶅瓨鍦ㄥ氨鑾峰彇榛樿鐨�
+			smPasswordStrategyVO = Func.isNotEmpty(smPasswordStrategyVO) ? smPasswordStrategyVO:smPwdStrategyQueryService.getPasswordStrategyVOByDefault();
+		}
 		smUserVO.setPkPasswordStrategy(smPasswordStrategyVO.getOid());
 		smUserVO.setPkPasswordStrategyName(smPasswordStrategyVO.getName());
 		//瑙掕壊鏌ヨ璁剧疆
-		List<SmRoleVO> smRoleVOList = smRoleVOMap.get(userInfo.id);
+		List<SmRoleVO> smRoleVOList;
+		if (Func.isNotEmpty(smRoleVOMap)) {
+			smRoleVOList = smRoleVOMap.get(userInfo.id);
+		}else {
+			smRoleVOList = smRoleQueryService.listRoleByUserOid(userInfo.id,null);
+		}
 		smUserVO.setPkPerson(
 				Func.isEmpty(smRoleVOList) ?
 						null:smRoleVOList.stream().map(SmRoleVO::getOid).collect(Collectors.joining(","))
@@ -495,6 +516,7 @@
 			pageHelper = new PageHelper(-1);
 		}
 		pageHelper.addDefaultAsc("PLTRUENAME");
+		//TODO:涓轰簡鏂逛究璋冭瘯锛屾墍浠ヨ繖鍎垮厛娉ㄩ噴鍐欐鍚庨潰璁板緱鏇存敼
 		//String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserName();
 		//鍒嗛〉鏌ヨ
 		UserInfo[] userInfos = platformClientUtil.getFrameworkService().fetchUserInfoByCondition(
@@ -557,6 +579,7 @@
 		SmUserVO userVO = getUserByUserId(userId);
 		return userVO == null?"":userVO.getName();
 	}
+
 	 /**
      * 鏍规嵁鐢ㄦ埛涓婚敭鑾峰彇鐢ㄦ埛鐨勫鍚�
      * @param userOid 鐢ㄦ埛涓婚敭
@@ -928,7 +951,6 @@
 		return false;
 	}
 
-
     /**
      * 璁剧疆鏌愪釜鐢ㄦ埛鏄攣瀹氱姸鎬�
      * @param userId 鐢ㄦ埛鍚�
@@ -960,6 +982,7 @@
      * @param confirmPassword 纭瀵嗙爜
      */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void changePassword(String userOid, String password,
 			String confirmPassword) throws VciBaseException {
 		WebUtil.alertNotNull(userOid,"鐢ㄦ埛涓婚敭",password,"瀵嗙爜",confirmPassword,"纭瀵嗙爜");
@@ -1017,40 +1040,38 @@
 	 * @return
 	 */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public boolean addUser(SmUserDTO smUserDTO) throws PLException {
+		//鍒ょ┖
 		VciBaseUtil.alertNotNull(
 				smUserDTO,"娣诲姞鐨勭敤鎴峰璞�",
-				smUserDTO.getId(),"璐﹀彿",
+				smUserDTO.getId(),"鐢ㄦ埛鍚�",
 				smUserDTO.getPassword(),"瀵嗙爜",
 				smUserDTO.getConfirmPassword(),"纭瀵嗙爜",
 				smUserDTO.getName(),"濮撳悕"
 		);
-		//纭瀵嗙爜
-		String confirmPassword = smUserDTO.getConfirmPassword();
-		//姣斿瀵嗙爜鏄槸鍚︿竴鑷�
-		if(!smUserDTO.getPassword().equals(confirmPassword)){
-			throw new VciBaseException("涓ゆ瀵嗙爜涓嶄竴鑷达紝璇烽噸鏂板~鍐�!");
-		}
-		//鍏堢敤鎴峰悕锛堣处鍙凤級鏌ラ噸
-		SmUserVO dbSmUserVO = getUserByUserId(smUserDTO.getId());
-		if(Func.isNotEmpty(dbSmUserVO) && Func.isNotBlank(dbSmUserVO.getOid())){
-			throw new VciBaseException("璇ョ敤鎴峰悕鍦ㄧ郴缁熶腑宸茬粡瀛樺湪,璇蜂慨鏀�!");
-		}
-		//瀵嗙爜鍔犲瘑
-		ThreeDES des = new ThreeDES();
-		des.getKey("daliantan0v0");// 鐢熸垚瀵嗗寵
-		//绗簩娆D5鍔犲瘑
-		String md5Password2 = des.getEncString(smUserDTO.getPassword());
+		//鏍¢獙
+		check(smUserDTO,true);
 		//鐢熸垚瀛樺偍鐨凞O瀵硅薄
-		smUserDTO.setOid(VciBaseUtil.getPk());
-		smUserDTO.setPassword(md5Password2);
-		smUserDTO.setLockFlag("0");
-		BusinessObject user = ClientServiceProvider.getBOFService().initBusinessObject("user");
-		SmUserDO smUserDO = new SmUserDO();
-		BeanUtil.convert(user,smUserDO);
-		UserInfo userInfo = new UserInfo();
-		BeanUtil.convert(smUserDO,userInfo);
-		return platformClientUtil.getFrameworkService().saveOrUpdateUser(userInfo, null);
+		Date date = new Date();
+		smUserDTO.setPwdUpdateTime(date);
+		smUserDTO.setStatus((short) 0);
+		smUserDTO.setCreateTime(date);
+		smUserDTO.setLastModifyTime(date);
+		//userObject.setCreateUser(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserName());
+		smUserDTO.setCreator("developer");
+		//userObject.setUpdateUser(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserName());
+		smUserDTO.setLastModifier("developer");
+		UserInfo userInfo = changeUserObjectToUserInfo(smUserDTO);
+		UserEntityInfo userEntityInfo = new UserEntityInfo("developer", "");
+		String oid = platformClientUtil.getFrameworkService().saveUser(userInfo, userEntityInfo);
+		if (Func.isEmpty(oid)) {
+			return false;
+		}
+		if(Func.isNotBlank(smUserDTO.getPkDepartment())){
+			platformClientUtil.getFrameworkService().saveUserDept(new String[]{oid}, smUserDTO.getPkDepartment(), userEntityInfo);
+		}
+		return true;
 	}
 
 	/**
@@ -1059,10 +1080,129 @@
 	 * @return
 	 */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public boolean updateUser(SmUserDTO smUserDTO) throws PLException {
+		//鍒ょ┖
+		VciBaseUtil.alertNotNull(
+				smUserDTO,"淇敼鐨勭敤鎴峰璞�",
+				smUserDTO.getOid(),"鐢ㄦ埛涓婚敭",
+				smUserDTO.getId(),"鐢ㄦ埛鍚�",
+				smUserDTO.getPassword(),"瀵嗙爜",
+				smUserDTO.getConfirmPassword(),"纭瀵嗙爜",
+				smUserDTO.getName(),"濮撳悕"
+		);
+		//鏍¢獙
+		check(smUserDTO,false);
+		//鏌ヨ鏁版嵁搴撲腑鐨�
+		SmUserVO dbSmUserVO = getUserByUserId(smUserDTO.getId());
+		//鏍规嵁鐢ㄦ埛鍚嶆煡璇㈠埌浜嗙敤鎴凤紝浣嗘槸oid涓嶆槸褰撳墠淇敼鐨勭敤鎴风殑oid锛岃鏄庝慨鏀圭殑鐢ㄦ埛鍚嶉噸澶�
+		if(Func.isNotEmpty(dbSmUserVO)
+			&& !dbSmUserVO.getOid().equals(smUserDTO.getOid())
+		){
+			throw new PLException("鐢ㄦ埛鍚嶅凡瀛樺湪锛屼笉鑳藉皢褰撳墠鐢ㄦ埛鐨勭敤鎴峰悕淇敼涓�" + dbSmUserVO.getId(),new String[0]);
+		}
+		smUserDTO.setLastModifyTime(new Date());
+		//userObject.setUpdateUser(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserName());
+		smUserDTO.setLastModifier("developer");
+		UserInfo userInfo = changeUserObjectToUserInfo(smUserDTO);
+		boolean updateBoolean = platformClientUtil.getFrameworkService().updateUser(userInfo, new UserEntityInfo("developer", null));
+		//鐢ㄦ埛鍏宠仈閮ㄩ棬鏈夋墍鏇存敼
+		if(Func.isNotEmpty(smUserDTO.getPkDepartment()) && !smUserDTO.getPkDepartment().equals(dbSmUserVO.getPkDepartment())){
+			//鐣岄潰浼犻�掕繃鏉ョ殑宸插叧鑱旂殑閮ㄩ棬oid
+			List<String> updatePkDept = Func.toStrList(smUserDTO.getPkDepartment(), ",");
+			//鐢ㄦ埛宸插叧鑱旂殑閮ㄩ棬oid
+			List<String> associatedPkDept = Func.toStrList(dbSmUserVO.getPkDepartment(), ",");
+			//绉婚櫎
+			updatePkDept.removeAll(associatedPkDept);
+			//鎵ц淇濆瓨鐢ㄦ埛閮ㄩ棬鍏宠仈鍏崇郴
+			orgDeptQueryService.saveUserDepts(dbSmUserVO.getOid(),updatePkDept);
+		}
+		return updateBoolean;
+	}
+
+	/**
+	 * 妫�鏌ョ敤鎴蜂俊鎭槸鍚︾鍚堣鑼�
+	 * @param smUserDTO
+	 * @param isAdd
+	 */
+	private void check(SmUserDTO smUserDTO, boolean isAdd){
+		if(!smUserDTO.getPassword().equals(smUserDTO.getConfirmPassword())){
+			throw new VciBaseException("瀵嗙爜鍜岀‘璁ゅ瘑鐮佷笉鐩哥瓑");
+		}
+		if(smUserDTO.getId().getBytes().length > 128){
+			throw new VciBaseException("鐢ㄦ埛鍚嶉暱搴﹁秴杩囦笂闄�");
+		}
+		if(smUserDTO.getPassword().getBytes().length > 128){
+			throw new VciBaseException("瀵嗙爜闀垮害瓒呰繃涓婇檺");
+		}
+		if(smUserDTO.getName().getBytes().length > 64){
+			throw new VciBaseException("濮撳悕闀垮害瓒呰繃涓婇檺");
+		}
+		if (Func.isNotBlank(smUserDTO.getSpecialties()) && smUserDTO.getSpecialties().getBytes().length > 255){
+			throw new VciBaseException("涓撲笟闀垮害瓒呰繃涓婇檺");
+		}
+		if (Func.isNotBlank(smUserDTO.getEmail()) && smUserDTO.getEmail().getBytes().length > 128){
+			throw new VciBaseException("鐢靛瓙閭闀垮害瓒呰繃涓婇檺");
+		}
+		if (Func.isNotBlank(smUserDTO.getDescription()) && smUserDTO.getDescription().getBytes().length > 255 ){
+			throw new VciBaseException("鎻忚堪闀垮害瓒呰繃涓婇檺");
+		}
+		if (!smUserDTO.getName().matches("^[A-Za-z0-9_]+$")) {
+			throw new VciBaseException("鐢ㄦ埛鍚嶅繀椤绘槸鐢盇-Z a-z 0-9 _缁勬垚");
+		}
+		if (Func.isNotBlank(smUserDTO.getEmail()) && !smUserDTO.getEmail().matches("^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$")){
+			throw new VciBaseException("鐢靛瓙閭鏍煎紡閿欒");
+		}
+		//鏄柊澧炴墠鍋氱敤鎴峰悕鏌ラ噸澶勭悊
+		if(isAdd){
+			//鏍规嵁鐢ㄦ埛鍚嶏紙璐﹀彿锛夋煡閲�
+			SmUserVO dbSmUserVO = getUserByUserId(smUserDTO.getId());
+			if(Func.isNotEmpty(dbSmUserVO) && Func.isNotBlank(dbSmUserVO.getOid())){
+				throw new VciBaseException("璇ョ敤鎴峰悕鍦ㄧ郴缁熶腑宸茬粡瀛樺湪,璇蜂慨鏀�!");
+			}
+		}
+		//鏍规嵁褰撳墠鍒涘缓杩欎釜鐢ㄦ埛鐨勪汉鎵�缁戝畾瀵嗙爜绛栫暐鏉ヨ繘琛屽瘑鐮佹牎楠�
+		try {
+			//TODO:涓轰簡鏂逛究璋冭瘯锛屾墍浠ヨ繖鍎垮厛娉ㄩ噴鍐欐鍚庨潰璁板緱鏇存敼
+			//String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserName();
+			String userName = "developer";
+			String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(userName, smUserDTO.getPassword(),null);
+			if (!StringUtils.isBlank(error)) {
+				throw new VciBaseException("褰撳墠璁剧疆鐨勫瘑鐮侊紝瀵嗙爜绛栫暐鏍¢獙鏈�氳繃");
+			}
+		} catch (PLException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			throw new VciBaseException("妫�鏌ュ瘑鐮佺瓥鐣ョ鍚堟儏鍐靛け璐ワ紒2");
+		}
+	}
+
+
+
+	/***
+	 * 鐢ㄦ埛浠嶥TO瀵硅薄鍒癱orba瀵硅薄
+	 * @param user
+	 * @return
+	 */
+	public UserInfo changeUserObjectToUserInfo(SmUserDTO user) {
 		UserInfo userInfo = new UserInfo();
-		BeanUtil.convert(smUserDTO,userInfo);
-		return platformClientUtil.getFrameworkService().updateUser(userInfo, null);
+		userInfo.id = user.getOid() == null ? "" : user.getOid();
+		userInfo.userName = user.getId() == null ? "" : user.getId();
+		userInfo.pwd = user.getPassword() == null ? "" : user.getPassword();
+		userInfo.trueName = user.getName() == null ? "" : user.getName();
+		userInfo.specialties = user.getSpecialties() == null ? "" : user.getSpecialties();
+		userInfo.email = user.getEmail() == null ? "" : user.getEmail();
+		userInfo.desc = user.getDescription() == null ? "" : user.getDescription();
+		userInfo.userType = user.getUserType();
+		userInfo.status = user.getStatus();
+		userInfo.createTime = user.getCreateTime().getTime();
+		userInfo.createUser = user.getCreator() == null ? "" : user.getCreator();
+		userInfo.updateTime = user.getLastModifyTime().getTime();
+		userInfo.updateUser = user.getLastModifier() == null ? "" : user.getLastModifier();
+		userInfo.pwdUpdateTime = user.getPwdUpdateTime().getTime();
+		userInfo.grantor = user.getGrantor() == null ? "" : user.getGrantor();
+		userInfo.isDeptLeader = user.getIsDeptLeader() == null ? "0" : user.getIsDeptLeader();
+		return userInfo;
 	}
 
 	/***
@@ -1098,6 +1238,7 @@
 	 * @return
 	 */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public boolean deleteUser(String[] ids) throws PLException {
 		VciBaseUtil.alertNotNull(ids,"寰呭垹闄ょ殑鐢ㄦ埛id鍒楄〃涓嶈兘涓虹┖锛�");
 		return platformClientUtil.getFrameworkService().deleteUser(ids, null);
@@ -1110,6 +1251,7 @@
 	 * @return
 	 */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public boolean disableOrEnableUsers(String[] ids, boolean flag) throws PLException {
 		VciBaseUtil.alertNotNull(ids,"鍋滅敤/鍚敤鐨勭敤鎴穒d鍒楄〃");
 		return platformClientUtil.getFrameworkService().stopUsers(ids, flag,null);
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 bf29cdb..dec4cf0 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
@@ -1,20 +1,15 @@
 package com.vci.frameworkcore.controller;
 
 import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
-import com.vci.frameworkcore.dto.SmUserDTO;
+import com.vci.frameworkcore.model.dto.SmUserDTO;
 import com.vci.frameworkcore.pagemodel.SmUserVO;
 import com.vci.starter.web.annotation.controller.VciUnCheckRight;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
-import com.vci.web.model.SmUserDO;
-import com.zeroc.IceInternal.Ex;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
-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.ResponseBody;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -23,7 +18,7 @@
  * @author weidy
  * @date 2020/3/4
  */
-@Controller
+@RestController
 @RequestMapping("/userQueryController")
 @Slf4j
 public class SmUserQueryController {
@@ -41,7 +36,6 @@
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父锛屽鏋滄槸鑰佺殑椤圭洰閲屼笉鎶涘嚭寮傚父
      */
     @RequestMapping(value = "/refDataGrid",method = RequestMethod.GET)
-    @ResponseBody
     public BaseResult<SmUserVO> refDataGrid(BaseQueryObject queryObject) throws VciBaseException {
         //浠g爜绀轰緥
         if(queryObject == null){
@@ -60,7 +54,6 @@
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父锛屽鏋滄槸鑰佺殑椤圭洰閲屼笉鎶涘嚭寮傚父
      */
     @RequestMapping(value = "/refTree",method = RequestMethod.GET)
-    @ResponseBody
     public BaseResult<Tree> refTree(TreeQueryObject treeQueryObject) throws VciBaseException{
         List<Tree> userTreeList = userQueryService.refTreeUsers(treeQueryObject);
         return  BaseResult.tree(userTreeList);
@@ -76,7 +69,6 @@
      * @throws VciBaseException 閮ㄩ棬涓婚敭涓虹┖銆佹煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父锛屽鏋滄槸鑰佺殑椤圭洰閲屼笉鎶涘嚭寮傚父
      */
     @RequestMapping(value = "/refDataGridByPkDepartment",method = RequestMethod.GET)
-    @ResponseBody
     public BaseResult<SmUserVO> refDataGridByPkDepartment(String pkDepartment,BaseQueryObject queryObject) throws VciBaseException{
         if(queryObject == null){
             queryObject = new BaseQueryObject();
@@ -95,7 +87,6 @@
      * @throws VciBaseException 瑙掕壊鐨勪富閿负绌恒�佹煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父锛屽鏋滄槸鑰佺殑椤圭洰閲屼笉鎶涘嚭寮傚父
      */
     @RequestMapping(value = "/refDataGridByPkRole",method = RequestMethod.GET)
-    @ResponseBody
     public BaseResult<SmUserVO> refDataGridByPkRole(String pkRole,BaseQueryObject queryObject) throws VciBaseException{
         if(queryObject == null){
             queryObject = new BaseQueryObject();
@@ -113,7 +104,6 @@
      * @param confirmPassword 纭瀵嗙爜
      */
     @RequestMapping(value = "/changePassword",method = RequestMethod.POST)
-    @ResponseBody
     public BaseResult changePassword(String userOid, String password, String confirmPassword) {
         userQueryService.changePassword(userOid, password, confirmPassword);
         return BaseResult.success("淇敼瀵嗙爜鎴愬姛");
@@ -126,7 +116,6 @@
      * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父锛屽鏋滄槸鑰佺殑椤圭洰閲屼笉鎶涘嚭寮傚父
      */
     @RequestMapping(value = "/getDataGridUsers",method = RequestMethod.GET)
-    @ResponseBody
     @VciUnCheckRight
     public BaseResult<SmUserVO> getDataGridUsers(BaseQueryObject queryObject) throws VciBaseException {
         try {
@@ -145,7 +134,6 @@
      * @return
      */
     @RequestMapping(value = "/addUser",method = RequestMethod.POST)
-    @ResponseBody
     @VciUnCheckRight
     public BaseResult addUser(@RequestBody SmUserDTO smUserDTO){
         try {
@@ -163,7 +151,6 @@
      * @return
      */
     @RequestMapping(value = "/updateUser",method = RequestMethod.PUT)
-    @ResponseBody
     @VciUnCheckRight
     public BaseResult updateUser(@RequestBody SmUserDTO smUserDTO){
         try {
@@ -181,7 +168,6 @@
      * @return
      */
     @RequestMapping(value = "/deleteUser",method = RequestMethod.DELETE)
-    @ResponseBody
     //@VciUnCheckRight
     public BaseResult deleteUser(String[] ids){
         try {
@@ -200,7 +186,6 @@
      * @return
      */
     @RequestMapping(value = "/stopUsers",method = RequestMethod.POST)
-    @ResponseBody
     //@VciUnCheckRight
     public BaseResult disableOrEnableUsers(String[] ids,boolean flag){
         try {
@@ -213,5 +198,20 @@
         }
     }
 
+    /**
+     * 涓嬭浇浜哄憳瀵煎叆妯℃澘
+     */
+    @RequestMapping(value = "/downloadImportTemplate",method = RequestMethod.POST)
+    public void downloadImportTemplate(){
+
+    }
+
+    /**
+     * 浜哄憳瀵煎叆
+     */
+    @RequestMapping(value = "/importUser",method = RequestMethod.POST)
+    public void importUser(){
+
+    }
 
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/model/SmPasswordStrategyDO.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmPasswordStrategyDO.java
similarity index 98%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/model/SmPasswordStrategyDO.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmPasswordStrategyDO.java
index 4ad0e4e..1a64769 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/model/SmPasswordStrategyDO.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmPasswordStrategyDO.java
@@ -1,4 +1,4 @@
-package com.vci.web.model;
+package com.vci.frameworkcore.model;
 
 import com.vci.starter.web.annotation.Column;
 import com.vci.starter.web.annotation.Transient;
@@ -6,7 +6,6 @@
 import com.vci.starter.web.annotation.VciFieldType;
 import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
 import com.vci.starter.web.enumpck.VciFieldTypeEnum;
-import com.vci.starter.web.model.BaseModel;
 
 import java.util.Date;
 
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/model/SmUserDO.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmUserDO.java
similarity index 91%
rename from Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/model/SmUserDO.java
rename to Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmUserDO.java
index 4b05d52..9eb31ee 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/model/SmUserDO.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/SmUserDO.java
@@ -1,4 +1,4 @@
-package com.vci.web.model;
+package com.vci.frameworkcore.model;
 
 import com.vci.starter.web.annotation.*;
 import com.vci.starter.web.constant.FrameWorkLcStatusConstant;
@@ -100,6 +100,7 @@
             name = "plcreateuser"
     )
     private String creator;
+
     /**
      * 鍒涘缓鏃堕棿
      */
@@ -119,6 +120,7 @@
             name = "plupdateuser"
     )
     private String lastModifier;
+
     /**
      * 鏈�鍚庝慨鏀规椂闂�
      */
@@ -127,6 +129,14 @@
             name = "plupdatetime"
     )
     private Date lastModifyTime;
+
+    /**
+     * 瀵嗙爜鏈�鍚庝慨鏀规椂闂�
+     */
+    @Column(
+            name = "plpwdupdatetime"
+    )
+    public Date pwdUpdateTime;
 
     /**
      * 鎵�灞為儴闂�
@@ -151,6 +161,22 @@
      */
     @Transient(referColumn = "pkUserPassword.plpasswordstrategyuid")
     private String pkPasswordStrategy;
+
+    /**
+     * 涓撲笟
+     */
+    @Column(
+            name = "plspecialties"
+    )
+    private String specialties;
+
+    public void setSpecialties(String specialties) {
+        this.specialties = specialties;
+    }
+
+    public String getSpecialties() {
+        return specialties;
+    }
 
     public String getOid() {
         return oid;
@@ -304,6 +330,14 @@
         this.pkPasswordStrategy = pkPasswordStrategy;
     }
 
+    public void setPwdUpdateTime(Date pwdUpdateTime) {
+        this.pwdUpdateTime = pwdUpdateTime;
+    }
+
+    public Date getPwdUpdateTime() {
+        return pwdUpdateTime;
+    }
+
     @Override
     public String toString() {
         return "SmUserDO{" +
@@ -328,4 +362,5 @@
                 ", pkPasswordStrategy='" + pkPasswordStrategy + '\'' +
                 '}';
     }
+
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/dto/SmUserDTO.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/dto/SmUserDTO.java
new file mode 100644
index 0000000..f7863b1
--- /dev/null
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/model/dto/SmUserDTO.java
@@ -0,0 +1,545 @@
+package com.vci.frameworkcore.model.dto;
+
+import com.vci.starter.web.model.BaseModel;
+import com.vci.starter.web.pagemodel.BaseModelVO;
+
+import java.util.Date;
+
+/**
+ * 鐢ㄦ埛鏁版嵁浼犺緭瀵硅薄
+ * @author ludc
+ * @date 2024/6/25 17:33
+ */
+public class SmUserDTO extends BaseModelVO {
+
+    /**
+     * 绂佹淇敼杩欎釜鍊�
+     */
+    private static final long serialVersionUID = -2239512786206928200L;
+
+    /**
+     * 鐢ㄦ埛鍚�
+     */
+    private String id;
+
+    /**
+     * 鐢ㄦ埛濮撳悕
+     */
+    private String name;
+
+    /**
+     * 鐢ㄦ埛绫诲瀷
+     */
+    private short userType;
+
+    /**
+     * 鐢ㄦ埛绫诲瀷鏄剧ず鏂囨湰
+     */
+    private String userTypeText;
+
+    /**
+     * 鐢ㄦ埛瀵嗙爜
+     */
+    private String password;
+
+    /**
+     * 纭瀵嗙爜
+     */
+    private String confirmPassword;
+
+    /**
+     * 鎵�灞炰汉鍛�
+     */
+    private String pkPerson;
+
+    /**
+     * 鎵�灞炰汉鍛樺悕绉�
+     */
+    private String pkPersonName;
+
+    /**
+     * 澶辨晥鏃ユ湡
+     */
+    private Date disabledate;
+
+    /**
+     * 閭欢鍦板潃
+     */
+    private String email;
+
+    /**
+     * 鐢佃瘽
+     */
+    private String tel;
+
+    /**
+     * RTX鑱旂郴鍙�
+     */
+    private String rtxNo;
+
+    /**
+     * 瀹炴椂閫氳杞欢璐﹀彿
+     */
+    private String IMNo;
+
+    /**
+     * 鎵�灞為儴闂�
+     */
+    private String pkDepartment;
+
+    /**
+     * 鎵�灞為儴闂ㄥ悕绉�
+     */
+    private String pkDepartmentName;
+
+    /**
+     * 鏄惁閮ㄩ棬棰嗗
+     */
+    private String isDeptLeader;
+
+    /**
+     * 鎵�灞炶亴鍔�
+     */
+    private String pkDuty;
+
+    /**
+     * 鎵�灞炶亴鍔″悕绉�
+     */
+    private String pkDutyName;
+
+    /**
+     * 鎵�灞炲瘑鐮佸畨鍏ㄧ瓥鐣�
+     */
+    private String pkPasswordStrategy;
+
+    /**
+     * 鎵�灞炲瘑鐮佸畨鍏ㄧ瓥鐣�
+     */
+    private String pkPasswordStrategyName;
+
+    /**
+     * 鏈�鍚庣櫥褰曟椂闂�
+     */
+    private Date lastLoginTime;
+
+    /**
+     * 瀵嗙爜鏈�鍚庝慨鏀规椂闂�
+     */
+    public Date pwdUpdateTime;
+
+    /**
+     * 瀵嗙爜閿欒娆℃暟
+     */
+    private Integer pwdWrongCount;
+
+    /**
+     * 鎬у埆
+     */
+    private String sex;
+
+    /**
+     * 鎬у埆鏄剧ず鍚嶇О
+     */
+    private String sexText;
+
+    /**
+     * 榛樿鐨勮瑷�缂栫爜
+     */
+    private String langCode;
+
+    /**
+     * 鐢ㄦ埛鐘舵��
+     */
+    private short status;
+
+    /**
+     * 璇█鍚嶇О
+     */
+    private String langCodeText;
+
+    /**
+     * 鏄惁閿佸畾
+     */
+    private String lockFlag;
+
+    /**
+     * 澶村儚鏂囦欢涓婚敭
+     */
+    private String photo;
+
+    /**
+     * 鎵�灞炶鑹�
+     */
+    private String pkRole;
+
+    /**
+     * 宸ョ
+     */
+    private String pkWorkType;
+
+    /**
+     * 鎵�灞炲伐绉嶅悕绉�
+     */
+    private String pkWorkTypeText;
+
+    /**
+     * 宸ュ彿(鐭彿)
+     */
+    private String workNo;
+
+    /**
+     * 涓嶆牎楠屽瘑鐮佸畨鍏ㄧ瓥鐣�
+     */
+    private Boolean unCheckPasswordStrategy;
+
+    /**
+     * 涓撲笟
+     */
+    private String specialties;
+
+    /**
+     * 鎺堟潈鑰�
+     */
+    private String grantor;
+
+    public String getIsDeptLeader() {
+        return isDeptLeader;
+    }
+
+    public void setIsDeptLeader(String isDeptLeader) {
+        this.isDeptLeader = isDeptLeader;
+    }
+
+    public String getGrantor() {
+        return grantor;
+    }
+
+    public void setGrantor(String grantor) {
+        this.grantor = grantor;
+    }
+
+    public String getSpecialties() {
+        return specialties;
+    }
+
+    public void setSpecialties(String specialties) {
+        this.specialties = specialties;
+    }
+
+    public void setStatus(short status) {
+        this.status = status;
+    }
+
+    public short getStatus() {
+        return status;
+    }
+
+    public String getPkRole() {
+        return pkRole;
+    }
+
+    public void setPkRole(String pkRole) {
+        this.pkRole = pkRole;
+    }
+
+    @Override
+    public String getId() {
+        return id;
+    }
+
+    @Override
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public short getUserType() {
+        return userType;
+    }
+
+    public void setUserType(short userType) {
+        this.userType = userType;
+    }
+
+    public String getUserTypeText() {
+        return userTypeText;
+    }
+
+    public void setUserTypeText(String userTypeText) {
+        this.userTypeText = userTypeText;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getPkPerson() {
+        return pkPerson;
+    }
+
+    public void setPkPerson(String pkPerson) {
+        this.pkPerson = pkPerson;
+    }
+
+    public String getPkPersonName() {
+        return pkPersonName;
+    }
+
+    public void setPkPersonName(String pkPersonName) {
+        this.pkPersonName = pkPersonName;
+    }
+
+    public Date getDisabledate() {
+        return disabledate;
+    }
+
+    public void setDisabledate(Date disabledate) {
+        this.disabledate = disabledate;
+    }
+
+    public String getEmail() {
+        return email;
+    }
+
+    public void setEmail(String email) {
+        this.email = email;
+    }
+
+    public String getTel() {
+        return tel;
+    }
+
+    public void setTel(String tel) {
+        this.tel = tel;
+    }
+
+    public String getRtxNo() {
+        return rtxNo;
+    }
+
+    public void setRtxNo(String rtxNo) {
+        this.rtxNo = rtxNo;
+    }
+
+    public String getIMNo() {
+        return IMNo;
+    }
+
+    public void setIMNo(String IMNo) {
+        this.IMNo = IMNo;
+    }
+
+    public String getPkDepartment() {
+        return pkDepartment;
+    }
+
+    public void setPkDepartment(String pkDepartment) {
+        this.pkDepartment = pkDepartment;
+    }
+
+    public String getPkDepartmentName() {
+        return pkDepartmentName;
+    }
+
+    public void setPkDepartmentName(String pkDepartmentName) {
+        this.pkDepartmentName = pkDepartmentName;
+    }
+
+    public String getPkDuty() {
+        return pkDuty;
+    }
+
+    public void setPkDuty(String pkDuty) {
+        this.pkDuty = pkDuty;
+    }
+
+    public String getPkDutyName() {
+        return pkDutyName;
+    }
+
+    public void setPkDutyName(String pkDutyName) {
+        this.pkDutyName = pkDutyName;
+    }
+
+    public String getPkPasswordStrategy() {
+        return pkPasswordStrategy;
+    }
+
+    public void setPkPasswordStrategy(String pkPasswordStrategy) {
+        this.pkPasswordStrategy = pkPasswordStrategy;
+    }
+
+    public String getPkPasswordStrategyName() {
+        return pkPasswordStrategyName;
+    }
+
+    public void setPkPasswordStrategyName(String pkPasswordStrategyName) {
+        this.pkPasswordStrategyName = pkPasswordStrategyName;
+    }
+
+    public Date getLastLoginTime() {
+        return lastLoginTime;
+    }
+
+    public void setLastLoginTime(Date lastLoginTime) {
+        this.lastLoginTime = lastLoginTime;
+    }
+
+    public Date getPwdUpdateTime() {
+        return pwdUpdateTime;
+    }
+
+    public void setPwdUpdateTime(Date pwdUpdateTime) {
+        this.pwdUpdateTime = pwdUpdateTime;
+    }
+
+    public Integer getPwdWrongCount() {
+        return pwdWrongCount;
+    }
+
+    public void setPwdWrongCount(Integer pwdWrongCount) {
+        this.pwdWrongCount = pwdWrongCount;
+    }
+
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getSexText() {
+        return sexText;
+    }
+
+    public void setSexText(String sexText) {
+        this.sexText = sexText;
+    }
+
+    public String getLangCode() {
+        return langCode;
+    }
+
+    public void setLangCode(String langCode) {
+        this.langCode = langCode;
+    }
+
+    public String getLangCodeText() {
+        return langCodeText;
+    }
+
+    public void setLangCodeText(String langCodeText) {
+        this.langCodeText = langCodeText;
+    }
+
+    public String getLockFlag() {
+        return lockFlag;
+    }
+
+    public void setLockFlag(String lockFlag) {
+        this.lockFlag = lockFlag;
+    }
+
+    public String getPhoto() {
+        return photo;
+    }
+
+    public void setPhoto(String photo) {
+        this.photo = photo;
+    }
+
+    public String getPkWorkType() {
+        return pkWorkType;
+    }
+
+    public void setPkWorkType(String pkWorkType) {
+        this.pkWorkType = pkWorkType;
+    }
+
+    public String getPkWorkTypeText() {
+        return pkWorkTypeText;
+    }
+
+    public void setPkWorkTypeText(String pkWorkTypeText) {
+        this.pkWorkTypeText = pkWorkTypeText;
+    }
+
+    public String getWorkNo() {
+        return workNo;
+    }
+
+    public void setWorkNo(String workNo) {
+        this.workNo = workNo;
+    }
+
+    public String getConfirmPassword() {
+        return confirmPassword;
+    }
+
+    public void setConfirmPassword(String confirmPassword) {
+        this.confirmPassword = confirmPassword;
+    }
+
+    public Boolean getUnCheckPasswordStrategy() {
+        return unCheckPasswordStrategy;
+    }
+
+    public void setUnCheckPasswordStrategy(Boolean unCheckPasswordStrategy) {
+        this.unCheckPasswordStrategy = unCheckPasswordStrategy;
+    }
+
+    @Override
+    public String toString() {
+        return "SmUserDTO{" +
+                "id='" + id + '\'' +
+                ", name='" + name + '\'' +
+                ", userType='" + userType + '\'' +
+                ", userTypeText='" + userTypeText + '\'' +
+                ", password='" + password + '\'' +
+                ", confirmPassword='" + confirmPassword + '\'' +
+                ", pkPerson='" + pkPerson + '\'' +
+                ", pkPersonName='" + pkPersonName + '\'' +
+                ", disabledate=" + disabledate +
+                ", email='" + email + '\'' +
+                ", tel='" + tel + '\'' +
+                ", rtxNo='" + rtxNo + '\'' +
+                ", IMNo='" + IMNo + '\'' +
+                ", pkDepartment='" + pkDepartment + '\'' +
+                ", pkDepartmentName='" + pkDepartmentName + '\'' +
+                ", pkDuty='" + pkDuty + '\'' +
+                ", pkDutyName='" + pkDutyName + '\'' +
+                ", pkPasswordStrategy='" + pkPasswordStrategy + '\'' +
+                ", pkPasswordStrategyName='" + pkPasswordStrategyName + '\'' +
+                ", lastLoginTime=" + lastLoginTime +
+                ", pwdUpdateTime=" + pwdUpdateTime +
+                ", pwdWrongCount=" + pwdWrongCount +
+                ", sex='" + sex + '\'' +
+                ", sexText='" + sexText + '\'' +
+                ", langCode='" + langCode + '\'' +
+                ", langCodeText='" + langCodeText + '\'' +
+                ", lockFlag='" + lockFlag + '\'' +
+                ", photo='" + photo + '\'' +
+                ", pkRole='" + pkRole + '\'' +
+                ", pkWorkType='" + pkWorkType + '\'' +
+                ", pkWorkTypeText='" + pkWorkTypeText + '\'' +
+                ", workNo='" + workNo + '\'' +
+                ", unCheckPasswordStrategy=" + unCheckPasswordStrategy +
+                ", specialties='" + specialties + '\'' +
+                '}';
+    }
+
+}

--
Gitblit v1.9.3