You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

525 lines
22 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using FactorySystemCommon;
using FactorySystemModel.SqlSugarModel;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using FactorySystemModel.EnumModel;
namespace FactorySystemBll
{
public class UserBll
{
/// <summary>
/// 获取配置信息
/// </summary>
public object GetBasicList(int type)
{
return AppSettingsHelper.GetSqlSugar().Queryable<TBasicCode>().Where(s => s.FType == type && s.FState == 1).ToList();
}
/// <summary>
/// 获取角色集合
/// </summary>
/// <returns></returns>
public object GetRoleList()
{
return AppSettingsHelper.GetSqlSugar().Queryable<TRole>().Where(s => s.FDeleted != (int)Constant.DeleteCode.).ToList();
}
/// <summary>
/// 获取权限配置集合
/// </summary>
/// <param name="userid"></param>
/// <returns></returns>
public List<FPower> GetPower(string userid)
{
return AppSettingsHelper.GetSqlSugar().Queryable<FPower>().Where("FUserID="+ userid).ToList();
}
/// <summary>
/// 获取菜单权限
/// </summary>
public object GetMenuList(int userId, string roleIds, bool returnAll = false)
{
int delete = (int)Constant.DeleteCode.;
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
List<string> roles = new List<string>();
if (string.IsNullOrEmpty(roleIds))
{
TUser userInfo = db.Queryable<TUser>().Where(s => s.FID == userId && s.FDeleted != delete).First();
roleIds = userInfo.FRoleID.ToString();
}
roles = roleIds.Split(',').ToList();
List<TFunction> menuList = db.Queryable<TFunction>().Where(s => s.FDeleted != delete).OrderBy(s => s.FOrder).ToList();
List<int> hasIds = db.Queryable<TRole, TRole_Right>((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();
}
}
/// <summary>
/// 获取菜单权限
/// </summary>
public object GetMenuList(int userId, bool returnAll = false)
{
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
int delete = (int)Constant.DeleteCode.;
List<FPower> powers = db.Queryable<FPower>().Where(s => userId.ToString().Equals(s.FUserID)).ToList();
List<string> roles = new List<string>();
if (powers != null && powers.Count > 0)
{
powers.ForEach(power =>
{
roles.Add(power.FRole);
});
}
List<TFunction> menuList = db.Queryable<TFunction>().Where(s => s.FDeleted != delete).OrderBy(s => s.FOrder).ToList();
List<int> hasIds = db.Queryable<TRole, TRole_Right>((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();
}
}
/// <summary>
/// 获取其他权限
/// </summary>
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<string> roles = new List<string>();
if (null == roleIds || string.IsNullOrEmpty(roleIds.ToString()))
{
if (teamId!=null)
{
//TUser userInfo = db.Queryable<TUser>().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<TFS_FTeamwork>("FID=" + teamId.ToString());
factoryID = fTeamwork.FCreateFactoryID;
break;
case 1:
TFS_FMaterialTeamwork FMaterialTeamwork = BaseBll.GetTempModel<TFS_FMaterialTeamwork>("FID=" + teamId.ToString());
factoryID = FMaterialTeamwork.FCreateFactoryID;
break;
case 2:
TFS_HalfMaterialFTeamwork halfMaterialFTeamwork = BaseBll.GetTempModel<TFS_HalfMaterialFTeamwork>("FID=" + teamId.ToString());
factoryID = halfMaterialFTeamwork.FCreateFactoryID;
break;
}
List<FPower> fPower = db.Queryable<FPower>().Where(s => s.FUserID == userId.ToString() && s.FFactoryID == factoryID.ToString()).ToList();
roleIds = string.Join(",", fPower.Select(m => m.FRole).Distinct().ToList());
}
else
{
List<FPower> fPower = db.Queryable<FPower>().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<TBasicCode> resultList = null;
List<int> hasIds = null;
dynamic result = null;
if (roleType == 84)
{
resultList = db.Queryable<TBasicCode>().Where(s => (s.FType == 44 && s.FState == 1)).OrderBy(s => s.FOrder).ToList();
hasIds = db.Queryable<TRole, TRole_Right>((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<TBasicCode>().Where(s => (s.FType == 40 && s.FState == 1)).OrderBy(s => s.FOrder).ToList();
hasIds = db.Queryable<TRole, TRole_Right>((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<TBasicCode>().Where(s => s.FType == roleType && s.FState == 1).OrderBy(s => s.FOrder).ToList();
hasIds = db.Queryable<TRole, TRole_Right>((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<TBasicCode> resultList = db.Queryable<TBasicCode>().Where(s => s.FType == roleType && s.FState == 1).OrderBy(s => s.FOrder).ToList();
// List<int> hasIds = db.Queryable<TRole, TRole_Right>((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();
//}
}
/// <summary>
/// 保存菜单集合
/// </summary>
public int SaveRolePower(string userId, int roleId, List<string> menuIds, List<string> viewIds, List<string> termIds, List<string> editIds, List<string> editIds2)
{
int result = 1;
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
db.BeginTran();
try
{
if (menuIds != null)
{
result += db.Deleteable<TRole_Right>().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.
&& !menuIds.Contains(s.FFunctionID.ToString())).ExecuteCommand();
}
if (viewIds != null)
{
result += db.Deleteable<TRole_Right>().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.
&& !viewIds.Contains(s.FFunctionID.ToString())).ExecuteCommand();
}
if (termIds != null)
{
result += db.Deleteable<TRole_Right>().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.
&& !termIds.Contains(s.FFunctionID.ToString())).ExecuteCommand();
}
if (editIds != null)
{
result += db.Deleteable<TRole_Right>().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.
&& !editIds.Contains(s.FFunctionID.ToString())).ExecuteCommand();
}
if (editIds2 != null)
{
result += db.Deleteable<TRole_Right>().Where(s => s.FRoleID == roleId && s.FType == (int)Constant.RoleType.
&& !editIds.Contains(s.FFunctionID.ToString())).ExecuteCommand();
}
List<TRole_Right> inList = new List<TRole_Right>();
List<TRole_Right> hasRoles = db.Queryable<TRole_Right>().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<FPower> list)
{
int result = 0;
if (list.Count() > 0)
{
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
FPower power = list.LastOrDefault();
db.Deleteable<FPower>().Where(s => s.FUserID == power.FUserID).ExecuteCommand();
result = db.Insertable(list).ExecuteCommand();
}
return result;
}
public List<FPower> GetFPowerList()
{
return AppSettingsHelper.GetSqlSugar().Queryable<FPower>().ToList();
}
/// <summary>
/// 获取首页信息
/// </summary>
public object GetHomeTopCount(int userId)
{
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
List<int> topCount = new List<int>();
topCount.Add(db.Queryable<TFS_Task>().Where(s => s.FState < 2).Where(string.Format("','+FUserID+',' like '%,{0},%'", userId)).Count());
topCount.Add(db.Queryable<TFS_Task>().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<TFS_FTeamwork>().Count());
topCount.Add(db.Queryable<TFS_FTeamwork>().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<TRole_Right> CheckPowerIds(List<TRole_Right> hasRoles, List<string> inIds, int roleType, string userId, int roleId)
{
List<int> 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<TRole_Right>();
}
#endregion
/// <summary>
/// 获取冻结列
/// </summary>
public object GetFreezingColumns(int userId)
{
TFS_FreezingColumns tc = null;
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
List<TFS_FreezingColumns> tcl = db.Queryable<TFS_FreezingColumns>().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<TFS_FreezingColumns> list)
{
int result = 0;
if (list.Count() > 0)
{
SqlSugarClient db = AppSettingsHelper.GetSqlSugar();
db.Deleteable<TFS_FreezingColumns>().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;
}
}
}