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; }