diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 693d1f6d8..25dd6245d 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1496,7 +1496,7 @@ - + 项目定稿记录 @@ -1505,6 +1505,13 @@ + + + 新增或者修改文档 + + + + 授权文档 @@ -1512,6 +1519,13 @@ + + + 删除文档 + + + + 项目-一般文件记录 @@ -15877,6 +15891,21 @@ 跨项目复制 + + + 是否显示检查名称 + + + + + 检查名称列表 + + + + + 图像格式 + + 临床信息传输 1:系统录入2:系统录入+PDF 0:无 diff --git a/IRaCIS.Core.Application/Service/Document/DTO/TrialFinalRecordViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/TrialFinalRecordViewModel.cs index 51e8e244a..7e4e89fc5 100644 --- a/IRaCIS.Core.Application/Service/Document/DTO/TrialFinalRecordViewModel.cs +++ b/IRaCIS.Core.Application/Service/Document/DTO/TrialFinalRecordViewModel.cs @@ -31,22 +31,22 @@ public class AuthorizedTrialFinalRecordInDto public class TrialFinalRecordAddOrEdit { public Guid? Id { get; set; } - - - public bool IsAuthorizedView { get; set; } - - public string Name { get; set; } - - + + + public bool IsAuthorizedView { get; set; } + + public string Name { get; set; } + + + public int State { get; set; } - + public Guid TrialFileTypeId { get; set; } - + public Guid TrialId { get; set; } - + public string Version { get; set; } - /// diff --git a/IRaCIS.Core.Application/Service/Document/TrialFinalRecordService.cs b/IRaCIS.Core.Application/Service/Document/TrialFinalRecordService.cs index 4ba715632..d73089bc5 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialFinalRecordService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialFinalRecordService.cs @@ -22,6 +22,7 @@ namespace IRaCIS.Core.Application.Service; /// [ApiExplorerSettings(GroupName = "FileRecord")] public class TrialFinalRecordService(IRepository _trialFinalRecordRepository, + IRepository _trialFileRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialFinalRecordService { @@ -35,6 +36,7 @@ public class TrialFinalRecordService(IRepository _trialFinalRe .WhereIf(inDto.Name.IsNotNullOrEmpty(),x=>x.Name.Contains(inDto.Name)) .WhereIf(inDto.Version.IsNotNullOrEmpty(), x => x.Version.Contains(inDto.Version)) .WhereIf(inDto.IsAuthorizedView!=null, x => x.IsAuthorizedView==inDto.IsAuthorizedView) + // .Include(x=>x.PDFFileRecord).Include(x => x.WordFileRecord).Include(x => x.SignFileRecord).Include(x => x.HistoryFileRecord) .ProjectTo(_mapper.ConfigurationProvider); var pageList = await trialFinalRecordQueryable.ToPagedListAsync(inDto); @@ -43,24 +45,51 @@ public class TrialFinalRecordService(IRepository _trialFinalRe } - - public async Task AddOrUpdateTrialFinalRecord(TrialFinalRecordAddOrEdit addOrEditTrialFinalRecord) + /// + /// 新增或者修改文档 + /// + /// + /// + public async Task AddOrUpdateTrialFinalRecord(TrialFinalRecordAddOrEdit inDto) { // 在此处拷贝automapper 映射 + if (inDto.PDFFileRecord != null) inDto.PDFFileRecord.TrialFileTypeId = inDto.TrialFileTypeId; + if (inDto.WordFileRecord != null) inDto.WordFileRecord.TrialFileTypeId = inDto.TrialFileTypeId; + if (inDto.SignFileRecord != null) inDto.SignFileRecord.TrialFileTypeId = inDto.TrialFileTypeId; + if (inDto.HistoryFileRecord != null) inDto.HistoryFileRecord.TrialFileTypeId = inDto.TrialFileTypeId; + + var verifyExp = new EntityVerifyExp() { - VerifyExp = u => u.Name == addOrEditTrialFinalRecord.Name, + VerifyExp = u => u.Name == inDto.Name, // "当前类型启用的文件类型名称重复" VerifyMsg = _localizer["TrialFileType_NameRepeat"], }; + if (inDto.Id != null) + { + var trialFinalRecord = await _trialFinalRecordRepository.Where(x => x.Id == inDto.Id.Value).FirstNotNullAsync(); - var entity = await _trialFinalRecordRepository.InsertOrUpdateAsync(addOrEditTrialFinalRecord, true); + List ids= new List() { + trialFinalRecord.WordFileRecordId, + trialFinalRecord.PDFFileRecordId, + trialFinalRecord.SignFileRecordId, + trialFinalRecord.HistoryFileRecordId - return ResponseOutput.Ok(entity.Id.ToString()); + }; + + var fileIds = ids.Where(x => x != null).Select(x => (Guid)x).ToList(); + await _trialFileRepository.BatchDeleteNoTrackingAsync(x => fileIds.Contains(x.Id)); + } + var entity = await _trialFinalRecordRepository.InsertOrUpdateAsync(inDto, true); + + + + + return ResponseOutput.Ok(entity.Id.ToString()); } @@ -76,7 +105,11 @@ public class TrialFinalRecordService(IRepository _trialFinalRe return ResponseOutput.Ok(); } - + /// + /// 删除文档 + /// + /// + /// [HttpDelete("{trialFinalRecordId:guid}")] public async Task DeleteTrialFinalRecord(Guid trialFinalRecordId) { diff --git a/IRaCIS.Core.Application/Service/Document/_MapConfig.cs b/IRaCIS.Core.Application/Service/Document/_MapConfig.cs index 28e4a6cb0..7eb653d81 100644 --- a/IRaCIS.Core.Application/Service/Document/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Document/_MapConfig.cs @@ -3,6 +3,7 @@ using AutoMapper.EquivalencyExpression; using IRaCIS.Application.Contracts; using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.ViewModel; +using IRaCIS.Core.Infrastructure.Extention; namespace IRaCIS.Core.Application.Service { @@ -107,7 +108,11 @@ namespace IRaCIS.Core.Application.Service CreateMap().ReverseMap(); CreateMap(); - CreateMap().ReverseMap(); + CreateMap(); + //.ForMember(d => d.HistoryFileRecord.TrialFileTypeId, c => c.MapFrom(t => t.TrialFileTypeId)) + //.ForMember(d => d.SignFileRecord.TrialFileTypeId, c => c.MapFrom(t => t.TrialFileTypeId)) + //.ForMember(d => d.WordFileRecord.TrialFileTypeId, c => c.MapFrom(t => t.TrialFileTypeId)) + //.ForMember(d => d.PDFFileRecord.TrialFileTypeId, c => c.MapFrom(t => t.TrialFileTypeId)); CreateMap(); CreateMap().ReverseMap(); diff --git a/IRaCIS.Core.Domain/FileRecord/TrialRecord.cs b/IRaCIS.Core.Domain/FileRecord/TrialRecord.cs index 0b7c81063..e20da041d 100644 --- a/IRaCIS.Core.Domain/FileRecord/TrialRecord.cs +++ b/IRaCIS.Core.Domain/FileRecord/TrialRecord.cs @@ -152,6 +152,13 @@ public class TrialTrianingRecord : BaseFullAuditEntity public class TrialFile : BaseFullAuditEntity { + /// + /// TrialFinalRecord + /// + [JsonIgnore] + [ForeignKey("TrialFileTypeId")] + public TrialFileType TrialFileType { get; set; } + [Comment("关联项目文件类型")] public Guid TrialFileTypeId { get; set; } diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialFileConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialFileConfigration.cs new file mode 100644 index 000000000..171ad2dae --- /dev/null +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialFileConfigration.cs @@ -0,0 +1,30 @@ +using IRaCIS.Core.Domain.Models; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; + + +namespace IRaCIS.Core.Infra.EFCore.EntityConfigration +{ + //public class TrialFileConfigration : IEntityTypeConfiguration + //{ + + + // public void Configure(EntityTypeBuilder builder) + // { + // // builder.HasOne(r => r.WordFileRecord) + // //.WithOne(t => t.WordFileRecord) + // //.HasForeignKey(t => t.WordFileRecordId) + // //.OnDelete(DeleteBehavior.Cascade); + // // builder.HasOne(r => r.PDFFileRecord).WithOne().HasForeignKey(f => f.TrialFileTypeId); + + // // builder.HasOne(r => r.WordFileRecord).WithOne().HasForeignKey(f => f.TrialFileTypeId); + + // // builder.HasOne(r => r.SignFileRecord).WithOne().HasForeignKey(f => f.TrialFileTypeId); + + // // builder.HasOne(r => r.HistoryFileRecord).WithOne().HasForeignKey(f => f.TrialFileTypeId); + + // } + //} + + +}