新增考试结束自动发放证书

master
xiaochanghai 4 months ago
parent 8249ee8145
commit 105f046334
  1. 6908
      Model/Tiobon.Web.pdm
  2. 35
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  3. 17
      Tiobon.Core.Model/Base/Ghre/Ghre_ExamRecord.Dto.Base.cs
  4. 12
      Tiobon.Core.Model/Models/Ghre/Ghre_ExamRecord.cs
  5. 54
      Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs
  6. 35
      Tiobon.Core/Tiobon.Core.Model.xml

File diff suppressed because it is too large Load Diff

@ -4540,6 +4540,21 @@
课程ID 课程ID
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.IsIssueCertificate">
<summary>
是否发放证书
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ValidBeginTime">
<summary>
有效开始时间
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ValidEndTime">
<summary>
有效结束时间
</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)
@ -20131,6 +20146,21 @@
课程ID 课程ID
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.IsIssueCertificate">
<summary>
是否发放证书
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ValidBeginTime">
<summary>
有效开始时间
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ValidEndTime">
<summary>
有效结束时间
</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)
@ -22526,6 +22556,11 @@
有效结束时间 有效结束时间
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_StudyRecord.IsIssueCertificate">
<summary>
是否发放证书
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_StudyRecordDetail"> <member name="T:Tiobon.Core.Model.Models.Ghre_StudyRecordDetail">
<summary> <summary>
培训记录明细 (Model) 培训记录明细 (Model)

@ -6,7 +6,7 @@
* *
* Ver * Ver
* *
*V0.01 2025/1/13 16:14:43 SimonHsiao *V0.01 2025/3/7 15:49:54 SimonHsiao
* *
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
* *
@ -235,4 +235,19 @@ public class Ghre_ExamRecordBase
/// 课程ID /// 课程ID
/// </summary> /// </summary>
public long? CourseId { get; set; } public long? CourseId { get; set; }
/// <summary>
/// 是否发放证书
/// </summary>
public bool? IsIssueCertificate { get; set; }
/// <summary>
/// 有效开始时间
/// </summary>
public DateTime? ValidBeginTime { get; set; }
/// <summary>
/// 有效结束时间
/// </summary>
public DateTime? ValidEndTime { get; set; }
} }

@ -6,7 +6,7 @@
* *
* Ver * Ver
* *
*V0.01 2025/3/7 15:08:29 SimonHsiao *V0.01 2025/3/7 15:49:54 SimonHsiao
* *
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
* *
@ -241,4 +241,14 @@ public class Ghre_ExamRecord : BasePoco
/// 是否发放证书 /// 是否发放证书
/// </summary> /// </summary>
public bool? IsIssueCertificate { get; set; } public bool? IsIssueCertificate { get; set; }
/// <summary>
/// 有效开始时间
/// </summary>
public DateTime? ValidBeginTime { get; set; }
/// <summary>
/// 有效结束时间
/// </summary>
public DateTime? ValidEndTime { get; set; }
} }

