导出Excel 提交

Test.EIImageViewer
hang 2022-04-11 16:53:21 +08:00
parent fa924736a8
commit 62b6d4176b
4 changed files with 43 additions and 7 deletions

View File

@ -1131,7 +1131,7 @@
<returns></returns> <returns></returns>
<exception cref="T:System.Exception"></exception> <exception cref="T:System.Exception"></exception>
</member> </member>
<member name="M:IRaCIS.Core.Application.Services.TrialMaintenanceService.TrialSiteUserSummaryListExport(System.Guid,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUserSurvey})"> <member name="M:IRaCIS.Core.Application.Services.TrialMaintenanceService.TrialSiteUserSummaryListExport(IRaCIS.Core.Application.Contracts.TrialSiteUserSurveyExportQueryDto,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUserSurvey})">
<summary> <summary>
Site用户汇总表导出 Site用户汇总表导出
</summary> </summary>

View File

@ -63,6 +63,29 @@ namespace IRaCIS.Core.Application.Contracts
} }
public class TrialSiteUserSurveyExportQueryDto
{
[NotDefault]
public Guid TrialId { get; set; }
public Guid? SiteId { get; set; }
public Guid? UserTypeId { get; set; }
public bool? IsGenerateAccount { get; set; }
public Guid? TrialRoleNameId { get; set; }
public TrialSiteUserStateEnum? State { get; set; }
public string FormWriterKeyInfo { get; set; } = string.Empty;
public string UserName { get; set; } = string.Empty;
public string OrganizationName { get; set; } = string.Empty;
}
public class TrialSiteUserSurveyAllQuery : PageInput public class TrialSiteUserSurveyAllQuery : PageInput
{ {

View File

@ -71,24 +71,34 @@ namespace IRaCIS.Core.Application.Services
/// <param name="_trialSiteUserSurveyRepository"></param> /// <param name="_trialSiteUserSurveyRepository"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="Exception"></exception> /// <exception cref="Exception"></exception>
[HttpGet, Route("{trialId:guid}")] [HttpPost]
[AllowAnonymous] [AllowAnonymous]
public async Task<IActionResult> TrialSiteUserSummaryListExport(Guid trialId, public async Task<IActionResult> TrialSiteUserSummaryListExport(TrialSiteUserSurveyExportQueryDto queryParam,
[FromServices] IRepository<CommonDocument> _commonDocumentRepository, [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
[FromServices] IRepository<TrialSiteSurvey> _trialSiteSurveyRepository, [FromServices] IRepository<TrialSiteSurvey> _trialSiteSurveyRepository,
[FromServices] IRepository<TrialSiteUserSurvey> _trialSiteUserSurveyRepository [FromServices] IRepository<TrialSiteUserSurvey> _trialSiteUserSurveyRepository
) )
{ {
var data = (await _trialRepository.Where(t => t.Id == trialId).IgnoreQueryFilters().ProjectTo<TrialSiteUserSummaryExportDto>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); var data = (await _trialRepository.Where(t => t.Id == queryParam.TrialId).IgnoreQueryFilters().ProjectTo<TrialSiteUserSummaryExportDto>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
var groupSelectIdQuery = var groupSelectIdQuery =
_trialSiteSurveyRepository.Where(t => t.TrialId == trialId) _trialSiteSurveyRepository.Where(t => t.TrialId == queryParam.TrialId)
.WhereIf(queryParam.SiteId != null, t => t.SiteId == queryParam.SiteId)
.WhereIf(!string.IsNullOrEmpty(queryParam.FormWriterKeyInfo), t => (t.UserName).Contains(queryParam.FormWriterKeyInfo) || t.Email.Contains(queryParam.FormWriterKeyInfo) || t.Phone.Contains(queryParam.FormWriterKeyInfo))
.GroupBy(t => t.SiteId) .GroupBy(t => t.SiteId)
.Select(g => g.OrderByDescending(u => u.CreateTime).Select(t => t.Id).First()); .Select(g => g.OrderByDescending(u => u.CreateTime).Select(t => t.Id).First());
var query = _trialSiteUserSurveyRepository var query = _trialSiteUserSurveyRepository
.Where(t => groupSelectIdQuery.Contains(t.TrialSiteSurveyId)) .Where(t => groupSelectIdQuery.Contains(t.TrialSiteSurveyId))
.WhereIf(queryParam.UserTypeId != null, t => t.UserTypeId == queryParam.UserTypeId)
.WhereIf(queryParam.IsGenerateAccount != null, t => t.IsGenerateAccount == queryParam.IsGenerateAccount)
.WhereIf(queryParam.TrialRoleNameId != null, t => t.TrialRoleNameId == queryParam.TrialRoleNameId)
.WhereIf(queryParam.State != null && queryParam.State != TrialSiteUserStateEnum.OverTime, t => t.InviteState == queryParam.State)
.WhereIf(queryParam.State != null && queryParam.State == TrialSiteUserStateEnum.OverTime, t => t.InviteState == TrialSiteUserStateEnum.HasSend && t.ExpireTime < DateTime.Now)
.WhereIf(!string.IsNullOrEmpty(queryParam.UserName), t => (t.LastName + " / " + t.FirstName).Contains(queryParam.UserName))
.WhereIf(!string.IsNullOrEmpty(queryParam.OrganizationName), t => t.OrganizationName.Contains(queryParam.OrganizationName))
.ProjectTo<TrialSiteUserSummaryDto>(_mapper.ConfigurationProvider); .ProjectTo<TrialSiteUserSummaryDto>(_mapper.ConfigurationProvider);
data.TrialSiteUserList = await query.ToListAsync(); data.TrialSiteUserList = await query.ToListAsync();

View File

@ -221,11 +221,14 @@ namespace IRaCIS.Core.Application.Service
CreateMap<Trial, TrialSiteUserSummaryExportDto>(); CreateMap<Trial, TrialSiteUserSummaryExportDto>()
.ForMember(t => t.TrialSiteUserList, u => u.Ignore());
CreateMap<TrialSiteUserSurvey, TrialSiteUserSummaryDto>() CreateMap<TrialSiteUserSurvey, TrialSiteUserSummaryDto>()
.ForMember(t => t.TrialRoleName, u => u.MapFrom(d => d.TrialRoleName.Value)) .ForMember(t => t.TrialRoleName, u => u.MapFrom(d => d.TrialRoleName.Value))
.ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName)); .ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName))
.ForMember(t => t.TrialSiteCode, u => u.MapFrom(d => d.TrialSiteSurvey.TrialSite.TrialSiteCode))
.ForMember(d => d.TrialSiteAliasName, u => u.MapFrom(s => s.TrialSiteSurvey.TrialSite.TrialSiteAliasName));
CreateMap<Trial, TrialSiteSurveyStat>() CreateMap<Trial, TrialSiteSurveyStat>()