班组级 选人 只出现班组的人

This commit is contained in:
wyw 2024-07-31 10:46:19 +08:00
parent 03033d355b
commit 29eab54b35

View File

@ -30,6 +30,259 @@ namespace APT.BS.WebApi.Controllers.Api
{ {
UserService = userService; UserService = userService;
} }
///// <summary>
///// 正常使用的用户
///// 重写 api/FM/User/OrderPaged
///// 目前最多只支持4个生产单元有重叠的
///// </summary>
///// <param name="pageFilter"></param>
///// <returns></returns>
//[HttpPost, Route("OrderPagedUseful")]
//public PagedActionResult<T_FM_USER> OrderPagedUseful([FromBody] KeywordPageFilter pageFilter)
//{
// if (string.IsNullOrEmpty(pageFilter.Parameter1))
// {
// List<int> listMineType = new List<int>();
// Guid DEPARTMENT_ID_WORKSHOP = Guid.Empty;
// Guid DEPARTMENT_ID = Guid.Empty;
// if (pageFilter.FilterGroup.Rules.Count == 2)
// {
// foreach (var item in pageFilter.FilterGroup.Rules)
// {
// if (item.Field == "DEPARTMENT_ID_WORKSHOP")
// {
// DEPARTMENT_ID_WORKSHOP = new Guid(item.Value.ToString());
// }
// else if (item.Field == "DEPARTMENT_ID")
// {
// DEPARTMENT_ID = new Guid(item.Value.ToString());
// }
// }
// }
// bool isMintype = false;//是否 区分生产单元
// if (pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Any())
// {
// var groups = pageFilter.FilterGroup.Groups.ToList();
// string MineType = string.Empty;
// if (groups[0].Rules != null && groups[0].Rules.Any())
// {
// FilterRule ruleType = null;
// foreach (var rule in groups[0].Rules)
// {
// if (rule.Field == "MineType")
// {
// ruleType = rule;
// MineType = rule.Value.ToString();
// isMintype = true;
// break;
// }
// }
// if (!string.IsNullOrEmpty(MineType))
// {
// listMineType = UserService.GetMineType(MineType);
// if (ruleType != null)
// {
// groups[0].Rules.Remove(ruleType);
// pageFilter.FilterGroup.Groups = groups;
// }
// }
// }
// }
// if (isMintype)
// {
// return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
// {
// Expression<Func<T_FM_USER, bool>> expression = e => e.ENABLE_STATUS == 0 && !e.CODE.StartsWith("admin");// && e.CODE != "admin";
// //linq 运行不通过 修改为查找后内存中过滤
// //expression = expression.And(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => listMineType.Contains(x.Nav_Enums.VALUE)) != null));
// //PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(expression, pageFilter, "Nav_ProdutionUnit.Nav_Enums");
// //result.Data = orderPageEntities.Data;
// //result.TotalCount = orderPageEntities.TotalCount;
// //var resultListUser = GetEntities<T_FM_USER>(expression, pageFilter, "Nav_ProdutionUnit.Nav_Enums");//这样不行
// pageFilter.SelectField.Add("Nav_ProdutionUnit.Nav_Enums");
// var resultListUser = GetEntities<T_FM_USER>(expression, pageFilter);
// if (resultListUser != null && resultListUser.Any())
// {
// IEnumerable<T_FM_USER> resultListUserFilter = null;
// if (listMineType.Count > 0)
// {
// if (listMineType.Count == 1)
// {
// resultListUserFilter = resultListUser.Where(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => x.Nav_Enums != null && listMineType[0] == x.Nav_Enums.VALUE).Any()));// != null
// }
// else
// {
// resultListUserFilter = resultListUser.Where(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => x.Nav_Enums != null && listMineType.Contains(x.Nav_Enums.VALUE)) != null));
// }
// }
// if (resultListUserFilter != null && resultListUserFilter.Any())
// {
// result.Data = resultListUserFilter.Skip((pageFilter.PageIndex - 1) * pageFilter.Limit).Take(pageFilter.Limit);
// result.TotalCount = resultListUserFilter.Count();
// }
// }
// if (result.Data == null || !result.Data.Any())
// {
// result.Data = new List<T_FM_USER>();
// result.TotalCount = 0;
// }
// });
// }
// else if (DEPARTMENT_ID_WORKSHOP != Guid.Empty && DEPARTMENT_ID != Guid.Empty)
// {
// pageFilter.FilterGroup.Rules.Clear();
// return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
// {
// PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(e => e.ENABLE_STATUS == 0 && e.CODE != "admin" && e.DEPARTMENT_ID == DEPARTMENT_ID_WORKSHOP || (e.Nav_Department.PARENT_ID.HasValue && e.Nav_Department.PARENT_ID == DEPARTMENT_ID_WORKSHOP), pageFilter, new string[] { "Nav_Department" });
// result.Data = orderPageEntities.Data;
// result.TotalCount = orderPageEntities.TotalCount;
// });
// }
// else
// {
// return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.CODE != "admin", pageFilter);
// }
// #region 旧
// //List<string> listMineType = new List<string>();
// //List<string> listMineTypeTemp = new List<string>();
// //Guid DEPARTMENT_ID_WORKSHOP = Guid.Empty;
// //Guid DEPARTMENT_ID = Guid.Empty;
// //if (pageFilter.FilterGroup.Rules.Count == 2)
// //{
// // foreach (var item in pageFilter.FilterGroup.Rules)
// // {
// // if (item.Field == "DEPARTMENT_ID_WORKSHOP")
// // {
// // DEPARTMENT_ID_WORKSHOP = new Guid(item.Value.ToString());
// // }
// // else if (item.Field == "DEPARTMENT_ID")
// // {
// // DEPARTMENT_ID = new Guid(item.Value.ToString());
// // }
// // }
// //}
// //if (pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Any())
// //{
// // var groups = pageFilter.FilterGroup.Groups.ToList();
// // string MineType = string.Empty;
// // if (groups[0].Rules != null && groups[0].Rules.Any())
// // {
// // FilterRule ruleType = null;
// // foreach (var rule in groups[0].Rules)
// // {
// // if (rule.Field == "MineType")
// // {
// // ruleType = rule;
// // MineType = rule.Value.ToString();
// // break;
// // }
// // }
// // if (!string.IsNullOrEmpty(MineType))
// // {
// // if (ruleType != null)
// // {
// // groups[0].Rules.Remove(ruleType);
// // pageFilter.FilterGroup.Groups = groups;
// // }
// // if (MineType.IndexOf(",") > -1)
// // {
// // listMineTypeTemp = MineType.Split(',', StringSplitOptions.RemoveEmptyEntries).Distinct().ToList();
// // listMineType.AddRange(listMineTypeTemp);
// // }
// // string strTemp = string.Empty;
// // if (!listMineType.Contains(MineType))
// // {
// // listMineType.Add(MineType);
// // if (listMineTypeTemp.Count > 2)//多个生产单元
// // {
// // for (int i = 0; i < listMineTypeTemp.Count; i++)
// // {
// // for (int j = 0; j < listMineTypeTemp.Count; j++)
// // {
// // strTemp = listMineTypeTemp[i] + "," + listMineTypeTemp[j];
// // if (!listMineType.Contains(strTemp))
// // {
// // listMineType.Add(strTemp);
// // }
// // }
// // }
// // }
// // if (listMineTypeTemp.Count > 3)
// // {
// // for (int i = 0; i < listMineTypeTemp.Count; i++)
// // {
// // for (int j = 0; j < listMineTypeTemp.Count; j++)
// // {
// // for (int k = 0; k < listMineTypeTemp.Count; k++)
// // {
// // strTemp = listMineTypeTemp[i] + "," + listMineTypeTemp[j] + "," + listMineTypeTemp[k];
// // if (!listMineType.Contains(strTemp))
// // {
// // listMineType.Add(strTemp);
// // }
// // }
// // }
// // }
// // }
// // }
// // }
// // }
// //}
// //if (listMineType.Count > 0)
// //{
// // return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
// // {
// // Expression<Func<T_FM_USER, bool>> expression = e => e.ENABLE_STATUS == 0 && e.CODE != "admin";
// // if (listMineType.Count == 1)
// // {
// // if (!string.IsNullOrEmpty(listMineType[0]))
// // {
// // expression = expression.And(e => e.MineType != null && e.MineType.Contains(listMineType[0]));
// // }
// // }
// // else
// // {
// // expression = expression.And(e => e.MineType != null && listMineType.Contains(e.MineType));
// // }
// // PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(expression, pageFilter, null);
// // result.Data = orderPageEntities.Data;
// // result.TotalCount = orderPageEntities.TotalCount;
// // });
// //}
// //else if (DEPARTMENT_ID_WORKSHOP != Guid.Empty && DEPARTMENT_ID != Guid.Empty)
// //{
// // pageFilter.FilterGroup.Rules.Clear();
// // return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
// // {
// // PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(e => e.ENABLE_STATUS == 0 && e.CODE != "admin" && e.DEPARTMENT_ID == DEPARTMENT_ID_WORKSHOP || (e.Nav_Department.PARENT_ID.HasValue && e.Nav_Department.PARENT_ID == DEPARTMENT_ID_WORKSHOP), pageFilter, new string[] { "Nav_Department" });
// // result.Data = orderPageEntities.Data;
// // result.TotalCount = orderPageEntities.TotalCount;
// // });
// //}
// //else
// //{
// // return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.CODE != "admin", pageFilter);
// //}
// #endregion
// }
// else
// {
// return WitOrderPaged(t => t.Nav_BelongRoles.Any(i => i.Nav_BelongRole.NAME.Contains(pageFilter.Parameter1)), pageFilter);
// }
//}
/// <summary> /// <summary>
/// 正常使用的用户 /// 正常使用的用户
/// 重写 api/FM/User/OrderPaged /// 重写 api/FM/User/OrderPaged
@ -45,6 +298,8 @@ namespace APT.BS.WebApi.Controllers.Api
List<int> listMineType = new List<int>(); List<int> listMineType = new List<int>();
Guid DEPARTMENT_ID_WORKSHOP = Guid.Empty; Guid DEPARTMENT_ID_WORKSHOP = Guid.Empty;
Guid DEPARTMENT_ID = Guid.Empty; Guid DEPARTMENT_ID = Guid.Empty;
bool isMintype = false;//是否 区分生产单元
string MineType = string.Empty;
if (pageFilter.FilterGroup.Rules.Count == 2) if (pageFilter.FilterGroup.Rules.Count == 2)
{ {
foreach (var item in pageFilter.FilterGroup.Rules) foreach (var item in pageFilter.FilterGroup.Rules)
@ -59,11 +314,27 @@ namespace APT.BS.WebApi.Controllers.Api
} }
} }
} }
bool isMintype = false;//是否 区分生产单元 else if (pageFilter.FilterGroup.Rules.Count == 1)
{
foreach (var item in pageFilter.FilterGroup.Rules)
{
if (item.Field == "MineType")
{
isMintype = true;
MineType = item.Value.ToString();
pageFilter.FilterGroup.Rules.Clear();
break;
}
}
if (!string.IsNullOrEmpty(MineType))
{
listMineType = UserService.GetMineType(MineType);
}
}
if (pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Any()) if (pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Any())
{ {
var groups = pageFilter.FilterGroup.Groups.ToList(); var groups = pageFilter.FilterGroup.Groups.ToList();
string MineType = string.Empty;
if (groups[0].Rules != null && groups[0].Rules.Any()) if (groups[0].Rules != null && groups[0].Rules.Any())
{ {
FilterRule ruleType = null; FilterRule ruleType = null;
@ -89,7 +360,39 @@ namespace APT.BS.WebApi.Controllers.Api
} }
} }
} }
if (isMintype)
var LoginDepID = APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID;
T_FM_DEPARTMENT dep = null;
if (LoginDepID.HasValue)
{
dep = GetEntity<T_FM_DEPARTMENT>(LoginDepID.Value);
}
if (DataHelper.GetRequestType(HttpContext.Request.Headers) == 2 && LoginDepID.HasValue && dep != null && (dep.DEPARTMENT_TYPE == 1 || dep.DEPARTMENT_TYPE == 2))
{
//班组或者车间 向下取值 否则取全部
//FMDepartmentType 部门=0, 车间=1, 班组=2, 公司=3
if (dep.DEPARTMENT_TYPE == 2)
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
else
{
var listDepID = GetEntities<T_FM_DEPARTMENT>(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == LoginDepID.Value, null).Select(e => e.ID);
if (listDepID != null && listDepID.Any())
{
var ListDepID = listDepID.ToList();
ListDepID.Add(LoginDepID.Value);
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && ListDepID.Contains(e.DEPARTMENT_ID.Value) && e.CODE != "admin", pageFilter);
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
}
}
else if (isMintype)
{ {
return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result) return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
{ {
@ -102,6 +405,12 @@ namespace APT.BS.WebApi.Controllers.Api
//var resultListUser = GetEntities<T_FM_USER>(expression, pageFilter, "Nav_ProdutionUnit.Nav_Enums");//这样不行 //var resultListUser = GetEntities<T_FM_USER>(expression, pageFilter, "Nav_ProdutionUnit.Nav_Enums");//这样不行
pageFilter.SelectField.Add("Nav_ProdutionUnit.Nav_Enums"); pageFilter.SelectField.Add("Nav_ProdutionUnit.Nav_Enums");
if (pageFilter.SelectField.Count() == 1)
{
pageFilter.SelectField.Add("ID");
pageFilter.SelectField.Add("NAME");
pageFilter.SelectField.Add("CODE");
}
var resultListUser = GetEntities<T_FM_USER>(expression, pageFilter); var resultListUser = GetEntities<T_FM_USER>(expression, pageFilter);
if (resultListUser != null && resultListUser.Any()) if (resultListUser != null && resultListUser.Any())
@ -109,14 +418,14 @@ namespace APT.BS.WebApi.Controllers.Api
IEnumerable<T_FM_USER> resultListUserFilter = null; IEnumerable<T_FM_USER> resultListUserFilter = null;
if (listMineType.Count > 0) if (listMineType.Count > 0)
{ {
if (listMineType.Count == 1) //if (listMineType.Count == 1)
{ //{
resultListUserFilter = resultListUser.Where(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => x.Nav_Enums != null && listMineType[0] == x.Nav_Enums.VALUE).Any()));// != null // resultListUserFilter = resultListUser.Where(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => x.Nav_Enums != null && listMineType[0] == x.Nav_Enums.VALUE).Any()));// != null
} //}
else //else
{ //{
resultListUserFilter = resultListUser.Where(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => x.Nav_Enums != null && listMineType.Contains(x.Nav_Enums.VALUE)) != null)); resultListUserFilter = resultListUser.Where(e => e.Nav_ProdutionUnit == null || (e.Nav_ProdutionUnit.Any() && e.Nav_ProdutionUnit.Where(x => x.Nav_Enums != null && listMineType.Contains(x.Nav_Enums.VALUE)) != null));
} //}
} }
if (resultListUserFilter != null && resultListUserFilter.Any()) if (resultListUserFilter != null && resultListUserFilter.Any())
@ -132,9 +441,7 @@ namespace APT.BS.WebApi.Controllers.Api
result.TotalCount = 0; result.TotalCount = 0;
} }
}); });
} }
else if (DEPARTMENT_ID_WORKSHOP != Guid.Empty && DEPARTMENT_ID != Guid.Empty) else if (DEPARTMENT_ID_WORKSHOP != Guid.Empty && DEPARTMENT_ID != Guid.Empty)
{ {
pageFilter.FilterGroup.Rules.Clear(); pageFilter.FilterGroup.Rules.Clear();
@ -147,7 +454,42 @@ namespace APT.BS.WebApi.Controllers.Api
} }
else else
{ {
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.CODE != "admin", pageFilter); if (DataHelper.GetRequestType(HttpContext.Request.Headers) == 2 && LoginDepID.HasValue)
{
//班组或者车间 向下取值 否则取全部
dep = GetEntity<T_FM_DEPARTMENT>(LoginDepID.Value);
if (dep != null && (dep.DEPARTMENT_TYPE == 1 || dep.DEPARTMENT_TYPE == 2))
{
//FMDepartmentType 部门=0, 车间=1, 班组=2, 公司=3
if (dep.DEPARTMENT_TYPE == 2)
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
else
{
var listDepID = GetEntities<T_FM_DEPARTMENT>(e => e.PARENT_ID.HasValue && e.PARENT_ID.Value == LoginDepID.Value, null).Select(e => e.ID);
if (listDepID != null && listDepID.Any())
{
var ListDepID = listDepID.ToList();
ListDepID.Add(LoginDepID.Value);
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && ListDepID.Contains(e.DEPARTMENT_ID.Value) && e.CODE != "admin", pageFilter);
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
}
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.CODE != "admin", pageFilter);
}
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.CODE != "admin", pageFilter);
}
} }
#region #region