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;
}
}
}