diff --git a/IRaCIS.Core.Application/Service/Document/DTO/TrialFileTypeViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/TrialFileTypeViewModel.cs index 53f08b5ca..2f453e036 100644 --- a/IRaCIS.Core.Application/Service/Document/DTO/TrialFileTypeViewModel.cs +++ b/IRaCIS.Core.Application/Service/Document/DTO/TrialFileTypeViewModel.cs @@ -32,6 +32,23 @@ public class TrialFileTypeData public List TrialFileTypeList { get; set; } } + +public class GetTrialFileTypeFileInDto +{ + public Guid TrialFileTypeId { get; set; } + +} + +public class UploadTrialFileTypeFileInDto +{ + public Guid TrialFileTypeId { get; set; } + + + /// + /// 文件 + /// + public TrialFileDto? FileRecord { get; set; } +} public class SetAuthorizedViewInDto { public Guid Id { get; set; } diff --git a/IRaCIS.Core.Application/Service/Document/TrialFileTypeService.cs b/IRaCIS.Core.Application/Service/Document/TrialFileTypeService.cs index 38df510ff..cf65aff96 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialFileTypeService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialFileTypeService.cs @@ -24,6 +24,8 @@ namespace IRaCIS.Core.Application.Service; /// [ApiExplorerSettings(GroupName = "FileRecord")] public class TrialFileTypeService(IRepository _trialFileTypeRepository, + + IRepository _trialFileRepository, IRepository _sysFileTypeRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialFileTypeService { @@ -83,7 +85,7 @@ public class TrialFileTypeService(IRepository _trialFileTypeRepos - if (await _trialFileTypeRepository.AnyAsync(u =>u.TrialId==addOrEditTrialFileType.TrialId&& u.Id != addOrEditTrialFileType.Id && u.IsEnable == addOrEditTrialFileType.IsEnable && (u.Name == addOrEditTrialFileType.Name || u.NameCN == addOrEditTrialFileType.NameCN))) + if (await _trialFileTypeRepository.AnyAsync(u => u.TrialId == addOrEditTrialFileType.TrialId && u.Id != addOrEditTrialFileType.Id && u.IsEnable == addOrEditTrialFileType.IsEnable && (u.Name == addOrEditTrialFileType.Name || u.NameCN == addOrEditTrialFileType.NameCN))) { throw new BusinessValidationFailedException(_localizer["TrialFileType_NameRepeat"]); } @@ -139,9 +141,9 @@ public class TrialFileTypeService(IRepository _trialFileTypeRepos { TrialId = inDto.TrialId }); - var trialFileTypeList = await _trialFileTypeRepository.Where(x=>x.TrialId==inDto.TrialId) + var trialFileTypeList = await _trialFileTypeRepository.Where(x => x.TrialId == inDto.TrialId) .WhereIf(inDto.IsEnable, x => x.IsEnable) - .OrderBy(x=>x.ShowOrder) + .OrderBy(x => x.ShowOrder) .ProjectTo(_mapper.ConfigurationProvider) .ToListAsync(); @@ -151,7 +153,7 @@ public class TrialFileTypeService(IRepository _trialFileTypeRepos result.Add(new TrialFileTypeData() { ArchiveTypeEnum = type, - TrialFileTypeList = trialFileTypeList.Where(x => x.ArchiveTypeEnum == type).OrderByDescending(x=>x.SysFileTypeId==null).ThenBy(x=>x.ShowOrder).ToList() + TrialFileTypeList = trialFileTypeList.Where(x => x.ArchiveTypeEnum == type).OrderByDescending(x => x.SysFileTypeId == null).ThenBy(x => x.ShowOrder).ToList() }); } @@ -172,6 +174,48 @@ public class TrialFileTypeService(IRepository _trialFileTypeRepos return ResponseOutput.Ok(); } + + /// + /// 上传同意入项记录 + /// + /// + /// + [HttpPost] + public async Task UploadTrialFileTypeFile(UploadTrialFileTypeFileInDto inDto) + { + var trialFileType = await _trialFileTypeRepository.Where(x => x.Id == inDto.TrialFileTypeId).FirstNotNullAsync(); + + if (trialFileType.FileRecordId != null) + { + await _trialFileRepository.BatchDeleteNoTrackingAsync(x => x.Id == trialFileType.FileRecordId); + } + + inDto.FileRecord.TrialFileTypeId = inDto.TrialFileTypeId; + var entity = await _trialFileRepository.InsertFromDTOAsync(inDto.FileRecord, true); + await _trialFileTypeRepository.UpdatePartialFromQueryAsync(x => x.Id == inDto.TrialFileTypeId, x => new TrialFileType() + { + + FileRecordId = entity.Id + }); + return ResponseOutput.Ok(); + } + + /// + /// 获取入项记录 + /// + /// + /// + [HttpPost] + public async Task GetTrialFileTypeFile(GetTrialFileTypeFileInDto inDto) + { + var trialFileType = await _trialFileTypeRepository.Where(x => x.Id == inDto.TrialFileTypeId).FirstNotNullAsync(); + if (trialFileType.FileRecordId == null) + { + return new TrialFileDto() { } ; + } + var file = await _trialFileRepository.Where(x => x.Id == trialFileType.FileRecordId).ProjectTo(_mapper.ConfigurationProvider).FirstNotNullAsync(); + return file; + } } diff --git a/IRaCIS.Core.Domain/FileRecord/FileType.cs b/IRaCIS.Core.Domain/FileRecord/FileType.cs index a4ec4ecef..cbc927267 100644 --- a/IRaCIS.Core.Domain/FileRecord/FileType.cs +++ b/IRaCIS.Core.Domain/FileRecord/FileType.cs @@ -145,6 +145,7 @@ public class TrialFileType : BaseFullAuditEntity public int ShowOrder { get; set; } - + [Comment("文件Id")] + public Guid? FileRecordId { get; set; } }