孤兰 2 months ago
commit 22b85a0627
  1. 6378
      Model/Tiobon.Web.pdm
  2. 11
      Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordController.cs
  3. 62
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  4. 7
      Tiobon.Core.Api/Tiobon.Core.xml
  5. 3
      Tiobon.Core.Common/Helper/DateTimeHelper.cs
  6. 2
      Tiobon.Core.IServices/Ghre/IGhre_ExamRecordServices.cs
  7. 16
      Tiobon.Core.Model/Base/Ghre/Ghre_ExternalTrainApplyOrder_Boltone.Dto.Base.cs
  8. 8
      Tiobon.Core.Model/Base/Ghre/Ghre_Request.Dto.Base.cs
  9. 8
      Tiobon.Core.Model/Base/Ghre/Ghre_StudyRecord.Dto.Base.cs
  10. 8
      Tiobon.Core.Model/Base/Ghre/Ghre_SurveyQuestion.Dto.Base.cs
  11. 3
      Tiobon.Core.Model/Base/Ghrh/Ghrh_ResumeEduBG.Dto.Base.cs
  12. 1
      Tiobon.Core.Model/Base/Ghrh/Ghrh_ResumeTraining.Dto.Base.cs
  13. 4
      Tiobon.Core.Model/Consts.cs
  14. 2
      Tiobon.Core.Model/Edit/Ghrh/Ghrh_ResumeEduBG.Dto.EditInput.cs
  15. 2
      Tiobon.Core.Model/Edit/Ghrh/Ghrh_ResumeTraining.Dto.EditInput.cs
  16. 615
      Tiobon.Core.Model/Models/Ghre/Ghre_ExternalTrainApplyOrder_Boltone.cs
  17. 8
      Tiobon.Core.Model/Models/Ghre/Ghre_Request.cs
  18. 8
      Tiobon.Core.Model/Models/Ghre/Ghre_StudyRecord.cs
  19. 8
      Tiobon.Core.Model/Models/Ghre/Ghre_SurveyQuestion.cs
  20. 5
      Tiobon.Core.Model/View/Ghrh/Ghrh_ResumeEduBG.Dto.View.cs
  21. 4
      Tiobon.Core.Model/View/Ghrh/Ghrh_ResumeLicence.Dto.View.cs
  22. 6
      Tiobon.Core.Model/View/Ghrh/Ghrh_ResumeTraining.Dto.View.cs
  23. 2
      Tiobon.Core.Model/View/Ghrh/Ghrh_ResumeWorkExp.Dto.View.cs
  24. 3
      Tiobon.Core.Model/ViewModels/Extend/Ghre_ExamRecordExtend.cs
  25. 6
      Tiobon.Core.Model/ViewModels/Extend/InsertGhre_SurveyExtend.cs
  26. 8
      Tiobon.Core.Services/CommonServices.cs
  27. 2
      Tiobon.Core.Services/Ghra/Ghra_StaffServices.cs
  28. 24
      Tiobon.Core.Services/Ghre/Ghre_CourseServices.cs
  29. 84
      Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs
  30. 20
      Tiobon.Core.Services/Ghre/Ghre_ExamServices.cs
  31. 4
      Tiobon.Core.Services/Ghre/Ghre_RequestServices.cs
  32. 32
      Tiobon.Core.Services/Ghre/Ghre_StudyRecordServices.cs
  33. 25
      Tiobon.Core.Services/Ghre/Ghre_StudyRuleServices.cs
  34. 26
      Tiobon.Core.Services/Ghre/Ghre_SurveyServices.cs
  35. 6
      Tiobon.Core.Services/Ghre/Ghre_TitleSkill_BoltoneServices.cs
  36. 42
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeEduBGServices.cs
  37. 48
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeLicenceServices.cs
  38. 44
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeTrainingServices.cs
  39. 46
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeWorkExpServices.cs
  40. 52
      Tiobon.Core/Tiobon.Core.Model.xml
  41. 7
      Tiobon.Core/Tiobon.Core.xml

File diff suppressed because it is too large Load Diff

@ -280,4 +280,15 @@ public class Ghre_ExamRecordController : BaseController<IGhre_ExamRecordServices
{ {
return await _service.SubmitAttachment(examRecordId, attachments); return await _service.SubmitAttachment(examRecordId, attachments);
} }
/// <summary>
/// 查询考试组
/// </summary>
/// <param name="examRecordId"></param>
/// <returns></returns>
[HttpPost("QueryGroups/{examRecordId}")]
public async Task<ServiceResult<List<ExamGroup>>> QueryGroups(long examRecordId)
{
return await _service.QueryGroups(examRecordId);
}
} }

@ -5740,6 +5740,16 @@
预留字段12 预留字段12
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExternalTrainApplyOrder_BoltoneBase.SchoolName1">
<summary>
SchoolName1
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExternalTrainApplyOrder_BoltoneBase.CourseName1">
<summary>
CourseName1
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_MultipleTitleBase"> <member name="T:Tiobon.Core.Model.Models.Ghre_MultipleTitleBase">
<summary> <summary>
多岗维护 (Dto.Base) 多岗维护 (Dto.Base)
@ -7345,6 +7355,11 @@
系统内置 系统内置
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_RequestBase.OutSideOrg">
<summary>
外训机构
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_RequiredCourseBase"> <member name="T:Tiobon.Core.Model.Models.Ghre_RequiredCourseBase">
<summary> <summary>
必选修查询 (Dto.Base) 必选修查询 (Dto.Base)
@ -8115,6 +8130,11 @@
是否发放学分 是否发放学分
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_StudyRecordBase.CompleteStatus">
<summary>
完成状态
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_StudyRecordDetailBase"> <member name="T:Tiobon.Core.Model.Models.Ghre_StudyRecordDetailBase">
<summary> <summary>
培训记录明细 (Dto.Base) 培训记录明细 (Dto.Base)
@ -9020,6 +9040,11 @@
预留字段12 预留字段12
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_SurveyQuestionBase.WordCloudKeywords">
<summary>
词云图关键字
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_SurveyRecordBase"> <member name="T:Tiobon.Core.Model.Models.Ghre_SurveyRecordBase">
<summary> <summary>
Ghre_SurveyRecord (Dto.Base) Ghre_SurveyRecord (Dto.Base)
@ -13890,7 +13915,7 @@
预留字段11 预留字段11
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghrh_ResumeTrainingBase.ReverseI2"> <member name="P:Tiobon.Core.Model.Models.Ghrh_ResumeTrainingBase.IsPass1">
<summary> <summary>
预留字段12 预留字段12
</summary> </summary>
@ -24352,6 +24377,16 @@
预留字段12 预留字段12
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExternalTrainApplyOrder_Boltone.SchoolName1">
<summary>
SchoolName1
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExternalTrainApplyOrder_Boltone.CourseName1">
<summary>
CourseName1
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_MultipleTitle"> <member name="T:Tiobon.Core.Model.Models.Ghre_MultipleTitle">
<summary> <summary>
多岗维护 (Model) 多岗维护 (Model)
@ -25937,6 +25972,11 @@
系统内置 系统内置
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Request.OutSideOrg">
<summary>
外训机构
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_RequiredCourse"> <member name="T:Tiobon.Core.Model.Models.Ghre_RequiredCourse">
<summary> <summary>
必选修查询 (Model) 必选修查询 (Model)
@ -26637,6 +26677,11 @@
是否发放学分 是否发放学分
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_StudyRecord.CompleteStatus">
<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)
@ -27542,6 +27587,11 @@
预留字段12 预留字段12
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_SurveyQuestion.WordCloudKeywords">
<summary>
词云图关键字
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_SurveyRecord"> <member name="T:Tiobon.Core.Model.Models.Ghre_SurveyRecord">
<summary> <summary>
Ghre_SurveyRecord (Model) Ghre_SurveyRecord (Model)
@ -39513,6 +39563,11 @@
必修规则 必修规则
</summary> </summary>
</member> </member>
<member name="F:Tiobon.Core.Model.Consts.DIC_EXAM_STAFF_SOURCE.MANUAL_ELECTIVE">
<summary>
手动选修
</summary>
</member>
<member name="T:Tiobon.Core.Model.Consts.DIC_TRAINING_STUDY_RULE_TRAIN_TYPE"> <member name="T:Tiobon.Core.Model.Consts.DIC_TRAINING_STUDY_RULE_TRAIN_TYPE">
<summary> <summary>
培训规则种类 培训规则种类
@ -40398,6 +40453,11 @@
图标 图标
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.Ghre_SurveyQuestionExtendBase.WordCloudKeywords">
<summary>
词云图关键字
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.Ghre_SurveyQuestionExtendBase.RemarkSz"> <member name="P:Tiobon.Core.Model.ViewModels.Extend.Ghre_SurveyQuestionExtendBase.RemarkSz">
<summary> <summary>
备注 备注

@ -1101,6 +1101,13 @@
<param name="examRecordId"></param> <param name="examRecordId"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamRecordController.QueryGroups(System.Int64)">
<summary>
查询考试组
</summary>
<param name="examRecordId"></param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordDetailController"> <member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordDetailController">
<summary> <summary>
Ghre_ExamRecordDetail(Controller) Ghre_ExamRecordDetail(Controller)

@ -222,6 +222,9 @@ public class DateTimeHelper
/// <returns></returns> /// <returns></returns>
public static string ConvertToSecondString(object dateTime) public static string ConvertToSecondString(object dateTime)
{ {
if (dateTime == null)
return "";
if (string.IsNullOrEmpty(Convert.ToString(dateTime))) if (string.IsNullOrEmpty(Convert.ToString(dateTime)))
{ {
return ""; return "";

@ -36,4 +36,6 @@ public interface IGhre_ExamRecordServices : IBaseServices<Ghre_ExamRecord, Ghre_
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
Task<ServiceResult> IssueCertificate(); Task<ServiceResult> IssueCertificate();
Task<ServiceResult<List<ExamGroup>>> QueryGroups(long examRecordId);
} }

@ -6,7 +6,7 @@
* *
* Ver * Ver
* *
*V0.01 2025/4/11 11:35:25 SimonHsiao *V0.01 2025/4/25 12:00:26 SimonHsiao
* *
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
* *
@ -319,6 +319,19 @@ public class Ghre_ExternalTrainApplyOrder_BoltoneBase
/// </summary> /// </summary>
public int? ReverseI2 { get; set; } public int? ReverseI2 { get; set; }
/// <summary>
/// SchoolName1
/// </summary>
[Display(Name = "SchoolName1"), Description("SchoolName1"), MaxLength(128, ErrorMessage = "SchoolName1 不能超过 128 个字符")]
public string SchoolName1 { get; set; }
/// <summary>
/// CourseName1
/// </summary>
[Display(Name = "CourseName1"), Description("CourseName1"), MaxLength(128, ErrorMessage = "CourseName1 不能超过 128 个字符")]
public string CourseName1 { get; set; }
public List<Ghre_Attachment1> ExternalAttachments { get; set; } = new List<Ghre_Attachment1>(); public List<Ghre_Attachment1> ExternalAttachments { get; set; } = new List<Ghre_Attachment1>();
public List<Ghre_Attachment1> ContractAttachments { get; set; } = new List<Ghre_Attachment1>(); public List<Ghre_Attachment1> ContractAttachments { get; set; } = new List<Ghre_Attachment1>();
@ -328,3 +341,4 @@ public class Ghre_ExternalTrainApplyOrder_BoltoneBase
public string AttachmentTemplateLink { get; set; } = "/Advanced/files/外训申请附件.zip" public string AttachmentTemplateLink { get; set; } = "/Advanced/files/外训申请附件.zip"
; ;
} }

@ -6,7 +6,7 @@
* *
* Ver * Ver
* *
*V0.01 2025/4/8 11:44:56 SimonHsiao *V0.01 2025/4/25 15:13:56 SimonHsiao
* *
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
* *
@ -322,4 +322,10 @@ public class Ghre_RequestBase
/// 系统内置 /// 系统内置
/// </summary> /// </summary>
public int? BuiltIn { get; set; } public int? BuiltIn { get; set; }
/// <summary>
/// 外训机构
/// </summary>
[Display(Name = "OutSideOrg"), Description("外训机构"), MaxLength(128, ErrorMessage = "外训机构 不能超过 128 个字符")]
public string OutSideOrg { get; set; }
} }

@ -6,7 +6,7 @@
* *
* Ver * Ver
* *
*V0.01 2025/3/26 16:46:15 SimonHsiao *V0.01 2025/4/29 11:11:35 SimonHsiao
* *
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
* *
@ -234,4 +234,10 @@ public class Ghre_StudyRecordBase
/// 是否发放学分 /// 是否发放学分
/// </summary> /// </summary>
public bool? IsIssueCredit { get; set; } public bool? IsIssueCredit { get; set; }
/// <summary>
/// 完成状态
/// </summary>
[Display(Name = "CompleteStatus"), Description("完成状态"), MaxLength(32, ErrorMessage = "完成状态 不能超过 32 个字符")]
public string CompleteStatus { get; set; }
} }

@ -6,7 +6,7 @@
* *
* Ver * Ver
* *
*V0.01 2025/4/1 15:14:42 SimonHsiao *V0.01 2025/4/27 11:47:54 SimonHsiao
* *
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
* *
@ -154,4 +154,10 @@ public class Ghre_SurveyQuestionBase
/// 预留字段12 /// 预留字段12
/// </summary> /// </summary>
public int? ReverseI2 { get; set; } public int? ReverseI2 { get; set; }
/// <summary>
/// 词云图关键字
/// </summary>
[Display(Name = "WordCloudKeywords"), Description("词云图关键字"), MaxLength(2000, ErrorMessage = "词云图关键字 不能超过 2000 个字符")]
public string WordCloudKeywords { get; set; }
} }

@ -141,4 +141,7 @@ public class Ghrh_ResumeEduBGBase
/// 预留字段12 /// 预留字段12
/// </summary> /// </summary>
public int? ReverseI2 { get; set; } public int? ReverseI2 { get; set; }
public int? IsGraduate1 { get; set; }
} }

@ -140,5 +140,6 @@ public class Ghrh_ResumeTrainingBase
/// <summary> /// <summary>
/// 预留字段12 /// 预留字段12
/// </summary> /// </summary>
public int? IsPass1 { get; set; }
public int? ReverseI2 { get; set; } public int? ReverseI2 { get; set; }
} }

@ -152,6 +152,10 @@ public class Consts
/// 必修规则 /// 必修规则
/// </summary> /// </summary>
public const string STUDY_RULE_REQUIRED = "StudyRuleRequired"; public const string STUDY_RULE_REQUIRED = "StudyRuleRequired";
/// <summary>
/// 手动选修
/// </summary>
public const string MANUAL_ELECTIVE = "ManualElective";
} }
#endregion #endregion

@ -24,5 +24,5 @@ namespace Tiobon.Core.Model.Models;
public class EditGhrh_ResumeEduBGInput : Ghrh_ResumeEduBGBase public class EditGhrh_ResumeEduBGInput : Ghrh_ResumeEduBGBase
{ {
public List<Ghre_Attachment> AttachmentIDs { get; set; } public List<Ghre_Attachment> AttachmentIDs { get; set; } = new List<Ghre_Attachment>();
} }

@ -24,4 +24,6 @@ namespace Tiobon.Core.Model.Models;
public class EditGhrh_ResumeTrainingInput : Ghrh_ResumeTrainingBase public class EditGhrh_ResumeTrainingInput : Ghrh_ResumeTrainingBase
{ {
public List<Ghre_Attachment> AttachmentIDs { get; set; } public List<Ghre_Attachment> AttachmentIDs { get; set; }
} }

