namespace Tiobon.Core.Services;
///
/// 人力需求维护 (服务)
///
public class Ghrh_HumanRequestServices : BaseServices, IGhrh_HumanRequestServices
{
private readonly IBaseRepository _dal;
public Ghrh_HumanRequestServices(ICaching caching, IBaseRepository dal)
{
this._dal = dal;
base.BaseDal = dal;
base._caching = caching;
}
public override async Task> QueryFilterPage(QueryBody filter, string condition, bool? IsEnable = true)
{
var result = await base.QueryFilterPage(filter, condition, IsEnable);
var entitys = result.result.DT_TableDataT1;
var deptIds = entitys.Where(x => x.ApplyDeptId != null).Select(x => x.ApplyDeptId).ToList();
//var titleIds = entitys.Where(x => x.TitleId != null).Select(x => x.TitleId).ToList();
var gradeIds = entitys.Where(x => x.GradeId != null).Select(x => x.GradeId).ToList();
var titleIds = entitys.Where(x => x.TitleId != null).Select(x => x.TitleId).ToList();
deptIds.AddRange(entitys.Where(x => x.BelongDeptId != null).Select(x => x.BelongDeptId).ToList());
if (deptIds.Any())
{
var depts = await Db.Queryable().Where(x => deptIds.Contains(x.DeptID)).ToListAsync();
entitys.ForEach(rule =>
{
rule.ApplyDeptName = depts.FirstOrDefault(o => rule.ApplyDeptId == o.DeptID)?.DeptName;
rule.BelongDeptName = depts.FirstOrDefault(o => rule.BelongDeptId == o.DeptID)?.DeptName;
});
}
if (titleIds.Any())
{
var titles = await Db.Queryable().Where(x => titleIds.Contains(x.TitleID)).ToListAsync();
entitys.ForEach(rule =>
{
rule.TitleName = titles.FirstOrDefault(o => rule.TitleId == o.TitleID)?.TitleName;
});
}
//if (gradeIds.Any())
//{
// var grades = await Db.Queryable().Where(x => gradeIds.Contains(x.GradeID)).ToListAsync();
// entitys.ForEach(rule =>
// {
// rule.GradeName = grades.FirstOrDefault(o => rule.GradeId == o.GradeID)?.GradeName;
// });
//}
//if (jobIds.Any())
//{
// var jobs = await Db.Queryable().Where(x => jobIds.Contains(x.JobID)).ToListAsync();
// entitys.ForEach(rule =>
// {
// rule.JobName = jobs.FirstOrDefault(o => rule.JobId == o.JobID)?.JobName;
// });
//}
result.result.DT_TableDataT1 = entitys;
return result;
}
public override async Task QueryById(object objId)
{
var result = await base.QueryById(objId);
result.ApplyDeptName = (await Db.Queryable().FirstAsync(o => result.ApplyDeptId == o.DeptID))?.DeptName;
result.BelongDeptName = (await Db.Queryable().FirstAsync(o => result.BelongDeptId == o.DeptID))?.DeptName;
if (result.TitleId.IsNotEmptyOrNull())
result.TitleName = (await Db.Queryable().FirstAsync(o => result.TitleId == o.TitleID))?.TitleName;
#region 返回部门负责人信息
var dept = await Db.Queryable().Where(x => x.DeptID == result.BelongDeptId).FirstAsync();
if (dept != null)
{
var staff = await Db.Queryable().Where(x => x.StaffID == dept.DeptManagerID).FirstAsync();
if (staff != null)
{
result.DeptManagerID = staff.StaffID;
result.DeptManagerEmail = staff.Email;
}
}
#endregion
return result;
}
}