修复相关bug
This commit is contained in:
+27
-4
@@ -31,6 +31,14 @@ public class OnboardingIdentityValidationService : IOnboardingIdentityValidation
|
||||
throw Oops.Bah("该姓名和身份证号已完成正式员工建档,请勿重复提交入职资料");
|
||||
}
|
||||
|
||||
// 身份证号码代表唯一自然人。即使姓名填写不同,也不能绕过正式员工重复校验。
|
||||
var formalEmployeeIdCardExists = await _db.Queryable<ObEmployee>()
|
||||
.AnyAsync(item => item.IdCardNumber == idCardNumber);
|
||||
if (formalEmployeeIdCardExists)
|
||||
{
|
||||
throw Oops.Bah("该身份证号码已完成正式员工建档,请核对姓名和身份证号码;如需更正,请联系 HR");
|
||||
}
|
||||
|
||||
// 待填写任务不占用身份,以实际先提交的任务为准;撤销或过期任务允许重新发起。
|
||||
var duplicateTaskExists = await _db.Queryable<ObTaskEmployeeInfo>()
|
||||
.InnerJoin<ObOnboardingTask>((info, task) => info.TaskId == task.Id)
|
||||
@@ -42,9 +50,24 @@ public class OnboardingIdentityValidationService : IOnboardingIdentityValidation
|
||||
|| task.TaskStatus == OnboardingTaskStatus.Approved
|
||||
|| task.TaskStatus == OnboardingTaskStatus.Archived))
|
||||
.AnyAsync();
|
||||
if (!duplicateTaskExists)
|
||||
return;
|
||||
if (duplicateTaskExists)
|
||||
{
|
||||
throw Oops.Bah("该姓名和身份证号已存在正在办理的入职任务,请勿重复提交;如需补充材料,请联系 HR 继续使用原任务链接");
|
||||
}
|
||||
|
||||
throw Oops.Bah("该姓名和身份证号已存在正在办理的入职任务,请勿重复提交;如需补充材料,请联系 HR 继续使用原任务链接");
|
||||
// 再单独按身份证号码校验,防止不同姓名使用同一证件重复提交不同任务。
|
||||
var duplicateIdCardTaskExists = await _db.Queryable<ObTaskEmployeeInfo>()
|
||||
.InnerJoin<ObOnboardingTask>((info, task) => info.TaskId == task.Id)
|
||||
.Where((info, task) => info.TaskId != currentTaskId
|
||||
&& info.IdCardNumber == idCardNumber
|
||||
&& (task.TaskStatus == OnboardingTaskStatus.Reviewing
|
||||
|| task.TaskStatus == OnboardingTaskStatus.Rejected
|
||||
|| task.TaskStatus == OnboardingTaskStatus.Approved
|
||||
|| task.TaskStatus == OnboardingTaskStatus.Archived))
|
||||
.AnyAsync();
|
||||
if (duplicateIdCardTaskExists)
|
||||
{
|
||||
throw Oops.Bah("该身份证号码已存在正在办理的入职任务,请核对姓名和身份证号码;如需补充材料,请联系 HR 继续使用原任务链接");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user