上岗证增加多选课程或课程场景的功能

master
xiaochanghai 4 months ago
parent 4f8a47033e
commit 0905b91c21
  1. 4300
      Model/Tiobon.Web.pdm
  2. 40
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  3. 26
      Tiobon.Core.Model/Base/Ghre/Ghre_CertificateRule.Dto.Base.cs
  4. 18
      Tiobon.Core.Model/Models/Ghre/Ghre_CertificateRule.cs
  5. 10
      Tiobon.Core.Model/View/Ghre/Ghre_CertificateRule.Dto.View.cs
  6. 83
      Tiobon.Core.Services/Ghre/Ghre_CertificateRuleServices.cs
  7. 40
      Tiobon.Core/Tiobon.Core.Model.xml

File diff suppressed because it is too large Load Diff

@ -2460,6 +2460,26 @@
预留字段12
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRuleBase.CourseSceneId1">
<summary>
课程场景ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRuleBase.CourseId1">
<summary>
课程ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRuleBase.CourseSceneIds">
<summary>
课程场景ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRuleBase.CourseIds">
<summary>
课程ID
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ConfigBase">
<summary>
参数配置 (Dto.Base)
@ -17536,6 +17556,16 @@
预留字段12
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRule.CourseSceneId1">
<summary>
课程场景ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRule.CourseId1">
<summary>
课程ID
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_Config">
<summary>
参数配置 (Model)
@ -30107,6 +30137,16 @@
发放规则
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRuleDto.CourseSceneIds">
<summary>
课程场景ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRuleDto.CourseIds">
<summary>
课程ID
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ConfigDto">
<summary>
参数配置(Dto.View)

@ -6,9 +6,9 @@
*
* Ver
*
*V0.01 2024/7/18 14:15:12 SimonHsiao
*V0.01 2025/2/24 16:33:11 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
*
*  
* SimonHsiao
@ -169,4 +169,26 @@ public class Ghre_CertificateRuleBase
/// 预留字段12
/// </summary>
public int? ReverseI2 { get; set; }
/// <summary>
/// 课程场景ID
/// </summary>
[Display(Name = "CourseSceneId1"), Description("课程场景ID"), MaxLength(2000, ErrorMessage = "课程场景ID 不能超过 2000 个字符")]
public string CourseSceneId1 { get; set; }
/// <summary>
/// 课程ID
/// </summary>
[Display(Name = "CourseId1"), Description("课程ID"), MaxLength(2000, ErrorMessage = "课程ID 不能超过 2000 个字符")]
public string CourseId1 { get; set; }
/// <summary>
/// 课程场景ID
/// </summary>
public List<long> CourseSceneIds { get; set; }
/// <summary>
/// 课程ID
/// </summary>
public List<long> CourseIds { get; set; }
}

@ -6,9 +6,9 @@
*
* Ver
*
*V0.01 2024/7/18 14:15:12 SimonHsiao
*V0.01 2025/2/24 16:33:11 SimonHsiao
*
* Copyright(c) 2024 Tiobon Corporation. All Rights Reserved.
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
*
*  
* SimonHsiao
@ -33,7 +33,7 @@ public class Ghre_CertificateRule : BasePoco
/// <summary>
/// 规则编号
/// </summary>
[Display(Name = "RuleNo"), Description("规则编号"), MaxLength(32, ErrorMessage = "规则编号 不能超过 32 个字符"), EntityColumn]
[Display(Name = "RuleNo"), Description("规则编号"), MaxLength(32, ErrorMessage = "规则编号 不能超过 32 个字符")]
public string RuleNo { get; set; }
/// <summary>
@ -170,4 +170,16 @@ public class Ghre_CertificateRule : BasePoco
/// 预留字段12
/// </summary>
public int? ReverseI2 { get; set; }
/// <summary>
/// 课程场景ID
/// </summary>
[Display(Name = "CourseSceneId1"), Description("课程场景ID"), MaxLength(2000, ErrorMessage = "课程场景ID 不能超过 2000 个字符")]
public string CourseSceneId1 { get; set; }
/// <summary>
/// 课程ID
/// </summary>
[Display(Name = "CourseId1"), Description("课程ID"), MaxLength(2000, ErrorMessage = "课程ID 不能超过 2000 个字符")]
public string CourseId1 { get; set; }
}

@ -48,4 +48,14 @@ public class Ghre_CertificateRuleDto : Ghre_CertificateRule
/// </summary>
public string SendRuleLabel { get; set; }
public string SceneOrCourseName { get; set; }
/// <summary>
/// 课程场景ID
/// </summary>
public List<long?> CourseSceneIds { get; set; } = new List<long?>();
/// <summary>
/// 课程ID
/// </summary>
public List<long?> CourseIds { get; set; } = new List<long?>();
}

