diff --git a/APT.MicroApi/APT.FM.WebApi/Controllers/FMUserController.cs b/APT.MicroApi/APT.FM.WebApi/Controllers/FMUserController.cs
index 9009cde..431d633 100644
--- a/APT.MicroApi/APT.FM.WebApi/Controllers/FMUserController.cs
+++ b/APT.MicroApi/APT.FM.WebApi/Controllers/FMUserController.cs
@@ -30,6 +30,259 @@ namespace APT.BS.WebApi.Controllers.Api
{
UserService = userService;
}
+ /////
+ ///// 正常使用的用户
+ ///// 重写 api/FM/User/OrderPaged
+ ///// 目前最多只支持4个生产单元有重叠的
+ /////
+ /////
+ /////
+ //[HttpPost, Route("OrderPagedUseful")]
+ //public PagedActionResult OrderPagedUseful([FromBody] KeywordPageFilter pageFilter)
+ //{
+ // if (string.IsNullOrEmpty(pageFilter.Parameter1))
+ // {
+ // List listMineType = new List();
+ // 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 result)
+ // {
+ // Expression> 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 orderPageEntities = GetOrderPageEntities(expression, pageFilter, "Nav_ProdutionUnit.Nav_Enums");
+ // //result.Data = orderPageEntities.Data;
+ // //result.TotalCount = orderPageEntities.TotalCount;
+
+ // //var resultListUser = GetEntities(expression, pageFilter, "Nav_ProdutionUnit.Nav_Enums");//这样不行
+ // pageFilter.SelectField.Add("Nav_ProdutionUnit.Nav_Enums");
+ // var resultListUser = GetEntities(expression, pageFilter);
+
+ // if (resultListUser != null && resultListUser.Any())
+ // {
+ // IEnumerable 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();
+ // result.TotalCount = 0;
+ // }
+ // });
+
+ // }
+
+ // else if (DEPARTMENT_ID_WORKSHOP != Guid.Empty && DEPARTMENT_ID != Guid.Empty)
+ // {
+ // pageFilter.FilterGroup.Rules.Clear();
+ // return SafeGetPagedData(delegate (PagedActionResult result)
+ // {
+ // PagedActionResult orderPageEntities = GetOrderPageEntities(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 listMineType = new List();
+ // //List listMineTypeTemp = new List();
+ // //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 result)
+ // // {
+ // // Expression> 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 orderPageEntities = GetOrderPageEntities(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 result)
+ // // {
+ // // PagedActionResult orderPageEntities = GetOrderPageEntities(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);
+ // }
+ //}
+
///
/// 正常使用的用户
/// 重写 api/FM/User/OrderPaged
@@ -45,6 +298,8 @@ namespace APT.BS.WebApi.Controllers.Api
List listMineType = new List();
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)
@@ -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())
{
var groups = pageFilter.FilterGroup.Groups.ToList();
- string MineType = string.Empty;
if (groups[0].Rules != null && groups[0].Rules.Any())
{
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(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(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 result)
{
@@ -102,6 +405,12 @@ namespace APT.BS.WebApi.Controllers.Api
//var resultListUser = GetEntities(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(expression, pageFilter);
if (resultListUser != null && resultListUser.Any())
@@ -109,14 +418,14 @@ namespace APT.BS.WebApi.Controllers.Api
IEnumerable 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 (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())
@@ -132,9 +441,7 @@ namespace APT.BS.WebApi.Controllers.Api
result.TotalCount = 0;
}
});
-
}
-
else if (DEPARTMENT_ID_WORKSHOP != Guid.Empty && DEPARTMENT_ID != Guid.Empty)
{
pageFilter.FilterGroup.Rules.Clear();
@@ -147,7 +454,42 @@ namespace APT.BS.WebApi.Controllers.Api
}
else
{
- return WitOrderPaged(e => e.ENABLE_STATUS == 0 && e.CODE != "admin", pageFilter);
+ if (DataHelper.GetRequestType(HttpContext.Request.Headers) == 2 && LoginDepID.HasValue)
+ {
+ //班组或者车间 向下取值 否则取全部
+ dep = GetEntity(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(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 旧