@ -1178,6 +1178,11 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
await Db.Updateable(studyRecord).UpdateColumns(it => new { it.ValidBeginTime, it.ValidEndTime }, true)//true表示追加AOP赋值列 await Db.Updateable(studyRecord).UpdateColumns(it => new { it.ValidBeginTime, it.ValidEndTime }, true)//true表示追加AOP赋值列
.ExecuteCommandAsync(); .ExecuteCommandAsync();
record.ValidBeginTime = studyRecord.ValidBeginTime;
record.ValidEndTime = studyRecord.ValidEndTime;
await Db.Updateable(record).UpdateColumns(it => new { it.ValidBeginTime, it.ValidEndTime })
.ExecuteCommandAsync();
} }
} }
#endregion #endregion
@ -1449,17 +1454,20 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
/// <returns></returns> /// <returns></returns>
public async Task<ServiceResult> IssueCertificate() public async Task<ServiceResult> IssueCertificate()
{ {
var now = DateTime.Now;
//抓取当天提交考试的数据 //抓取当天提交考试的数据
var records = await Db.Queryable<Ghre_ExamRecord>() var records = await Db.Queryable<Ghre_ExamRecord>()
.Where(x => .Where(x =>
x.ExamDate != null && x.ExamDate != null &&
x.ExamDate.Value.Date == DateTime.Now.Date && x.ExamDate.Value.Date == now.Date &&
x.IsPass == true && x.IsPass == true &&
(x.IsIssueCertificate == null || x.IsIssueCertificate == false)) (x.IsIssueCertificate == null || x.IsIssueCertificate == false))
.ToListAsync(); .ToListAsync();
if (!records.Any())
return ServiceResult.OprateSuccess("发放成功!");
var rules = await Db.Queryable<Ghre_CertificateRule>().ToListAsync(); var certificates = new List<Ghre_Certificate>();
var rules = await Db.Queryable<Ghre_CertificateRule>().Where(x => x.SendRule == "ExamPass").ToListAsync();
for (int i = 0; i < records.Count; i++) for (int i = 0; i < records.Count; i++)
{ {
var record = records[i]; var record = records[i];
@ -1471,7 +1479,43 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
{ {
var rule = rules1[j]; var rule = rules1[j];
var courseIds = JsonHelper.JsonToObj<List<long>>(rule.CourseId1); var courseIds = JsonHelper.JsonToObj<List<long>>(rule.CourseId1);
//if (courseIds.Any()) courseIds = courseIds.Distinct().ToList();
if (courseIds.Any())
{
if (courseIds.Count() ==
await Db.Queryable<Ghre_ExamRecord>()
.Where(x =>
x.ValidBeginTime != null &&
x.ValidEndTime != null &&
x.ValidBeginTime <= now &&
x.ValidEndTime >= now &&
x.StaffId == record.StaffId &&
x.CourseId != null &&
x.IsPass == true &&
courseIds.Contains(x.CourseId.Value)).CountAsync())
{
string ValidityPeriod = string.Empty;
DateTime? ValidityPeriodTime = null;
if (rule.ValidityType == "StaticDuration" && rule.StaticNum != null)
ValidityPeriodTime = now.AddDays(rule.StaticNum.Value);
else if (rule.ValidityType == "Option" && rule.ValidityTime != null)
ValidityPeriodTime = rule.ValidityTime;
else if (rule.ValidityType == "Unlimited")
ValidityPeriodTime = DateTime.MaxValue;
//发放证书
certificates.Add(new Ghre_Certificate()
{
CertificateRuleId = rule.Id,
StaffId = record.StaffId,
CourseId = record.CourseId,
AwardDate = now,
//ValidityPeriod = ValidityPeriod,
ValidityPeriodTime = ValidityPeriodTime
});
}
}
} }
} }
@ -1481,6 +1525,8 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
} }
record.IsIssueCertificate = true; record.IsIssueCertificate = true;
} }
await Db.Insertable(certificates).ExecuteReturnSnowflakeIdAsync();
await Db.Updateable(records) await Db.Updateable(records)
.UpdateColumns(it => new { it.IsIssueCertificate }, true) .UpdateColumns(it => new { it.IsIssueCertificate }, true)
.ExecuteCommandAsync(); .ExecuteCommandAsync();

@ -4540,6 +4540,21 @@
课程ID 课程ID
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.IsIssueCertificate">
<summary>
是否发放证书
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ValidBeginTime">
<summary>
有效开始时间
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecordBase.ValidEndTime">
<summary>
有效结束时间
</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)
@ -20131,6 +20146,21 @@
课程ID 课程ID
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.IsIssueCertificate">
<summary>
是否发放证书
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ValidBeginTime">
<summary>
有效开始时间
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExamRecord.ValidEndTime">
<summary>
有效结束时间
</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)
@ -22526,6 +22556,11 @@
有效结束时间 有效结束时间
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_StudyRecord.IsIssueCertificate">
<summary>
是否发放证书
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_StudyRecordDetail"> <member name="T:Tiobon.Core.Model.Models.Ghre_StudyRecordDetail">
<summary> <summary>
培训记录明细 (Model) 培训记录明细 (Model)

Loading…
Cancel
Save