@ -1,4 +1,8 @@
namespace Tiobon.Core.Services;
using static Tiobon.Core.Model.Consts;
using Tiobon.Core.Common.DB.Dapper.Extensions;
using System.Collections.Generic;
namespace Tiobon.Core.Services;
/// <summary>
/// 培训证书规则 (服务)
@ -50,10 +54,37 @@ public class Ghre_CertificateRuleServices : BaseServices<Ghre_CertificateRule, G
condition = condition1;
else condition += " AND " + condition1;
var data = await base.QueryFilterPage(filter, condition, IsEnable);
var courseIds = data.result.DT_TableDataT1.Where(x => x.CourseSceneId != null || x.CourseId != null).Select(x => x.CourseId ?? x.CourseSceneId).Distinct().ToList();
var courseIds = new List<long?>();
var courseSceneIds = new List<long?>();
data.result.DT_TableDataT1.ForEach(x =>
{
if (x.CourseId1.IsNotEmptyOrNull())
{
x.CourseIds = JsonHelper.JsonToObj<List<long?>>(x.CourseId1);
courseIds.AddRange(x.CourseIds);
}
else if (x.CourseId != null)
{
courseIds.Add(x.CourseId);
x.CourseIds = [x.CourseId];
}
if (x.CourseSceneId1.IsNotEmptyOrNull())
{
x.CourseSceneIds = JsonHelper.JsonToObj<List<long?>>(x.CourseSceneId1);
courseSceneIds.AddRange(x.CourseSceneIds);
}
else if (x.CourseSceneId != null)
{
courseSceneIds.Add(x.CourseSceneId);
x.CourseSceneIds = [x.CourseSceneId];
}
});
var courses = await _ghre_CourseServices.Query(x => courseIds.Contains(x.Id));
var courseScenes = await _ghre_CourseSceneServices.Query(x => courseIds.Contains(x.Id));
var courseScenes = await _ghre_CourseSceneServices.Query(x => courseSceneIds.Contains(x.Id));
data.result.DT_TableDataT1.ForEach(async x =>
{
@ -69,13 +100,51 @@ public class Ghre_CertificateRuleServices : BaseServices<Ghre_CertificateRule, G
else
if (x.ValidityType == "Option")
x.ValidityLabel = $"有效期至【{x.ValidityTime.Value.ToString("yyyy-MM-dd")}】";
if (x.CourseSceneId != null)
x.SceneOrCourseName = courseScenes.FirstOrDefault(o => o.Id == x.CourseSceneId)?.SceneName;
if (x.CourseIds != null && x.CourseIds.Any())
{
x.SceneOrCourseName = string.Join("、", courses.Where(o => x.CourseIds.Contains(o.Id)).Select(o => o.CourseName));
}
//
if (x.CourseId != null)
x.SceneOrCourseName = courses.FirstOrDefault(o => o.Id == x.CourseId)?.CourseName;
if (x.CourseSceneIds != null && x.CourseSceneIds.Any())
x.SceneOrCourseName = string.Join("、", courseScenes.Where(o => x.CourseSceneIds.Contains(o.Id)).Select(o => o.SceneName));
});
return data;
}
public override async Task<long> Add(InsertGhre_CertificateRuleInput entity)
{
if (entity.CourseSceneIds != null)
entity.CourseSceneId1 = JsonHelper.ObjToJson(entity.CourseSceneIds);
if (entity.CourseIds != null)
entity.CourseId1 = JsonHelper.ObjToJson(entity.CourseIds);
var result = await base.Add(entity);
return result;
}
public override async Task<bool> Update(long Id, EditGhre_CertificateRuleInput editModel)
{
if (editModel.CourseSceneIds != null)
editModel.CourseSceneId1 = JsonHelper.ObjToJson(editModel.CourseSceneIds);
if (editModel.CourseIds != null)
editModel.CourseId1 = JsonHelper.ObjToJson(editModel.CourseIds);
var result = await base.Update(Id, editModel);
return result;
}
public override async Task<ServiceFormResult<Ghre_CertificateRuleDto>> QueryForm(QueryForm body)
{
var result = await base.QueryForm(body);
string CourseId1 = result.result.DT_TableDataT1[0].CourseId1;
if (!string.IsNullOrWhiteSpace(CourseId1))
result.result.DT_TableDataT1[0].CourseIds = JsonConvert.DeserializeObject<List<long?>>(CourseId1);
string CourseSceneId1 = result.result.DT_TableDataT1[0].CourseSceneId1;
if (!string.IsNullOrWhiteSpace(CourseSceneId1))
result.result.DT_TableDataT1[0].CourseSceneIds = JsonConvert.DeserializeObject<List<long?>>(CourseSceneId1);
return result;
}
}

@ -2460,6 +2460,26 @@
预留字段12
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRuleBase.CourseSceneId1">
<summary>
课程场景ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRuleBase.CourseId1">
<summary>
课程ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRuleBase.CourseSceneIds">
<summary>
课程场景ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRuleBase.CourseIds">
<summary>
课程ID
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ConfigBase">
<summary>
参数配置 (Dto.Base)
@ -17536,6 +17556,16 @@
预留字段12
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRule.CourseSceneId1">
<summary>
课程场景ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRule.CourseId1">
<summary>
课程ID
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_Config">
<summary>
参数配置 (Model)
@ -30107,6 +30137,16 @@
发放规则
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRuleDto.CourseSceneIds">
<summary>
课程场景ID
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateRuleDto.CourseIds">
<summary>
课程ID
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_ConfigDto">
<summary>
参数配置(Dto.View)

Loading…
Cancel
Save