/// <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);
        }
Esempio n. 2
0
        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));
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        /// <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);
        }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
        /// <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);
        }
Esempio n. 8
0
        /// <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);
        }
Esempio n. 9
0
        /// <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);
        }
Esempio n. 10
0
        /// <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);
        }
Esempio n. 11
0
        /// <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);
        }
Esempio n. 12
0
        /// <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);
        }
Esempio n. 13
0
        /// <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);
        }
Esempio n. 14
0
        /// <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);
        }
Esempio n. 15
0
        /// <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));
        }
Esempio n. 18
0
        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));
        }
Esempio n. 20
0
        /// <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);
        }
Esempio n. 21
0
        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));
        }
Esempio n. 22
0
        /// <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);
        }
Esempio n. 23
0
        /// <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));
        }
Esempio n. 24
0
        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);
        }
Esempio n. 25
0
        /// <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);
        }