@ -6,7 +6,7 @@
* *
* Ver * Ver
* *
*V0.01 2025/4/11 11:35:25 SimonHsiao *V0.01 2025/4/25 12:00:26 SimonHsiao
* *
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
* *
@ -18,308 +18,319 @@ using System.ComponentModel;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using SqlSugar; using SqlSugar;
namespace Tiobon.Core.Model.Models namespace Tiobon.Core.Model.Models;
/// <summary>
/// 外训申请_宝连通 (Model)
/// </summary>
[SugarTable("Ghre_ExternalTrainApplyOrder_Boltone", "Ghre_ExternalTrainApplyOrder_Boltone"), Entity(TableCnName = "外训申请_宝连通", TableName = "Ghre_ExternalTrainApplyOrder_Boltone")]
public class Ghre_ExternalTrainApplyOrder_Boltone : BasePoco
{ {
/// <summary> /// <summary>
/// 外训申请_宝连通 (Model) /// 发起时间
/// </summary> /// </summary>
[SugarTable("Ghre_ExternalTrainApplyOrder_Boltone", "Ghre_ExternalTrainApplyOrder_Boltone"), Entity(TableCnName = "外训申请_宝连通", TableName = "Ghre_ExternalTrainApplyOrder_Boltone")] public DateTime? ApplicantTime { get; set; }
public class Ghre_ExternalTrainApplyOrder_Boltone : BasePoco
{ /// <summary>
/// 发起人ID
/// <summary> /// </summary>
/// 发起时间 public int? ApplicantId { get; set; }
/// </summary>
public DateTime? ApplicantTime { get; set; } /// <summary>
/// 发起人部门ID
/// <summary> /// </summary>
/// 发起人ID public int? ApplicantDeptId { get; set; }
/// </summary>
public int? ApplicantId { get; set; } /// <summary>
/// 培训类型
/// <summary> /// </summary>
/// 发起人部门ID [Display(Name = "TrainType"), Description("培训类型"), MaxLength(32, ErrorMessage = "培训类型 不能超过 32 个字符")]
/// </summary> public string TrainType { get; set; }
public int? ApplicantDeptId { get; set; }
/// <summary>
/// <summary> /// 受训人员
/// 培训类型 /// </summary>
/// </summary> public int? StaffId { get; set; }
[Display(Name = "TrainType"), Description("培训类型"), MaxLength(32, ErrorMessage = "培训类型 不能超过 32 个字符")]
public string TrainType { get; set; } /// <summary>
/// 培训开始时间
/// <summary> /// </summary>
/// 受训人员 public DateTime? BeginTime { get; set; }
/// </summary>
public int? StaffId { get; set; } /// <summary>
/// 培训结束时间
/// <summary> /// </summary>
/// 培训开始时间 public DateTime? EndTime { get; set; }
/// </summary>
public DateTime? BeginTime { get; set; } /// <summary>
/// 培训地点
/// <summary> /// </summary>
/// 培训结束时间 [Display(Name = "Address"), Description("培训地点"), MaxLength(256, ErrorMessage = "培训地点 不能超过 256 个字符")]
/// </summary> public string Address { get; set; }
public DateTime? EndTime { get; set; }
/// <summary>
/// <summary> /// 培训机构
/// 培训地点 /// </summary>
/// </summary> public long? SchoolId { get; set; }
[Display(Name = "Address"), Description("培训地点"), MaxLength(256, ErrorMessage = "培训地点 不能超过 256 个字符")]
public string Address { get; set; } /// <summary>
/// 课程ID
/// <summary> /// </summary>
/// 培训机构 public long? CourseId { get; set; }
/// </summary>
public long? SchoolId { get; set; } /// <summary>
/// 课程大纲
/// <summary> /// </summary>
/// 课程ID [Display(Name = "CourseOutline"), Description("课程大纲"), MaxLength(2000, ErrorMessage = "课程大纲 不能超过 2000 个字符")]
/// </summary> public string CourseOutline { get; set; }
public long? CourseId { get; set; }
/// <summary>
/// <summary> /// 受训目的
/// 课程大纲 /// </summary>
/// </summary> [Display(Name = "TrainGoal"), Description("受训目的"), MaxLength(2000, ErrorMessage = "受训目的 不能超过 2000 个字符")]
[Display(Name = "CourseOutline"), Description("课程大纲"), MaxLength(2000, ErrorMessage = "课程大纲 不能超过 2000 个字符")] public string TrainGoal { get; set; }
public string CourseOutline { get; set; }
/// <summary>
/// <summary> /// 费用
/// 受训目的 /// </summary>
/// </summary> [Display(Name = "Cost"), Description("费用"), Column(TypeName = "decimal(20,2)")]
[Display(Name = "TrainGoal"), Description("受训目的"), MaxLength(2000, ErrorMessage = "受训目的 不能超过 2000 个字符")] public decimal? Cost { get; set; }
public string TrainGoal { get; set; }
/// <summary>
/// <summary> /// 是否签订服务协议
/// 费用 /// </summary>
/// </summary> [Display(Name = "IsSignContract"), Description("是否签订服务协议"), MaxLength(32, ErrorMessage = "是否签订服务协议 不能超过 32 个字符")]
[Display(Name = "Cost"), Description("费用"), Column(TypeName = "decimal(20,2)")] public string IsSignContract { get; set; }
public decimal? Cost { get; set; }
/// <summary>
/// <summary> /// 服务协议
/// 是否签订服务协议 /// </summary>
/// </summary> [Display(Name = "ContractContent"), Description("服务协议"), MaxLength(2000, ErrorMessage = "服务协议 不能超过 2000 个字符")]
[Display(Name = "IsSignContract"), Description("是否签订服务协议"), MaxLength(32, ErrorMessage = "是否签订服务协议 不能超过 32 个字符")] public string ContractContent { get; set; }
public string IsSignContract { get; set; }
/// <summary>
/// <summary> /// 服务协议开始日期
/// 服务协议 /// </summary>
/// </summary> public DateTime? ContractBeginTime { get; set; }
[Display(Name = "ContractContent"), Description("服务协议"), MaxLength(2000, ErrorMessage = "服务协议 不能超过 2000 个字符")]
public string ContractContent { get; set; } /// <summary>
/// 服务协议结束日期
/// <summary> /// </summary>
/// 服务协议开始日期 public DateTime? ContractEndTime { get; set; }
/// </summary>
public DateTime? ContractBeginTime { get; set; } /// <summary>
/// 培训结果
/// <summary> /// </summary>
/// 服务协议结束日期 [Display(Name = "TrainResult"), Description("培训结果"), MaxLength(2000, ErrorMessage = "培训结果 不能超过 2000 个字符")]
/// </summary> public string TrainResult { get; set; }
public DateTime? ContractEndTime { get; set; }
/// <summary>
/// <summary> /// 证件类型
/// 培训结果 /// </summary>
/// </summary> [Display(Name = "CertificateType"), Description("证件类型"), MaxLength(32, ErrorMessage = "证件类型 不能超过 32 个字符")]
[Display(Name = "TrainResult"), Description("培训结果"), MaxLength(2000, ErrorMessage = "培训结果 不能超过 2000 个字符")] public string CertificateType { get; set; }
public string TrainResult { get; set; }
/// <summary>
/// <summary> /// 证件编号
/// 证件类型 /// </summary>
/// </summary> [Display(Name = "CertificateNo"), Description("证件编号"), MaxLength(256, ErrorMessage = "证件编号 不能超过 256 个字符")]
[Display(Name = "CertificateType"), Description("证件类型"), MaxLength(32, ErrorMessage = "证件类型 不能超过 32 个字符")] public string CertificateNo { get; set; }
public string CertificateType { get; set; }
/// <summary>
/// <summary> /// 证件有效开始日期
/// 证件编号 /// </summary>
/// </summary> public DateTime? CertificateBeginTime { get; set; }
[Display(Name = "CertificateNo"), Description("证件编号"), MaxLength(256, ErrorMessage = "证件编号 不能超过 256 个字符")]
public string CertificateNo { get; set; } /// <summary>
/// 证件有效结束日期
/// <summary> /// </summary>
/// 证件有效开始日期 public DateTime? CertificateEndTime { get; set; }
/// </summary>
public DateTime? CertificateBeginTime { get; set; } /// <summary>
/// 培训机构评价
/// <summary> /// </summary>
/// 证件有效结束日期 [Display(Name = "SchoolEval"), Description("培训机构评价"), MaxLength(100, ErrorMessage = "培训机构评价 不能超过 100 个字符")]
/// </summary> public string SchoolEval { get; set; }
public DateTime? CertificateEndTime { get; set; }
/// <summary>
/// <summary> /// 培训成果确认
/// 培训机构评价 /// </summary>
/// </summary> [Display(Name = "SchoolOutcomeConfirm"), Description("培训成果确认"), MaxLength(32, ErrorMessage = "培训成果确认 不能超过 32 个字符")]
[Display(Name = "SchoolEval"), Description("培训机构评价"), MaxLength(100, ErrorMessage = "培训机构评价 不能超过 100 个字符")] public string SchoolOutcomeConfirm { get; set; }
public string SchoolEval { get; set; }
/// <summary>
/// <summary> /// WorkID
/// 培训成果确认 /// </summary>
/// </summary> public int? WorkID { get; set; }
[Display(Name = "SchoolOutcomeConfirm"), Description("培训成果确认"), MaxLength(32, ErrorMessage = "培训成果确认 不能超过 32 个字符")]
public string SchoolOutcomeConfirm { get; set; } /// <summary>
/// WorkNo
/// <summary> /// </summary>
/// WorkID [Display(Name = "WorkNo"), Description("WorkNo"), MaxLength(100, ErrorMessage = "WorkNo 不能超过 100 个字符")]
/// </summary> public string WorkNo { get; set; }
public int? WorkID { get; set; }
/// <summary>
/// <summary> /// ToDoType
/// WorkNo /// </summary>
/// </summary> [Display(Name = "ToDoType"), Description("ToDoType"), MaxLength(100, ErrorMessage = "ToDoType 不能超过 100 个字符")]
[Display(Name = "WorkNo"), Description("WorkNo"), MaxLength(100, ErrorMessage = "WorkNo 不能超过 100 个字符")] public string ToDoType { get; set; }
public string WorkNo { get; set; }
/// <summary>
/// <summary> /// BatchSID
/// ToDoType /// </summary>
/// </summary> [Display(Name = "BatchSID"), Description("BatchSID"), MaxLength(100, ErrorMessage = "BatchSID 不能超过 100 个字符")]
[Display(Name = "ToDoType"), Description("ToDoType"), MaxLength(100, ErrorMessage = "ToDoType 不能超过 100 个字符")] public string BatchSID { get; set; }
public string ToDoType { get; set; }
/// <summary>
/// <summary> /// WorkState
/// BatchSID /// </summary>
/// </summary> public int? WorkState { get; set; }
[Display(Name = "BatchSID"), Description("BatchSID"), MaxLength(100, ErrorMessage = "BatchSID 不能超过 100 个字符")]
public string BatchSID { get; set; } /// <summary>
/// ShiftID
/// <summary> /// </summary>
/// WorkState public int? ShiftID { get; set; }
/// </summary>
public int? WorkState { get; set; } /// <summary>
/// ConfirmUserID
/// <summary> /// </summary>
/// ShiftID public int? ConfirmUserID { get; set; }
/// </summary>
public int? ShiftID { get; set; } /// <summary>
/// ConfirmTime
/// <summary> /// </summary>
/// ConfirmUserID public DateTime? ConfirmTime { get; set; }
/// </summary>
public int? ConfirmUserID { get; set; } /// <summary>
/// ConfirmComment
/// <summary> /// </summary>
/// ConfirmTime [Display(Name = "ConfirmComment"), Description("ConfirmComment"), MaxLength(2000, ErrorMessage = "ConfirmComment 不能超过 2000 个字符")]
/// </summary> public string ConfirmComment { get; set; }
public DateTime? ConfirmTime { get; set; }
/// <summary>
/// <summary> /// 同意人
/// ConfirmComment /// </summary>
/// </summary> public long? AgreeUserId { get; set; }
[Display(Name = "ConfirmComment"), Description("ConfirmComment"), MaxLength(2000, ErrorMessage = "ConfirmComment 不能超过 2000 个字符")]
public string ConfirmComment { get; set; } /// <summary>
/// 同意时间
/// <summary> /// </summary>
/// 同意人 public DateTime? AgreeTime { get; set; }
/// </summary>
public long? AgreeUserId { get; set; } /// <summary>
/// 同意理由
/// <summary> /// </summary>
/// 同意时间 [Display(Name = "AgreeReason"), Description("同意理由"), MaxLength(2000, ErrorMessage = "同意理由 不能超过 2000 个字符")]
/// </summary> public string AgreeReason { get; set; }
public DateTime? AgreeTime { get; set; }
/// <summary>
/// <summary> /// 拒绝人
/// 同意理由 /// </summary>
/// </summary> public long? RefuseUserId { get; set; }
[Display(Name = "AgreeReason"), Description("同意理由"), MaxLength(2000, ErrorMessage = "同意理由 不能超过 2000 个字符")]
public string AgreeReason { get; set; } /// <summary>
/// 拒绝时间
/// <summary> /// </summary>
/// 拒绝人 public DateTime? RefuseTime { get; set; }
/// </summary>
public long? RefuseUserId { get; set; } /// <summary>
/// 拒绝理由
/// <summary> /// </summary>
/// 拒绝时间 [Display(Name = "RefuseReason"), Description("拒绝理由"), MaxLength(2000, ErrorMessage = "拒绝理由 不能超过 2000 个字符")]
/// </summary> public string RefuseReason { get; set; }
public DateTime? RefuseTime { get; set; }
/// <summary>
/// <summary> /// 备注
/// 拒绝理由 /// </summary>
/// </summary> [Display(Name = "RemarkSz"), Description("备注"), MaxLength(2000, ErrorMessage = "备注 不能超过 2000 个字符")]
[Display(Name = "RefuseReason"), Description("拒绝理由"), MaxLength(2000, ErrorMessage = "拒绝理由 不能超过 2000 个字符")] public string RemarkSz { get; set; }
public string RefuseReason { get; set; }
/// <summary>
/// <summary> /// 默认标志
/// 备注 /// </summary>
/// </summary> public int? IsDefault { get; set; }
[Display(Name = "RemarkSz"), Description("备注"), MaxLength(2000, ErrorMessage = "备注 不能超过 2000 个字符")]
public string RemarkSz { get; set; } /// <summary>
/// 预留字段1
/// <summary> /// </summary>
/// 默认标志 [Display(Name = "Reverse1"), Description("预留字段1"), MaxLength(1000, ErrorMessage = "预留字段1 不能超过 1000 个字符")]
/// </summary> public string Reverse1 { get; set; }
public int? IsDefault { get; set; }
/// <summary>
/// <summary> /// 预留字段2
/// 预留字段1 /// </summary>
/// </summary> [Display(Name = "Reverse2"), Description("预留字段2"), MaxLength(1000, ErrorMessage = "预留字段2 不能超过 1000 个字符")]
[Display(Name = "Reverse1"), Description("预留字段1"), MaxLength(1000, ErrorMessage = "预留字段1 不能超过 1000 个字符")] public string Reverse2 { get; set; }
public string Reverse1 { get; set; }
/// <summary>
/// <summary> /// 预留字段3
/// 预留字段2 /// </summary>
/// </summary> [Display(Name = "Reverse3"), Description("预留字段3"), MaxLength(1000, ErrorMessage = "预留字段3 不能超过 1000 个字符")]
[Display(Name = "Reverse2"), Description("预留字段2"), MaxLength(1000, ErrorMessage = "预留字段2 不能超过 1000 个字符")] public string Reverse3 { get; set; }
public string Reverse2 { get; set; }
/// <summary>
/// <summary> /// 预留字段4
/// 预留字段3 /// </summary>
/// </summary> [Display(Name = "Reverse4"), Description("预留字段4"), MaxLength(1000, ErrorMessage = "预留字段4 不能超过 1000 个字符")]
[Display(Name = "Reverse3"), Description("预留字段3"), MaxLength(1000, ErrorMessage = "预留字段3 不能超过 1000 个字符")] public string Reverse4 { get; set; }
public string Reverse3 { get; set; }
/// <summary>
/// <summary> /// 预留字段5
/// 预留字段4 /// </summary>
/// </summary> [Display(Name = "Reverse5"), Description("预留字段5"), MaxLength(1000, ErrorMessage = "预留字段5 不能超过 1000 个字符")]
[Display(Name = "Reverse4"), Description("预留字段4"), MaxLength(1000, ErrorMessage = "预留字段4 不能超过 1000 个字符")] public string Reverse5 { get; set; }
public string Reverse4 { get; set; }
/// <summary>
/// <summary> /// 预留字段6
/// 预留字段5 /// </summary>
/// </summary> [Display(Name = "Reverse6"), Description("预留字段6"), MaxLength(1000, ErrorMessage = "预留字段6 不能超过 1000 个字符")]
[Display(Name = "Reverse5"), Description("预留字段5"), MaxLength(1000, ErrorMessage = "预留字段5 不能超过 1000 个字符")] public string Reverse6 { get; set; }
public string Reverse5 { get; set; }
/// <summary>
/// <summary> /// 预留字段7
/// 预留字段6 /// </summary>
/// </summary> [Display(Name = "Reverse7"), Description("预留字段7"), MaxLength(1000, ErrorMessage = "预留字段7 不能超过 1000 个字符")]
[Display(Name = "Reverse6"), Description("预留字段6"), MaxLength(1000, ErrorMessage = "预留字段6 不能超过 1000 个字符")] public string Reverse7 { get; set; }
public string Reverse6 { get; set; }
/// <summary>
/// <summary> /// 预留字段8
/// 预留字段7 /// </summary>
/// </summary> [Display(Name = "Reverse8"), Description("预留字段8"), MaxLength(1000, ErrorMessage = "预留字段8 不能超过 1000 个字符")]
[Display(Name = "Reverse7"), Description("预留字段7"), MaxLength(1000, ErrorMessage = "预留字段7 不能超过 1000 个字符")] public string Reverse8 { get; set; }
public string Reverse7 { get; set; }
/// <summary>
/// <summary> /// 预留字段9
/// 预留字段8 /// </summary>
/// </summary> [Display(Name = "Reverse9"), Description("预留字段9"), MaxLength(1000, ErrorMessage = "预留字段9 不能超过 1000 个字符")]
[Display(Name = "Reverse8"), Description("预留字段8"), MaxLength(1000, ErrorMessage = "预留字段8 不能超过 1000 个字符")] public string Reverse9 { get; set; }
public string Reverse8 { get; set; }
/// <summary>
/// <summary> /// 预留字段10
/// 预留字段9 /// </summary>
/// </summary> [Display(Name = "Reverse10"), Description("预留字段10"), MaxLength(1000, ErrorMessage = "预留字段10 不能超过 1000 个字符")]
[Display(Name = "Reverse9"), Description("预留字段9"), MaxLength(1000, ErrorMessage = "预留字段9 不能超过 1000 个字符")] public string Reverse10 { get; set; }
public string Reverse9 { get; set; }
/// <summary>
/// <summary> /// 预留字段11
/// 预留字段10 /// </summary>
/// </summary> public int? ReverseI1 { get; set; }
[Display(Name = "Reverse10"), Description("预留字段10"), MaxLength(1000, ErrorMessage = "预留字段10 不能超过 1000 个字符")]
public string Reverse10 { get; set; } /// <summary>
/// 预留字段12
/// <summary> /// </summary>
/// 预留字段11 public int? ReverseI2 { get; set; }
/// </summary>
public int? ReverseI1 { get; set; } /// <summary>
/// SchoolName1
/// <summary> /// </summary>
/// 预留字段12 [Display(Name = "SchoolName1"), Description("SchoolName1"), MaxLength(128, ErrorMessage = "SchoolName1 不能超过 128 个字符")]
/// </summary> public string SchoolName1 { get; set; }
public int? ReverseI2 { get; set; }
} /// <summary>
/// CourseName1
/// </summary>
[Display(Name = "CourseName1"), Description("CourseName1"), MaxLength(128, ErrorMessage = "CourseName1 不能超过 128 个字符")]
public string CourseName1 { get; set; }
} }

