From 62b6d4176bea5965b2e7599a5238816a53718b2e Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 11 Apr 2022 16:53:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BAExcel=20=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 2 +- .../DTO/TrialSiteSurveyViewModel.cs | 23 +++++++++++++++++++ .../Service/TrialSiteUser/TrialSiteService.cs | 18 +++++++++++---- .../Service/TrialSiteUser/_MapConfig.cs | 7 ++++-- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 429a8c19..059d5cb7 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1131,7 +1131,7 @@ - + Site用户汇总表导出 diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteSurveyViewModel.cs b/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteSurveyViewModel.cs index b9b66810..afe3dc56 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteSurveyViewModel.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteSurveyViewModel.cs @@ -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 { diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs index f94bedc8..0eb69bd8 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs @@ -71,24 +71,34 @@ namespace IRaCIS.Core.Application.Services /// /// /// - [HttpGet, Route("{trialId:guid}")] + [HttpPost] [AllowAnonymous] - public async Task TrialSiteUserSummaryListExport(Guid trialId, + public async Task TrialSiteUserSummaryListExport(TrialSiteUserSurveyExportQueryDto queryParam, [FromServices] IRepository _commonDocumentRepository, [FromServices] IRepository _trialSiteSurveyRepository, [FromServices] IRepository _trialSiteUserSurveyRepository ) { - var data = (await _trialRepository.Where(t => t.Id == trialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); + var data = (await _trialRepository.Where(t => t.Id == queryParam.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); 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) .Select(g => g.OrderByDescending(u => u.CreateTime).Select(t => t.Id).First()); + var query = _trialSiteUserSurveyRepository .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(_mapper.ConfigurationProvider); data.TrialSiteUserList = await query.ToListAsync(); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs index 368755ad..ebfcf81a 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs @@ -221,11 +221,14 @@ namespace IRaCIS.Core.Application.Service - CreateMap(); + CreateMap() + .ForMember(t => t.TrialSiteUserList, u => u.Ignore()); CreateMap() .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()