using System;
using SqlSugar;
using Infrastructure.Attribute;
using Infrastructure.Extensions;
using DOAN.Model;
using DOAN.Model.Dto;
using DOAN.Model.MES.group;
using DOAN.Model.MES.group.Dto;
using DOAN.Repository;
using DOAN.Service.group.IService;
using System.Linq;
namespace DOAN.Service.group
{
///
/// 人员Service业务层处理
///
[AppService(ServiceType = typeof(IGroupPersonService), ServiceLifetime = LifeTime.Transient)]
public class GroupPersonService : BaseService, IGroupPersonService
{
public List GetDescendants(List nodes, string rootId)
{
var descendants = new List();
void FindChildren(GroupPost node)
{
var children = nodes.Where(n => n.ParentId == node.Id).ToList();
foreach (var child in children)
{
descendants.Add(child);
FindChildren(child);
}
}
var rootNode = nodes.FirstOrDefault(n => n.Id == rootId);
if (rootNode != null)
{
FindChildren(rootNode);
}
return descendants;
}
///
/// 查询人员列表
///
///
///
public PagedInfo GetList(GroupPersonQueryDto parm)
{
string[] FkPostArray_all = null;
if (!string.IsNullOrEmpty(parm.FkPost))
{
string[] FkPostArray= FkPostArray = GetDescendants(Context.Queryable().ToList(), parm.FkPost)
.Select(it=>it.Id).ToArray();
FkPostArray_all = new string[] { parm.FkPost }.Concat(FkPostArray).ToArray();
}
var predicate = Expressionable.Create()
.AndIF(!string.IsNullOrEmpty(parm.WorkNum),it=>it.WorkNum.Contains(parm.WorkNum))
.AndIF(!string.IsNullOrEmpty(parm.Name),it=>it.Name.Contains(parm.Name))
.AndIF(parm.Status>=0,it=>it.Status==parm.Status)
.AndIF(FkPostArray_all!=null&&FkPostArray_all.Length>0, it=> FkPostArray_all.Contains(it.FkPost))
;
var query = Queryable()
.Where(predicate.ToExpression());
var response= Context.Queryable(query)
.LeftJoin((q,p)=>q.FkPost==p.Id)
.Select((q, p) => new GroupPersonDto { PostName=p.PostName },true)
.ToPage(parm);
return response;
}
///
/// 获取详情
///
///
///
public GroupPerson GetInfo(string Id)
{
var response = Queryable()
.Where(x => x.Id == Id)
.First();
return response;
}
///
/// 添加人员
///
///
///
public GroupPerson AddGroupPerson(GroupPerson model)
{
model.Id = XueHua;
return Context.Insertable(model).ExecuteReturnEntity();
}
///
/// 修改人员
///
///
///
public int UpdateGroupPerson(GroupPerson model)
{
//var response = Update(w => w.Id == model.Id, it => new GroupPerson()
//{
// FkPost = model.FkPost,
// WorkNum = model.WorkNum,
// Name = model.Name,
// EmploymentTime = model.EmploymentTime,
// DepartureTime = model.DepartureTime,
// Phone = model.Phone,
// Status = model.Status,
// CreatedBy = model.CreatedBy,
// CreatedTime = model.CreatedTime,
// UpdatedBy = model.UpdatedBy,
// UpdatedTime = model.UpdatedTime,
//});
//return response;
return Update(model, true);
}
}
}