327 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			327 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 
								 | 
							
								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;
							 | 
						|||
| 
								 | 
							
								                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>
							 | 
						|||
| 
								 | 
							
								        /// <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);
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |