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; /// /// 必选修查询 (服务) /// public class Ghre_RequiredCourseServices : BaseServices, IGhre_RequiredCourseServices { private readonly IBaseRepository _dal; public Ghre_RequiredCourseServices(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) { 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(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(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(filter.pageNum, total, filter.pageSize, entitys); } }