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()