@ -6,7 +6,7 @@
* *
* Ver * Ver
* *
*V0.01 2025/4/8 11:44:56 SimonHsiao *V0.01 2025/4/25 15:13:56 SimonHsiao
* *
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
* *
@ -323,4 +323,10 @@ public class Ghre_Request : BasePoco
/// 系统内置 /// 系统内置
/// </summary> /// </summary>
public int? BuiltIn { get; set; } public int? BuiltIn { get; set; }
/// <summary>
/// 外训机构
/// </summary>
[Display(Name = "OutSideOrg"), Description("外训机构"), MaxLength(128, ErrorMessage = "外训机构 不能超过 128 个字符")]
public string OutSideOrg { get; set; }
} }

@ -6,7 +6,7 @@
* *
* Ver * Ver
* *
*V0.01 2025/3/26 16:46:15 SimonHsiao *V0.01 2025/4/29 11:11:35 SimonHsiao
* *
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
* *
@ -235,4 +235,10 @@ public class Ghre_StudyRecord : BasePoco
/// 是否发放学分 /// 是否发放学分
/// </summary> /// </summary>
public bool? IsIssueCredit { get; set; } public bool? IsIssueCredit { get; set; }
/// <summary>
/// 完成状态
/// </summary>
[Display(Name = "CompleteStatus"), Description("完成状态"), MaxLength(32, ErrorMessage = "完成状态 不能超过 32 个字符")]
public string CompleteStatus { get; set; }
} }

@ -6,7 +6,7 @@
* *
* Ver * Ver
* *
*V0.01 2025/4/1 15:14:42 SimonHsiao *V0.01 2025/4/27 11:47:54 SimonHsiao
* *
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved. * Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
* *
@ -155,4 +155,10 @@ public class Ghre_SurveyQuestion : BasePoco
/// 预留字段12 /// 预留字段12
/// </summary> /// </summary>
public int? ReverseI2 { get; set; } public int? ReverseI2 { get; set; }
/// <summary>
/// 词云图关键字
/// </summary>
[Display(Name = "WordCloudKeywords"), Description("词云图关键字"), MaxLength(2000, ErrorMessage = "词云图关键字 不能超过 2000 个字符")]
public string WordCloudKeywords { get; set; }
} }

@ -41,6 +41,9 @@ public class Ghrh_ResumeEduBGDto : Ghrh_ResumeEduBG
public string IsGraduateLabel { get; set; } public string IsGraduateLabel { get; set; }
public string StaffName { get; set; } public string StaffName { get; set; }
public List<ResumeAttachment> AttachmentIDs { get; set; } public int? IsGraduate1 { get; set; }
public List<Ghrs_Attachment> AttachmentIDs { get; set; } = new List<Ghrs_Attachment>();
} }

@ -15,8 +15,6 @@
* *
*/ */
using Tiobon.Core.Model.ViewModels.Extend;
namespace Tiobon.Core.Model.Models; namespace Tiobon.Core.Model.Models;
/// <summary> /// <summary>
@ -33,7 +31,7 @@ public class Ghrh_ResumeLicenceDto : Ghrh_ResumeLicence
/// 修改信息 /// 修改信息
/// </summary> /// </summary>
public string UpdateDataInfo { get; set; } public string UpdateDataInfo { get; set; }
public List<ResumeAttachment> AttachmentIDs { get; set; } public List<Ghrs_Attachment> AttachmentIDs { get; set; }
/// <summary> /// <summary>
/// 生效日 /// 生效日
/// </summary> /// </summary>

@ -33,7 +33,7 @@ public class Ghrh_ResumeTrainingDto : Ghrh_ResumeTraining
/// 修改信息 /// 修改信息
/// </summary> /// </summary>
public string UpdateDataInfo { get; set; } public string UpdateDataInfo { get; set; }
public List<ResumeAttachment> AttachmentIDs { get; set; } public List<Ghrs_Attachment> AttachmentIDs { get; set; }
/// <summary> /// <summary>
/// 开始日期 /// 开始日期
/// </summary> /// </summary>
@ -49,4 +49,8 @@ public class Ghrh_ResumeTrainingDto : Ghrh_ResumeTraining
/// </summary> /// </summary>
public string IsPassLabel { get; set; } public string IsPassLabel { get; set; }
public string StaffName { get; set; } public string StaffName { get; set; }
public int? IsPass1 { get; set; }
} }

@ -39,6 +39,6 @@ public class Ghrh_ResumeWorkExpDto : Ghrh_ResumeWorkExp
public string EndDate1 { get; set; } public string EndDate1 { get; set; }
public List<ResumeAttachment> AttachmentIDs { get; set; } public List<Ghrs_Attachment> AttachmentIDs { get; set; } = new List<Ghrs_Attachment>();
public string StaffName { get; set; } public string StaffName { get; set; }
} }

@ -121,7 +121,8 @@ public class ExamGroup
{ {
public long? GroupId { get; set; } public long? GroupId { get; set; }
public long? ExamRecordId { get; set; } public long? ExamRecordId { get; set; }
public DateTime? ExamTime { get; set; } public string ExamTime { get; set; }
public decimal Score { get; set; }
} }
public class CommentData public class CommentData

@ -178,6 +178,12 @@ public class Ghre_SurveyQuestionExtendBase
[Display(Name = "QuestionIcon"), Description("图标"), MaxLength(32, ErrorMessage = "图标 不能超过 32 个字符")] [Display(Name = "QuestionIcon"), Description("图标"), MaxLength(32, ErrorMessage = "图标 不能超过 32 个字符")]
public string QuestionIcon { get; set; } public string QuestionIcon { get; set; }
/// <summary>
/// 词云图关键字
/// </summary>
[Display(Name = "WordCloudKeywords"), Description("词云图关键字"), MaxLength(2000, ErrorMessage = "词云图关键字 不能超过 2000 个字符")]
public string WordCloudKeywords { get; set; }
/// <summary> /// <summary>
/// 备注 /// 备注
/// </summary> /// </summary>

@ -4291,8 +4291,6 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
//dict.RequestNo = await GenerateContinuousSequence("Ghrh_HumanRequest", "RequestNo", "R"); //dict.RequestNo = await GenerateContinuousSequence("Ghrh_HumanRequest", "RequestNo", "R");
id = await Db.Insertable(dict).ExecuteReturnSnowflakeIdAsync(); id = await Db.Insertable(dict).ExecuteReturnSnowflakeIdAsync();
sql = $"SELECT ISNULL(MAX(id)+1,1) FROM Ghre_ExternalTrainApplyOrder_Boltone WHERE Id !='{id}' and len(Id) !=19"; sql = $"SELECT ISNULL(MAX(id)+1,1) FROM Ghre_ExternalTrainApplyOrder_Boltone WHERE Id !='{id}' and len(Id) !=19";
var id1 = await Db.Ado.GetLongAsync(sql); var id1 = await Db.Ado.GetLongAsync(sql);
sql = $"UPDATE Ghre_ExternalTrainApplyOrder_Boltone SET Id={id1} WHERE Id ='{id}'"; sql = $"UPDATE Ghre_ExternalTrainApplyOrder_Boltone SET Id={id1} WHERE Id ='{id}'";
@ -4356,6 +4354,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
case "Apply": case "Apply":
case "BatchApply": case "BatchApply":
#region 写入数据,并判断是否有错误 #region 写入数据,并判断是否有错误
string json = param.jsonParam.ToString(); string json = param.jsonParam.ToString();
var dict = JsonHelper.JsonToObj<Ghre_TrainFeeApplyOrder_Boltone>(json); var dict = JsonHelper.JsonToObj<Ghre_TrainFeeApplyOrder_Boltone>(json);
@ -4363,6 +4362,11 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
//dict.RequestNo = await GenerateContinuousSequence("Ghrh_HumanRequest", "RequestNo", "R"); //dict.RequestNo = await GenerateContinuousSequence("Ghrh_HumanRequest", "RequestNo", "R");
id = await Db.Insertable(dict).ExecuteReturnSnowflakeIdAsync(); id = await Db.Insertable(dict).ExecuteReturnSnowflakeIdAsync();
//var StaffUserId = await Db.Queryable<Ghrs_User>().Where(x => x.UserStaffID == dict.TeacherId).Select(x => x.UserId).FirstAsync();
//if (StaffUserId > 0)
// param.userId = StaffUserId;
sql = $"SELECT ISNULL(MAX(id)+1,1) FROM Ghre_TrainFeeApplyOrder_Boltone WHERE Id !='{id}' and len(Id) !=19"; sql = $"SELECT ISNULL(MAX(id)+1,1) FROM Ghre_TrainFeeApplyOrder_Boltone WHERE Id !='{id}' and len(Id) !=19";
var id1 = await Db.Ado.GetLongAsync(sql); var id1 = await Db.Ado.GetLongAsync(sql);
sql = $"UPDATE Ghre_TrainFeeApplyOrder_Boltone SET Id={id1} WHERE Id ='{id}'"; sql = $"UPDATE Ghre_TrainFeeApplyOrder_Boltone SET Id={id1} WHERE Id ='{id}'";

