diff --git a/IRaCIS.Core.Application/Service/Document/AuditDocumentService.cs b/IRaCIS.Core.Application/Service/Document/AuditDocumentService.cs index 6cd39dc14..5f8b2e5a3 100644 --- a/IRaCIS.Core.Application/Service/Document/AuditDocumentService.cs +++ b/IRaCIS.Core.Application/Service/Document/AuditDocumentService.cs @@ -133,7 +133,7 @@ public class AuditDocumentService(IRepository _auditDocumentRepos return ResponseOutput.NotOk(_localizer["AuditDocument_RepeatAuditRecord"]); } - var find = _auditRecordRepository.Where(t => t.Id == addOrEditAuditRecord.Id, true).Include(t=>t.AuditRecordIdentityUserList).FirstOrDefault(); + var find = _auditRecordRepository.Where(t => t.Id == addOrEditAuditRecord.Id, true).Include(t => t.AuditRecordIdentityUserList).FirstOrDefault(); _mapper.Map(addOrEditAuditRecord, find); find.UpdateTime = DateTime.Now; @@ -175,10 +175,22 @@ public class AuditDocumentService(IRepository _auditDocumentRepos public async Task SetAuditRecordPermission(SetAuditRecordPermissionCommand inCommand) { - var find = _auditRecordPermissionRepository.FirstOrDefaultAsync(t => t.AuditRecordId == inCommand.AuditRecordId && t.AuditDocumentId == inCommand.AuditDocumentId); + var find = await _auditRecordPermissionRepository.FirstOrDefaultAsync(t => t.AuditRecordId == inCommand.AuditRecordId && t.AuditDocumentId == inCommand.AuditDocumentId); + if (find == null && inCommand.IsAuthorization) { - await _auditRecordPermissionRepository.AddAsync(new AuditRecordPermission() { AuditRecordId = inCommand.AuditRecordId, AuditDocumentId = inCommand.AuditDocumentId }, true); + + //闭包表中找到 设置Id为祖先的所有 后代 包括自己 + var matchIdList = await _auditDocumentClosureRepository.Where(t => inCommand.AuditDocumentId == t.AncestorId).Select(t => t.DescendantId).ToListAsync(); + + + foreach (var item in matchIdList) + { + await _auditRecordPermissionRepository.AddAsync(new AuditRecordPermission() { AuditRecordId = inCommand.AuditRecordId, AuditDocumentId = item }); + } + + await _auditRecordPermissionRepository.SaveChangesAsync(); + } else {