代码优化
This commit is contained in:
@@ -28,18 +28,25 @@ public class OnboardingTaskService : IOnboardingTaskService
|
||||
if (!companyEnabled)
|
||||
throw Oops.Bah("公司不存在或未启用");
|
||||
|
||||
var departmentEnabled = await _db.Queryable<ObDepartment>()
|
||||
.AnyAsync(item => item.Id == input.DepartmentId && item.CompanyId == input.CompanyId && item.Status == "enable");
|
||||
if (!departmentEnabled)
|
||||
throw Oops.Bah("部门不存在、未启用或不属于该公司");
|
||||
|
||||
var positionEnabled = await _db.Queryable<ObPosition>()
|
||||
.AnyAsync(item => item.Id == input.PositionId
|
||||
&& item.CompanyId == input.CompanyId
|
||||
&& item.DepartmentId == input.DepartmentId
|
||||
&& item.Status == "enable");
|
||||
if (!positionEnabled)
|
||||
throw Oops.Bah("岗位不存在、未启用或不属于该公司");
|
||||
throw Oops.Bah("岗位不存在、未启用或不属于该部门/公司");
|
||||
|
||||
var onboardingTemplate = await _db.Queryable<ObOnboardingTemplate>()
|
||||
.FirstAsync(item => item.Id == input.OnboardingTemplateId
|
||||
&& item.CompanyId == input.CompanyId
|
||||
&& item.DepartmentId == input.DepartmentId
|
||||
&& item.Status == "enable")
|
||||
?? throw Oops.Bah("入职模板不存在、未启用或不属于该公司");
|
||||
?? throw Oops.Bah("入职模板不存在、未启用或不属于该公司、部门");
|
||||
var templateSupportsPosition = await _db.Queryable<ObOnboardingTemplatePosition>()
|
||||
.AnyAsync(item => item.OnboardingTemplateId == onboardingTemplate.Id
|
||||
&& item.PositionId == input.PositionId);
|
||||
@@ -62,6 +69,20 @@ public class OnboardingTaskService : IOnboardingTaskService
|
||||
var contractTemplates = await _db.Queryable<ObContractTemplate>()
|
||||
.Where(item => templateIds.Contains(item.Id))
|
||||
.ToListAsync();
|
||||
if (contractTemplates.Count != templateIds.Count
|
||||
|| contractTemplates.Any(item => item.CompanyId != input.CompanyId
|
||||
|| item.DepartmentId != input.DepartmentId
|
||||
|| item.Status != "enable"))
|
||||
{
|
||||
throw Oops.Bah("入职模板包含未启用或不属于当前公司、部门的合同模板");
|
||||
}
|
||||
|
||||
var contractPositionCount = await _db.Queryable<ObContractTemplatePosition>()
|
||||
.CountAsync(item => templateIds.Contains(item.ContractTemplateId)
|
||||
&& item.PositionId == input.PositionId);
|
||||
if (contractPositionCount != templateIds.Count)
|
||||
throw Oops.Bah("入职模板包含不适用于当前岗位的合同模板");
|
||||
|
||||
var versionIds = contractConfigs.Select(item => item.ContractTemplateVersionId).Distinct().ToList();
|
||||
var enabledVersionCount = await _db.Queryable<ObContractTemplateVersion>()
|
||||
.CountAsync(item => versionIds.Contains(item.Id)
|
||||
@@ -94,6 +115,7 @@ public class OnboardingTaskService : IOnboardingTaskService
|
||||
Id = taskId,
|
||||
TaskNo = $"OB{DateTime.Now:yyyyMMddHHmmss}{taskId.ToString()[^4..]}",
|
||||
CompanyId = input.CompanyId,
|
||||
DepartmentId = input.DepartmentId,
|
||||
PositionId = input.PositionId,
|
||||
OnboardingTemplateId = onboardingTemplate.Id,
|
||||
AssignedReviewerUserId = input.AssignedReviewerUserId,
|
||||
@@ -236,6 +258,12 @@ public class OnboardingTaskService : IOnboardingTaskService
|
||||
if (inputs.Count == 0)
|
||||
return;
|
||||
|
||||
var duplicateContractVersion = contracts
|
||||
.GroupBy(item => item.TemplateVersionId)
|
||||
.FirstOrDefault(group => group.Count() > 1);
|
||||
if (duplicateContractVersion != null)
|
||||
throw Oops.Bah("入职模板中存在重复的合同版本,请重新保存入职模板后再创建任务");
|
||||
|
||||
var contractByVersion = contracts.ToDictionary(item => item.TemplateVersionId);
|
||||
var contractIds = contracts.Select(item => item.Id).ToList();
|
||||
var rows = await _db.Queryable<ObTaskContractVariable>()
|
||||
|
||||
Reference in New Issue
Block a user