@ -61,7 +61,7 @@ public class Ghra_StaffServices : BaseServices<Ghra_Staff, Ghra_StaffDto, Insert
if (dept != null) if (dept != null)
entity.DeptName = dept.DeptName; entity.DeptName = dept.DeptName;
dept = await Db.Queryable<Ghro_Dept>().Where(x => x.ParentDeptID == entity.DeptId).FirstAsync(); dept = await Db.Queryable<Ghro_Dept>().Where(x => x.DeptID == dept.ParentDeptID).FirstAsync();
if (dept != null) if (dept != null)
entity.ParentDeptName = dept.DeptName; entity.ParentDeptName = dept.DeptName;
} }

@ -28,7 +28,6 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
RefAsync<int> totalCount = 0; RefAsync<int> totalCount = 0;
string sql = @"SELECT * string sql = @"SELECT *
FROM (SELECT A.*, FROM (SELECT A.*,
D.SceneName + ' (' + D.SceneNo + ')' CourseSceneName,
E.CourseWareName + ' (' + E.CourseWareNo + ')' CourseWareName, E.CourseWareName + ' (' + E.CourseWareNo + ')' CourseWareName,
F.StaffName + ' (' + F.StaffNo + ')' ManagerStaffName, F.StaffName + ' (' + F.StaffNo + ')' ManagerStaffName,
G.UserName CreateName, G.UserName CreateName,
@ -39,7 +38,6 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
END TeacherName, END TeacherName,
ISNULL (A.UpdateTime, A.CreateTime) CreateTime1 ISNULL (A.UpdateTime, A.CreateTime) CreateTime1
FROM Ghre_Course A FROM Ghre_Course A
LEFT JOIN Ghre_CourseScene D ON A.CourseSceneId = D.Id
LEFT JOIN Ghre_CourseWare E ON A.CourseWareId = E.Id LEFT JOIN Ghre_CourseWare E ON A.CourseWareId = E.Id
LEFT JOIN Ghra_Staff F ON A.ManagerId = F.StaffID LEFT JOIN Ghra_Staff F ON A.ManagerId = F.StaffID
LEFT JOIN Ghrs_User G ON A.CreateBy = G.UserId LEFT JOIN Ghrs_User G ON A.CreateBy = G.UserId
@ -161,11 +159,11 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
courseSceneIds = courseSceneIds.Concat(JsonConvert.DeserializeObject<List<long>>(x)).ToList(); courseSceneIds = courseSceneIds.Concat(JsonConvert.DeserializeObject<List<long>>(x)).ToList();
}); });
data.ForEach(x => //data.ForEach(x =>
{ //{
if (x.CourseSceneId != null) // if (x.CourseSceneId != null)
courseSceneIds.Add(x.CourseSceneId.Value); // courseSceneIds.Add(x.CourseSceneId.Value);
}); //});
courseSceneIds = courseSceneIds.Distinct().ToList(); courseSceneIds = courseSceneIds.Distinct().ToList();
var courseScenes = await Db.Queryable<Ghre_CourseScene>().Where(x => courseSceneIds.Contains(x.Id)).ToListAsync(); var courseScenes = await Db.Queryable<Ghre_CourseScene>().Where(x => courseSceneIds.Contains(x.Id)).ToListAsync();
@ -188,11 +186,11 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
} }
} }
else if (x.CourseSceneId != null) //else if (x.CourseSceneId != null)
{ //{
var courseScene = courseScenes.Where(a => a.Id == x.CourseSceneId).ToList(); // var courseScene = courseScenes.Where(a => a.Id == x.CourseSceneId).ToList();
x.CourseSceneName = string.Join(",", courseScene.Select(a => a.SceneName + " (" + a.SceneNo + ")")); // x.CourseSceneName = string.Join(",", courseScene.Select(a => a.SceneName + " (" + a.SceneNo + ")"));
} //}
x.BuiltInLabel = x.BuiltIn == 1 ? "是" : "否"; x.BuiltInLabel = x.BuiltIn == 1 ? "是" : "否";
}); });
@ -691,7 +689,7 @@ public class Ghre_CourseServices : BaseServices<Ghre_Course, Ghre_CourseDto, Ins
sql += $"AND ( CourseNo like '%{keyWords}%' or CourseName like '%{keyWords}%')"; sql += $"AND ( CourseNo like '%{keyWords}%' or CourseName like '%{keyWords}%')";
if (linkId.HasValue) if (linkId.HasValue)
sql += $" AND CourseSceneId='{linkId}'"; sql += $" AND (CourseSceneId='{linkId}' or CourseSceneIds like '%{linkId}%')";
sql += $" ORDER BY UpdateTime DESC, CreateTime DESC"; sql += $" ORDER BY UpdateTime DESC, CreateTime DESC";
dt = await Db.Ado.GetDataTableAsync(sql); dt = await Db.Ado.GetDataTableAsync(sql);

@ -463,6 +463,15 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
await Db.Updateable(record).ExecuteCommandAsync(); await Db.Updateable(record).ExecuteCommandAsync();
await Db.Updateable(details).ExecuteCommandAsync(); await Db.Updateable(details).ExecuteCommandAsync();
var groupId = details.First()?.GroupId;
var group = await Db.Queryable<Ghre_ExamRecordGroup>().Where(x => x.Id == groupId).FirstAsync();
if (group != null)
{
group.Score = record.Score;
await Db.Updateable(group).UpdateColumns(it => new { it.Score }, true)
.ExecuteCommandAsync();
}
return ServiceResult.OprateSuccess("提交成功!"); return ServiceResult.OprateSuccess("提交成功!");
} }
@ -813,7 +822,7 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
extend.ExamEndDate = DateTimeHelper.ConvertToDayString(record.EndTime); extend.ExamEndDate = DateTimeHelper.ConvertToDayString(record.EndTime);
} }
extend.ExamStatus = record.Status; extend.ExamStatus = record.Status;
extend.TotalScore = record.TotalScore; extend.TotalScore = details.Where(x => x.Score != null).Sum(x => x.Score);
extend.Id = record.Id; extend.Id = record.Id;
extend.CourseName = record.CourseName; extend.CourseName = record.CourseName;
extend.CanRetake = true; extend.CanRetake = true;
@ -882,15 +891,23 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
} }
#endregion #endregion
extend.Groups = await Db.Queryable<Ghre_ExamRecordGroup>() var Groups = await Db.Queryable<Ghre_ExamRecordGroup>()
.OrderByDescending(x => x.ExamTime) .OrderByDescending(x => x.ExamTime)
.Where(x => x.ExamRecordId == record.Id) .Where(x => x.ExamRecordId == record.Id)
.Select(x => new
{
GroupId = x.Id,
x.ExamRecordId,
x.ExamTime,
x.Score
}).ToListAsync();
extend.Groups = Groups
.Select(x => new ExamGroup() .Select(x => new ExamGroup()
{ {
GroupId = x.Id, GroupId = x.GroupId,
ExamRecordId = x.ExamRecordId, ExamRecordId = x.ExamRecordId,
ExamTime = x.ExamTime, ExamTime = x.ExamTime.ObjToString() + (x.Score != null ? $"得分:{x.Score}" : ""),
}).ToListAsync(); }).ToList();
return ServiceResult<QueryExam>.OprateSuccess("查询成功!", extend); return ServiceResult<QueryExam>.OprateSuccess("查询成功!", extend);
} }
@ -1016,11 +1033,11 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
//多次考试成绩认定,Latest,最新分数; Highest,最高分数; Lowest,最低分数 //多次考试成绩认定,Latest,最新分数; Highest,最高分数; Lowest,最低分数
var ScoreRecognition = exam.ScoreRule ?? "Latest"; var ScoreRecognition = exam.ScoreRule ?? "Latest";
if (exampaper.ScoreMethod == DIC_EXAM_PAPER_SCORE_METHOD.SYSTEM && ScoreRecognition != "Latest") //if (exampaper.ScoreMethod == DIC_EXAM_PAPER_SCORE_METHOD.SYSTEM && ScoreRecognition != "Latest")
{ //{
sql = $@"UPDATE Ghre_ExamRecordDetail SET IsEnable=2 WHERE ExamRecordId='{record.Id}'; // sql = $@"UPDATE Ghre_ExamRecordDetail SET IsEnable=2 WHERE ExamRecordId='{record.Id}';
UPDATE Ghre_ExamRecordAnswer SET IsEnable=2 WHERE ExamRecordId='{record.Id}';"; // UPDATE Ghre_ExamRecordAnswer SET IsEnable=2 WHERE ExamRecordId='{record.Id}';";
} //}
await Db.Ado.ExecuteCommandAsync(sql); await Db.Ado.ExecuteCommandAsync(sql);
var questionIds = answers.Select(x => x.QuestionId).ToList(); var questionIds = answers.Select(x => x.QuestionId).ToList();
@ -1158,20 +1175,24 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
} }
#endregion #endregion
group.Score = record.Score;
await Db.Updateable(group).UpdateColumns(it => new { it.Score }, true)
.ExecuteCommandAsync();
#region 多次考试成绩认定 #region 多次考试成绩认定
if (exampaper.ScoreMethod == DIC_EXAM_PAPER_SCORE_METHOD.SYSTEM && (ScoreRecognition == "Highest" || ScoreRecognition == "Lowest")) if (exampaper.ScoreMethod == DIC_EXAM_PAPER_SCORE_METHOD.SYSTEM && (ScoreRecognition == "Highest" || ScoreRecognition == "Lowest"))
{ {
if ((ScoreRecognition == "Highest" && record.Score < lastScore) || ScoreRecognition == "Lowest" && record.Score > lastScore) if ((ScoreRecognition == "Highest" && record.Score < lastScore) || ScoreRecognition == "Lowest" && record.Score > lastScore)
{ {
record.Score = lastScore; record.Score = lastScore;
sql = $@"UPDATE Ghre_ExamRecordDetail SET IsEnable=0 WHERE ExamRecordId='{record.Id}'; //sql = $@"UPDATE Ghre_ExamRecordDetail SET IsEnable=0 WHERE ExamRecordId='{record.Id}';
UPDATE Ghre_ExamRecordAnswer SET IsEnable=0 WHERE ExamRecordId='{record.Id}';"; // UPDATE Ghre_ExamRecordAnswer SET IsEnable=0 WHERE ExamRecordId='{record.Id}';";
await Db.Ado.ExecuteCommandAsync(sql); //await Db.Ado.ExecuteCommandAsync(sql);
sql = $@"UPDATE Ghre_ExamRecordDetail SET IsEnable=1 WHERE IsEnable=2 AND ExamRecordId='{record.Id}'; //sql = $@"UPDATE Ghre_ExamRecordDetail SET IsEnable=1 WHERE IsEnable=2 AND ExamRecordId='{record.Id}';
UPDATE Ghre_ExamRecordAnswer SET IsEnable=1 WHERE IsEnable=2 AND ExamRecordId='{record.Id}';"; // UPDATE Ghre_ExamRecordAnswer SET IsEnable=1 WHERE IsEnable=2 AND ExamRecordId='{record.Id}';";
await Db.Ado.ExecuteCommandAsync(sql); //await Db.Ado.ExecuteCommandAsync(sql);
} }
#region 处理最终得分 #region 处理最终得分
@ -1655,4 +1676,31 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
return ServiceResult.OprateSuccess("发放成功!"); return ServiceResult.OprateSuccess("发放成功!");
} }
#endregion #endregion
#region 查询考试组
public async Task<ServiceResult<List<ExamGroup>>> QueryGroups(long examRecordId)
{
var Groups = await Db.Queryable<Ghre_ExamRecordGroup>()
.OrderByDescending(x => x.ExamTime)
.Where(x => x.ExamRecordId == examRecordId)
.Select(x => new
{
GroupId = x.Id,
x.ExamRecordId,
x.ExamTime,
x.Score
}).ToListAsync();
var groups = Groups
.Select(x => new ExamGroup()
{
GroupId = x.GroupId,
ExamRecordId = x.ExamRecordId,
ExamTime = x.ExamTime.ObjToString() + (x.Score != null ? $"得分:{x.Score}" : ""),
}).ToList();
return ServiceResult<List<ExamGroup>>.OprateSuccess("成功!", groups);
}
#endregion
} }

