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.
 
 
 
Tiobon.Web.Core/Tiobon.Core.Services/Ghre/Ghre_RequiredCourseServices.cs

87 lines
3.2 KiB

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 Newtonsoft.Json.Linq;
using Tiobon.Core.Common;
using Tiobon.Core.Model;
using Newtonsoft.Json;
using Tiobon.Core.Common.Helper;
namespace Tiobon.Core.Services;
/// <summary>
/// 必选修查询 (服务)
/// </summary>
public class Ghre_RequiredCourseServices : BaseServices<Ghre_RequiredCourse, Ghre_RequiredCourseDto, InsertGhre_RequiredCourseInput, EditGhre_RequiredCourseInput>, IGhre_RequiredCourseServices
{
private readonly IBaseRepository<Ghre_RequiredCourse> _dal;
public Ghre_RequiredCourseServices(ICaching caching, IBaseRepository<Ghre_RequiredCourse> dal)
{
this._dal = dal;
base.BaseDal = dal;
base._caching = caching;
}
public override async Task<ServicePageResult<Ghre_RequiredCourseDto>> QueryFilterPage(QueryBody filter)
{
if (string.IsNullOrWhiteSpace(filter.orderBy))
filter.orderBy = "CreateTime1 DESC";
if (filter.pageSize == 0)
filter.pageSize = 10000;
var countSql = @$" SELECT COUNT(1) FROM Ghre_RequiredCourse_V";
var sql = @$" SELECT *
FROM Ghre_RequiredCourse_V";
string conditions = " WHERE IsEnable = 1";
if (filter.jsonParam != null)
foreach (JProperty jProperty in filter.jsonParam.Properties())
{
var name = jProperty.Name;
var value = jProperty.Value.ToString();
if (name == "page" || name == "pageSize")
continue;
if (name == "DueDate")
{
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value);
conditions += $" AND FORMAT(DueDate, 'yyyy-MM-dd') = '{jsonParam.columnValue}'";
continue;
}
if (!string.IsNullOrWhiteSpace(value))
conditions = DealConditions(conditions, name, value);
}
sql += conditions;
countSql += conditions;
int total = await Db.Ado.GetIntAsync(countSql);
sql = "SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY " + filter.orderBy + ") NUM FROM (SELECT * FROM (" + sql + " ";
sql += ") A ) B ) C";
sql += " WHERE NUM <= " + filter.pageNum * filter.pageSize + " AND NUM >" + (filter.pageNum - 1) * filter.pageSize;
var entitys = await Db.Ado.SqlQueryAsync<Ghre_RequiredCourseDto>(sql);
entitys.ForEach(async x =>
{
//x.RequiredClassLabel = await GetParaLabel("TrainingRequiredClass", x.RequiredClass);
x.CourseStatusLabel = await GetParaLabel("TrainingCourseStatus", x.CourseStatus);
x.StudyStatusLabel = await GetParaLabel("TrainingStudyStatus", x.StudyStatus);
//x.IsPassLabel = x.IsPass == true ? "是" : "否";
x.Indate1 = DateTimeHelper.ConvertToDayString(x.Indate);
x.DueDate1 = DateTimeHelper.ConvertToDayString(x.DueDate);
x.ExamDate1 = DateTimeHelper.ConvertToDayString(x.ExamDate);
});
return new ServicePageResult<Ghre_RequiredCourseDto>(filter.pageNum, total, filter.pageSize, entitys);
}
}