using Elasticsearch.Net; using NPOI.Util.Collections; namespace Tiobon.Core.Services; /// /// 年度人力配置 (服务) /// public class Ghrh_YearHumanSettingsServices : BaseServices, IGhrh_YearHumanSettingsServices { private readonly IBaseRepository _dal; private readonly ICommonServices _commonServices; public Ghrh_YearHumanSettingsServices(ICaching caching, IBaseRepository dal, ICommonServices commonServices) { this._dal = dal; base.BaseDal = dal; base._caching = caching; _commonServices = commonServices; } 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; int? year = null; if (filter.jsonParam != null) foreach (JProperty jProperty in filter.jsonParam.Properties()) { var name = jProperty.Name; var value = jProperty.Value.ToString(); if (name == "Year") { var jsonParam = JsonHelper.JsonToObj(value); year = jsonParam.columnValue.ObjToInt(); } } var deptIds = entitys.Where(x => x.DeptId != null).Select(x => x.DeptId).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 jobIds = entitys.Where(x => x.JobId != null).Select(x => x.JobId).ToList(); 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; }); } result.result.DT_TableDataT1 = entitys; ModuleParam param = new ModuleParam() { langId = filter.langId, menuName = filter.menuName }; var module = await _commonServices.GetModuleInfoAsync(param); result.result.JM_TableColumnT1 = module.Data.JM_TableColumnT1; var yearField = module.Data.JM_TableColumnT1.TableColumn.Where(x => x.field == "Year").SingleOrDefault(); if (year != yearField?.searchColumnDefaultValue.ObjToInt()) { result.result.JM_TableColumnT1.TableColumn?.ForEach(x => { int month = x.field.Replace("M", null).ObjToInt(); if (x.GroupName == "预算编制数") x.label = year + "-" + x.field.Replace("M", null); if (month == 12) year++; }); } return result; } }