From 29eab54b356ace6dbfe043f4f826328cf767228c Mon Sep 17 00:00:00 2001 From: wyw <571921741@qq.com> Date: Wed, 31 Jul 2024 10:46:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=8F=AD=E7=BB=84=E7=BA=A7=20=E9=80=89?= =?UTF-8?q?=E4=BA=BA=20=20=E5=8F=AA=E5=87=BA=E7=8E=B0=E7=8F=AD=E7=BB=84?= =?UTF-8?q?=E7=9A=84=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/FMUserController.cs | 370 +++++++++++++++++- 1 file changed, 356 insertions(+), 14 deletions(-) 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 旧