|
|
@ -855,12 +855,31 @@ public class Ghre_StudyRecordServices : BaseServices<Ghre_StudyRecord, Ghre_Stud |
|
|
|
/// <returns></returns> |
|
|
|
/// <returns></returns> |
|
|
|
public async Task<ServicePageResult<Ghre_StudyRecordESS>> QueryESS(QueryBody filter, string condition, bool? IsEnable = true) |
|
|
|
public async Task<ServicePageResult<Ghre_StudyRecordESS>> QueryESS(QueryBody filter, string condition, bool? IsEnable = true) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (await QueryCompanyCode() == "Ushio" && string.IsNullOrWhiteSpace(filter.orderBy)) |
|
|
|
|
|
|
|
|
|
|
|
string courseType = "Required"; |
|
|
|
|
|
|
|
if (filter.jsonParam != null) |
|
|
|
|
|
|
|
foreach (JProperty jProperty in filter.jsonParam.Properties()) |
|
|
|
{ |
|
|
|
{ |
|
|
|
filter.orderBy = "CoursePublishTime DESC"; |
|
|
|
var name = jProperty.Name; |
|
|
|
|
|
|
|
var value = jProperty.Value.ToString(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (name == "CourseType") |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value); |
|
|
|
|
|
|
|
courseType = jsonParam.columnValue.ObjToString(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (courseType == "OpenClass") |
|
|
|
|
|
|
|
return await QueryOpenClass(filter, condition, IsEnable); |
|
|
|
|
|
|
|
|
|
|
|
else |
|
|
|
else |
|
|
|
if (string.IsNullOrWhiteSpace(filter.orderBy)) |
|
|
|
{ |
|
|
|
|
|
|
|
if (await QueryCompanyCode() == "Ushio" && string.IsNullOrWhiteSpace(filter.orderBy)) |
|
|
|
|
|
|
|
filter.orderBy = "CoursePublishTime DESC"; |
|
|
|
|
|
|
|
else if (string.IsNullOrWhiteSpace(filter.orderBy)) |
|
|
|
filter.orderBy = "JoinTime DESC"; |
|
|
|
filter.orderBy = "JoinTime DESC"; |
|
|
|
|
|
|
|
|
|
|
|
if (filter.pageSize == 0) |
|
|
|
if (filter.pageSize == 0) |
|
|
@ -1058,7 +1077,265 @@ public class Ghre_StudyRecordServices : BaseServices<Ghre_StudyRecord, Ghre_Stud |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
return new ServicePageResult<Ghre_StudyRecordESS>(filter.pageNum, total, filter.pageSize, entitys); |
|
|
|
return new ServicePageResult<Ghre_StudyRecordESS>(filter.pageNum, total, filter.pageSize, entitys); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<ServicePageResult<Ghre_StudyRecordESS>> QueryOpenClass(QueryBody filter, string condition, bool? IsEnable = true) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(filter.orderBy)) |
|
|
|
|
|
|
|
filter.orderBy = "PublishTime DESC"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (filter.pageSize == 0) |
|
|
|
|
|
|
|
filter.pageSize = 10000; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var staffId = App.User.StaffId; |
|
|
|
|
|
|
|
var sql = @$"SELECT A.Id,
|
|
|
|
|
|
|
|
A.StartTime CourseBeginDate, |
|
|
|
|
|
|
|
A.EndTime CourseEndDate, |
|
|
|
|
|
|
|
A.RegisterStartTime, |
|
|
|
|
|
|
|
A.RegisterEndTime, |
|
|
|
|
|
|
|
A.ExamStartTime ExamBeginDate, |
|
|
|
|
|
|
|
A.ExamEndTime ExamEndDate, |
|
|
|
|
|
|
|
isnull (C.CourseName, D.SceneName) CourseName, |
|
|
|
|
|
|
|
isnull (C.StandardHour, D.StandardHour) StandardHour, |
|
|
|
|
|
|
|
isnull |
|
|
|
|
|
|
|
( |
|
|
|
|
|
|
|
C.CoverUrl, |
|
|
|
|
|
|
|
'/File/UploadPath/41_20240807204236365_Snipaste_2024-08-07_20-41-44.png') CoverUrl, |
|
|
|
|
|
|
|
C.UseDefaultCoverImage, |
|
|
|
|
|
|
|
C.DefaultCoverImageName, |
|
|
|
|
|
|
|
isnull (C.CreditPoints, D.CreditPoints) CreditPoints, |
|
|
|
|
|
|
|
'ExamDate' ExamDateType, |
|
|
|
|
|
|
|
A.ExamId, |
|
|
|
|
|
|
|
E.Status ExamStatus, A.CreateTime PublishTime |
|
|
|
|
|
|
|
FROM Ghre_OpenClass A |
|
|
|
|
|
|
|
JOIN Ghre_StaffGroup B ON A.StaffGroupId = B.Id |
|
|
|
|
|
|
|
LEFT JOIN Ghre_Course C ON A.LinkId = C.Id |
|
|
|
|
|
|
|
LEFT JOIN Ghre_CourseScene D ON A.LinkId = D.Id |
|
|
|
|
|
|
|
LEFT JOIN Ghre_Exam E ON A.ExamId = E.Id |
|
|
|
|
|
|
|
WHERE EXISTS ( |
|
|
|
|
|
|
|
SELECT 1 |
|
|
|
|
|
|
|
FROM Ghra_Staff A |
|
|
|
|
|
|
|
WHERE A.StaffID = '{staffId}' |
|
|
|
|
|
|
|
AND A.StaffID IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.StaffId) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.StaffID NOT IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.ExclStaffId) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.StaffType1 IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.StaffType1) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.StaffType2 IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.StaffType2) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.ZoneId IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.ZoneId) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.ZoneId NOT IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.ExclZoneId) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.DeptId IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.DeptId) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.DeptId NOT IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.ExclDeptId) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.TitleId IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.TitleId) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.TitleId NOT IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.ExclTitleId) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.GradeId IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.GradeId) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.GradeId NOT IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.ExclGradeId) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.JobId IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.JobId) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
AND A.JobId NOT IN ( |
|
|
|
|
|
|
|
SELECT value |
|
|
|
|
|
|
|
FROM OPENJSON(B.ExclJobId) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
OR EXISTS ( |
|
|
|
|
|
|
|
SELECT 1 |
|
|
|
|
|
|
|
FROM Ghre_OpenClassStaff C |
|
|
|
|
|
|
|
WHERE C.OpenClassId = A.ID |
|
|
|
|
|
|
|
AND c.StaffId = '{staffId}' |
|
|
|
|
|
|
|
)";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
string conditions = $""; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(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 == "CourseNoOrName") |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value); |
|
|
|
|
|
|
|
conditions += $" AND CourseName LIKE '%{jsonParam.columnValue}%'"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (name == "CourseClassId") |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value); |
|
|
|
|
|
|
|
conditions += $" AND CourseClassId LIKE '%{jsonParam.columnValue}%' "; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (name == "CourseType") |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (name == "CourseStatus") |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var jsonParam = JsonConvert.DeserializeObject<JsonParam>(value); |
|
|
|
|
|
|
|
var dtTime = DateTime.Now; |
|
|
|
|
|
|
|
var value1 = jsonParam.columnValue; |
|
|
|
|
|
|
|
switch (value1) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
case "In": |
|
|
|
|
|
|
|
conditions += $" AND '{DateTimeHelper.ConvertToSecondString(dtTime)}' BETWEEN CourseBeginTime AND CourseEndTime"; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case "Over": |
|
|
|
|
|
|
|
conditions += $" AND CourseEndTime >'{DateTimeHelper.ConvertToSecondString(dtTime)}'"; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case "NOStart": |
|
|
|
|
|
|
|
conditions += $" AND CourseBeginTime >'{DateTimeHelper.ConvertToSecondString(dtTime)}'"; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
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; |
|
|
|
|
|
|
|
case "GreaterOrEqual"://大于等于 |
|
|
|
|
|
|
|
conditions += $" AND {name} >='{jsonParam.columnValue}'"; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case "Greater"://大于 |
|
|
|
|
|
|
|
conditions += $" AND {name} >'{jsonParam.columnValue}'"; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case "LessOrEqual"://小于等于 |
|
|
|
|
|
|
|
conditions += $" AND {name} <='{jsonParam.columnValue}'"; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case "Less"://小于 |
|
|
|
|
|
|
|
conditions += $" AND {name} <'{jsonParam.columnValue}'"; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sql += conditions; |
|
|
|
|
|
|
|
var countSql = @$" SELECT COUNT(1) FROM ({sql}) A"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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_StudyRecordESS>(sql); |
|
|
|
|
|
|
|
var dt = DateTime.Now.Date; |
|
|
|
|
|
|
|
entitys.ForEach(x => |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (x.CourseBeginDate != null && x.CourseEndDate != null) |
|
|
|
|
|
|
|
x.CourseDateString = DateTimeHelper.ConvertToDayString(x.CourseBeginDate) + "~" + DateTimeHelper.ConvertToDayString(x.CourseEndDate); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!x.ExamId.IsNull()) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (x.ExamBeginDate != null && x.ExamEndDate != null) |
|
|
|
|
|
|
|
x.ExamDateString = DateTimeHelper.ConvertToDayString(x.ExamBeginDate) + "~" + DateTimeHelper.ConvertToDayString(x.ExamEndDate); |
|
|
|
|
|
|
|
else x.ExamDateString = $"学完{x.AfterHowLong}天"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//if (x.CourseBeginDate != null && x.CourseEndDate != null) |
|
|
|
|
|
|
|
// if (x.StudyProgress >= 100 || !(x.CourseBeginDate.Value.Date <= DateTime.Now.Date && x.CourseEndDate.Value.Date >= DateTime.Now.Date)) |
|
|
|
|
|
|
|
// x.DisableStudyBtn = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (x.StudyProgress < 100 || x.ExamId.IsNull()) |
|
|
|
|
|
|
|
x.DisableExamBtn = true; |
|
|
|
|
|
|
|
if (x.FeedbackOrderId.IsNull()) |
|
|
|
|
|
|
|
x.ShowFeedbackBtn = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 处理学习进度 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (x.ExamId.IsNull()) |
|
|
|
|
|
|
|
x.ShowExamBtn = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!x.ExamId.IsNull() && x.FeedbackOrderId.IsNull()) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (x.ExamStatus == DIC_EXAM_RECORD_STATUS.WAIT || x.ExamStatus.IsNull()) |
|
|
|
|
|
|
|
x.StudyProgress = x.StudyProgress / 2; |
|
|
|
|
|
|
|
else if (x.ExamStatus == DIC_EXAM_RECORD_STATUS.EXAMING) |
|
|
|
|
|
|
|
x.StudyProgress = 75; |
|
|
|
|
|
|
|
else if (x.ExamStatus == DIC_EXAM_RECORD_STATUS.EXAM_END) |
|
|
|
|
|
|
|
x.StudyProgress = 100; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!x.ExamId.IsNull() && !x.FeedbackOrderId.IsNull()) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
if (x.ExamStatus == DIC_EXAM_RECORD_STATUS.WAIT) |
|
|
|
|
|
|
|
x.StudyProgress = x.StudyProgress / 3; |
|
|
|
|
|
|
|
else if (x.ExamStatus == DIC_EXAM_RECORD_STATUS.EXAMING) |
|
|
|
|
|
|
|
x.StudyProgress = 45; |
|
|
|
|
|
|
|
else if (x.ExamStatus == DIC_EXAM_RECORD_STATUS.EXAM_END) |
|
|
|
|
|
|
|
x.StudyProgress = 60; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return new ServicePageResult<Ghre_StudyRecordESS>(filter.pageNum, total, filter.pageSize, entitys); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#endregion |
|
|
|
#endregion |
|
|
|