Index: forgon-core/src/main/java/com/forgon/directory/service/SysUserManager.java =================================================================== diff -u -r39758 -r40543 --- forgon-core/src/main/java/com/forgon/directory/service/SysUserManager.java (.../SysUserManager.java) (revision 39758) +++ forgon-core/src/main/java/com/forgon/directory/service/SysUserManager.java (.../SysUserManager.java) (revision 40543) @@ -18,6 +18,17 @@ * */ public interface SysUserManager { + + /** + * 停用用户 + */ + public static final String DISABLE_USER = "停用"; + + /** + * 启用用户 + */ + public static final String ENABLE_USER = "启用"; + public void saveUser(User user); public void updatePwd(User user); @@ -124,4 +135,18 @@ * @return */ public String getUserSupplierName(User user); + + /** + * 停用用户 + * @param user 停用的用户 + * @param sync 是否第三方同步的用户 + */ + public void disableUser(User user, boolean sync); + + /** + * 启用用户 + * @param user 启用的用户 + * @param sync 是否第三方同步的用户 + */ + public void enableUser(User user, boolean sync); } Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java =================================================================== diff -u -r40318 -r40543 --- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java (.../DataSynchronizationManagerImpl.java) (revision 40318) +++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java (.../DataSynchronizationManagerImpl.java) (revision 40543) @@ -1375,6 +1375,8 @@ List defaultRoles = objectDao.getHibernateSession().createCriteria(Role.class).add(Restrictions.in("name", 默认角色ID)).list(); //启用第三方用户名ZSYY-414 boolean enableThirdAccountId = ConfigUtils.getSystemSetConfigByNameBool("enableThirdAccountId"); + //启用停用用户账号功能FSSDERMYY-22 + boolean enableUserAccountDeactivationFunction = ConfigUtils.getSystemSetConfigByNameBool("enableUserAccountDeactivationFunction"); for(UserVo vo : allVos){ if(vo == null){ logger.warn("发现用户数组变量里有空元素"); @@ -1443,7 +1445,7 @@ continue; } //如果用户为锁定的则不处理 - if(StringUtils.equals(com.forgon.Constants.STR_YES, user.getLockStatus())){ + if(StringUtils.equals(com.forgon.Constants.STR_YES, user.getLockStatus()) && !enableUserAccountDeactivationFunction){ logger.debug("登录名为"+ vo.coding +"的用户为锁定状态,不进行处理"); continue; } Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/zsyy/HieServiceManagerImpl.java =================================================================== diff -u -r40318 -r40543 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/zsyy/HieServiceManagerImpl.java (.../HieServiceManagerImpl.java) (revision 40318) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/zsyy/HieServiceManagerImpl.java (.../HieServiceManagerImpl.java) (revision 40543) @@ -27,6 +27,7 @@ import com.forgon.exception.SystemException; import com.forgon.log.model.Log; import com.forgon.log.service.LogManager; +import com.forgon.security.model.User; import com.forgon.tools.date.DateTools; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; @@ -148,11 +149,20 @@ String codingXpath = subjectXpath + "[" + i + "]" + "/UserID"; String nameXpath = subjectXpath + "[" + i + "]" + "/UserName"; String deptCodeXpath = subjectXpath + "[" + i + "]" + "/OrgCode"; + String smsMumberXpath = subjectXpath + "[" + i + "]" + "/Mobile"; + String isDeleteXpath = subjectXpath + "[" + i + "]" + "/IsDelete"; String acountID = processDataByXpath(document, acountIDXpath); String coding = processDataByXpath(document, codingXpath); String name = processDataByXpath(document, nameXpath); String deptCode = processDataByXpath(document, deptCodeXpath); + String smsMumber = processDataByXpath(document, smsMumberXpath); + //IsDelete=0:启用/1:停用 + String isDelete = processDataByXpath(document, isDeleteXpath); + String status = User.STATUS_ENABLED.toString(); + if(StringUtils.equals(isDelete, "1")){ + status = User.STATUS_DISABLED.toString(); + } if(StringUtils.isBlank(coding)){ throw new RuntimeException("人事工号(工号)不能为空!"); @@ -175,6 +185,8 @@ vo.setCoding(coding); vo.setName(name); vo.setDeptCode(deptCode); + vo.setSmsMumber(smsMumber); + vo.setStatus(status); userVoList.add(vo); } Index: ssts-web/src/main/java/com/forgon/disinfectsystem/directory/service/SysUserManagerImpl.java =================================================================== diff -u -r40398 -r40543 --- ssts-web/src/main/java/com/forgon/disinfectsystem/directory/service/SysUserManagerImpl.java (.../SysUserManagerImpl.java) (revision 40398) +++ ssts-web/src/main/java/com/forgon/disinfectsystem/directory/service/SysUserManagerImpl.java (.../SysUserManagerImpl.java) (revision 40543) @@ -1619,7 +1619,7 @@ return; } String ids = StringTools.join(disableUserIdList, ";"); - this.disableOrEnableUser("停用", ids); + this.disableOrEnableUser(DISABLE_USER, ids); log.info("timingDisableLongTimeNotLoginUser:本次定时任务停用(长时间未登录)用户数量为:" + disableUserIdList.size()); } catch (Exception e) { e.printStackTrace(); @@ -1645,11 +1645,11 @@ @Override public void disableOrEnableUser(String isDisabled, String ids) { if(StringUtils.isBlank(isDisabled) - || (!StringUtils.equals(isDisabled, "停用") && !StringUtils.equals(isDisabled, "启用")) + || (!StringUtils.equals(isDisabled, DISABLE_USER) && !StringUtils.equals(isDisabled, ENABLE_USER)) || StringUtils.isBlank(ids)){ throw new RuntimeException("参数异常"); } - Integer status = StringUtils.equals(isDisabled, "停用") ? User.STATUS_DISABLED : User.STATUS_ENABLED; + Integer status = StringUtils.equals(isDisabled, DISABLE_USER) ? User.STATUS_DISABLED : User.STATUS_ENABLED; List userIDList = new ArrayList(); Collection userIDStrColl = StringTools.toCollectionIgnoreNullAndBlank(ids, ";"); if(CollectionUtils.isNotEmpty(userIDStrColl)){ @@ -1668,9 +1668,20 @@ } //启用/停用用户 + disableOrEnableUser(userList, status, false); + } + + /** + * 启用/停用用户 + * @param userList 用户列表 + * @param status 状态:0/1 + * @param sync 是否第三方接口同步 + */ + private void disableOrEnableUser(List userList, Integer status, boolean sync) { + //启用/停用用户 disableOrEnableUser(userList, status); //记录启用/停用用户的日志 - saveDisableOrEnableUserLog(userList, status, false); + saveDisableOrEnableUserLog(userList, status, sync); } /** @@ -1738,8 +1749,7 @@ if(CollectionUtils.isEmpty(userList)){ return; } - this.disableOrEnableUser(userList, User.STATUS_DISABLED); - this.saveDisableOrEnableUserLog(userList, User.STATUS_DISABLED, sync); + this.disableOrEnableUser(userList, User.STATUS_DISABLED, sync); } @Override @@ -1768,5 +1778,30 @@ } return supplierName; } + + /** + * 启用停用用户 + */ + private void disableOrEnableUser(String isDisabled, User user, boolean sync) { + if(StringUtils.isBlank(isDisabled) + || (!StringUtils.equals(isDisabled, DISABLE_USER) && !StringUtils.equals(isDisabled, ENABLE_USER)) + || user == null){ + throw new RuntimeException("参数异常"); + } + List userList = new ArrayList(); + userList.add(user); + Integer status = StringUtils.equals(isDisabled, DISABLE_USER) ? User.STATUS_DISABLED : User.STATUS_ENABLED; + disableOrEnableUser(userList, status, sync); + } + + @Override + public void disableUser(User user, boolean sync) { + this.disableOrEnableUser(DISABLE_USER, user, sync); + } + + @Override + public void enableUser(User user, boolean sync) { + this.disableOrEnableUser(ENABLE_USER, user, sync); + } } Index: forgon-core/src/main/java/com/forgon/security/service/UserManagerImpl.java =================================================================== diff -u -r40318 -r40543 --- forgon-core/src/main/java/com/forgon/security/service/UserManagerImpl.java (.../UserManagerImpl.java) (revision 40318) +++ forgon-core/src/main/java/com/forgon/security/service/UserManagerImpl.java (.../UserManagerImpl.java) (revision 40543) @@ -41,6 +41,7 @@ import com.forgon.directory.model.BarcodeDevice; import com.forgon.directory.model.OrgUnit; import com.forgon.directory.model.OrgUserRelation; +import com.forgon.directory.service.SysUserManager; import com.forgon.directory.vo.LoginUserData; import com.forgon.exception.SystemException; import com.forgon.log.model.Log; @@ -558,6 +559,24 @@ user.setThirdPartyAcountID(userVo.getThirdPartyAcountID()); } user.setFullName(fullName); + + //启用/停用用户ZSYY-424 + boolean enableUserAccountDeactivationFunction = ConfigUtils.getSystemSetConfigByNameBool("enableUserAccountDeactivationFunction"); + if(enableUserAccountDeactivationFunction){ + //开启配置项后,才会停用锁定/启用解锁用户;否则,只是修改用户状态,停用/启用用户 + String userStatus = user.getStatus() == null ? User.STATUS_ENABLED.toString() : user.getStatus().toString(); + if(!StringUtils.equals(status, userStatus)){ + SysUserManager sysUserManager = (SysUserManager) SpringBeanManger.getBean("sysUserManager"); + if(StringUtils.equals(status, User.STATUS_DISABLED.toString())){ + //停用 + sysUserManager.disableUser(user, true); + }else if(StringUtils.equals(status, User.STATUS_ENABLED.toString())){ + //启用 + sysUserManager.enableUser(user, true); + } + } + } + if (StringUtils.isBlank(status)) { // 有的医院没有这个属性就默认给这个用可以登录的状态(陈家儒改) user.setStatus(User.STATUS_ENABLED); } else { //如果有就按his系统的为准