|
|
|
@ -4,6 +4,11 @@ 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 Microsoft.AspNetCore.Mvc; |
|
|
|
|
|
|
|
|
|
namespace Tiobon.Core.Services |
|
|
|
|
{ |
|
|
|
@ -19,5 +24,110 @@ namespace Tiobon.Core.Services |
|
|
|
|
base.BaseDal = dal; |
|
|
|
|
base._caching = caching; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public override async Task<ServicePageResult<Ghre_ExamRecordDto>> 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_ExamRecord_V"; |
|
|
|
|
var sql = @$" SELECT *
|
|
|
|
|
FROM Ghre_ExamRecord_V";
|
|
|
|
|
|
|
|
|
|
string conditions = " WHERE IsEnable = 1"; |
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(condition)) conditions += " AND " + condition; |
|
|
|
|
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)) |
|
|
|
|
{ |
|
|
|
|
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value); |
|
|
|
|
|
|
|
|
|
switch (jsonParam.operationKey) |
|
|
|
|
{ |
|
|
|
|
case "Include": |
|
|
|
|
conditions += $" AND {name} LIKE '%{jsonParam.columnValue}%'"; |
|
|
|
|
break; |
|
|
|
|
case "NotInclude": |
|
|
|
|
conditions += $" AND {name} NOT LIKE '%{jsonParam.columnValue}%'"; |
|
|
|
|
break; |
|
|
|
|
case "IsNull": |
|
|
|
|
conditions += $" AND {name} IS NULL"; |
|
|
|
|
break; |
|
|
|
|
case "NotNull": |
|
|
|
|
conditions += $" AND {name} IS NOT NULL"; |
|
|
|
|
break; |
|
|
|
|
case "Equal": |
|
|
|
|
conditions += $" AND {name} ='{jsonParam.columnValue}'"; |
|
|
|
|
break; |
|
|
|
|
case "NotEqual": |
|
|
|
|
conditions += $" AND {name} !='{jsonParam.columnValue}'"; |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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_ExamRecordDto>(sql); |
|
|
|
|
|
|
|
|
|
entitys.ForEach(async x => |
|
|
|
|
{ |
|
|
|
|
x.ScoreStatus = await GetParaLabel("TrainingExamScoreStatus", x.ScoreStatus); |
|
|
|
|
//x.CourseStatusLabel = await GetParaLabel("TrainingCourseStatus", x.CourseStatus); |
|
|
|
|
//x.StudyStatusLabel = await GetParaLabel("TrainingStudyStatus", x.StudyStatus); |
|
|
|
|
x.IsPassLabel = x.IsPass == true ? "合格" : "不合格"; |
|
|
|
|
|
|
|
|
|
//x.InStatusLabel = x.InStatus == "1" ? "在职" : null; |
|
|
|
|
//x.InStatusLabel = x.InStatus == "2" ? "离职" : null; |
|
|
|
|
//x.InStatusLabel = x.InStatus == "0" ? "未入职" : null; |
|
|
|
|
if (x.BeginTime != null) |
|
|
|
|
x.ExamDate = x.BeginTime.Value.ToString("yyyy-MM-dd"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x.TotalScore += x.Score ?? 0; |
|
|
|
|
x.TotalScore += x.AdjustScore ?? 0; |
|
|
|
|
//if (x.DueDate != null) |
|
|
|
|
// x.DueDate1 = x.DueDate.Value.ToString("yyyy-MM-dd"); |
|
|
|
|
//if (x.ExamDate != null) |
|
|
|
|
// x.ExamDate1 = x.ExamDate.Value.ToString("yyyy-MM-dd"); |
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
return new ServicePageResult<Ghre_ExamRecordDto>(filter.pageNum, total, filter.pageSize, entitys); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<ServicePageResult<Ghre_ExamRecordDto>> Query(string examId, [FromBody] QueryBody body) |
|
|
|
|
{ |
|
|
|
|
return await QueryFilterPage(body, $"ExamId='{examId}'"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |