/// <summary> /// 用户是否在某部门 /// </summary> /// <param name="userId">用户主键</param> /// <param name="organizeName">部门名称</param> /// <returns>存在</returns> public bool IsInOrganize(string userId, string organizeName) { var returnValue = false; // 把部门的主键找出来 var parameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(PiOrganizeTable.FieldFullName, organizeName), new KeyValuePair <string, object>(PiOrganizeTable.FieldEnabled, 1), new KeyValuePair <string, object>(PiOrganizeTable.FieldDeleteMark, 0) }; var organizeManager = new PiOrganizeManager(this.UserInfo); var organizeId = organizeManager.GetId(parameters); if (string.IsNullOrEmpty(organizeId)) { return(returnValue); } // 用户组织机构关联关系 var organizeIds = GetAllOrganizeIds(userId); if (organizeIds == null || organizeIds.Length <= 0) { return(returnValue); } // 用户的部门是否存在这些部门里 returnValue = StringHelper.Exists(organizeIds, organizeId); return(returnValue); }
public bool ArchRelation(string userId, string workFlowId, string workTaskId, string workFlowInstanceId, string workTaskInstanceId, OperParameter operParam) { switch (operParam.OperRelation) { case 1: //本部门领导 var orgEntity = new PiOrganizeManager(DbFactoryProvider.GetProvider(SystemInfo.RDIFrameworkDbType, SystemInfo.RDIFrameworkDbConectionString)).GetEntity(operParam.OperContent); var uEntity = new PiUserManager(DbFactoryProvider.GetProvider(SystemInfo.RDIFrameworkDbType, SystemInfo.RDIFrameworkDbConectionString)).GetEntity(orgEntity.ManagerId); operParam.OperContent = uEntity.Id; operParam.OperContenText = uEntity.UserName; AssignUser(userId, workFlowId, workTaskId, workFlowInstanceId, workTaskInstanceId, operParam); break; case 2: //无此情况 break; case 3: //上级部门,一个部门只有一个上级部门 //ToDo... break; case 4: //下级部门 //ToDo... break; case 5: //上级部门领导 //ToDo... break; case 6: //下级部门领导 //ToDo... break; } return(true); }
public DataTable GetParentChildrenStaffs(string organizeId) { string[] organizeIds = null; PiOrganizeManager organizeManager = new PiOrganizeManager(this.DBProvider, this.UserInfo); string organizeCode = organizeManager.GetCodeById(organizeId); organizeIds = organizeManager.GetChildrensIdByCode(PiOrganizeTable.FieldCode, organizeCode); return(this.GetDTByOrganizes(organizeIds)); }
/// <summary> /// 批量移动数据 /// </summary> /// <param name="userInfo">用户</param> /// <param name="organizeIds">主键数组</param> /// <param name="parentId">父节点主键</param> /// <returns>影响行数</returns> public int BatchMoveTo(UserInfo userInfo, string[] organizeIds, string parentId) { int returnValue = 0; var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.OrganizeService_BatchMoveTo, "主键数组:" + BusinessLogic.ArrayToList(organizeIds) + ",父节点:" + parentId); ServiceUtil.ProcessRDIWriteDbWithTran(userInfo, parameter, dbProvider => { var organizeManager = new PiOrganizeManager(dbProvider, userInfo); returnValue += organizeIds.Sum(t => organizeManager.MoveTo(t, parentId)); }); return(returnValue); }
/// <summary> /// 移动数据 /// </summary> /// <param name="userInfo">用户</param> /// <param name="organizeId">组织机构</param> /// <param name="parentId">父主键</param> /// <returns>影响行数</returns> public int MoveTo(UserInfo userInfo, string organizeId, string parentId) { int returnValue = 0; var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.OrganizeService_MoveTo, "组织机构:" + organizeId + ",父节点:" + parentId); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var organizeManager = new PiOrganizeManager(dbProvider, userInfo); returnValue = organizeManager.MoveTo(organizeId, parentId); }); return(returnValue); }
/// <summary> /// 物理刪除数据 /// </summary> /// <param name="userInfo">用户</param> /// <param name="id">主鍵</param> /// <returns>DataTable</returns> public int Delete(UserInfo userInfo, string id) { int returnValue = 0; var parameter = ParameterUtil.CreateWithLog(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var manager = new PiOrganizeManager(dbProvider, userInfo); returnValue = manager.Delete(id); }); return(returnValue); }
/// <summary> /// 取得实体 /// </summary> /// <param name="userInfo">用户</param> /// <param name="id">主鍵</param> /// <returns>实体</returns> public PiOrganizeEntity GetEntity(UserInfo userInfo, string id) { PiOrganizeEntity entity = null; var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.OrganizeService_GetEntity); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var manager = new PiOrganizeManager(dbProvider, userInfo); entity = manager.GetEntity(id); }); return(entity); }
/// <summary> /// 根据组织机构主键获取其指定分类下的子节点列表 /// </summary> /// <param name="userInfo">用户信息</param> /// <param name="organizeId">组织机构主键</param> /// <returns></returns> public DataTable GetChildrensById(UserInfo userInfo, string organizeId) { var dataTable = new DataTable(PiOrganizeTable.TableName); var parameter = ParameterUtil.CreateWithOutMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var manager = new PiOrganizeManager(dbProvider, userInfo); dataTable = manager.GetChildrens(PiOrganizeTable.FieldId, organizeId, PiOrganizeTable.FieldParentId, PiOrganizeTable.FieldSortCode, false); dataTable.TableName = PiOrganizeTable.TableName; }); return(dataTable); }
/// <summary> /// 批量保存数据 /// </summary> /// <param name="userInfo">用户</param> /// <param name="dataTable">数据表</param> /// <returns>影响的行数</returns> public int BatchSave(UserInfo userInfo, DataTable dataTable) { int returnValue = 0; var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.OrganizeService_BatchSave); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var organizeManager = new PiOrganizeManager(dbProvider, userInfo); returnValue = organizeManager.BatchSave(dataTable); }); return(returnValue); }
/// <summary> /// 依据相应条件获取数据 /// </summary> /// <param name="userInfo">用户</param> /// <param name="names">字段</param> /// <param name="values">值</param> /// <returns>DataTable</returns> public DataTable GetDTByValues(UserInfo userInfo, string[] names, object[] values) { var dataTable = new DataTable(PiOrganizeTable.TableName); var parameter = ParameterUtil.CreateWithLog(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var manager = new PiOrganizeManager(dbProvider, userInfo); dataTable = manager.GetDT(names, values); dataTable.TableName = PiOrganizeTable.TableName; }); return(dataTable); }
/// <summary> /// 依主键数组得到数据 /// </summary> /// <param name="userInfo">用户</param> /// <param name="ids">主鍵</param> /// <returns>DataTable</returns> public DataTable GetDTByIds(UserInfo userInfo, string[] ids) { var dataTable = new DataTable(PiOrganizeTable.TableName); var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.OrganizeService_GetDTByIds); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var manager = new PiOrganizeManager(dbProvider, userInfo); dataTable = manager.GetDT(PiOrganizeTable.FieldId, ids, PiOrganizeTable.FieldSortCode); dataTable.TableName = PiOrganizeTable.TableName; }); return(dataTable); }
/// <summary> /// 按父节点获取列表 /// </summary> /// <param name="userInfo">用户</param> /// <param name="parentId">父节点</param> /// <returns>数据表</returns> public DataTable GetDTByParent(UserInfo userInfo, string parentId) { var dataTable = new DataTable(PiOrganizeTable.TableName); var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.OrganizeService_GetDTByParent); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var organizeManager = new PiOrganizeManager(dbProvider, userInfo); dataTable = organizeManager.GetDT(PiOrganizeTable.FieldParentId, parentId, PiOrganizeTable.FieldDeleteMark, 0, PiOrganizeTable.FieldSortCode); dataTable.DefaultView.Sort = PiOrganizeTable.FieldSortCode; dataTable.TableName = PiOrganizeTable.TableName; }); return(dataTable); }
/// <summary> /// 批量物理删除数据 /// </summary> /// <param name="userInfo">用户</param> /// <param name="ids">主键数组</param> /// <returns>影响的行数</returns> public int BatchDelete(UserInfo userInfo, string[] ids) { int returnValue = 0; var parameter = ParameterUtil.CreateWithLog(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessRDIWriteDbWithTran(userInfo, parameter, dbProvider => { var manager = new PiOrganizeManager(dbProvider, userInfo); if (ids != null) { returnValue = manager.Delete(ids); } }); return(returnValue); }
/// <summary> /// 更新实体 /// </summary> /// <param name="userInfo">用户</param> /// <param name="entity">实体</param> /// <param name="statusMessage">返回狀態訊息</param> /// <returns>影响的行数</returns> public int Update(UserInfo userInfo, PiOrganizeEntity entity, out string statusMessage) { int returnValue = 0; string returnCode = string.Empty; string returnMessage = string.Empty; var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.OrganizeService_Update); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var manager = new PiOrganizeManager(dbProvider, userInfo); returnValue = manager.Update(entity, out returnCode); returnMessage = manager.GetStateMessage(returnCode); }); statusMessage = returnMessage; return(returnValue); }
/// <summary> /// 取得列表 /// </summary> /// <param name="userInfo">用户</param> /// <returns>List</returns> public List <PiOrganizeEntity> GetList(UserInfo userInfo) { List <PiOrganizeEntity> list = new List <PiOrganizeEntity>(); var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.OrganizeService_GetDT); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var manager = new PiOrganizeManager(dbProvider, userInfo); List <KeyValuePair <string, object> > parameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(PiOrganizeTable.FieldDeleteMark, 0) }; list = manager.GetList <PiOrganizeEntity>(parameters, PiOrganizeTable.FieldSortCode); }); return(list); }
/// <summary> /// 按部门获取部门用户,包括子部门的用户 /// </summary> /// <param name="departmentId">部门主键</param> /// <param name="searchValue"></param> /// <returns>数据表</returns> public DataTable SearchByDepartment(string departmentId, string searchValue) { var sqlQuery = " SELECT " + PiUserTable.TableName + ".* " + " FROM " + PiUserTable.TableName; sqlQuery += " WHERE (" + PiUserTable.TableName + "." + PiUserTable.FieldDeleteMark + " = 0 "; sqlQuery += " AND " + PiUserTable.TableName + "." + PiUserTable.FieldEnabled + " = 1 ) "; if (!String.IsNullOrEmpty(departmentId)) { /* * 用非递归调用的建议方法 * sqlQuery += " AND " + PiUserTable.TableName + "." + PiUserTable.FieldDepartmentId + " IN ( SELECT " + PiOrganizeTable.FieldId + " FROM " + PiOrganizeTable.TableName + " WHERE " + PiOrganizeTable.FieldId + " = " + departmentId + " OR " + PiOrganizeTable.FieldParentId + " = " + departmentId + ")"; */ var organizeManager = new PiOrganizeManager(this.DBProvider, this.UserInfo); var organizeIds = organizeManager.GetChildrensId(PiOrganizeTable.FieldId, departmentId, PiOrganizeTable.FieldParentId); if (organizeIds != null && organizeIds.Length > 0) { sqlQuery += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldCompanyId + " IN (" + BusinessLogic.ArrayToList(organizeIds, "'") + ")" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldDepartmentId + " IN (" + BusinessLogic.ArrayToList(organizeIds, "'") + ")" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldWorkgroupId + " IN (" + BusinessLogic.ArrayToList(organizeIds, "'") + "))"; } } var dbParameters = new List <IDbDataParameter>(); searchValue = searchValue.Trim(); if (!String.IsNullOrEmpty(searchValue)) { sqlQuery += " AND (" + PiUserTable.FieldUserName + " LIKE " + DBProvider.GetParameter(PiUserTable.FieldUserName); sqlQuery += " OR " + PiUserTable.FieldCode + " LIKE " + DBProvider.GetParameter(PiUserTable.FieldCode); sqlQuery += " OR " + PiUserTable.FieldRealName + " LIKE " + DBProvider.GetParameter(PiUserTable.FieldRealName); sqlQuery += " OR " + PiUserTable.FieldDepartmentName + " LIKE " + DBProvider.GetParameter(PiUserTable.FieldDepartmentName) + ")"; if (searchValue.IndexOf("%") < 0) { searchValue = "%" + searchValue + "%"; } dbParameters.Add(DBProvider.MakeParameter(PiUserTable.FieldUserName, searchValue)); dbParameters.Add(DBProvider.MakeParameter(PiUserTable.FieldCode, searchValue)); dbParameters.Add(DBProvider.MakeParameter(PiUserTable.FieldRealName, searchValue)); dbParameters.Add(DBProvider.MakeParameter(PiUserTable.FieldDepartmentName, searchValue)); } sqlQuery += " ORDER BY " + PiUserTable.TableName + "." + PiUserTable.FieldSortCode; return(DBProvider.Fill(sqlQuery, dbParameters.ToArray())); }
public DataTable GetChildrenUsers(string organizeId) { string[] organizeIds = null; var organizeManager = new PiOrganizeManager(this.DBProvider, this.UserInfo); switch (DBProvider.CurrentDbType) { case CurrentDbType.Access: case CurrentDbType.SqlServer: var organizeCode = this.GetCodeById(organizeId); organizeIds = organizeManager.GetChildrensIdByCode(PiOrganizeTable.FieldCode, organizeCode); break; case CurrentDbType.Oracle: organizeIds = organizeManager.GetChildrensId(PiOrganizeTable.FieldId, organizeId, PiOrganizeTable.FieldParentId); break; } return(this.GetDTByOrganizes(organizeIds)); }
public bool UserRelation(string userId, string workFlowId, string workTaskId, string workFlowInstanceId, string workTaskInstanceId, OperParameter operParam) { switch (operParam.OperRelation) { case 1: //本部门领导 //获得用户所属部门 var dtArch = new PiUserManager(DbFactoryProvider.GetProvider(SystemInfo.RDIFrameworkDbType, SystemInfo.RDIFrameworkDbConectionString)).GetDTById(operParam.OperContent); //获得用户所属部门 foreach (DataRow drArch in dtArch.Rows) //可能一个人属于多个部门 { var archId = BusinessLogic.ConvertToString(drArch[PiUserTable.FieldDepartmentId]); var orgEntity = new PiOrganizeManager(DbFactoryProvider.GetProvider(SystemInfo.RDIFrameworkDbType, SystemInfo.RDIFrameworkDbConectionString)).GetEntity(archId); operParam.OperContent = orgEntity.ManagerId; operParam.OperContenText = orgEntity.Manager; AssignUser(userId, workFlowId, workTaskId, workFlowInstanceId, workTaskInstanceId, operParam); } break; case 2: //所在部门 var userEntity = new PiUserManager(DbFactoryProvider.GetProvider(SystemInfo.RDIFrameworkDbType, SystemInfo.RDIFrameworkDbConectionString)).GetEntity(operParam.OperContent); operParam.OperContent = userEntity.DepartmentId; operParam.OperContenText = userEntity.DepartmentName; AssignArchitecture(userId, workFlowId, workTaskId, workFlowInstanceId, workTaskInstanceId, operParam); break; case 3: //上级部门 //ToDo... break; case 4: //下级部门 //ToDo... break; case 5: //上级领导 //ToDo... break; case 6: //下级领导 //ToDo... break; } return(true); }
public List <PiUserEntity> GetChildrenUserList(string organizeId) { string[] organizeIds = null; var manager = new PiOrganizeManager(base.DBProvider, base.UserInfo); switch (base.DBProvider.CurrentDbType) { case CurrentDbType.Oracle: organizeIds = manager.GetChildrensId(PiOrganizeTable.FieldId, organizeId, PiOrganizeTable.FieldParentId); break; case CurrentDbType.SqlServer: case CurrentDbType.Access: { string codeById = manager.GetCodeById(organizeId); organizeIds = manager.GetChildrensIdByCode(PiOrganizeTable.FieldCode, codeById); break; } } return(this.GetListByOrganizes(organizeIds)); }
/// <summary> /// 按某个权限范围获取特定用户可访问的组织机构列表 /// </summary> /// <param name="userInfo">用户</param> /// <param name="userId">用户主键</param> /// <param name="permissionItemCode">操作权限编号</param> /// <returns>数据表</returns> public DataTable GetOrganizeDTByPermissionScope(UserInfo userInfo, string userId, string permissionItemCode) { var dataTable = new DataTable(PiOrganizeTable.TableName); var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.PermissionService_GetOrganizeDTByPermissionScope); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { // 若权限是空的,直接返回所有数据 if (String.IsNullOrEmpty(permissionItemCode)) { dataTable = new PiOrganizeManager(dbProvider, userInfo).GetDT(); dataTable.DefaultView.Sort = PiOrganizeTable.FieldSortCode; } else { //获得组织机构列表 dataTable = new PiPermissionScopeManager(dbProvider, userInfo).GetOrganizeDT(string.IsNullOrEmpty(userId) ? userInfo.Id : userId, permissionItemCode); dataTable.DefaultView.Sort = PiOrganizeTable.FieldSortCode; } dataTable.TableName = PiOrganizeTable.TableName; }); return(dataTable); }
public DataTable GetChildrenStaffs(string organizeId) { PiOrganizeManager organizeManager = new PiOrganizeManager(this.DBProvider, this.UserInfo); string[] organizeIds = null; switch (DBProvider.CurrentDbType) { case CurrentDbType.Access: case CurrentDbType.SqlServer: string organizeCode = DbCommonLibary.GetProperty(dbProvider, PiOrganizeTable.TableName, PiOrganizeTable.FieldId, organizeId, PiOrganizeTable.FieldCode); //this.GetCodeById(organizeId); organizeIds = organizeManager.GetChildrensIdByCode(PiOrganizeTable.FieldCode, organizeCode); break; case CurrentDbType.Oracle: organizeIds = organizeManager.GetChildrensId(PiOrganizeTable.FieldId, organizeId, PiOrganizeTable.FieldParentId); break; case CurrentDbType.MySql: organizeIds = organizeManager.GetMySqlChildrensId(PiOrganizeTable.FieldId, organizeId, PiOrganizeTable.FieldParentId); break; } return(this.GetDTByOrganizes(organizeIds)); }
/// <summary> /// 获取内部组织机构 /// </summary> /// <param name="userInfo">用户</param> /// <returns>数据表</returns> public DataTable GetInnerOrganizeDT(UserInfo userInfo) { var parameter = ParameterUtil.CreateWithLog(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessRDIWriteDbWithLock(userInfo, parameter, locker, (dbProvider, getOnLine) => { var organizeManager = new PiOrganizeManager(dbProvider, userInfo); if (MessageService.LastCheckOrgTime == DateTime.MinValue) { getOnLine = true; } else { TimeSpan timeSpan = DateTime.Now - MessageService.LastCheckOrgTime; if ((timeSpan.Minutes * 60 + timeSpan.Seconds) >= SystemInfo.OnLineCheck * 100) { getOnLine = true; } } if (OnLineStateDT == null || getOnLine) { string commandText = " SELECT * " + " FROM " + PiOrganizeTable.TableName + " WHERE " + PiOrganizeTable.FieldDeleteMark + " = 0 " + " AND " + PiOrganizeTable.FieldIsInnerOrganize + " = 1 " + " AND " + PiOrganizeTable.FieldEnabled + " = 1 " + " ORDER BY " + PiOrganizeTable.FieldSortCode; InnerOrganizeDT = organizeManager.Fill(commandText); InnerOrganizeDT.TableName = PiOrganizeTable.TableName; MessageService.LastCheckOrgTime = DateTime.Now; } return(getOnLine); }); return(InnerOrganizeDT); }
/// <summary> /// 分页查询 /// </summary> /// <param name="searchValue">查询字段</param> /// <param name="departmentId">部门主键</param> /// <param name="roleId">角色主键</param> /// <param name="recordCount">记录数</param> /// <param name="pageIndex">当前页</param> /// <param name="pageSize">每页显示</param> /// <param name="order">排序</param> /// <returns>数据表</returns> public DataTable GetDTByPage(string searchValue, string departmentId, string roleId, out int recordCount, int pageIndex = 0, int pageSize = 20, string order = null) { string whereConditional = PiUserTable.TableName + "." + PiUserTable.FieldDeleteMark + " = 0 " + " AND " + PiUserTable.TableName + "." + PiUserTable.FieldEnabled + " = 1 " + " AND " + PiUserTable.TableName + "." + PiUserTable.FieldIsVisible + " = 1 "; if (!String.IsNullOrEmpty(departmentId)) { /* * 用非递归调用的建议方法 * sqlQuery += " AND " + PiUserTable.TableName + "." + PiUserTable.FieldDepartmentId + " IN ( SELECT " + PiOrganizeTable.FieldId + " FROM " + BaseOrganizeEntity.TableName + " WHERE " + PiOrganizeTable.FieldId + " = " + departmentId + " OR " + PiOrganizeTable.FieldParentId + " = " + departmentId + ")"; */ PiOrganizeManager organizeManager = new PiOrganizeManager(this.DBProvider, this.UserInfo); string[] organizeIds = organizeManager.GetChildrensId(PiOrganizeTable.FieldId, departmentId, PiOrganizeTable.FieldParentId); if (organizeIds != null && organizeIds.Length > 0) { whereConditional += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldCompanyId + " IN (" + StringHelper.ArrayToList(organizeIds, "'") + ")" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldSubCompanyId + " IN (" + StringHelper.ArrayToList(organizeIds, "'") + ")" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldDepartmentId + " IN (" + StringHelper.ArrayToList(organizeIds, "'") + ")" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldSubDepartmentId + " IN (" + StringHelper.ArrayToList(organizeIds, "'") + ")" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldWorkgroupId + " IN (" + StringHelper.ArrayToList(organizeIds, "'") + "))"; } } if (!string.IsNullOrEmpty(roleId)) { string tableNameUserRole = PiUserRoleTable.TableName; whereConditional += " AND ( " + PiUserTable.TableName + "." + PiUserTable.FieldId + " IN " + " (SELECT + " + PiUserRoleTable.FieldUserId + " FROM " + tableNameUserRole + " WHERE " + PiUserRoleTable.FieldRoleId + " = '" + roleId + "'" + " AND " + PiUserRoleTable.FieldEnabled + " = 1" + " AND " + PiUserRoleTable.FieldDeleteMark + " = 0)) "; } if (!string.IsNullOrEmpty(searchValue)) { searchValue = "'" + StringHelper.GetSearchString(searchValue) + "'"; whereConditional += " AND (" + PiUserTable.FieldRealName + " LIKE " + searchValue; whereConditional += " OR " + PiUserTable.FieldUserName + " LIKE " + searchValue + ")"; //whereConditional += " AND (" + searchValue + ")"; ; } recordCount = DbCommonLibary.GetCount(DBProvider, this.CurrentTableName, whereConditional); this.CurrentTableName = "PIUSER LEFT OUTER JOIN PIUSERLOGON ON PIUSER.ID = PIUSERLOGON.ID "; switch (DBProvider.CurrentDbType) { case CurrentDbType.SqlServer: case CurrentDbType.Access: case CurrentDbType.Oracle: case CurrentDbType.MySql: this.SelectField = PiUserTable.TableName + ".* " + "," + PiUserLogOnTable.TableName + "." + PiUserLogOnTable.FieldFirstVisit + "," + PiUserLogOnTable.TableName + "." + PiUserLogOnTable.FieldPreviousVisit + "," + PiUserLogOnTable.TableName + "." + PiUserLogOnTable.FieldLastVisit + "," + PiUserLogOnTable.TableName + "." + PiUserLogOnTable.FieldIPAddress + "," + PiUserLogOnTable.TableName + "." + PiUserLogOnTable.FieldMACAddress + "," + PiUserLogOnTable.TableName + "." + PiUserLogOnTable.FieldLogOnCount + "," + PiUserLogOnTable.TableName + "." + PiUserLogOnTable.FieldUserOnLine; break; case CurrentDbType.DB2: break; } return(DbCommonLibary.GetDTByPage(DBProvider, this.CurrentTableName, this.SelectField, pageIndex, pageSize, whereConditional, order)); }
private string GetSearchConditional(string permissionScopeCode, string search, string[] roleIds, bool?enabled, string auditStates, string departmentId) { search = StringHelper.GetSearchString(search); string whereConditional = PiUserTable.TableName + "." + PiUserTable.FieldDeleteMark + " = 0 " + " AND " + PiUserTable.TableName + "." + PiUserTable.FieldIsVisible + " = 1 "; if (enabled != null) { whereConditional += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldEnabled + " = " + ((bool)enabled ? 1 : 0) + ")"; } if (!String.IsNullOrEmpty(search)) { whereConditional += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldUserName + " LIKE '" + search + "'" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldCode + " LIKE '" + search + "'" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldRealName + " LIKE '" + search + "'" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldQuickQuery + " LIKE '" + search + "'" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldDepartmentName + " LIKE '" + search + "'" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldDescription + " LIKE '" + search + "')"; } if (!string.IsNullOrEmpty(departmentId)) { var organizeManager = new PiOrganizeManager(this.DBProvider, this.UserInfo); string[] organizeIds = organizeManager.GetChildrensId(PiOrganizeTable.FieldId, departmentId, PiOrganizeTable.FieldParentId); if (organizeIds != null && organizeIds.Length > 0) { whereConditional += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldCompanyId + " IN (" + StringHelper.ArrayToList(organizeIds, "'") + ")" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldSubCompanyId + " IN (" + StringHelper.ArrayToList(organizeIds, "'") + ")" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldDepartmentId + " IN (" + StringHelper.ArrayToList(organizeIds, "'") + ")" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldSubDepartmentId + " IN (" + StringHelper.ArrayToList(organizeIds, "'") + ")" + " OR " + PiUserTable.TableName + "." + PiUserTable.FieldWorkgroupId + " IN (" + StringHelper.ArrayToList(organizeIds, "'") + "))"; // 从兼职表读取用户 whereConditional += " OR " + PiUserTable.TableName + "." + PiUserTable.FieldId + " IN (" + " SELECT " + PiUserOrganizeTable.FieldUserId + " FROM " + PiUserOrganizeTable.TableName + " WHERE (" + PiUserOrganizeTable.TableName + "." + PiUserOrganizeTable.FieldDeleteMark + " = 0 ) " + " AND (" + PiUserOrganizeTable.TableName + "." + PiUserOrganizeTable.FieldCompanyId + " = '" + departmentId + "' OR " + PiUserOrganizeTable.TableName + "." + PiUserOrganizeTable.FieldSubCompanyId + " = '" + departmentId + "' OR " + PiUserOrganizeTable.TableName + "." + PiUserOrganizeTable.FieldDepartmentId + " = '" + departmentId + "' OR " + PiUserOrganizeTable.TableName + "." + PiUserOrganizeTable.FieldSubDepartmentId + " = '" + departmentId + "' OR " + PiUserOrganizeTable.TableName + "." + PiUserOrganizeTable.FieldWorkgroupId + " = '" + departmentId + "')) "; } } if (!String.IsNullOrEmpty(auditStates)) { whereConditional += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldAuditStatus + " = '" + auditStates + "')"; } if ((roleIds != null) && (roleIds.Length > 0)) { string roles = StringHelper.ArrayToList(roleIds, "'"); whereConditional += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldId + " IN (" + "SELECT " + PiUserRoleTable.FieldUserId + " FROM " + PiUserRoleTable.TableName + " WHERE " + PiUserRoleTable.FieldRoleId + " IN (" + roles + ")" + "))"; } // 是否过滤用户, 获得组织机构列表 if ((!UserInfo.IsAdministrator) && (SystemInfo.EnableUserAuthorizationScope)) { // string permissionScopeCode = "Resource.ManagePermission"; var permissionItemManager = new PiPermissionItemManager(this.DBProvider, this.UserInfo); string permissionScopeItemId = permissionItemManager.GetId(new KeyValuePair <string, object>(PiPermissionItemTable.FieldCode, permissionScopeCode)); if (!string.IsNullOrEmpty(permissionScopeItemId)) { // 从小到大的顺序进行显示,防止错误发生 var userPermissionScopeManager = new UserScopeManager(this.DBProvider, this.UserInfo); string[] organizeIds = userPermissionScopeManager.GetOrganizeIds(this.UserInfo.Id, permissionScopeCode); // 没有任何数据权限 if (StringHelper.Exists(organizeIds, ((int)PermissionScope.None).ToString())) { whereConditional += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldId + " = NULL ) "; } // 按详细设定的数据 if (StringHelper.Exists(organizeIds, ((int)PermissionScope.Detail).ToString())) { var permissionScopeManager = new PiPermissionScopeManager(DBProvider, UserInfo); string[] userIds = permissionScopeManager.GetUserIds(UserInfo.Id, permissionScopeCode); whereConditional += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldId + " IN (" + BusinessLogic.ObjectsToList(userIds) + ")) "; } // 自己的数据,仅本人 if (StringHelper.Exists(organizeIds, ((int)PermissionScope.User).ToString())) { whereConditional += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldId + " = '" + this.UserInfo.Id + "') "; } // 用户所在工作组数据 if (StringHelper.Exists(organizeIds, ((int)PermissionScope.UserWorkgroup).ToString())) { whereConditional += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldWorkgroupId + " = '" + this.UserInfo.WorkgroupId + "') "; } // 用户所在部门数据 if (StringHelper.Exists(organizeIds, ((int)PermissionScope.UserDepartment).ToString())) { whereConditional += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldDepartmentId + " = '" + this.UserInfo.DepartmentId + "') "; } // 用户所在公司数据 if (StringHelper.Exists(organizeIds, ((int)PermissionScope.UserCompany).ToString())) { whereConditional += " AND (" + PiUserTable.TableName + "." + PiUserTable.FieldCompanyId + " = '" + this.UserInfo.CompanyId + "') "; } // 全部数据,这里就不用设置过滤条件了 if (StringHelper.Exists(organizeIds, ((int)PermissionScope.All).ToString())) { } } } return(whereConditional); }
/// <summary> /// 批量置删除标志 /// </summary> /// <param name="userInfo">用户</param> /// <param name="ids">主键数组</param> /// <returns>影响的行数</returns> public int SetDeleted(UserInfo userInfo, string[] ids) { int returnValue = 0; if (ids == null || ids.Length <= 0) { return(returnValue); } var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.OrganizeService_SetDeleted); ServiceUtil.ProcessRDIWriteDbWithTran(userInfo, parameter, dbProvider => { var manager = new PiOrganizeManager(dbProvider, userInfo); for (int pos = 0; pos < ids.Length; pos++) { //逻辑删除组织机构 returnValue += manager.SetDeleted(ids[pos]); //同步处理用户表组织机构相关数据 var userManager = new PiUserManager(dbProvider, userInfo); var parameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(PiUserTable.FieldCompanyId, null), new KeyValuePair <string, object>(PiUserTable.FieldCompanyName, null) }; userManager.SetProperty(new KeyValuePair <string, object>(PiUserTable.FieldCompanyId, ids[pos]), parameters); parameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(PiUserTable.FieldSubCompanyId, null), new KeyValuePair <string, object>(PiUserTable.FieldSubCompanyName, null) }; userManager.SetProperty(new KeyValuePair <string, object>(PiUserTable.FieldSubCompanyId, ids[pos]), parameters); parameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(PiUserTable.FieldDepartmentId, null), new KeyValuePair <string, object>(PiUserTable.FieldDepartmentName, null) }; userManager.SetProperty(new KeyValuePair <string, object>(PiUserTable.FieldDepartmentId, ids[pos]), parameters); parameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(PiUserTable.FieldSubDepartmentId, null), new KeyValuePair <string, object>(PiUserTable.FieldSubDepartmentName, null) }; userManager.SetProperty(new KeyValuePair <string, object>(PiUserTable.FieldSubDepartmentId, ids[pos]), parameters); parameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(PiUserTable.FieldWorkgroupId, null), new KeyValuePair <string, object>(PiUserTable.FieldWorkgroupName, null) }; userManager.SetProperty(new KeyValuePair <string, object>(PiUserTable.FieldWorkgroupId, ids[pos]), parameters); //同步处理员工表组织机构相关数据 var staffOrganizeManager = new PiStaffOrganizeManager(dbProvider, userInfo); parameters = new List <KeyValuePair <string, object> > { new KeyValuePair <string, object>(PiStaffOrganizeTable.FieldOrganizeId, ids[pos]) }; staffOrganizeManager.SetDeleted(parameters, true); } }); return(returnValue); }