diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 0f5ae1457..e708647dd 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1343,7 +1343,7 @@ - + 系统文件类型 diff --git a/IRaCIS.Core.Application/Service/Document/DTO/TrialFileTypeViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/TrialFileTypeViewModel.cs index 640bc3003..696abc5c6 100644 --- a/IRaCIS.Core.Application/Service/Document/DTO/TrialFileTypeViewModel.cs +++ b/IRaCIS.Core.Application/Service/Document/DTO/TrialFileTypeViewModel.cs @@ -7,66 +7,90 @@ using System; using IRaCIS.Core.Domain.Share; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Reflection.Metadata; namespace IRaCIS.Core.Application.ViewModel; public class TrialFileTypeView : TrialFileTypeAddOrEdit { - + public DateTime CreateTime { get; set; } - + public DateTime UpdateTime { get; set; } - + +} + + +public class TrialFileTypeSelectView +{ + public Guid Id { get; set; } + + public string Name { get; set; } + + public bool IsEnable { get; set; } + + public bool IsSelfDefine { get; set; } } public class TrialFileTypeAddOrEdit { public Guid? Id { get; set; } - + public ArchiveType ArchiveTypeEnum { get; set; } - + public DateOnly FirstFinalDate { get; set; } - + public bool IsConfirmRecord { get; set; } - + public bool IsEnable { get; set; } - + public bool IsSelfDefine { get; set; } - + public string Name { get; set; } - + public string NameCN { get; set; } - + public int SubIdentification { get; set; } - + public Guid? SysFileTypeId { get; set; } - + public Guid TrialId { get; set; } - } +} public class TrialFileTypeQuery : PageInput { public ArchiveType? ArchiveTypeEnum { get; set; } - + public DateOnly? FirstFinalDate { get; set; } - + public bool? IsConfirmRecord { get; set; } - + public bool? IsEnable { get; set; } - + public bool? IsSelfDefine { get; set; } - + public string? Name { get; set; } - + public string? NameCN { get; set; } - + public int? SubIdentification { get; set; } - - public Guid? SysFileTypeId { get; set; } - - public Guid? TrialId { get; set; } - } - + + + [NotDefault] + public Guid TrialId { get; set; } +} + + +public class TrialFileTypeSelectQuery +{ + [NotDefault] + public Guid TrialId { get; set; } + + public bool? IsEnable { get; set; } + + public bool? IsSelfDefine { get; set; } +} diff --git a/IRaCIS.Core.Application/Service/Document/SysFileTypeService.cs b/IRaCIS.Core.Application/Service/Document/SysFileTypeService.cs index f4303bb53..8e84c2e2a 100644 --- a/IRaCIS.Core.Application/Service/Document/SysFileTypeService.cs +++ b/IRaCIS.Core.Application/Service/Document/SysFileTypeService.cs @@ -22,7 +22,7 @@ namespace IRaCIS.Core.Application.Service; /// [ApiExplorerSettings(GroupName = "FileRecord")] -public class SysFileTypeService(IRepository _sysFileTypeRepository, +public class SysFileTypeService(IRepository _sysFileTypeRepository, IRepository _trialFileTypeRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ISysFileTypeService { @@ -32,7 +32,13 @@ public class SysFileTypeService(IRepository _sysFileTypeRepository, { var sysFileTypeQueryable = _sysFileTypeRepository - .ProjectTo(_mapper.ConfigurationProvider); + .WhereIf(inQuery.ArchiveTypeEnum != null, t => t.ArchiveTypeEnum == inQuery.ArchiveTypeEnum) + .WhereIf(inQuery.IsConfirmRecord != null, t => t.IsConfirmRecord == inQuery.IsConfirmRecord) + .WhereIf(inQuery.SubIdentification != null, t => t.SubIdentification == inQuery.SubIdentification) + .WhereIf(inQuery.IsEnable != null, t => t.IsEnable == inQuery.IsEnable) + .WhereIf(inQuery.Name.IsNotNullOrEmpty(), t => t.Name.Contains(inQuery.Name)) + .WhereIf(inQuery.NameCN.IsNotNullOrEmpty(), t => t.NameCN.Contains(inQuery.NameCN)) + .ProjectTo(_mapper.ConfigurationProvider); var pageList = await sysFileTypeQueryable.ToPagedListAsync(inQuery); @@ -43,8 +49,23 @@ public class SysFileTypeService(IRepository _sysFileTypeRepository, public async Task AddOrUpdateSysFileType(SysFileTypeAddOrEdit addOrEditSysFileType) { + var verifyExp = new EntityVerifyExp() + { + VerifyExp = u => u.IsEnable == addOrEditSysFileType.IsEnable && (u.Name == addOrEditSysFileType.Name || u.NameCN == addOrEditSysFileType.NameCN), - var entity = await _sysFileTypeRepository.InsertOrUpdateAsync(addOrEditSysFileType, true); + // "当前类型启用的文件类型名称重复" + VerifyMsg = _localizer["SysFileType_NameRepeat"], + + IsVerify = addOrEditSysFileType.IsEnable == false + }; + + var entity = await _sysFileTypeRepository.InsertOrUpdateAsync(addOrEditSysFileType, true, verifyExp); + + //启用的才进行更新 + if (addOrEditSysFileType.Id != null && addOrEditSysFileType.IsEnable) + { + await _trialFileTypeRepository.BatchUpdateNoTrackingAsync(t => t.SysFileTypeId == addOrEditSysFileType.Id, u => new TrialFileType() { Name = addOrEditSysFileType.Name, NameCN = addOrEditSysFileType.NameCN, }); + } return ResponseOutput.Ok(entity.Id.ToString()); diff --git a/IRaCIS.Core.Application/Service/Document/TrialFileTypeService.cs b/IRaCIS.Core.Application/Service/Document/TrialFileTypeService.cs index 71305013b..9ae25c270 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialFileTypeService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialFileTypeService.cs @@ -31,22 +31,59 @@ public class TrialFileTypeService(IRepository _trialFileTypeRepos { var trialFileTypeQueryable = _trialFileTypeRepository - .ProjectTo(_mapper.ConfigurationProvider); + .Where(t => t.TrialId == inQuery.TrialId) + + .WhereIf(inQuery.ArchiveTypeEnum != null, t => t.ArchiveTypeEnum == inQuery.ArchiveTypeEnum) + .WhereIf(inQuery.IsConfirmRecord != null, t => t.IsConfirmRecord == inQuery.IsConfirmRecord) + .WhereIf(inQuery.SubIdentification != null, t => t.SubIdentification == inQuery.SubIdentification) + .WhereIf(inQuery.IsEnable != null, t => t.IsEnable == inQuery.IsEnable) + .WhereIf(inQuery.Name.IsNotNullOrEmpty(), t => t.Name.Contains(inQuery.Name)) + .WhereIf(inQuery.NameCN.IsNotNullOrEmpty(), t => t.NameCN.Contains(inQuery.NameCN)) + + .WhereIf(inQuery.IsSelfDefine != null, t => t.IsSelfDefine == inQuery.IsSelfDefine) + .ProjectTo(_mapper.ConfigurationProvider); var pageList = await trialFileTypeQueryable.ToPagedListAsync(inQuery); return pageList; } + public async Task> GetTrialFileTypeSelectList(TrialFileTypeSelectQuery inQuery) + { + var list = _trialFileTypeRepository + .Where(t => t.TrialId == inQuery.TrialId) + + .WhereIf(inQuery.IsSelfDefine != null, t => t.IsSelfDefine == inQuery.IsSelfDefine) + .WhereIf(inQuery.IsEnable != null, t => t.IsEnable == inQuery.IsEnable) + .Select(t => new TrialFileTypeSelectView() + { + Id = t.Id, + IsEnable = t.IsEnable, + Name = _userInfo.IsEn_Us ? t.Name : t.NameCN, + IsSelfDefine = t.IsSelfDefine, + }).ToList(); + + return list; + + } + public async Task AddOrUpdateTrialFileType(TrialFileTypeAddOrEdit addOrEditTrialFileType) { - // 在此处拷贝automapper 映射 - + var verifyExp = new EntityVerifyExp() + { + VerifyExp = u => u.IsEnable == addOrEditTrialFileType.IsEnable && (u.Name == addOrEditTrialFileType.Name || u.NameCN == addOrEditTrialFileType.NameCN), + + // "当前类型启用的文件类型名称重复" + VerifyMsg = _localizer["TrialFileType_NameRepeat"], + + IsVerify = addOrEditTrialFileType.IsEnable == false + }; + + var entity = await _trialFileTypeRepository.InsertOrUpdateAsync(addOrEditTrialFileType, true, verifyExp); - var entity = await _trialFileTypeRepository.InsertOrUpdateAsync(addOrEditTrialFileType, true); return ResponseOutput.Ok(entity.Id.ToString());