diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObCompany.cs b/SimpleAdmin.Application/Entity/Onboarding/ObCompany.cs
index 70f7e07..f187462 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObCompany.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObCompany.cs
@@ -10,16 +10,50 @@
namespace SimpleAdmin.Application;
+///
+/// 入职业务公司档案,保存合同甲方及入职归属公司信息。
+///
[SugarTable("ob_company", TableDescription = "入职业务公司")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObCompany : BaseEntity
{
+ ///
+ /// 公司业务编码。
+ ///
public virtual string CompanyCode { get; set; }
+
+ ///
+ /// 公司显示名称。
+ ///
public virtual string CompanyName { get; set; }
+
+ ///
+ /// 合同中使用的甲方完整法定名称。
+ ///
public virtual string LegalName { get; set; }
+
+ ///
+ /// 统一社会信用代码。
+ ///
public string UnifiedSocialCreditCode { get; set; }
+
+ ///
+ /// 法定代表人姓名。
+ ///
public string LegalRepresentative { get; set; }
+
+ ///
+ /// 工商注册地址。
+ ///
public string RegisteredAddress { get; set; }
+
+ ///
+ /// 公司联系电话。
+ ///
public string ContactPhone { get; set; }
+
+ ///
+ /// 业务备注。
+ ///
public string Remark { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObContractScope.cs b/SimpleAdmin.Application/Entity/Onboarding/ObContractScope.cs
index 30c0be2..2b1f208 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObContractScope.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObContractScope.cs
@@ -10,14 +10,40 @@
namespace SimpleAdmin.Application;
+///
+/// 合同适用范围,将已启用的合同版本绑定到公司或具体岗位。
+///
[SugarTable("ob_contract_scope", TableDescription = "公司岗位合同适用范围")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObContractScope : BaseEntity
{
+ ///
+ /// 所属入职业务公司 Id。
+ ///
public long CompanyId { get; set; }
+
+ ///
+ /// 所属岗位 Id;为空时表示适用于公司下全部岗位。
+ ///
public long? PositionId { get; set; }
+
+ ///
+ /// 合同模板主档案 Id。
+ ///
public long TemplateId { get; set; }
+
+ ///
+ /// 合同模板版本 Id。
+ ///
public long TemplateVersionId { get; set; }
+
+ ///
+ /// 该适用范围下的合同是否必签。
+ ///
public bool Required { get; set; }
+
+ ///
+ /// 显示排序码。
+ ///
public int? SortCode { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObContractTemplate.cs b/SimpleAdmin.Application/Entity/Onboarding/ObContractTemplate.cs
index fc6ac64..331af71 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObContractTemplate.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObContractTemplate.cs
@@ -10,12 +10,30 @@
namespace SimpleAdmin.Application;
+///
+/// 合同模板主档案,用于区分不同合同类型及模板用途。
+///
[SugarTable("ob_contract_template", TableDescription = "合同模板主档案")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObContractTemplate : BaseEntity
{
+ ///
+ /// 合同模板业务编码。
+ ///
public string TemplateCode { get; set; }
+
+ ///
+ /// 合同模板名称。
+ ///
public string TemplateName { get; set; }
+
+ ///
+ /// 合同类型。
+ ///
public string ContractType { get; set; }
+
+ ///
+ /// 模板用途说明。
+ ///
public string Description { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObContractTemplateVersion.cs b/SimpleAdmin.Application/Entity/Onboarding/ObContractTemplateVersion.cs
index 1a5d9d8..c2f750c 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObContractTemplateVersion.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObContractTemplateVersion.cs
@@ -10,16 +10,50 @@
namespace SimpleAdmin.Application;
+///
+/// 合同模板版本,保存不可变的 DOCX 源文件及版本有效期。
+///
[SugarTable("ob_contract_template_version", TableDescription = "合同模板版本")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObContractTemplateVersion : BaseEntity
{
+ ///
+ /// 合同模板主档案 Id。
+ ///
public long TemplateId { get; set; }
+
+ ///
+ /// 模板版本号。
+ ///
public string VersionNo { get; set; }
+
+ ///
+ /// 模板 DOCX 源文件 Id。
+ ///
public long SourceDocxFileId { get; set; }
+
+ ///
+ /// 源文件内容哈希,用于校验文件是否变化。
+ ///
public string FileHash { get; set; }
+
+ ///
+ /// 版本生效日期。
+ ///
public DateTime? EffectiveDate { get; set; }
+
+ ///
+ /// 版本失效日期。
+ ///
public DateTime? ExpiryDate { get; set; }
+
+ ///
+ /// 模板版本状态。
+ ///
public string VersionStatus { get; set; } = ContractTemplateVersionStatus.Draft;
+
+ ///
+ /// 业务备注。
+ ///
public string Remark { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObEmployee.cs b/SimpleAdmin.Application/Entity/Onboarding/ObEmployee.cs
index 44b6ff2..a747cef 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObEmployee.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObEmployee.cs
@@ -10,37 +10,155 @@
namespace SimpleAdmin.Application;
+///
+/// 审核通过后生成的正式员工档案,是入职流程的最终业务数据。
+///
[SugarTable("ob_employee", TableDescription = "正式员工档案")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObEmployee : BaseEntity
{
+ ///
+ /// 员工编号。
+ ///
public string EmployeeNo { get; set; }
+
+ ///
+ /// 内部人员编号。
+ ///
public string InternalNo { get; set; }
+
+ ///
+ /// 员工姓名。
+ ///
public string EmployeeName { get; set; }
+
+ ///
+ /// 所属入职业务公司 Id。
+ ///
public long CompanyId { get; set; }
+
+ ///
+ /// 所属部门名称。
+ ///
public string DepartmentName { get; set; }
+
+ ///
+ /// 所属入职业务岗位 Id。
+ ///
public long PositionId { get; set; }
+
+ ///
+ /// 性别。
+ ///
public string Gender { get; set; }
+
+ ///
+ /// 手机号码。
+ ///
public string Phone { get; set; }
+
+ ///
+ /// 身份证号码。
+ ///
public string IdCardNumber { get; set; }
+
+ ///
+ /// 毕业院校。
+ ///
public string College { get; set; }
+
+ ///
+ /// 最高学历。
+ ///
public string Education { get; set; }
+
+ ///
+ /// 所学专业。
+ ///
public string Major { get; set; }
+
+ ///
+ /// 出生日期。
+ ///
public DateTime? BirthDate { get; set; }
+
+ ///
+ /// 户籍所在地。
+ ///
public string RegisteredResidence { get; set; }
+
+ ///
+ /// 民族。
+ ///
public string Nation { get; set; }
+
+ ///
+ /// 现居住或联系地址。
+ ///
public string ContactAddress { get; set; }
+
+ ///
+ /// 入职日期。
+ ///
public DateTime? EntryDate { get; set; }
+
+ ///
+ /// 合同开始日期。
+ ///
public DateTime? ContractStartDate { get; set; }
+
+ ///
+ /// 合同结束日期。
+ ///
public DateTime? ContractEndDate { get; set; }
+
+ ///
+ /// 试用期开始日期。
+ ///
public DateTime? ProbationStartDate { get; set; }
+
+ ///
+ /// 试用期结束日期。
+ ///
public DateTime? ProbationEndDate { get; set; }
+
+ ///
+ /// 转正日期。
+ ///
public DateTime? RegularizationDate { get; set; }
+
+ ///
+ /// 社保缴纳公司。
+ ///
public string SocialInsuranceCompany { get; set; }
+
+ ///
+ /// 合同性质。
+ ///
public string ContractNature { get; set; }
+
+ ///
+ /// 工资银行卡号。
+ ///
public string BankCardNumber { get; set; }
+
+ ///
+ /// 银行卡开户名。
+ ///
public string BankAccountName { get; set; }
+
+ ///
+ /// 开户银行名称。
+ ///
public string BankName { get; set; }
+
+ ///
+ /// 业务备注。
+ ///
public string Remark { get; set; }
+
+ ///
+ /// 审核通过时冻结的动态字段信息 JSON。
+ ///
public string ExtraInfoJson { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObFormField.cs b/SimpleAdmin.Application/Entity/Onboarding/ObFormField.cs
index 03639dc..ea6b07c 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObFormField.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObFormField.cs
@@ -10,14 +10,40 @@
namespace SimpleAdmin.Application;
+///
+/// 动态入职字段定义,用于扩展固定人员基础信息之外的填写项。
+///
[SugarTable("ob_form_field", TableDescription = "动态入职填写字段")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObFormField : BaseEntity
{
+ ///
+ /// 动态字段业务编码。
+ ///
public string FieldCode { get; set; }
+
+ ///
+ /// 动态字段显示名称。
+ ///
public string FieldName { get; set; }
+
+ ///
+ /// 变量数据类型。
+ ///
public string DataType { get; set; }
+
+ ///
+ /// 选择型字段或变量的可选项 JSON。
+ ///
public string OptionsJson { get; set; }
+
+ ///
+ /// 字段校验规则。
+ ///
public string ValidationRule { get; set; }
+
+ ///
+ /// 员工端输入提示。
+ ///
public string Placeholder { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObFormRequirement.cs b/SimpleAdmin.Application/Entity/Onboarding/ObFormRequirement.cs
index 613c17a..7737af7 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObFormRequirement.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObFormRequirement.cs
@@ -10,13 +10,35 @@
namespace SimpleAdmin.Application;
+///
+/// 动态字段填写要求,配置公司或岗位需要展示及校验的字段。
+///
[SugarTable("ob_form_requirement", TableDescription = "公司岗位动态填写项要求")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObFormRequirement : BaseEntity
{
+ ///
+ /// 所属入职业务公司 Id。
+ ///
public long CompanyId { get; set; }
+
+ ///
+ /// 所属岗位 Id;为空时表示适用于公司下全部岗位。
+ ///
public long? PositionId { get; set; }
+
+ ///
+ /// 动态字段定义 Id。
+ ///
public long FieldId { get; set; }
+
+ ///
+ /// 候选人是否必须填写该动态字段。
+ ///
public bool Required { get; set; }
+
+ ///
+ /// 显示排序码。
+ ///
public int? SortCode { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObMaterialRequirement.cs b/SimpleAdmin.Application/Entity/Onboarding/ObMaterialRequirement.cs
index 8e3776a..8d28fe4 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObMaterialRequirement.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObMaterialRequirement.cs
@@ -10,14 +10,35 @@
namespace SimpleAdmin.Application;
+///
+/// 入职材料要求,配置公司或岗位需要候选人上传的材料。
+///
[SugarTable("ob_material_requirement", TableDescription = "公司岗位入职资料要求")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObMaterialRequirement : BaseEntity
{
+ ///
+ /// 所属入职业务公司 Id。
+ ///
public long CompanyId { get; set; }
+
+ ///
+ /// 所属岗位 Id;为空时表示适用于公司下全部岗位。
+ ///
public long? PositionId { get; set; }
+
+ ///
+ /// 材料类型 Id。
+ ///
public long MaterialTypeId { get; set; }
+
+ ///
+ /// 候选人是否必须上传该类材料。
+ ///
public bool Required { get; set; }
+
+ ///
+ /// 显示排序码。
+ ///
public int? SortCode { get; set; }
}
-
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObMaterialType.cs b/SimpleAdmin.Application/Entity/Onboarding/ObMaterialType.cs
index b2e8b98..36848cf 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObMaterialType.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObMaterialType.cs
@@ -10,13 +10,35 @@
namespace SimpleAdmin.Application;
+///
+/// 入职材料类型,定义允许上传的文件类型、数量和大小。
+///
[SugarTable("ob_material_type", TableDescription = "入职上传资料类型")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObMaterialType : BaseEntity
{
+ ///
+ /// 材料类型业务编码。
+ ///
public string MaterialCode { get; set; }
+
+ ///
+ /// 材料显示名称。
+ ///
public string MaterialName { get; set; }
+
+ ///
+ /// 允许上传的文件扩展名,多个值使用逗号分隔。
+ ///
public string AllowedExtensions { get; set; }
+
+ ///
+ /// 单个任务允许上传的最大文件数量。
+ ///
public int MaxFileCount { get; set; }
+
+ ///
+ /// 单个文件最大大小,单位为 MB。
+ ///
public int? MaxFileSizeMb { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObOnboardingTask.cs b/SimpleAdmin.Application/Entity/Onboarding/ObOnboardingTask.cs
index 720f34d..b372944 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObOnboardingTask.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObOnboardingTask.cs
@@ -10,21 +10,75 @@
namespace SimpleAdmin.Application;
+///
+/// 新员工入职任务,承载候选人填写、审核、转正式员工和归档全过程。
+///
[SugarTable("ob_onboarding_task", TableDescription = "新员工入职任务")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObOnboardingTask : BaseEntity
{
+ ///
+ /// 入职任务编号。
+ ///
public string TaskNo { get; set; }
+
+ ///
+ /// 审核通过后生成的正式员工 Id。
+ ///
public long? EmployeeId { get; set; }
+
+ ///
+ /// 所属入职业务公司 Id。
+ ///
public long CompanyId { get; set; }
+
+ ///
+ /// 入职任务所属岗位 Id。
+ ///
public long PositionId { get; set; }
+
+ ///
+ /// 创建任务时指定的审核人用户 Id。
+ ///
public long? AssignedReviewerUserId { get; set; }
+
+ ///
+ /// 入职任务当前状态。
+ ///
public string TaskStatus { get; set; } = OnboardingTaskStatus.Draft;
+
+ ///
+ /// 员工填写链接业务过期时间。
+ ///
public DateTime? LinkExpireAt { get; set; }
+
+ ///
+ /// 候选人累计提交轮次。
+ ///
public int SubmitCount { get; set; }
+
+ ///
+ /// 候选人最近一次提交时间。
+ ///
public DateTime? LastSubmittedAt { get; set; }
+
+ ///
+ /// 审核或流程操作发生时间。
+ ///
public DateTime? AuditedAt { get; set; }
+
+ ///
+ /// 任务归档时间。
+ ///
public DateTime? ArchivedAt { get; set; }
+
+ ///
+ /// 最近一次审核退回原因。
+ ///
public string RejectReason { get; set; }
+
+ ///
+ /// 业务备注。
+ ///
public string Remark { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObPosition.cs b/SimpleAdmin.Application/Entity/Onboarding/ObPosition.cs
index 9882d1a..dcedb81 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObPosition.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObPosition.cs
@@ -10,16 +10,45 @@
namespace SimpleAdmin.Application;
+///
+/// 入职业务岗位档案,保存岗位默认合同期限、试用期及业务参数。
+///
[SugarTable("ob_position", TableDescription = "入职业务岗位")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObPosition : BaseEntity
{
+ ///
+ /// 所属入职业务公司 Id。
+ ///
public long CompanyId { get; set; }
+
+ ///
+ /// 岗位业务编码。
+ ///
public virtual string PositionCode { get; set; }
+
+ ///
+ /// 岗位名称。
+ ///
public virtual string PositionName { get; set; }
+
+ ///
+ /// 默认合同期限,单位为年。
+ ///
public decimal? DefaultContractYears { get; set; }
+
+ ///
+ /// 默认试用期,单位为月。
+ ///
public int? DefaultProbationMonths { get; set; }
+
+ ///
+ /// 岗位默认合同参数 JSON。
+ ///
public string DefaultParamsJson { get; set; }
+
+ ///
+ /// 业务备注。
+ ///
public string Remark { get; set; }
}
-
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObTaskAudit.cs b/SimpleAdmin.Application/Entity/Onboarding/ObTaskAudit.cs
index a84ec5e..707fc6e 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObTaskAudit.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObTaskAudit.cs
@@ -10,15 +10,45 @@
namespace SimpleAdmin.Application;
+///
+/// 入职任务提交与审核记录,按轮次保留意见及数据快照。
+///
[SugarTable("ob_task_audit", TableDescription = "入职任务提交与审核记录")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObTaskAudit : BaseEntity
{
+ ///
+ /// 所属入职任务 Id。
+ ///
public long TaskId { get; set; }
+
+ ///
+ /// 审核轮次,与任务提交次数对应。
+ ///
public int AuditRound { get; set; }
+
+ ///
+ /// 审核或流程动作。
+ ///
public string AuditAction { get; set; }
+
+ ///
+ /// 审核操作人用户 Id;员工提交时可为空。
+ ///
public long? AuditorUserId { get; set; }
+
+ ///
+ /// 审核意见或流程说明。
+ ///
public string AuditOpinion { get; set; }
+
+ ///
+ /// 本轮提交或审核时的数据快照 JSON。
+ ///
public string SnapshotJson { get; set; }
+
+ ///
+ /// 审核或流程操作发生时间。
+ ///
public DateTime AuditedAt { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObTaskContract.cs b/SimpleAdmin.Application/Entity/Onboarding/ObTaskContract.cs
index 3db8a68..2abb9cc 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObTaskContract.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObTaskContract.cs
@@ -10,22 +10,80 @@
namespace SimpleAdmin.Application;
+///
+/// 入职任务合同实例,锁定模板版本并记录生成、阅读和签署状态。
+///
[SugarTable("ob_task_contract", TableDescription = "入职任务合同明细")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObTaskContract : BaseEntity
{
+ ///
+ /// 所属入职任务 Id。
+ ///
public long TaskId { get; set; }
+
+ ///
+ /// 合同模板主档案 Id。
+ ///
public long TemplateId { get; set; }
+
+ ///
+ /// 合同模板版本 Id。
+ ///
public long TemplateVersionId { get; set; }
+
+ ///
+ /// 任务创建时冻结的合同名称。
+ ///
public string ContractName { get; set; }
+
+ ///
+ /// 合同类型。
+ ///
public string ContractType { get; set; }
+
+ ///
+ /// 是否为候选人必须阅读确认的合同。
+ ///
public bool Required { get; set; }
+
+ ///
+ /// 任务合同当前状态。
+ ///
public string ContractStatus { get; set; } = TaskContractStatus.PendingGenerate;
+
+ ///
+ /// 生成后的 DOCX 文件 Id。
+ ///
public long? GeneratedDocxFileId { get; set; }
+
+ ///
+ /// 归档或打印使用的 PDF 文件 Id。
+ ///
public long? GeneratedPdfFileId { get; set; }
+
+ ///
+ /// 合同文件生成时间。
+ ///
public DateTime? GeneratedAt { get; set; }
+
+ ///
+ /// 候选人首次阅读时间。
+ ///
public DateTime? ReadAt { get; set; }
+
+ ///
+ /// 候选人确认阅读时间。
+ ///
public DateTime? ConfirmedAt { get; set; }
+
+ ///
+ /// 线下签署完成时间。
+ ///
public DateTime? OfflineSignedAt { get; set; }
+
+ ///
+ /// 合同打印时间。
+ ///
public DateTime? PrintedAt { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObTaskContractVariable.cs b/SimpleAdmin.Application/Entity/Onboarding/ObTaskContractVariable.cs
index 98fe20b..4bf9b21 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObTaskContractVariable.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObTaskContractVariable.cs
@@ -10,16 +10,50 @@
namespace SimpleAdmin.Application;
+///
+/// 任务合同变量最终值快照,合同生成后不再读取模板实时值。
+///
[SugarTable("ob_task_contract_variable", TableDescription = "任务合同变量最终值快照")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObTaskContractVariable : BaseEntity
{
+ ///
+ /// 所属任务合同 Id。
+ ///
public long TaskContractId { get; set; }
+
+ ///
+ /// DOCX 中使用的变量编码。
+ ///
public string VariableCode { get; set; }
+
+ ///
+ /// 变量显示名称。
+ ///
public string VariableName { get; set; }
+
+ ///
+ /// 变量来源类型,例如员工、公司、合同或系统。
+ ///
public string VariableType { get; set; }
+
+ ///
+ /// 变量数据类型。
+ ///
public string DataType { get; set; }
+
+ ///
+ /// 合同生成时使用的最终变量值。
+ ///
public string VariableValue { get; set; }
+
+ ///
+ /// 最终值来源类型。
+ ///
public string SourceType { get; set; }
+
+ ///
+ /// 是否由人事手工覆盖自动值。
+ ///
public bool IsManualOverride { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObTaskEmployeeInfo.cs b/SimpleAdmin.Application/Entity/Onboarding/ObTaskEmployeeInfo.cs
index 49b8f89..97d02a5 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObTaskEmployeeInfo.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObTaskEmployeeInfo.cs
@@ -10,35 +10,145 @@
namespace SimpleAdmin.Application;
+///
+/// 候选人在入职任务中提交的固定人员基础信息。
+///
[SugarTable("ob_task_employee_info", TableDescription = "候选人提交的固定基础信息")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObTaskEmployeeInfo : BaseEntity
{
+ ///
+ /// 所属入职任务 Id。
+ ///
public long TaskId { get; set; }
+
+ ///
+ /// 员工编号。
+ ///
public string EmployeeNo { get; set; }
+
+ ///
+ /// 内部人员编号。
+ ///
public string InternalNo { get; set; }
+
+ ///
+ /// 员工姓名。
+ ///
public string EmployeeName { get; set; }
+
+ ///
+ /// 所属部门名称。
+ ///
public string DepartmentName { get; set; }
+
+ ///
+ /// 性别。
+ ///
public string Gender { get; set; }
+
+ ///
+ /// 手机号码。
+ ///
public string Phone { get; set; }
+
+ ///
+ /// 身份证号码。
+ ///
public string IdCardNumber { get; set; }
+
+ ///
+ /// 毕业院校。
+ ///
public string College { get; set; }
+
+ ///
+ /// 最高学历。
+ ///
public string Education { get; set; }
+
+ ///
+ /// 所学专业。
+ ///
public string Major { get; set; }
+
+ ///
+ /// 出生日期。
+ ///
public DateTime? BirthDate { get; set; }
+
+ ///
+ /// 户籍所在地。
+ ///
public string RegisteredResidence { get; set; }
+
+ ///
+ /// 民族。
+ ///
public string Nation { get; set; }
+
+ ///
+ /// 现居住或联系地址。
+ ///
public string ContactAddress { get; set; }
+
+ ///
+ /// 入职日期。
+ ///
public DateTime? EntryDate { get; set; }
+
+ ///
+ /// 合同开始日期。
+ ///
public DateTime? ContractStartDate { get; set; }
+
+ ///
+ /// 合同结束日期。
+ ///
public DateTime? ContractEndDate { get; set; }
+
+ ///
+ /// 试用期开始日期。
+ ///
public DateTime? ProbationStartDate { get; set; }
+
+ ///
+ /// 试用期结束日期。
+ ///
public DateTime? ProbationEndDate { get; set; }
+
+ ///
+ /// 转正日期。
+ ///
public DateTime? RegularizationDate { get; set; }
+
+ ///
+ /// 社保缴纳公司。
+ ///
public string SocialInsuranceCompany { get; set; }
+
+ ///
+ /// 合同性质。
+ ///
public string ContractNature { get; set; }
+
+ ///
+ /// 工资银行卡号。
+ ///
public string BankCardNumber { get; set; }
+
+ ///
+ /// 银行卡开户名。
+ ///
public string BankAccountName { get; set; }
+
+ ///
+ /// 开户银行名称。
+ ///
public string BankName { get; set; }
+
+ ///
+ /// 业务备注。
+ ///
public string Remark { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObTaskFormValue.cs b/SimpleAdmin.Application/Entity/Onboarding/ObTaskFormValue.cs
index 2ac5fe6..056b031 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObTaskFormValue.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObTaskFormValue.cs
@@ -10,14 +10,40 @@
namespace SimpleAdmin.Application;
+///
+/// 候选人动态字段填写值,保留字段快照及提交轮次。
+///
[SugarTable("ob_task_form_value", TableDescription = "候选人动态填写信息")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObTaskFormValue : BaseEntity
{
+ ///
+ /// 所属入职任务 Id。
+ ///
public long TaskId { get; set; }
+
+ ///
+ /// 动态字段定义 Id。
+ ///
public long FieldId { get; set; }
+
+ ///
+ /// 动态字段业务编码。
+ ///
public string FieldCode { get; set; }
+
+ ///
+ /// 动态字段显示名称。
+ ///
public string FieldName { get; set; }
+
+ ///
+ /// 候选人填写的字段值。
+ ///
public string FieldValue { get; set; }
+
+ ///
+ /// 该数据所属的提交轮次。
+ ///
public int SubmitRound { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObTaskLink.cs b/SimpleAdmin.Application/Entity/Onboarding/ObTaskLink.cs
index 5942430..7de1398 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObTaskLink.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObTaskLink.cs
@@ -10,16 +10,45 @@
namespace SimpleAdmin.Application;
+///
+/// 新员工专属填写链接,仅保存 Token 哈希及链接生命周期信息。
+///
[SugarTable("ob_task_link", TableDescription = "新员工专属填写链接")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObTaskLink : BaseEntity
{
+ ///
+ /// 所属入职任务 Id。
+ ///
public long TaskId { get; set; }
+
+ ///
+ /// 访问 Token 的 SHA-256 哈希,不保存明文 Token。
+ ///
public string TokenHash { get; set; }
+
+ ///
+ /// 填写链接当前状态。
+ ///
public string LinkStatus { get; set; } = OnboardingLinkStatus.Active;
+
+ ///
+ /// 链接过期时间。
+ ///
public DateTime ExpiresAt { get; set; }
+
+ ///
+ /// 链接最近访问时间。
+ ///
public DateTime? LastAccessedAt { get; set; }
+
+ ///
+ /// 链接累计访问次数。
+ ///
public int AccessCount { get; set; }
+
+ ///
+ /// 链接撤销时间。
+ ///
public DateTime? RevokedAt { get; set; }
}
-
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObTaskMaterial.cs b/SimpleAdmin.Application/Entity/Onboarding/ObTaskMaterial.cs
index 2aec507..166b449 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObTaskMaterial.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObTaskMaterial.cs
@@ -10,16 +10,50 @@
namespace SimpleAdmin.Application;
+///
+/// 候选人上传的入职材料,记录文件、提交轮次及审核状态。
+///
[SugarTable("ob_task_material", TableDescription = "候选人上传资料")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObTaskMaterial : BaseEntity
{
+ ///
+ /// 所属入职任务 Id。
+ ///
public long TaskId { get; set; }
+
+ ///
+ /// 材料类型 Id。
+ ///
public long MaterialTypeId { get; set; }
+
+ ///
+ /// 材料显示名称。
+ ///
public string MaterialName { get; set; }
+
+ ///
+ /// 系统文件 Id。
+ ///
public long FileId { get; set; }
+
+ ///
+ /// 该数据所属的提交轮次。
+ ///
public int SubmitRound { get; set; }
+
+ ///
+ /// 材料上传时间。
+ ///
public DateTime UploadedAt { get; set; }
+
+ ///
+ /// 材料审核状态。
+ ///
public string ReviewStatus { get; set; } = TaskMaterialReviewStatus.Pending;
+
+ ///
+ /// 材料审核意见。
+ ///
public string ReviewRemark { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObTaskOperationLog.cs b/SimpleAdmin.Application/Entity/Onboarding/ObTaskOperationLog.cs
index 3c0a54e..dbb46f8 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObTaskOperationLog.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObTaskOperationLog.cs
@@ -10,16 +10,50 @@
namespace SimpleAdmin.Application;
+///
+/// 入职任务操作日志,用于追踪关键状态变化及操作人。
+///
[SugarTable("ob_task_operation_log", TableDescription = "入职任务操作日志")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObTaskOperationLog : BaseEntity
{
+ ///
+ /// 所属入职任务 Id。
+ ///
public long TaskId { get; set; }
+
+ ///
+ /// 操作人类型,例如员工、人事或系统。
+ ///
public string OperatorType { get; set; }
+
+ ///
+ /// 后台操作人用户 Id。
+ ///
public long? OperatorUserId { get; set; }
+
+ ///
+ /// 操作类型。
+ ///
public string OperationType { get; set; }
+
+ ///
+ /// 操作说明。
+ ///
public string OperationContent { get; set; }
+
+ ///
+ /// 本次变更的数据 JSON。
+ ///
public string ChangeDataJson { get; set; }
+
+ ///
+ /// 操作来源 IP 地址。
+ ///
public string IpAddress { get; set; }
+
+ ///
+ /// 操作发生时间。
+ ///
public DateTime OperatedAt { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/ObTemplateVariable.cs b/SimpleAdmin.Application/Entity/Onboarding/ObTemplateVariable.cs
index 1f26bb9..f6f230a 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/ObTemplateVariable.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/ObTemplateVariable.cs
@@ -10,21 +10,75 @@
namespace SimpleAdmin.Application;
+///
+/// 合同模板变量定义,描述 DOCX 占位符、来源类型及填写规则。
+///
[SugarTable("ob_template_variable", TableDescription = "合同模板变量定义")]
[Tenant(SqlSugarConst.DB_DEFAULT)]
public class ObTemplateVariable : BaseEntity
{
+ ///
+ /// 合同模板版本 Id。
+ ///
public long TemplateVersionId { get; set; }
+
+ ///
+ /// DOCX 中使用的变量编码。
+ ///
public string VariableCode { get; set; }
+
+ ///
+ /// 变量显示名称。
+ ///
public string VariableName { get; set; }
+
+ ///
+ /// 变量来源类型,例如员工、公司、合同或系统。
+ ///
public string VariableType { get; set; }
+
+ ///
+ /// 变量数据类型。
+ ///
public string DataType { get; set; }
+
+ ///
+ /// 变量关联的候选人基础信息字段。
+ ///
public string EmployeeField { get; set; }
+
+ ///
+ /// 变量默认值。
+ ///
public string DefaultValue { get; set; }
+
+ ///
+ /// 选择型字段或变量的可选项 JSON。
+ ///
public string OptionsJson { get; set; }
+
+ ///
+ /// 变量格式化规则。
+ ///
public string FormatRule { get; set; }
+
+ ///
+ /// 是否必填、必传或必签。
+ ///
public bool Required { get; set; }
+
+ ///
+ /// 人事是否可在创建任务后手工填写或调整。
+ ///
public bool HrEditable { get; set; }
+
+ ///
+ /// 显示排序码。
+ ///
public int? SortCode { get; set; }
+
+ ///
+ /// 业务备注。
+ ///
public string Remark { get; set; }
}
diff --git a/SimpleAdmin.Application/Entity/Onboarding/OnboardingStatus.cs b/SimpleAdmin.Application/Entity/Onboarding/OnboardingStatus.cs
index 11a29ae..a015bd8 100644
--- a/SimpleAdmin.Application/Entity/Onboarding/OnboardingStatus.cs
+++ b/SimpleAdmin.Application/Entity/Onboarding/OnboardingStatus.cs
@@ -15,13 +15,44 @@ namespace SimpleAdmin.Application;
///
public static class OnboardingTaskStatus
{
+ ///
+ /// 草稿,任务尚未生成员工填写链接。
+ ///
public const string Draft = "draft";
+
+ ///
+ /// 待填写,候选人可以通过有效链接编辑资料。
+ ///
public const string PendingFill = "pending_fill";
+
+ ///
+ /// 审核中,候选人已提交且资料暂时锁定。
+ ///
public const string Reviewing = "reviewing";
+
+ ///
+ /// 已退回,候选人可根据意见补充后再次提交。
+ ///
public const string Rejected = "rejected";
+
+ ///
+ /// 已通过,系统已经生成正式员工档案。
+ ///
public const string Approved = "approved";
+
+ ///
+ /// 已归档,任务流程结束且历史数据只读。
+ ///
public const string Archived = "archived";
+
+ ///
+ /// 已过期,任务或链接超过有效期。
+ ///
public const string Expired = "expired";
+
+ ///
+ /// 已撤销,任务或链接被人事主动终止。
+ ///
public const string Revoked = "revoked";
}
@@ -30,9 +61,24 @@ public static class OnboardingTaskStatus
///
public static class OnboardingLinkStatus
{
+ ///
+ /// 有效,链接可以正常访问。
+ ///
public const string Active = "active";
+
+ ///
+ /// 已过期,任务或链接超过有效期。
+ ///
public const string Expired = "expired";
+
+ ///
+ /// 已撤销,任务或链接被人事主动终止。
+ ///
public const string Revoked = "revoked";
+
+ ///
+ /// 已替换,旧链接已由新链接取代。
+ ///
public const string Replaced = "replaced";
}
@@ -41,8 +87,19 @@ public static class OnboardingLinkStatus
///
public static class ContractTemplateVersionStatus
{
+ ///
+ /// 草稿,任务尚未生成员工填写链接。
+ ///
public const string Draft = "draft";
+
+ ///
+ /// 已启用,可用于创建新的入职任务。
+ ///
public const string Enabled = "enabled";
+
+ ///
+ /// 已停用,不再用于新任务。
+ ///
public const string Disabled = "disabled";
}
@@ -51,10 +108,29 @@ public static class ContractTemplateVersionStatus
///
public static class TaskContractStatus
{
+ ///
+ /// 待生成,任务合同尚未生成文件。
+ ///
public const string PendingGenerate = "pending_generate";
+
+ ///
+ /// 待确认,合同已生成并等待候选人阅读确认。
+ ///
public const string PendingConfirm = "pending_confirm";
+
+ ///
+ /// 已确认,候选人已完成阅读确认。
+ ///
public const string Confirmed = "confirmed";
+
+ ///
+ /// 待线下签署,首版暂不接入第三方电子签。
+ ///
public const string OfflinePendingSign = "offline_pending_sign";
+
+ ///
+ /// 已归档,任务流程结束且历史数据只读。
+ ///
public const string Archived = "archived";
}
@@ -63,9 +139,24 @@ public static class TaskContractStatus
///
public static class ContractVariableType
{
+ ///
+ /// 值来源于候选人或正式员工信息。
+ ///
public const string Employee = "employee";
+
+ ///
+ /// 值来源于公司档案。
+ ///
public const string Company = "company";
+
+ ///
+ /// 值来源于合同业务参数。
+ ///
public const string Contract = "contract";
+
+ ///
+ /// 值由系统自动生成。
+ ///
public const string System = "system";
}
@@ -74,9 +165,24 @@ public static class ContractVariableType
///
public static class ContractVariableSourceType
{
+ ///
+ /// 值来源于候选人或正式员工信息。
+ ///
public const string Employee = "employee";
+
+ ///
+ /// 值来源于公司档案。
+ ///
public const string Company = "company";
+
+ ///
+ /// 值由人事手工录入。
+ ///
public const string HrInput = "hr_input";
+
+ ///
+ /// 值由系统自动生成。
+ ///
public const string System = "system";
}
@@ -85,8 +191,19 @@ public static class ContractVariableSourceType
///
public static class TaskMaterialReviewStatus
{
+ ///
+ /// 待审核。
+ ///
public const string Pending = "pending";
+
+ ///
+ /// 审核通过。
+ ///
public const string Passed = "passed";
+
+ ///
+ /// 需要补充或重新上传。
+ ///
public const string NeedSupplement = "need_supplement";
}
@@ -95,9 +212,28 @@ public static class TaskMaterialReviewStatus
///
public static class OnboardingAuditAction
{
+ ///
+ /// 候选人提交入职资料。
+ ///
public const string Submit = "submit";
+
+ ///
+ /// 人事审核通过。
+ ///
public const string Approve = "approve";
+
+ ///
+ /// 人事退回补充。
+ ///
public const string Reject = "reject";
+
+ ///
+ /// 人事撤销任务。
+ ///
public const string Revoke = "revoke";
+
+ ///
+ /// 人事归档任务。
+ ///
public const string Archive = "archive";
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Audit/Dto/OnboardingAuditInput.cs b/SimpleAdmin.Application/Services/Onboarding/Audit/Dto/OnboardingAuditInput.cs
index edf6937..efe73e9 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Audit/Dto/OnboardingAuditInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Audit/Dto/OnboardingAuditInput.cs
@@ -1,9 +1,18 @@
namespace SimpleAdmin.Application;
+///
+/// 入职审核、退回、撤销或归档操作参数。
+///
public class OnboardingAuditActionInput
{
+ ///
+ /// 入职任务 Id。
+ ///
[IdNotNull(ErrorMessage = "任务Id不能为空")]
public long TaskId { get; set; }
+ ///
+ /// 审核意见或流程操作说明。
+ ///
public string AuditOpinion { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Audit/IOnboardingAuditService.cs b/SimpleAdmin.Application/Services/Onboarding/Audit/IOnboardingAuditService.cs
index 899ed57..49bf297 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Audit/IOnboardingAuditService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Audit/IOnboardingAuditService.cs
@@ -1,7 +1,16 @@
namespace SimpleAdmin.Application;
+///
+/// 定义入职审核业务能力。
+///
public interface IOnboardingAuditService : ITransient
{
+ ///
+ /// 审核通过入职任务,并在同一事务中创建正式员工档案。
+ ///
Task Approve(OnboardingAuditActionInput input);
+ ///
+ /// 退回入职任务,保存审核意见并允许候选人补充资料。
+ ///
Task Reject(OnboardingAuditActionInput input);
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Audit/OnboardingAuditService.cs b/SimpleAdmin.Application/Services/Onboarding/Audit/OnboardingAuditService.cs
index 115a312..a5c3f4e 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Audit/OnboardingAuditService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Audit/OnboardingAuditService.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Application;
+///
+/// 实现入职审核业务能力。
+///
public class OnboardingAuditService : IOnboardingAuditService
{
private readonly SqlSugarScope _db;
@@ -15,6 +18,9 @@ public class OnboardingAuditService : IOnboardingAuditService
_snapshotService = snapshotService;
}
+ ///
+ /// 审核通过入职任务,并在同一事务中创建正式员工档案。
+ ///
public async Task Approve(OnboardingAuditActionInput input)
{
var task = await GetAuditableTask(input.TaskId);
@@ -30,6 +36,7 @@ public class OnboardingAuditService : IOnboardingAuditService
throw Oops.Bah("仍有资料需要补充,不能审核通过");
}
+ // 审核通过是创建正式员工的唯一入口,因此必须在入库前拦截身份证号或手机号重复。
var hasExistingEmployee = await _db.Queryable()
.AnyAsync(item => item.IdCardNumber == employeeInfo.IdCardNumber || item.Phone == employeeInfo.Phone);
if (hasExistingEmployee)
@@ -46,6 +53,7 @@ public class OnboardingAuditService : IOnboardingAuditService
employee.PositionId = task.PositionId;
employee.ExtraInfoJson = global::System.Text.Json.JsonSerializer.Serialize(extraValues);
+ // 员工档案、任务状态和审核记录必须同时成功,避免出现“已通过但没有员工档案”的中间状态。
await _db.Ado.BeginTranAsync();
try
{
@@ -66,6 +74,9 @@ public class OnboardingAuditService : IOnboardingAuditService
}
}
+ ///
+ /// 退回入职任务,保存审核意见并允许候选人补充资料。
+ ///
public async Task Reject(OnboardingAuditActionInput input)
{
if (string.IsNullOrWhiteSpace(input.AuditOpinion))
@@ -92,6 +103,7 @@ public class OnboardingAuditService : IOnboardingAuditService
var config = await _config.GetByConfigKey(CateGoryConst.CONFIG_BIZ_DEFINE, "onboard.reviewer.userIds")
?? throw Oops.Bah("请配置入职审核人");
using var configJson = global::System.Text.Json.JsonDocument.Parse(config.ConfigValue);
+ // 审核人由全局配置与公司专属配置合并得出,不依赖独立业务表。
var reviewerIds = new List();
if (configJson.RootElement.TryGetProperty("all", out var allReviewers))
{
@@ -126,5 +138,3 @@ public class OnboardingAuditService : IOnboardingAuditService
}).ExecuteCommandAsync();
}
}
-
-
diff --git a/SimpleAdmin.Application/Services/Onboarding/Company/Dto/OnboardingCompanyInput.cs b/SimpleAdmin.Application/Services/Onboarding/Company/Dto/OnboardingCompanyInput.cs
index e44aaf0..1a8a2c5 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Company/Dto/OnboardingCompanyInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Company/Dto/OnboardingCompanyInput.cs
@@ -1,25 +1,53 @@
namespace SimpleAdmin.Application;
+///
+/// 入职业务公司分页查询参数。
+///
public class OnboardingCompanyPageInput : BasePageInput
{
+ ///
+ /// 公司名称。
+ ///
public virtual string CompanyName { get; set; }
+
+ ///
+ /// 启用状态或状态筛选条件。
+ ///
public string Status { get; set; }
}
+///
+/// 新增入职业务公司参数。
+///
public class OnboardingCompanyAddInput : ObCompany
{
+ ///
+ /// 公司业务编码。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "公司编码不能为空")]
public override string CompanyCode { get; set; }
+ ///
+ /// 公司名称。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "公司名称不能为空")]
public override string CompanyName { get; set; }
+ ///
+ /// 合同甲方完整法定名称。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "合同甲方全称不能为空")]
public override string LegalName { get; set; }
}
+///
+/// 编辑入职业务公司参数。
+///
public class OnboardingCompanyEditInput : OnboardingCompanyAddInput
{
+ ///
+ /// 业务数据 Id。
+ ///
[IdNotNull(ErrorMessage = "公司Id不能为空")]
public override long Id { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Company/IOnboardingCompanyService.cs b/SimpleAdmin.Application/Services/Onboarding/Company/IOnboardingCompanyService.cs
index 233c844..1e94ed8 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Company/IOnboardingCompanyService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Company/IOnboardingCompanyService.cs
@@ -1,11 +1,32 @@
namespace SimpleAdmin.Application;
+///
+/// 定义入职业务公司业务能力。
+///
public interface IOnboardingCompanyService : ITransient
{
+ ///
+ /// 分页查询入职业务公司。
+ ///
Task> Page(OnboardingCompanyPageInput input);
+ ///
+ /// 查询全部已启用的入职业务公司。
+ ///
Task> ListEnabled();
+ ///
+ /// 查询公司详情。
+ ///
Task Detail(BaseIdInput input);
+ ///
+ /// 新增入职业务公司。
+ ///
Task Add(OnboardingCompanyAddInput input);
+ ///
+ /// 编辑入职业务公司。
+ ///
Task Edit(OnboardingCompanyEditInput input);
+ ///
+ /// 删除未被岗位、任务或员工引用的公司。
+ ///
Task Delete(BaseIdListInput input);
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Company/OnboardingCompanyService.cs b/SimpleAdmin.Application/Services/Onboarding/Company/OnboardingCompanyService.cs
index 3a9396f..c765e43 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Company/OnboardingCompanyService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Company/OnboardingCompanyService.cs
@@ -1,7 +1,13 @@
namespace SimpleAdmin.Application;
+///
+/// 实现入职业务公司业务能力。
+///
public class OnboardingCompanyService : DbRepository, IOnboardingCompanyService
{
+ ///
+ /// 分页查询入职业务公司。
+ ///
public async Task> Page(OnboardingCompanyPageInput input)
{
return await Context.Queryable()
@@ -14,6 +20,9 @@ public class OnboardingCompanyService : DbRepository, IOnboardingComp
.ToPagedListAsync(input.PageNum, input.PageSize);
}
+ ///
+ /// 查询全部已启用的入职业务公司。
+ ///
public Task> ListEnabled()
{
return Context.Queryable()
@@ -22,17 +31,26 @@ public class OnboardingCompanyService : DbRepository, IOnboardingComp
.ToListAsync();
}
+ ///
+ /// 查询公司详情。
+ ///
public async Task Detail(BaseIdInput input)
{
return await GetByIdAsync(input.Id) ?? throw Oops.Bah("公司不存在");
}
+ ///
+ /// 新增入职业务公司。
+ ///
public async Task Add(OnboardingCompanyAddInput input)
{
await EnsureCodeUnique(input.CompanyCode, 0);
await InsertAsync(input.Adapt());
}
+ ///
+ /// 编辑入职业务公司。
+ ///
public async Task Edit(OnboardingCompanyEditInput input)
{
await Detail(new BaseIdInput { Id = input.Id });
@@ -40,6 +58,9 @@ public class OnboardingCompanyService : DbRepository, IOnboardingComp
await UpdateAsync(input.Adapt());
}
+ ///
+ /// 删除未被岗位、任务或员工引用的公司。
+ ///
public async Task Delete(BaseIdListInput input)
{
if (input.Ids.Count == 0)
diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractDocument/Dto/OnboardingContractDocumentInput.cs b/SimpleAdmin.Application/Services/Onboarding/ContractDocument/Dto/OnboardingContractDocumentInput.cs
index 7edc8cd..863bf77 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractDocument/Dto/OnboardingContractDocumentInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractDocument/Dto/OnboardingContractDocumentInput.cs
@@ -1,7 +1,13 @@
namespace SimpleAdmin.Application;
+///
+/// 生成任务合同文件参数。
+///
public class OnboardingGenerateContractInput
{
+ ///
+ /// 任务合同 Id。
+ ///
[IdNotNull(ErrorMessage = "任务合同Id不能为空")]
public long TaskContractId { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractDocument/IOnboardingContractDocumentService.cs b/SimpleAdmin.Application/Services/Onboarding/ContractDocument/IOnboardingContractDocumentService.cs
index b99f1ab..5c9334a 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractDocument/IOnboardingContractDocumentService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractDocument/IOnboardingContractDocumentService.cs
@@ -1,2 +1,12 @@
namespace SimpleAdmin.Application;
-public interface IOnboardingContractDocumentService : ITransient { Task Generate(OnboardingGenerateContractInput input); }
+
+///
+/// 定义入职合同文件生成能力。
+///
+public interface IOnboardingContractDocumentService : ITransient
+{
+ ///
+ /// 根据已审核通过的任务合同生成并保存 DOCX 文件。
+ ///
+ Task Generate(OnboardingGenerateContractInput input);
+}
diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractDocument/OnboardingContractDocumentService.cs b/SimpleAdmin.Application/Services/Onboarding/ContractDocument/OnboardingContractDocumentService.cs
index c49de91..ae6d39e 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractDocument/OnboardingContractDocumentService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractDocument/OnboardingContractDocumentService.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Application;
+///
+/// 实现入职合同文件生成业务能力。
+///
public class OnboardingContractDocumentService : IOnboardingContractDocumentService
{
private readonly SqlSugarScope _db;
@@ -11,6 +14,9 @@ public class OnboardingContractDocumentService : IOnboardingContractDocumentServ
_fileService = fileService;
}
+ ///
+ /// 根据已锁定的模板版本和变量快照生成任务合同 DOCX 文件。
+ ///
public async Task Generate(OnboardingGenerateContractInput input)
{
var contract = await _db.Queryable().InSingleAsync(input.TaskContractId)
@@ -38,6 +44,7 @@ public class OnboardingContractDocumentService : IOnboardingContractDocumentServ
using var sourceBytes = new MemoryStream();
await sourceStream.CopyToAsync(sourceBytes);
+ // 合同只读取任务变量快照,确保模板或员工档案后续修改不会影响已生成文件。
var rendered = ReplaceDocxText(
sourceBytes.ToArray(),
variables.ToDictionary(x => x.VariableCode, x => x.VariableValue ?? string.Empty));
@@ -63,6 +70,7 @@ public class OnboardingContractDocumentService : IOnboardingContractDocumentServ
global::System.IO.Compression.ZipArchiveMode.Create,
true);
+ // DOCX 本质是 ZIP 包,仅替换正文、页眉和页脚 XML 中的文本节点,其他资源原样复制。
foreach (var entry in archive.Entries)
{
var next = target.CreateEntry(entry.FullName, global::System.IO.Compression.CompressionLevel.Optimal);
@@ -95,5 +103,3 @@ public class OnboardingContractDocumentService : IOnboardingContractDocumentServ
return output.ToArray();
}
}
-
-
diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractSnapshot/IOnboardingContractSnapshotService.cs b/SimpleAdmin.Application/Services/Onboarding/ContractSnapshot/IOnboardingContractSnapshotService.cs
index ec62571..b05e6fc 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractSnapshot/IOnboardingContractSnapshotService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractSnapshot/IOnboardingContractSnapshotService.cs
@@ -1,7 +1,13 @@
namespace SimpleAdmin.Application;
+///
+/// 定义任务合同变量快照业务能力。
+///
public interface IOnboardingContractSnapshotService : ITransient
{
/// 根据任务、公司与候选人资料刷新自动变量;人事已手工填写的变量不会被覆盖。
+ ///
+ /// 根据任务、公司和候选人资料构建或刷新合同变量快照。
+ ///
Task Build(long taskId, ObTaskEmployeeInfo employeeInfo = null);
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractSnapshot/OnboardingContractSnapshotService.cs b/SimpleAdmin.Application/Services/Onboarding/ContractSnapshot/OnboardingContractSnapshotService.cs
index 3595834..ebfa2f3 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractSnapshot/OnboardingContractSnapshotService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractSnapshot/OnboardingContractSnapshotService.cs
@@ -1,11 +1,17 @@
namespace SimpleAdmin.Application;
/// 冻结任务合同变量;DOCX 生成阶段只读取本快照,不再读取模板实时值。
+///
+/// 实现任务合同变量快照业务能力。
+///
public class OnboardingContractSnapshotService : IOnboardingContractSnapshotService
{
private readonly SqlSugarScope _db;
public OnboardingContractSnapshotService() => _db = DbContext.DB;
+ ///
+ /// 根据任务、公司和候选人资料构建或刷新合同变量快照。
+ ///
public async Task Build(long taskId, ObTaskEmployeeInfo employeeInfo = null)
{
var task = await _db.Queryable().InSingleAsync(taskId) ?? throw Oops.Bah("入职任务不存在");
@@ -20,6 +26,7 @@ public class OnboardingContractSnapshotService : IOnboardingContractSnapshotServ
var rows = definitions.Select(definition =>
{
var old = oldRows.FirstOrDefault(x => x.VariableCode == definition.VariableCode);
+ // 人事手工填写的工资、补贴等合同参数优先级最高,刷新自动变量时不能覆盖。
var preserveManual = old?.IsManualOverride == true;
return new ObTaskContractVariable
{
@@ -80,4 +87,3 @@ public class OnboardingContractSnapshotService : IOnboardingContractSnapshotServ
};
}
}
-
diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingContractScopeInput.cs b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingContractScopeInput.cs
index 47e78c2..ca4a1d3 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingContractScopeInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingContractScopeInput.cs
@@ -1,27 +1,73 @@
namespace SimpleAdmin.Application;
+///
+/// 合同适用范围分页查询参数。
+///
public class OnboardingContractScopePageInput : BasePageInput
{
+ ///
+ /// 入职业务公司 Id。
+ ///
public long? CompanyId { get; set; }
+
+ ///
+ /// 岗位 Id;为空时表示公司级配置。
+ ///
public long? PositionId { get; set; }
+
+ ///
+ /// 合同模板 Id。
+ ///
public long? TemplateId { get; set; }
}
+///
+/// 新增合同适用范围参数。
+///
public class OnboardingContractScopeAddInput
{
+ ///
+ /// 入职业务公司 Id。
+ ///
[IdNotNull(ErrorMessage = "公司Id不能为空")]
public long CompanyId { get; set; }
+
+ ///
+ /// 岗位 Id;为空时表示公司级配置。
+ ///
public long? PositionId { get; set; }
+
+ ///
+ /// 合同模板 Id。
+ ///
[IdNotNull(ErrorMessage = "模板Id不能为空")]
public long TemplateId { get; set; }
+
+ ///
+ /// 合同模板版本 Id。
+ ///
[IdNotNull(ErrorMessage = "模板版本Id不能为空")]
public long TemplateVersionId { get; set; }
+
+ ///
+ /// 是否必填、必传或必签。
+ ///
public bool Required { get; set; } = true;
+
+ ///
+ /// 显示排序码。
+ ///
public int? SortCode { get; set; }
}
+///
+/// 编辑合同适用范围参数。
+///
public class OnboardingContractScopeEditInput : OnboardingContractScopeAddInput
{
+ ///
+ /// 业务数据 Id。
+ ///
[IdNotNull(ErrorMessage = "适用范围Id不能为空")]
public long Id { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingContractTemplateInput.cs b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingContractTemplateInput.cs
index 0b71d83..dec4d89 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingContractTemplateInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingContractTemplateInput.cs
@@ -1,26 +1,68 @@
namespace SimpleAdmin.Application;
+///
+/// 合同模板分页查询参数。
+///
public class OnboardingContractTemplatePageInput : BasePageInput
{
+ ///
+ /// 合同模板名称。
+ ///
public string TemplateName { get; set; }
+
+ ///
+ /// 合同类型。
+ ///
public string ContractType { get; set; }
+
+ ///
+ /// 启用状态或状态筛选条件。
+ ///
public string Status { get; set; }
}
+///
+/// 新增合同模板参数。
+///
public class OnboardingContractTemplateAddInput
{
+ ///
+ /// 合同模板业务编码。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "模板编码不能为空")]
public string TemplateCode { get; set; }
+
+ ///
+ /// 合同模板名称。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "模板名称不能为空")]
public string TemplateName { get; set; }
+
+ ///
+ /// 合同类型。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "合同类型不能为空")]
public string ContractType { get; set; }
+
+ ///
+ /// 业务说明。
+ ///
public string Description { get; set; }
+
+ ///
+ /// 启用状态或状态筛选条件。
+ ///
public string Status { get; set; } = "enable";
}
+///
+/// 编辑合同模板参数。
+///
public class OnboardingContractTemplateEditInput : OnboardingContractTemplateAddInput
{
+ ///
+ /// 业务数据 Id。
+ ///
[IdNotNull(ErrorMessage = "模板Id不能为空")]
public long Id { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingContractVersionInput.cs b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingContractVersionInput.cs
index d005e30..2bf12f9 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingContractVersionInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingContractVersionInput.cs
@@ -1,30 +1,80 @@
namespace SimpleAdmin.Application;
+///
+/// 合同模板版本分页查询参数。
+///
public class OnboardingContractVersionPageInput : BasePageInput
{
+ ///
+ /// 合同模板 Id。
+ ///
[IdNotNull(ErrorMessage = "模板Id不能为空")]
public long TemplateId { get; set; }
+
+ ///
+ /// 模板版本状态。
+ ///
public string VersionStatus { get; set; }
}
+///
+/// 新增合同模板版本参数。
+///
public class OnboardingContractVersionAddInput
{
+ ///
+ /// 合同模板 Id。
+ ///
[IdNotNull(ErrorMessage = "模板Id不能为空")]
public long TemplateId { get; set; }
+
+ ///
+ /// 模板版本号。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "版本号不能为空")]
public string VersionNo { get; set; }
+
+ ///
+ /// 模板 DOCX 源文件 Id。
+ ///
[IdNotNull(ErrorMessage = "DOCX源文件不能为空")]
public long SourceDocxFileId { get; set; }
+
+ ///
+ /// 源文件内容哈希。
+ ///
public string FileHash { get; set; }
+
+ ///
+ /// 生效日期。
+ ///
public DateTime? EffectiveDate { get; set; }
+
+ ///
+ /// 失效日期。
+ ///
public DateTime? ExpiryDate { get; set; }
+
+ ///
+ /// 业务备注。
+ ///
public string Remark { get; set; }
}
+///
+/// 设置合同模板版本状态参数。
+///
public class OnboardingContractVersionStatusInput
{
+ ///
+ /// 业务数据 Id。
+ ///
[IdNotNull(ErrorMessage = "版本Id不能为空")]
public long Id { get; set; }
+
+ ///
+ /// 模板版本状态。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "版本状态不能为空")]
public string VersionStatus { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingTemplateVariableInput.cs b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingTemplateVariableInput.cs
index bdb0238..02bc657 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingTemplateVariableInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/Dto/OnboardingTemplateVariableInput.cs
@@ -1,35 +1,101 @@
namespace SimpleAdmin.Application;
+///
+/// 模板变量分页查询参数。
+///
public class OnboardingTemplateVariablePageInput : BasePageInput
{
+ ///
+ /// 合同模板版本 Id。
+ ///
[IdNotNull(ErrorMessage = "模板版本Id不能为空")]
public long TemplateVersionId { get; set; }
}
+///
+/// 新增模板变量参数。
+///
public class OnboardingTemplateVariableAddInput
{
+ ///
+ /// 合同模板版本 Id。
+ ///
[IdNotNull(ErrorMessage = "模板版本Id不能为空")]
public long TemplateVersionId { get; set; }
+
+ ///
+ /// 合同变量编码。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "变量编码不能为空")]
public string VariableCode { get; set; }
+
+ ///
+ /// 合同变量名称。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "变量名称不能为空")]
public string VariableName { get; set; }
+
+ ///
+ /// 合同变量来源类型。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "变量类型不能为空")]
public string VariableType { get; set; }
+
+ ///
+ /// 字段或变量数据类型。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "数据类型不能为空")]
public string DataType { get; set; }
+
+ ///
+ /// 关联的候选人基础信息字段。
+ ///
public string EmployeeField { get; set; }
+
+ ///
+ /// 默认值。
+ ///
public string DefaultValue { get; set; }
+
+ ///
+ /// 可选项 JSON。
+ ///
public string OptionsJson { get; set; }
+
+ ///
+ /// 格式化规则。
+ ///
public string FormatRule { get; set; }
+
+ ///
+ /// 是否必填、必传或必签。
+ ///
public bool Required { get; set; }
+
+ ///
+ /// 人事是否可以编辑。
+ ///
public bool HrEditable { get; set; }
+
+ ///
+ /// 显示排序码。
+ ///
public int? SortCode { get; set; }
+
+ ///
+ /// 业务备注。
+ ///
public string Remark { get; set; }
}
+///
+/// 编辑模板变量参数。
+///
public class OnboardingTemplateVariableEditInput : OnboardingTemplateVariableAddInput
{
+ ///
+ /// 业务数据 Id。
+ ///
[IdNotNull(ErrorMessage = "变量Id不能为空")]
public long Id { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/IOnboardingContractTemplateService.cs b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/IOnboardingContractTemplateService.cs
index 2fe85b7..30f7dea 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/IOnboardingContractTemplateService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/IOnboardingContractTemplateService.cs
@@ -1,19 +1,67 @@
namespace SimpleAdmin.Application;
+///
+/// 定义合同模板、版本、变量和适用范围业务能力。
+///
public interface IOnboardingContractTemplateService : ITransient
{
+ ///
+ /// 分页查询合同模板主档案。
+ ///
Task> Page(OnboardingContractTemplatePageInput input);
+ ///
+ /// 查询合同模板详情。
+ ///
Task Detail(BaseIdInput input);
+ ///
+ /// 新增合同模板主档案。
+ ///
Task Add(OnboardingContractTemplateAddInput input);
+ ///
+ /// 编辑合同模板主档案。
+ ///
Task Edit(OnboardingContractTemplateEditInput input);
+ ///
+ /// 删除未被版本、适用范围或任务合同引用的模板。
+ ///
Task Delete(BaseIdListInput input);
+ ///
+ /// 分页查询指定合同模板的版本。
+ ///
Task> VersionPage(OnboardingContractVersionPageInput input);
+ ///
+ /// 新增合同模板 DOCX 版本。
+ ///
Task AddVersion(OnboardingContractVersionAddInput input);
+ ///
+ /// 启用或停用合同模板版本。
+ ///
Task SetVersionStatus(OnboardingContractVersionStatusInput input);
+ ///
+ /// 分页查询指定模板版本的变量定义。
+ ///
Task> VariablePage(OnboardingTemplateVariablePageInput input);
+ ///
+ /// 为草稿模板版本新增变量。
+ ///
Task AddVariable(OnboardingTemplateVariableAddInput input);
+ ///
+ /// 编辑草稿模板版本中的变量。
+ ///
Task EditVariable(OnboardingTemplateVariableEditInput input);
+ ///
+ /// 删除草稿模板版本中的变量。
+ ///
Task DeleteVariable(BaseIdListInput input); Task> ScopePage(OnboardingContractScopePageInput input);
+ ///
+ /// 新增公司或岗位的合同适用范围。
+ ///
Task AddScope(OnboardingContractScopeAddInput input);
+ ///
+ /// 编辑合同适用范围。
+ ///
Task EditScope(OnboardingContractScopeEditInput input);
+ ///
+ /// 删除合同适用范围。
+ ///
Task DeleteScope(BaseIdListInput input);}
diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/OnboardingContractTemplateService.cs b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/OnboardingContractTemplateService.cs
index 04bda13..41b70d7 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/OnboardingContractTemplateService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/OnboardingContractTemplateService.cs
@@ -5,6 +5,9 @@ namespace SimpleAdmin.Application;
///
public class OnboardingContractTemplateService : DbRepository, IOnboardingContractTemplateService
{
+ ///
+ /// 分页查询合同模板主档案。
+ ///
public async Task> Page(OnboardingContractTemplatePageInput input)
{
return await Context.Queryable()
@@ -18,17 +21,26 @@ public class OnboardingContractTemplateService : DbRepository
+ /// 查询合同模板详情。
+ ///
public async Task Detail(BaseIdInput input)
{
return await GetByIdAsync(input.Id) ?? throw Oops.Bah("合同模板不存在");
}
+ ///
+ /// 新增合同模板主档案。
+ ///
public async Task Add(OnboardingContractTemplateAddInput input)
{
await EnsureCodeUnique(input.TemplateCode, 0);
await InsertAsync(input.Adapt());
}
+ ///
+ /// 编辑合同模板主档案。
+ ///
public async Task Edit(OnboardingContractTemplateEditInput input)
{
await Detail(new BaseIdInput { Id = input.Id });
@@ -36,6 +48,9 @@ public class OnboardingContractTemplateService : DbRepository());
}
+ ///
+ /// 删除未被版本、适用范围或任务合同引用的模板。
+ ///
public async Task Delete(BaseIdListInput input)
{
if (input.Ids.Count == 0)
@@ -59,6 +74,9 @@ public class OnboardingContractTemplateService : DbRepository().ToArray());
}
+ ///
+ /// 分页查询指定合同模板的版本。
+ ///
public async Task> VersionPage(OnboardingContractVersionPageInput input)
{
return await Context.Queryable()
@@ -68,6 +86,9 @@ public class OnboardingContractTemplateService : DbRepository
+ /// 新增合同模板 DOCX 版本。
+ ///
public async Task AddVersion(OnboardingContractVersionAddInput input)
{
await Detail(new BaseIdInput { Id = input.TemplateId });
@@ -85,6 +106,9 @@ public class OnboardingContractTemplateService : DbRepository()).ExecuteCommandAsync();
}
+ ///
+ /// 启用或停用合同模板版本。
+ ///
public async Task SetVersionStatus(OnboardingContractVersionStatusInput input)
{
if (input.VersionStatus != ContractTemplateVersionStatus.Enabled
@@ -108,6 +132,9 @@ public class OnboardingContractTemplateService : DbRepository
+ /// 分页查询指定模板版本的变量定义。
+ ///
public async Task> VariablePage(OnboardingTemplateVariablePageInput input)
{
return await Context.Queryable()
@@ -117,6 +144,9 @@ public class OnboardingContractTemplateService : DbRepository
+ /// 为草稿模板版本新增变量。
+ ///
public async Task AddVariable(OnboardingTemplateVariableAddInput input)
{
await EnsureVersionDraft(input.TemplateVersionId);
@@ -124,6 +154,9 @@ public class OnboardingContractTemplateService : DbRepository()).ExecuteCommandAsync();
}
+ ///
+ /// 编辑草稿模板版本中的变量。
+ ///
public async Task EditVariable(OnboardingTemplateVariableEditInput input)
{
var variable = await Context.Queryable().InSingleAsync(input.Id)
@@ -136,6 +169,9 @@ public class OnboardingContractTemplateService : DbRepository()).ExecuteCommandAsync();
}
+ ///
+ /// 删除草稿模板版本中的变量。
+ ///
public async Task DeleteVariable(BaseIdListInput input)
{
if (input.Ids.Count == 0)
@@ -152,6 +188,9 @@ public class OnboardingContractTemplateService : DbRepository().In(input.Ids).ExecuteCommandAsync();
}
+ ///
+ /// 分页查询合同适用范围。
+ ///
public async Task> ScopePage(OnboardingContractScopePageInput input)
{
return await Context.Queryable()
@@ -162,6 +201,9 @@ public class OnboardingContractTemplateService : DbRepository
+ /// 新增公司或岗位的合同适用范围。
+ ///
public async Task AddScope(OnboardingContractScopeAddInput input)
{
await EnsureScopeValid(input.CompanyId, input.PositionId, input.TemplateId, input.TemplateVersionId);
@@ -169,6 +211,9 @@ public class OnboardingContractTemplateService : DbRepository()).ExecuteCommandAsync();
}
+ ///
+ /// 编辑合同适用范围。
+ ///
public async Task EditScope(OnboardingContractScopeEditInput input)
{
var scopeExists = await Context.Queryable().AnyAsync(it => it.Id == input.Id);
@@ -180,6 +225,9 @@ public class OnboardingContractTemplateService : DbRepository()).ExecuteCommandAsync();
}
+ ///
+ /// 删除合同适用范围。
+ ///
public async Task DeleteScope(BaseIdListInput input)
{
if (input.Ids.Count == 0)
diff --git a/SimpleAdmin.Application/Services/Onboarding/Employee/Dto/OnboardingEmployeeInput.cs b/SimpleAdmin.Application/Services/Onboarding/Employee/Dto/OnboardingEmployeeInput.cs
index 9d636d2..97a809b 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Employee/Dto/OnboardingEmployeeInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Employee/Dto/OnboardingEmployeeInput.cs
@@ -1,17 +1,53 @@
namespace SimpleAdmin.Application;
+///
+/// 正式员工档案分页查询参数。
+///
public class OnboardingEmployeePageInput : BasePageInput
{
+ ///
+ /// 员工姓名。
+ ///
public string EmployeeName { get; set; }
+
+ ///
+ /// 手机号码。
+ ///
public string Phone { get; set; }
+
+ ///
+ /// 入职业务公司 Id。
+ ///
public long? CompanyId { get; set; }
+
+ ///
+ /// 岗位 Id;为空时表示公司级配置。
+ ///
public long? PositionId { get; set; }
}
+///
+/// 正式员工档案详情输出。
+///
public class OnboardingEmployeeDetailOutput
{
+ ///
+ /// 正式员工档案。
+ ///
public ObEmployee Employee { get; set; }
+
+ ///
+ /// 入职任务主数据。
+ ///
public ObOnboardingTask Task { get; set; }
+
+ ///
+ /// 任务合同列表。
+ ///
public List Contracts { get; set; } = new List();
+
+ ///
+ /// 提交与审核记录列表。
+ ///
public List Audits { get; set; } = new List();
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Employee/IOnboardingEmployeeService.cs b/SimpleAdmin.Application/Services/Onboarding/Employee/IOnboardingEmployeeService.cs
index c2a6129..a7740e8 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Employee/IOnboardingEmployeeService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Employee/IOnboardingEmployeeService.cs
@@ -1,7 +1,16 @@
namespace SimpleAdmin.Application;
+///
+/// 定义正式员工档案查询业务能力。
+///
public interface IOnboardingEmployeeService : ITransient
{
+ ///
+ /// 分页查询审核通过后生成的正式员工档案。
+ ///
Task> Page(OnboardingEmployeePageInput input);
+ ///
+ /// 查询正式员工及其来源任务、合同和审核记录。
+ ///
Task Detail(BaseIdInput input);
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Employee/OnboardingEmployeeService.cs b/SimpleAdmin.Application/Services/Onboarding/Employee/OnboardingEmployeeService.cs
index 2471277..950a79d 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Employee/OnboardingEmployeeService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Employee/OnboardingEmployeeService.cs
@@ -1,11 +1,17 @@
namespace SimpleAdmin.Application;
/// 仅展示审核通过后创建的正式员工档案;入职资料的来源任务可追溯。
+///
+/// 实现正式员工档案查询业务能力。
+///
public class OnboardingEmployeeService : IOnboardingEmployeeService
{
private readonly SqlSugarScope _db;
public OnboardingEmployeeService() => _db = DbContext.DB;
+ ///
+ /// 分页查询审核通过后生成的正式员工档案。
+ ///
public Task> Page(OnboardingEmployeePageInput input) => _db.Queryable()
.WhereIF(!string.IsNullOrWhiteSpace(input.EmployeeName), x => x.EmployeeName.Contains(input.EmployeeName) || x.IdCardNumber.Contains(input.EmployeeName))
.WhereIF(!string.IsNullOrWhiteSpace(input.Phone), x => x.Phone.Contains(input.Phone))
@@ -13,6 +19,9 @@ public class OnboardingEmployeeService : IOnboardingEmployeeService
.WhereIF(input.PositionId.HasValue, x => x.PositionId == input.PositionId.Value)
.OrderByDescending(x => x.CreateTime).ToPagedListAsync(input.PageNum, input.PageSize);
+ ///
+ /// 查询正式员工及其来源任务、合同和审核记录。
+ ///
public async Task Detail(BaseIdInput input)
{
var employee = await _db.Queryable().InSingleAsync(input.Id) ?? throw Oops.Bah("正式员工不存在");
@@ -22,4 +31,3 @@ public class OnboardingEmployeeService : IOnboardingEmployeeService
return new OnboardingEmployeeDetailOutput { Employee = employee, Task = task, Contracts = contracts, Audits = audits };
}
}
-
diff --git a/SimpleAdmin.Application/Services/Onboarding/EntryConfig/Dto/OnboardingEntryConfigInput.cs b/SimpleAdmin.Application/Services/Onboarding/EntryConfig/Dto/OnboardingEntryConfigInput.cs
index 60b5367..cacfc21 100644
--- a/SimpleAdmin.Application/Services/Onboarding/EntryConfig/Dto/OnboardingEntryConfigInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/EntryConfig/Dto/OnboardingEntryConfigInput.cs
@@ -1,68 +1,169 @@
namespace SimpleAdmin.Application;
+///
+/// 保存动态入职字段参数。
+///
public class OnboardingFormFieldSaveInput
{
+ ///
+ /// 业务数据 Id。
+ ///
public long? Id { get; set; }
+ ///
+ /// 动态字段编码。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "字段编码不能为空")]
public string FieldCode { get; set; }
+ ///
+ /// 动态字段名称。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "字段名称不能为空")]
public string FieldName { get; set; }
+ ///
+ /// 字段或变量数据类型。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "数据类型不能为空")]
public string DataType { get; set; }
+ ///
+ /// 可选项 JSON。
+ ///
public string OptionsJson { get; set; }
+
+ ///
+ /// 字段校验规则。
+ ///
public string ValidationRule { get; set; }
+
+ ///
+ /// 员工端输入提示。
+ ///
public string Placeholder { get; set; }
+
+ ///
+ /// 启用状态或状态筛选条件。
+ ///
public string Status { get; set; } = "enable";
}
+///
+/// 保存入职材料类型参数。
+///
public class OnboardingMaterialTypeSaveInput
{
+ ///
+ /// 业务数据 Id。
+ ///
public long? Id { get; set; }
+ ///
+ /// 材料类型编码。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "资料编码不能为空")]
public string MaterialCode { get; set; }
+ ///
+ /// 材料名称。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "资料名称不能为空")]
public string MaterialName { get; set; }
+ ///
+ /// 允许上传的文件扩展名。
+ ///
public string AllowedExtensions { get; set; }
+
+ ///
+ /// 允许上传的最大文件数量。
+ ///
public int MaxFileCount { get; set; } = 1;
+
+ ///
+ /// 单个文件最大大小,单位为 MB。
+ ///
public int? MaxFileSizeMb { get; set; }
+
+ ///
+ /// 启用状态或状态筛选条件。
+ ///
public string Status { get; set; } = "enable";
}
+///
+/// 保存公司岗位动态字段要求参数。
+///
public class OnboardingFormRequirementSaveInput
{
+ ///
+ /// 业务数据 Id。
+ ///
public long? Id { get; set; }
+ ///
+ /// 入职业务公司 Id。
+ ///
[IdNotNull(ErrorMessage = "公司Id不能为空")]
public long CompanyId { get; set; }
+ ///
+ /// 岗位 Id;为空时表示公司级配置。
+ ///
public long? PositionId { get; set; }
+ ///
+ /// 动态字段 Id。
+ ///
[IdNotNull(ErrorMessage = "字段Id不能为空")]
public long FieldId { get; set; }
+ ///
+ /// 是否必填、必传或必签。
+ ///
public bool Required { get; set; }
+
+ ///
+ /// 显示排序码。
+ ///
public int? SortCode { get; set; }
}
+///
+/// 保存公司岗位材料要求参数。
+///
public class OnboardingMaterialRequirementSaveInput
{
+ ///
+ /// 业务数据 Id。
+ ///
public long? Id { get; set; }
+ ///
+ /// 入职业务公司 Id。
+ ///
[IdNotNull(ErrorMessage = "公司Id不能为空")]
public long CompanyId { get; set; }
+ ///
+ /// 岗位 Id;为空时表示公司级配置。
+ ///
public long? PositionId { get; set; }
+ ///
+ /// 材料类型 Id。
+ ///
[IdNotNull(ErrorMessage = "资料类型Id不能为空")]
public long MaterialTypeId { get; set; }
+ ///
+ /// 是否必填、必传或必签。
+ ///
public bool Required { get; set; }
+
+ ///
+ /// 显示排序码。
+ ///
public int? SortCode { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/EntryConfig/IOnboardingEntryConfigService.cs b/SimpleAdmin.Application/Services/Onboarding/EntryConfig/IOnboardingEntryConfigService.cs
index fe6bcf8..5bb40b3 100644
--- a/SimpleAdmin.Application/Services/Onboarding/EntryConfig/IOnboardingEntryConfigService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/EntryConfig/IOnboardingEntryConfigService.cs
@@ -1,17 +1,56 @@
namespace SimpleAdmin.Application;
+///
+/// 定义动态字段、材料类型及公司岗位要求配置业务能力。
+///
public interface IOnboardingEntryConfigService : ITransient
{
+ ///
+ /// 查询全部动态入职字段。
+ ///
Task> ListFormFields();
+ ///
+ /// 新增或编辑动态入职字段。
+ ///
Task SaveFormField(OnboardingFormFieldSaveInput input);
+ ///
+ /// 删除未被填写要求引用的动态字段。
+ ///
Task DeleteFormFields(BaseIdListInput input);
+ ///
+ /// 查询全部入职材料类型。
+ ///
Task> ListMaterialTypes();
+ ///
+ /// 新增或编辑入职材料类型。
+ ///
Task SaveMaterialType(OnboardingMaterialTypeSaveInput input);
+ ///
+ /// 删除未被要求或上传记录引用的材料类型。
+ ///
Task DeleteMaterialTypes(BaseIdListInput input);
+ ///
+ /// 查询指定公司的动态字段填写要求。
+ ///
Task> ListFormRequirements(long companyId);
+ ///
+ /// 新增或编辑公司岗位动态字段要求。
+ ///
Task SaveFormRequirement(OnboardingFormRequirementSaveInput input);
+ ///
+ /// 删除动态字段填写要求。
+ ///
Task DeleteFormRequirements(BaseIdListInput input);
+ ///
+ /// 查询指定公司的材料上传要求。
+ ///
Task> ListMaterialRequirements(long companyId);
+ ///
+ /// 新增或编辑公司岗位材料要求。
+ ///
Task SaveMaterialRequirement(OnboardingMaterialRequirementSaveInput input);
+ ///
+ /// 删除材料上传要求。
+ ///
Task DeleteMaterialRequirements(BaseIdListInput input);
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Application/Services/Onboarding/EntryConfig/OnboardingEntryConfigService.cs b/SimpleAdmin.Application/Services/Onboarding/EntryConfig/OnboardingEntryConfigService.cs
index 02c9c16..2baeb23 100644
--- a/SimpleAdmin.Application/Services/Onboarding/EntryConfig/OnboardingEntryConfigService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/EntryConfig/OnboardingEntryConfigService.cs
@@ -12,6 +12,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
_db = DbContext.DB;
}
+ ///
+ /// 查询全部动态入职字段。
+ ///
public Task> ListFormFields()
{
return _db.Queryable()
@@ -19,6 +22,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
.ToListAsync();
}
+ ///
+ /// 新增或编辑动态入职字段。
+ ///
public async Task SaveFormField(OnboardingFormFieldSaveInput input)
{
var fieldCodeExists = await _db.Queryable()
@@ -51,6 +57,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
await _db.Insertable(entity).ExecuteCommandAsync();
}
+ ///
+ /// 删除未被填写要求引用的动态字段。
+ ///
public async Task DeleteFormFields(BaseIdListInput input)
{
if (input.Ids.Count == 0)
@@ -64,6 +73,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
await _db.Deleteable().In(input.Ids).ExecuteCommandAsync();
}
+ ///
+ /// 查询全部入职材料类型。
+ ///
public Task> ListMaterialTypes()
{
return _db.Queryable()
@@ -71,6 +83,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
.ToListAsync();
}
+ ///
+ /// 新增或编辑入职材料类型。
+ ///
public async Task SaveMaterialType(OnboardingMaterialTypeSaveInput input)
{
if (input.MaxFileCount <= 0)
@@ -105,6 +120,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
await _db.Insertable(entity).ExecuteCommandAsync();
}
+ ///
+ /// 删除未被要求或上传记录引用的材料类型。
+ ///
public async Task DeleteMaterialTypes(BaseIdListInput input)
{
if (input.Ids.Count == 0)
@@ -123,6 +141,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
await _db.Deleteable().In(input.Ids).ExecuteCommandAsync();
}
+ ///
+ /// 查询指定公司的动态字段填写要求。
+ ///
public Task> ListFormRequirements(long companyId)
{
return _db.Queryable()
@@ -131,6 +152,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
.ToListAsync();
}
+ ///
+ /// 新增或编辑公司岗位动态字段要求。
+ ///
public async Task SaveFormRequirement(OnboardingFormRequirementSaveInput input)
{
await EnsureCompanyAndPosition(input.CompanyId, input.PositionId);
@@ -167,6 +191,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
await _db.Insertable(entity).ExecuteCommandAsync();
}
+ ///
+ /// 删除动态字段填写要求。
+ ///
public Task DeleteFormRequirements(BaseIdListInput input)
{
if (input.Ids.Count == 0)
@@ -175,6 +202,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
return _db.Deleteable().In(input.Ids).ExecuteCommandAsync();
}
+ ///
+ /// 查询指定公司的材料上传要求。
+ ///
public Task> ListMaterialRequirements(long companyId)
{
return _db.Queryable()
@@ -183,6 +213,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
.ToListAsync();
}
+ ///
+ /// 新增或编辑公司岗位材料要求。
+ ///
public async Task SaveMaterialRequirement(OnboardingMaterialRequirementSaveInput input)
{
await EnsureCompanyAndPosition(input.CompanyId, input.PositionId);
@@ -219,6 +252,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
await _db.Insertable(entity).ExecuteCommandAsync();
}
+ ///
+ /// 删除材料上传要求。
+ ///
public Task DeleteMaterialRequirements(BaseIdListInput input)
{
if (input.Ids.Count == 0)
@@ -243,5 +279,3 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
throw Oops.Bah("岗位不存在、未启用或不属于该公司");
}
}
-
-
diff --git a/SimpleAdmin.Application/Services/Onboarding/Lifecycle/IOnboardingTaskLifecycleService.cs b/SimpleAdmin.Application/Services/Onboarding/Lifecycle/IOnboardingTaskLifecycleService.cs
index 9a99104..853c3fd 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Lifecycle/IOnboardingTaskLifecycleService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Lifecycle/IOnboardingTaskLifecycleService.cs
@@ -1,2 +1,17 @@
namespace SimpleAdmin.Application;
-public interface IOnboardingTaskLifecycleService : ITransient { Task Archive(OnboardingAuditActionInput input); Task Revoke(OnboardingAuditActionInput input); }
+
+///
+/// 定义入职任务撤销和归档能力。
+///
+public interface IOnboardingTaskLifecycleService : ITransient
+{
+ ///
+ /// 归档已经审核通过的入职任务。
+ ///
+ Task Archive(OnboardingAuditActionInput input);
+
+ ///
+ /// 撤销尚未归档的入职任务并使员工链接失效。
+ ///
+ Task Revoke(OnboardingAuditActionInput input);
+}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Lifecycle/OnboardingTaskLifecycleService.cs b/SimpleAdmin.Application/Services/Onboarding/Lifecycle/OnboardingTaskLifecycleService.cs
index bc0f268..f7733d6 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Lifecycle/OnboardingTaskLifecycleService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Lifecycle/OnboardingTaskLifecycleService.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Application;
+///
+/// 实现入职任务生命周期业务能力。
+///
public class OnboardingTaskLifecycleService : IOnboardingTaskLifecycleService
{
private readonly SqlSugarScope _db;
@@ -11,6 +14,9 @@ public class OnboardingTaskLifecycleService : IOnboardingTaskLifecycleService
_config = config;
}
+ ///
+ /// 归档已审核通过的入职任务。
+ ///
public async Task Archive(OnboardingAuditActionInput input)
{
var task = await Authorize(input.TaskId);
@@ -25,6 +31,9 @@ public class OnboardingTaskLifecycleService : IOnboardingTaskLifecycleService
await Log(task, OnboardingAuditAction.Archive, input.AuditOpinion);
}
+ ///
+ /// 撤销入职任务并同步撤销仍然有效的员工填写链接。
+ ///
public async Task Revoke(OnboardingAuditActionInput input)
{
var task = await Authorize(input.TaskId);
@@ -88,4 +97,3 @@ public class OnboardingTaskLifecycleService : IOnboardingTaskLifecycleService
}).ExecuteCommandAsync();
}
}
-
diff --git a/SimpleAdmin.Application/Services/Onboarding/MaterialReview/Dto/OnboardingMaterialReviewInput.cs b/SimpleAdmin.Application/Services/Onboarding/MaterialReview/Dto/OnboardingMaterialReviewInput.cs
index de6241d..b5ddcfb 100644
--- a/SimpleAdmin.Application/Services/Onboarding/MaterialReview/Dto/OnboardingMaterialReviewInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/MaterialReview/Dto/OnboardingMaterialReviewInput.cs
@@ -1,10 +1,23 @@
namespace SimpleAdmin.Application;
+///
+/// 审核候选人上传材料参数。
+///
public class OnboardingMaterialReviewInput
{
+ ///
+ /// 任务材料记录 Id。
+ ///
[IdNotNull(ErrorMessage = "任务资料Id不能为空")]
public long TaskMaterialId { get; set; }
+ ///
+ /// 材料审核状态。
+ ///
public string ReviewStatus { get; set; }
+
+ ///
+ /// 材料审核意见。
+ ///
public string ReviewRemark { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/MaterialReview/IOnboardingMaterialReviewService.cs b/SimpleAdmin.Application/Services/Onboarding/MaterialReview/IOnboardingMaterialReviewService.cs
index 1820e3d..6a0f816 100644
--- a/SimpleAdmin.Application/Services/Onboarding/MaterialReview/IOnboardingMaterialReviewService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/MaterialReview/IOnboardingMaterialReviewService.cs
@@ -1,2 +1,12 @@
namespace SimpleAdmin.Application;
-public interface IOnboardingMaterialReviewService : ITransient { Task Review(OnboardingMaterialReviewInput input); }
+
+///
+/// 定义候选人上传材料的审核能力。
+///
+public interface IOnboardingMaterialReviewService : ITransient
+{
+ ///
+ /// 审核单份候选人上传材料。
+ ///
+ Task Review(OnboardingMaterialReviewInput input);
+}
diff --git a/SimpleAdmin.Application/Services/Onboarding/MaterialReview/OnboardingMaterialReviewService.cs b/SimpleAdmin.Application/Services/Onboarding/MaterialReview/OnboardingMaterialReviewService.cs
index d688099..84ba66f 100644
--- a/SimpleAdmin.Application/Services/Onboarding/MaterialReview/OnboardingMaterialReviewService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/MaterialReview/OnboardingMaterialReviewService.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Application;
+///
+/// 实现候选人上传材料审核业务能力。
+///
public class OnboardingMaterialReviewService : IOnboardingMaterialReviewService
{
private readonly SqlSugarScope _db;
@@ -11,6 +14,9 @@ public class OnboardingMaterialReviewService : IOnboardingMaterialReviewService
_config = config;
}
+ ///
+ /// 审核单份候选人上传材料并记录审核意见。
+ ///
public async Task Review(OnboardingMaterialReviewInput input)
{
if (input.ReviewStatus != TaskMaterialReviewStatus.Passed
@@ -63,4 +69,3 @@ public class OnboardingMaterialReviewService : IOnboardingMaterialReviewService
}
}
}
-
diff --git a/SimpleAdmin.Application/Services/Onboarding/Position/Dto/OnboardingPositionInput.cs b/SimpleAdmin.Application/Services/Onboarding/Position/Dto/OnboardingPositionInput.cs
index 551738b..ac9c36e 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Position/Dto/OnboardingPositionInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Position/Dto/OnboardingPositionInput.cs
@@ -1,23 +1,52 @@
namespace SimpleAdmin.Application;
+///
+/// 入职业务岗位分页查询参数。
+///
public class OnboardingPositionPageInput : BasePageInput
{
+ ///
+ /// 入职业务公司 Id。
+ ///
public long? CompanyId { get; set; }
+
+ ///
+ /// 岗位名称。
+ ///
public virtual string PositionName { get; set; }
+
+ ///
+ /// 启用状态或状态筛选条件。
+ ///
public string Status { get; set; }
}
+///
+/// 新增入职业务岗位参数。
+///
public class OnboardingPositionAddInput : ObPosition
{
+ ///
+ /// 岗位业务编码。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "岗位编码不能为空")]
public override string PositionCode { get; set; }
+ ///
+ /// 岗位名称。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "岗位名称不能为空")]
public override string PositionName { get; set; }
}
+///
+/// 编辑入职业务岗位参数。
+///
public class OnboardingPositionEditInput : OnboardingPositionAddInput
{
+ ///
+ /// 业务数据 Id。
+ ///
[IdNotNull(ErrorMessage = "岗位Id不能为空")]
public override long Id { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Position/IOnboardingPositionService.cs b/SimpleAdmin.Application/Services/Onboarding/Position/IOnboardingPositionService.cs
index d564900..5c8994d 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Position/IOnboardingPositionService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Position/IOnboardingPositionService.cs
@@ -1,11 +1,32 @@
namespace SimpleAdmin.Application;
+///
+/// 定义入职业务岗位业务能力。
+///
public interface IOnboardingPositionService : ITransient
{
+ ///
+ /// 分页查询入职业务岗位。
+ ///
Task> Page(OnboardingPositionPageInput input);
+ ///
+ /// 查询指定公司下全部已启用岗位。
+ ///
Task> ListEnabled(long companyId);
+ ///
+ /// 查询岗位详情。
+ ///
Task Detail(BaseIdInput input);
+ ///
+ /// 新增入职业务岗位。
+ ///
Task Add(OnboardingPositionAddInput input);
+ ///
+ /// 编辑入职业务岗位。
+ ///
Task Edit(OnboardingPositionEditInput input);
+ ///
+ /// 删除未被任务或正式员工引用的岗位。
+ ///
Task Delete(BaseIdListInput input);
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Position/OnboardingPositionService.cs b/SimpleAdmin.Application/Services/Onboarding/Position/OnboardingPositionService.cs
index 134f484..b193966 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Position/OnboardingPositionService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Position/OnboardingPositionService.cs
@@ -1,7 +1,13 @@
namespace SimpleAdmin.Application;
+///
+/// 实现入职业务岗位业务能力。
+///
public class OnboardingPositionService : DbRepository, IOnboardingPositionService
{
+ ///
+ /// 分页查询入职业务岗位。
+ ///
public async Task> Page(OnboardingPositionPageInput input)
{
return await Context.Queryable()
@@ -15,6 +21,9 @@ public class OnboardingPositionService : DbRepository, IOnboardingPo
.ToPagedListAsync(input.PageNum, input.PageSize);
}
+ ///
+ /// 查询指定公司下全部已启用岗位。
+ ///
public Task> ListEnabled(long companyId)
{
return Context.Queryable()
@@ -23,11 +32,17 @@ public class OnboardingPositionService : DbRepository, IOnboardingPo
.ToListAsync();
}
+ ///
+ /// 查询岗位详情。
+ ///
public async Task Detail(BaseIdInput input)
{
return await GetByIdAsync(input.Id) ?? throw Oops.Bah("岗位不存在");
}
+ ///
+ /// 新增入职业务岗位。
+ ///
public async Task Add(OnboardingPositionAddInput input)
{
await EnsureCompanyExists(input.CompanyId);
@@ -35,6 +50,9 @@ public class OnboardingPositionService : DbRepository, IOnboardingPo
await InsertAsync(input.Adapt());
}
+ ///
+ /// 编辑入职业务岗位。
+ ///
public async Task Edit(OnboardingPositionEditInput input)
{
await Detail(new BaseIdInput { Id = input.Id });
@@ -43,6 +61,9 @@ public class OnboardingPositionService : DbRepository, IOnboardingPo
await UpdateAsync(input.Adapt());
}
+ ///
+ /// 删除未被任务或正式员工引用的岗位。
+ ///
public async Task Delete(BaseIdListInput input)
{
if (input.Ids.Count == 0)
diff --git a/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/Dto/OnboardingMaterialUploadValidationInput.cs b/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/Dto/OnboardingMaterialUploadValidationInput.cs
index 511ed08..e78792b 100644
--- a/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/Dto/OnboardingMaterialUploadValidationInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/Dto/OnboardingMaterialUploadValidationInput.cs
@@ -1,9 +1,27 @@
namespace SimpleAdmin.Application;
+///
+/// 员工端材料上传前校验参数。
+///
public class OnboardingMaterialUploadValidationInput
{
+ ///
+ /// 员工填写链接中的明文 Token。
+ ///
public string Token { get; set; }
+
+ ///
+ /// 材料类型 Id。
+ ///
public long MaterialTypeId { get; set; }
+
+ ///
+ /// 待上传文件名称。
+ ///
public string FileName { get; set; }
+
+ ///
+ /// 待上传文件大小,单位为字节。
+ ///
public long FileLength { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/Dto/OnboardingPublicSubmissionInput.cs b/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/Dto/OnboardingPublicSubmissionInput.cs
index b117b70..d4bf95f 100644
--- a/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/Dto/OnboardingPublicSubmissionInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/Dto/OnboardingPublicSubmissionInput.cs
@@ -1,38 +1,85 @@
namespace SimpleAdmin.Application;
+///
+/// 单个动态字段填写值。
+///
public class OnboardingDynamicValueInput
{
+ ///
+ /// 动态字段 Id。
+ ///
public long FieldId { get; set; }
+
+ ///
+ /// 动态字段填写值。
+ ///
public string FieldValue { get; set; }
}
+///
+/// 批量保存员工动态字段参数。
+///
public class OnboardingSaveDynamicValuesInput
{
+ ///
+ /// 员工填写链接中的明文 Token。
+ ///
[global::System.ComponentModel.DataAnnotations.Required]
public string Token { get; set; }
+ ///
+ /// 待保存的字段或变量值集合。
+ ///
public List Values { get; set; } = new();
}
+///
+/// 保存员工已上传材料参数。
+///
public class OnboardingSaveMaterialInput
{
+ ///
+ /// 员工填写链接中的明文 Token。
+ ///
[global::System.ComponentModel.DataAnnotations.Required]
public string Token { get; set; }
+ ///
+ /// 材料类型 Id。
+ ///
public long MaterialTypeId { get; set; }
+
+ ///
+ /// 系统文件 Id。
+ ///
public long FileId { get; set; }
}
+///
+/// 员工确认阅读合同参数。
+///
public class OnboardingConfirmContractInput
{
+ ///
+ /// 员工填写链接中的明文 Token。
+ ///
[global::System.ComponentModel.DataAnnotations.Required]
public string Token { get; set; }
+ ///
+ /// 任务合同 Id。
+ ///
public long TaskContractId { get; set; }
}
+///
+/// 员工提交入职资料参数。
+///
public class OnboardingSubmitInput
{
+ ///
+ /// 员工填写链接中的明文 Token。
+ ///
[global::System.ComponentModel.DataAnnotations.Required]
public string Token { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/IOnboardingPublicSubmissionService.cs b/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/IOnboardingPublicSubmissionService.cs
index c7e7c00..82af52c 100644
--- a/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/IOnboardingPublicSubmissionService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/IOnboardingPublicSubmissionService.cs
@@ -1,10 +1,28 @@
namespace SimpleAdmin.Application;
+///
+/// 定义员工端入职资料提交业务能力。
+///
public interface IOnboardingPublicSubmissionService : ITransient
{
+ ///
+ /// 保存候选人填写的动态字段值。
+ ///
Task SaveDynamicValues(OnboardingSaveDynamicValuesInput input);
+ ///
+ /// 关联候选人已经上传的系统文件与材料类型。
+ ///
Task SaveMaterial(OnboardingSaveMaterialInput input);
+ ///
+ /// 记录候选人已阅读并确认指定任务合同。
+ ///
Task ConfirmContract(OnboardingConfirmContractInput input);
+ ///
+ /// 校验全部必填资料后提交入职任务进入审核。
+ ///
Task Submit(OnboardingSubmitInput input);
+ ///
+ /// 在保存文件前校验材料适用范围、扩展名、大小和数量。
+ ///
Task ValidateMaterialUpload(OnboardingMaterialUploadValidationInput input);
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/OnboardingPublicSubmissionService.cs b/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/OnboardingPublicSubmissionService.cs
index eb0b1a1..2066888 100644
--- a/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/OnboardingPublicSubmissionService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/PublicSubmission/OnboardingPublicSubmissionService.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Application;
+///
+/// 实现员工端入职资料提交业务能力。
+///
public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionService
{
private readonly SqlSugarScope _db;
@@ -12,6 +15,9 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
_snapshotService = snapshotService;
}
+ ///
+ /// 保存候选人填写的动态字段值。
+ ///
public async Task SaveDynamicValues(OnboardingSaveDynamicValuesInput input)
{
var task = await GetEditableTask(input.Token);
@@ -52,6 +58,9 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
}
}
+ ///
+ /// 关联候选人已经上传的系统文件与材料类型。
+ ///
public async Task SaveMaterial(OnboardingSaveMaterialInput input)
{
var task = await GetEditableTask(input.Token);
@@ -84,6 +93,9 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
}).ExecuteCommandAsync();
}
+ ///
+ /// 记录候选人已阅读并确认指定任务合同。
+ ///
public async Task ConfirmContract(OnboardingConfirmContractInput input)
{
var task = await GetEditableTask(input.Token);
@@ -97,6 +109,9 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
await _db.Updateable(contract).ExecuteCommandAsync();
}
+ ///
+ /// 校验全部必填资料后提交入职任务进入审核。
+ ///
public async Task Submit(OnboardingSubmitInput input)
{
var task = await GetEditableTask(input.Token);
@@ -111,6 +126,7 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
await _snapshotService.Build(task.Id, info);
+ // 提交时统一完成动态字段、材料、合同变量和合同确认校验,保存阶段只负责暂存。
var requiredFields = (await GetEffectiveFormRequirements(task))
.Where(item => item.Required)
.Select(item => item.FieldId)
@@ -160,6 +176,9 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
}).ExecuteCommandAsync();
}
+ ///
+ /// 在保存文件前校验材料适用范围、扩展名、大小和数量。
+ ///
public async Task ValidateMaterialUpload(OnboardingMaterialUploadValidationInput input)
{
var task = await GetEditableTask(input.Token);
@@ -262,5 +281,3 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
return task;
}
}
-
-
diff --git a/SimpleAdmin.Application/Services/Onboarding/PublicTask/IOnboardingPublicTaskService.cs b/SimpleAdmin.Application/Services/Onboarding/PublicTask/IOnboardingPublicTaskService.cs
index 3941de1..1ad6d39 100644
--- a/SimpleAdmin.Application/Services/Onboarding/PublicTask/IOnboardingPublicTaskService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/PublicTask/IOnboardingPublicTaskService.cs
@@ -1,8 +1,20 @@
namespace SimpleAdmin.Application;
+///
+/// 定义员工端入职任务访问业务能力。
+///
public interface IOnboardingPublicTaskService : ITransient
{
+ ///
+ /// 通过有效 Token 获取员工端任务、字段、材料和合同信息。
+ ///
Task Detail(OnboardingTaskPublicAccessInput input);
+ ///
+ /// 保存候选人固定基础信息并刷新合同变量快照。
+ ///
Task SaveEmployeeInfo(OnboardingTaskPublicSaveInput input);
+ ///
+ /// 校验任务归属后返回合同模板源文件 Id。
+ ///
Task GetContractSourceFileId(OnboardingPublicContractSourceInput input);
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/PublicTask/OnboardingPublicTaskService.cs b/SimpleAdmin.Application/Services/Onboarding/PublicTask/OnboardingPublicTaskService.cs
index a082964..31d8c25 100644
--- a/SimpleAdmin.Application/Services/Onboarding/PublicTask/OnboardingPublicTaskService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/PublicTask/OnboardingPublicTaskService.cs
@@ -15,6 +15,9 @@ public class OnboardingPublicTaskService : IOnboardingPublicTaskService
_snapshotService = snapshotService;
}
+ ///
+ /// 通过有效 Token 获取员工端任务、字段、材料和合同信息。
+ ///
public async Task Detail(OnboardingTaskPublicAccessInput input)
{
var link = await GetActiveLink(input.Token);
@@ -77,6 +80,9 @@ public class OnboardingPublicTaskService : IOnboardingPublicTaskService
};
}
+ ///
+ /// 保存候选人固定基础信息并刷新合同变量快照。
+ ///
public async Task SaveEmployeeInfo(OnboardingTaskPublicSaveInput input)
{
var link = await GetActiveLink(input.Token);
@@ -103,6 +109,9 @@ public class OnboardingPublicTaskService : IOnboardingPublicTaskService
await _snapshotService.Build(task.Id, entity);
}
+ ///
+ /// 校验任务归属后返回合同模板源文件 Id。
+ ///
public async Task GetContractSourceFileId(OnboardingPublicContractSourceInput input)
{
var link = await GetActiveLink(input.Token);
@@ -121,6 +130,7 @@ public class OnboardingPublicTaskService : IOnboardingPublicTaskService
.Where(x => x.CompanyId == task.CompanyId && (x.PositionId == null || x.PositionId == task.PositionId))
.ToListAsync();
+ // 同一字段同时存在公司级和岗位级配置时,岗位配置覆盖公司默认配置。
return requirements
.GroupBy(x => x.FieldId)
.Select(group => group.FirstOrDefault(x => x.PositionId == task.PositionId) ?? group.First())
@@ -133,6 +143,7 @@ public class OnboardingPublicTaskService : IOnboardingPublicTaskService
.Where(x => x.CompanyId == task.CompanyId && (x.PositionId == null || x.PositionId == task.PositionId))
.ToListAsync();
+ // 同一材料同时存在公司级和岗位级配置时,岗位配置覆盖公司默认配置。
return requirements
.GroupBy(x => x.MaterialTypeId)
.Select(group => group.FirstOrDefault(x => x.PositionId == task.PositionId) ?? group.First())
@@ -153,5 +164,3 @@ public class OnboardingPublicTaskService : IOnboardingPublicTaskService
return link;
}
}
-
-
diff --git a/SimpleAdmin.Application/Services/Onboarding/Task/Dto/OnboardingTaskInput.cs b/SimpleAdmin.Application/Services/Onboarding/Task/Dto/OnboardingTaskInput.cs
index 8ba0c23..36e9e65 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Task/Dto/OnboardingTaskInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Task/Dto/OnboardingTaskInput.cs
@@ -1,20 +1,60 @@
namespace SimpleAdmin.Application;
+///
+/// 创建新员工入职任务参数。
+///
public class OnboardingTaskCreateInput
{
+ ///
+ /// 入职业务公司 Id。
+ ///
[IdNotNull(ErrorMessage = "公司Id不能为空")]
public long CompanyId { get; set; }
+
+ ///
+ /// 入职任务所属岗位 Id。
+ ///
[IdNotNull(ErrorMessage = "岗位Id不能为空")]
public long PositionId { get; set; }
+
+ ///
+ /// 创建任务时指定的审核人用户 Id。
+ ///
public long? AssignedReviewerUserId { get; set; }
+
+ ///
+ /// 链接过期时间;实际有效期由系统配置计算。
+ ///
public DateTime? LinkExpireAt { get; set; }
+
+ ///
+ /// 业务备注。
+ ///
public string Remark { get; set; }
}
+///
+/// 入职任务创建结果。
+///
public class OnboardingTaskCreatedOutput
{
+ ///
+ /// 入职任务 Id。
+ ///
public long TaskId { get; set; }
+
+ ///
+ /// 入职任务编号。
+ ///
public string TaskNo { get; set; }
+
+ ///
+ /// 新生成的员工填写链接 Token,仅在创建结果中返回。
+ ///
public string LinkToken { get; set; }
+
+ ///
+ /// 员工填写链接过期时间。
+ ///
public DateTime ExpiresAt { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Task/Dto/OnboardingTaskPublicInput.cs b/SimpleAdmin.Application/Services/Onboarding/Task/Dto/OnboardingTaskPublicInput.cs
index ace1cf7..3d202eb 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Task/Dto/OnboardingTaskPublicInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Task/Dto/OnboardingTaskPublicInput.cs
@@ -1,61 +1,169 @@
namespace SimpleAdmin.Application;
+///
+/// 员工端通过 Token 访问任务参数。
+///
public class OnboardingTaskPublicAccessInput
{
+ ///
+ /// 员工填写链接中的明文 Token。
+ ///
[global::System.ComponentModel.DataAnnotations.Required]
public string Token { get; set; }
}
+///
+/// 员工端获取合同源文件参数。
+///
public class OnboardingPublicContractSourceInput
{
+ ///
+ /// 员工填写链接中的明文 Token。
+ ///
[global::System.ComponentModel.DataAnnotations.Required]
public string Token { get; set; }
+ ///
+ /// 任务合同 Id。
+ ///
[IdNotNull(ErrorMessage = "任务合同Id不能为空")]
public long TaskContractId { get; set; }
}
+///
+/// 员工端保存固定基础信息参数。
+///
public class OnboardingTaskPublicSaveInput : ObTaskEmployeeInfo
{
+ ///
+ /// 员工填写链接中的明文 Token。
+ ///
[global::System.ComponentModel.DataAnnotations.Required]
public string Token { get; set; }
+ ///
+ /// 员工姓名。
+ ///
[global::System.ComponentModel.DataAnnotations.Required]
public new string EmployeeName { get; set; }
+ ///
+ /// 手机号码。
+ ///
[global::System.ComponentModel.DataAnnotations.Required]
public new string Phone { get; set; }
+ ///
+ /// 身份证号码。
+ ///
[global::System.ComponentModel.DataAnnotations.Required]
public new string IdCardNumber { get; set; }
}
+///
+/// 员工端动态字段展示信息。
+///
public class OnboardingPublicFormFieldOutput
{
+ ///
+ /// 动态字段 Id。
+ ///
public long FieldId { get; set; }
+
+ ///
+ /// 动态字段编码。
+ ///
public string FieldCode { get; set; }
+
+ ///
+ /// 动态字段名称。
+ ///
public string FieldName { get; set; }
+
+ ///
+ /// 字段或变量数据类型。
+ ///
public string DataType { get; set; }
+
+ ///
+ /// 可选项 JSON。
+ ///
public string OptionsJson { get; set; }
+
+ ///
+ /// 是否必填、必传或必签。
+ ///
public bool Required { get; set; }
}
+///
+/// 员工端材料上传要求。
+///
public class OnboardingPublicMaterialOutput
{
+ ///
+ /// 材料类型 Id。
+ ///
public long MaterialTypeId { get; set; }
+
+ ///
+ /// 材料名称。
+ ///
public string MaterialName { get; set; }
+
+ ///
+ /// 允许上传的文件扩展名。
+ ///
public string AllowedExtensions { get; set; }
+
+ ///
+ /// 允许上传的最大文件数量。
+ ///
public int MaxFileCount { get; set; }
+
+ ///
+ /// 是否必填、必传或必签。
+ ///
public bool Required { get; set; }
}
+///
+/// 员工端入职任务完整详情。
+///
public class OnboardingTaskPublicDetailOutput
{
+ ///
+ /// 入职任务主数据。
+ ///
public ObOnboardingTask Task { get; set; }
+
+ ///
+ /// 候选人固定基础信息。
+ ///
public ObTaskEmployeeInfo EmployeeInfo { get; set; }
+
+ ///
+ /// 任务合同列表。
+ ///
public List Contracts { get; set; }
+
+ ///
+ /// 候选人已保存的动态字段值。
+ ///
public List DynamicValues { get; set; }
+
+ ///
+ /// 员工端需要展示的动态字段。
+ ///
public List FormFields { get; set; }
+
+ ///
+ /// 员工端需要展示的材料要求。
+ ///
public List MaterialRequirements { get; set; }
+
+ ///
+ /// 候选人已上传材料列表。
+ ///
public List Materials { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Task/IOnboardingTaskService.cs b/SimpleAdmin.Application/Services/Onboarding/Task/IOnboardingTaskService.cs
index ee96c01..aae6734 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Task/IOnboardingTaskService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Task/IOnboardingTaskService.cs
@@ -1,6 +1,12 @@
namespace SimpleAdmin.Application;
+///
+/// 定义入职任务创建业务能力。
+///
public interface IOnboardingTaskService : ITransient
{
+ ///
+ /// 校验公司、岗位和合同范围后创建入职任务、链接及任务合同。
+ ///
Task Create(OnboardingTaskCreateInput input);
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/Task/OnboardingTaskService.cs b/SimpleAdmin.Application/Services/Onboarding/Task/OnboardingTaskService.cs
index 779b1bb..b6d77a7 100644
--- a/SimpleAdmin.Application/Services/Onboarding/Task/OnboardingTaskService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/Task/OnboardingTaskService.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Application;
+///
+/// 实现入职任务创建业务能力。
+///
public class OnboardingTaskService : IOnboardingTaskService
{
private readonly SqlSugarScope _db;
@@ -15,6 +18,9 @@ public class OnboardingTaskService : IOnboardingTaskService
_snapshotService = snapshotService;
}
+ ///
+ /// 校验公司、岗位和合同范围后创建入职任务、链接及任务合同。
+ ///
public async Task Create(OnboardingTaskCreateInput input)
{
var companyEnabled = await _db.Queryable()
@@ -73,6 +79,7 @@ public class OnboardingTaskService : IOnboardingTaskService
Remark = input.Remark
};
+ // 任务、链接、合同实例和变量快照属于同一创建动作,必须保证事务一致性。
await _db.Ado.BeginTranAsync();
try
{
@@ -124,5 +131,3 @@ public class OnboardingTaskService : IOnboardingTaskService
};
}
}
-
-
diff --git a/SimpleAdmin.Application/Services/Onboarding/TaskContractVariable/Dto/OnboardingTaskContractVariableInput.cs b/SimpleAdmin.Application/Services/Onboarding/TaskContractVariable/Dto/OnboardingTaskContractVariableInput.cs
index 4c8819a..8646183 100644
--- a/SimpleAdmin.Application/Services/Onboarding/TaskContractVariable/Dto/OnboardingTaskContractVariableInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/TaskContractVariable/Dto/OnboardingTaskContractVariableInput.cs
@@ -1,43 +1,125 @@
namespace SimpleAdmin.Application;
+///
+/// 查询任务合同变量参数。
+///
public class OnboardingTaskContractVariableQueryInput
{
+ ///
+ /// 入职任务 Id。
+ ///
[IdNotNull(ErrorMessage = "入职任务Id不能为空")]
public long TaskId { get; set; }
}
+///
+/// 批量保存任务合同变量参数。
+///
public class OnboardingTaskContractVariableSaveInput
{
+ ///
+ /// 任务合同 Id。
+ ///
[IdNotNull(ErrorMessage = "任务合同Id不能为空")]
public long TaskContractId { get; set; }
+
+ ///
+ /// 待保存的字段或变量值集合。
+ ///
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "变量不能为空")]
public List Values { get; set; } = new List();
}
+///
+/// 单个任务合同变量保存值。
+///
public class OnboardingTaskContractVariableValueInput
{
+ ///
+ /// 业务数据 Id。
+ ///
[IdNotNull(ErrorMessage = "变量Id不能为空")]
public long Id { get; set; }
+
+ ///
+ /// 任务合同变量最终值。
+ ///
public string VariableValue { get; set; }
}
+///
+/// 单份任务合同及其变量输出。
+///
public class OnboardingTaskContractVariableOutput
{
+ ///
+ /// 任务合同 Id。
+ ///
public long TaskContractId { get; set; }
+
+ ///
+ /// 任务合同名称。
+ ///
public string ContractName { get; set; }
+
+ ///
+ /// 合同类型。
+ ///
public string ContractType { get; set; }
+
+ ///
+ /// 任务合同变量列表。
+ ///
public List Variables { get; set; } = new List();
}
+///
+/// 单个任务合同变量输出。
+///
public class OnboardingTaskContractVariableItemOutput
{
+ ///
+ /// 业务数据 Id。
+ ///
public long Id { get; set; }
+
+ ///
+ /// 合同变量编码。
+ ///
public string VariableCode { get; set; }
+
+ ///
+ /// 合同变量名称。
+ ///
public string VariableName { get; set; }
+
+ ///
+ /// 合同变量来源类型。
+ ///
public string VariableType { get; set; }
+
+ ///
+ /// 字段或变量数据类型。
+ ///
public string DataType { get; set; }
+
+ ///
+ /// 任务合同变量最终值。
+ ///
public string VariableValue { get; set; }
+
+ ///
+ /// 是否必填、必传或必签。
+ ///
public bool Required { get; set; }
+
+ ///
+ /// 人事是否可以编辑。
+ ///
public bool HrEditable { get; set; }
+
+ ///
+ /// 当前用户是否可以编辑该变量。
+ ///
public bool Editable { get; set; }
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Application/Services/Onboarding/TaskContractVariable/IOnboardingTaskContractVariableService.cs b/SimpleAdmin.Application/Services/Onboarding/TaskContractVariable/IOnboardingTaskContractVariableService.cs
index b1ce963..22d948b 100644
--- a/SimpleAdmin.Application/Services/Onboarding/TaskContractVariable/IOnboardingTaskContractVariableService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/TaskContractVariable/IOnboardingTaskContractVariableService.cs
@@ -1,7 +1,16 @@
namespace SimpleAdmin.Application;
+///
+/// 定义任务合同变量维护业务能力。
+///
public interface IOnboardingTaskContractVariableService : ITransient
{
+ ///
+ /// 查询任务下全部合同及其变量当前值。
+ ///
Task> List(OnboardingTaskContractVariableQueryInput input);
+ ///
+ /// 保存允许人事编辑的任务合同变量值。
+ ///
Task Save(OnboardingTaskContractVariableSaveInput input);
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Application/Services/Onboarding/TaskContractVariable/OnboardingTaskContractVariableService.cs b/SimpleAdmin.Application/Services/Onboarding/TaskContractVariable/OnboardingTaskContractVariableService.cs
index 91cfc49..3f7b58d 100644
--- a/SimpleAdmin.Application/Services/Onboarding/TaskContractVariable/OnboardingTaskContractVariableService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/TaskContractVariable/OnboardingTaskContractVariableService.cs
@@ -10,6 +10,9 @@ public class OnboardingTaskContractVariableService : IOnboardingTaskContractVari
public OnboardingTaskContractVariableService()
=> _db = DbContext.DB;
+ ///
+ /// 查询任务下全部合同及其变量当前值。
+ ///
public async Task> List(
OnboardingTaskContractVariableQueryInput input)
{
@@ -68,6 +71,9 @@ public class OnboardingTaskContractVariableService : IOnboardingTaskContractVari
}).ToList();
}
+ ///
+ /// 保存允许人事编辑的任务合同变量值。
+ ///
public async Task Save(OnboardingTaskContractVariableSaveInput input)
{
var contract = await _db.Queryable()
@@ -127,6 +133,7 @@ public class OnboardingTaskContractVariableService : IOnboardingTaskContractVari
row.VariableValue = inputValue.VariableValue;
row.SourceType = ContractVariableSourceType.HrInput;
+ // 标记为手工覆盖后,后续刷新员工或公司自动变量时保留该值。
row.IsManualOverride = true;
}
@@ -137,4 +144,3 @@ public class OnboardingTaskContractVariableService : IOnboardingTaskContractVari
}
}
}
-
diff --git a/SimpleAdmin.Application/Services/Onboarding/TaskQuery/Dto/OnboardingTaskQueryInput.cs b/SimpleAdmin.Application/Services/Onboarding/TaskQuery/Dto/OnboardingTaskQueryInput.cs
index 2847fe2..14cd71f 100644
--- a/SimpleAdmin.Application/Services/Onboarding/TaskQuery/Dto/OnboardingTaskQueryInput.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/TaskQuery/Dto/OnboardingTaskQueryInput.cs
@@ -1,17 +1,63 @@
namespace SimpleAdmin.Application;
+///
+/// 入职任务分页查询参数。
+///
public class OnboardingTaskPageInput : BasePageInput
{
+ ///
+ /// 入职任务编号。
+ ///
public string TaskNo { get; set; }
+
+ ///
+ /// 入职任务状态筛选条件。
+ ///
public string TaskStatus { get; set; }
+
+ ///
+ /// 入职业务公司 Id。
+ ///
public long? CompanyId { get; set; }
}
+///
+/// 后台入职任务详情输出。
+///
public class OnboardingTaskDetailOutput
{
+ ///
+ /// 入职任务主数据。
+ ///
public ObOnboardingTask Task { get; set; }
+
+ ///
+ /// 候选人固定基础信息。
+ ///
public ObTaskEmployeeInfo EmployeeInfo { get; set; }
+
+ ///
+ /// 任务合同列表。
+ ///
public List Contracts { get; set; }
+
+ ///
+ /// 候选人已上传材料列表。
+ ///
public List Materials { get; set; }
+
+ ///
+ /// 候选人动态字段值列表。
+ ///
+ public List FormValues { get; set; }
+
+ ///
+ /// 任务当前有效链接信息。
+ ///
+ public ObTaskLink Link { get; set; }
+
+ ///
+ /// 提交与审核记录列表。
+ ///
public List Audits { get; set; }
}
diff --git a/SimpleAdmin.Application/Services/Onboarding/TaskQuery/IOnboardingTaskQueryService.cs b/SimpleAdmin.Application/Services/Onboarding/TaskQuery/IOnboardingTaskQueryService.cs
index a24af85..2a11668 100644
--- a/SimpleAdmin.Application/Services/Onboarding/TaskQuery/IOnboardingTaskQueryService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/TaskQuery/IOnboardingTaskQueryService.cs
@@ -1,8 +1,17 @@
namespace SimpleAdmin.Application;
+///
+/// 定义入职任务查询业务能力。
+///
public interface IOnboardingTaskQueryService : ITransient
{
+ ///
+ /// 分页查询后台入职任务。
+ ///
Task> Page(OnboardingTaskPageInput input);
+ ///
+ /// 查询任务基础信息、人员资料、合同、材料、表单值、链接和审核记录。
+ ///
Task Detail(BaseIdInput input);
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Application/Services/Onboarding/TaskQuery/OnboardingTaskQueryService.cs b/SimpleAdmin.Application/Services/Onboarding/TaskQuery/OnboardingTaskQueryService.cs
index b3ab815..3a1ccd0 100644
--- a/SimpleAdmin.Application/Services/Onboarding/TaskQuery/OnboardingTaskQueryService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/TaskQuery/OnboardingTaskQueryService.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Application;
+///
+/// 实现入职任务查询业务能力。
+///
public class OnboardingTaskQueryService : IOnboardingTaskQueryService
{
private readonly SqlSugarScope _db;
@@ -9,6 +12,9 @@ public class OnboardingTaskQueryService : IOnboardingTaskQueryService
_db = DbContext.DB;
}
+ ///
+ /// 分页查询后台入职任务。
+ ///
public Task> Page(OnboardingTaskPageInput input)
{
return _db.Queryable()
@@ -19,6 +25,9 @@ public class OnboardingTaskQueryService : IOnboardingTaskQueryService
.ToPagedListAsync(input.PageNum, input.PageSize);
}
+ ///
+ /// 查询任务基础信息、人员资料、合同、材料、表单值、链接和审核记录。
+ ///
public async Task Detail(BaseIdInput input)
{
var task = await _db.Queryable().InSingleAsync(input.Id)
@@ -35,6 +44,13 @@ public class OnboardingTaskQueryService : IOnboardingTaskQueryService
Materials = await _db.Queryable()
.Where(item => item.TaskId == task.Id)
.ToListAsync(),
+ FormValues = await _db.Queryable()
+ .Where(item => item.TaskId == task.Id)
+ .ToListAsync(),
+ Link = await _db.Queryable()
+ .Where(item => item.TaskId == task.Id && item.LinkStatus == "active")
+ .OrderByDescending(item => item.CreateTime)
+ .FirstAsync(),
Audits = await _db.Queryable()
.Where(item => item.TaskId == task.Id)
.OrderByDescending(item => item.AuditedAt)
@@ -42,4 +58,3 @@ public class OnboardingTaskQueryService : IOnboardingTaskQueryService
};
}
}
-
diff --git a/SimpleAdmin.Application/SimpleAdmin.Application.xml b/SimpleAdmin.Application/SimpleAdmin.Application.xml
index 2ec50bd..a2b0b18 100644
--- a/SimpleAdmin.Application/SimpleAdmin.Application.xml
+++ b/SimpleAdmin.Application/SimpleAdmin.Application.xml
@@ -54,80 +54,3179 @@
排序码
+
+
+ 入职业务公司档案,保存合同甲方及入职归属公司信息。
+
+
+
+
+ 公司业务编码。
+
+
+
+
+ 公司显示名称。
+
+
+
+
+ 合同中使用的甲方完整法定名称。
+
+
+
+
+ 统一社会信用代码。
+
+
+
+
+ 法定代表人姓名。
+
+
+
+
+ 工商注册地址。
+
+
+
+
+ 公司联系电话。
+
+
+
+
+ 业务备注。
+
+
+
+
+ 合同适用范围,将已启用的合同版本绑定到公司或具体岗位。
+
+
+
+
+ 所属入职业务公司 Id。
+
+
+
+
+ 所属岗位 Id;为空时表示适用于公司下全部岗位。
+
+
+
+
+ 合同模板主档案 Id。
+
+
+
+
+ 合同模板版本 Id。
+
+
+
+
+ 该适用范围下的合同是否必签。
+
+
+
+
+ 显示排序码。
+
+
+
+
+ 合同模板主档案,用于区分不同合同类型及模板用途。
+
+
+
+
+ 合同模板业务编码。
+
+
+
+
+ 合同模板名称。
+
+
+
+
+ 合同类型。
+
+
+
+
+ 模板用途说明。
+
+
+
+
+ 合同模板版本,保存不可变的 DOCX 源文件及版本有效期。
+
+
+
+
+ 合同模板主档案 Id。
+
+
+
+
+ 模板版本号。
+
+
+
+
+ 模板 DOCX 源文件 Id。
+
+
+
+
+ 源文件内容哈希,用于校验文件是否变化。
+
+
+
+
+ 版本生效日期。
+
+
+
+
+ 版本失效日期。
+
+
+
+
+ 模板版本状态。
+
+
+
+
+ 业务备注。
+
+
+
+
+ 审核通过后生成的正式员工档案,是入职流程的最终业务数据。
+
+
+
+
+ 员工编号。
+
+
+
+
+ 内部人员编号。
+
+
+
+
+ 员工姓名。
+
+
+
+
+ 所属入职业务公司 Id。
+
+
+
+
+ 所属部门名称。
+
+
+
+
+ 所属入职业务岗位 Id。
+
+
+
+
+ 性别。
+
+
+
+
+ 手机号码。
+
+
+
+
+ 身份证号码。
+
+
+
+
+ 毕业院校。
+
+
+
+
+ 最高学历。
+
+
+
+
+ 所学专业。
+
+
+
+
+ 出生日期。
+
+
+
+
+ 户籍所在地。
+
+
+
+
+ 民族。
+
+
+
+
+ 现居住或联系地址。
+
+
+
+
+ 入职日期。
+
+
+
+
+ 合同开始日期。
+
+
+
+
+ 合同结束日期。
+
+
+
+
+ 试用期开始日期。
+
+
+
+
+ 试用期结束日期。
+
+
+
+
+ 转正日期。
+
+
+
+
+ 社保缴纳公司。
+
+
+
+
+ 合同性质。
+
+
+
+
+ 工资银行卡号。
+
+
+
+
+ 银行卡开户名。
+
+
+
+
+ 开户银行名称。
+
+
+
+
+ 业务备注。
+
+
+
+
+ 审核通过时冻结的动态字段信息 JSON。
+
+
+
+
+ 动态入职字段定义,用于扩展固定人员基础信息之外的填写项。
+
+
+
+
+ 动态字段业务编码。
+
+
+
+
+ 动态字段显示名称。
+
+
+
+
+ 变量数据类型。
+
+
+
+
+ 选择型字段或变量的可选项 JSON。
+
+
+
+
+ 字段校验规则。
+
+
+
+
+ 员工端输入提示。
+
+
+
+
+ 动态字段填写要求,配置公司或岗位需要展示及校验的字段。
+
+
+
+
+ 所属入职业务公司 Id。
+
+
+
+
+ 所属岗位 Id;为空时表示适用于公司下全部岗位。
+
+
+
+
+ 动态字段定义 Id。
+
+
+
+
+ 候选人是否必须填写该动态字段。
+
+
+
+
+ 显示排序码。
+
+
+
+
+ 入职材料要求,配置公司或岗位需要候选人上传的材料。
+
+
+
+
+ 所属入职业务公司 Id。
+
+
+
+
+ 所属岗位 Id;为空时表示适用于公司下全部岗位。
+
+
+
+
+ 材料类型 Id。
+
+
+
+
+ 候选人是否必须上传该类材料。
+
+
+
+
+ 显示排序码。
+
+
+
+
+ 入职材料类型,定义允许上传的文件类型、数量和大小。
+
+
+
+
+ 材料类型业务编码。
+
+
+
+
+ 材料显示名称。
+
+
+
+
+ 允许上传的文件扩展名,多个值使用逗号分隔。
+
+
+
+
+ 单个任务允许上传的最大文件数量。
+
+
+
+
+ 单个文件最大大小,单位为 MB。
+
+
+
+
+ 新员工入职任务,承载候选人填写、审核、转正式员工和归档全过程。
+
+
+
+
+ 入职任务编号。
+
+
+
+
+ 审核通过后生成的正式员工 Id。
+
+
+
+
+ 所属入职业务公司 Id。
+
+
+
+
+ 入职任务所属岗位 Id。
+
+
+
+
+ 创建任务时指定的审核人用户 Id。
+
+
+
+
+ 入职任务当前状态。
+
+
+
+
+ 员工填写链接业务过期时间。
+
+
+
+
+ 候选人累计提交轮次。
+
+
+
+
+ 候选人最近一次提交时间。
+
+
+
+
+ 审核或流程操作发生时间。
+
+
+
+
+ 任务归档时间。
+
+
+
+
+ 最近一次审核退回原因。
+
+
+
+
+ 业务备注。
+
+
+
+
+ 入职业务岗位档案,保存岗位默认合同期限、试用期及业务参数。
+
+
+
+
+ 所属入职业务公司 Id。
+
+
+
+
+ 岗位业务编码。
+
+
+
+
+ 岗位名称。
+
+
+
+
+ 默认合同期限,单位为年。
+
+
+
+
+ 默认试用期,单位为月。
+
+
+
+
+ 岗位默认合同参数 JSON。
+
+
+
+
+ 业务备注。
+
+
+
+
+ 入职任务提交与审核记录,按轮次保留意见及数据快照。
+
+
+
+
+ 所属入职任务 Id。
+
+
+
+
+ 审核轮次,与任务提交次数对应。
+
+
+
+
+ 审核或流程动作。
+
+
+
+
+ 审核操作人用户 Id;员工提交时可为空。
+
+
+
+
+ 审核意见或流程说明。
+
+
+
+
+ 本轮提交或审核时的数据快照 JSON。
+
+
+
+
+ 审核或流程操作发生时间。
+
+
+
+
+ 入职任务合同实例,锁定模板版本并记录生成、阅读和签署状态。
+
+
+
+
+ 所属入职任务 Id。
+
+
+
+
+ 合同模板主档案 Id。
+
+
+
+
+ 合同模板版本 Id。
+
+
+
+
+ 任务创建时冻结的合同名称。
+
+
+
+
+ 合同类型。
+
+
+
+
+ 是否为候选人必须阅读确认的合同。
+
+
+
+
+ 任务合同当前状态。
+
+
+
+
+ 生成后的 DOCX 文件 Id。
+
+
+
+
+ 归档或打印使用的 PDF 文件 Id。
+
+
+
+
+ 合同文件生成时间。
+
+
+
+
+ 候选人首次阅读时间。
+
+
+
+
+ 候选人确认阅读时间。
+
+
+
+
+ 线下签署完成时间。
+
+
+
+
+ 合同打印时间。
+
+
+
+
+ 任务合同变量最终值快照,合同生成后不再读取模板实时值。
+
+
+
+
+ 所属任务合同 Id。
+
+
+
+
+ DOCX 中使用的变量编码。
+
+
+
+
+ 变量显示名称。
+
+
+
+
+ 变量来源类型,例如员工、公司、合同或系统。
+
+
+
+
+ 变量数据类型。
+
+
+
+
+ 合同生成时使用的最终变量值。
+
+
+
+
+ 最终值来源类型。
+
+
+
+
+ 是否由人事手工覆盖自动值。
+
+
+
+
+ 候选人在入职任务中提交的固定人员基础信息。
+
+
+
+
+ 所属入职任务 Id。
+
+
+
+
+ 员工编号。
+
+
+
+
+ 内部人员编号。
+
+
+
+
+ 员工姓名。
+
+
+
+
+ 所属部门名称。
+
+
+
+
+ 性别。
+
+
+
+
+ 手机号码。
+
+
+
+
+ 身份证号码。
+
+
+
+
+ 毕业院校。
+
+
+
+
+ 最高学历。
+
+
+
+
+ 所学专业。
+
+
+
+
+ 出生日期。
+
+
+
+
+ 户籍所在地。
+
+
+
+
+ 民族。
+
+
+
+
+ 现居住或联系地址。
+
+
+
+
+ 入职日期。
+
+
+
+
+ 合同开始日期。
+
+
+
+
+ 合同结束日期。
+
+
+
+
+ 试用期开始日期。
+
+
+
+
+ 试用期结束日期。
+
+
+
+
+ 转正日期。
+
+
+
+
+ 社保缴纳公司。
+
+
+
+
+ 合同性质。
+
+
+
+
+ 工资银行卡号。
+
+
+
+
+ 银行卡开户名。
+
+
+
+
+ 开户银行名称。
+
+
+
+
+ 业务备注。
+
+
+
+
+ 候选人动态字段填写值,保留字段快照及提交轮次。
+
+
+
+
+ 所属入职任务 Id。
+
+
+
+
+ 动态字段定义 Id。
+
+
+
+
+ 动态字段业务编码。
+
+
+
+
+ 动态字段显示名称。
+
+
+
+
+ 候选人填写的字段值。
+
+
+
+
+ 该数据所属的提交轮次。
+
+
+
+
+ 新员工专属填写链接,仅保存 Token 哈希及链接生命周期信息。
+
+
+
+
+ 所属入职任务 Id。
+
+
+
+
+ 访问 Token 的 SHA-256 哈希,不保存明文 Token。
+
+
+
+
+ 填写链接当前状态。
+
+
+
+
+ 链接过期时间。
+
+
+
+
+ 链接最近访问时间。
+
+
+
+
+ 链接累计访问次数。
+
+
+
+
+ 链接撤销时间。
+
+
+
+
+ 候选人上传的入职材料,记录文件、提交轮次及审核状态。
+
+
+
+
+ 所属入职任务 Id。
+
+
+
+
+ 材料类型 Id。
+
+
+
+
+ 材料显示名称。
+
+
+
+
+ 系统文件 Id。
+
+
+
+
+ 该数据所属的提交轮次。
+
+
+
+
+ 材料上传时间。
+
+
+
+
+ 材料审核状态。
+
+
+
+
+ 材料审核意见。
+
+
+
+
+ 入职任务操作日志,用于追踪关键状态变化及操作人。
+
+
+
+
+ 所属入职任务 Id。
+
+
+
+
+ 操作人类型,例如员工、人事或系统。
+
+
+
+
+ 后台操作人用户 Id。
+
+
+
+
+ 操作类型。
+
+
+
+
+ 操作说明。
+
+
+
+
+ 本次变更的数据 JSON。
+
+
+
+
+ 操作来源 IP 地址。
+
+
+
+
+ 操作发生时间。
+
+
+
+
+ 合同模板变量定义,描述 DOCX 占位符、来源类型及填写规则。
+
+
+
+
+ 合同模板版本 Id。
+
+
+
+
+ DOCX 中使用的变量编码。
+
+
+
+
+ 变量显示名称。
+
+
+
+
+ 变量来源类型,例如员工、公司、合同或系统。
+
+
+
+
+ 变量数据类型。
+
+
+
+
+ 变量关联的候选人基础信息字段。
+
+
+
+
+ 变量默认值。
+
+
+
+
+ 选择型字段或变量的可选项 JSON。
+
+
+
+
+ 变量格式化规则。
+
+
+
+
+ 是否必填、必传或必签。
+
+
+
+
+ 人事是否可在创建任务后手工填写或调整。
+
+
+
+
+ 显示排序码。
+
+
+
+
+ 业务备注。
+
+
入职任务状态。
+
+
+ 草稿,任务尚未生成员工填写链接。
+
+
+
+
+ 待填写,候选人可以通过有效链接编辑资料。
+
+
+
+
+ 审核中,候选人已提交且资料暂时锁定。
+
+
+
+
+ 已退回,候选人可根据意见补充后再次提交。
+
+
+
+
+ 已通过,系统已经生成正式员工档案。
+
+
+
+
+ 已归档,任务流程结束且历史数据只读。
+
+
+
+
+ 已过期,任务或链接超过有效期。
+
+
+
+
+ 已撤销,任务或链接被人事主动终止。
+
+
入职链接状态。
+
+
+ 有效,链接可以正常访问。
+
+
+
+
+ 已过期,任务或链接超过有效期。
+
+
+
+
+ 已撤销,任务或链接被人事主动终止。
+
+
+
+
+ 已替换,旧链接已由新链接取代。
+
+
合同模板版本状态。
+
+
+ 草稿,任务尚未生成员工填写链接。
+
+
+
+
+ 已启用,可用于创建新的入职任务。
+
+
+
+
+ 已停用,不再用于新任务。
+
+
入职任务合同状态。
+
+
+ 待生成,任务合同尚未生成文件。
+
+
+
+
+ 待确认,合同已生成并等待候选人阅读确认。
+
+
+
+
+ 已确认,候选人已完成阅读确认。
+
+
+
+
+ 待线下签署,首版暂不接入第三方电子签。
+
+
+
+
+ 已归档,任务流程结束且历史数据只读。
+
+
合同变量类型。
+
+
+ 值来源于候选人或正式员工信息。
+
+
+
+
+ 值来源于公司档案。
+
+
+
+
+ 值来源于合同业务参数。
+
+
+
+
+ 值由系统自动生成。
+
+
合同变量最终值来源。
+
+
+ 值来源于候选人或正式员工信息。
+
+
+
+
+ 值来源于公司档案。
+
+
+
+
+ 值由人事手工录入。
+
+
+
+
+ 值由系统自动生成。
+
+
入职资料审核状态。
+
+
+ 待审核。
+
+
+
+
+ 审核通过。
+
+
+
+
+ 需要补充或重新上传。
+
+
入职审核动作。
+
+
+ 候选人提交入职资料。
+
+
+
+
+ 人事审核通过。
+
+
+
+
+ 人事退回补充。
+
+
+
+
+ 人事撤销任务。
+
+
+
+
+ 人事归档任务。
+
+
系统配置
+
+
+ 入职审核、退回、撤销或归档操作参数。
+
+
+
+
+ 入职任务 Id。
+
+
+
+
+ 审核意见或流程操作说明。
+
+
+
+
+ 定义入职审核业务能力。
+
+
+
+
+ 审核通过入职任务,并在同一事务中创建正式员工档案。
+
+
+
+
+ 退回入职任务,保存审核意见并允许候选人补充资料。
+
+
+
+
+ 实现入职审核业务能力。
+
+
+
+
+ 审核通过入职任务,并在同一事务中创建正式员工档案。
+
+
+
+
+ 退回入职任务,保存审核意见并允许候选人补充资料。
+
+
+
+
+ 入职业务公司分页查询参数。
+
+
+
+
+ 公司名称。
+
+
+
+
+ 启用状态或状态筛选条件。
+
+
+
+
+ 新增入职业务公司参数。
+
+
+
+
+ 公司业务编码。
+
+
+
+
+ 公司名称。
+
+
+
+
+ 合同甲方完整法定名称。
+
+
+
+
+ 编辑入职业务公司参数。
+
+
+
+
+ 业务数据 Id。
+
+
+
+
+ 定义入职业务公司业务能力。
+
+
+
+
+ 分页查询入职业务公司。
+
+
+
+
+ 查询全部已启用的入职业务公司。
+
+
+
+
+ 查询公司详情。
+
+
+
+
+ 新增入职业务公司。
+
+
+
+
+ 编辑入职业务公司。
+
+
+
+
+ 删除未被岗位、任务或员工引用的公司。
+
+
+
+
+ 实现入职业务公司业务能力。
+
+
+
+
+ 分页查询入职业务公司。
+
+
+
+
+ 查询全部已启用的入职业务公司。
+
+
+
+
+ 查询公司详情。
+
+
+
+
+ 新增入职业务公司。
+
+
+
+
+ 编辑入职业务公司。
+
+
+
+
+ 删除未被岗位、任务或员工引用的公司。
+
+
+
+
+ 生成任务合同文件参数。
+
+
+
+
+ 任务合同 Id。
+
+
+
+
+ 定义入职合同文件生成能力。
+
+
+
+
+ 根据已审核通过的任务合同生成并保存 DOCX 文件。
+
+
+
+
+ 实现入职合同文件生成业务能力。
+
+
+
+
+ 根据已锁定的模板版本和变量快照生成任务合同 DOCX 文件。
+
+
+
+
+ 定义任务合同变量快照业务能力。
+
+
根据任务、公司与候选人资料刷新自动变量;人事已手工填写的变量不会被覆盖。
+
+ 根据任务、公司和候选人资料构建或刷新合同变量快照。
+
冻结任务合同变量;DOCX 生成阶段只读取本快照,不再读取模板实时值。
+
+ 实现任务合同变量快照业务能力。
+
+
+
+
+ 根据任务、公司和候选人资料构建或刷新合同变量快照。
+
+
+
+
+ 合同适用范围分页查询参数。
+
+
+
+
+ 入职业务公司 Id。
+
+
+
+
+ 岗位 Id;为空时表示公司级配置。
+
+
+
+
+ 合同模板 Id。
+
+
+
+
+ 新增合同适用范围参数。
+
+
+
+
+ 入职业务公司 Id。
+
+
+
+
+ 岗位 Id;为空时表示公司级配置。
+
+
+
+
+ 合同模板 Id。
+
+
+
+
+ 合同模板版本 Id。
+
+
+
+
+ 是否必填、必传或必签。
+
+
+
+
+ 显示排序码。
+
+
+
+
+ 编辑合同适用范围参数。
+
+
+
+
+ 业务数据 Id。
+
+
+
+
+ 合同模板分页查询参数。
+
+
+
+
+ 合同模板名称。
+
+
+
+
+ 合同类型。
+
+
+
+
+ 启用状态或状态筛选条件。
+
+
+
+
+ 新增合同模板参数。
+
+
+
+
+ 合同模板业务编码。
+
+
+
+
+ 合同模板名称。
+
+
+
+
+ 合同类型。
+
+
+
+
+ 业务说明。
+
+
+
+
+ 启用状态或状态筛选条件。
+
+
+
+
+ 编辑合同模板参数。
+
+
+
+
+ 业务数据 Id。
+
+
+
+
+ 合同模板版本分页查询参数。
+
+
+
+
+ 合同模板 Id。
+
+
+
+
+ 模板版本状态。
+
+
+
+
+ 新增合同模板版本参数。
+
+
+
+
+ 合同模板 Id。
+
+
+
+
+ 模板版本号。
+
+
+
+
+ 模板 DOCX 源文件 Id。
+
+
+
+
+ 源文件内容哈希。
+
+
+
+
+ 生效日期。
+
+
+
+
+ 失效日期。
+
+
+
+
+ 业务备注。
+
+
+
+
+ 设置合同模板版本状态参数。
+
+
+
+
+ 业务数据 Id。
+
+
+
+
+ 模板版本状态。
+
+
+
+
+ 模板变量分页查询参数。
+
+
+
+
+ 合同模板版本 Id。
+
+
+
+
+ 新增模板变量参数。
+
+
+
+
+ 合同模板版本 Id。
+
+
+
+
+ 合同变量编码。
+
+
+
+
+ 合同变量名称。
+
+
+
+
+ 合同变量来源类型。
+
+
+
+
+ 字段或变量数据类型。
+
+
+
+
+ 关联的候选人基础信息字段。
+
+
+
+
+ 默认值。
+
+
+
+
+ 可选项 JSON。
+
+
+
+
+ 格式化规则。
+
+
+
+
+ 是否必填、必传或必签。
+
+
+
+
+ 人事是否可以编辑。
+
+
+
+
+ 显示排序码。
+
+
+
+
+ 业务备注。
+
+
+
+
+ 编辑模板变量参数。
+
+
+
+
+ 业务数据 Id。
+
+
+
+
+ 定义合同模板、版本、变量和适用范围业务能力。
+
+
+
+
+ 分页查询合同模板主档案。
+
+
+
+
+ 查询合同模板详情。
+
+
+
+
+ 新增合同模板主档案。
+
+
+
+
+ 编辑合同模板主档案。
+
+
+
+
+ 删除未被版本、适用范围或任务合同引用的模板。
+
+
+
+
+ 分页查询指定合同模板的版本。
+
+
+
+
+ 新增合同模板 DOCX 版本。
+
+
+
+
+ 启用或停用合同模板版本。
+
+
+
+
+ 分页查询指定模板版本的变量定义。
+
+
+
+
+ 为草稿模板版本新增变量。
+
+
+
+
+ 编辑草稿模板版本中的变量。
+
+
+
+
+ 删除草稿模板版本中的变量。
+
+
+
+
+ 新增公司或岗位的合同适用范围。
+
+
+
+
+ 编辑合同适用范围。
+
+
+
+
+ 删除合同适用范围。
+
合同模板主档案;具体 DOCX 文件、变量与适用范围均挂在此档案下。
+
+
+ 分页查询合同模板主档案。
+
+
+
+
+ 查询合同模板详情。
+
+
+
+
+ 新增合同模板主档案。
+
+
+
+
+ 编辑合同模板主档案。
+
+
+
+
+ 删除未被版本、适用范围或任务合同引用的模板。
+
+
+
+
+ 分页查询指定合同模板的版本。
+
+
+
+
+ 新增合同模板 DOCX 版本。
+
+
+
+
+ 启用或停用合同模板版本。
+
+
+
+
+ 分页查询指定模板版本的变量定义。
+
+
+
+
+ 为草稿模板版本新增变量。
+
+
+
+
+ 编辑草稿模板版本中的变量。
+
+
+
+
+ 删除草稿模板版本中的变量。
+
+
+
+
+ 分页查询合同适用范围。
+
+
+
+
+ 新增公司或岗位的合同适用范围。
+
+
+
+
+ 编辑合同适用范围。
+
+
+
+
+ 删除合同适用范围。
+
+
+
+
+ 正式员工档案分页查询参数。
+
+
+
+
+ 员工姓名。
+
+
+
+
+ 手机号码。
+
+
+
+
+ 入职业务公司 Id。
+
+
+
+
+ 岗位 Id;为空时表示公司级配置。
+
+
+
+
+ 正式员工档案详情输出。
+
+
+
+
+ 正式员工档案。
+
+
+
+
+ 入职任务主数据。
+
+
+
+
+ 任务合同列表。
+
+
+
+
+ 提交与审核记录列表。
+
+
+
+
+ 定义正式员工档案查询业务能力。
+
+
+
+
+ 分页查询审核通过后生成的正式员工档案。
+
+
+
+
+ 查询正式员工及其来源任务、合同和审核记录。
+
+
仅展示审核通过后创建的正式员工档案;入职资料的来源任务可追溯。
+
+ 实现正式员工档案查询业务能力。
+
+
+
+
+ 分页查询审核通过后生成的正式员工档案。
+
+
+
+
+ 查询正式员工及其来源任务、合同和审核记录。
+
+
+
+
+ 保存动态入职字段参数。
+
+
+
+
+ 业务数据 Id。
+
+
+
+
+ 动态字段编码。
+
+
+
+
+ 动态字段名称。
+
+
+
+
+ 字段或变量数据类型。
+
+
+
+
+ 可选项 JSON。
+
+
+
+
+ 字段校验规则。
+
+
+
+
+ 员工端输入提示。
+
+
+
+
+ 启用状态或状态筛选条件。
+
+
+
+
+ 保存入职材料类型参数。
+
+
+
+
+ 业务数据 Id。
+
+
+
+
+ 材料类型编码。
+
+
+
+
+ 材料名称。
+
+
+
+
+ 允许上传的文件扩展名。
+
+
+
+
+ 允许上传的最大文件数量。
+
+
+
+
+ 单个文件最大大小,单位为 MB。
+
+
+
+
+ 启用状态或状态筛选条件。
+
+
+
+
+ 保存公司岗位动态字段要求参数。
+
+
+
+
+ 业务数据 Id。
+
+
+
+
+ 入职业务公司 Id。
+
+
+
+
+ 岗位 Id;为空时表示公司级配置。
+
+
+
+
+ 动态字段 Id。
+
+
+
+
+ 是否必填、必传或必签。
+
+
+
+
+ 显示排序码。
+
+
+
+
+ 保存公司岗位材料要求参数。
+
+
+
+
+ 业务数据 Id。
+
+
+
+
+ 入职业务公司 Id。
+
+
+
+
+ 岗位 Id;为空时表示公司级配置。
+
+
+
+
+ 材料类型 Id。
+
+
+
+
+ 是否必填、必传或必签。
+
+
+
+
+ 显示排序码。
+
+
+
+
+ 定义动态字段、材料类型及公司岗位要求配置业务能力。
+
+
+
+
+ 查询全部动态入职字段。
+
+
+
+
+ 新增或编辑动态入职字段。
+
+
+
+
+ 删除未被填写要求引用的动态字段。
+
+
+
+
+ 查询全部入职材料类型。
+
+
+
+
+ 新增或编辑入职材料类型。
+
+
+
+
+ 删除未被要求或上传记录引用的材料类型。
+
+
+
+
+ 查询指定公司的动态字段填写要求。
+
+
+
+
+ 新增或编辑公司岗位动态字段要求。
+
+
+
+
+ 删除动态字段填写要求。
+
+
+
+
+ 查询指定公司的材料上传要求。
+
+
+
+
+ 新增或编辑公司岗位材料要求。
+
+
+
+
+ 删除材料上传要求。
+
维护员工端动态字段、材料类型及公司岗位要求。
+
+
+ 查询全部动态入职字段。
+
+
+
+
+ 新增或编辑动态入职字段。
+
+
+
+
+ 删除未被填写要求引用的动态字段。
+
+
+
+
+ 查询全部入职材料类型。
+
+
+
+
+ 新增或编辑入职材料类型。
+
+
+
+
+ 删除未被要求或上传记录引用的材料类型。
+
+
+
+
+ 查询指定公司的动态字段填写要求。
+
+
+
+
+ 新增或编辑公司岗位动态字段要求。
+
+
+
+
+ 删除动态字段填写要求。
+
+
+
+
+ 查询指定公司的材料上传要求。
+
+
+
+
+ 新增或编辑公司岗位材料要求。
+
+
+
+
+ 删除材料上传要求。
+
+
+
+
+ 定义入职任务撤销和归档能力。
+
+
+
+
+ 归档已经审核通过的入职任务。
+
+
+
+
+ 撤销尚未归档的入职任务并使员工链接失效。
+
+
+
+
+ 实现入职任务生命周期业务能力。
+
+
+
+
+ 归档已审核通过的入职任务。
+
+
+
+
+ 撤销入职任务并同步撤销仍然有效的员工填写链接。
+
+
+
+
+ 审核候选人上传材料参数。
+
+
+
+
+ 任务材料记录 Id。
+
+
+
+
+ 材料审核状态。
+
+
+
+
+ 材料审核意见。
+
+
+
+
+ 定义候选人上传材料的审核能力。
+
+
+
+
+ 审核单份候选人上传材料。
+
+
+
+
+ 实现候选人上传材料审核业务能力。
+
+
+
+
+ 审核单份候选人上传材料并记录审核意见。
+
+
+
+
+ 入职业务岗位分页查询参数。
+
+
+
+
+ 入职业务公司 Id。
+
+
+
+
+ 岗位名称。
+
+
+
+
+ 启用状态或状态筛选条件。
+
+
+
+
+ 新增入职业务岗位参数。
+
+
+
+
+ 岗位业务编码。
+
+
+
+
+ 岗位名称。
+
+
+
+
+ 编辑入职业务岗位参数。
+
+
+
+
+ 业务数据 Id。
+
+
+
+
+ 定义入职业务岗位业务能力。
+
+
+
+
+ 分页查询入职业务岗位。
+
+
+
+
+ 查询指定公司下全部已启用岗位。
+
+
+
+
+ 查询岗位详情。
+
+
+
+
+ 新增入职业务岗位。
+
+
+
+
+ 编辑入职业务岗位。
+
+
+
+
+ 删除未被任务或正式员工引用的岗位。
+
+
+
+
+ 实现入职业务岗位业务能力。
+
+
+
+
+ 分页查询入职业务岗位。
+
+
+
+
+ 查询指定公司下全部已启用岗位。
+
+
+
+
+ 查询岗位详情。
+
+
+
+
+ 新增入职业务岗位。
+
+
+
+
+ 编辑入职业务岗位。
+
+
+
+
+ 删除未被任务或正式员工引用的岗位。
+
+
+
+
+ 员工端材料上传前校验参数。
+
+
+
+
+ 员工填写链接中的明文 Token。
+
+
+
+
+ 材料类型 Id。
+
+
+
+
+ 待上传文件名称。
+
+
+
+
+ 待上传文件大小,单位为字节。
+
+
+
+
+ 单个动态字段填写值。
+
+
+
+
+ 动态字段 Id。
+
+
+
+
+ 动态字段填写值。
+
+
+
+
+ 批量保存员工动态字段参数。
+
+
+
+
+ 员工填写链接中的明文 Token。
+
+
+
+
+ 待保存的字段或变量值集合。
+
+
+
+
+ 保存员工已上传材料参数。
+
+
+
+
+ 员工填写链接中的明文 Token。
+
+
+
+
+ 材料类型 Id。
+
+
+
+
+ 系统文件 Id。
+
+
+
+
+ 员工确认阅读合同参数。
+
+
+
+
+ 员工填写链接中的明文 Token。
+
+
+
+
+ 任务合同 Id。
+
+
+
+
+ 员工提交入职资料参数。
+
+
+
+
+ 员工填写链接中的明文 Token。
+
+
+
+
+ 定义员工端入职资料提交业务能力。
+
+
+
+
+ 保存候选人填写的动态字段值。
+
+
+
+
+ 关联候选人已经上传的系统文件与材料类型。
+
+
+
+
+ 记录候选人已阅读并确认指定任务合同。
+
+
+
+
+ 校验全部必填资料后提交入职任务进入审核。
+
+
+
+
+ 在保存文件前校验材料适用范围、扩展名、大小和数量。
+
+
+
+
+ 实现员工端入职资料提交业务能力。
+
+
+
+
+ 保存候选人填写的动态字段值。
+
+
+
+
+ 关联候选人已经上传的系统文件与材料类型。
+
+
+
+
+ 记录候选人已阅读并确认指定任务合同。
+
+
+
+
+ 校验全部必填资料后提交入职任务进入审核。
+
+
+
+
+ 在保存文件前校验材料适用范围、扩展名、大小和数量。
+
+
+
+
+ 定义员工端入职任务访问业务能力。
+
+
+
+
+ 通过有效 Token 获取员工端任务、字段、材料和合同信息。
+
+
+
+
+ 保存候选人固定基础信息并刷新合同变量快照。
+
+
+
+
+ 校验任务归属后返回合同模板源文件 Id。
+
+
员工手机端入口;仅凭一次性任务链接访问,绝不创建正式员工。
+
+
+ 通过有效 Token 获取员工端任务、字段、材料和合同信息。
+
+
+
+
+ 保存候选人固定基础信息并刷新合同变量快照。
+
+
+
+
+ 校验任务归属后返回合同模板源文件 Id。
+
+
+
+
+ 查询任务合同变量参数。
+
+
+
+
+ 入职任务 Id。
+
+
+
+
+ 批量保存任务合同变量参数。
+
+
+
+
+ 任务合同 Id。
+
+
+
+
+ 待保存的字段或变量值集合。
+
+
+
+
+ 单个任务合同变量保存值。
+
+
+
+
+ 业务数据 Id。
+
+
+
+
+ 任务合同变量最终值。
+
+
+
+
+ 单份任务合同及其变量输出。
+
+
+
+
+ 任务合同 Id。
+
+
+
+
+ 任务合同名称。
+
+
+
+
+ 合同类型。
+
+
+
+
+ 任务合同变量列表。
+
+
+
+
+ 单个任务合同变量输出。
+
+
+
+
+ 业务数据 Id。
+
+
+
+
+ 合同变量编码。
+
+
+
+
+ 合同变量名称。
+
+
+
+
+ 合同变量来源类型。
+
+
+
+
+ 字段或变量数据类型。
+
+
+
+
+ 任务合同变量最终值。
+
+
+
+
+ 是否必填、必传或必签。
+
+
+
+
+ 人事是否可以编辑。
+
+
+
+
+ 当前用户是否可以编辑该变量。
+
+
+
+
+ 定义任务合同变量维护业务能力。
+
+
+
+
+ 查询任务下全部合同及其变量当前值。
+
+
+
+
+ 保存允许人事编辑的任务合同变量值。
+
+
管理端在链接发送前填写合同薪资、补贴等人事变量。
+
+
+ 查询任务下全部合同及其变量当前值。
+
+
+
+
+ 保存允许人事编辑的任务合同变量值。
+
+
+
+
+ 入职任务分页查询参数。
+
+
+
+
+ 入职任务编号。
+
+
+
+
+ 入职任务状态筛选条件。
+
+
+
+
+ 入职业务公司 Id。
+
+
+
+
+ 后台入职任务详情输出。
+
+
+
+
+ 入职任务主数据。
+
+
+
+
+ 候选人固定基础信息。
+
+
+
+
+ 任务合同列表。
+
+
+
+
+ 候选人已上传材料列表。
+
+
+
+
+ 候选人动态字段值列表。
+
+
+
+
+ 任务当前有效链接信息。
+
+
+
+
+ 提交与审核记录列表。
+
+
+
+
+ 定义入职任务查询业务能力。
+
+
+
+
+ 分页查询后台入职任务。
+
+
+
+
+ 查询任务基础信息、人员资料、合同、材料、表单值、链接和审核记录。
+
+
+
+
+ 实现入职任务查询业务能力。
+
+
+
+
+ 分页查询后台入职任务。
+
+
+
+
+ 查询任务基础信息、人员资料、合同、材料、表单值、链接和审核记录。
+
+
+
+
+ 创建新员工入职任务参数。
+
+
+
+
+ 入职业务公司 Id。
+
+
+
+
+ 入职任务所属岗位 Id。
+
+
+
+
+ 创建任务时指定的审核人用户 Id。
+
+
+
+
+ 链接过期时间;实际有效期由系统配置计算。
+
+
+
+
+ 业务备注。
+
+
+
+
+ 入职任务创建结果。
+
+
+
+
+ 入职任务 Id。
+
+
+
+
+ 入职任务编号。
+
+
+
+
+ 新生成的员工填写链接 Token,仅在创建结果中返回。
+
+
+
+
+ 员工填写链接过期时间。
+
+
+
+
+ 员工端通过 Token 访问任务参数。
+
+
+
+
+ 员工填写链接中的明文 Token。
+
+
+
+
+ 员工端获取合同源文件参数。
+
+
+
+
+ 员工填写链接中的明文 Token。
+
+
+
+
+ 任务合同 Id。
+
+
+
+
+ 员工端保存固定基础信息参数。
+
+
+
+
+ 员工填写链接中的明文 Token。
+
+
+
+
+ 员工姓名。
+
+
+
+
+ 手机号码。
+
+
+
+
+ 身份证号码。
+
+
+
+
+ 员工端动态字段展示信息。
+
+
+
+
+ 动态字段 Id。
+
+
+
+
+ 动态字段编码。
+
+
+
+
+ 动态字段名称。
+
+
+
+
+ 字段或变量数据类型。
+
+
+
+
+ 可选项 JSON。
+
+
+
+
+ 是否必填、必传或必签。
+
+
+
+
+ 员工端材料上传要求。
+
+
+
+
+ 材料类型 Id。
+
+
+
+
+ 材料名称。
+
+
+
+
+ 允许上传的文件扩展名。
+
+
+
+
+ 允许上传的最大文件数量。
+
+
+
+
+ 是否必填、必传或必签。
+
+
+
+
+ 员工端入职任务完整详情。
+
+
+
+
+ 入职任务主数据。
+
+
+
+
+ 候选人固定基础信息。
+
+
+
+
+ 任务合同列表。
+
+
+
+
+ 候选人已保存的动态字段值。
+
+
+
+
+ 员工端需要展示的动态字段。
+
+
+
+
+ 员工端需要展示的材料要求。
+
+
+
+
+ 候选人已上传材料列表。
+
+
+
+
+ 定义入职任务创建业务能力。
+
+
+
+
+ 校验公司、岗位和合同范围后创建入职任务、链接及任务合同。
+
+
+
+
+ 实现入职任务创建业务能力。
+
+
+
+
+ 校验公司、岗位和合同范围后创建入职任务、链接及任务合同。
+
+
机构服务
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingAuditController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingAuditController.cs
index 773269c..004ba88 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingAuditController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingAuditController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供入职审核相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "入职审核")]
[Route("biz/onboarding/audit")]
[RolePermission]
@@ -12,15 +15,21 @@ public class OnboardingAuditController
_service = service;
}
+ ///
+ /// 审核通过任务并创建正式员工档案。
+ ///
[HttpPost("approve")]
public async Task Approve([FromBody] OnboardingAuditActionInput input)
{
await _service.Approve(input);
}
+ ///
+ /// 退回任务并要求候选人补充资料。
+ ///
[HttpPost("reject")]
public async Task Reject([FromBody] OnboardingAuditActionInput input)
{
await _service.Reject(input);
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingCompanyController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingCompanyController.cs
index 56e707c..da2b7da 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingCompanyController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingCompanyController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供入职业务公司相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "入职公司管理")]
[Route("biz/onboarding/company")]
[RolePermission]
@@ -12,39 +15,57 @@ public class OnboardingCompanyController
_service = service;
}
+ ///
+ /// 分页查询入职业务公司。
+ ///
[HttpGet("page")]
public async Task Page([FromQuery] OnboardingCompanyPageInput input)
{
return await _service.Page(input);
}
+ ///
+ /// 查询已启用公司列表。
+ ///
[HttpGet("list-enabled")]
public async Task ListEnabled()
{
return await _service.ListEnabled();
}
+ ///
+ /// 查询公司详情。
+ ///
[HttpGet("detail")]
public async Task Detail([FromQuery] BaseIdInput input)
{
return await _service.Detail(input);
}
+ ///
+ /// 新增入职业务公司。
+ ///
[HttpPost("add")]
public async Task Add([FromBody] OnboardingCompanyAddInput input)
{
await _service.Add(input);
}
+ ///
+ /// 编辑入职业务公司。
+ ///
[HttpPost("edit")]
public async Task Edit([FromBody] OnboardingCompanyEditInput input)
{
await _service.Edit(input);
}
+ ///
+ /// 删除入职业务公司。
+ ///
[HttpPost("delete")]
public async Task Delete([FromBody] BaseIdListInput input)
{
await _service.Delete(input);
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingContractDocumentController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingContractDocumentController.cs
index 0ddbcea..d17dbc0 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingContractDocumentController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingContractDocumentController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供入职合同文件生成相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "入职合同文件")]
[Route("biz/onboarding/contract-document")]
[RolePermission]
@@ -22,4 +25,4 @@ public class OnboardingContractDocumentController
{
return await _service.Generate(input);
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingContractTemplateController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingContractTemplateController.cs
index 922c843..640b06b 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingContractTemplateController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingContractTemplateController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供合同模板、版本、变量和适用范围相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "入职合同模板")]
[Route("biz/onboarding/contract-template")]
[RolePermission]
@@ -12,99 +15,147 @@ public class OnboardingContractTemplateController
_service = service;
}
+ ///
+ /// 分页查询合同模板。
+ ///
[HttpGet("page")]
public async Task Page([FromQuery] OnboardingContractTemplatePageInput input)
{
return await _service.Page(input);
}
+ ///
+ /// 查询合同模板详情。
+ ///
[HttpGet("detail")]
public async Task Detail([FromQuery] BaseIdInput input)
{
return await _service.Detail(input);
}
+ ///
+ /// 新增合同模板。
+ ///
[HttpPost("add")]
public async Task Add([FromBody] OnboardingContractTemplateAddInput input)
{
await _service.Add(input);
}
+ ///
+ /// 编辑合同模板。
+ ///
[HttpPost("edit")]
public async Task Edit([FromBody] OnboardingContractTemplateEditInput input)
{
await _service.Edit(input);
}
+ ///
+ /// 删除合同模板。
+ ///
[HttpPost("delete")]
public async Task Delete([FromBody] BaseIdListInput input)
{
await _service.Delete(input);
}
+ ///
+ /// 分页查询合同模板版本。
+ ///
[HttpGet("version/page")]
public async Task VersionPage([FromQuery] OnboardingContractVersionPageInput input)
{
return await _service.VersionPage(input);
}
+ ///
+ /// 新增合同模板版本。
+ ///
[HttpPost("version/add")]
public async Task AddVersion([FromBody] OnboardingContractVersionAddInput input)
{
await _service.AddVersion(input);
}
+ ///
+ /// 设置合同模板版本状态。
+ ///
[HttpPost("version/set-status")]
public async Task SetVersionStatus([FromBody] OnboardingContractVersionStatusInput input)
{
await _service.SetVersionStatus(input);
}
+ ///
+ /// 分页查询模板变量。
+ ///
[HttpGet("variable/page")]
public async Task VariablePage([FromQuery] OnboardingTemplateVariablePageInput input)
{
return await _service.VariablePage(input);
}
+ ///
+ /// 新增模板变量。
+ ///
[HttpPost("variable/add")]
public async Task AddVariable([FromBody] OnboardingTemplateVariableAddInput input)
{
await _service.AddVariable(input);
}
+ ///
+ /// 编辑模板变量。
+ ///
[HttpPost("variable/edit")]
public async Task EditVariable([FromBody] OnboardingTemplateVariableEditInput input)
{
await _service.EditVariable(input);
}
+ ///
+ /// 删除模板变量。
+ ///
[HttpPost("variable/delete")]
public async Task DeleteVariable([FromBody] BaseIdListInput input)
{
await _service.DeleteVariable(input);
}
+ ///
+ /// 分页查询合同适用范围。
+ ///
[HttpGet("scope/page")]
public async Task ScopePage([FromQuery] OnboardingContractScopePageInput input)
{
return await _service.ScopePage(input);
}
+ ///
+ /// 新增合同适用范围。
+ ///
[HttpPost("scope/add")]
public async Task AddScope([FromBody] OnboardingContractScopeAddInput input)
{
await _service.AddScope(input);
}
+ ///
+ /// 编辑合同适用范围。
+ ///
[HttpPost("scope/edit")]
public async Task EditScope([FromBody] OnboardingContractScopeEditInput input)
{
await _service.EditScope(input);
}
+ ///
+ /// 删除合同适用范围。
+ ///
[HttpPost("scope/delete")]
public async Task DeleteScope([FromBody] BaseIdListInput input)
{
await _service.DeleteScope(input);
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingEmployeeController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingEmployeeController.cs
index d4cca36..4261250 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingEmployeeController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingEmployeeController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供正式员工档案相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "入职正式员工档案")]
[Route("biz/onboarding/employee")]
[RolePermission]
@@ -12,15 +15,21 @@ public class OnboardingEmployeeController
_service = service;
}
+ ///
+ /// 分页查询正式员工档案。
+ ///
[HttpGet("page")]
public async Task Page([FromQuery] OnboardingEmployeePageInput input)
{
return await _service.Page(input);
}
+ ///
+ /// 查询正式员工详情及来源记录。
+ ///
[HttpGet("detail")]
public async Task Detail([FromQuery] BaseIdInput input)
{
return await _service.Detail(input);
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingEntryConfigController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingEntryConfigController.cs
index 7a86bdc..2a71aee 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingEntryConfigController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingEntryConfigController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供入职字段与材料要求配置相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "入职填写与材料配置")]
[Route("biz/onboarding/entry-config")]
[RolePermission]
@@ -12,75 +15,111 @@ public class OnboardingEntryConfigController
_service = service;
}
+ ///
+ /// 查询动态入职字段。
+ ///
[HttpGet("form-field/list")]
public async Task ListFormFields()
{
return await _service.ListFormFields();
}
+ ///
+ /// 保存动态入职字段。
+ ///
[HttpPost("form-field/save")]
public async Task SaveFormField([FromBody] OnboardingFormFieldSaveInput input)
{
await _service.SaveFormField(input);
}
+ ///
+ /// 删除动态入职字段。
+ ///
[HttpPost("form-field/delete")]
public async Task DeleteFormFields([FromBody] BaseIdListInput input)
{
await _service.DeleteFormFields(input);
}
+ ///
+ /// 查询入职材料类型。
+ ///
[HttpGet("material-type/list")]
public async Task ListMaterialTypes()
{
return await _service.ListMaterialTypes();
}
+ ///
+ /// 保存入职材料类型。
+ ///
[HttpPost("material-type/save")]
public async Task SaveMaterialType([FromBody] OnboardingMaterialTypeSaveInput input)
{
await _service.SaveMaterialType(input);
}
+ ///
+ /// 删除入职材料类型。
+ ///
[HttpPost("material-type/delete")]
public async Task DeleteMaterialTypes([FromBody] BaseIdListInput input)
{
await _service.DeleteMaterialTypes(input);
}
+ ///
+ /// 查询公司岗位动态字段要求。
+ ///
[HttpGet("form-requirement/list")]
public async Task ListFormRequirements([FromQuery] long companyId)
{
return await _service.ListFormRequirements(companyId);
}
+ ///
+ /// 保存公司岗位动态字段要求。
+ ///
[HttpPost("form-requirement/save")]
public async Task SaveFormRequirement([FromBody] OnboardingFormRequirementSaveInput input)
{
await _service.SaveFormRequirement(input);
}
+ ///
+ /// 删除动态字段要求。
+ ///
[HttpPost("form-requirement/delete")]
public async Task DeleteFormRequirements([FromBody] BaseIdListInput input)
{
await _service.DeleteFormRequirements(input);
}
+ ///
+ /// 查询公司岗位材料要求。
+ ///
[HttpGet("material-requirement/list")]
public async Task ListMaterialRequirements([FromQuery] long companyId)
{
return await _service.ListMaterialRequirements(companyId);
}
+ ///
+ /// 保存公司岗位材料要求。
+ ///
[HttpPost("material-requirement/save")]
public async Task SaveMaterialRequirement([FromBody] OnboardingMaterialRequirementSaveInput input)
{
await _service.SaveMaterialRequirement(input);
}
+ ///
+ /// 删除材料要求。
+ ///
[HttpPost("material-requirement/delete")]
public async Task DeleteMaterialRequirements([FromBody] BaseIdListInput input)
{
await _service.DeleteMaterialRequirements(input);
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingMaterialReviewController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingMaterialReviewController.cs
index 1753c30..4229e97 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingMaterialReviewController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingMaterialReviewController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供候选人材料审核相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "入职资料审核")]
[Route("biz/onboarding/material")]
[RolePermission]
@@ -12,9 +15,12 @@ public class OnboardingMaterialReviewController
_service = service;
}
+ ///
+ /// 审核候选人上传的材料。
+ ///
[HttpPost("review")]
public async Task Review([FromBody] OnboardingMaterialReviewInput input)
{
await _service.Review(input);
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingPositionController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingPositionController.cs
index 0d49894..b56bf75 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingPositionController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingPositionController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供入职业务岗位相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "入职岗位管理")]
[Route("biz/onboarding/position")]
[RolePermission]
@@ -12,39 +15,57 @@ public class OnboardingPositionController
_service = service;
}
+ ///
+ /// 分页查询入职业务岗位。
+ ///
[HttpGet("page")]
public async Task Page([FromQuery] OnboardingPositionPageInput input)
{
return await _service.Page(input);
}
+ ///
+ /// 查询指定公司的已启用岗位。
+ ///
[HttpGet("list-enabled")]
public async Task ListEnabled([FromQuery] long companyId)
{
return await _service.ListEnabled(companyId);
}
+ ///
+ /// 查询岗位详情。
+ ///
[HttpGet("detail")]
public async Task Detail([FromQuery] BaseIdInput input)
{
return await _service.Detail(input);
}
+ ///
+ /// 新增入职业务岗位。
+ ///
[HttpPost("add")]
public async Task Add([FromBody] OnboardingPositionAddInput input)
{
await _service.Add(input);
}
+ ///
+ /// 编辑入职业务岗位。
+ ///
[HttpPost("edit")]
public async Task Edit([FromBody] OnboardingPositionEditInput input)
{
await _service.Edit(input);
}
+ ///
+ /// 删除入职业务岗位。
+ ///
[HttpPost("delete")]
public async Task Delete([FromBody] BaseIdListInput input)
{
await _service.Delete(input);
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingPublicSubmissionController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingPublicSubmissionController.cs
index dd05155..7b8db3d 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingPublicSubmissionController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingPublicSubmissionController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供员工端资料提交相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "员工入职提交")]
[Route("open/onboarding")]
[AllowAnonymous]
@@ -14,30 +17,45 @@ public class OnboardingPublicSubmissionController
_fileService = fileService;
}
+ ///
+ /// 保存员工动态字段。
+ ///
[HttpPost("save-dynamic-values")]
public async Task SaveDynamicValues([FromBody] OnboardingSaveDynamicValuesInput input)
{
await _service.SaveDynamicValues(input);
}
+ ///
+ /// 保存员工已上传材料记录。
+ ///
[HttpPost("save-material")]
public async Task SaveMaterial([FromBody] OnboardingSaveMaterialInput input)
{
await _service.SaveMaterial(input);
}
+ ///
+ /// 确认已阅读指定合同。
+ ///
[HttpPost("confirm-contract")]
public async Task ConfirmContract([FromBody] OnboardingConfirmContractInput input)
{
await _service.ConfirmContract(input);
}
+ ///
+ /// 提交入职资料进入审核。
+ ///
[HttpPost("submit")]
public async Task Submit([FromBody] OnboardingSubmitInput input)
{
await _service.Submit(input);
}
+ ///
+ /// 校验并上传员工入职材料。
+ ///
[HttpPost("upload-material")]
[Consumes("multipart/form-data")]
[RequestSizeLimit(20 * 1024 * 1024)]
@@ -64,4 +82,4 @@ public class OnboardingPublicSubmissionController
FileId = fileId
});
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingPublicTaskController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingPublicTaskController.cs
index 595656d..0977df3 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingPublicTaskController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingPublicTaskController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供员工端入职任务访问相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "员工入职填写")]
[Route("open/onboarding")]
[AllowAnonymous]
@@ -14,22 +17,31 @@ public class OnboardingPublicTaskController
_fileService = fileService;
}
+ ///
+ /// 通过 Token 获取员工端入职任务详情。
+ ///
[HttpPost("detail")]
public async Task Detail([FromBody] OnboardingTaskPublicAccessInput input)
{
return await _service.Detail(input);
}
+ ///
+ /// 保存候选人固定基础信息。
+ ///
[HttpPost("save-employee-info")]
public async Task SaveEmployeeInfo([FromBody] OnboardingTaskPublicSaveInput input)
{
await _service.SaveEmployeeInfo(input);
}
+ ///
+ /// 下载当前任务锁定的合同模板源文件。
+ ///
[HttpGet("contract-source")]
public async Task ContractSource([FromQuery] OnboardingPublicContractSourceInput input)
{
var fileId = await _service.GetContractSourceFileId(input);
return await _fileService.Download(new BaseIdInput { Id = fileId });
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskContractVariableController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskContractVariableController.cs
index dadbd79..bb82761 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskContractVariableController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskContractVariableController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供任务合同变量维护相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "入职任务合同参数")]
[Route("biz/onboarding/task-contract-variable")]
[RolePermission]
@@ -12,15 +15,21 @@ public class OnboardingTaskContractVariableController
_service = service;
}
+ ///
+ /// 查询任务合同变量。
+ ///
[HttpGet("list")]
public async Task List([FromQuery] OnboardingTaskContractVariableQueryInput input)
{
return await _service.List(input);
}
+ ///
+ /// 保存任务合同变量。
+ ///
[HttpPost("save")]
public async Task Save([FromBody] OnboardingTaskContractVariableSaveInput input)
{
await _service.Save(input);
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskController.cs
index 7a1d049..bef82fa 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供入职任务创建相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "入职任务")]
[Route("biz/onboarding/task")]
[RolePermission]
@@ -12,9 +15,12 @@ public class OnboardingTaskController
_service = service;
}
+ ///
+ /// 创建入职任务并返回员工填写链接。
+ ///
[HttpPost("create")]
public async Task Create([FromBody] OnboardingTaskCreateInput input)
{
return await _service.Create(input);
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskLifecycleController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskLifecycleController.cs
index 9c32aab..462843a 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskLifecycleController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskLifecycleController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供入职任务生命周期相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "入职任务归档")]
[Route("biz/onboarding/task")]
[RolePermission]
@@ -12,15 +15,21 @@ public class OnboardingTaskLifecycleController
_service = service;
}
+ ///
+ /// 归档审核通过的入职任务。
+ ///
[HttpPost("archive")]
public async Task Archive([FromBody] OnboardingAuditActionInput input)
{
await _service.Archive(input);
}
+ ///
+ /// 撤销入职任务及员工填写链接。
+ ///
[HttpPost("revoke")]
public async Task Revoke([FromBody] OnboardingAuditActionInput input)
{
await _service.Revoke(input);
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskQueryController.cs b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskQueryController.cs
index e0b6eeb..b8a90fb 100644
--- a/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskQueryController.cs
+++ b/SimpleAdmin.Web.Core/Controllers/Application/Onboarding/OnboardingTaskQueryController.cs
@@ -1,5 +1,8 @@
namespace SimpleAdmin.Web.Core;
+///
+/// 提供入职任务查询相关 HTTP 接口。
+///
[ApiDescriptionSettings("Application", Tag = "入职任务查询")]
[Route("biz/onboarding/task")]
[RolePermission]
@@ -12,15 +15,21 @@ public class OnboardingTaskQueryController
_service = service;
}
+ ///
+ /// 分页查询入职任务。
+ ///
[HttpGet("page")]
public async Task Page([FromQuery] OnboardingTaskPageInput input)
{
return await _service.Page(input);
}
+ ///
+ /// 查询入职任务完整详情。
+ ///
[HttpGet("detail")]
public async Task Detail([FromQuery] BaseIdInput input)
{
return await _service.Detail(input);
}
-}
\ No newline at end of file
+}
diff --git a/SimpleAdmin.Web.Core/SimpleAdmin.Web.Core.xml b/SimpleAdmin.Web.Core/SimpleAdmin.Web.Core.xml
index df8e209..5d9d422 100644
--- a/SimpleAdmin.Web.Core/SimpleAdmin.Web.Core.xml
+++ b/SimpleAdmin.Web.Core/SimpleAdmin.Web.Core.xml
@@ -26,11 +26,381 @@
模拟 Configure
+
+
+ 提供入职审核相关 HTTP 接口。
+
+
+
+
+ 审核通过任务并创建正式员工档案。
+
+
+
+
+ 退回任务并要求候选人补充资料。
+
+
+
+
+ 提供入职业务公司相关 HTTP 接口。
+
+
+
+
+ 分页查询入职业务公司。
+
+
+
+
+ 查询已启用公司列表。
+
+
+
+
+ 查询公司详情。
+
+
+
+
+ 新增入职业务公司。
+
+
+
+
+ 编辑入职业务公司。
+
+
+
+
+ 删除入职业务公司。
+
+
+
+
+ 提供入职合同文件生成相关 HTTP 接口。
+
+
生成入职合同文件
+
+
+ 提供合同模板、版本、变量和适用范围相关 HTTP 接口。
+
+
+
+
+ 分页查询合同模板。
+
+
+
+
+ 查询合同模板详情。
+
+
+
+
+ 新增合同模板。
+
+
+
+
+ 编辑合同模板。
+
+
+
+
+ 删除合同模板。
+
+
+
+
+ 分页查询合同模板版本。
+
+
+
+
+ 新增合同模板版本。
+
+
+
+
+ 设置合同模板版本状态。
+
+
+
+
+ 分页查询模板变量。
+
+
+
+
+ 新增模板变量。
+
+
+
+
+ 编辑模板变量。
+
+
+
+
+ 删除模板变量。
+
+
+
+
+ 分页查询合同适用范围。
+
+
+
+
+ 新增合同适用范围。
+
+
+
+
+ 编辑合同适用范围。
+
+
+
+
+ 删除合同适用范围。
+
+
+
+
+ 提供正式员工档案相关 HTTP 接口。
+
+
+
+
+ 分页查询正式员工档案。
+
+
+
+
+ 查询正式员工详情及来源记录。
+
+
+
+
+ 提供入职字段与材料要求配置相关 HTTP 接口。
+
+
+
+
+ 查询动态入职字段。
+
+
+
+
+ 保存动态入职字段。
+
+
+
+
+ 删除动态入职字段。
+
+
+
+
+ 查询入职材料类型。
+
+
+
+
+ 保存入职材料类型。
+
+
+
+
+ 删除入职材料类型。
+
+
+
+
+ 查询公司岗位动态字段要求。
+
+
+
+
+ 保存公司岗位动态字段要求。
+
+
+
+
+ 删除动态字段要求。
+
+
+
+
+ 查询公司岗位材料要求。
+
+
+
+
+ 保存公司岗位材料要求。
+
+
+
+
+ 删除材料要求。
+
+
+
+
+ 提供候选人材料审核相关 HTTP 接口。
+
+
+
+
+ 审核候选人上传的材料。
+
+
+
+
+ 提供入职业务岗位相关 HTTP 接口。
+
+
+
+
+ 分页查询入职业务岗位。
+
+
+
+
+ 查询指定公司的已启用岗位。
+
+
+
+
+ 查询岗位详情。
+
+
+
+
+ 新增入职业务岗位。
+
+
+
+
+ 编辑入职业务岗位。
+
+
+
+
+ 删除入职业务岗位。
+
+
+
+
+ 提供员工端资料提交相关 HTTP 接口。
+
+
+
+
+ 保存员工动态字段。
+
+
+
+
+ 保存员工已上传材料记录。
+
+
+
+
+ 确认已阅读指定合同。
+
+
+
+
+ 提交入职资料进入审核。
+
+
+
+
+ 校验并上传员工入职材料。
+
+
+
+
+ 提供员工端入职任务访问相关 HTTP 接口。
+
+
+
+
+ 通过 Token 获取员工端入职任务详情。
+
+
+
+
+ 保存候选人固定基础信息。
+
+
+
+
+ 下载当前任务锁定的合同模板源文件。
+
+
+
+
+ 提供任务合同变量维护相关 HTTP 接口。
+
+
+
+
+ 查询任务合同变量。
+
+
+
+
+ 保存任务合同变量。
+
+
+
+
+ 提供入职任务创建相关 HTTP 接口。
+
+
+
+
+ 创建入职任务并返回员工填写链接。
+
+
+
+
+ 提供入职任务生命周期相关 HTTP 接口。
+
+
+
+
+ 归档审核通过的入职任务。
+
+
+
+
+ 撤销入职任务及员工填写链接。
+
+
+
+
+ 提供入职任务查询相关 HTTP 接口。
+
+
+
+
+ 分页查询入职任务。
+
+
+
+
+ 查询入职任务完整详情。
+
+
机构管理控制器