补充注释
This commit is contained in:
@@ -10,16 +10,50 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 入职业务公司档案,保存合同甲方及入职归属公司信息。
|
||||
/// </summary>
|
||||
[SugarTable("ob_company", TableDescription = "入职业务公司")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObCompany : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 公司业务编码。
|
||||
/// </summary>
|
||||
public virtual string CompanyCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 公司显示名称。
|
||||
/// </summary>
|
||||
public virtual string CompanyName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同中使用的甲方完整法定名称。
|
||||
/// </summary>
|
||||
public virtual string LegalName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 统一社会信用代码。
|
||||
/// </summary>
|
||||
public string UnifiedSocialCreditCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 法定代表人姓名。
|
||||
/// </summary>
|
||||
public string LegalRepresentative { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工商注册地址。
|
||||
/// </summary>
|
||||
public string RegisteredAddress { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 公司联系电话。
|
||||
/// </summary>
|
||||
public string ContactPhone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 业务备注。
|
||||
/// </summary>
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,14 +10,40 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 合同适用范围,将已启用的合同版本绑定到公司或具体岗位。
|
||||
/// </summary>
|
||||
[SugarTable("ob_contract_scope", TableDescription = "公司岗位合同适用范围")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObContractScope : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属入职业务公司 Id。
|
||||
/// </summary>
|
||||
public long CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属岗位 Id;为空时表示适用于公司下全部岗位。
|
||||
/// </summary>
|
||||
public long? PositionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板主档案 Id。
|
||||
/// </summary>
|
||||
public long TemplateId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板版本 Id。
|
||||
/// </summary>
|
||||
public long TemplateVersionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 该适用范围下的合同是否必签。
|
||||
/// </summary>
|
||||
public bool Required { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 显示排序码。
|
||||
/// </summary>
|
||||
public int? SortCode { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,12 +10,30 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板主档案,用于区分不同合同类型及模板用途。
|
||||
/// </summary>
|
||||
[SugarTable("ob_contract_template", TableDescription = "合同模板主档案")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObContractTemplate : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 合同模板业务编码。
|
||||
/// </summary>
|
||||
public string TemplateCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板名称。
|
||||
/// </summary>
|
||||
public string TemplateName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同类型。
|
||||
/// </summary>
|
||||
public string ContractType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模板用途说明。
|
||||
/// </summary>
|
||||
public string Description { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,16 +10,50 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板版本,保存不可变的 DOCX 源文件及版本有效期。
|
||||
/// </summary>
|
||||
[SugarTable("ob_contract_template_version", TableDescription = "合同模板版本")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObContractTemplateVersion : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 合同模板主档案 Id。
|
||||
/// </summary>
|
||||
public long TemplateId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模板版本号。
|
||||
/// </summary>
|
||||
public string VersionNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模板 DOCX 源文件 Id。
|
||||
/// </summary>
|
||||
public long SourceDocxFileId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 源文件内容哈希,用于校验文件是否变化。
|
||||
/// </summary>
|
||||
public string FileHash { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 版本生效日期。
|
||||
/// </summary>
|
||||
public DateTime? EffectiveDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 版本失效日期。
|
||||
/// </summary>
|
||||
public DateTime? ExpiryDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模板版本状态。
|
||||
/// </summary>
|
||||
public string VersionStatus { get; set; } = ContractTemplateVersionStatus.Draft;
|
||||
|
||||
/// <summary>
|
||||
/// 业务备注。
|
||||
/// </summary>
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,37 +10,155 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 审核通过后生成的正式员工档案,是入职流程的最终业务数据。
|
||||
/// </summary>
|
||||
[SugarTable("ob_employee", TableDescription = "正式员工档案")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObEmployee : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 员工编号。
|
||||
/// </summary>
|
||||
public string EmployeeNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 内部人员编号。
|
||||
/// </summary>
|
||||
public string InternalNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 员工姓名。
|
||||
/// </summary>
|
||||
public string EmployeeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属入职业务公司 Id。
|
||||
/// </summary>
|
||||
public long CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属部门名称。
|
||||
/// </summary>
|
||||
public string DepartmentName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属入职业务岗位 Id。
|
||||
/// </summary>
|
||||
public long PositionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 性别。
|
||||
/// </summary>
|
||||
public string Gender { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 手机号码。
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 身份证号码。
|
||||
/// </summary>
|
||||
public string IdCardNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 毕业院校。
|
||||
/// </summary>
|
||||
public string College { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最高学历。
|
||||
/// </summary>
|
||||
public string Education { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所学专业。
|
||||
/// </summary>
|
||||
public string Major { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出生日期。
|
||||
/// </summary>
|
||||
public DateTime? BirthDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 户籍所在地。
|
||||
/// </summary>
|
||||
public string RegisteredResidence { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 民族。
|
||||
/// </summary>
|
||||
public string Nation { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 现居住或联系地址。
|
||||
/// </summary>
|
||||
public string ContactAddress { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职日期。
|
||||
/// </summary>
|
||||
public DateTime? EntryDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同开始日期。
|
||||
/// </summary>
|
||||
public DateTime? ContractStartDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同结束日期。
|
||||
/// </summary>
|
||||
public DateTime? ContractEndDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 试用期开始日期。
|
||||
/// </summary>
|
||||
public DateTime? ProbationStartDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 试用期结束日期。
|
||||
/// </summary>
|
||||
public DateTime? ProbationEndDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 转正日期。
|
||||
/// </summary>
|
||||
public DateTime? RegularizationDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 社保缴纳公司。
|
||||
/// </summary>
|
||||
public string SocialInsuranceCompany { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同性质。
|
||||
/// </summary>
|
||||
public string ContractNature { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工资银行卡号。
|
||||
/// </summary>
|
||||
public string BankCardNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 银行卡开户名。
|
||||
/// </summary>
|
||||
public string BankAccountName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 开户银行名称。
|
||||
/// </summary>
|
||||
public string BankName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 业务备注。
|
||||
/// </summary>
|
||||
public string Remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核通过时冻结的动态字段信息 JSON。
|
||||
/// </summary>
|
||||
public string ExtraInfoJson { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,14 +10,40 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 动态入职字段定义,用于扩展固定人员基础信息之外的填写项。
|
||||
/// </summary>
|
||||
[SugarTable("ob_form_field", TableDescription = "动态入职填写字段")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObFormField : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 动态字段业务编码。
|
||||
/// </summary>
|
||||
public string FieldCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 动态字段显示名称。
|
||||
/// </summary>
|
||||
public string FieldName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 变量数据类型。
|
||||
/// </summary>
|
||||
public string DataType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 选择型字段或变量的可选项 JSON。
|
||||
/// </summary>
|
||||
public string OptionsJson { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 字段校验规则。
|
||||
/// </summary>
|
||||
public string ValidationRule { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 员工端输入提示。
|
||||
/// </summary>
|
||||
public string Placeholder { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,13 +10,35 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 动态字段填写要求,配置公司或岗位需要展示及校验的字段。
|
||||
/// </summary>
|
||||
[SugarTable("ob_form_requirement", TableDescription = "公司岗位动态填写项要求")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObFormRequirement : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属入职业务公司 Id。
|
||||
/// </summary>
|
||||
public long CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属岗位 Id;为空时表示适用于公司下全部岗位。
|
||||
/// </summary>
|
||||
public long? PositionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 动态字段定义 Id。
|
||||
/// </summary>
|
||||
public long FieldId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人是否必须填写该动态字段。
|
||||
/// </summary>
|
||||
public bool Required { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 显示排序码。
|
||||
/// </summary>
|
||||
public int? SortCode { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,14 +10,35 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 入职材料要求,配置公司或岗位需要候选人上传的材料。
|
||||
/// </summary>
|
||||
[SugarTable("ob_material_requirement", TableDescription = "公司岗位入职资料要求")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObMaterialRequirement : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属入职业务公司 Id。
|
||||
/// </summary>
|
||||
public long CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属岗位 Id;为空时表示适用于公司下全部岗位。
|
||||
/// </summary>
|
||||
public long? PositionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料类型 Id。
|
||||
/// </summary>
|
||||
public long MaterialTypeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人是否必须上传该类材料。
|
||||
/// </summary>
|
||||
public bool Required { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 显示排序码。
|
||||
/// </summary>
|
||||
public int? SortCode { get; set; }
|
||||
}
|
||||
|
||||
|
||||
@@ -10,13 +10,35 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 入职材料类型,定义允许上传的文件类型、数量和大小。
|
||||
/// </summary>
|
||||
[SugarTable("ob_material_type", TableDescription = "入职上传资料类型")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObMaterialType : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 材料类型业务编码。
|
||||
/// </summary>
|
||||
public string MaterialCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料显示名称。
|
||||
/// </summary>
|
||||
public string MaterialName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 允许上传的文件扩展名,多个值使用逗号分隔。
|
||||
/// </summary>
|
||||
public string AllowedExtensions { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单个任务允许上传的最大文件数量。
|
||||
/// </summary>
|
||||
public int MaxFileCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单个文件最大大小,单位为 MB。
|
||||
/// </summary>
|
||||
public int? MaxFileSizeMb { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,21 +10,75 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 新员工入职任务,承载候选人填写、审核、转正式员工和归档全过程。
|
||||
/// </summary>
|
||||
[SugarTable("ob_onboarding_task", TableDescription = "新员工入职任务")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObOnboardingTask : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 入职任务编号。
|
||||
/// </summary>
|
||||
public string TaskNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核通过后生成的正式员工 Id。
|
||||
/// </summary>
|
||||
public long? EmployeeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属入职业务公司 Id。
|
||||
/// </summary>
|
||||
public long CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职任务所属岗位 Id。
|
||||
/// </summary>
|
||||
public long PositionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建任务时指定的审核人用户 Id。
|
||||
/// </summary>
|
||||
public long? AssignedReviewerUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职任务当前状态。
|
||||
/// </summary>
|
||||
public string TaskStatus { get; set; } = OnboardingTaskStatus.Draft;
|
||||
|
||||
/// <summary>
|
||||
/// 员工填写链接业务过期时间。
|
||||
/// </summary>
|
||||
public DateTime? LinkExpireAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人累计提交轮次。
|
||||
/// </summary>
|
||||
public int SubmitCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人最近一次提交时间。
|
||||
/// </summary>
|
||||
public DateTime? LastSubmittedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核或流程操作发生时间。
|
||||
/// </summary>
|
||||
public DateTime? AuditedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务归档时间。
|
||||
/// </summary>
|
||||
public DateTime? ArchivedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最近一次审核退回原因。
|
||||
/// </summary>
|
||||
public string RejectReason { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 业务备注。
|
||||
/// </summary>
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,16 +10,45 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 入职业务岗位档案,保存岗位默认合同期限、试用期及业务参数。
|
||||
/// </summary>
|
||||
[SugarTable("ob_position", TableDescription = "入职业务岗位")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObPosition : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属入职业务公司 Id。
|
||||
/// </summary>
|
||||
public long CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 岗位业务编码。
|
||||
/// </summary>
|
||||
public virtual string PositionCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 岗位名称。
|
||||
/// </summary>
|
||||
public virtual string PositionName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 默认合同期限,单位为年。
|
||||
/// </summary>
|
||||
public decimal? DefaultContractYears { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 默认试用期,单位为月。
|
||||
/// </summary>
|
||||
public int? DefaultProbationMonths { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 岗位默认合同参数 JSON。
|
||||
/// </summary>
|
||||
public string DefaultParamsJson { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 业务备注。
|
||||
/// </summary>
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
|
||||
|
||||
@@ -10,15 +10,45 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 入职任务提交与审核记录,按轮次保留意见及数据快照。
|
||||
/// </summary>
|
||||
[SugarTable("ob_task_audit", TableDescription = "入职任务提交与审核记录")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObTaskAudit : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属入职任务 Id。
|
||||
/// </summary>
|
||||
public long TaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核轮次,与任务提交次数对应。
|
||||
/// </summary>
|
||||
public int AuditRound { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核或流程动作。
|
||||
/// </summary>
|
||||
public string AuditAction { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核操作人用户 Id;员工提交时可为空。
|
||||
/// </summary>
|
||||
public long? AuditorUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核意见或流程说明。
|
||||
/// </summary>
|
||||
public string AuditOpinion { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本轮提交或审核时的数据快照 JSON。
|
||||
/// </summary>
|
||||
public string SnapshotJson { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核或流程操作发生时间。
|
||||
/// </summary>
|
||||
public DateTime AuditedAt { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,22 +10,80 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 入职任务合同实例,锁定模板版本并记录生成、阅读和签署状态。
|
||||
/// </summary>
|
||||
[SugarTable("ob_task_contract", TableDescription = "入职任务合同明细")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObTaskContract : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属入职任务 Id。
|
||||
/// </summary>
|
||||
public long TaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板主档案 Id。
|
||||
/// </summary>
|
||||
public long TemplateId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板版本 Id。
|
||||
/// </summary>
|
||||
public long TemplateVersionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务创建时冻结的合同名称。
|
||||
/// </summary>
|
||||
public string ContractName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同类型。
|
||||
/// </summary>
|
||||
public string ContractType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否为候选人必须阅读确认的合同。
|
||||
/// </summary>
|
||||
public bool Required { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务合同当前状态。
|
||||
/// </summary>
|
||||
public string ContractStatus { get; set; } = TaskContractStatus.PendingGenerate;
|
||||
|
||||
/// <summary>
|
||||
/// 生成后的 DOCX 文件 Id。
|
||||
/// </summary>
|
||||
public long? GeneratedDocxFileId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 归档或打印使用的 PDF 文件 Id。
|
||||
/// </summary>
|
||||
public long? GeneratedPdfFileId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同文件生成时间。
|
||||
/// </summary>
|
||||
public DateTime? GeneratedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人首次阅读时间。
|
||||
/// </summary>
|
||||
public DateTime? ReadAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人确认阅读时间。
|
||||
/// </summary>
|
||||
public DateTime? ConfirmedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 线下签署完成时间。
|
||||
/// </summary>
|
||||
public DateTime? OfflineSignedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同打印时间。
|
||||
/// </summary>
|
||||
public DateTime? PrintedAt { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,16 +10,50 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 任务合同变量最终值快照,合同生成后不再读取模板实时值。
|
||||
/// </summary>
|
||||
[SugarTable("ob_task_contract_variable", TableDescription = "任务合同变量最终值快照")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObTaskContractVariable : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属任务合同 Id。
|
||||
/// </summary>
|
||||
public long TaskContractId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// DOCX 中使用的变量编码。
|
||||
/// </summary>
|
||||
public string VariableCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 变量显示名称。
|
||||
/// </summary>
|
||||
public string VariableName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 变量来源类型,例如员工、公司、合同或系统。
|
||||
/// </summary>
|
||||
public string VariableType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 变量数据类型。
|
||||
/// </summary>
|
||||
public string DataType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同生成时使用的最终变量值。
|
||||
/// </summary>
|
||||
public string VariableValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最终值来源类型。
|
||||
/// </summary>
|
||||
public string SourceType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否由人事手工覆盖自动值。
|
||||
/// </summary>
|
||||
public bool IsManualOverride { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,35 +10,145 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 候选人在入职任务中提交的固定人员基础信息。
|
||||
/// </summary>
|
||||
[SugarTable("ob_task_employee_info", TableDescription = "候选人提交的固定基础信息")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObTaskEmployeeInfo : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属入职任务 Id。
|
||||
/// </summary>
|
||||
public long TaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 员工编号。
|
||||
/// </summary>
|
||||
public string EmployeeNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 内部人员编号。
|
||||
/// </summary>
|
||||
public string InternalNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 员工姓名。
|
||||
/// </summary>
|
||||
public string EmployeeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所属部门名称。
|
||||
/// </summary>
|
||||
public string DepartmentName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 性别。
|
||||
/// </summary>
|
||||
public string Gender { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 手机号码。
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 身份证号码。
|
||||
/// </summary>
|
||||
public string IdCardNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 毕业院校。
|
||||
/// </summary>
|
||||
public string College { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最高学历。
|
||||
/// </summary>
|
||||
public string Education { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 所学专业。
|
||||
/// </summary>
|
||||
public string Major { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 出生日期。
|
||||
/// </summary>
|
||||
public DateTime? BirthDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 户籍所在地。
|
||||
/// </summary>
|
||||
public string RegisteredResidence { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 民族。
|
||||
/// </summary>
|
||||
public string Nation { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 现居住或联系地址。
|
||||
/// </summary>
|
||||
public string ContactAddress { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职日期。
|
||||
/// </summary>
|
||||
public DateTime? EntryDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同开始日期。
|
||||
/// </summary>
|
||||
public DateTime? ContractStartDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同结束日期。
|
||||
/// </summary>
|
||||
public DateTime? ContractEndDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 试用期开始日期。
|
||||
/// </summary>
|
||||
public DateTime? ProbationStartDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 试用期结束日期。
|
||||
/// </summary>
|
||||
public DateTime? ProbationEndDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 转正日期。
|
||||
/// </summary>
|
||||
public DateTime? RegularizationDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 社保缴纳公司。
|
||||
/// </summary>
|
||||
public string SocialInsuranceCompany { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同性质。
|
||||
/// </summary>
|
||||
public string ContractNature { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 工资银行卡号。
|
||||
/// </summary>
|
||||
public string BankCardNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 银行卡开户名。
|
||||
/// </summary>
|
||||
public string BankAccountName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 开户银行名称。
|
||||
/// </summary>
|
||||
public string BankName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 业务备注。
|
||||
/// </summary>
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,14 +10,40 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 候选人动态字段填写值,保留字段快照及提交轮次。
|
||||
/// </summary>
|
||||
[SugarTable("ob_task_form_value", TableDescription = "候选人动态填写信息")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObTaskFormValue : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属入职任务 Id。
|
||||
/// </summary>
|
||||
public long TaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 动态字段定义 Id。
|
||||
/// </summary>
|
||||
public long FieldId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 动态字段业务编码。
|
||||
/// </summary>
|
||||
public string FieldCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 动态字段显示名称。
|
||||
/// </summary>
|
||||
public string FieldName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人填写的字段值。
|
||||
/// </summary>
|
||||
public string FieldValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 该数据所属的提交轮次。
|
||||
/// </summary>
|
||||
public int SubmitRound { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,16 +10,45 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 新员工专属填写链接,仅保存 Token 哈希及链接生命周期信息。
|
||||
/// </summary>
|
||||
[SugarTable("ob_task_link", TableDescription = "新员工专属填写链接")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObTaskLink : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属入职任务 Id。
|
||||
/// </summary>
|
||||
public long TaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 访问 Token 的 SHA-256 哈希,不保存明文 Token。
|
||||
/// </summary>
|
||||
public string TokenHash { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 填写链接当前状态。
|
||||
/// </summary>
|
||||
public string LinkStatus { get; set; } = OnboardingLinkStatus.Active;
|
||||
|
||||
/// <summary>
|
||||
/// 链接过期时间。
|
||||
/// </summary>
|
||||
public DateTime ExpiresAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 链接最近访问时间。
|
||||
/// </summary>
|
||||
public DateTime? LastAccessedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 链接累计访问次数。
|
||||
/// </summary>
|
||||
public int AccessCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 链接撤销时间。
|
||||
/// </summary>
|
||||
public DateTime? RevokedAt { get; set; }
|
||||
}
|
||||
|
||||
|
||||
@@ -10,16 +10,50 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 候选人上传的入职材料,记录文件、提交轮次及审核状态。
|
||||
/// </summary>
|
||||
[SugarTable("ob_task_material", TableDescription = "候选人上传资料")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObTaskMaterial : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属入职任务 Id。
|
||||
/// </summary>
|
||||
public long TaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料类型 Id。
|
||||
/// </summary>
|
||||
public long MaterialTypeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料显示名称。
|
||||
/// </summary>
|
||||
public string MaterialName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 系统文件 Id。
|
||||
/// </summary>
|
||||
public long FileId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 该数据所属的提交轮次。
|
||||
/// </summary>
|
||||
public int SubmitRound { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料上传时间。
|
||||
/// </summary>
|
||||
public DateTime UploadedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料审核状态。
|
||||
/// </summary>
|
||||
public string ReviewStatus { get; set; } = TaskMaterialReviewStatus.Pending;
|
||||
|
||||
/// <summary>
|
||||
/// 材料审核意见。
|
||||
/// </summary>
|
||||
public string ReviewRemark { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,16 +10,50 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 入职任务操作日志,用于追踪关键状态变化及操作人。
|
||||
/// </summary>
|
||||
[SugarTable("ob_task_operation_log", TableDescription = "入职任务操作日志")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObTaskOperationLog : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 所属入职任务 Id。
|
||||
/// </summary>
|
||||
public long TaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作人类型,例如员工、人事或系统。
|
||||
/// </summary>
|
||||
public string OperatorType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 后台操作人用户 Id。
|
||||
/// </summary>
|
||||
public long? OperatorUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作类型。
|
||||
/// </summary>
|
||||
public string OperationType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作说明。
|
||||
/// </summary>
|
||||
public string OperationContent { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 本次变更的数据 JSON。
|
||||
/// </summary>
|
||||
public string ChangeDataJson { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作来源 IP 地址。
|
||||
/// </summary>
|
||||
public string IpAddress { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作发生时间。
|
||||
/// </summary>
|
||||
public DateTime OperatedAt { get; set; }
|
||||
}
|
||||
|
||||
@@ -10,21 +10,75 @@
|
||||
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板变量定义,描述 DOCX 占位符、来源类型及填写规则。
|
||||
/// </summary>
|
||||
[SugarTable("ob_template_variable", TableDescription = "合同模板变量定义")]
|
||||
[Tenant(SqlSugarConst.DB_DEFAULT)]
|
||||
public class ObTemplateVariable : BaseEntity
|
||||
{
|
||||
/// <summary>
|
||||
/// 合同模板版本 Id。
|
||||
/// </summary>
|
||||
public long TemplateVersionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// DOCX 中使用的变量编码。
|
||||
/// </summary>
|
||||
public string VariableCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 变量显示名称。
|
||||
/// </summary>
|
||||
public string VariableName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 变量来源类型,例如员工、公司、合同或系统。
|
||||
/// </summary>
|
||||
public string VariableType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 变量数据类型。
|
||||
/// </summary>
|
||||
public string DataType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 变量关联的候选人基础信息字段。
|
||||
/// </summary>
|
||||
public string EmployeeField { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 变量默认值。
|
||||
/// </summary>
|
||||
public string DefaultValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 选择型字段或变量的可选项 JSON。
|
||||
/// </summary>
|
||||
public string OptionsJson { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 变量格式化规则。
|
||||
/// </summary>
|
||||
public string FormatRule { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否必填、必传或必签。
|
||||
/// </summary>
|
||||
public bool Required { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 人事是否可在创建任务后手工填写或调整。
|
||||
/// </summary>
|
||||
public bool HrEditable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 显示排序码。
|
||||
/// </summary>
|
||||
public int? SortCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 业务备注。
|
||||
/// </summary>
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
|
||||
@@ -15,13 +15,44 @@ namespace SimpleAdmin.Application;
|
||||
/// </summary>
|
||||
public static class OnboardingTaskStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// 草稿,任务尚未生成员工填写链接。
|
||||
/// </summary>
|
||||
public const string Draft = "draft";
|
||||
|
||||
/// <summary>
|
||||
/// 待填写,候选人可以通过有效链接编辑资料。
|
||||
/// </summary>
|
||||
public const string PendingFill = "pending_fill";
|
||||
|
||||
/// <summary>
|
||||
/// 审核中,候选人已提交且资料暂时锁定。
|
||||
/// </summary>
|
||||
public const string Reviewing = "reviewing";
|
||||
|
||||
/// <summary>
|
||||
/// 已退回,候选人可根据意见补充后再次提交。
|
||||
/// </summary>
|
||||
public const string Rejected = "rejected";
|
||||
|
||||
/// <summary>
|
||||
/// 已通过,系统已经生成正式员工档案。
|
||||
/// </summary>
|
||||
public const string Approved = "approved";
|
||||
|
||||
/// <summary>
|
||||
/// 已归档,任务流程结束且历史数据只读。
|
||||
/// </summary>
|
||||
public const string Archived = "archived";
|
||||
|
||||
/// <summary>
|
||||
/// 已过期,任务或链接超过有效期。
|
||||
/// </summary>
|
||||
public const string Expired = "expired";
|
||||
|
||||
/// <summary>
|
||||
/// 已撤销,任务或链接被人事主动终止。
|
||||
/// </summary>
|
||||
public const string Revoked = "revoked";
|
||||
}
|
||||
|
||||
@@ -30,9 +61,24 @@ public static class OnboardingTaskStatus
|
||||
/// </summary>
|
||||
public static class OnboardingLinkStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// 有效,链接可以正常访问。
|
||||
/// </summary>
|
||||
public const string Active = "active";
|
||||
|
||||
/// <summary>
|
||||
/// 已过期,任务或链接超过有效期。
|
||||
/// </summary>
|
||||
public const string Expired = "expired";
|
||||
|
||||
/// <summary>
|
||||
/// 已撤销,任务或链接被人事主动终止。
|
||||
/// </summary>
|
||||
public const string Revoked = "revoked";
|
||||
|
||||
/// <summary>
|
||||
/// 已替换,旧链接已由新链接取代。
|
||||
/// </summary>
|
||||
public const string Replaced = "replaced";
|
||||
}
|
||||
|
||||
@@ -41,8 +87,19 @@ public static class OnboardingLinkStatus
|
||||
/// </summary>
|
||||
public static class ContractTemplateVersionStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// 草稿,任务尚未生成员工填写链接。
|
||||
/// </summary>
|
||||
public const string Draft = "draft";
|
||||
|
||||
/// <summary>
|
||||
/// 已启用,可用于创建新的入职任务。
|
||||
/// </summary>
|
||||
public const string Enabled = "enabled";
|
||||
|
||||
/// <summary>
|
||||
/// 已停用,不再用于新任务。
|
||||
/// </summary>
|
||||
public const string Disabled = "disabled";
|
||||
}
|
||||
|
||||
@@ -51,10 +108,29 @@ public static class ContractTemplateVersionStatus
|
||||
/// </summary>
|
||||
public static class TaskContractStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// 待生成,任务合同尚未生成文件。
|
||||
/// </summary>
|
||||
public const string PendingGenerate = "pending_generate";
|
||||
|
||||
/// <summary>
|
||||
/// 待确认,合同已生成并等待候选人阅读确认。
|
||||
/// </summary>
|
||||
public const string PendingConfirm = "pending_confirm";
|
||||
|
||||
/// <summary>
|
||||
/// 已确认,候选人已完成阅读确认。
|
||||
/// </summary>
|
||||
public const string Confirmed = "confirmed";
|
||||
|
||||
/// <summary>
|
||||
/// 待线下签署,首版暂不接入第三方电子签。
|
||||
/// </summary>
|
||||
public const string OfflinePendingSign = "offline_pending_sign";
|
||||
|
||||
/// <summary>
|
||||
/// 已归档,任务流程结束且历史数据只读。
|
||||
/// </summary>
|
||||
public const string Archived = "archived";
|
||||
}
|
||||
|
||||
@@ -63,9 +139,24 @@ public static class TaskContractStatus
|
||||
/// </summary>
|
||||
public static class ContractVariableType
|
||||
{
|
||||
/// <summary>
|
||||
/// 值来源于候选人或正式员工信息。
|
||||
/// </summary>
|
||||
public const string Employee = "employee";
|
||||
|
||||
/// <summary>
|
||||
/// 值来源于公司档案。
|
||||
/// </summary>
|
||||
public const string Company = "company";
|
||||
|
||||
/// <summary>
|
||||
/// 值来源于合同业务参数。
|
||||
/// </summary>
|
||||
public const string Contract = "contract";
|
||||
|
||||
/// <summary>
|
||||
/// 值由系统自动生成。
|
||||
/// </summary>
|
||||
public const string System = "system";
|
||||
}
|
||||
|
||||
@@ -74,9 +165,24 @@ public static class ContractVariableType
|
||||
/// </summary>
|
||||
public static class ContractVariableSourceType
|
||||
{
|
||||
/// <summary>
|
||||
/// 值来源于候选人或正式员工信息。
|
||||
/// </summary>
|
||||
public const string Employee = "employee";
|
||||
|
||||
/// <summary>
|
||||
/// 值来源于公司档案。
|
||||
/// </summary>
|
||||
public const string Company = "company";
|
||||
|
||||
/// <summary>
|
||||
/// 值由人事手工录入。
|
||||
/// </summary>
|
||||
public const string HrInput = "hr_input";
|
||||
|
||||
/// <summary>
|
||||
/// 值由系统自动生成。
|
||||
/// </summary>
|
||||
public const string System = "system";
|
||||
}
|
||||
|
||||
@@ -85,8 +191,19 @@ public static class ContractVariableSourceType
|
||||
/// </summary>
|
||||
public static class TaskMaterialReviewStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// 待审核。
|
||||
/// </summary>
|
||||
public const string Pending = "pending";
|
||||
|
||||
/// <summary>
|
||||
/// 审核通过。
|
||||
/// </summary>
|
||||
public const string Passed = "passed";
|
||||
|
||||
/// <summary>
|
||||
/// 需要补充或重新上传。
|
||||
/// </summary>
|
||||
public const string NeedSupplement = "need_supplement";
|
||||
}
|
||||
|
||||
@@ -95,9 +212,28 @@ public static class TaskMaterialReviewStatus
|
||||
/// </summary>
|
||||
public static class OnboardingAuditAction
|
||||
{
|
||||
/// <summary>
|
||||
/// 候选人提交入职资料。
|
||||
/// </summary>
|
||||
public const string Submit = "submit";
|
||||
|
||||
/// <summary>
|
||||
/// 人事审核通过。
|
||||
/// </summary>
|
||||
public const string Approve = "approve";
|
||||
|
||||
/// <summary>
|
||||
/// 人事退回补充。
|
||||
/// </summary>
|
||||
public const string Reject = "reject";
|
||||
|
||||
/// <summary>
|
||||
/// 人事撤销任务。
|
||||
/// </summary>
|
||||
public const string Revoke = "revoke";
|
||||
|
||||
/// <summary>
|
||||
/// 人事归档任务。
|
||||
/// </summary>
|
||||
public const string Archive = "archive";
|
||||
}
|
||||
|
||||
@@ -1,9 +1,18 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 入职审核、退回、撤销或归档操作参数。
|
||||
/// </summary>
|
||||
public class OnboardingAuditActionInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 入职任务 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "任务Id不能为空")]
|
||||
public long TaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 审核意见或流程操作说明。
|
||||
/// </summary>
|
||||
public string AuditOpinion { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,7 +1,16 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 定义入职审核业务能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingAuditService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 审核通过入职任务,并在同一事务中创建正式员工档案。
|
||||
/// </summary>
|
||||
Task Approve(OnboardingAuditActionInput input);
|
||||
/// <summary>
|
||||
/// 退回入职任务,保存审核意见并允许候选人补充资料。
|
||||
/// </summary>
|
||||
Task Reject(OnboardingAuditActionInput input);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 实现入职审核业务能力。
|
||||
/// </summary>
|
||||
public class OnboardingAuditService : IOnboardingAuditService
|
||||
{
|
||||
private readonly SqlSugarScope _db;
|
||||
@@ -15,6 +18,9 @@ public class OnboardingAuditService : IOnboardingAuditService
|
||||
_snapshotService = snapshotService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 审核通过入职任务,并在同一事务中创建正式员工档案。
|
||||
/// </summary>
|
||||
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<ObEmployee>()
|
||||
.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
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 退回入职任务,保存审核意见并允许候选人补充资料。
|
||||
/// </summary>
|
||||
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<long>();
|
||||
if (configJson.RootElement.TryGetProperty("all", out var allReviewers))
|
||||
{
|
||||
@@ -126,5 +138,3 @@ public class OnboardingAuditService : IOnboardingAuditService
|
||||
}).ExecuteCommandAsync();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,25 +1,53 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 入职业务公司分页查询参数。
|
||||
/// </summary>
|
||||
public class OnboardingCompanyPageInput : BasePageInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 公司名称。
|
||||
/// </summary>
|
||||
public virtual string CompanyName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 启用状态或状态筛选条件。
|
||||
/// </summary>
|
||||
public string Status { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增入职业务公司参数。
|
||||
/// </summary>
|
||||
public class OnboardingCompanyAddInput : ObCompany
|
||||
{
|
||||
/// <summary>
|
||||
/// 公司业务编码。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "公司编码不能为空")]
|
||||
public override string CompanyCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 公司名称。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "公司名称不能为空")]
|
||||
public override string CompanyName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同甲方完整法定名称。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "合同甲方全称不能为空")]
|
||||
public override string LegalName { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑入职业务公司参数。
|
||||
/// </summary>
|
||||
public class OnboardingCompanyEditInput : OnboardingCompanyAddInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "公司Id不能为空")]
|
||||
public override long Id { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,11 +1,32 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 定义入职业务公司业务能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingCompanyService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 分页查询入职业务公司。
|
||||
/// </summary>
|
||||
Task<SqlSugarPagedList<ObCompany>> Page(OnboardingCompanyPageInput input);
|
||||
/// <summary>
|
||||
/// 查询全部已启用的入职业务公司。
|
||||
/// </summary>
|
||||
Task<List<ObCompany>> ListEnabled();
|
||||
/// <summary>
|
||||
/// 查询公司详情。
|
||||
/// </summary>
|
||||
Task<ObCompany> Detail(BaseIdInput input);
|
||||
/// <summary>
|
||||
/// 新增入职业务公司。
|
||||
/// </summary>
|
||||
Task Add(OnboardingCompanyAddInput input);
|
||||
/// <summary>
|
||||
/// 编辑入职业务公司。
|
||||
/// </summary>
|
||||
Task Edit(OnboardingCompanyEditInput input);
|
||||
/// <summary>
|
||||
/// 删除未被岗位、任务或员工引用的公司。
|
||||
/// </summary>
|
||||
Task Delete(BaseIdListInput input);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 实现入职业务公司业务能力。
|
||||
/// </summary>
|
||||
public class OnboardingCompanyService : DbRepository<ObCompany>, IOnboardingCompanyService
|
||||
{
|
||||
/// <summary>
|
||||
/// 分页查询入职业务公司。
|
||||
/// </summary>
|
||||
public async Task<SqlSugarPagedList<ObCompany>> Page(OnboardingCompanyPageInput input)
|
||||
{
|
||||
return await Context.Queryable<ObCompany>()
|
||||
@@ -14,6 +20,9 @@ public class OnboardingCompanyService : DbRepository<ObCompany>, IOnboardingComp
|
||||
.ToPagedListAsync(input.PageNum, input.PageSize);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询全部已启用的入职业务公司。
|
||||
/// </summary>
|
||||
public Task<List<ObCompany>> ListEnabled()
|
||||
{
|
||||
return Context.Queryable<ObCompany>()
|
||||
@@ -22,17 +31,26 @@ public class OnboardingCompanyService : DbRepository<ObCompany>, IOnboardingComp
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询公司详情。
|
||||
/// </summary>
|
||||
public async Task<ObCompany> Detail(BaseIdInput input)
|
||||
{
|
||||
return await GetByIdAsync(input.Id) ?? throw Oops.Bah("公司不存在");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增入职业务公司。
|
||||
/// </summary>
|
||||
public async Task Add(OnboardingCompanyAddInput input)
|
||||
{
|
||||
await EnsureCodeUnique(input.CompanyCode, 0);
|
||||
await InsertAsync(input.Adapt<ObCompany>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑入职业务公司。
|
||||
/// </summary>
|
||||
public async Task Edit(OnboardingCompanyEditInput input)
|
||||
{
|
||||
await Detail(new BaseIdInput { Id = input.Id });
|
||||
@@ -40,6 +58,9 @@ public class OnboardingCompanyService : DbRepository<ObCompany>, IOnboardingComp
|
||||
await UpdateAsync(input.Adapt<ObCompany>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除未被岗位、任务或员工引用的公司。
|
||||
/// </summary>
|
||||
public async Task Delete(BaseIdListInput input)
|
||||
{
|
||||
if (input.Ids.Count == 0)
|
||||
|
||||
+6
@@ -1,7 +1,13 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 生成任务合同文件参数。
|
||||
/// </summary>
|
||||
public class OnboardingGenerateContractInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 任务合同 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "任务合同Id不能为空")]
|
||||
public long TaskContractId { get; set; }
|
||||
}
|
||||
|
||||
+11
-1
@@ -1,2 +1,12 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
public interface IOnboardingContractDocumentService : ITransient { Task<long> Generate(OnboardingGenerateContractInput input); }
|
||||
|
||||
/// <summary>
|
||||
/// 定义入职合同文件生成能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingContractDocumentService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 根据已审核通过的任务合同生成并保存 DOCX 文件。
|
||||
/// </summary>
|
||||
Task<long> Generate(OnboardingGenerateContractInput input);
|
||||
}
|
||||
|
||||
+8
-2
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 实现入职合同文件生成业务能力。
|
||||
/// </summary>
|
||||
public class OnboardingContractDocumentService : IOnboardingContractDocumentService
|
||||
{
|
||||
private readonly SqlSugarScope _db;
|
||||
@@ -11,6 +14,9 @@ public class OnboardingContractDocumentService : IOnboardingContractDocumentServ
|
||||
_fileService = fileService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据已锁定的模板版本和变量快照生成任务合同 DOCX 文件。
|
||||
/// </summary>
|
||||
public async Task<long> Generate(OnboardingGenerateContractInput input)
|
||||
{
|
||||
var contract = await _db.Queryable<ObTaskContract>().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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+6
@@ -1,7 +1,13 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 定义任务合同变量快照业务能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingContractSnapshotService : ITransient
|
||||
{
|
||||
/// <summary>根据任务、公司与候选人资料刷新自动变量;人事已手工填写的变量不会被覆盖。</summary>
|
||||
/// <summary>
|
||||
/// 根据任务、公司和候选人资料构建或刷新合同变量快照。
|
||||
/// </summary>
|
||||
Task Build(long taskId, ObTaskEmployeeInfo employeeInfo = null);
|
||||
}
|
||||
+7
-1
@@ -1,11 +1,17 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>冻结任务合同变量;DOCX 生成阶段只读取本快照,不再读取模板实时值。</summary>
|
||||
/// <summary>
|
||||
/// 实现任务合同变量快照业务能力。
|
||||
/// </summary>
|
||||
public class OnboardingContractSnapshotService : IOnboardingContractSnapshotService
|
||||
{
|
||||
private readonly SqlSugarScope _db;
|
||||
public OnboardingContractSnapshotService() => _db = DbContext.DB;
|
||||
|
||||
/// <summary>
|
||||
/// 根据任务、公司和候选人资料构建或刷新合同变量快照。
|
||||
/// </summary>
|
||||
public async Task Build(long taskId, ObTaskEmployeeInfo employeeInfo = null)
|
||||
{
|
||||
var task = await _db.Queryable<ObOnboardingTask>().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
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+46
@@ -1,27 +1,73 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 合同适用范围分页查询参数。
|
||||
/// </summary>
|
||||
public class OnboardingContractScopePageInput : BasePageInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 入职业务公司 Id。
|
||||
/// </summary>
|
||||
public long? CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 岗位 Id;为空时表示公司级配置。
|
||||
/// </summary>
|
||||
public long? PositionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板 Id。
|
||||
/// </summary>
|
||||
public long? TemplateId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增合同适用范围参数。
|
||||
/// </summary>
|
||||
public class OnboardingContractScopeAddInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 入职业务公司 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "公司Id不能为空")]
|
||||
public long CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 岗位 Id;为空时表示公司级配置。
|
||||
/// </summary>
|
||||
public long? PositionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "模板Id不能为空")]
|
||||
public long TemplateId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板版本 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "模板版本Id不能为空")]
|
||||
public long TemplateVersionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否必填、必传或必签。
|
||||
/// </summary>
|
||||
public bool Required { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// 显示排序码。
|
||||
/// </summary>
|
||||
public int? SortCode { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑合同适用范围参数。
|
||||
/// </summary>
|
||||
public class OnboardingContractScopeEditInput : OnboardingContractScopeAddInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "适用范围Id不能为空")]
|
||||
public long Id { get; set; }
|
||||
}
|
||||
|
||||
+42
@@ -1,26 +1,68 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板分页查询参数。
|
||||
/// </summary>
|
||||
public class OnboardingContractTemplatePageInput : BasePageInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 合同模板名称。
|
||||
/// </summary>
|
||||
public string TemplateName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同类型。
|
||||
/// </summary>
|
||||
public string ContractType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 启用状态或状态筛选条件。
|
||||
/// </summary>
|
||||
public string Status { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增合同模板参数。
|
||||
/// </summary>
|
||||
public class OnboardingContractTemplateAddInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 合同模板业务编码。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "模板编码不能为空")]
|
||||
public string TemplateCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板名称。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "模板名称不能为空")]
|
||||
public string TemplateName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同类型。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "合同类型不能为空")]
|
||||
public string ContractType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 业务说明。
|
||||
/// </summary>
|
||||
public string Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 启用状态或状态筛选条件。
|
||||
/// </summary>
|
||||
public string Status { get; set; } = "enable";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑合同模板参数。
|
||||
/// </summary>
|
||||
public class OnboardingContractTemplateEditInput : OnboardingContractTemplateAddInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "模板Id不能为空")]
|
||||
public long Id { get; set; }
|
||||
}
|
||||
|
||||
+50
@@ -1,30 +1,80 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 合同模板版本分页查询参数。
|
||||
/// </summary>
|
||||
public class OnboardingContractVersionPageInput : BasePageInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 合同模板 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "模板Id不能为空")]
|
||||
public long TemplateId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模板版本状态。
|
||||
/// </summary>
|
||||
public string VersionStatus { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增合同模板版本参数。
|
||||
/// </summary>
|
||||
public class OnboardingContractVersionAddInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 合同模板 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "模板Id不能为空")]
|
||||
public long TemplateId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模板版本号。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "版本号不能为空")]
|
||||
public string VersionNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模板 DOCX 源文件 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "DOCX源文件不能为空")]
|
||||
public long SourceDocxFileId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 源文件内容哈希。
|
||||
/// </summary>
|
||||
public string FileHash { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 生效日期。
|
||||
/// </summary>
|
||||
public DateTime? EffectiveDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 失效日期。
|
||||
/// </summary>
|
||||
public DateTime? ExpiryDate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 业务备注。
|
||||
/// </summary>
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置合同模板版本状态参数。
|
||||
/// </summary>
|
||||
public class OnboardingContractVersionStatusInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "版本Id不能为空")]
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 模板版本状态。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "版本状态不能为空")]
|
||||
public string VersionStatus { get; set; }
|
||||
}
|
||||
|
||||
+66
@@ -1,35 +1,101 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 模板变量分页查询参数。
|
||||
/// </summary>
|
||||
public class OnboardingTemplateVariablePageInput : BasePageInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 合同模板版本 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "模板版本Id不能为空")]
|
||||
public long TemplateVersionId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增模板变量参数。
|
||||
/// </summary>
|
||||
public class OnboardingTemplateVariableAddInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 合同模板版本 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "模板版本Id不能为空")]
|
||||
public long TemplateVersionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同变量编码。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "变量编码不能为空")]
|
||||
public string VariableCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同变量名称。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "变量名称不能为空")]
|
||||
public string VariableName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同变量来源类型。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "变量类型不能为空")]
|
||||
public string VariableType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 字段或变量数据类型。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "数据类型不能为空")]
|
||||
public string DataType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联的候选人基础信息字段。
|
||||
/// </summary>
|
||||
public string EmployeeField { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 默认值。
|
||||
/// </summary>
|
||||
public string DefaultValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 可选项 JSON。
|
||||
/// </summary>
|
||||
public string OptionsJson { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 格式化规则。
|
||||
/// </summary>
|
||||
public string FormatRule { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否必填、必传或必签。
|
||||
/// </summary>
|
||||
public bool Required { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 人事是否可以编辑。
|
||||
/// </summary>
|
||||
public bool HrEditable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 显示排序码。
|
||||
/// </summary>
|
||||
public int? SortCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 业务备注。
|
||||
/// </summary>
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑模板变量参数。
|
||||
/// </summary>
|
||||
public class OnboardingTemplateVariableEditInput : OnboardingTemplateVariableAddInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "变量Id不能为空")]
|
||||
public long Id { get; set; }
|
||||
}
|
||||
|
||||
+48
@@ -1,19 +1,67 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 定义合同模板、版本、变量和适用范围业务能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingContractTemplateService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 分页查询合同模板主档案。
|
||||
/// </summary>
|
||||
Task<SqlSugarPagedList<ObContractTemplate>> Page(OnboardingContractTemplatePageInput input);
|
||||
/// <summary>
|
||||
/// 查询合同模板详情。
|
||||
/// </summary>
|
||||
Task<ObContractTemplate> Detail(BaseIdInput input);
|
||||
/// <summary>
|
||||
/// 新增合同模板主档案。
|
||||
/// </summary>
|
||||
Task Add(OnboardingContractTemplateAddInput input);
|
||||
/// <summary>
|
||||
/// 编辑合同模板主档案。
|
||||
/// </summary>
|
||||
Task Edit(OnboardingContractTemplateEditInput input);
|
||||
/// <summary>
|
||||
/// 删除未被版本、适用范围或任务合同引用的模板。
|
||||
/// </summary>
|
||||
Task Delete(BaseIdListInput input);
|
||||
/// <summary>
|
||||
/// 分页查询指定合同模板的版本。
|
||||
/// </summary>
|
||||
Task<SqlSugarPagedList<ObContractTemplateVersion>> VersionPage(OnboardingContractVersionPageInput input);
|
||||
/// <summary>
|
||||
/// 新增合同模板 DOCX 版本。
|
||||
/// </summary>
|
||||
Task AddVersion(OnboardingContractVersionAddInput input);
|
||||
/// <summary>
|
||||
/// 启用或停用合同模板版本。
|
||||
/// </summary>
|
||||
Task SetVersionStatus(OnboardingContractVersionStatusInput input);
|
||||
/// <summary>
|
||||
/// 分页查询指定模板版本的变量定义。
|
||||
/// </summary>
|
||||
Task<SqlSugarPagedList<ObTemplateVariable>> VariablePage(OnboardingTemplateVariablePageInput input);
|
||||
/// <summary>
|
||||
/// 为草稿模板版本新增变量。
|
||||
/// </summary>
|
||||
Task AddVariable(OnboardingTemplateVariableAddInput input);
|
||||
/// <summary>
|
||||
/// 编辑草稿模板版本中的变量。
|
||||
/// </summary>
|
||||
Task EditVariable(OnboardingTemplateVariableEditInput input);
|
||||
/// <summary>
|
||||
/// 删除草稿模板版本中的变量。
|
||||
/// </summary>
|
||||
Task DeleteVariable(BaseIdListInput input); Task<SqlSugarPagedList<ObContractScope>> ScopePage(OnboardingContractScopePageInput input);
|
||||
/// <summary>
|
||||
/// 新增公司或岗位的合同适用范围。
|
||||
/// </summary>
|
||||
Task AddScope(OnboardingContractScopeAddInput input);
|
||||
/// <summary>
|
||||
/// 编辑合同适用范围。
|
||||
/// </summary>
|
||||
Task EditScope(OnboardingContractScopeEditInput input);
|
||||
/// <summary>
|
||||
/// 删除合同适用范围。
|
||||
/// </summary>
|
||||
Task DeleteScope(BaseIdListInput input);}
|
||||
|
||||
+48
@@ -5,6 +5,9 @@ namespace SimpleAdmin.Application;
|
||||
/// </summary>
|
||||
public class OnboardingContractTemplateService : DbRepository<ObContractTemplate>, IOnboardingContractTemplateService
|
||||
{
|
||||
/// <summary>
|
||||
/// 分页查询合同模板主档案。
|
||||
/// </summary>
|
||||
public async Task<SqlSugarPagedList<ObContractTemplate>> Page(OnboardingContractTemplatePageInput input)
|
||||
{
|
||||
return await Context.Queryable<ObContractTemplate>()
|
||||
@@ -18,17 +21,26 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
.ToPagedListAsync(input.PageNum, input.PageSize);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询合同模板详情。
|
||||
/// </summary>
|
||||
public async Task<ObContractTemplate> Detail(BaseIdInput input)
|
||||
{
|
||||
return await GetByIdAsync(input.Id) ?? throw Oops.Bah("合同模板不存在");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增合同模板主档案。
|
||||
/// </summary>
|
||||
public async Task Add(OnboardingContractTemplateAddInput input)
|
||||
{
|
||||
await EnsureCodeUnique(input.TemplateCode, 0);
|
||||
await InsertAsync(input.Adapt<ObContractTemplate>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑合同模板主档案。
|
||||
/// </summary>
|
||||
public async Task Edit(OnboardingContractTemplateEditInput input)
|
||||
{
|
||||
await Detail(new BaseIdInput { Id = input.Id });
|
||||
@@ -36,6 +48,9 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
await UpdateAsync(input.Adapt<ObContractTemplate>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除未被版本、适用范围或任务合同引用的模板。
|
||||
/// </summary>
|
||||
public async Task Delete(BaseIdListInput input)
|
||||
{
|
||||
if (input.Ids.Count == 0)
|
||||
@@ -59,6 +74,9 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
await DeleteByIdsAsync(input.Ids.Cast<object>().ToArray());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询指定合同模板的版本。
|
||||
/// </summary>
|
||||
public async Task<SqlSugarPagedList<ObContractTemplateVersion>> VersionPage(OnboardingContractVersionPageInput input)
|
||||
{
|
||||
return await Context.Queryable<ObContractTemplateVersion>()
|
||||
@@ -68,6 +86,9 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
.ToPagedListAsync(input.PageNum, input.PageSize);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增合同模板 DOCX 版本。
|
||||
/// </summary>
|
||||
public async Task AddVersion(OnboardingContractVersionAddInput input)
|
||||
{
|
||||
await Detail(new BaseIdInput { Id = input.TemplateId });
|
||||
@@ -85,6 +106,9 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
await Context.Insertable(input.Adapt<ObContractTemplateVersion>()).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 启用或停用合同模板版本。
|
||||
/// </summary>
|
||||
public async Task SetVersionStatus(OnboardingContractVersionStatusInput input)
|
||||
{
|
||||
if (input.VersionStatus != ContractTemplateVersionStatus.Enabled
|
||||
@@ -108,6 +132,9 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
await Context.Updateable(version).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询指定模板版本的变量定义。
|
||||
/// </summary>
|
||||
public async Task<SqlSugarPagedList<ObTemplateVariable>> VariablePage(OnboardingTemplateVariablePageInput input)
|
||||
{
|
||||
return await Context.Queryable<ObTemplateVariable>()
|
||||
@@ -117,6 +144,9 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
.ToPagedListAsync(input.PageNum, input.PageSize);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 为草稿模板版本新增变量。
|
||||
/// </summary>
|
||||
public async Task AddVariable(OnboardingTemplateVariableAddInput input)
|
||||
{
|
||||
await EnsureVersionDraft(input.TemplateVersionId);
|
||||
@@ -124,6 +154,9 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
await Context.Insertable(input.Adapt<ObTemplateVariable>()).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑草稿模板版本中的变量。
|
||||
/// </summary>
|
||||
public async Task EditVariable(OnboardingTemplateVariableEditInput input)
|
||||
{
|
||||
var variable = await Context.Queryable<ObTemplateVariable>().InSingleAsync(input.Id)
|
||||
@@ -136,6 +169,9 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
await Context.Updateable(input.Adapt<ObTemplateVariable>()).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除草稿模板版本中的变量。
|
||||
/// </summary>
|
||||
public async Task DeleteVariable(BaseIdListInput input)
|
||||
{
|
||||
if (input.Ids.Count == 0)
|
||||
@@ -152,6 +188,9 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
await Context.Deleteable<ObTemplateVariable>().In(input.Ids).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询合同适用范围。
|
||||
/// </summary>
|
||||
public async Task<SqlSugarPagedList<ObContractScope>> ScopePage(OnboardingContractScopePageInput input)
|
||||
{
|
||||
return await Context.Queryable<ObContractScope>()
|
||||
@@ -162,6 +201,9 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
.ToPagedListAsync(input.PageNum, input.PageSize);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增公司或岗位的合同适用范围。
|
||||
/// </summary>
|
||||
public async Task AddScope(OnboardingContractScopeAddInput input)
|
||||
{
|
||||
await EnsureScopeValid(input.CompanyId, input.PositionId, input.TemplateId, input.TemplateVersionId);
|
||||
@@ -169,6 +211,9 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
await Context.Insertable(input.Adapt<ObContractScope>()).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑合同适用范围。
|
||||
/// </summary>
|
||||
public async Task EditScope(OnboardingContractScopeEditInput input)
|
||||
{
|
||||
var scopeExists = await Context.Queryable<ObContractScope>().AnyAsync(it => it.Id == input.Id);
|
||||
@@ -180,6 +225,9 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
await Context.Updateable(input.Adapt<ObContractScope>()).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除合同适用范围。
|
||||
/// </summary>
|
||||
public async Task DeleteScope(BaseIdListInput input)
|
||||
{
|
||||
if (input.Ids.Count == 0)
|
||||
|
||||
@@ -1,17 +1,53 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 正式员工档案分页查询参数。
|
||||
/// </summary>
|
||||
public class OnboardingEmployeePageInput : BasePageInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 员工姓名。
|
||||
/// </summary>
|
||||
public string EmployeeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 手机号码。
|
||||
/// </summary>
|
||||
public string Phone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职业务公司 Id。
|
||||
/// </summary>
|
||||
public long? CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 岗位 Id;为空时表示公司级配置。
|
||||
/// </summary>
|
||||
public long? PositionId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 正式员工档案详情输出。
|
||||
/// </summary>
|
||||
public class OnboardingEmployeeDetailOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 正式员工档案。
|
||||
/// </summary>
|
||||
public ObEmployee Employee { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职任务主数据。
|
||||
/// </summary>
|
||||
public ObOnboardingTask Task { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务合同列表。
|
||||
/// </summary>
|
||||
public List<ObTaskContract> Contracts { get; set; } = new List<ObTaskContract>();
|
||||
|
||||
/// <summary>
|
||||
/// 提交与审核记录列表。
|
||||
/// </summary>
|
||||
public List<ObTaskAudit> Audits { get; set; } = new List<ObTaskAudit>();
|
||||
}
|
||||
@@ -1,7 +1,16 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 定义正式员工档案查询业务能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingEmployeeService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 分页查询审核通过后生成的正式员工档案。
|
||||
/// </summary>
|
||||
Task<SqlSugarPagedList<ObEmployee>> Page(OnboardingEmployeePageInput input);
|
||||
/// <summary>
|
||||
/// 查询正式员工及其来源任务、合同和审核记录。
|
||||
/// </summary>
|
||||
Task<OnboardingEmployeeDetailOutput> Detail(BaseIdInput input);
|
||||
}
|
||||
@@ -1,11 +1,17 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>仅展示审核通过后创建的正式员工档案;入职资料的来源任务可追溯。</summary>
|
||||
/// <summary>
|
||||
/// 实现正式员工档案查询业务能力。
|
||||
/// </summary>
|
||||
public class OnboardingEmployeeService : IOnboardingEmployeeService
|
||||
{
|
||||
private readonly SqlSugarScope _db;
|
||||
public OnboardingEmployeeService() => _db = DbContext.DB;
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询审核通过后生成的正式员工档案。
|
||||
/// </summary>
|
||||
public Task<SqlSugarPagedList<ObEmployee>> Page(OnboardingEmployeePageInput input) => _db.Queryable<ObEmployee>()
|
||||
.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);
|
||||
|
||||
/// <summary>
|
||||
/// 查询正式员工及其来源任务、合同和审核记录。
|
||||
/// </summary>
|
||||
public async Task<OnboardingEmployeeDetailOutput> Detail(BaseIdInput input)
|
||||
{
|
||||
var employee = await _db.Queryable<ObEmployee>().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 };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+101
@@ -1,68 +1,169 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 保存动态入职字段参数。
|
||||
/// </summary>
|
||||
public class OnboardingFormFieldSaveInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据 Id。
|
||||
/// </summary>
|
||||
public long? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 动态字段编码。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "字段编码不能为空")]
|
||||
public string FieldCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 动态字段名称。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "字段名称不能为空")]
|
||||
public string FieldName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 字段或变量数据类型。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "数据类型不能为空")]
|
||||
public string DataType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 可选项 JSON。
|
||||
/// </summary>
|
||||
public string OptionsJson { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 字段校验规则。
|
||||
/// </summary>
|
||||
public string ValidationRule { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 员工端输入提示。
|
||||
/// </summary>
|
||||
public string Placeholder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 启用状态或状态筛选条件。
|
||||
/// </summary>
|
||||
public string Status { get; set; } = "enable";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存入职材料类型参数。
|
||||
/// </summary>
|
||||
public class OnboardingMaterialTypeSaveInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据 Id。
|
||||
/// </summary>
|
||||
public long? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料类型编码。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "资料编码不能为空")]
|
||||
public string MaterialCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料名称。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "资料名称不能为空")]
|
||||
public string MaterialName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 允许上传的文件扩展名。
|
||||
/// </summary>
|
||||
public string AllowedExtensions { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 允许上传的最大文件数量。
|
||||
/// </summary>
|
||||
public int MaxFileCount { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// 单个文件最大大小,单位为 MB。
|
||||
/// </summary>
|
||||
public int? MaxFileSizeMb { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 启用状态或状态筛选条件。
|
||||
/// </summary>
|
||||
public string Status { get; set; } = "enable";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存公司岗位动态字段要求参数。
|
||||
/// </summary>
|
||||
public class OnboardingFormRequirementSaveInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据 Id。
|
||||
/// </summary>
|
||||
public long? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职业务公司 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "公司Id不能为空")]
|
||||
public long CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 岗位 Id;为空时表示公司级配置。
|
||||
/// </summary>
|
||||
public long? PositionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 动态字段 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "字段Id不能为空")]
|
||||
public long FieldId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否必填、必传或必签。
|
||||
/// </summary>
|
||||
public bool Required { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 显示排序码。
|
||||
/// </summary>
|
||||
public int? SortCode { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存公司岗位材料要求参数。
|
||||
/// </summary>
|
||||
public class OnboardingMaterialRequirementSaveInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据 Id。
|
||||
/// </summary>
|
||||
public long? Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职业务公司 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "公司Id不能为空")]
|
||||
public long CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 岗位 Id;为空时表示公司级配置。
|
||||
/// </summary>
|
||||
public long? PositionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料类型 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "资料类型Id不能为空")]
|
||||
public long MaterialTypeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否必填、必传或必签。
|
||||
/// </summary>
|
||||
public bool Required { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 显示排序码。
|
||||
/// </summary>
|
||||
public int? SortCode { get; set; }
|
||||
}
|
||||
|
||||
+39
@@ -1,17 +1,56 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 定义动态字段、材料类型及公司岗位要求配置业务能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingEntryConfigService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 查询全部动态入职字段。
|
||||
/// </summary>
|
||||
Task<List<ObFormField>> ListFormFields();
|
||||
/// <summary>
|
||||
/// 新增或编辑动态入职字段。
|
||||
/// </summary>
|
||||
Task SaveFormField(OnboardingFormFieldSaveInput input);
|
||||
/// <summary>
|
||||
/// 删除未被填写要求引用的动态字段。
|
||||
/// </summary>
|
||||
Task DeleteFormFields(BaseIdListInput input);
|
||||
/// <summary>
|
||||
/// 查询全部入职材料类型。
|
||||
/// </summary>
|
||||
Task<List<ObMaterialType>> ListMaterialTypes();
|
||||
/// <summary>
|
||||
/// 新增或编辑入职材料类型。
|
||||
/// </summary>
|
||||
Task SaveMaterialType(OnboardingMaterialTypeSaveInput input);
|
||||
/// <summary>
|
||||
/// 删除未被要求或上传记录引用的材料类型。
|
||||
/// </summary>
|
||||
Task DeleteMaterialTypes(BaseIdListInput input);
|
||||
/// <summary>
|
||||
/// 查询指定公司的动态字段填写要求。
|
||||
/// </summary>
|
||||
Task<List<ObFormRequirement>> ListFormRequirements(long companyId);
|
||||
/// <summary>
|
||||
/// 新增或编辑公司岗位动态字段要求。
|
||||
/// </summary>
|
||||
Task SaveFormRequirement(OnboardingFormRequirementSaveInput input);
|
||||
/// <summary>
|
||||
/// 删除动态字段填写要求。
|
||||
/// </summary>
|
||||
Task DeleteFormRequirements(BaseIdListInput input);
|
||||
/// <summary>
|
||||
/// 查询指定公司的材料上传要求。
|
||||
/// </summary>
|
||||
Task<List<ObMaterialRequirement>> ListMaterialRequirements(long companyId);
|
||||
/// <summary>
|
||||
/// 新增或编辑公司岗位材料要求。
|
||||
/// </summary>
|
||||
Task SaveMaterialRequirement(OnboardingMaterialRequirementSaveInput input);
|
||||
/// <summary>
|
||||
/// 删除材料上传要求。
|
||||
/// </summary>
|
||||
Task DeleteMaterialRequirements(BaseIdListInput input);
|
||||
}
|
||||
+36
-2
@@ -12,6 +12,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
|
||||
_db = DbContext.DB;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询全部动态入职字段。
|
||||
/// </summary>
|
||||
public Task<List<ObFormField>> ListFormFields()
|
||||
{
|
||||
return _db.Queryable<ObFormField>()
|
||||
@@ -19,6 +22,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增或编辑动态入职字段。
|
||||
/// </summary>
|
||||
public async Task SaveFormField(OnboardingFormFieldSaveInput input)
|
||||
{
|
||||
var fieldCodeExists = await _db.Queryable<ObFormField>()
|
||||
@@ -51,6 +57,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
|
||||
await _db.Insertable(entity).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除未被填写要求引用的动态字段。
|
||||
/// </summary>
|
||||
public async Task DeleteFormFields(BaseIdListInput input)
|
||||
{
|
||||
if (input.Ids.Count == 0)
|
||||
@@ -64,6 +73,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
|
||||
await _db.Deleteable<ObFormField>().In(input.Ids).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询全部入职材料类型。
|
||||
/// </summary>
|
||||
public Task<List<ObMaterialType>> ListMaterialTypes()
|
||||
{
|
||||
return _db.Queryable<ObMaterialType>()
|
||||
@@ -71,6 +83,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增或编辑入职材料类型。
|
||||
/// </summary>
|
||||
public async Task SaveMaterialType(OnboardingMaterialTypeSaveInput input)
|
||||
{
|
||||
if (input.MaxFileCount <= 0)
|
||||
@@ -105,6 +120,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
|
||||
await _db.Insertable(entity).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除未被要求或上传记录引用的材料类型。
|
||||
/// </summary>
|
||||
public async Task DeleteMaterialTypes(BaseIdListInput input)
|
||||
{
|
||||
if (input.Ids.Count == 0)
|
||||
@@ -123,6 +141,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
|
||||
await _db.Deleteable<ObMaterialType>().In(input.Ids).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询指定公司的动态字段填写要求。
|
||||
/// </summary>
|
||||
public Task<List<ObFormRequirement>> ListFormRequirements(long companyId)
|
||||
{
|
||||
return _db.Queryable<ObFormRequirement>()
|
||||
@@ -131,6 +152,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增或编辑公司岗位动态字段要求。
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除动态字段填写要求。
|
||||
/// </summary>
|
||||
public Task DeleteFormRequirements(BaseIdListInput input)
|
||||
{
|
||||
if (input.Ids.Count == 0)
|
||||
@@ -175,6 +202,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
|
||||
return _db.Deleteable<ObFormRequirement>().In(input.Ids).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询指定公司的材料上传要求。
|
||||
/// </summary>
|
||||
public Task<List<ObMaterialRequirement>> ListMaterialRequirements(long companyId)
|
||||
{
|
||||
return _db.Queryable<ObMaterialRequirement>()
|
||||
@@ -183,6 +213,9 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增或编辑公司岗位材料要求。
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除材料上传要求。
|
||||
/// </summary>
|
||||
public Task DeleteMaterialRequirements(BaseIdListInput input)
|
||||
{
|
||||
if (input.Ids.Count == 0)
|
||||
@@ -243,5 +279,3 @@ public class OnboardingEntryConfigService : IOnboardingEntryConfigService
|
||||
throw Oops.Bah("岗位不存在、未启用或不属于该公司");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+16
-1
@@ -1,2 +1,17 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
public interface IOnboardingTaskLifecycleService : ITransient { Task Archive(OnboardingAuditActionInput input); Task Revoke(OnboardingAuditActionInput input); }
|
||||
|
||||
/// <summary>
|
||||
/// 定义入职任务撤销和归档能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingTaskLifecycleService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 归档已经审核通过的入职任务。
|
||||
/// </summary>
|
||||
Task Archive(OnboardingAuditActionInput input);
|
||||
|
||||
/// <summary>
|
||||
/// 撤销尚未归档的入职任务并使员工链接失效。
|
||||
/// </summary>
|
||||
Task Revoke(OnboardingAuditActionInput input);
|
||||
}
|
||||
|
||||
+9
-1
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 实现入职任务生命周期业务能力。
|
||||
/// </summary>
|
||||
public class OnboardingTaskLifecycleService : IOnboardingTaskLifecycleService
|
||||
{
|
||||
private readonly SqlSugarScope _db;
|
||||
@@ -11,6 +14,9 @@ public class OnboardingTaskLifecycleService : IOnboardingTaskLifecycleService
|
||||
_config = config;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 归档已审核通过的入职任务。
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 撤销入职任务并同步撤销仍然有效的员工填写链接。
|
||||
/// </summary>
|
||||
public async Task Revoke(OnboardingAuditActionInput input)
|
||||
{
|
||||
var task = await Authorize(input.TaskId);
|
||||
@@ -88,4 +97,3 @@ public class OnboardingTaskLifecycleService : IOnboardingTaskLifecycleService
|
||||
}).ExecuteCommandAsync();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+13
@@ -1,10 +1,23 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 审核候选人上传材料参数。
|
||||
/// </summary>
|
||||
public class OnboardingMaterialReviewInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 任务材料记录 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "任务资料Id不能为空")]
|
||||
public long TaskMaterialId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料审核状态。
|
||||
/// </summary>
|
||||
public string ReviewStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料审核意见。
|
||||
/// </summary>
|
||||
public string ReviewRemark { get; set; }
|
||||
}
|
||||
|
||||
+11
-1
@@ -1,2 +1,12 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
public interface IOnboardingMaterialReviewService : ITransient { Task Review(OnboardingMaterialReviewInput input); }
|
||||
|
||||
/// <summary>
|
||||
/// 定义候选人上传材料的审核能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingMaterialReviewService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 审核单份候选人上传材料。
|
||||
/// </summary>
|
||||
Task Review(OnboardingMaterialReviewInput input);
|
||||
}
|
||||
|
||||
+6
-1
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 实现候选人上传材料审核业务能力。
|
||||
/// </summary>
|
||||
public class OnboardingMaterialReviewService : IOnboardingMaterialReviewService
|
||||
{
|
||||
private readonly SqlSugarScope _db;
|
||||
@@ -11,6 +14,9 @@ public class OnboardingMaterialReviewService : IOnboardingMaterialReviewService
|
||||
_config = config;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 审核单份候选人上传材料并记录审核意见。
|
||||
/// </summary>
|
||||
public async Task Review(OnboardingMaterialReviewInput input)
|
||||
{
|
||||
if (input.ReviewStatus != TaskMaterialReviewStatus.Passed
|
||||
@@ -63,4 +69,3 @@ public class OnboardingMaterialReviewService : IOnboardingMaterialReviewService
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,23 +1,52 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 入职业务岗位分页查询参数。
|
||||
/// </summary>
|
||||
public class OnboardingPositionPageInput : BasePageInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 入职业务公司 Id。
|
||||
/// </summary>
|
||||
public long? CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 岗位名称。
|
||||
/// </summary>
|
||||
public virtual string PositionName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 启用状态或状态筛选条件。
|
||||
/// </summary>
|
||||
public string Status { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增入职业务岗位参数。
|
||||
/// </summary>
|
||||
public class OnboardingPositionAddInput : ObPosition
|
||||
{
|
||||
/// <summary>
|
||||
/// 岗位业务编码。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "岗位编码不能为空")]
|
||||
public override string PositionCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 岗位名称。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "岗位名称不能为空")]
|
||||
public override string PositionName { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑入职业务岗位参数。
|
||||
/// </summary>
|
||||
public class OnboardingPositionEditInput : OnboardingPositionAddInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "岗位Id不能为空")]
|
||||
public override long Id { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,11 +1,32 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 定义入职业务岗位业务能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingPositionService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 分页查询入职业务岗位。
|
||||
/// </summary>
|
||||
Task<SqlSugarPagedList<ObPosition>> Page(OnboardingPositionPageInput input);
|
||||
/// <summary>
|
||||
/// 查询指定公司下全部已启用岗位。
|
||||
/// </summary>
|
||||
Task<List<ObPosition>> ListEnabled(long companyId);
|
||||
/// <summary>
|
||||
/// 查询岗位详情。
|
||||
/// </summary>
|
||||
Task<ObPosition> Detail(BaseIdInput input);
|
||||
/// <summary>
|
||||
/// 新增入职业务岗位。
|
||||
/// </summary>
|
||||
Task Add(OnboardingPositionAddInput input);
|
||||
/// <summary>
|
||||
/// 编辑入职业务岗位。
|
||||
/// </summary>
|
||||
Task Edit(OnboardingPositionEditInput input);
|
||||
/// <summary>
|
||||
/// 删除未被任务或正式员工引用的岗位。
|
||||
/// </summary>
|
||||
Task Delete(BaseIdListInput input);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 实现入职业务岗位业务能力。
|
||||
/// </summary>
|
||||
public class OnboardingPositionService : DbRepository<ObPosition>, IOnboardingPositionService
|
||||
{
|
||||
/// <summary>
|
||||
/// 分页查询入职业务岗位。
|
||||
/// </summary>
|
||||
public async Task<SqlSugarPagedList<ObPosition>> Page(OnboardingPositionPageInput input)
|
||||
{
|
||||
return await Context.Queryable<ObPosition>()
|
||||
@@ -15,6 +21,9 @@ public class OnboardingPositionService : DbRepository<ObPosition>, IOnboardingPo
|
||||
.ToPagedListAsync(input.PageNum, input.PageSize);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询指定公司下全部已启用岗位。
|
||||
/// </summary>
|
||||
public Task<List<ObPosition>> ListEnabled(long companyId)
|
||||
{
|
||||
return Context.Queryable<ObPosition>()
|
||||
@@ -23,11 +32,17 @@ public class OnboardingPositionService : DbRepository<ObPosition>, IOnboardingPo
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询岗位详情。
|
||||
/// </summary>
|
||||
public async Task<ObPosition> Detail(BaseIdInput input)
|
||||
{
|
||||
return await GetByIdAsync(input.Id) ?? throw Oops.Bah("岗位不存在");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增入职业务岗位。
|
||||
/// </summary>
|
||||
public async Task Add(OnboardingPositionAddInput input)
|
||||
{
|
||||
await EnsureCompanyExists(input.CompanyId);
|
||||
@@ -35,6 +50,9 @@ public class OnboardingPositionService : DbRepository<ObPosition>, IOnboardingPo
|
||||
await InsertAsync(input.Adapt<ObPosition>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑入职业务岗位。
|
||||
/// </summary>
|
||||
public async Task Edit(OnboardingPositionEditInput input)
|
||||
{
|
||||
await Detail(new BaseIdInput { Id = input.Id });
|
||||
@@ -43,6 +61,9 @@ public class OnboardingPositionService : DbRepository<ObPosition>, IOnboardingPo
|
||||
await UpdateAsync(input.Adapt<ObPosition>());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除未被任务或正式员工引用的岗位。
|
||||
/// </summary>
|
||||
public async Task Delete(BaseIdListInput input)
|
||||
{
|
||||
if (input.Ids.Count == 0)
|
||||
|
||||
+18
@@ -1,9 +1,27 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 员工端材料上传前校验参数。
|
||||
/// </summary>
|
||||
public class OnboardingMaterialUploadValidationInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 员工填写链接中的明文 Token。
|
||||
/// </summary>
|
||||
public string Token { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料类型 Id。
|
||||
/// </summary>
|
||||
public long MaterialTypeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 待上传文件名称。
|
||||
/// </summary>
|
||||
public string FileName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 待上传文件大小,单位为字节。
|
||||
/// </summary>
|
||||
public long FileLength { get; set; }
|
||||
}
|
||||
|
||||
+47
@@ -1,38 +1,85 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 单个动态字段填写值。
|
||||
/// </summary>
|
||||
public class OnboardingDynamicValueInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 动态字段 Id。
|
||||
/// </summary>
|
||||
public long FieldId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 动态字段填写值。
|
||||
/// </summary>
|
||||
public string FieldValue { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 批量保存员工动态字段参数。
|
||||
/// </summary>
|
||||
public class OnboardingSaveDynamicValuesInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 员工填写链接中的明文 Token。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required]
|
||||
public string Token { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 待保存的字段或变量值集合。
|
||||
/// </summary>
|
||||
public List<OnboardingDynamicValueInput> Values { get; set; } = new();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存员工已上传材料参数。
|
||||
/// </summary>
|
||||
public class OnboardingSaveMaterialInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 员工填写链接中的明文 Token。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required]
|
||||
public string Token { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料类型 Id。
|
||||
/// </summary>
|
||||
public long MaterialTypeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 系统文件 Id。
|
||||
/// </summary>
|
||||
public long FileId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 员工确认阅读合同参数。
|
||||
/// </summary>
|
||||
public class OnboardingConfirmContractInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 员工填写链接中的明文 Token。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required]
|
||||
public string Token { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务合同 Id。
|
||||
/// </summary>
|
||||
public long TaskContractId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 员工提交入职资料参数。
|
||||
/// </summary>
|
||||
public class OnboardingSubmitInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 员工填写链接中的明文 Token。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required]
|
||||
public string Token { get; set; }
|
||||
}
|
||||
|
||||
+18
@@ -1,10 +1,28 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 定义员工端入职资料提交业务能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingPublicSubmissionService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 保存候选人填写的动态字段值。
|
||||
/// </summary>
|
||||
Task SaveDynamicValues(OnboardingSaveDynamicValuesInput input);
|
||||
/// <summary>
|
||||
/// 关联候选人已经上传的系统文件与材料类型。
|
||||
/// </summary>
|
||||
Task SaveMaterial(OnboardingSaveMaterialInput input);
|
||||
/// <summary>
|
||||
/// 记录候选人已阅读并确认指定任务合同。
|
||||
/// </summary>
|
||||
Task ConfirmContract(OnboardingConfirmContractInput input);
|
||||
/// <summary>
|
||||
/// 校验全部必填资料后提交入职任务进入审核。
|
||||
/// </summary>
|
||||
Task Submit(OnboardingSubmitInput input);
|
||||
/// <summary>
|
||||
/// 在保存文件前校验材料适用范围、扩展名、大小和数量。
|
||||
/// </summary>
|
||||
Task ValidateMaterialUpload(OnboardingMaterialUploadValidationInput input);
|
||||
}
|
||||
|
||||
+19
-2
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 实现员工端入职资料提交业务能力。
|
||||
/// </summary>
|
||||
public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionService
|
||||
{
|
||||
private readonly SqlSugarScope _db;
|
||||
@@ -12,6 +15,9 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
_snapshotService = snapshotService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存候选人填写的动态字段值。
|
||||
/// </summary>
|
||||
public async Task SaveDynamicValues(OnboardingSaveDynamicValuesInput input)
|
||||
{
|
||||
var task = await GetEditableTask(input.Token);
|
||||
@@ -52,6 +58,9 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 关联候选人已经上传的系统文件与材料类型。
|
||||
/// </summary>
|
||||
public async Task SaveMaterial(OnboardingSaveMaterialInput input)
|
||||
{
|
||||
var task = await GetEditableTask(input.Token);
|
||||
@@ -84,6 +93,9 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
}).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 记录候选人已阅读并确认指定任务合同。
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 校验全部必填资料后提交入职任务进入审核。
|
||||
/// </summary>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在保存文件前校验材料适用范围、扩展名、大小和数量。
|
||||
/// </summary>
|
||||
public async Task ValidateMaterialUpload(OnboardingMaterialUploadValidationInput input)
|
||||
{
|
||||
var task = await GetEditableTask(input.Token);
|
||||
@@ -262,5 +281,3 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
return task;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+12
@@ -1,8 +1,20 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 定义员工端入职任务访问业务能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingPublicTaskService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 通过有效 Token 获取员工端任务、字段、材料和合同信息。
|
||||
/// </summary>
|
||||
Task<OnboardingTaskPublicDetailOutput> Detail(OnboardingTaskPublicAccessInput input);
|
||||
/// <summary>
|
||||
/// 保存候选人固定基础信息并刷新合同变量快照。
|
||||
/// </summary>
|
||||
Task SaveEmployeeInfo(OnboardingTaskPublicSaveInput input);
|
||||
/// <summary>
|
||||
/// 校验任务归属后返回合同模板源文件 Id。
|
||||
/// </summary>
|
||||
Task<long> GetContractSourceFileId(OnboardingPublicContractSourceInput input);
|
||||
}
|
||||
|
||||
+11
-2
@@ -15,6 +15,9 @@ public class OnboardingPublicTaskService : IOnboardingPublicTaskService
|
||||
_snapshotService = snapshotService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过有效 Token 获取员工端任务、字段、材料和合同信息。
|
||||
/// </summary>
|
||||
public async Task<OnboardingTaskPublicDetailOutput> Detail(OnboardingTaskPublicAccessInput input)
|
||||
{
|
||||
var link = await GetActiveLink(input.Token);
|
||||
@@ -77,6 +80,9 @@ public class OnboardingPublicTaskService : IOnboardingPublicTaskService
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存候选人固定基础信息并刷新合同变量快照。
|
||||
/// </summary>
|
||||
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);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 校验任务归属后返回合同模板源文件 Id。
|
||||
/// </summary>
|
||||
public async Task<long> 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,20 +1,60 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 创建新员工入职任务参数。
|
||||
/// </summary>
|
||||
public class OnboardingTaskCreateInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 入职业务公司 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "公司Id不能为空")]
|
||||
public long CompanyId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职任务所属岗位 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "岗位Id不能为空")]
|
||||
public long PositionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建任务时指定的审核人用户 Id。
|
||||
/// </summary>
|
||||
public long? AssignedReviewerUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 链接过期时间;实际有效期由系统配置计算。
|
||||
/// </summary>
|
||||
public DateTime? LinkExpireAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 业务备注。
|
||||
/// </summary>
|
||||
public string Remark { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 入职任务创建结果。
|
||||
/// </summary>
|
||||
public class OnboardingTaskCreatedOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 入职任务 Id。
|
||||
/// </summary>
|
||||
public long TaskId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职任务编号。
|
||||
/// </summary>
|
||||
public string TaskNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 新生成的员工填写链接 Token,仅在创建结果中返回。
|
||||
/// </summary>
|
||||
public string LinkToken { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 员工填写链接过期时间。
|
||||
/// </summary>
|
||||
public DateTime ExpiresAt { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,61 +1,169 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 员工端通过 Token 访问任务参数。
|
||||
/// </summary>
|
||||
public class OnboardingTaskPublicAccessInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 员工填写链接中的明文 Token。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required]
|
||||
public string Token { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 员工端获取合同源文件参数。
|
||||
/// </summary>
|
||||
public class OnboardingPublicContractSourceInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 员工填写链接中的明文 Token。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required]
|
||||
public string Token { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务合同 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "任务合同Id不能为空")]
|
||||
public long TaskContractId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 员工端保存固定基础信息参数。
|
||||
/// </summary>
|
||||
public class OnboardingTaskPublicSaveInput : ObTaskEmployeeInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// 员工填写链接中的明文 Token。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required]
|
||||
public string Token { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 员工姓名。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required]
|
||||
public new string EmployeeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 手机号码。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required]
|
||||
public new string Phone { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 身份证号码。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required]
|
||||
public new string IdCardNumber { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 员工端动态字段展示信息。
|
||||
/// </summary>
|
||||
public class OnboardingPublicFormFieldOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 动态字段 Id。
|
||||
/// </summary>
|
||||
public long FieldId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 动态字段编码。
|
||||
/// </summary>
|
||||
public string FieldCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 动态字段名称。
|
||||
/// </summary>
|
||||
public string FieldName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 字段或变量数据类型。
|
||||
/// </summary>
|
||||
public string DataType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 可选项 JSON。
|
||||
/// </summary>
|
||||
public string OptionsJson { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否必填、必传或必签。
|
||||
/// </summary>
|
||||
public bool Required { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 员工端材料上传要求。
|
||||
/// </summary>
|
||||
public class OnboardingPublicMaterialOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 材料类型 Id。
|
||||
/// </summary>
|
||||
public long MaterialTypeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 材料名称。
|
||||
/// </summary>
|
||||
public string MaterialName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 允许上传的文件扩展名。
|
||||
/// </summary>
|
||||
public string AllowedExtensions { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 允许上传的最大文件数量。
|
||||
/// </summary>
|
||||
public int MaxFileCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否必填、必传或必签。
|
||||
/// </summary>
|
||||
public bool Required { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 员工端入职任务完整详情。
|
||||
/// </summary>
|
||||
public class OnboardingTaskPublicDetailOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 入职任务主数据。
|
||||
/// </summary>
|
||||
public ObOnboardingTask Task { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人固定基础信息。
|
||||
/// </summary>
|
||||
public ObTaskEmployeeInfo EmployeeInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务合同列表。
|
||||
/// </summary>
|
||||
public List<ObTaskContract> Contracts { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人已保存的动态字段值。
|
||||
/// </summary>
|
||||
public List<ObTaskFormValue> DynamicValues { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 员工端需要展示的动态字段。
|
||||
/// </summary>
|
||||
public List<OnboardingPublicFormFieldOutput> FormFields { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 员工端需要展示的材料要求。
|
||||
/// </summary>
|
||||
public List<OnboardingPublicMaterialOutput> MaterialRequirements { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人已上传材料列表。
|
||||
/// </summary>
|
||||
public List<ObTaskMaterial> Materials { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 定义入职任务创建业务能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingTaskService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 校验公司、岗位和合同范围后创建入职任务、链接及任务合同。
|
||||
/// </summary>
|
||||
Task<OnboardingTaskCreatedOutput> Create(OnboardingTaskCreateInput input);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 实现入职任务创建业务能力。
|
||||
/// </summary>
|
||||
public class OnboardingTaskService : IOnboardingTaskService
|
||||
{
|
||||
private readonly SqlSugarScope _db;
|
||||
@@ -15,6 +18,9 @@ public class OnboardingTaskService : IOnboardingTaskService
|
||||
_snapshotService = snapshotService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 校验公司、岗位和合同范围后创建入职任务、链接及任务合同。
|
||||
/// </summary>
|
||||
public async Task<OnboardingTaskCreatedOutput> Create(OnboardingTaskCreateInput input)
|
||||
{
|
||||
var companyEnabled = await _db.Queryable<ObCompany>()
|
||||
@@ -73,6 +79,7 @@ public class OnboardingTaskService : IOnboardingTaskService
|
||||
Remark = input.Remark
|
||||
};
|
||||
|
||||
// 任务、链接、合同实例和变量快照属于同一创建动作,必须保证事务一致性。
|
||||
await _db.Ado.BeginTranAsync();
|
||||
try
|
||||
{
|
||||
@@ -124,5 +131,3 @@ public class OnboardingTaskService : IOnboardingTaskService
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+82
@@ -1,43 +1,125 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 查询任务合同变量参数。
|
||||
/// </summary>
|
||||
public class OnboardingTaskContractVariableQueryInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 入职任务 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "入职任务Id不能为空")]
|
||||
public long TaskId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 批量保存任务合同变量参数。
|
||||
/// </summary>
|
||||
public class OnboardingTaskContractVariableSaveInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 任务合同 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "任务合同Id不能为空")]
|
||||
public long TaskContractId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 待保存的字段或变量值集合。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.DataAnnotations.Required(ErrorMessage = "变量不能为空")]
|
||||
public List<OnboardingTaskContractVariableValueInput> Values { get; set; } = new List<OnboardingTaskContractVariableValueInput>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 单个任务合同变量保存值。
|
||||
/// </summary>
|
||||
public class OnboardingTaskContractVariableValueInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据 Id。
|
||||
/// </summary>
|
||||
[IdNotNull(ErrorMessage = "变量Id不能为空")]
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务合同变量最终值。
|
||||
/// </summary>
|
||||
public string VariableValue { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 单份任务合同及其变量输出。
|
||||
/// </summary>
|
||||
public class OnboardingTaskContractVariableOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 任务合同 Id。
|
||||
/// </summary>
|
||||
public long TaskContractId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务合同名称。
|
||||
/// </summary>
|
||||
public string ContractName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同类型。
|
||||
/// </summary>
|
||||
public string ContractType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务合同变量列表。
|
||||
/// </summary>
|
||||
public List<OnboardingTaskContractVariableItemOutput> Variables { get; set; } = new List<OnboardingTaskContractVariableItemOutput>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 单个任务合同变量输出。
|
||||
/// </summary>
|
||||
public class OnboardingTaskContractVariableItemOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 业务数据 Id。
|
||||
/// </summary>
|
||||
public long Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同变量编码。
|
||||
/// </summary>
|
||||
public string VariableCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同变量名称。
|
||||
/// </summary>
|
||||
public string VariableName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合同变量来源类型。
|
||||
/// </summary>
|
||||
public string VariableType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 字段或变量数据类型。
|
||||
/// </summary>
|
||||
public string DataType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务合同变量最终值。
|
||||
/// </summary>
|
||||
public string VariableValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否必填、必传或必签。
|
||||
/// </summary>
|
||||
public bool Required { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 人事是否可以编辑。
|
||||
/// </summary>
|
||||
public bool HrEditable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前用户是否可以编辑该变量。
|
||||
/// </summary>
|
||||
public bool Editable { get; set; }
|
||||
}
|
||||
+9
@@ -1,7 +1,16 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 定义任务合同变量维护业务能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingTaskContractVariableService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 查询任务下全部合同及其变量当前值。
|
||||
/// </summary>
|
||||
Task<List<OnboardingTaskContractVariableOutput>> List(OnboardingTaskContractVariableQueryInput input);
|
||||
/// <summary>
|
||||
/// 保存允许人事编辑的任务合同变量值。
|
||||
/// </summary>
|
||||
Task Save(OnboardingTaskContractVariableSaveInput input);
|
||||
}
|
||||
+7
-1
@@ -10,6 +10,9 @@ public class OnboardingTaskContractVariableService : IOnboardingTaskContractVari
|
||||
public OnboardingTaskContractVariableService()
|
||||
=> _db = DbContext.DB;
|
||||
|
||||
/// <summary>
|
||||
/// 查询任务下全部合同及其变量当前值。
|
||||
/// </summary>
|
||||
public async Task<List<OnboardingTaskContractVariableOutput>> List(
|
||||
OnboardingTaskContractVariableQueryInput input)
|
||||
{
|
||||
@@ -68,6 +71,9 @@ public class OnboardingTaskContractVariableService : IOnboardingTaskContractVari
|
||||
}).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存允许人事编辑的任务合同变量值。
|
||||
/// </summary>
|
||||
public async Task Save(OnboardingTaskContractVariableSaveInput input)
|
||||
{
|
||||
var contract = await _db.Queryable<ObTaskContract>()
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +1,63 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 入职任务分页查询参数。
|
||||
/// </summary>
|
||||
public class OnboardingTaskPageInput : BasePageInput
|
||||
{
|
||||
/// <summary>
|
||||
/// 入职任务编号。
|
||||
/// </summary>
|
||||
public string TaskNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职任务状态筛选条件。
|
||||
/// </summary>
|
||||
public string TaskStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 入职业务公司 Id。
|
||||
/// </summary>
|
||||
public long? CompanyId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 后台入职任务详情输出。
|
||||
/// </summary>
|
||||
public class OnboardingTaskDetailOutput
|
||||
{
|
||||
/// <summary>
|
||||
/// 入职任务主数据。
|
||||
/// </summary>
|
||||
public ObOnboardingTask Task { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人固定基础信息。
|
||||
/// </summary>
|
||||
public ObTaskEmployeeInfo EmployeeInfo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务合同列表。
|
||||
/// </summary>
|
||||
public List<ObTaskContract> Contracts { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人已上传材料列表。
|
||||
/// </summary>
|
||||
public List<ObTaskMaterial> Materials { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 候选人动态字段值列表。
|
||||
/// </summary>
|
||||
public List<ObTaskFormValue> FormValues { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 任务当前有效链接信息。
|
||||
/// </summary>
|
||||
public ObTaskLink Link { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 提交与审核记录列表。
|
||||
/// </summary>
|
||||
public List<ObTaskAudit> Audits { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,8 +1,17 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 定义入职任务查询业务能力。
|
||||
/// </summary>
|
||||
public interface IOnboardingTaskQueryService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 分页查询后台入职任务。
|
||||
/// </summary>
|
||||
Task<SqlSugarPagedList<ObOnboardingTask>> Page(OnboardingTaskPageInput input);
|
||||
|
||||
/// <summary>
|
||||
/// 查询任务基础信息、人员资料、合同、材料、表单值、链接和审核记录。
|
||||
/// </summary>
|
||||
Task<OnboardingTaskDetailOutput> Detail(BaseIdInput input);
|
||||
}
|
||||
+16
-1
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Application;
|
||||
|
||||
/// <summary>
|
||||
/// 实现入职任务查询业务能力。
|
||||
/// </summary>
|
||||
public class OnboardingTaskQueryService : IOnboardingTaskQueryService
|
||||
{
|
||||
private readonly SqlSugarScope _db;
|
||||
@@ -9,6 +12,9 @@ public class OnboardingTaskQueryService : IOnboardingTaskQueryService
|
||||
_db = DbContext.DB;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询后台入职任务。
|
||||
/// </summary>
|
||||
public Task<SqlSugarPagedList<ObOnboardingTask>> Page(OnboardingTaskPageInput input)
|
||||
{
|
||||
return _db.Queryable<ObOnboardingTask>()
|
||||
@@ -19,6 +25,9 @@ public class OnboardingTaskQueryService : IOnboardingTaskQueryService
|
||||
.ToPagedListAsync(input.PageNum, input.PageSize);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询任务基础信息、人员资料、合同、材料、表单值、链接和审核记录。
|
||||
/// </summary>
|
||||
public async Task<OnboardingTaskDetailOutput> Detail(BaseIdInput input)
|
||||
{
|
||||
var task = await _db.Queryable<ObOnboardingTask>().InSingleAsync(input.Id)
|
||||
@@ -35,6 +44,13 @@ public class OnboardingTaskQueryService : IOnboardingTaskQueryService
|
||||
Materials = await _db.Queryable<ObTaskMaterial>()
|
||||
.Where(item => item.TaskId == task.Id)
|
||||
.ToListAsync(),
|
||||
FormValues = await _db.Queryable<ObTaskFormValue>()
|
||||
.Where(item => item.TaskId == task.Id)
|
||||
.ToListAsync(),
|
||||
Link = await _db.Queryable<ObTaskLink>()
|
||||
.Where(item => item.TaskId == task.Id && item.LinkStatus == "active")
|
||||
.OrderByDescending(item => item.CreateTime)
|
||||
.FirstAsync(),
|
||||
Audits = await _db.Queryable<ObTaskAudit>()
|
||||
.Where(item => item.TaskId == task.Id)
|
||||
.OrderByDescending(item => item.AuditedAt)
|
||||
@@ -42,4 +58,3 @@ public class OnboardingTaskQueryService : IOnboardingTaskQueryService
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供入职审核相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职审核")]
|
||||
[Route("biz/onboarding/audit")]
|
||||
[RolePermission]
|
||||
@@ -12,12 +15,18 @@ public class OnboardingAuditController
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 审核通过任务并创建正式员工档案。
|
||||
/// </summary>
|
||||
[HttpPost("approve")]
|
||||
public async Task Approve([FromBody] OnboardingAuditActionInput input)
|
||||
{
|
||||
await _service.Approve(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 退回任务并要求候选人补充资料。
|
||||
/// </summary>
|
||||
[HttpPost("reject")]
|
||||
public async Task Reject([FromBody] OnboardingAuditActionInput input)
|
||||
{
|
||||
|
||||
+21
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供入职业务公司相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职公司管理")]
|
||||
[Route("biz/onboarding/company")]
|
||||
[RolePermission]
|
||||
@@ -12,36 +15,54 @@ public class OnboardingCompanyController
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询入职业务公司。
|
||||
/// </summary>
|
||||
[HttpGet("page")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingCompanyPageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询已启用公司列表。
|
||||
/// </summary>
|
||||
[HttpGet("list-enabled")]
|
||||
public async Task<dynamic> ListEnabled()
|
||||
{
|
||||
return await _service.ListEnabled();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询公司详情。
|
||||
/// </summary>
|
||||
[HttpGet("detail")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
return await _service.Detail(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增入职业务公司。
|
||||
/// </summary>
|
||||
[HttpPost("add")]
|
||||
public async Task Add([FromBody] OnboardingCompanyAddInput input)
|
||||
{
|
||||
await _service.Add(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑入职业务公司。
|
||||
/// </summary>
|
||||
[HttpPost("edit")]
|
||||
public async Task Edit([FromBody] OnboardingCompanyEditInput input)
|
||||
{
|
||||
await _service.Edit(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除入职业务公司。
|
||||
/// </summary>
|
||||
[HttpPost("delete")]
|
||||
public async Task Delete([FromBody] BaseIdListInput input)
|
||||
{
|
||||
|
||||
+3
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供入职合同文件生成相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职合同文件")]
|
||||
[Route("biz/onboarding/contract-document")]
|
||||
[RolePermission]
|
||||
|
||||
+51
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供合同模板、版本、变量和适用范围相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职合同模板")]
|
||||
[Route("biz/onboarding/contract-template")]
|
||||
[RolePermission]
|
||||
@@ -12,96 +15,144 @@ public class OnboardingContractTemplateController
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询合同模板。
|
||||
/// </summary>
|
||||
[HttpGet("page")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingContractTemplatePageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询合同模板详情。
|
||||
/// </summary>
|
||||
[HttpGet("detail")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
return await _service.Detail(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增合同模板。
|
||||
/// </summary>
|
||||
[HttpPost("add")]
|
||||
public async Task Add([FromBody] OnboardingContractTemplateAddInput input)
|
||||
{
|
||||
await _service.Add(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑合同模板。
|
||||
/// </summary>
|
||||
[HttpPost("edit")]
|
||||
public async Task Edit([FromBody] OnboardingContractTemplateEditInput input)
|
||||
{
|
||||
await _service.Edit(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除合同模板。
|
||||
/// </summary>
|
||||
[HttpPost("delete")]
|
||||
public async Task Delete([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.Delete(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询合同模板版本。
|
||||
/// </summary>
|
||||
[HttpGet("version/page")]
|
||||
public async Task<dynamic> VersionPage([FromQuery] OnboardingContractVersionPageInput input)
|
||||
{
|
||||
return await _service.VersionPage(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增合同模板版本。
|
||||
/// </summary>
|
||||
[HttpPost("version/add")]
|
||||
public async Task AddVersion([FromBody] OnboardingContractVersionAddInput input)
|
||||
{
|
||||
await _service.AddVersion(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置合同模板版本状态。
|
||||
/// </summary>
|
||||
[HttpPost("version/set-status")]
|
||||
public async Task SetVersionStatus([FromBody] OnboardingContractVersionStatusInput input)
|
||||
{
|
||||
await _service.SetVersionStatus(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询模板变量。
|
||||
/// </summary>
|
||||
[HttpGet("variable/page")]
|
||||
public async Task<dynamic> VariablePage([FromQuery] OnboardingTemplateVariablePageInput input)
|
||||
{
|
||||
return await _service.VariablePage(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增模板变量。
|
||||
/// </summary>
|
||||
[HttpPost("variable/add")]
|
||||
public async Task AddVariable([FromBody] OnboardingTemplateVariableAddInput input)
|
||||
{
|
||||
await _service.AddVariable(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑模板变量。
|
||||
/// </summary>
|
||||
[HttpPost("variable/edit")]
|
||||
public async Task EditVariable([FromBody] OnboardingTemplateVariableEditInput input)
|
||||
{
|
||||
await _service.EditVariable(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除模板变量。
|
||||
/// </summary>
|
||||
[HttpPost("variable/delete")]
|
||||
public async Task DeleteVariable([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.DeleteVariable(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询合同适用范围。
|
||||
/// </summary>
|
||||
[HttpGet("scope/page")]
|
||||
public async Task<dynamic> ScopePage([FromQuery] OnboardingContractScopePageInput input)
|
||||
{
|
||||
return await _service.ScopePage(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增合同适用范围。
|
||||
/// </summary>
|
||||
[HttpPost("scope/add")]
|
||||
public async Task AddScope([FromBody] OnboardingContractScopeAddInput input)
|
||||
{
|
||||
await _service.AddScope(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑合同适用范围。
|
||||
/// </summary>
|
||||
[HttpPost("scope/edit")]
|
||||
public async Task EditScope([FromBody] OnboardingContractScopeEditInput input)
|
||||
{
|
||||
await _service.EditScope(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除合同适用范围。
|
||||
/// </summary>
|
||||
[HttpPost("scope/delete")]
|
||||
public async Task DeleteScope([FromBody] BaseIdListInput input)
|
||||
{
|
||||
|
||||
+9
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供正式员工档案相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职正式员工档案")]
|
||||
[Route("biz/onboarding/employee")]
|
||||
[RolePermission]
|
||||
@@ -12,12 +15,18 @@ public class OnboardingEmployeeController
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询正式员工档案。
|
||||
/// </summary>
|
||||
[HttpGet("page")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingEmployeePageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询正式员工详情及来源记录。
|
||||
/// </summary>
|
||||
[HttpGet("detail")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
|
||||
+39
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供入职字段与材料要求配置相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职填写与材料配置")]
|
||||
[Route("biz/onboarding/entry-config")]
|
||||
[RolePermission]
|
||||
@@ -12,72 +15,108 @@ public class OnboardingEntryConfigController
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询动态入职字段。
|
||||
/// </summary>
|
||||
[HttpGet("form-field/list")]
|
||||
public async Task<dynamic> ListFormFields()
|
||||
{
|
||||
return await _service.ListFormFields();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存动态入职字段。
|
||||
/// </summary>
|
||||
[HttpPost("form-field/save")]
|
||||
public async Task SaveFormField([FromBody] OnboardingFormFieldSaveInput input)
|
||||
{
|
||||
await _service.SaveFormField(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除动态入职字段。
|
||||
/// </summary>
|
||||
[HttpPost("form-field/delete")]
|
||||
public async Task DeleteFormFields([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.DeleteFormFields(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询入职材料类型。
|
||||
/// </summary>
|
||||
[HttpGet("material-type/list")]
|
||||
public async Task<dynamic> ListMaterialTypes()
|
||||
{
|
||||
return await _service.ListMaterialTypes();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存入职材料类型。
|
||||
/// </summary>
|
||||
[HttpPost("material-type/save")]
|
||||
public async Task SaveMaterialType([FromBody] OnboardingMaterialTypeSaveInput input)
|
||||
{
|
||||
await _service.SaveMaterialType(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除入职材料类型。
|
||||
/// </summary>
|
||||
[HttpPost("material-type/delete")]
|
||||
public async Task DeleteMaterialTypes([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.DeleteMaterialTypes(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询公司岗位动态字段要求。
|
||||
/// </summary>
|
||||
[HttpGet("form-requirement/list")]
|
||||
public async Task<dynamic> ListFormRequirements([FromQuery] long companyId)
|
||||
{
|
||||
return await _service.ListFormRequirements(companyId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存公司岗位动态字段要求。
|
||||
/// </summary>
|
||||
[HttpPost("form-requirement/save")]
|
||||
public async Task SaveFormRequirement([FromBody] OnboardingFormRequirementSaveInput input)
|
||||
{
|
||||
await _service.SaveFormRequirement(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除动态字段要求。
|
||||
/// </summary>
|
||||
[HttpPost("form-requirement/delete")]
|
||||
public async Task DeleteFormRequirements([FromBody] BaseIdListInput input)
|
||||
{
|
||||
await _service.DeleteFormRequirements(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询公司岗位材料要求。
|
||||
/// </summary>
|
||||
[HttpGet("material-requirement/list")]
|
||||
public async Task<dynamic> ListMaterialRequirements([FromQuery] long companyId)
|
||||
{
|
||||
return await _service.ListMaterialRequirements(companyId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存公司岗位材料要求。
|
||||
/// </summary>
|
||||
[HttpPost("material-requirement/save")]
|
||||
public async Task SaveMaterialRequirement([FromBody] OnboardingMaterialRequirementSaveInput input)
|
||||
{
|
||||
await _service.SaveMaterialRequirement(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除材料要求。
|
||||
/// </summary>
|
||||
[HttpPost("material-requirement/delete")]
|
||||
public async Task DeleteMaterialRequirements([FromBody] BaseIdListInput input)
|
||||
{
|
||||
|
||||
+6
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供候选人材料审核相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职资料审核")]
|
||||
[Route("biz/onboarding/material")]
|
||||
[RolePermission]
|
||||
@@ -12,6 +15,9 @@ public class OnboardingMaterialReviewController
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 审核候选人上传的材料。
|
||||
/// </summary>
|
||||
[HttpPost("review")]
|
||||
public async Task Review([FromBody] OnboardingMaterialReviewInput input)
|
||||
{
|
||||
|
||||
+21
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供入职业务岗位相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职岗位管理")]
|
||||
[Route("biz/onboarding/position")]
|
||||
[RolePermission]
|
||||
@@ -12,36 +15,54 @@ public class OnboardingPositionController
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询入职业务岗位。
|
||||
/// </summary>
|
||||
[HttpGet("page")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingPositionPageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询指定公司的已启用岗位。
|
||||
/// </summary>
|
||||
[HttpGet("list-enabled")]
|
||||
public async Task<dynamic> ListEnabled([FromQuery] long companyId)
|
||||
{
|
||||
return await _service.ListEnabled(companyId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询岗位详情。
|
||||
/// </summary>
|
||||
[HttpGet("detail")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
return await _service.Detail(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 新增入职业务岗位。
|
||||
/// </summary>
|
||||
[HttpPost("add")]
|
||||
public async Task Add([FromBody] OnboardingPositionAddInput input)
|
||||
{
|
||||
await _service.Add(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 编辑入职业务岗位。
|
||||
/// </summary>
|
||||
[HttpPost("edit")]
|
||||
public async Task Edit([FromBody] OnboardingPositionEditInput input)
|
||||
{
|
||||
await _service.Edit(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除入职业务岗位。
|
||||
/// </summary>
|
||||
[HttpPost("delete")]
|
||||
public async Task Delete([FromBody] BaseIdListInput input)
|
||||
{
|
||||
|
||||
+18
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供员工端资料提交相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "员工入职提交")]
|
||||
[Route("open/onboarding")]
|
||||
[AllowAnonymous]
|
||||
@@ -14,30 +17,45 @@ public class OnboardingPublicSubmissionController
|
||||
_fileService = fileService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存员工动态字段。
|
||||
/// </summary>
|
||||
[HttpPost("save-dynamic-values")]
|
||||
public async Task SaveDynamicValues([FromBody] OnboardingSaveDynamicValuesInput input)
|
||||
{
|
||||
await _service.SaveDynamicValues(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存员工已上传材料记录。
|
||||
/// </summary>
|
||||
[HttpPost("save-material")]
|
||||
public async Task SaveMaterial([FromBody] OnboardingSaveMaterialInput input)
|
||||
{
|
||||
await _service.SaveMaterial(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 确认已阅读指定合同。
|
||||
/// </summary>
|
||||
[HttpPost("confirm-contract")]
|
||||
public async Task ConfirmContract([FromBody] OnboardingConfirmContractInput input)
|
||||
{
|
||||
await _service.ConfirmContract(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 提交入职资料进入审核。
|
||||
/// </summary>
|
||||
[HttpPost("submit")]
|
||||
public async Task Submit([FromBody] OnboardingSubmitInput input)
|
||||
{
|
||||
await _service.Submit(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 校验并上传员工入职材料。
|
||||
/// </summary>
|
||||
[HttpPost("upload-material")]
|
||||
[Consumes("multipart/form-data")]
|
||||
[RequestSizeLimit(20 * 1024 * 1024)]
|
||||
|
||||
+12
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供员工端入职任务访问相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "员工入职填写")]
|
||||
[Route("open/onboarding")]
|
||||
[AllowAnonymous]
|
||||
@@ -14,18 +17,27 @@ public class OnboardingPublicTaskController
|
||||
_fileService = fileService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过 Token 获取员工端入职任务详情。
|
||||
/// </summary>
|
||||
[HttpPost("detail")]
|
||||
public async Task<dynamic> Detail([FromBody] OnboardingTaskPublicAccessInput input)
|
||||
{
|
||||
return await _service.Detail(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存候选人固定基础信息。
|
||||
/// </summary>
|
||||
[HttpPost("save-employee-info")]
|
||||
public async Task SaveEmployeeInfo([FromBody] OnboardingTaskPublicSaveInput input)
|
||||
{
|
||||
await _service.SaveEmployeeInfo(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 下载当前任务锁定的合同模板源文件。
|
||||
/// </summary>
|
||||
[HttpGet("contract-source")]
|
||||
public async Task<FileStreamResult> ContractSource([FromQuery] OnboardingPublicContractSourceInput input)
|
||||
{
|
||||
|
||||
+9
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供任务合同变量维护相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职任务合同参数")]
|
||||
[Route("biz/onboarding/task-contract-variable")]
|
||||
[RolePermission]
|
||||
@@ -12,12 +15,18 @@ public class OnboardingTaskContractVariableController
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询任务合同变量。
|
||||
/// </summary>
|
||||
[HttpGet("list")]
|
||||
public async Task<dynamic> List([FromQuery] OnboardingTaskContractVariableQueryInput input)
|
||||
{
|
||||
return await _service.List(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 保存任务合同变量。
|
||||
/// </summary>
|
||||
[HttpPost("save")]
|
||||
public async Task Save([FromBody] OnboardingTaskContractVariableSaveInput input)
|
||||
{
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供入职任务创建相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职任务")]
|
||||
[Route("biz/onboarding/task")]
|
||||
[RolePermission]
|
||||
@@ -12,6 +15,9 @@ public class OnboardingTaskController
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建入职任务并返回员工填写链接。
|
||||
/// </summary>
|
||||
[HttpPost("create")]
|
||||
public async Task<dynamic> Create([FromBody] OnboardingTaskCreateInput input)
|
||||
{
|
||||
|
||||
+9
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供入职任务生命周期相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职任务归档")]
|
||||
[Route("biz/onboarding/task")]
|
||||
[RolePermission]
|
||||
@@ -12,12 +15,18 @@ public class OnboardingTaskLifecycleController
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 归档审核通过的入职任务。
|
||||
/// </summary>
|
||||
[HttpPost("archive")]
|
||||
public async Task Archive([FromBody] OnboardingAuditActionInput input)
|
||||
{
|
||||
await _service.Archive(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 撤销入职任务及员工填写链接。
|
||||
/// </summary>
|
||||
[HttpPost("revoke")]
|
||||
public async Task Revoke([FromBody] OnboardingAuditActionInput input)
|
||||
{
|
||||
|
||||
+9
@@ -1,5 +1,8 @@
|
||||
namespace SimpleAdmin.Web.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 提供入职任务查询相关 HTTP 接口。
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings("Application", Tag = "入职任务查询")]
|
||||
[Route("biz/onboarding/task")]
|
||||
[RolePermission]
|
||||
@@ -12,12 +15,18 @@ public class OnboardingTaskQueryController
|
||||
_service = service;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询入职任务。
|
||||
/// </summary>
|
||||
[HttpGet("page")]
|
||||
public async Task<dynamic> Page([FromQuery] OnboardingTaskPageInput input)
|
||||
{
|
||||
return await _service.Page(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询入职任务完整详情。
|
||||
/// </summary>
|
||||
[HttpGet("detail")]
|
||||
public async Task<dynamic> Detail([FromQuery] BaseIdInput input)
|
||||
{
|
||||
|
||||
@@ -26,11 +26,381 @@
|
||||
模拟 Configure
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingAuditController">
|
||||
<summary>
|
||||
提供入职审核相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingAuditController.Approve(SimpleAdmin.Application.OnboardingAuditActionInput)">
|
||||
<summary>
|
||||
审核通过任务并创建正式员工档案。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingAuditController.Reject(SimpleAdmin.Application.OnboardingAuditActionInput)">
|
||||
<summary>
|
||||
退回任务并要求候选人补充资料。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingCompanyController">
|
||||
<summary>
|
||||
提供入职业务公司相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingCompanyController.Page(SimpleAdmin.Application.OnboardingCompanyPageInput)">
|
||||
<summary>
|
||||
分页查询入职业务公司。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingCompanyController.ListEnabled">
|
||||
<summary>
|
||||
查询已启用公司列表。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingCompanyController.Detail(SimpleAdmin.Core.BaseIdInput)">
|
||||
<summary>
|
||||
查询公司详情。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingCompanyController.Add(SimpleAdmin.Application.OnboardingCompanyAddInput)">
|
||||
<summary>
|
||||
新增入职业务公司。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingCompanyController.Edit(SimpleAdmin.Application.OnboardingCompanyEditInput)">
|
||||
<summary>
|
||||
编辑入职业务公司。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingCompanyController.Delete(SimpleAdmin.Core.BaseIdListInput)">
|
||||
<summary>
|
||||
删除入职业务公司。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingContractDocumentController">
|
||||
<summary>
|
||||
提供入职合同文件生成相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractDocumentController.Generate(SimpleAdmin.Application.OnboardingGenerateContractInput)">
|
||||
<summary>
|
||||
生成入职合同文件
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingContractTemplateController">
|
||||
<summary>
|
||||
提供合同模板、版本、变量和适用范围相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.Page(SimpleAdmin.Application.OnboardingContractTemplatePageInput)">
|
||||
<summary>
|
||||
分页查询合同模板。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.Detail(SimpleAdmin.Core.BaseIdInput)">
|
||||
<summary>
|
||||
查询合同模板详情。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.Add(SimpleAdmin.Application.OnboardingContractTemplateAddInput)">
|
||||
<summary>
|
||||
新增合同模板。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.Edit(SimpleAdmin.Application.OnboardingContractTemplateEditInput)">
|
||||
<summary>
|
||||
编辑合同模板。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.Delete(SimpleAdmin.Core.BaseIdListInput)">
|
||||
<summary>
|
||||
删除合同模板。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.VersionPage(SimpleAdmin.Application.OnboardingContractVersionPageInput)">
|
||||
<summary>
|
||||
分页查询合同模板版本。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.AddVersion(SimpleAdmin.Application.OnboardingContractVersionAddInput)">
|
||||
<summary>
|
||||
新增合同模板版本。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.SetVersionStatus(SimpleAdmin.Application.OnboardingContractVersionStatusInput)">
|
||||
<summary>
|
||||
设置合同模板版本状态。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.VariablePage(SimpleAdmin.Application.OnboardingTemplateVariablePageInput)">
|
||||
<summary>
|
||||
分页查询模板变量。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.AddVariable(SimpleAdmin.Application.OnboardingTemplateVariableAddInput)">
|
||||
<summary>
|
||||
新增模板变量。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.EditVariable(SimpleAdmin.Application.OnboardingTemplateVariableEditInput)">
|
||||
<summary>
|
||||
编辑模板变量。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.DeleteVariable(SimpleAdmin.Core.BaseIdListInput)">
|
||||
<summary>
|
||||
删除模板变量。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.ScopePage(SimpleAdmin.Application.OnboardingContractScopePageInput)">
|
||||
<summary>
|
||||
分页查询合同适用范围。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.AddScope(SimpleAdmin.Application.OnboardingContractScopeAddInput)">
|
||||
<summary>
|
||||
新增合同适用范围。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.EditScope(SimpleAdmin.Application.OnboardingContractScopeEditInput)">
|
||||
<summary>
|
||||
编辑合同适用范围。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingContractTemplateController.DeleteScope(SimpleAdmin.Core.BaseIdListInput)">
|
||||
<summary>
|
||||
删除合同适用范围。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingEmployeeController">
|
||||
<summary>
|
||||
提供正式员工档案相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEmployeeController.Page(SimpleAdmin.Application.OnboardingEmployeePageInput)">
|
||||
<summary>
|
||||
分页查询正式员工档案。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEmployeeController.Detail(SimpleAdmin.Core.BaseIdInput)">
|
||||
<summary>
|
||||
查询正式员工详情及来源记录。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingEntryConfigController">
|
||||
<summary>
|
||||
提供入职字段与材料要求配置相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEntryConfigController.ListFormFields">
|
||||
<summary>
|
||||
查询动态入职字段。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEntryConfigController.SaveFormField(SimpleAdmin.Application.OnboardingFormFieldSaveInput)">
|
||||
<summary>
|
||||
保存动态入职字段。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEntryConfigController.DeleteFormFields(SimpleAdmin.Core.BaseIdListInput)">
|
||||
<summary>
|
||||
删除动态入职字段。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEntryConfigController.ListMaterialTypes">
|
||||
<summary>
|
||||
查询入职材料类型。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEntryConfigController.SaveMaterialType(SimpleAdmin.Application.OnboardingMaterialTypeSaveInput)">
|
||||
<summary>
|
||||
保存入职材料类型。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEntryConfigController.DeleteMaterialTypes(SimpleAdmin.Core.BaseIdListInput)">
|
||||
<summary>
|
||||
删除入职材料类型。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEntryConfigController.ListFormRequirements(System.Int64)">
|
||||
<summary>
|
||||
查询公司岗位动态字段要求。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEntryConfigController.SaveFormRequirement(SimpleAdmin.Application.OnboardingFormRequirementSaveInput)">
|
||||
<summary>
|
||||
保存公司岗位动态字段要求。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEntryConfigController.DeleteFormRequirements(SimpleAdmin.Core.BaseIdListInput)">
|
||||
<summary>
|
||||
删除动态字段要求。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEntryConfigController.ListMaterialRequirements(System.Int64)">
|
||||
<summary>
|
||||
查询公司岗位材料要求。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEntryConfigController.SaveMaterialRequirement(SimpleAdmin.Application.OnboardingMaterialRequirementSaveInput)">
|
||||
<summary>
|
||||
保存公司岗位材料要求。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingEntryConfigController.DeleteMaterialRequirements(SimpleAdmin.Core.BaseIdListInput)">
|
||||
<summary>
|
||||
删除材料要求。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingMaterialReviewController">
|
||||
<summary>
|
||||
提供候选人材料审核相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingMaterialReviewController.Review(SimpleAdmin.Application.OnboardingMaterialReviewInput)">
|
||||
<summary>
|
||||
审核候选人上传的材料。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingPositionController">
|
||||
<summary>
|
||||
提供入职业务岗位相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPositionController.Page(SimpleAdmin.Application.OnboardingPositionPageInput)">
|
||||
<summary>
|
||||
分页查询入职业务岗位。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPositionController.ListEnabled(System.Int64)">
|
||||
<summary>
|
||||
查询指定公司的已启用岗位。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPositionController.Detail(SimpleAdmin.Core.BaseIdInput)">
|
||||
<summary>
|
||||
查询岗位详情。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPositionController.Add(SimpleAdmin.Application.OnboardingPositionAddInput)">
|
||||
<summary>
|
||||
新增入职业务岗位。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPositionController.Edit(SimpleAdmin.Application.OnboardingPositionEditInput)">
|
||||
<summary>
|
||||
编辑入职业务岗位。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPositionController.Delete(SimpleAdmin.Core.BaseIdListInput)">
|
||||
<summary>
|
||||
删除入职业务岗位。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingPublicSubmissionController">
|
||||
<summary>
|
||||
提供员工端资料提交相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPublicSubmissionController.SaveDynamicValues(SimpleAdmin.Application.OnboardingSaveDynamicValuesInput)">
|
||||
<summary>
|
||||
保存员工动态字段。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPublicSubmissionController.SaveMaterial(SimpleAdmin.Application.OnboardingSaveMaterialInput)">
|
||||
<summary>
|
||||
保存员工已上传材料记录。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPublicSubmissionController.ConfirmContract(SimpleAdmin.Application.OnboardingConfirmContractInput)">
|
||||
<summary>
|
||||
确认已阅读指定合同。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPublicSubmissionController.Submit(SimpleAdmin.Application.OnboardingSubmitInput)">
|
||||
<summary>
|
||||
提交入职资料进入审核。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPublicSubmissionController.UploadMaterial(System.String,System.Int64,Microsoft.AspNetCore.Http.IFormFile)">
|
||||
<summary>
|
||||
校验并上传员工入职材料。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingPublicTaskController">
|
||||
<summary>
|
||||
提供员工端入职任务访问相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPublicTaskController.Detail(SimpleAdmin.Application.OnboardingTaskPublicAccessInput)">
|
||||
<summary>
|
||||
通过 Token 获取员工端入职任务详情。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPublicTaskController.SaveEmployeeInfo(SimpleAdmin.Application.OnboardingTaskPublicSaveInput)">
|
||||
<summary>
|
||||
保存候选人固定基础信息。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingPublicTaskController.ContractSource(SimpleAdmin.Application.OnboardingPublicContractSourceInput)">
|
||||
<summary>
|
||||
下载当前任务锁定的合同模板源文件。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingTaskContractVariableController">
|
||||
<summary>
|
||||
提供任务合同变量维护相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingTaskContractVariableController.List(SimpleAdmin.Application.OnboardingTaskContractVariableQueryInput)">
|
||||
<summary>
|
||||
查询任务合同变量。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingTaskContractVariableController.Save(SimpleAdmin.Application.OnboardingTaskContractVariableSaveInput)">
|
||||
<summary>
|
||||
保存任务合同变量。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingTaskController">
|
||||
<summary>
|
||||
提供入职任务创建相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingTaskController.Create(SimpleAdmin.Application.OnboardingTaskCreateInput)">
|
||||
<summary>
|
||||
创建入职任务并返回员工填写链接。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingTaskLifecycleController">
|
||||
<summary>
|
||||
提供入职任务生命周期相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingTaskLifecycleController.Archive(SimpleAdmin.Application.OnboardingAuditActionInput)">
|
||||
<summary>
|
||||
归档审核通过的入职任务。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingTaskLifecycleController.Revoke(SimpleAdmin.Application.OnboardingAuditActionInput)">
|
||||
<summary>
|
||||
撤销入职任务及员工填写链接。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.OnboardingTaskQueryController">
|
||||
<summary>
|
||||
提供入职任务查询相关 HTTP 接口。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingTaskQueryController.Page(SimpleAdmin.Application.OnboardingTaskPageInput)">
|
||||
<summary>
|
||||
分页查询入职任务。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Web.Core.OnboardingTaskQueryController.Detail(SimpleAdmin.Core.BaseIdInput)">
|
||||
<summary>
|
||||
查询入职任务完整详情。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Web.Core.BizOrgController">
|
||||
<summary>
|
||||
机构管理控制器
|
||||
|
||||
Reference in New Issue
Block a user