ESS开班新增不学习直接考试

master
xiaochanghai 4 months ago
parent 0d3bee9a26
commit 0fdce08daa
  1. 6343
      Model/Tiobon.Web.pdm
  2. 30
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  3. 15
      Tiobon.Core.Model/Base/Ghre/Ghre_ExamRecord.Dto.Base.cs
  4. 4
      Tiobon.Core.Model/Base/Ghre/Ghre_OpenClass.Dto.Base.cs
  5. 15
      Tiobon.Core.Model/Models/Ghre/Ghre_ExamRecord.cs
  6. 6
      Tiobon.Core.Model/ViewModels/Extend/Ghre_StudyRecordESS.cs
  7. 66
      Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs
  8. 12
      Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs
  9. 30
      Tiobon.Core/Tiobon.Core.Model.xml

File diff suppressed because it is too large Load Diff

@ -4515,6 +4515,21 @@
最终是否合格 最终是否合格
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.OpenClassId">
<summary>
开班ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.CourseSceneId">
<summary>
课程场景ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.CourseId">
<summary>
课程ID
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase"> <member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase">
<summary> <summary>
Ghre_ExamRecordAnswer (Dto.Base) Ghre_ExamRecordAnswer (Dto.Base)
@ -19786,6 +19801,21 @@
最终是否合格 最终是否合格
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.OpenClassId">
<summary>
开班ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.CourseSceneId">
<summary>
课程场景ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.CourseId">
<summary>
课程ID
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer"> <member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer">
<summary> <summary>
Ghre_ExamRecordAnswer (Model) Ghre_ExamRecordAnswer (Model)

@ -220,4 +220,19 @@ public class Ghre_ExamRecordBase
/// 最终是否合格 /// 最终是否合格
/// </summary> /// </summary>
public bool? FinallyIsPass { get; set; } public bool? FinallyIsPass { get; set; }
/// <summary>
/// 开班ID
/// </summary>
public long? OpenClassId { get; set; }
/// <summary>
/// 课程场景ID
/// </summary>
public long? CourseSceneId { get; set; }
/// <summary>
/// 课程ID
/// </summary>
public long? CourseId { get; set; }
} }

@ -6,7 +6,7 @@
* *
* Ver * Ver
* *
*V0.01 2025/2/13 10:11:51 SimonHsiao *V0.01 2025/3/4 10:47:14 SimonHsiao
* *
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
* *
@ -177,7 +177,7 @@ public class Ghre_OpenClassBase
/// <summary> /// <summary>
/// 是否需要学习 /// 是否需要学习
/// </summary> /// </summary>
public int? IsRequireStudy { get; set; } public bool? IsRequireStudy { get; set; }
/// <summary> /// <summary>
/// 发布状态 /// 发布状态

@ -221,4 +221,19 @@ public class Ghre_ExamRecord : BasePoco
/// 最终是否合格 /// 最终是否合格
/// </summary> /// </summary>
public bool? FinallyIsPass { get; set; } public bool? FinallyIsPass { get; set; }
/// <summary>
/// 开班ID
/// </summary>
public long? OpenClassId { get; set; }
/// <summary>
/// 课程场景ID
/// </summary>
public long? CourseSceneId { get; set; }
/// <summary>
/// 课程ID
/// </summary>
public long? CourseId { get; set; }
} }

@ -106,12 +106,14 @@ public class Ghre_StudyRecordESS
/// </summary> /// </summary>
public string ExamDateType { get; set; } public string ExamDateType { get; set; }
public string CourseDateString { get; set; } public string CourseDateString { get; set; }
public string ExamDateString { get; set; } public string ExamDateString { get; set; }
public string ExamStatus { get; set; } public string ExamStatus { get; set; }
public long? ExamId { get; set; } public long? ExamId { get; set; }
public long? FeedbackOrderId { get; set; } public long? FeedbackOrderId { get; set; }
public bool? IsRequireStudy { get; set; } = true;
} }

