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.
109 lines
4.0 KiB
109 lines
4.0 KiB
using Elasticsearch.Net;
|
|
using NPOI.Util.Collections;
|
|
|
|
namespace Tiobon.Core.Services;
|
|
|
|
/// <summary>
|
|
/// 年度人力配置 (服务)
|
|
/// </summary>
|
|
public class Ghrh_YearHumanSettingsServices : BaseServices<Ghrh_YearHumanSettings, Ghrh_YearHumanSettingsDto, InsertGhrh_YearHumanSettingsInput, EditGhrh_YearHumanSettingsInput>, IGhrh_YearHumanSettingsServices
|
|
{
|
|
private readonly IBaseRepository<Ghrh_YearHumanSettings> _dal;
|
|
private readonly ICommonServices _commonServices;
|
|
public Ghrh_YearHumanSettingsServices(ICaching caching, IBaseRepository<Ghrh_YearHumanSettings> dal, ICommonServices commonServices)
|
|
{
|
|
this._dal = dal;
|
|
base.BaseDal = dal;
|
|
base._caching = caching;
|
|
_commonServices = commonServices;
|
|
}
|
|
|
|
public override async Task<ServicePageResult<Ghrh_YearHumanSettingsDto>> 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<JsonParam>(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<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;
|
|
});
|
|
}
|
|
|
|
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;
|
|
}
|
|
} |