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

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

@ -6,7 +6,7 @@
*
* 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.
*
@ -235,4 +235,19 @@ public class Ghre_ExamRecordBase
/// 课程ID
/// </summary>
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
*
*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.
*
@ -241,4 +241,14 @@ public class Ghre_ExamRecord : BasePoco
/// 是否发放证书
/// </summary>
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赋值列
.ExecuteCommandAsync();
record.ValidBeginTime = studyRecord.ValidBeginTime;
record.ValidEndTime = studyRecord.ValidEndTime;
await Db.Updateable(record).UpdateColumns(it => new { it.ValidBeginTime, it.ValidEndTime })
.ExecuteCommandAsync();
}
}
#endregion
@ -1449,17 +1454,20 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
/// <returns></returns>
public async Task<ServiceResult> IssueCertificate()
{
var now = DateTime.Now;
//抓取当天提交考试的数据
var records = await Db.Queryable<Ghre_ExamRecord>()
.Where(x =>
x.ExamDate != null &&
x.ExamDate.Value.Date == DateTime.Now.Date &&
x.ExamDate.Value.Date == now.Date &&
x.IsPass == true &&
(x.IsIssueCertificate == null || x.IsIssueCertificate == false))
.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++)
{
var record = records[i];
@ -1471,7 +1479,43 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
{
var rule = rules1[j];
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;
}
await Db.Insertable(certificates).ExecuteReturnSnowflakeIdAsync();
await Db.Updateable(records)
.UpdateColumns(it => new { it.IsIssueCertificate }, true)
.ExecuteCommandAsync();

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

Loading…
Cancel
Save