diff --git a/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs index 560681283..a754a608e 100644 --- a/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs +++ b/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs @@ -65,12 +65,10 @@ namespace IRaCIS.Core.Application.Contracts //public string DocNeedSignUserTypes { get; set; } - //public List UserConfirmedUserTypeList => IdentityUserTypeList.Intersect(DocNeedSignUserTypeList).ToList(); + public List UserConfirmedUserTypeList => (DocNeedSignUserTypeList != null && IdentityUserTypeList != null) ? IdentityUserTypeList.Intersect(DocNeedSignUserTypeList).ToList() : new List(); - [JsonIgnore] public IEnumerable IdentityUserTypeList { get; set; } - [JsonIgnore] public IEnumerable DocNeedSignUserTypeList { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs index ec1531d9e..f6992c35e 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs @@ -232,35 +232,36 @@ namespace IRaCIS.Core.Application.Services from trialUser in _trialIdentityUserRepository.AsQueryable(false) .Where(t => t.TrialId == inQuery.TrialId && t.IdentityUserId == _userInfo.IdentityUserId && t.TrialUserRoleList.Any(t => sysDoc.NeedConfirmedUserTypeList.Any(c => c.NeedConfirmUserTypeId == t.UserRole.UserTypeId))) - - join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = trialUser.IdentityUserId, SystemDocumentId = sysDoc.Id } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc - from confirm in cc.DefaultIfEmpty() - select new UnionDocumentWithConfirmInfoView() - { - IsSystemDoc = true, - Id = sysDoc.Id, - CreateTime = sysDoc.CreateTime, - IsDeleted = sysDoc.IsDeleted, - SignViewMinimumMinutes = sysDoc.SignViewMinimumMinutes, - Name = sysDoc.Name, - Path = sysDoc.Path, - FileType = _userInfo.IsEn_Us ? sysDoc.FileType.Value : sysDoc.FileType.ValueCN, - FileTypeId = sysDoc.FileTypeId, - UpdateTime = sysDoc.UpdateTime, - //IsConfirmed = confirm.ConfirmTime != null, + join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = trialUser.IdentityUserId, SystemDocumentId = sysDoc.Id } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc + from confirm in cc.DefaultIfEmpty() + select new UnionDocumentWithConfirmInfoView() + { + IsSystemDoc = true, - ConfirmUserId = confirm.ConfirmUserId, - ConfirmTime = confirm.ConfirmTime, + Id = sysDoc.Id, + CreateTime = sysDoc.CreateTime, + IsDeleted = sysDoc.IsDeleted, + SignViewMinimumMinutes = sysDoc.SignViewMinimumMinutes, + Name = sysDoc.Name, + Path = sysDoc.Path, + FileType = _userInfo.IsEn_Us ? sysDoc.FileType.Value : sysDoc.FileType.ValueCN, + FileTypeId = sysDoc.FileTypeId, + UpdateTime = sysDoc.UpdateTime, + //IsConfirmed = confirm.ConfirmTime != null, - RealName = trialUser.IdentityUser.FullName, - UserName = trialUser.IdentityUser.UserName, + ConfirmUserId = confirm.ConfirmUserId, + ConfirmTime = confirm.ConfirmTime, - //UserTypeId = trialUser.UserRole.UserTypeId, - //UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName, + RealName = trialUser.IdentityUser.FullName, + UserName = trialUser.IdentityUser.UserName, - FullFilePath = sysDoc.Path - }; + //UserTypeId = trialUser.UserRole.UserTypeId, + //UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName, + //DocNeedSignUserTypeList = sysDoc.NeedConfirmedUserTypeList.Select(t => t.UserTypeRole.UserTypeName), + + FullFilePath = sysDoc.Path + }; //项目文档查询 @@ -268,37 +269,39 @@ namespace IRaCIS.Core.Application.Services from trialDoc in _trialDocumentRepository.AsQueryable(false).Where(t => t.TrialId == inQuery.TrialId) from trialUser in _trialIdentityUserRepository.AsQueryable(false).Where(t => t.TrialId == inQuery.TrialId && t.IdentityUserId == _userInfo.IdentityUserId && t.TrialUserRoleList.Any(t => trialDoc.NeedConfirmedUserTypeList.Any(c => c.NeedConfirmUserTypeId == t.UserRole.UserTypeId))) - - join confirm in _trialDocConfirmedUserRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on - new { trialUser.IdentityUserId, TrialDocumentId = trialDoc.Id } equals new { IdentityUserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc - from confirm in cc.DefaultIfEmpty() - select new UnionDocumentWithConfirmInfoView() - { - IsSystemDoc = false, - Id = trialDoc.Id, - CreateTime = trialDoc.CreateTime, - IsDeleted = trialDoc.IsDeleted, - SignViewMinimumMinutes = trialDoc.SignViewMinimumMinutes, - Name = trialDoc.Name, - Path = trialDoc.Path, - FileTypeId = trialDoc.FileTypeId, - FileType = _userInfo.IsEn_Us ? trialDoc.FileType.Value : trialDoc.FileType.ValueCN, - UpdateTime = trialDoc.UpdateTime, - //IsConfirmed= confirm.ConfirmTime!=null, + join confirm in _trialDocConfirmedUserRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on + new { trialUser.IdentityUserId, TrialDocumentId = trialDoc.Id } equals new { IdentityUserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc + from confirm in cc.DefaultIfEmpty() + select new UnionDocumentWithConfirmInfoView() + { + IsSystemDoc = false, + + Id = trialDoc.Id, + CreateTime = trialDoc.CreateTime, + IsDeleted = trialDoc.IsDeleted, + SignViewMinimumMinutes = trialDoc.SignViewMinimumMinutes, + Name = trialDoc.Name, + Path = trialDoc.Path, + FileTypeId = trialDoc.FileTypeId, + FileType = _userInfo.IsEn_Us ? trialDoc.FileType.Value : trialDoc.FileType.ValueCN, + UpdateTime = trialDoc.UpdateTime, + //IsConfirmed= confirm.ConfirmTime!=null, - ConfirmUserId = confirm.ConfirmUserId, - ConfirmTime = confirm.ConfirmTime, - RealName = trialUser.IdentityUser.FullName, - UserName = trialUser.IdentityUser.UserName, + ConfirmUserId = confirm.ConfirmUserId, + ConfirmTime = confirm.ConfirmTime, + RealName = trialUser.IdentityUser.FullName, + UserName = trialUser.IdentityUser.UserName, - //UserTypeId = trialUser.UserRole.UserTypeId, - //UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName, + //DocNeedSignUserTypeList = trialDoc.NeedConfirmedUserTypeList.Select(t => t.UserTypeRole.UserTypeName), - FullFilePath = trialDoc.Path - }; + //UserTypeId = trialUser.UserRole.UserTypeId, + //UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName, + + FullFilePath = trialDoc.Path + }; @@ -392,7 +395,7 @@ namespace IRaCIS.Core.Application.Services #region 报错 奇怪的bug - var unionQuery = systemDocQuery.Union(trialDocQuery) + var unionQuery = systemDocQuery.Concat(trialDocQuery) .WhereIf(!string.IsNullOrEmpty(inQuery.Name), t => t.Name.Contains(inQuery.Name)) .WhereIf(inQuery.FileTypeId != null, t => t.FileTypeId == inQuery.FileTypeId) .WhereIf(inQuery.IsSign == true, t => t.ConfirmTime != null) @@ -489,13 +492,14 @@ namespace IRaCIS.Core.Application.Services - ConfirmUserId = confirm.ConfirmUserId, + ConfirmUserId = trialUser.IdentityUserId, ConfirmTime = confirm.ConfirmTime, RealName = trialUser.IdentityUser.FullName, UserName = trialUser.IdentityUser.UserName, //UserTypeId = trialUser.UserRole.UserTypeId, //UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName, + //DocNeedSignUserTypeList = trialDoc.NeedConfirmedUserTypeList.Select(t => t.UserTypeRole.UserTypeName), FullFilePath = trialDoc.Path }; @@ -525,7 +529,7 @@ namespace IRaCIS.Core.Application.Services UpdateTime = sysDoc.UpdateTime, //IsConfirmed = confirm.ConfirmTime != null, - ConfirmUserId = confirm.ConfirmUserId, + ConfirmUserId = trialUser.IdentityUserId, ConfirmTime = confirm.ConfirmTime, RealName = trialUser.IdentityUser.FullName, @@ -537,7 +541,7 @@ namespace IRaCIS.Core.Application.Services FullFilePath = sysDoc.Path }; - var tt = await trialDocQuery.ToPagedListAsync(inQuery); + //var tt = await trialDocQuery.ToPagedListAsync(inQuery); var unionQuery = trialDocQuery.Union(systemDocQuery).IgnoreQueryFilters().Where(t => !(t.IsDeleted == true && t.ConfirmUserId == null)) .WhereIf(!string.IsNullOrEmpty(inQuery.Name), t => t.Name.Contains(inQuery.Name)) @@ -546,7 +550,39 @@ namespace IRaCIS.Core.Application.Services .WhereIf(inQuery.IsConfirmed == false, t => t.ConfirmTime == null) .WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == inQuery.IsDeleted); - var result = await trialDocQuery.ToPagedListAsync(inQuery); + var result = await unionQuery.ToPagedListAsync(inQuery); + + #region 处理文档 需要签署的角色类型 和每个人的角色信息 + + var trialDocIdList = result.CurrentPageData.Where(t => t.IsSystemDoc == false).Select(t => t.Id).ToList(); + + var sysDocIdList = result.CurrentPageData.Where(t => t.IsSystemDoc == true).Select(t => t.Id).ToList(); + + var trialIdentityUserIdList = result.CurrentPageData.Select(t => t.ConfirmUserId).Distinct().ToList(); + + var trialDocUserTypeList = _trialDocNeedConfirmedUserTypeRepository.Where(t => trialDocIdList.Contains(t.TrialDocumentId)).Select(t => new { t.TrialDocumentId, t.UserTypeRole.UserTypeShortName }).ToList(); + + var sysDocUserTypeList = _systemDocNeedConfirmedUserTypeRepository.Where(t => sysDocIdList.Contains(t.SystemDocumentId)).Select(t => new { t.SystemDocumentId, t.UserTypeRole.UserTypeShortName }).ToList(); + + var trialUserUserTypeList = _trialIdentityUserRepository.Where(t => t.TrialId==inQuery.TrialId && trialIdentityUserIdList.Contains(t.IdentityUserId)).Select(t => new { t.IdentityUserId, UserTypeList = t.TrialUserRoleList.Select(c => c.UserRole.UserTypeRole.UserTypeShortName).ToList() }); + + + foreach (var item in result.CurrentPageData) + { + if (item.IsSystemDoc) + { + item.DocNeedSignUserTypeList = sysDocUserTypeList.Where(t => t.SystemDocumentId == item.Id).Select(t => t.UserTypeShortName).ToList(); + } + else + { + item.DocNeedSignUserTypeList = trialDocUserTypeList.Where(t => t.TrialDocumentId == item.Id).Select(t => t.UserTypeShortName).ToList(); + } + + item.IdentityUserTypeList = trialUserUserTypeList.Where(t => t.IdentityUserId == item.ConfirmUserId).SelectMany(c => c.UserTypeList).ToList(); + } + + + #endregion var needSignTrialDocCount = await _trialDocumentRepository.AsQueryable(true) .Where(t => t.Trial.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId))