mh_jy_safe/APT.MicroApi/APT.SC.WebApi/Controllers/Api/WBController/5WBUserController.cs
2025-08-25 09:56:57 +08:00

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;
}
}
}