using FactorySystemCommon; using FactorySystemModel.SqlSugarModel; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using FactorySystemModel.EnumModel; namespace FactorySystemBll { public class UserBll { /// /// 获取配置信息 /// public object GetBasicList(int type) { return AppSettingsHelper.GetSqlSugar().Queryable().Where(s => s.FType == type && s.FState == 1).ToList(); } /// /// 获取角色集合 /// /// public object GetRoleList() { return AppSettingsHelper.GetSqlSugar().Queryable().Where(s => s.FDeleted != (int)Constant.DeleteCode.已删除).ToList(); } /// /// 获取权限配置集合 /// /// /// public List GetPower(string userid) { return AppSettingsHelper.GetSqlSugar().Queryable().Where("FUserID="+ userid).ToList(); } /// /// 获取菜单权限 /// public object GetMenuList(int userId, string roleIds, bool returnAll = false) { int delete = (int)Constant.DeleteCode.已删除; SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); List roles = new List(); if (string.IsNullOrEmpty(roleIds)) { TUser userInfo = db.Queryable().Where(s => s.FID == userId && s.FDeleted != delete).First(); roleIds = userInfo.FRoleID.ToString(); } roles = roleIds.Split(',').ToList(); List menuList = db.Queryable().Where(s => s.FDeleted != delete).OrderBy(s => s.FOrder).ToList(); List hasIds = db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.FID == b.FRoleID)) .Where((a, b) => a.FDeleted != delete && b.FType == (int)Constant.RoleType.菜单权限 && roles.Contains(a.FID.ToString())) .Select((a, b) => b.FFunctionID).GroupBy("b.FFunctionID").ToList(); if (returnAll) { return menuList.Select(s => new { s.FID, s.FIcon, s.FParentID, s.FName, s.FLevel, s.FLocation, s.FOrder, s.FRemark, FIsChose = hasIds.IndexOf(s.FID) != -1 }).ToList(); } else { return menuList.Where(s => hasIds.IndexOf(s.FID) != -1).Select(s => new { s.FID, s.FIcon, s.FParentID, s.FName, s.FLevel, s.FLocation, s.FOrder, s.FRemark, }).ToList(); } } /// /// 获取菜单权限 /// public object GetMenuList(int userId, bool returnAll = false) { SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); int delete = (int)Constant.DeleteCode.已删除; List powers = db.Queryable().Where(s => userId.ToString().Equals(s.FUserID)).ToList(); List roles = new List(); if (powers != null && powers.Count > 0) { powers.ForEach(power => { roles.Add(power.FRole); }); } List menuList = db.Queryable().Where(s => s.FDeleted != delete).OrderBy(s => s.FOrder).ToList(); List hasIds = db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.FID == b.FRoleID)) .Where((a, b) => a.FDeleted != delete && b.FType == (int)Constant.RoleType.菜单权限 && roles.Contains(a.FID.ToString())) .Select((a, b) => b.FFunctionID).GroupBy("b.FFunctionID").ToList(); if (returnAll) { return menuList.Select(s => new { s.FID, s.FIcon, s.FParentID, s.FName, s.FLevel, s.FLocation, s.FOrder, s.FRemark, FIsChose = hasIds.IndexOf(s.FID) != -1 }).ToList(); } else { return menuList.Where(s => hasIds.IndexOf(s.FID) != -1).Select(s => new { s.FID, s.FIcon, s.FParentID, s.FName, s.FLevel, s.FLocation, s.FOrder, s.FRemark, }).ToList(); } } /// /// 获取其他权限 /// public object GetBasicRoleList(object roleIds, int roleType, string viewType, int userId, bool returnAll,object teamId,object type) { int roleType2 = -1; if (roleType == 36) roleType2 = (int)Constant.RoleType.事项权限; else if (roleType == 39) roleType2 = (int)Constant.RoleType.视图权限; else if (roleType == 40) roleType2 = (int)Constant.RoleType.物料视图编辑; else if (roleType == 44) roleType2 = (int)Constant.RoleType.物料基础编辑; // 20230328 新增 // 前端新增传84,用于合并40和44 else if (roleType == 84) roleType2 = (int)Constant.RoleType.视图编辑; if (roleType2 <= 0) return null; SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); List roles = new List(); if (null == roleIds || string.IsNullOrEmpty(roleIds.ToString())) { if (teamId!=null) { //TUser userInfo = db.Queryable().Where(s => s.FID == userId && s.FDeleted != (int)Constant.DeleteCode.已删除).First(); //roleIds = userInfo.FRoleID; int factoryID = 0; switch (int.Parse(type.ToString())) { case 0: TFS_FTeamwork fTeamwork = BaseBll.GetTempModel("FID=" + teamId.ToString()); factoryID = fTeamwork.FCreateFactoryID; break; case 1: TFS_FMaterialTeamwork FMaterialTeamwork = BaseBll.GetTempModel("FID=" + teamId.ToString()); factoryID = FMaterialTeamwork.FCreateFactoryID; break; case 2: TFS_HalfMaterialFTeamwork halfMaterialFTeamwork = BaseBll.GetTempModel("FID=" + teamId.ToString()); factoryID = halfMaterialFTeamwork.FCreateFactoryID; break; } List fPower = db.Queryable().Where(s => s.FUserID == userId.ToString() && s.FFactoryID == factoryID.ToString()).ToList(); roleIds = string.Join(",", fPower.Select(m => m.FRole).Distinct().ToList()); } else { List fPower = db.Queryable().Where(s => s.FUserID == userId.ToString()).ToList(); roleIds = string.Join(",", fPower.Select(m => m.FRole).Distinct().ToList()); } } roles = roleIds.ToString().Trim(',').Split(',').ToList(); /** * 20230328 * 合并物料视图和基础视图 * 前端只保留 * 当roleType == 84时,分别取TBasicCode中的FType = 40和44两个类型的数据(即物料视图和基础视图的所有字段数据) * 当roleType == 84时,分别取TRole_Right中的FType = 4和5两个类型的数据(即物料视图和基础视图的所有权限数据) * **/ List resultList = null; List hasIds = null; dynamic result = null; if (roleType == 84) { resultList = db.Queryable().Where(s => (s.FType == 44 && s.FState == 1)).OrderBy(s => s.FOrder).ToList(); hasIds = db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.FID == b.FRoleID)) .Where((a, b) => a.FDeleted != (int)Constant.DeleteCode.已删除 && b.FType == 5 && roles.Contains(a.FID.ToString())) .Select((a, b) => b.FFunctionID).ToList(); if (!string.IsNullOrEmpty(viewType)) resultList = resultList.Where(s => s.F1.Equals(viewType)).ToList(); if (returnAll) { result = resultList.Select(s => new { s.FID, s.FType, s.FCode, s.FName, s.FRemark, FIsChose = hasIds.IndexOf(int.Parse(s.FCode)) != -1, s.F1, s.F2 }).OrderBy(s => int.Parse(s.FCode)).ToList(); } else { result = resultList.Where(s => hasIds.IndexOf(int.Parse(s.FCode)) != -1).Select(s => new { s.FID, s.FType, s.FCode, s.FName, s.FRemark, s.F1, s.F2 }).OrderBy(s => int.Parse(s.FCode)).ToList(); } resultList = db.Queryable().Where(s => (s.FType == 40 && s.FState == 1)).OrderBy(s => s.FOrder).ToList(); hasIds = db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.FID == b.FRoleID)) .Where((a, b) => a.FDeleted != (int)Constant.DeleteCode.已删除 && b.FType == 4 && roles.Contains(a.FID.ToString())) .Select((a, b) => b.FFunctionID).ToList(); if (!string.IsNullOrEmpty(viewType)) resultList = resultList.Where(s => s.F1.Equals(viewType)).ToList(); if (returnAll) { result.AddRange( resultList.Select(s => new { s.FID, s.FType, s.FCode, s.FName, s.FRemark, FIsChose = hasIds.IndexOf(int.Parse(s.FCode)) != -1, s.F1, s.F2 }).OrderBy(s => int.Parse(s.FCode)).ToList() ); } else { result.AddRange( resultList.Where(s => hasIds.IndexOf(int.Parse(s.FCode)) != -1).Select(s => new { s.FID, s.FType, s.FCode, s.FName, s.FRemark, s.F1, s.F2 }).OrderBy(s => int.Parse(s.FCode)).ToList() ); } } else { resultList = db.Queryable().Where(s => s.FType == roleType && s.FState == 1).OrderBy(s => s.FOrder).ToList(); hasIds = db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.FID == b.FRoleID)) .Where((a, b) => a.FDeleted != (int)Constant.DeleteCode.已删除 && b.FType == roleType2 && roles.Contains(a.FID.ToString())) .Select((a, b) => b.FFunctionID).ToList(); if (!string.IsNullOrEmpty(viewType)) resultList = resultList.Where(s => s.F1.Equals(viewType)).ToList(); if (returnAll) { result = resultList.Select(s => new { s.FID, s.FCode, s.FName, s.FRemark, FIsChose = hasIds.IndexOf(int.Parse(s.FCode)) != -1, s.F1, s.F2 }).OrderBy(s => int.Parse(s.FCode)).ToList(); } else { result = resultList.Where(s => hasIds.IndexOf(int.Parse(s.FCode)) != -1).Select(s => new { s.FID, s.FCode, s.FName, s.FRemark, s.F1, s.F2 }).OrderBy(s => int.Parse(s.FCode)).ToList(); } } return result; // 20230328 需求修改注释 // List resultList = db.Queryable().Where(s => s.FType == roleType && s.FState == 1).OrderBy(s => s.FOrder).ToList(); // List hasIds = db.Queryable((a, b) => new JoinQueryInfos(JoinType.Left, a.FID == b.FRoleID)) // .Where((a, b) => a.FDeleted != (int)Constant.DeleteCode.已删除 && b.FType == roleType2 && roles.Contains(a.FID.ToString())) // .Select((a, b) => b.FFunctionID).ToList(); //视图类型 //if (!string.IsNullOrEmpty(viewType)) resultList = resultList.Where(s => s.F1.Equals(viewType)).ToList(); //if (returnAll) //{ // var a = resultList.Select(s => new // { // s.FID, // s.FCode, // s.FName, // s.FRemark, // FIsChose = hasIds.IndexOf(int.Parse(s.FCode)) != -1, // s.F1, // s.F2 // }).OrderBy(s => int.Parse(s.FCode)).ToList(); // return a; //} //else //{ // return resultList.Where(s => hasIds.IndexOf(int.Parse(s.FCode)) != -1).Select(s => new // { // s.FID, // s.FCode, // s.FName, // s.FRemark, // s.F1, // s.F2 // }).OrderBy(s => int.Parse(s.FCode)).ToList(); //} } /// /// 保存菜单集合 /// public int SaveRolePower(string userId, int roleId, List menuIds, List viewIds, List termIds, List editIds, List editIds2) { int result = 1; SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); db.BeginTran(); try { if (menuIds != null) { result += db.Deleteable().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.菜单权限 && !menuIds.Contains(s.FFunctionID.ToString())).ExecuteCommand(); } if (viewIds != null) { result += db.Deleteable().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.视图权限 && !viewIds.Contains(s.FFunctionID.ToString())).ExecuteCommand(); } if (termIds != null) { result += db.Deleteable().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.事项权限 && !termIds.Contains(s.FFunctionID.ToString())).ExecuteCommand(); } if (editIds != null) { result += db.Deleteable().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.物料视图编辑 && !editIds.Contains(s.FFunctionID.ToString())).ExecuteCommand(); } if (editIds2 != null) { result += db.Deleteable().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.物料基础编辑 && !editIds.Contains(s.FFunctionID.ToString())).ExecuteCommand(); } List inList = new List(); List hasRoles = db.Queryable().Where(s => s.FRoleID == roleId).ToList(); if (menuIds != null) { inList.AddRange(CheckPowerIds(hasRoles, menuIds, (int)Constant.RoleType.菜单权限, userId, roleId)); } if (viewIds != null) { inList.AddRange(CheckPowerIds(hasRoles, viewIds, (int)Constant.RoleType.视图权限, userId, roleId)); } if (termIds != null) { inList.AddRange(CheckPowerIds(hasRoles, termIds, (int)Constant.RoleType.事项权限, userId, roleId)); } if (editIds != null) { inList.AddRange(CheckPowerIds(hasRoles, editIds, (int)Constant.RoleType.物料视图编辑, userId, roleId)); } if (editIds2 != null) { inList.AddRange(CheckPowerIds(hasRoles, editIds2, (int)Constant.RoleType.物料基础编辑, userId, roleId)); } if (inList.Count() > 0) result += db.Insertable(inList).ExecuteCommand(); db.CommitTran(); } catch (Exception) { db.RollbackTran(); } return result; } public int CreateFPower(List list) { int result = 0; if (list.Count() > 0) { SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); FPower power = list.LastOrDefault(); db.Deleteable().Where(s => s.FUserID == power.FUserID).ExecuteCommand(); result = db.Insertable(list).ExecuteCommand(); } return result; } public List GetFPowerList() { return AppSettingsHelper.GetSqlSugar().Queryable().ToList(); } /// /// 获取首页信息 /// public object GetHomeTopCount(int userId) { SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); List topCount = new List(); topCount.Add(db.Queryable().Where(s => s.FState < 2).Where(string.Format("','+FUserID+',' like '%,{0},%'", userId)).Count()); topCount.Add(db.Queryable().Where(string.Format("','+FUserID+',' like '%,{0},%'", userId)) .Where(string.Format("convert(varchar(10),FAddDate,23)='{0}'", DateTime.Now.ToString("yyyy-MM-dd"))).Count()); topCount.Add(db.Queryable().Count()); topCount.Add(db.Queryable().Where(string.Format(@"FID in(select distinct FTeamID from TFS_FTeamProcess where ','+FChargeID+',' like '%,{0},%' union select distinct FTeamID from TFS_Task where ','+FUserID+',' like '%,{0},%')", userId)).Count()); return topCount; } #region 内部方法 private List CheckPowerIds(List hasRoles, List inIds, int roleType, string userId, int roleId) { List ids = hasRoles.Where(ss => ss.FType == roleType).Select(sss => sss.FFunctionID).ToList(); if (ids.Count() > 0) inIds = inIds.Where(s => !ids.Contains(int.Parse(s))).ToList(); if (inIds.Count() > 0 && !string.IsNullOrWhiteSpace(inIds[0])) { return inIds.Select(s => new TRole_Right() { FFunctionID = int.Parse(s), FOperate = userId, FType = roleType, FRoleID = roleId, }).ToList(); } return new List(); } #endregion /// /// 获取冻结列 /// public object GetFreezingColumns(int userId) { TFS_FreezingColumns tc = null; SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); List tcl = db.Queryable().Where(fc => fc.FDeleted != 1 && fc.FUserID == userId).ToList(); if (tcl != null && tcl.Count > 0) { tc = tcl[0]; } return tc; } public int CreateFreezingColumns(int userId, List list) { int result = 0; if (list.Count() > 0) { SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); db.Deleteable().Where(s => s.FUserID == userId).ExecuteCommand(); result = db.Insertable(list).ExecuteCommand(); } return result; } public int UpdateFreezingColumns(TFS_FreezingColumns fc) { int result = 0; SqlSugarClient db = AppSettingsHelper.GetSqlSugar(); result = db.Updateable(fc).IgnoreColumns(true).ExecuteCommand(); return result; } } }