@ -801,6 +801,8 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
{ {
var input = new DefaultGhre_ExamInput(); var input = new DefaultGhre_ExamInput();
var companyCode = await QueryCompanyCode();
#region baseColumns #region baseColumns
var baseColumns = new List<DefaultGhre_ExamColumn> var baseColumns = new List<DefaultGhre_ExamColumn>
{ {
@ -949,7 +951,7 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
label = "考试成绩规则", label = "考试成绩规则",
field = "ScoreRule", field = "ScoreRule",
elementType = "ApiSelect", elementType = "ApiSelect",
required = false, required = true,
multipleSelect = false, multipleSelect = false,
editable = true, editable = true,
dataSource = "TBParaDetail_Train_TrainScoreRule" dataSource = "TBParaDetail_Train_TrainScoreRule"
@ -959,7 +961,7 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
label = "学习完成规则", label = "学习完成规则",
field = "StudyFinishedRule", field = "StudyFinishedRule",
elementType = "ApiSelect", elementType = "ApiSelect",
required = false, required= companyCode == "Viavi"?false: true,
multipleSelect = false, multipleSelect = false,
editable = true, editable = true,
dataSource = "TBParaDetail_Train_TrainStudyFinishedRule" dataSource = "TBParaDetail_Train_TrainStudyFinishedRule"
@ -969,7 +971,7 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
label = "是否允许查看答案和解析", label = "是否允许查看答案和解析",
field = "IsViewResult", field = "IsViewResult",
elementType = "RadioBox", elementType = "RadioBox",
required = false, required = true,
multipleSelect = false, multipleSelect = false,
editable = true editable = true
}, },
@ -978,7 +980,7 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
label = " 查看答案和解析后,是否允许重新考试", label = " 查看答案和解析后,是否允许重新考试",
field = "IsAfterViewResultRetake", field = "IsAfterViewResultRetake",
elementType = "RadioBox", elementType = "RadioBox",
required = false, required = true,
multipleSelect = false, multipleSelect = false,
editable = true editable = true
}, },
@ -993,7 +995,6 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
} }
}; };
var companyCode = await QueryCompanyCode();
if (companyCode == "Viavi") if (companyCode == "Viavi")
baseColumns = baseColumns.Where(x => x.field != "ExamMode1").ToList(); baseColumns = baseColumns.Where(x => x.field != "ExamMode1").ToList();
#endregion #endregion
@ -1071,6 +1072,7 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
var staffTableData = await QueryStaff1(Id); var staffTableData = await QueryStaff1(Id);
pageData.staffTableData = staffTableData.Data; pageData.staffTableData = staffTableData.Data;
} }
else input.pageData.ScoreRule = "Highest";
#endregion #endregion
input.baseColumns = baseColumns; input.baseColumns = baseColumns;
@ -1133,12 +1135,14 @@ public class Ghre_ExamServices : BaseServices<Ghre_Exam, Ghre_ExamDto, InsertGhr
data.ForEach(x => data.ForEach(x =>
{ {
if (x.DataSource.IsNull()) if (x.DataSource.IsNull())
x.DataSource = Consts.DIC_EXAM_STAFF_SOURCE.MANUAL_REQUIRED; x.DataSource = DIC_EXAM_STAFF_SOURCE.MANUAL_REQUIRED;
if (x.DataSource == Consts.DIC_EXAM_STAFF_SOURCE.MANUAL_REQUIRED) if (x.DataSource == DIC_EXAM_STAFF_SOURCE.MANUAL_REQUIRED)
x.DataSourceLabel = "手动必修"; x.DataSourceLabel = "手动必修";
else if (x.DataSource == Consts.DIC_EXAM_STAFF_SOURCE.STUDY_RULE_REQUIRED) else if (x.DataSource == DIC_EXAM_STAFF_SOURCE.STUDY_RULE_REQUIRED)
x.DataSourceLabel = "必修规则"; x.DataSourceLabel = "必修规则";
else if (x.DataSource == DIC_EXAM_STAFF_SOURCE.MANUAL_ELECTIVE)
x.DataSourceLabel = "手动选修";
}); });
return ServiceResult<List<StaffTableData>>.OprateSuccess("查询成功!", data); return ServiceResult<List<StaffTableData>>.OprateSuccess("查询成功!", data);

@ -693,7 +693,7 @@ FROM Ghre_Request A
CreateProg, CreateProg,
DeptNo, DeptNo,
StaffNo, StaffNo,
LastUpdateDate,TrainStaffId,TrainClass,InOrOut) LastUpdateDate,TrainStaffId,TrainClass,InOrOut,OutSideOrg)
SELECT A.Id, SELECT A.Id,
A.RequestSource, A.RequestSource,
c.DeptName, c.DeptName,
@ -714,7 +714,7 @@ FROM Ghre_Request A
SELECT ',' + S.StaffNo SELECT ',' + S.StaffNo
FROM OPENJSON(A.TrainStaffId) WITH (TrainStaffId INT '$') AS JsonData FROM OPENJSON(A.TrainStaffId) WITH (TrainStaffId INT '$') AS JsonData
INNER JOIN Ghra_Staff S ON JsonData.TrainStaffId = S.StaffID INNER JOIN Ghra_Staff S ON JsonData.TrainStaffId = S.StaffID
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS StaffNames,A.TrainClass,A.InOrOut FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS StaffNames,A.TrainClass,A.InOrOut,OutSideOrg
FROM Ghre_Request A FROM Ghre_Request A
LEFT JOIN [120.26.205.42].[GhrUshio].[dbo].Ghre_GHR50Request B LEFT JOIN [120.26.205.42].[GhrUshio].[dbo].Ghre_GHR50Request B
ON B.RequestID = A.Id ON B.RequestID = A.Id

@ -1,12 +1,9 @@
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using MongoDB.Driver.Linq; using MongoDB.Driver.Linq;
using NPOI.HSSF.UserModel; using NPOI.HSSF.UserModel;
using NPOI.SS.Formula.Functions;
using NPOI.SS.UserModel; using NPOI.SS.UserModel;
using NPOI.SS.Util; using NPOI.SS.Util;
using NPOI.XSSF.UserModel; using NPOI.XSSF.UserModel;
using Tiobon.Core.Model.Models;
using static System.Runtime.InteropServices.JavaScript.JSType;
using static Tiobon.Core.DataAccess.ReportHelper; using static Tiobon.Core.DataAccess.ReportHelper;
using static Tiobon.Core.Model.Consts; using static Tiobon.Core.Model.Consts;
@ -268,12 +265,6 @@ public class Ghre_StudyRecordServices : BaseServices<Ghre_StudyRecord, Ghre_Stud
public override async Task<long> Add(InsertGhre_StudyRecordInput entity) public override async Task<long> Add(InsertGhre_StudyRecordInput entity)
{ {
if (await Db.Queryable<Ghre_StudyRecord>()
.WhereIF(!entity.CourseId.IsNullOrEmpty(), x => x.CourseId == entity.CourseId)
.WhereIF(!entity.CourseSceneId.IsNullOrEmpty(), x => x.CourseSceneId == entity.CourseSceneId)
.AnyAsync(x => x.StaffId == entity.StaffId))
throw new Exception("该用户存在相同学习记录!");
if (entity.BeginTime != null && entity.EndTime != null) if (entity.BeginTime != null && entity.EndTime != null)
{ {
if (entity.EndTime < entity.BeginTime) if (entity.EndTime < entity.BeginTime)
@ -287,6 +278,14 @@ public class Ghre_StudyRecordServices : BaseServices<Ghre_StudyRecord, Ghre_Stud
entity.CourseBeginTime = entity.BeginTime; entity.CourseBeginTime = entity.BeginTime;
entity.CourseEndTime = entity.EndTime; entity.CourseEndTime = entity.EndTime;
} }
if (await Db.Queryable<Ghre_StudyRecord>()
.WhereIF(!entity.CourseId.IsNullOrEmpty(), x => x.CourseId == entity.CourseId)
.WhereIF(!entity.CourseSceneId.IsNullOrEmpty(), x => x.CourseSceneId == entity.CourseSceneId)
.Where(x => (x.CourseBeginTime <= entity.CourseBeginTime && x.CourseEndTime >= entity.CourseBeginTime) || (x.CourseBeginTime <= entity.CourseEndTime && x.CourseEndTime >= entity.CourseEndTime))
.AnyAsync(x => x.StaffId == entity.StaffId))
throw new Exception("该用户存在相同学习记录!");
entity.StudyStatus = "HasFinish"; entity.StudyStatus = "HasFinish";
var snap = await Db.Queryable<Ghre_CourseSnap>().FirstAsync(x => x.CourseId == entity.CourseId); var snap = await Db.Queryable<Ghre_CourseSnap>().FirstAsync(x => x.CourseId == entity.CourseId);
@ -719,8 +718,8 @@ public class Ghre_StudyRecordServices : BaseServices<Ghre_StudyRecord, Ghre_Stud
AdjustScore = AdjustScore ?? 0, AdjustScore = AdjustScore ?? 0,
IsPass = isPass == "是" ? true : false, IsPass = isPass == "是" ? true : false,
ExamDate = dtExamDate, ExamDate = dtExamDate,
BeginTime = dtCourseBeginTime, CourseBeginTime = dtCourseBeginTime,
EndTime = dtCourseEndTime, CourseEndTime = dtCourseEndTime,
RemarkSz = remarkSz, RemarkSz = remarkSz,
CourseType = "ExcelImport" CourseType = "ExcelImport"
}; };
@ -1682,6 +1681,17 @@ WHERE A.Id = '{id}'";
StudyStatus = DIC_STUDY_RECORD_STUDY_STATUS.NO_JOIN, StudyStatus = DIC_STUDY_RECORD_STUDY_STATUS.NO_JOIN,
ExamId = exam?.Id ExamId = exam?.Id
}); });
if (exam != null)
{
var insertStaff = new Ghre_ExamStaff()
{
ExamId = exam?.Id,
StaffId = staffId,
Source = DIC_EXAM_STAFF_SOURCE.MANUAL_ELECTIVE
};
await Db.Insertable(insertStaff).ExecuteReturnSnowflakeIdAsync();
}
} }
return ServiceResult.OprateSuccess("加入成功!"); return ServiceResult.OprateSuccess("加入成功!");
} }

