diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/IOnboardingContractTemplateService.cs b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/IOnboardingContractTemplateService.cs
index e3d32dd..0b457b7 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/IOnboardingContractTemplateService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/IOnboardingContractTemplateService.cs
@@ -45,13 +45,18 @@ public interface IOnboardingContractTemplateService : ITransient
///
Task SetVersionStatus(OnboardingContractVersionStatusInput input);
+ ///
+ /// 删除未被入职模板或任务使用的合同版本。
+ ///
+ Task DeleteVersion(BaseIdInput input);
+
///
/// 分页查询指定模板版本自动识别出的变量。
///
Task> VariablePage(OnboardingTemplateVariablePageInput input);
///
- /// 编辑并确认草稿模板版本中的变量定义。
+ /// 编辑并确认模板版本中的变量定义。
///
Task EditVariable(OnboardingTemplateVariableEditInput input);
}
\ No newline at end of file
diff --git a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/OnboardingContractTemplateService.cs b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/OnboardingContractTemplateService.cs
index 9ce9d7b..f2c5cc4 100644
--- a/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/OnboardingContractTemplateService.cs
+++ b/SimpleAdmin.Application/Services/Onboarding/ContractTemplate/OnboardingContractTemplateService.cs
@@ -11,6 +11,7 @@ public class OnboardingContractTemplateService : DbRepository
/// 分页查询合同模板主档案。
///
@@ -55,34 +56,92 @@ public class OnboardingContractTemplateService : DbRepository
- /// 删除未被版本、适用范围或任务合同引用的模板。
+ /// 删除未被入职模板或任务合同引用的模板(级联删除未使用的版本和变量)。
///
public async Task Delete(BaseIdListInput input)
{
if (input.Ids.Count == 0)
return;
- var hasVersions = await Context.Queryable()
- .AnyAsync(it => input.Ids.Contains(it.TemplateId));
- if (hasVersions)
- throw Oops.Bah("模板已有版本,不能删除");
-
- var hasScopes = await Context.Queryable()
- .AnyAsync(it => input.Ids.Contains(it.TemplateId));
- if (hasScopes)
- throw Oops.Bah("模板已配置旧版适用范围,不能删除");
-
var hasOnboardingTemplates = await Context.Queryable()
.AnyAsync(it => input.Ids.Contains(it.ContractTemplateId));
if (hasOnboardingTemplates)
- throw Oops.Bah("模板已被入职模板引用,不能删除");
+ throw Oops.Bah("模板已被入职模板引用,不能删除,请先在入职模板中移除关联");
var hasContracts = await Context.Queryable()
.AnyAsync(it => input.Ids.Contains(it.TemplateId));
if (hasContracts)
- throw Oops.Bah("模板已生成入职合同,不能删除");
+ throw Oops.Bah("模板已生成入职任务合同,不能删除,可改为停用");
- await DeleteByIdsAsync(input.Ids.Cast