using Tiobon.Core.IServices;
using Tiobon.Core.Model.Models;
using Tiobon.Core.Services.BASE;
using Tiobon.Core.IRepository.Base;
using Tiobon.Core.Common.Caches;
using NPOI.SS.Formula.Functions;
using NPOI.Util.Collections;
namespace Tiobon.Core.Services
{
///
/// 考核指标 (服务)
///
public class Ghrp_PerformanceItemServices : BaseServices, IGhrp_PerformanceItemServices
{
private readonly IBaseRepository _dal;
public Ghrp_PerformanceItemServices(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)
{
string? ItemStatus = null;
if (filter.jsonParam != null)
foreach (JProperty jProperty in filter.jsonParam.Properties())
{
var name = jProperty.Name;
var value = jProperty.Value.ToString();
if (name == "ItemStatus")
{
var jsonParam = JsonHelper.JsonToObj(value);
ItemStatus = jsonParam.columnValue.ToString();
}
}
if (!string.IsNullOrEmpty(ItemStatus))
{
condition = $@" (case when BeginDate > convert(date,getdate()) then '2'
when convert(date,getdate()) between ISNULL(BeginDate,'1900-01-01') and ISNULL(EndDate,'2099-01-01') then '1'
else '0' end ) = '{ItemStatus}' ";
}
var result = await base.QueryFilterPage(filter, condition, IsEnable);
result.result.DT_TableDataT1.ForEach(async x =>
{
x.ItemType1 = await GetParaLabel("PerformanceItemType1", x.ItemType1);
x.ItemType2 = await GetParaLabel("PerformanceItemType2", x.ItemType2);
x.ItemType3 = await GetParaLabel("PerformanceItemType3", x.ItemType3);
x.ItemKind = await GetParaLabel("PerformanceItemKind", x.ItemKind);
x.DeptType = await GetParaLabel("PerformanceDeptType", x.DeptType);
x.Tag1 = await GetParaLabel("PerformanceTag1", x.Tag1);
x.Tag2 = await GetParaLabel("PerformanceTag2", x.Tag2);
x.Tag3 = await GetParaLabel("PerformanceTag3", x.Tag3);
});
return result;
}
}
}