111
This commit is contained in:
+25
-53
@@ -19,37 +19,8 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
/// </summary>
|
||||
public async Task SaveDynamicValues(OnboardingSaveDynamicValuesInput input)
|
||||
{
|
||||
var task = await GetEditableTask(input.Token);
|
||||
var requirements = await GetFormRequirements(task.Id);
|
||||
var fieldIds = input.Values.Select(item => item.FieldId).Distinct().ToList();
|
||||
var hasInapplicableField = fieldIds.Any(id => requirements.All(item => item.FieldId != id));
|
||||
if (hasInapplicableField)
|
||||
throw Oops.Bah("填写字段不属于当前入职模板");
|
||||
|
||||
foreach (var value in input.Values)
|
||||
{
|
||||
var requirement = requirements.FirstOrDefault(item => item.FieldId == value.FieldId)
|
||||
?? throw Oops.Bah("动态补充字段不存在");
|
||||
var old = await _db.Queryable<ObTaskFormValue>()
|
||||
.FirstAsync(item => item.TaskId == task.Id && item.FieldId == requirement.FieldId);
|
||||
var row = new ObTaskFormValue
|
||||
{
|
||||
Id = old?.Id ?? global::SimpleAdmin.Core.Utils.CommonUtils.GetSingleId(),
|
||||
TaskId = task.Id,
|
||||
FieldId = requirement.FieldId,
|
||||
FieldCode = requirement.FieldCode,
|
||||
FieldName = requirement.FieldName,
|
||||
FieldValue = value.FieldValue,
|
||||
SubmitRound = task.SubmitCount + 1
|
||||
};
|
||||
|
||||
if (old == null)
|
||||
await _db.Insertable(row).ExecuteCommandAsync();
|
||||
else
|
||||
await _db.Updateable(row).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
await _snapshotService.Build(task.Id, invalidateGeneratedPreview: true);
|
||||
await GetEditableTask(input.Token);
|
||||
throw Oops.Bah("新版入职登记表不再使用旧动态字段接口,请通过员工基础信息接口保存补充变量");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -96,6 +67,25 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
}).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 任务仍可编辑时删除一条已上传材料。
|
||||
/// </summary>
|
||||
public async Task DeleteMaterial(
|
||||
OnboardingDeleteMaterialInput input)
|
||||
{
|
||||
var task = await GetEditableTask(input.Token);
|
||||
var material = await _db.Queryable<ObTaskMaterial>()
|
||||
.FirstAsync(item =>
|
||||
item.Id == input.TaskMaterialId
|
||||
&& item.TaskId == task.Id);
|
||||
if (material == null)
|
||||
throw Oops.Bah("上传材料不存在");
|
||||
|
||||
await _db.Deleteable<ObTaskMaterial>()
|
||||
.In(material.Id)
|
||||
.ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 记录候选人已经查看并确认动态生成的合同。
|
||||
/// </summary>
|
||||
@@ -124,24 +114,14 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
var basicInfoIncomplete = info == null
|
||||
|| string.IsNullOrWhiteSpace(info.EmployeeName)
|
||||
|| string.IsNullOrWhiteSpace(info.Phone)
|
||||
|| string.IsNullOrWhiteSpace(info.IdCardNumber);
|
||||
|| string.IsNullOrWhiteSpace(info.IdCardNumber)
|
||||
|| string.IsNullOrWhiteSpace(info.BankCardNumber)
|
||||
|| string.IsNullOrWhiteSpace(info.BankName);
|
||||
if (basicInfoIncomplete)
|
||||
throw Oops.Bah("请先完整填写基本信息");
|
||||
|
||||
await _snapshotService.Build(task.Id, info);
|
||||
|
||||
var requiredFields = (await GetFormRequirements(task.Id))
|
||||
.Where(item => item.Required)
|
||||
.Select(item => item.FieldId)
|
||||
.ToList();
|
||||
var values = await _db.Queryable<ObTaskFormValue>()
|
||||
.Where(item => item.TaskId == task.Id)
|
||||
.ToListAsync();
|
||||
var hasMissingRequiredField = requiredFields.Any(
|
||||
id => values.All(item => item.FieldId != id || string.IsNullOrWhiteSpace(item.FieldValue)));
|
||||
if (hasMissingRequiredField)
|
||||
throw Oops.Bah("仍有必填补充信息未填写");
|
||||
|
||||
var requiredMaterials = (await GetMaterialRequirements(task.Id))
|
||||
.Where(item => item.Required)
|
||||
.Select(item => item.MaterialTypeId)
|
||||
@@ -174,7 +154,7 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
AuditRound = task.SubmitCount,
|
||||
AuditAction = OnboardingAuditAction.Submit,
|
||||
AuditOpinion = "员工提交入职资料",
|
||||
SnapshotJson = global::System.Text.Json.JsonSerializer.Serialize(new { info, values, materials }),
|
||||
SnapshotJson = global::System.Text.Json.JsonSerializer.Serialize(new { info, materials }),
|
||||
AuditedAt = DateTime.Now
|
||||
}).ExecuteCommandAsync();
|
||||
}
|
||||
@@ -235,14 +215,6 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
throw Oops.Bah($"合同“{missing.contract.ContractName}”的必填变量“{missing.definition.VariableName}”尚未填写");
|
||||
}
|
||||
|
||||
private Task<List<ObTaskFormRequirement>> GetFormRequirements(long taskId)
|
||||
{
|
||||
return _db.Queryable<ObTaskFormRequirement>()
|
||||
.Where(item => item.TaskId == taskId)
|
||||
.OrderBy(item => item.SortCode)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
private Task<List<ObTaskMaterialRequirement>> GetMaterialRequirements(long taskId)
|
||||
{
|
||||
return _db.Queryable<ObTaskMaterialRequirement>()
|
||||
|
||||
Reference in New Issue
Block a user