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; } #region 字典映射、全称、单位转换等 /// /// 字典映射、全称、单位转换等 /// /// 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> 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().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().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().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; }); } 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 QueryById(object objId) { var result = await base.QueryById(objId); result.DeptName = (await Db.Queryable().FirstAsync(o => result.DeptId == 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.DeptId).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; } }