1111
This commit is contained in:
+5
@@ -24,4 +24,9 @@ public class OnboardingMaterialUploadValidationInput
|
||||
/// 待上传文件大小,单位为字节。
|
||||
/// </summary>
|
||||
public long FileLength { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 需要重新上传并替换的任务材料记录 Id;为空时按新增数量校验。
|
||||
/// </summary>
|
||||
public long? TaskMaterialId { get; set; }
|
||||
}
|
||||
|
||||
+5
@@ -53,6 +53,11 @@ public class OnboardingSaveMaterialInput
|
||||
/// 系统文件 Id。
|
||||
/// </summary>
|
||||
public long FileId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 需要重新上传并替换的任务材料记录 Id;为空时新增材料。
|
||||
/// </summary>
|
||||
public long? TaskMaterialId { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
+25
-1
@@ -39,6 +39,20 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
var existingMaterials = await _db.Queryable<ObTaskMaterial>()
|
||||
.Where(item => item.TaskId == task.Id && item.MaterialTypeId == input.MaterialTypeId)
|
||||
.ToListAsync();
|
||||
if (input.TaskMaterialId.HasValue)
|
||||
{
|
||||
var replacement = existingMaterials.FirstOrDefault(
|
||||
item => item.Id == input.TaskMaterialId.Value)
|
||||
?? throw Oops.Bah("需要重新上传的材料不存在");
|
||||
replacement.FileId = input.FileId;
|
||||
replacement.SubmitRound = task.SubmitCount + 1;
|
||||
replacement.UploadedAt = DateTime.Now;
|
||||
replacement.ReviewStatus = TaskMaterialReviewStatus.Pending;
|
||||
replacement.ReviewRemark = null;
|
||||
await _db.Updateable(replacement).ExecuteCommandAsync();
|
||||
return;
|
||||
}
|
||||
|
||||
var supplementMaterial = existingMaterials.FirstOrDefault(
|
||||
item => item.ReviewStatus == TaskMaterialReviewStatus.NeedSupplement);
|
||||
if (supplementMaterial != null)
|
||||
@@ -184,6 +198,16 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
var materials = await _db.Queryable<ObTaskMaterial>()
|
||||
.Where(item => item.TaskId == task.Id && item.MaterialTypeId == input.MaterialTypeId)
|
||||
.ToListAsync();
|
||||
if (input.TaskMaterialId.HasValue)
|
||||
{
|
||||
var replacementExists = materials.Any(
|
||||
item => item.Id == input.TaskMaterialId.Value);
|
||||
if (!replacementExists)
|
||||
throw Oops.Bah("需要重新上传的材料不存在");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var canReplaceSupplement = materials.Any(
|
||||
item => item.ReviewStatus == TaskMaterialReviewStatus.NeedSupplement);
|
||||
if (materials.Count >= requirement.MaxFileCount && !canReplaceSupplement)
|
||||
@@ -246,4 +270,4 @@ public class OnboardingPublicSubmissionService : IOnboardingPublicSubmissionServ
|
||||
|
||||
return task;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user