mh_jy_safe/APT.MicroApi/APT.FM.WebApi/Controllers/FMUserController.cs

685 lines
35 KiB
C#
Raw Normal View History

2025-08-25 09:56:57 +08:00
using APT.BaseData.Domain.ApiModel.PF;
using APT.BaseData.Domain.Entities;
using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Enums;
using APT.BaseData.Domain.IServices;
using APT.BaseData.Domain.IServices.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.BS;
using APT.MS.Domain.Entities.HM;
using APT.MS.Domain.Enums;
using APT.Utility;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
namespace APT.BS.WebApi.Controllers.Api
{
/// <summary>
///
/// </summary>
[Route("api/FM/FMUser")]
public partial class FMUserController : AuthorizeApiController<T_FM_USER>
{
IFMUserService UserService { get; set; }
public FMUserController(IFMUserService 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;
bool isMintype = false;//是否 区分生产单元
string MineType = string.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());
}
}
}
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())
{
var groups = pageFilter.FilterGroup.Groups.ToList();
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;
}
}
}
}
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.PROJECT_ID.HasValue && 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.PROJECT_ID.HasValue && e.DEPARTMENT_ID.HasValue && ListDepID.Contains(e.DEPARTMENT_ID.Value) && e.CODE != "admin", pageFilter);
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && 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)
{
Expression<Func<T_FM_USER, bool>> expression = e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && !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");
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);
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.PROJECT_ID.HasValue && 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
{
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.PROJECT_ID.HasValue && 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.PROJECT_ID.HasValue && e.DEPARTMENT_ID.HasValue && ListDepID.Contains(e.DEPARTMENT_ID.Value) && e.CODE != "admin", pageFilter);
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && e.DEPARTMENT_ID.HasValue && e.DEPARTMENT_ID.Value == LoginDepID.Value && e.CODE != "admin", pageFilter);
}
}
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && e.CODE != "admin", pageFilter);
}
}
else
{
return WitOrderPaged(e => e.ENABLE_STATUS == 0 && !e.PROJECT_ID.HasValue && 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.PROJECT_ID.HasValue && t.Nav_BelongRoles.Any(i => i.Nav_BelongRole.NAME.Contains(pageFilter.Parameter1)), pageFilter);
}
}
/// <summary>
/// 正常使用的用户 包含外包
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("OrderPagedUsefulAll")]
public PagedActionResult<T_FM_USER> OrderPagedUsefulAll([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;
bool isMintype = false;//是否 区分生产单元
string MineType = string.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());
}
}
}
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())
{
var groups = pageFilter.FilterGroup.Groups.ToList();
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;
}
}
}
}
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)
{
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");
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);
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
{
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);
}
}
}
else
{
return WitOrderPaged(t => t.Nav_BelongRoles.Any(i => i.Nav_BelongRole.NAME.Contains(pageFilter.Parameter1)), pageFilter);
}
}
/// <summary>
/// 正常使用的用户
/// 重写 api/FM/User/OrderPaged
/// 目前最多只支持4个生产单元有重叠的
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("OrderPagedUsefulWB")]
public PagedActionResult<T_FM_USER> OrderPagedUsefulWB([FromBody] KeywordPageFilter pageFilter)
{
return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
{
Expression<Func<T_FM_USER, bool>> expression = e => e.ENABLE_STATUS == 0;
if (pageFilter.Parameter1 == "1")
{
expression = expression.And(e => e.PROJECT_ID.HasValue);
}
else if (pageFilter.Parameter1 == "2")
{
if (APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue)
{
var login = GetEntity<T_FM_USER>(APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value);
if (login.PRINTER_ID.HasValue)
{
expression = expression.And(e => e.PROJECT_ID.HasValue && e.PROJECT_ID.Value == login.PROJECT_ID);
}
}
}
PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(expression, pageFilter, null);
result.Data = orderPageEntities.Data;
result.TotalCount = orderPageEntities.TotalCount;
});
}
/// <summary>
/// 人员选择 外包人员 选择只有本外包单位人员信息 否则可以选到所有人信息
/// </summary>
/// <param name="pageFilter"></param>
/// <returns></returns>
[HttpPost, Route("OrderPagedUsefulProject")]
public PagedActionResult<T_FM_USER> OrderPagedUsefulProject([FromBody] KeywordPageFilter pageFilter)
{
return SafeGetPagedData(delegate (PagedActionResult<T_FM_USER> result)
{
Expression<Func<T_FM_USER, bool>> expression = e => e.ENABLE_STATUS == 0;
var login = GetEntity<T_FM_USER>(APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value);
if (login.PROJECT_ID.HasValue)
{
expression = expression.And(e => e.PROJECT_ID.HasValue && e.PROJECT_ID.Value == login.PROJECT_ID);
}
PagedActionResult<T_FM_USER> orderPageEntities = GetOrderPageEntities<T_FM_USER>(expression, pageFilter, null);
result.Data = orderPageEntities.Data;
result.TotalCount = orderPageEntities.TotalCount;
});
}
/// <summary>
/// 递归获取部门以及子部门的所有用户
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
[HttpPost, Route("GetDepUsersRecursion")]
public JsonActionResult<IEnumerable<T_FM_USER>> GetDepUsersRecursion([FromBody] KeywordFilter filter)
{
return SafeExecute<IEnumerable<T_FM_USER>>(() =>
{
var baseFilter = new BaseFilter(filter.GetOrgId());
baseFilter.SelectField = new string[] { "ID", "PARENT_ID" };
var departments = this.GetEntities<T_FM_DEPARTMENT>(i => i.ENABLE_STATUS == (int)FMEnableStatusEnum., baseFilter);
var selectDepatmentIds = new List<Guid>();
if (!string.IsNullOrEmpty(filter.Keyword))
{
var parentid = Guid.Parse(filter.Keyword);
GetRecursionDepIds(departments, selectDepatmentIds, parentid);
return this.GetEntities<T_FM_USER>(i => selectDepatmentIds.Contains(i.DEPARTMENT_ID.Value), filter);
}
else
{
return this.GetEntities<T_FM_USER>(null, filter);
}
});
}
private static void GetRecursionDepIds(IEnumerable<T_FM_DEPARTMENT> departments, List<Guid> selectDepatmentIds, Guid parentid)
{
selectDepatmentIds.Add(parentid);
if (departments.Any(i => i.PARENT_ID == parentid))
{
var childIds = departments.Where(i => i.PARENT_ID == parentid).Select(i => i.ID);
foreach (var childId in childIds)
{
GetRecursionDepIds(departments, selectDepatmentIds, childId);
}
}
}
}
}