@ -203,6 +203,19 @@ public class Ghre_StudyRuleServices : BaseServices<Ghre_StudyRule, Ghre_StudyRul
if (!entity.JobIds.IsNull() && entity.JobIds.Any()) if (!entity.JobIds.IsNull() && entity.JobIds.Any())
entity.JobId = JsonHelper.ObjToJson(entity.JobIds); entity.JobId = JsonHelper.ObjToJson(entity.JobIds);
var companyCode = await QueryCompanyCode();
if (companyCode != "Viavi")
if (entity.TrainType == "NewStaff")
{
if (!entity.ZoneIds.Any() &&
!entity.DeptIds.Any() &&
!entity.TitleIds.Any() &&
!entity.GradeIds.Any() &&
!entity.JobIds.Any())
throw new Exception("厂区、部门、职称、职等、岗位,至少填写任一个才能保存!");
}
var result = await base.Add(entity); var result = await base.Add(entity);
if (entity.Staffs != null && entity.Staffs.Any()) if (entity.Staffs != null && entity.Staffs.Any())
@ -239,6 +252,18 @@ public class Ghre_StudyRuleServices : BaseServices<Ghre_StudyRule, Ghre_StudyRul
if (!entity.JobIds.IsNull()) if (!entity.JobIds.IsNull())
entity.JobId = JsonHelper.ObjToJson(entity.JobIds); entity.JobId = JsonHelper.ObjToJson(entity.JobIds);
var companyCode = await QueryCompanyCode();
if (companyCode != "Viavi")
if (entity.TrainType == "NewStaff")
{
if (!entity.ZoneIds.Any() &&
!entity.DeptIds.Any() &&
!entity.TitleIds.Any() &&
!entity.GradeIds.Any() &&
!entity.JobIds.Any())
throw new Exception("厂区、部门、职称、职等、岗位,至少填写任一个才能保存!");
}
var result = await base.Update(Id, entity); var result = await base.Update(Id, entity);
await _ghre_StudyRuleStaffServices.Delete(x => x.StudyRuleId == Id); await _ghre_StudyRuleStaffServices.Delete(x => x.StudyRuleId == Id);

