142 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
using System.Linq.Expressions;
 | 
						|
using APT.BaseData.Domain.Entities;
 | 
						|
using APT.BaseData.Domain.Entities.FM;
 | 
						|
using APT.BaseData.Domain.Enums;
 | 
						|
using APT.BaseData.Domain.IServices.FM;
 | 
						|
using APT.Infrastructure.Core;
 | 
						|
using APT.MS.Domain.Entities.LR;
 | 
						|
using APT.MS.Domain.Entities.SE;
 | 
						|
using APT.MS.Domain.Entities.WB;
 | 
						|
using APT.MS.Domain.Enums;
 | 
						|
using APT.Utility;
 | 
						|
using Microsoft.AspNetCore.Mvc;
 | 
						|
using NPOI.SS.Formula.Functions;
 | 
						|
 | 
						|
namespace APT.SC.WebApi.Controllers.Api.WB
 | 
						|
{
 | 
						|
    [Route("api/WB/WBUser")]
 | 
						|
    public class WBUserController : AuthorizeApiController<T_FM_USER>
 | 
						|
    {
 | 
						|
        /// <summary>
 | 
						|
        /// 查询
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="pageFilter"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        [HttpPost, Route("WBOrderPaged")]
 | 
						|
        public PagedActionResult<T_FM_USER> WBOrderPaged([FromBody] KeywordPageFilter pageFilter)
 | 
						|
        {
 | 
						|
            //pageFilter.Include = null;
 | 
						|
            //var result = WitOrderPaged(t=>t.PROJECT_ID != null, pageFilter);
 | 
						|
            //var projectIDs = result.Data.Select(t => t.PROJECT_ID);
 | 
						|
            //var projects = GetEntities<T_WB_PROJECT_INPUT>(t => projectIDs.Contains(t.ID),new BaseFilter(pageFilter.GetOrgId()));
 | 
						|
            //foreach(var item in result.Data)
 | 
						|
            //{
 | 
						|
            //    var project = projects.FirstOrDefault(t => t.ID == item.PROJECT_ID);
 | 
						|
            //    if (project != null)
 | 
						|
            //    {
 | 
						|
            //        item.TEAMNAME = project.NAME;
 | 
						|
            //        item.REMARK = project.UNIT_NAME;
 | 
						|
            //    }
 | 
						|
            //}
 | 
						|
            //return result;
 | 
						|
 | 
						|
            pageFilter.Include = null;
 | 
						|
            bool isScoreLimit = true;//默认过滤
 | 
						|
            Guid? TYPE_ID = null; //工作类别
 | 
						|
            if (!string.IsNullOrEmpty(pageFilter.Parameter6))
 | 
						|
            {
 | 
						|
                isScoreLimit = false;
 | 
						|
                pageFilter.Parameter6 = "";
 | 
						|
            }
 | 
						|
            if (pageFilter.FilterGroup != null && pageFilter.FilterGroup.Groups != null && pageFilter.FilterGroup.Groups.Count() > 0)
 | 
						|
            {
 | 
						|
                List<FilterGroup> fig = pageFilter.FilterGroup.Groups.ToList();//表单属性配置
 | 
						|
                if (fig[0].Rules != null && fig[0].Rules.Any())
 | 
						|
                {
 | 
						|
                    FilterRule ruleRemove = null;
 | 
						|
                    foreach (var item in fig[0].Rules)
 | 
						|
                    {
 | 
						|
                        if (item.Field == "Parameter6")
 | 
						|
                        {
 | 
						|
                            if (item.Value.ToString() == "0")
 | 
						|
                            {
 | 
						|
                                isScoreLimit = false;
 | 
						|
                            }
 | 
						|
                            ruleRemove = item;
 | 
						|
                            break;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    if (ruleRemove != null)
 | 
						|
                    {
 | 
						|
                        fig[0].Rules.Remove(ruleRemove);
 | 
						|
                        pageFilter.FilterGroup.Groups = fig;
 | 
						|
                    }
 | 
						|
 | 
						|
 | 
						|
                    foreach (var item in fig[0].Rules)
 | 
						|
                    {
 | 
						|
                        if (item.Field == "TYPE_ID")
 | 
						|
                        {
 | 
						|
                            try
 | 
						|
                            {
 | 
						|
                                TYPE_ID = new Guid(item.Value.ToString());
 | 
						|
                            }
 | 
						|
                            catch { }
 | 
						|
                            ruleRemove = item;
 | 
						|
                            break;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    if (ruleRemove != null)
 | 
						|
                    {
 | 
						|
                        fig[0].Rules.Remove(ruleRemove);
 | 
						|
                        pageFilter.FilterGroup.Groups = fig;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            IEnumerable<T_WB_REGISTER_2> listReg2 = null;
 | 
						|
            if (isScoreLimit)
 | 
						|
            {
 | 
						|
                Expression<Func<T_WB_REGISTER_2, bool>> expressionReg2 = e => e.SCORE > 0 && e.USERID.HasValue && !e.IS_DELETED;
 | 
						|
                listReg2 = GetEntities(expressionReg2, null, "Nav_JobTypes");
 | 
						|
                if (TYPE_ID != null && TYPE_ID != Guid.Empty)
 | 
						|
                {
 | 
						|
                    listReg2 = listReg2.Where(e => e.Nav_JobTypes != null && e.Nav_JobTypes.FirstOrDefault(t => t.JOBTYPE_ID == TYPE_ID) != null);
 | 
						|
                }
 | 
						|
            }
 | 
						|
            Expression<Func<T_FM_USER, bool>> expression = t => t.PROJECT_ID != null;
 | 
						|
            if (isScoreLimit)
 | 
						|
            {
 | 
						|
                if (listReg2 != null && listReg2.Any())
 | 
						|
                {
 | 
						|
                    var listUserID = listReg2.Select(e => e.USERID.Value);
 | 
						|
                    expression = expression.And(e => listUserID.Contains(e.ID));
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    expression = expression.And(e => false);//需要限制 但是大家都没考试
 | 
						|
                }
 | 
						|
            }
 | 
						|
            var result = WitOrderPaged(expression, pageFilter);
 | 
						|
            if (result != null && result.Data != null && result.Data.Any())
 | 
						|
            {
 | 
						|
                var projectIDs = result.Data.Select(t => t.PROJECT_ID);
 | 
						|
                var projects = GetEntities<T_WB_PROJECT_INPUT>(t => projectIDs.Contains(t.ID), new BaseFilter(pageFilter.GetOrgId()));
 | 
						|
                foreach (var item in result.Data)
 | 
						|
                {
 | 
						|
                    var project = projects.FirstOrDefault(t => t.ID == item.PROJECT_ID);
 | 
						|
                    if (project != null)
 | 
						|
                    {
 | 
						|
                        item.TEAMNAME = project.NAME;
 | 
						|
                        item.REMARK = project.UNIT_NAME;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            return result;
 | 
						|
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |