You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
5.1 KiB
134 lines
5.1 KiB
namespace Tiobon.Core.Services;
|
|
|
|
/// <summary>
|
|
/// 人力需求维护 (服务)
|
|
/// </summary>
|
|
public class Ghrh_HumanRequestServices : BaseServices<Ghrh_HumanRequest, Ghrh_HumanRequestDto, InsertGhrh_HumanRequestInput, EditGhrh_HumanRequestInput>, IGhrh_HumanRequestServices
|
|
{
|
|
private readonly IBaseRepository<Ghrh_HumanRequest> _dal;
|
|
public Ghrh_HumanRequestServices(ICaching caching, IBaseRepository<Ghrh_HumanRequest> dal)
|
|
{
|
|
this._dal = dal;
|
|
base.BaseDal = dal;
|
|
base._caching = caching;
|
|
}
|
|
|
|
#region 字典映射、全称、单位转换等
|
|
/// <summary>
|
|
/// 字典映射、全称、单位转换等
|
|
/// </summary>
|
|
/// <param name="view"></param>
|
|
private async Task SetLabel(Ghrh_HumanRequestDto x)
|
|
{
|
|
if (x != null)
|
|
{
|
|
x.GenderLabel = await GetParaLabel("Gender", x.Gender);
|
|
x.InOrOutLabel = await GetParaLabel("ResumeBudgetTypr", x.InOrOut);
|
|
x.ImportanceDegreeLabel = await GetParaLabel("ResumeImportanceDegree", x.ImportanceDegree);
|
|
x.InTime1 = DateTimeHelper.ConvertToDayString(x.InTime);
|
|
x.AgeLabel = DateTimeHelper.ConvertToDayString(x.Age);
|
|
//x.AgeLabel = DateTimeHelper.ConvertToDayString(x.Age);
|
|
}
|
|
}
|
|
#endregion
|
|
public override async Task<ServicePageResult<Ghrh_HumanRequestDto>> 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.DeptId != null).Select(x => x.DeptId).ToList();
|
|
var gradeIds = entitys.Where(x => x.GradeId != null).Select(x => x.GradeId).ToList();
|
|
var jobIds = entitys.Where(x => x.JobId != null).Select(x => x.JobId).ToList();
|
|
var titleIds = entitys.Where(x => x.TitleId != null).Select(x => x.TitleId).ToList();
|
|
var reportIds = entitys.Where(x => x.ReportId != null).Select(x => x.ReportId).ToList();
|
|
|
|
if (reportIds.Any())
|
|
{
|
|
var staffs = await Db.Queryable<Ghra_Staff>().Where(x => reportIds.Contains(x.StaffID)).ToListAsync();
|
|
|
|
entitys.ForEach(rule =>
|
|
{
|
|
rule.ReportName = staffs.FirstOrDefault(o => rule.DeptId == o.DeptID)?.StaffName;
|
|
});
|
|
}
|
|
|
|
if (deptIds.Any())
|
|
{
|
|
var depts = await Db.Queryable<Ghro_Dept>().Where(x => deptIds.Contains(x.DeptID)).ToListAsync();
|
|
|
|
entitys.ForEach(rule =>
|
|
{
|
|
rule.DeptName = depts.FirstOrDefault(o => rule.DeptId == o.DeptID)?.DeptName;
|
|
});
|
|
}
|
|
|
|
if (titleIds.Any())
|
|
{
|
|
var titles = await Db.Queryable<Ghra_Title>().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<Ghra_Grade>().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<Ghra_Job>().Where(x => jobIds.Contains(x.JobID)).ToListAsync();
|
|
|
|
entitys.ForEach(rule =>
|
|
{
|
|
rule.JobName = jobs.FirstOrDefault(o => rule.JobId == o.JobID)?.JobName;
|
|
});
|
|
}
|
|
|
|
for (int i = 0; i < entitys.Count; i++)
|
|
{
|
|
if (entitys[i].YearHumanId.IsNotEmptyOrNull())
|
|
entitys[i].YearHumanName = await Db.Ado.GetStringAsync(@$"SELECT CAST (A.[Year] AS VARCHAR) + '_' + B.TitleName + '_' + C.JobName label
|
|
FROM Ghrh_YearHumanSettings A
|
|
LEFT JOIN Ghra_Title B ON A.TitleId = B.TitleID
|
|
LEFT JOIN Ghra_Job C ON A.JobId = C.JobID
|
|
WHERE A.IsEnable = 1 AND A.Id = {entitys[i].YearHumanId}");
|
|
}
|
|
|
|
entitys.ForEach(async x =>
|
|
{
|
|
await SetLabel(x);
|
|
});
|
|
result.result.DT_TableDataT1 = entitys;
|
|
return result;
|
|
}
|
|
|
|
public override async Task<Ghrh_HumanRequestDto> QueryById(object objId)
|
|
{
|
|
var result = await base.QueryById(objId);
|
|
result.DeptName = (await Db.Queryable<Ghro_Dept>().FirstAsync(o => result.DeptId == o.DeptID))?.DeptName;
|
|
if (result.TitleId.IsNotEmptyOrNull())
|
|
result.TitleName = (await Db.Queryable<Ghra_Title>().FirstAsync(o => result.TitleId == o.TitleID))?.TitleName;
|
|
|
|
#region 返回部门负责人信息
|
|
var dept = await Db.Queryable<Ghro_Dept>().Where(x => x.DeptID == result.DeptId).FirstAsync();
|
|
if (dept != null)
|
|
{
|
|
var staff = await Db.Queryable<Ghra_Staff>().Where(x => x.StaffID == dept.DeptManagerID).FirstAsync();
|
|
if (staff != null)
|
|
{
|
|
result.DeptManagerID = staff.StaffID;
|
|
result.DeptManagerEmail = staff.Email;
|
|
}
|
|
}
|
|
#endregion
|
|
return result;
|
|
}
|
|
} |