diff --git a/IRaCIS.Core.Application/Service/Document/DTO/TrialNormalRecordViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/TrialNormalRecordViewModel.cs
index 65ebced91..a060cdbcd 100644
--- a/IRaCIS.Core.Application/Service/Document/DTO/TrialNormalRecordViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Document/DTO/TrialNormalRecordViewModel.cs
@@ -28,9 +28,9 @@ public class TrialNormalRecordAddOrEdit
public int? ReviewerFileType { get; set; }
public int State { get; set; }
-
- public Guid TrialFileRecordId { get; set; }
-
+
+ public TrialFile TrialFileRecord { get; set; }
+
public Guid TrialFileTypeId { get; set; }
public Guid TrialId { get; set; }
@@ -43,9 +43,9 @@ public class TrialNormalRecordQuery : PageInput
public int? ReviewerFileType { get; set; }
public int? State { get; set; }
-
- public Guid? TrialFileRecordId { get; set; }
-
+
+ public string? FileName { get; set; }
+
public Guid? TrialFileTypeId { get; set; }
public Guid? TrialId { get; set; }
diff --git a/IRaCIS.Core.Application/Service/Document/TrialNormalRecordService.cs b/IRaCIS.Core.Application/Service/Document/TrialNormalRecordService.cs
index 37c532e7c..f16890973 100644
--- a/IRaCIS.Core.Application/Service/Document/TrialNormalRecordService.cs
+++ b/IRaCIS.Core.Application/Service/Document/TrialNormalRecordService.cs
@@ -22,32 +22,46 @@ namespace IRaCIS.Core.Application.Service;
///
[ApiExplorerSettings(GroupName = "FileRecord")]
public class TrialNormalRecordService(IRepository _trialNormalRecordRepository,
+ IRepository _trialFileRepository,
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialNormalRecordService
{
[HttpPost]
- public async Task> GetTrialNormalRecordList(TrialNormalRecordQuery inQuery)
+ public async Task> GetTrialNormalRecordList(TrialNormalRecordQuery inDto)
{
var trialNormalRecordQueryable = _trialNormalRecordRepository
- .ProjectTo(_mapper.ConfigurationProvider);
+ .Where(x => x.TrialFileTypeId == inDto.TrialFileTypeId)
+ .WhereIf(inDto.FileName.IsNotNullOrEmpty(), x => x.TrialFileRecord.FileName.Contains(inDto.FileName))
+ .ProjectTo(_mapper.ConfigurationProvider);
- var pageList = await trialNormalRecordQueryable.ToPagedListAsync(inQuery);
+ var pageList = await trialNormalRecordQueryable.ToPagedListAsync(inDto);
return pageList;
}
- public async Task AddOrUpdateTrialNormalRecord(TrialNormalRecordAddOrEdit addOrEditTrialNormalRecord)
+ public async Task AddOrUpdateTrialNormalRecord(TrialNormalRecordAddOrEdit inDto)
{
- // 在此处拷贝automapper 映射
-
-
+ if (inDto.TrialFileRecord != null) inDto.TrialFileRecord.TrialFileTypeId = inDto.TrialFileTypeId;
- var entity = await _trialNormalRecordRepository.InsertOrUpdateAsync(addOrEditTrialNormalRecord, true);
+ if (inDto.Id != null)
+ {
+ var trialFinalRecord = await _trialNormalRecordRepository.Where(x => x.Id == inDto.Id.Value).FirstNotNullAsync();
+
+ List ids = new List() {
+ trialFinalRecord.TrialFileRecordId,
+ };
+
+ var fileIds = ids.Where(x => x != null).Select(x => (Guid)x).ToList();
+ await _trialFileRepository.BatchDeleteNoTrackingAsync(x => fileIds.Contains(x.Id));
+ }
+
+ var entity = await _trialNormalRecordRepository.InsertOrUpdateAsync(inDto, true);
+
return ResponseOutput.Ok(entity.Id.ToString());
diff --git a/IRaCIS.Core.Domain/FileRecord/TrialRecord.cs b/IRaCIS.Core.Domain/FileRecord/TrialRecord.cs
index e20da041d..c758c1c20 100644
--- a/IRaCIS.Core.Domain/FileRecord/TrialRecord.cs
+++ b/IRaCIS.Core.Domain/FileRecord/TrialRecord.cs
@@ -89,6 +89,14 @@ public class TrialNormalRecord : BaseFullAuditEntity
{
public Guid TrialId { get; set; }
+
+ ///
+ ///
+ ///
+ [JsonIgnore]
+ [ForeignKey("TrialFileRecordId")]
+ public TrialFile TrialFileRecord { get; set; }
+
[Comment("关联项目文件类型")]
public Guid TrialFileTypeId { get; set; }
@@ -106,7 +114,7 @@ public class TrialNormalRecord : BaseFullAuditEntity
[Comment("关联具体的文件记录,记录里面有大小,格式,名称")]
- public Guid TrialFileRecordId { get; set; }
+ public Guid? TrialFileRecordId { get; set; }