调整
This commit is contained in:
+6
-1
@@ -45,13 +45,18 @@ public interface IOnboardingContractTemplateService : ITransient
|
||||
/// </summary>
|
||||
Task SetVersionStatus(OnboardingContractVersionStatusInput input);
|
||||
|
||||
/// <summary>
|
||||
/// 删除未被入职模板或任务使用的合同版本。
|
||||
/// </summary>
|
||||
Task DeleteVersion(BaseIdInput input);
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询指定模板版本自动识别出的变量。
|
||||
/// </summary>
|
||||
Task<SqlSugarPagedList<ObTemplateVariable>> VariablePage(OnboardingTemplateVariablePageInput input);
|
||||
|
||||
/// <summary>
|
||||
/// 编辑并确认草稿模板版本中的变量定义。
|
||||
/// 编辑并确认模板版本中的变量定义。
|
||||
/// </summary>
|
||||
Task EditVariable(OnboardingTemplateVariableEditInput input);
|
||||
}
|
||||
+79
-24
@@ -11,6 +11,7 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
{
|
||||
_fileService = fileService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询合同模板主档案。
|
||||
/// </summary>
|
||||
@@ -55,34 +56,92 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除未被版本、适用范围或任务合同引用的模板。
|
||||
/// 删除未被入职模板或任务合同引用的模板(级联删除未使用的版本和变量)。
|
||||
/// </summary>
|
||||
public async Task Delete(BaseIdListInput input)
|
||||
{
|
||||
if (input.Ids.Count == 0)
|
||||
return;
|
||||
|
||||
var hasVersions = await Context.Queryable<ObContractTemplateVersion>()
|
||||
.AnyAsync(it => input.Ids.Contains(it.TemplateId));
|
||||
if (hasVersions)
|
||||
throw Oops.Bah("模板已有版本,不能删除");
|
||||
|
||||
var hasScopes = await Context.Queryable<ObContractScope>()
|
||||
.AnyAsync(it => input.Ids.Contains(it.TemplateId));
|
||||
if (hasScopes)
|
||||
throw Oops.Bah("模板已配置旧版适用范围,不能删除");
|
||||
|
||||
var hasOnboardingTemplates = await Context.Queryable<ObOnboardingTemplateContract>()
|
||||
.AnyAsync(it => input.Ids.Contains(it.ContractTemplateId));
|
||||
if (hasOnboardingTemplates)
|
||||
throw Oops.Bah("模板已被入职模板引用,不能删除");
|
||||
throw Oops.Bah("模板已被入职模板引用,不能删除,请先在入职模板中移除关联");
|
||||
|
||||
var hasContracts = await Context.Queryable<ObTaskContract>()
|
||||
.AnyAsync(it => input.Ids.Contains(it.TemplateId));
|
||||
if (hasContracts)
|
||||
throw Oops.Bah("模板已生成入职合同,不能删除");
|
||||
throw Oops.Bah("模板已生成入职任务合同,不能删除,可改为停用");
|
||||
|
||||
await DeleteByIdsAsync(input.Ids.Cast<object>().ToArray());
|
||||
var versionIds = await Context.Queryable<ObContractTemplateVersion>()
|
||||
.Where(it => input.Ids.Contains(it.TemplateId))
|
||||
.Select(it => it.Id)
|
||||
.ToListAsync();
|
||||
|
||||
await Context.Ado.BeginTranAsync();
|
||||
try
|
||||
{
|
||||
if (versionIds.Count > 0)
|
||||
{
|
||||
await Context.Deleteable<ObTemplateVariable>()
|
||||
.Where(it => versionIds.Contains(it.TemplateVersionId))
|
||||
.ExecuteCommandAsync();
|
||||
await Context.Deleteable<ObContractTemplateVersion>()
|
||||
.In(versionIds)
|
||||
.ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
await Context.Deleteable<ObContractScope>()
|
||||
.Where(it => input.Ids.Contains(it.TemplateId))
|
||||
.ExecuteCommandAsync();
|
||||
|
||||
await DeleteByIdsAsync(input.Ids.Cast<object>().ToArray());
|
||||
await Context.Ado.CommitTranAsync();
|
||||
}
|
||||
catch
|
||||
{
|
||||
await Context.Ado.RollbackTranAsync();
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除未被入职模板或任务使用的合同版本。
|
||||
/// </summary>
|
||||
public async Task DeleteVersion(BaseIdInput input)
|
||||
{
|
||||
var version = await Context.Queryable<ObContractTemplateVersion>().InSingleAsync(input.Id)
|
||||
?? throw Oops.Bah("合同版本不存在");
|
||||
|
||||
var isUsedInOnboardingTemplate = await Context.Queryable<ObOnboardingTemplateContract>()
|
||||
.AnyAsync(it => it.ContractTemplateVersionId == version.Id);
|
||||
if (isUsedInOnboardingTemplate)
|
||||
throw Oops.Bah("该版本已被入职模板引用,不能删除,请先在入职模板中移除关联");
|
||||
|
||||
var isUsedInTask = await Context.Queryable<ObTaskContract>()
|
||||
.AnyAsync(it => it.TemplateVersionId == version.Id);
|
||||
if (isUsedInTask)
|
||||
throw Oops.Bah("该版本已用于实际入职任务,不能删除,可改为停用");
|
||||
|
||||
await Context.Ado.BeginTranAsync();
|
||||
try
|
||||
{
|
||||
await Context.Deleteable<ObTemplateVariable>()
|
||||
.Where(it => it.TemplateVersionId == version.Id)
|
||||
.ExecuteCommandAsync();
|
||||
await Context.Deleteable<ObContractScope>()
|
||||
.Where(it => it.TemplateVersionId == version.Id)
|
||||
.ExecuteCommandAsync();
|
||||
await Context.Deleteable<ObContractTemplateVersion>()
|
||||
.In(version.Id)
|
||||
.ExecuteCommandAsync();
|
||||
await Context.Ado.CommitTranAsync();
|
||||
}
|
||||
catch
|
||||
{
|
||||
await Context.Ado.RollbackTranAsync();
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -183,7 +242,7 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
.ToPagedListAsync(input.PageNum, input.PageSize);
|
||||
}
|
||||
/// <summary>
|
||||
/// 编辑草稿模板版本中自动识别出的变量,不允许修改 DOCX 占位符编码。
|
||||
/// 编辑模板版本中自动识别出的变量,不允许修改 DOCX 占位符编码。
|
||||
/// </summary>
|
||||
public async Task EditVariable(OnboardingTemplateVariableEditInput input)
|
||||
{
|
||||
@@ -194,7 +253,11 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
if (!string.Equals(variable.VariableCode, input.VariableCode, StringComparison.Ordinal))
|
||||
throw Oops.Bah("DOCX 占位符编码由系统识别,不能修改");
|
||||
|
||||
await EnsureVersionDraft(input.TemplateVersionId);
|
||||
var isUsedInTask = await Context.Queryable<ObTaskContract>()
|
||||
.AnyAsync(it => it.TemplateVersionId == input.TemplateVersionId);
|
||||
if (isUsedInTask)
|
||||
throw Oops.Bah("该版本已生成实际入职任务合同,变量配置已锁定");
|
||||
|
||||
var entity = input.Adapt<ObTemplateVariable>();
|
||||
entity.VariableCode = variable.VariableCode;
|
||||
await Context.Updateable(entity).ExecuteCommandAsync();
|
||||
@@ -255,12 +318,4 @@ public class OnboardingContractTemplateService : DbRepository<ObContractTemplate
|
||||
if (exists)
|
||||
throw Oops.Bah("模板编码已存在");
|
||||
}
|
||||
|
||||
private async Task EnsureVersionDraft(long versionId)
|
||||
{
|
||||
var version = await Context.Queryable<ObContractTemplateVersion>().InSingleAsync(versionId)
|
||||
?? throw Oops.Bah("模板版本不存在");
|
||||
if (version.VersionStatus != ContractTemplateVersionStatus.Draft)
|
||||
throw Oops.Bah("只有草稿版本可维护变量");
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -14,4 +14,9 @@ public interface IOnboardingTaskLifecycleService : ITransient
|
||||
/// 撤销尚未归档的入职任务并使员工链接失效。
|
||||
/// </summary>
|
||||
Task Revoke(OnboardingAuditActionInput input);
|
||||
|
||||
/// <summary>
|
||||
/// 删除已撤销的入职任务及其全部关联快照数据。
|
||||
/// </summary>
|
||||
Task Delete(BaseIdInput input);
|
||||
}
|
||||
|
||||
+44
@@ -55,6 +55,50 @@ public class OnboardingTaskLifecycleService : IOnboardingTaskLifecycleService
|
||||
await Log(task, OnboardingAuditAction.Revoke, input.AuditOpinion);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除已撤销的入职任务及其全部关联快照数据。
|
||||
/// </summary>
|
||||
public async Task Delete(BaseIdInput input)
|
||||
{
|
||||
var task = await Authorize(input.Id);
|
||||
if (task.TaskStatus != OnboardingTaskStatus.Revoked)
|
||||
{
|
||||
throw Oops.Bah("仅已撤销的任务可以删除");
|
||||
}
|
||||
|
||||
await _db.Ado.BeginTranAsync();
|
||||
try
|
||||
{
|
||||
var taskContractIds = await _db.Queryable<ObTaskContract>()
|
||||
.Where(x => x.TaskId == task.Id)
|
||||
.Select(x => x.Id)
|
||||
.ToListAsync();
|
||||
|
||||
if (taskContractIds.Count > 0)
|
||||
{
|
||||
await _db.Deleteable<ObTaskContractVariable>()
|
||||
.Where(x => taskContractIds.Contains(x.TaskContractId))
|
||||
.ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
await _db.Deleteable<ObTaskContract>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
|
||||
await _db.Deleteable<ObTaskLink>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
|
||||
await _db.Deleteable<ObTaskFormRequirement>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
|
||||
await _db.Deleteable<ObTaskMaterialRequirement>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
|
||||
await _db.Deleteable<ObTaskMaterial>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
|
||||
await _db.Deleteable<ObTaskFormValue>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
|
||||
await _db.Deleteable<ObTaskEmployeeInfo>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
|
||||
await _db.Deleteable<ObTaskAudit>().Where(x => x.TaskId == task.Id).ExecuteCommandAsync();
|
||||
await _db.Deleteable<ObOnboardingTask>().In(task.Id).ExecuteCommandAsync();
|
||||
await _db.Ado.CommitTranAsync();
|
||||
}
|
||||
catch
|
||||
{
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<ObOnboardingTask> Authorize(long taskId)
|
||||
{
|
||||
var task = await _db.Queryable<ObOnboardingTask>().InSingleAsync(taskId)
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ namespace SimpleAdmin.Application;
|
||||
/// <summary>
|
||||
/// 入职模板聚合配置服务。
|
||||
/// </summary>
|
||||
public interface IOnboardingTemplateService
|
||||
public interface IOnboardingTemplateService : ITransient
|
||||
{
|
||||
/// <summary>
|
||||
/// 分页查询入职模板。
|
||||
|
||||
+10
-1
@@ -16,6 +16,7 @@ public class OnboardingTemplateService : IOnboardingTemplateService
|
||||
public async Task<SqlSugarPagedList<OnboardingTemplateOutput>> Page(OnboardingTemplatePageInput input)
|
||||
{
|
||||
var query = _db.Queryable<ObOnboardingTemplate>()
|
||||
.Where(item => !item.IsDelete)
|
||||
.WhereIF(!string.IsNullOrWhiteSpace(input.Keyword),
|
||||
item => item.TemplateCode.Contains(input.Keyword) || item.TemplateName.Contains(input.Keyword))
|
||||
.WhereIF(input.CompanyId.HasValue, item => item.CompanyId == input.CompanyId.Value)
|
||||
@@ -150,7 +151,15 @@ public class OnboardingTemplateService : IOnboardingTemplateService
|
||||
{
|
||||
foreach (var id in input.Ids)
|
||||
await DeleteRelations(id);
|
||||
await _db.Deleteable<ObOnboardingTemplate>().In(input.Ids).ExecuteCommandAsync();
|
||||
|
||||
await _db.Deleteable<ObOnboardingTemplate>()
|
||||
.Where(it => input.Ids.Contains(it.Id))
|
||||
.ExecuteCommandAsync();
|
||||
await _db.Updateable<ObOnboardingTemplate>()
|
||||
.SetColumns(it => it.IsDelete == true)
|
||||
.Where(it => input.Ids.Contains(it.Id))
|
||||
.ExecuteCommandAsync();
|
||||
|
||||
await _db.Ado.CommitTranAsync();
|
||||
}
|
||||
catch
|
||||
|
||||
@@ -2080,6 +2080,11 @@
|
||||
启用或停用合同模板版本。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Application.IOnboardingContractTemplateService.DeleteVersion(SimpleAdmin.Core.BaseIdInput)">
|
||||
<summary>
|
||||
删除未被入职模板或任务使用的合同版本。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Application.IOnboardingContractTemplateService.VariablePage(SimpleAdmin.Application.OnboardingTemplateVariablePageInput)">
|
||||
<summary>
|
||||
分页查询指定模板版本自动识别出的变量。
|
||||
@@ -2087,7 +2092,7 @@
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Application.IOnboardingContractTemplateService.EditVariable(SimpleAdmin.Application.OnboardingTemplateVariableEditInput)">
|
||||
<summary>
|
||||
编辑并确认草稿模板版本中的变量定义。
|
||||
编辑并确认模板版本中的变量定义。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Application.OnboardingContractTemplateService">
|
||||
@@ -2117,7 +2122,12 @@
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Application.OnboardingContractTemplateService.Delete(SimpleAdmin.Core.BaseIdListInput)">
|
||||
<summary>
|
||||
删除未被版本、适用范围或任务合同引用的模板。
|
||||
删除未被入职模板或任务合同引用的模板(级联删除未使用的版本和变量)。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Application.OnboardingContractTemplateService.DeleteVersion(SimpleAdmin.Core.BaseIdInput)">
|
||||
<summary>
|
||||
删除未被入职模板或任务使用的合同版本。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Application.OnboardingContractTemplateService.VersionPage(SimpleAdmin.Application.OnboardingContractVersionPageInput)">
|
||||
@@ -2142,7 +2152,7 @@
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Application.OnboardingContractTemplateService.EditVariable(SimpleAdmin.Application.OnboardingTemplateVariableEditInput)">
|
||||
<summary>
|
||||
编辑草稿模板版本中自动识别出的变量,不允许修改 DOCX 占位符编码。
|
||||
编辑模板版本中自动识别出的变量,不允许修改 DOCX 占位符编码。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Application.OnboardingEmployeePageInput">
|
||||
@@ -2401,6 +2411,11 @@
|
||||
撤销尚未归档的入职任务并使员工链接失效。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Application.IOnboardingTaskLifecycleService.Delete(SimpleAdmin.Core.BaseIdInput)">
|
||||
<summary>
|
||||
删除已撤销的入职任务及其全部关联快照数据。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Application.OnboardingTaskLifecycleService">
|
||||
<summary>
|
||||
实现入职任务生命周期业务能力。
|
||||
@@ -2416,6 +2431,11 @@
|
||||
撤销入职任务并同步撤销仍然有效的员工填写链接。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:SimpleAdmin.Application.OnboardingTaskLifecycleService.Delete(SimpleAdmin.Core.BaseIdInput)">
|
||||
<summary>
|
||||
删除已撤销的入职任务及其全部关联快照数据。
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SimpleAdmin.Application.OnboardingMaterialReviewInput">
|
||||
<summary>
|
||||
审核候选人上传材料参数。
|
||||
|
||||
Reference in New Issue
Block a user