@ -422,16 +422,57 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
body.pageNum = 1; body.pageNum = 1;
body.pageSize = 10000; body.pageSize = 10000;
bool isOpenClass = false; bool isOpenClass = false;
long? examRecordId = 0;
Ghre_Exam exam = null;
var staffId = App.User.StaffId; var staffId = App.User.StaffId;
if (await Db.Queryable<Ghre_OpenClass>().Where(x => x.Id == id).AnyAsync()) var openClass = await Db.Queryable<Ghre_OpenClass>().Where(x => x.Id == id).FirstAsync();
if (openClass != null)
{ {
id = await Db.Queryable<Ghre_StudyRecord>().Where(x => x.OpenClassId == id && x.StaffId == staffId).Select(x => x.Id).FirstAsync(); var id1 = await Db.Queryable<Ghre_ExamRecord>().Where(x => x.OpenClassId == id && x.StaffId == staffId).Select(x => x.Id).FirstAsync();
if (id1 > 0)
id = id1;
else
{
id1 = await Db.Queryable<Ghre_StudyRecord>().Where(x => x.OpenClassId == id && x.StaffId == staffId).Select(x => x.Id).FirstAsync();
if (id1 > 0)
id = id1;
}
if (id1 == 0 && openClass.IsRequireStudy == false)
{
long? courseSnapId = null;
if (openClass.LinkType == "Course")
courseSnapId = await Db.Queryable<Ghre_CourseSnap>().Where(x => x.CourseId == openClass.LinkId).Select(x => x.Id).FirstAsync();
var insrt = new InsertGhre_ExamRecordInput()
{
ExamId = openClass.ExamId,
StudyRecordId = null,
StaffId = staffId,
CourseSnapId = courseSnapId,
CourseSceneId = openClass.LinkType == "CourseScene" ? openClass.LinkId : null,
CourseId = openClass.LinkType == "Course" ? openClass.LinkId : null,
ExamPaperId = openClass.ExamPaperId,
ExamDate = DateTime.Now.Date,
RetakeTimes = 0,
Status = DIC_EXAM_RECORD_STATUS.WAIT,
ScoreStatus = DIC_EXAM_RECORD_SCORE_STATUS.NO_SCORE,
BeginTime = openClass.ExamStartTime,
EndTime = openClass.ExamEndTime,
OpenClassId = openClass?.Id
};
id = await base.Add(insrt);
}
exam = await Db.Queryable<Ghre_Exam>()
.Where(x => x.Id == openClass.ExamId)
.FirstAsync(x => x.Status == DIC_EXAM_STATUS.RELEASED);
isOpenClass = true; isOpenClass = true;
} }
long? examRecordId = null;
Ghre_StudyRecord studyRecord = null; Ghre_StudyRecord studyRecord = null;
if (await Db.Queryable<Ghre_Exam>().AnyAsync(x => x.Id == id)) if (await Db.Queryable<Ghre_Exam>().AnyAsync(x => x.Id == id))
{ {
@ -439,7 +480,6 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
if (studyRecord != null) if (studyRecord != null)
id = studyRecord.Id; id = studyRecord.Id;
} }
Ghre_Exam exam = null;
if (await Db.Queryable<Ghre_StudyRecord>().AnyAsync(x => x.Id == id && x.StaffId == staffId)) if (await Db.Queryable<Ghre_StudyRecord>().AnyAsync(x => x.Id == id && x.StaffId == staffId))
{ {
var examRecord = await Db.Queryable<Ghre_ExamRecord>().FirstAsync(x => x.StudyRecordId == id && x.StaffId == staffId); var examRecord = await Db.Queryable<Ghre_ExamRecord>().FirstAsync(x => x.StudyRecordId == id && x.StaffId == staffId);
@ -472,13 +512,16 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
StudyRecordId = studyRecord.Id, StudyRecordId = studyRecord.Id,
StaffId = studyRecord.StaffId, StaffId = studyRecord.StaffId,
CourseSnapId = studyRecord.CourseSnapId, CourseSnapId = studyRecord.CourseSnapId,
CourseSceneId = studyRecord.CourseSceneId,
CourseId = studyRecord.CourseId,
ExamPaperId = exam.ExamPaperId, ExamPaperId = exam.ExamPaperId,
ExamDate = DateTime.Now.Date, ExamDate = DateTime.Now.Date,
RetakeTimes = 0, RetakeTimes = 0,
Status = Consts.DIC_EXAM_RECORD_STATUS.WAIT, Status = DIC_EXAM_RECORD_STATUS.WAIT,
ScoreStatus = Consts.DIC_EXAM_RECORD_SCORE_STATUS.NO_SCORE, ScoreStatus = DIC_EXAM_RECORD_SCORE_STATUS.NO_SCORE,
BeginTime = exam.BeginTime, BeginTime = exam.BeginTime,
EndTime = exam.EndTime EndTime = exam.EndTime,
OpenClassId = openClass?.Id,
}; };
examRecordId = await base.Add(insrt); examRecordId = await base.Add(insrt);
@ -502,14 +545,15 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
if (studyRecord.IsNull()) if (studyRecord.IsNull())
studyRecord = await Db.Queryable<Ghre_StudyRecord>().FirstAsync(x => x.Id == record.StudyRecordId); studyRecord = await Db.Queryable<Ghre_StudyRecord>().FirstAsync(x => x.Id == record.StudyRecordId);
if (studyRecord.StudyProgress.IsNull() || (!studyRecord.StudyProgress.IsNull() && studyRecord.StudyProgress < 100))
return ServiceResult<QueryExam>.OprateFailed("学习尚未结束暂不可考试!");
if (exam.IsNull()) if (exam.IsNull())
exam = await Db.Queryable<Ghre_Exam>() exam = await Db.Queryable<Ghre_Exam>()
.Where(x => x.Id == studyRecord.ExamId) .Where(x => x.Id == studyRecord.ExamId)
.FirstAsync(x => x.Status == Consts.DIC_EXAM_STATUS.RELEASED || x.Status == Consts.DIC_EXAM_STATUS.DISABLED); .FirstAsync(x => x.Status == Consts.DIC_EXAM_STATUS.RELEASED || x.Status == Consts.DIC_EXAM_STATUS.DISABLED);
if ((isOpenClass == false && exam.IsRequireStudy == true) || (isOpenClass == true && openClass.IsRequireStudy == true))
if (studyRecord.StudyProgress.IsNull() || (!studyRecord.StudyProgress.IsNull() && studyRecord.StudyProgress < 100))
return ServiceResult<QueryExam>.OprateFailed("学习尚未结束暂不可考试!");
if (exam.IsNull() && (record.Status == DIC_EXAM_RECORD_STATUS.WAIT || record.Status == DIC_EXAM_RECORD_STATUS.EXAMING)) if (exam.IsNull() && (record.Status == DIC_EXAM_RECORD_STATUS.WAIT || record.Status == DIC_EXAM_RECORD_STATUS.EXAMING))
return ServiceResult<QueryExam>.OprateFailed("该门课程尚未开启考试,请联系HR !"); return ServiceResult<QueryExam>.OprateFailed("该门课程尚未开启考试,请联系HR !");
@ -528,9 +572,7 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
if (isOpenClass) if (isOpenClass)
{ {
if (record.Status == DIC_EXAM_RECORD_STATUS.WAIT && (record.EndTime < dt.Date || record.BeginTime > dt)) if (record.Status == DIC_EXAM_RECORD_STATUS.WAIT && (record.EndTime < dt.Date || record.BeginTime > dt))
{
extend.IsAllowExam = false; extend.IsAllowExam = false;
}
} }
else else
{ {

@ -1120,12 +1120,12 @@ public class Ghre_StudyRecordServices : BaseServices<Ghre_StudyRecord, Ghre_Stud
'ExamDate' ExamDateType, 'ExamDate' ExamDateType,
A.ExamId, A.ExamId,
E.Status ExamStatus, E.Status ExamStatus,
A.Status OpenClassStatus, A.CreateTime PublishTime, ISNULL (F.StudyProgress, 0) StudyProgress A.Status OpenClassStatus, A.CreateTime PublishTime, ISNULL (F.StudyProgress, 0) StudyProgress, A.IsRequireStudy
FROM Ghre_OpenClass A FROM Ghre_OpenClass A
JOIN Ghre_StaffGroup B ON A.StaffGroupId = B.Id JOIN Ghre_StaffGroup B ON A.StaffGroupId = B.Id
LEFT JOIN Ghre_Course C ON A.LinkId = C.Id LEFT JOIN Ghre_Course C ON A.LinkId = C.Id
LEFT JOIN Ghre_CourseScene D ON A.LinkId = D.Id LEFT JOIN Ghre_CourseScene D ON A.LinkId = D.Id
LEFT JOIN Ghre_ExamRecord E ON A.ExamId = E.ExamId AND E.StaffId = '{staffId}' LEFT JOIN Ghre_ExamRecord E ON A.Id = E.OpenClassId AND E.StaffId = '{staffId}'
LEFT JOIN Ghre_StudyRecord F ON A.Id = F.OpenClassId LEFT JOIN Ghre_StudyRecord F ON A.Id = F.OpenClassId
WHERE A.Status !='Temporary' AND ( EXISTS WHERE A.Status !='Temporary' AND ( EXISTS
(SELECT 1 (SELECT 1
@ -1262,7 +1262,8 @@ WHERE A.Status !='Temporary' AND ( EXISTS
if (dt >= x.RegisterStartTime && dt <= x.RegisterEndTime) if (dt >= x.RegisterStartTime && dt <= x.RegisterEndTime)
x.DisableRegisterBtn = false; x.DisableRegisterBtn = false;
}else if (openClassStaffs.Any(o => o.OpenClassId == x.Id)) }
else if (openClassStaffs.Any(o => o.OpenClassId == x.Id))
{ {
x.ShowStudyBtn = true; x.ShowStudyBtn = true;
x.ShowExamBtn = true; x.ShowExamBtn = true;
@ -1274,6 +1275,9 @@ WHERE A.Status !='Temporary' AND ( EXISTS
if (x.CourseBeginDate != null && x.CourseEndDate != null) if (x.CourseBeginDate != null && x.CourseEndDate != null)
x.CourseDateString = DateTimeHelper.ConvertToDayString(x.CourseBeginDate) + "~" + DateTimeHelper.ConvertToDayString(x.CourseEndDate); x.CourseDateString = DateTimeHelper.ConvertToDayString(x.CourseBeginDate) + "~" + DateTimeHelper.ConvertToDayString(x.CourseEndDate);
if (x.IsRequireStudy == false)
x.ShowStudyBtn = false;
if (!x.ExamId.IsNull()) if (!x.ExamId.IsNull())
{ {
if (x.ExamBeginDate != null && x.ExamEndDate != null) if (x.ExamBeginDate != null && x.ExamEndDate != null)
@ -1287,7 +1291,7 @@ WHERE A.Status !='Temporary' AND ( EXISTS
if (!x.ExamId.IsNull() && x.ExamBeginDate != null && x.ExamEndDate != null && x.ExamBeginDate <= dt && x.ExamEndDate >= dt) if (!x.ExamId.IsNull() && x.ExamBeginDate != null && x.ExamEndDate != null && x.ExamBeginDate <= dt && x.ExamEndDate >= dt)
x.DisableExamBtn = false; x.DisableExamBtn = false;
if (x.StudyProgress < 100 || x.ExamId.IsNull()) if ((x.StudyProgress < 100 || x.ExamId.IsNull()) && x.IsRequireStudy != false)
x.DisableExamBtn = true; x.DisableExamBtn = true;
if (x.FeedbackOrderId.IsNull()) if (x.FeedbackOrderId.IsNull())
x.ShowFeedbackBtn = false; x.ShowFeedbackBtn = false;

@ -4515,6 +4515,21 @@
最终是否合格 最终是否合格
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.OpenClassId">
<summary>
开班ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.CourseSceneId">
<summary>
课程场景ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.CourseId">
<summary>
课程ID
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase"> <member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswerBase">
<summary> <summary>
Ghre_ExamRecordAnswer (Dto.Base) Ghre_ExamRecordAnswer (Dto.Base)
@ -19786,6 +19801,21 @@
最终是否合格 最终是否合格
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.OpenClassId">
<summary>
开班ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.CourseSceneId">
<summary>
课程场景ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.CourseId">
<summary>
课程ID
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer"> <member name="T:Tiobon.Core.Model.Models.Ghre_ExamRecordAnswer">
<summary> <summary>
Ghre_ExamRecordAnswer (Model) Ghre_ExamRecordAnswer (Model)

Loading…
Cancel
Save