@ -1,5 +1,4 @@
using SqlSugar.Extensions; using System.Text.RegularExpressions;
using Tiobon.Core.IServices;
namespace Tiobon.Core.Services; namespace Tiobon.Core.Services;
@ -570,6 +569,29 @@ public class Ghre_SurveyServices : BaseServices<Ghre_Survey, Ghre_SurveyDto, Ins
o.Percent = $"0%"; o.Percent = $"0%";
}); });
} }
else if (x.QuestionType == "ShortAnswer")
{
if (x.WordCloudKeywords.IsNotEmptyOrNull())
{
var recordOption = recordOptions.Where(a => a.SurveyQuestionId == x.Id).FirstOrDefault();
var KeywordList = x.WordCloudKeywords.Split(',');
x.Table = KeywordList.Select(x => new Ghre_SurveyStatisticQuestionTable
{
OptionContent = x,
Count = 0,
Percent1 = 0
}).ToList();
x.Table.ForEach(o =>
{
string keyword = o.OptionContent;
// 使用正则表达式匹配关键字(忽略大小写)
o.Count = Regex.Matches(recordOption.OptionContent, Regex.Escape(keyword), RegexOptions.None).Count;
});
}
}
else else
{ {
x.Table = Mapper.Map(options.Where(o => o.SurveyQuestionId == x.Id)).ToANew<List<Ghre_SurveyStatisticQuestionTable>>(); x.Table = Mapper.Map(options.Where(o => o.SurveyQuestionId == x.Id)).ToANew<List<Ghre_SurveyStatisticQuestionTable>>();

@ -146,6 +146,8 @@ public class Ghre_TitleSkill_BoltoneServices : BaseServices<Ghre_TitleSkill_Bolt
}); });
condition += ")"; condition += ")";
} }
else
condition += $" AND 1!=1";
var result2 = await _staffServices.QueryFilterPage(filter, condition); var result2 = await _staffServices.QueryFilterPage(filter, condition);
@ -165,6 +167,8 @@ public class Ghre_TitleSkill_BoltoneServices : BaseServices<Ghre_TitleSkill_Bolt
{ {
var column = result2.result.DT_TableDataT1[i]; var column = result2.result.DT_TableDataT1[i];
column.Reverse16 = await GetParaLabel("R09", column.Reverse16);
var item1 = new JObject var item1 = new JObject
{ {
new JProperty("StaffID", column.StaffID), new JProperty("StaffID", column.StaffID),
@ -172,7 +176,7 @@ public class Ghre_TitleSkill_BoltoneServices : BaseServices<Ghre_TitleSkill_Bolt
new JProperty("IndateLabel", column.IndateLabel), new JProperty("IndateLabel", column.IndateLabel),
new JProperty("StaffNo", column.StaffNo), new JProperty("StaffNo", column.StaffNo),
new JProperty("StaffName", column.StaffName), new JProperty("StaffName", column.StaffName),
new JProperty("StaffType1Label", column.StaffType1Label), new JProperty("StaffType1Label", column.Reverse16),
new JProperty("TitleName", column.TitleName), new JProperty("TitleName", column.TitleName),
}; };
//× 生手 技能有效期内所对应课程还未分配或课程学习时长为0 //× 生手 技能有效期内所对应课程还未分配或课程学习时长为0

@ -25,7 +25,7 @@ public class Ghrh_ResumeEduBGServices : BaseServices<Ghrh_ResumeEduBG, Ghrh_Resu
{ {
x.AttachmentIDs = attachments x.AttachmentIDs = attachments
.Where(o => o.TableName == x.Id.ToString()) .Where(o => o.TableName == x.Id.ToString())
.Select(o => new ResumeAttachment() .Select(o => new Ghrs_Attachment()
{ {
AttachmentID = o.AttachmentID, AttachmentID = o.AttachmentID,
AttachFileExtension = o.AttachFileExtension, AttachFileExtension = o.AttachFileExtension,
@ -78,11 +78,20 @@ public class Ghrh_ResumeEduBGServices : BaseServices<Ghrh_ResumeEduBG, Ghrh_Resu
} }
#endregion #endregion
public override async Task<long> Add(InsertGhrh_ResumeEduBGInput entity)
{
var result = await Add([entity]);
return result.First();
}
public override async Task<List<long>> Add(List<InsertGhrh_ResumeEduBGInput> listEntity) public override async Task<List<long>> Add(List<InsertGhrh_ResumeEduBGInput> listEntity)
{ {
var result = new List<long>(); var result = new List<long>();
for (int i = 0; i < listEntity.Count; i++) for (int i = 0; i < listEntity.Count; i++)
{ {
listEntity[i].IsGraduate = listEntity[i].IsGraduate1 == 1 ? true : false;
var id = await base.Add(listEntity[i]); var id = await base.Add(listEntity[i]);
if (listEntity[i].AttachmentIDs != null && listEntity[i].AttachmentIDs.Any()) if (listEntity[i].AttachmentIDs != null && listEntity[i].AttachmentIDs.Any())
{ {
@ -97,8 +106,39 @@ public class Ghrh_ResumeEduBGServices : BaseServices<Ghrh_ResumeEduBG, Ghrh_Resu
return result; return result;
} }
public override async Task<bool> Update(long Id, EditGhrh_ResumeEduBGInput editModel)
{
editModel.IsGraduate = editModel.IsGraduate1 == 1 ? true : false;
var result = await base.Update(Id, editModel);
if (editModel.AttachmentIDs != null && editModel.AttachmentIDs.Any())
{
await Db.Updateable<Ghrs_Attachment>()
.SetColumns(x => new Ghrs_Attachment() { TableName = null })
.Where(it => it.TableName == Id.ToString())
.ExecuteCommandAsync();
var ids = editModel.AttachmentIDs.Select(x => x.RelativePath).ToList();
await Db.Updateable<Ghrs_Attachment>()
.SetColumns(x => new Ghrs_Attachment() { TableName = Id.ToString() })
.Where(it => it.AttachmentID != null && ids.Contains(it.RelativePath))
.ExecuteCommandAsync();
}
return result;
}
public override async Task<ServiceFormResult<Ghrh_ResumeEduBGDto>> QueryForm(QueryForm body)
{
var result = await base.QueryForm(body);
result.result.DT_TableDataT1[0].AttachmentIDs = await Db.Queryable<Ghrs_Attachment>().Where(x => x.TableName == body.id.ObjToString()).ToListAsync();
result.result.DT_TableDataT1[0].IsGraduate1 = result.result.DT_TableDataT1[0].IsGraduate == true ? 1 : 0;
return result;
}
#region Excel导入 #region Excel导入
public override async Task<ServiceResult<string>> DownloadExcel(string menuName) public override async Task<ServiceResult<string>> DownloadExcel(string menuName)
{ {

@ -1,4 +1,6 @@
namespace Tiobon.Core.Services; using Tiobon.Core.Common.DB.Dapper.Extensions;
namespace Tiobon.Core.Services;
/// <summary> /// <summary>
/// 证件 (服务) /// 证件 (服务)
@ -24,7 +26,7 @@ public class Ghrh_ResumeLicenceServices : BaseServices<Ghrh_ResumeLicence, Ghrh_
await SetLabel(x); await SetLabel(x);
x.AttachmentIDs = attachments x.AttachmentIDs = attachments
.Where(o => o.TableName == x.Id.ToString()) .Where(o => o.TableName == x.Id.ToString())
.Select(o => new ResumeAttachment() .Select(o => new Ghrs_Attachment()
{ {
AttachmentID = o.AttachmentID, AttachmentID = o.AttachmentID,
AttachFileExtension = o.AttachFileExtension, AttachFileExtension = o.AttachFileExtension,
@ -55,6 +57,48 @@ public class Ghrh_ResumeLicenceServices : BaseServices<Ghrh_ResumeLicence, Ghrh_
} }
return result; return result;
} }
public override async Task<long> Add(InsertGhrh_ResumeLicenceInput entity)
{
var result = await Add([entity]);
return result.First();
}
public override async Task<bool> Update(long Id, EditGhrh_ResumeLicenceInput editModel)
{
var result = await base.Update(Id, editModel);
if (editModel.AttachmentIDs != null && editModel.AttachmentIDs.Any())
{
await Db.Updateable<Ghrs_Attachment>()
.SetColumns(x => new Ghrs_Attachment() { TableName = null })
.Where(it => it.TableName == Id.ToString())
.ExecuteCommandAsync();
var ids = editModel.AttachmentIDs.Select(x => x.RelativePath).ToList();
await Db.Updateable<Ghrs_Attachment>()
.SetColumns(x => new Ghrs_Attachment() { TableName = Id.ToString() })
.Where(it => it.AttachmentID != null && ids.Contains(it.RelativePath))
.ExecuteCommandAsync();
}
return result;
}
public override async Task<ServiceFormResult<Ghrh_ResumeLicenceDto>> QueryForm(QueryForm body)
{
var result = await base.QueryForm(body);
result.result.DT_TableDataT1[0].AttachmentIDs = await Db.Queryable<Ghrs_Attachment>().Where(x => x.TableName == body.id.ObjToString()).ToListAsync();
return result;
}
#region 字典映射、全称、单位转换等 #region 字典映射、全称、单位转换等
/// <summary> /// <summary>
/// 字典映射、全称、单位转换等 /// 字典映射、全称、单位转换等

@ -24,7 +24,7 @@ public class Ghrh_ResumeTrainingServices : BaseServices<Ghrh_ResumeTraining, Ghr
await SetLabel(x); await SetLabel(x);
x.AttachmentIDs = attachments x.AttachmentIDs = attachments
.Where(o => o.TableName == x.Id.ToString()) .Where(o => o.TableName == x.Id.ToString())
.Select(o => new ResumeAttachment() .Select(o => new Ghrs_Attachment()
{ {
AttachmentID = o.AttachmentID, AttachmentID = o.AttachmentID,
AttachFileExtension = o.AttachFileExtension, AttachFileExtension = o.AttachFileExtension,
@ -77,6 +77,7 @@ public class Ghrh_ResumeTrainingServices : BaseServices<Ghrh_ResumeTraining, Ghr
var result = new List<long>(); var result = new List<long>();
for (int i = 0; i < listEntity.Count; i++) for (int i = 0; i < listEntity.Count; i++)
{ {
listEntity[i].IsPass = listEntity[i].IsPass1 == 1 ? true : false;
var id = await base.Add(listEntity[i]); var id = await base.Add(listEntity[i]);
if (listEntity[i].AttachmentIDs != null && listEntity[i].AttachmentIDs.Any()) if (listEntity[i].AttachmentIDs != null && listEntity[i].AttachmentIDs.Any())
{ {
@ -91,6 +92,47 @@ public class Ghrh_ResumeTrainingServices : BaseServices<Ghrh_ResumeTraining, Ghr
return result; return result;
} }
public override async Task<long> Add(InsertGhrh_ResumeTrainingInput entity)
{
var result = await Add([entity]);
return result.First();
}
public override async Task<bool> Update(long Id, EditGhrh_ResumeTrainingInput editModel)
{
editModel.IsPass = editModel.IsPass1 == 1 ? true : false;
var result = await base.Update(Id, editModel);
if (editModel.AttachmentIDs != null && editModel.AttachmentIDs.Any())
{
await Db.Updateable<Ghrs_Attachment>()
.SetColumns(x => new Ghrs_Attachment() { TableName = null })
.Where(it => it.TableName == Id.ToString())
.ExecuteCommandAsync();
var ids = editModel.AttachmentIDs.Select(x => x.RelativePath).ToList();
await Db.Updateable<Ghrs_Attachment>()
.SetColumns(x => new Ghrs_Attachment() { TableName = Id.ToString() })
.Where(it => it.AttachmentID != null && ids.Contains(it.RelativePath))
.ExecuteCommandAsync();
}
return result;
}
public override async Task<ServiceFormResult<Ghrh_ResumeTrainingDto>> QueryForm(QueryForm body)
{
var result = await base.QueryForm(body);
result.result.DT_TableDataT1[0].AttachmentIDs = await Db.Queryable<Ghrs_Attachment>().Where(x => x.TableName == body.id.ObjToString()).ToListAsync();
result.result.DT_TableDataT1[0].IsPass1 = result.result.DT_TableDataT1[0].IsPass == true ? 1 : 0;
return result;
}
#region Excel导入 #region Excel导入
public override async Task<ServiceResult<string>> DownloadExcel(string menuName) public override async Task<ServiceResult<string>> DownloadExcel(string menuName)
{ {

@ -1,4 +1,7 @@
namespace Tiobon.Core.Services; using Tiobon.Core.Common.DB.Dapper.Extensions;
using Tiobon.Core.Model.Models;
namespace Tiobon.Core.Services;
/// <summary> /// <summary>
/// 工作经历 (服务) /// 工作经历 (服务)
@ -24,7 +27,7 @@ public class Ghrh_ResumeWorkExpServices : BaseServices<Ghrh_ResumeWorkExp, Ghrh_
await SetLabel(x); await SetLabel(x);
x.AttachmentIDs = attachments x.AttachmentIDs = attachments
.Where(o => o.TableName == x.Id.ToString()) .Where(o => o.TableName == x.Id.ToString())
.Select(o => new ResumeAttachment() .Select(o => new Ghrs_Attachment()
{ {
AttachmentID = o.AttachmentID, AttachmentID = o.AttachmentID,
AttachFileExtension = o.AttachFileExtension, AttachFileExtension = o.AttachFileExtension,
@ -56,6 +59,45 @@ public class Ghrh_ResumeWorkExpServices : BaseServices<Ghrh_ResumeWorkExp, Ghrh_
return result; return result;
} }
public override async Task<long> Add(InsertGhrh_ResumeWorkExpInput entity)
{
var result = await Add([entity]);
return result.First();
}
public override async Task<bool> Update(long Id, EditGhrh_ResumeWorkExpInput editModel)
{
var result = await base.Update(Id, editModel);
if (editModel.AttachmentIDs != null && editModel.AttachmentIDs.Any())
{
await Db.Updateable<Ghrs_Attachment>()
.SetColumns(x => new Ghrs_Attachment() { TableName = null })
.Where(it => it.TableName == Id.ToString())
.ExecuteCommandAsync();
var ids = editModel.AttachmentIDs.Select(x => x.RelativePath).ToList();
await Db.Updateable<Ghrs_Attachment>()
.SetColumns(x => new Ghrs_Attachment() { TableName = Id.ToString() })
.Where(it => it.AttachmentID != null && ids.Contains(it.RelativePath))
.ExecuteCommandAsync();
}
return result;
}
public override async Task<ServiceFormResult<Ghrh_ResumeWorkExpDto>> QueryForm(QueryForm body)
{
var result = await base.QueryForm(body);
result.result.DT_TableDataT1[0].AttachmentIDs = await Db.Queryable<Ghrs_Attachment>().Where(x => x.TableName == body.id.ObjToString()).ToListAsync();
return result;
}
#region 字典映射、全称、单位转换等 #region 字典映射、全称、单位转换等
/// <summary> /// <summary>
/// 字典映射、全称、单位转换等 /// 字典映射、全称、单位转换等

@ -5740,6 +5740,16 @@
预留字段12 预留字段12
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExternalTrainApplyOrder_BoltoneBase.SchoolName1">
<summary>
SchoolName1
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExternalTrainApplyOrder_BoltoneBase.CourseName1">
<summary>
CourseName1
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_MultipleTitleBase"> <member name="T:Tiobon.Core.Model.Models.Ghre_MultipleTitleBase">
<summary> <summary>
多岗维护 (Dto.Base) 多岗维护 (Dto.Base)
@ -7345,6 +7355,11 @@
系统内置 系统内置
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_RequestBase.OutSideOrg">
<summary>
外训机构
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_RequiredCourseBase"> <member name="T:Tiobon.Core.Model.Models.Ghre_RequiredCourseBase">
<summary> <summary>
必选修查询 (Dto.Base) 必选修查询 (Dto.Base)
@ -9020,6 +9035,11 @@
预留字段12 预留字段12
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_SurveyQuestionBase.WordCloudKeywords">
<summary>
词云图关键字
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_SurveyRecordBase"> <member name="T:Tiobon.Core.Model.Models.Ghre_SurveyRecordBase">
<summary> <summary>
Ghre_SurveyRecord (Dto.Base) Ghre_SurveyRecord (Dto.Base)
@ -13890,7 +13910,7 @@
预留字段11 预留字段11
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghrh_ResumeTrainingBase.ReverseI2"> <member name="P:Tiobon.Core.Model.Models.Ghrh_ResumeTrainingBase.IsPass1">
<summary> <summary>
预留字段12 预留字段12
</summary> </summary>
@ -24352,6 +24372,16 @@
预留字段12 预留字段12
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExternalTrainApplyOrder_Boltone.SchoolName1">
<summary>
SchoolName1
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_ExternalTrainApplyOrder_Boltone.CourseName1">
<summary>
CourseName1
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_MultipleTitle"> <member name="T:Tiobon.Core.Model.Models.Ghre_MultipleTitle">
<summary> <summary>
多岗维护 (Model) 多岗维护 (Model)
@ -25937,6 +25967,11 @@
系统内置 系统内置
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_Request.OutSideOrg">
<summary>
外训机构
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_RequiredCourse"> <member name="T:Tiobon.Core.Model.Models.Ghre_RequiredCourse">
<summary> <summary>
必选修查询 (Model) 必选修查询 (Model)
@ -27542,6 +27577,11 @@
预留字段12 预留字段12
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghre_SurveyQuestion.WordCloudKeywords">
<summary>
词云图关键字
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_SurveyRecord"> <member name="T:Tiobon.Core.Model.Models.Ghre_SurveyRecord">
<summary> <summary>
Ghre_SurveyRecord (Model) Ghre_SurveyRecord (Model)
@ -39513,6 +39553,11 @@
必修规则 必修规则
</summary> </summary>
</member> </member>
<member name="F:Tiobon.Core.Model.Consts.DIC_EXAM_STAFF_SOURCE.MANUAL_ELECTIVE">
<summary>
手动选修
</summary>
</member>
<member name="T:Tiobon.Core.Model.Consts.DIC_TRAINING_STUDY_RULE_TRAIN_TYPE"> <member name="T:Tiobon.Core.Model.Consts.DIC_TRAINING_STUDY_RULE_TRAIN_TYPE">
<summary> <summary>
培训规则种类 培训规则种类
@ -40398,6 +40443,11 @@
图标 图标
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.Ghre_SurveyQuestionExtendBase.WordCloudKeywords">
<summary>
词云图关键字
</summary>
</member>
<member name="P:Tiobon.Core.Model.ViewModels.Extend.Ghre_SurveyQuestionExtendBase.RemarkSz"> <member name="P:Tiobon.Core.Model.ViewModels.Extend.Ghre_SurveyQuestionExtendBase.RemarkSz">
<summary> <summary>
备注 备注

@ -1095,6 +1095,13 @@
<param name="examRecordId"></param> <param name="examRecordId"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Tiobon.Core.Api.Controllers.Ghre_ExamRecordController.QueryGroups(System.Int64)">
<summary>
查询考试组
</summary>
<param name="examRecordId"></param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordDetailController"> <member name="T:Tiobon.Core.Api.Controllers.Ghre_ExamRecordDetailController">
<summary> <summary>
Ghre_ExamRecordDetail(Controller) Ghre_ExamRecordDetail(Controller)

Loading…
Cancel
Save