diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index e7f09042e..e40bb10a3 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -80,7 +80,24 @@ namespace IRaCIS.Core.Application.Service.Common t => t.UserRole.OrganizationName.Contains(param.OrganizationName)) .WhereIf(!string.IsNullOrWhiteSpace(param.UserRealName), t => (t.UserRole.FullName).Contains(param.UserRealName)) - .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + .Select(t=>new TrialMaintenanceDTO() + { + UserRealName=t.UserRole.IdentityUser.FullName, + UserName=t.UserRole.IdentityUser.UserName, + UserType=t.UserRole.UserTypeRole.UserTypeShortName, + Phone=t.UserRole.IdentityUser.Phone, + EMail=t.UserRole.IdentityUser.EMail, + OrganizationName= t.UserRole.IdentityUser.OrganizationName, + + IsDeleted=t.TrialUser.IsDeleted, + JoinTime=t.TrialUser.JoinTime, + RemoveTime=t.TrialUser.RemoveTime, + + //角色授权禁用时间 + CreateTime=t.CreateTime, + DeletedTime=t.DeletedTime, + }).OrderBy(t=>t.UserRealName) + .ToListAsync(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); diff --git a/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs b/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs index a754a608e..9669388cf 100644 --- a/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs +++ b/IRaCIS.Core.Application/Service/Document/DTO/SystemDocumentViewModel.cs @@ -58,12 +58,7 @@ namespace IRaCIS.Core.Application.Contracts public string RealName { get; set; } = string.Empty; - //[JsonIgnore] - //public string IdentityUserTypes { get; set; } - - //[JsonIgnore] - //public string DocNeedSignUserTypes { get; set; } - + public string DocTypeCode { get; set; } public List UserConfirmedUserTypeList => (DocNeedSignUserTypeList != null && IdentityUserTypeList != null) ? IdentityUserTypeList.Intersect(DocNeedSignUserTypeList).ToList() : new List(); diff --git a/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs b/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs index 827c6b40a..34ec5ffd7 100644 --- a/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs +++ b/IRaCIS.Core.Application/Service/Document/SystemDocumentService.cs @@ -150,7 +150,7 @@ namespace IRaCIS.Core.Application.Services var query = from sysDoc in _systemDocumentRepository.AsQueryable(true) .Where(t => t.NeedConfirmedUserTypeList.Any(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId)) .WhereIf(!string.IsNullOrEmpty(inQuery.Name), t => t.Name.Contains(inQuery.Name)) - //外部人员 只签署 文档类型枚举值有值的 + //外部人员 只签署 外部需要签署的 .WhereIf(isInternal == false, t => t.DocUserSignType == DocUserSignType.InnerAndOuter) .WhereIf(inQuery.FileTypeId != null, t => t.FileTypeId == inQuery.FileTypeId) join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = _userInfo.IdentityUserId, SystemDocumentId = sysDoc.Id } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc @@ -178,6 +178,8 @@ namespace IRaCIS.Core.Application.Services RealName = user.FullName, UserName = user.UserName, + DocTypeCode=sysDoc.FileType.Code + //UserTypeId = user.UserTypeId, //UserTypeShortName = user.UserTypeRole.UserTypeShortName }; @@ -187,7 +189,7 @@ namespace IRaCIS.Core.Application.Services .Where(t => !(t.IsDeleted == true && t.ConfirmTime == null)) .WhereIf(inQuery.IsSigned == true, t => t.ConfirmTime != null) .WhereIf(inQuery.IsSigned == false, t => t.ConfirmTime == null) - .ToPagedListAsync(inQuery); + .ToPagedListAsync(inQuery,nameof(UnionDocumentWithConfirmInfoView.DocTypeCode)); return list; diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs index b04039f7e..6c20708b2 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs @@ -461,6 +461,8 @@ namespace IRaCIS.Core.Application.Contracts public bool IsHaveSysDocNeedNeedSign { get; set; } + public bool IsFirstSysDocNeedSign { get; set; } + //public List TrialNeedSignList { get; set; }=new List(); } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs index 140ad9408..bca7df395 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs @@ -96,38 +96,22 @@ namespace IRaCIS.Application.Contracts public class TrialMaintenanceDTO : UserTrialCommand { - //[JsonIgnore] - //public int No { get; set; } - //For MiniExcel ExcelFormat - public string State => IsDeleted ? "退出" : "加入"; - - - //[ValueMapping(text: "退出", true)] - //[ValueMapping(text: "加入", false)] [DictionaryTranslateAttribute("IsUserExitTrial")] public bool IsDeleted { get; set; } - //[ExporterHeader(Format = "yyyy-mm-DD hh:mm:ss")] - [ExcelFormat("yyyy-MM-dd hh:mm:ss")] public DateTime? DeletedTime { get; set; } - //[ExporterHeader(Format = "yyyy-mm-DD")] - [ExcelFormat("yyyy-MM-dd")] public DateTime? RemoveTime { get; set; } public string RemoveTimeStr => RemoveTime?.ToString("yyyy-MM-dd") ?? string.Empty; - //[ExporterHeader(Format = "yyyy-mm-DD")] - [ExcelFormat("yyyy-MM-dd")] public DateTime? JoinTime { get; set; } public string JoinTimeStr => JoinTime?.ToString("yyyy-MM-dd") ?? string.Empty; - //[ExporterHeader(Format = "yyyy-mm-DD hh:mm:ss")] - [ExcelFormat("yyyy-MM-dd HH:mm:ss")] public DateTime CreateTime { get; set; } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index b6483a3cd..fdb3e34bb 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -665,7 +665,7 @@ namespace IRaCIS.Core.Application { var query = _trialRepository.Where(t => t.TrialStatusStr == StaticData.TrialState.TrialOngoing) - .Where(t => t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.TrialUserRoleList.Any(t=>t.UserRole.UserTypeId==_userInfo.UserTypeId))) + .Where(t => t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.TrialUserRoleList.Any(t => t.UserRole.UserTypeId == _userInfo.UserTypeId))) .Where(t => t.QCProcessEnum != TrialQCProcess.NotAudit) .Select(t => new ImageQualityToBeDoneDto() { @@ -695,7 +695,7 @@ namespace IRaCIS.Core.Application var toBeClaimedCount = _subjectVisitRepository.Where(t => t.Trial.TrialStatusStr == StaticData.TrialState.TrialOngoing) - .Where(t => t.Trial.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.TrialUserRoleList.Any(t => t.UserRole.UserTypeId == _userInfo.UserTypeId)) + .Where(t => t.Trial.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.TrialUserRoleList.Any(t => t.UserRole.UserTypeId == _userInfo.UserTypeId)) && t.SubmitState == SubmitStateEnum.Submitted && t.AuditState != AuditStateEnum.QCPassed && t.AuditState != AuditStateEnum.QCFailed) .Where(u => u.CurrentActionUserId == null && (u.PreliminaryAuditUserId == null || (u.PreliminaryAuditUserId != _userInfo.UserRoleId && u.ReviewAuditUserId == null))).Count(); @@ -1124,10 +1124,18 @@ namespace IRaCIS.Core.Application var needSignSysDocCont = await _systemDocumentRepository.AsQueryable(true) .Where(t => t.IsDeleted == false && !t.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.IdentityUserId && t.ConfirmTime != null)) - //外部人员 只签署 文档类型枚举值有值的 + //外部人员 只签署 外部需要签署的 .WhereIf(isInternal == false, t => t.DocUserSignType == DocUserSignType.InnerAndOuter) .SelectMany(t => t.NeedConfirmedUserTypeList) .CountAsync(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId); + //电子阅片声明是否已经签署 + + var isfirstSysDocNeedSign = await _systemDocumentRepository.AsQueryable(true) + .Where(t => t.IsDeleted == false && !t.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.IdentityUserId && t.ConfirmTime != null)) + //外部人员 只签署 外部需要签署的 + .WhereIf(isInternal == false, t => t.DocUserSignType == DocUserSignType.InnerAndOuter) + .SelectMany(t => t.NeedConfirmedUserTypeList) + .AnyAsync(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId && t.SystemDocument.FileType.Code == "-1"); var signedTrialCount = await _trialDocumentRepository.AsQueryable(true) .Where(t => t.Trial.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.TrialUserRoleList.Any(t => t.UserRole.UserTypeId == _userInfo.UserTypeId))) @@ -1135,7 +1143,7 @@ namespace IRaCIS.Core.Application .Where(t => t.TrialDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.IdentityUserId && t.ConfirmTime != null)).CountAsync(); var signedSysDocCont = await _systemDocumentRepository.AsQueryable(true) - .Where(t => t.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.IdentityUserId && t.ConfirmTime != null)) + .Where(t => t.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.IdentityUserId && t.ConfirmTime != null)) .SelectMany(t => t.NeedConfirmedUserTypeList) .CountAsync(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId); @@ -1170,7 +1178,7 @@ namespace IRaCIS.Core.Application var record = new UserToBeDoneRecord() { - + IsFirstSysDocNeedSign= isfirstSysDocNeedSign, IsHaveSysDocNeedNeedSign = needSignSysDocCont > 0, //TrialNeedSignList= trialNeedSignList, diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs index 9deef590d..b6e0a3afd 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs @@ -7,6 +7,7 @@ using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Share; using MassTransit.Serialization; using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore.Storage.Json; using System; namespace IRaCIS.Core.Application.Service @@ -114,7 +115,10 @@ namespace IRaCIS.Core.Application.Service [HttpPut] public async Task UpdateTrialUserRole(UpdateTrialUserRoleCommand updateCommand) { - await _trialUseRoleRepository.UpdatePartialFromQueryAsync(t => updateCommand.IdList.Contains(t.Id), u => new TrialUserRole() { IsDeleted = updateCommand.IsDeleted }, true, true); + + DateTime? deleteTime = updateCommand.IsDeleted ? DateTime.Now : null; + + await _trialUseRoleRepository.UpdatePartialFromQueryAsync(t => updateCommand.IdList.Contains(t.Id), u => new TrialUserRole() { IsDeleted = updateCommand.IsDeleted, DeletedTime = deleteTime }, true, true); return ResponseOutput.Ok(); }