修改excel和邮件

This commit is contained in:
2022-11-04 11:02:26 +08:00
parent fd02bc2dd5
commit 54bbfcfab2
8 changed files with 106 additions and 21 deletions
@@ -5,6 +5,10 @@ using IRaCIS.Core.Application.Contracts.DTO;
using IRaCIS.Core.Application.Service;
using Microsoft.AspNetCore.Authorization;
using IRaCIS.Core.Application.Helper;
using IRaCIS.Application.Interfaces;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using IRaCIS.Application.Contracts;
namespace IRaCIS.Core.Application.Image.QA
{
@@ -12,12 +16,14 @@ namespace IRaCIS.Core.Application.Image.QA
public class QCListService : BaseService, IQCListService
{
private readonly IRepository<SubjectVisit> _subjectVisitRepository;
private readonly IRepository<Trial> _trialRepository;
private readonly IRepository<TrialQCQuestionAnswer> _trialQCQuestionAnswerRepository;
private readonly IRepository<TrialQCQuestion> _trialQCQuestionRepository;
private readonly IRepository<TrialQCQuestion> _trialQCQuestionRepository
private readonly IRepository<ConsistencyCheckFile> _consistencyCheckFileRepository;
public QCListService(
IRepository<SubjectVisit> subjectVisitRepository,
IRepository<Trial> trialRepository,
IRepository<TrialQCQuestionAnswer> trialQCQuestionAnswerRepository,
IRepository<TrialQCQuestion> trialQCQuestionRepository,
IRepository<ConsistencyCheckFile> consistencyCheckFileRepository
@@ -27,6 +33,7 @@ namespace IRaCIS.Core.Application.Image.QA
this._trialQCQuestionAnswerRepository = trialQCQuestionAnswerRepository;
this._trialQCQuestionRepository = trialQCQuestionRepository;
this._consistencyCheckFileRepository = consistencyCheckFileRepository;
_trialRepository = trialRepository;
}
@@ -37,17 +44,15 @@ namespace IRaCIS.Core.Application.Image.QA
//影像上传列表
[HttpPost]
[AllowAnonymous]
public async Task<IActionResult> CRCVisitListExport(CRCVisitSearchDTO visitSearchDTO, [FromServices] IRepository<CommonDocument> _commonDocumentRepository)
public async Task<IActionResult> CRCVisitListExport(CRCVisitSearchDTO visitSearchDTO,
[FromServices] IRepository<CommonDocument> _commonDocumentRepository,
[FromServices] IDictionaryService _dictionaryService)
{
//object[] objectList = typeof(CRCVisitExportDTO).GetProperties().Where(t=>t.CustomAttributes.Any(c=>c.AttributeType==typeof(DictionaryTranslateAttribute)))
// .Select(c=>new {c.Name,})
// ;
var svExpression = QCCommon.GetSubjectVisitFilter(visitSearchDTO.VisitPlanArray);
var list = _repository.Where<SubjectVisit>(x => x.TrialId == visitSearchDTO.TrialId)
var list = await _subjectVisitRepository.Where(x => x.TrialId == visitSearchDTO.TrialId)
.Where(t => t.Subject.FinalSubjectVisitId != null ? t.VisitNum <= t.Subject.FinalSubjectVisit.VisitNum : true)
.WhereIf(visitSearchDTO.SiteId != null, t => t.SiteId == visitSearchDTO.SiteId)
.WhereIf(visitSearchDTO.SubjectId != null, t => t.Subject.Id == visitSearchDTO.SubjectId)
@@ -62,14 +67,23 @@ namespace IRaCIS.Core.Application.Image.QA
.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
.ProjectTo<CRCVisitExportDTO>(_mapper.ConfigurationProvider).ToListAsync();
//var needTranslatePropertyList = typeof(CRCVisitExportDTO).GetProperties().Where(t => t.IsDefined(typeof(DictionaryTranslateAttribute), false))
// .Select(c => new { c.Name, DicParentCode = ((DictionaryTranslateAttribute?)c.GetCustomAttributes(typeof(DictionaryTranslateAttribute), false)[0])?.DicParentCode }).ToList()
// ;
//var translateDataList = await _dictionaryService.GetBasicDataSelect(needTranslatePropertyList.Select(t => t.DicParentCode).ToArray());
//var obj = new { cc = "aa", list };
var exportInfo = (await _trialRepository.Where(t => t.Id == visitSearchDTO.TrialId).IgnoreQueryFilters().ProjectTo<TrialSelectDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
//var no = 1;
//exportInfo.TrialSiteUserList.ForEach(t => t.No = no++);
dynamic obj = exportInfo;
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSiteUserList_Export, list, "", _commonDocumentRepository, _hostEnvironment);
((IDictionary<string, object>)obj).Add("List", list);
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialCRCUploadImageList_Export, obj, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CRCVisitExportDTO));
}
@@ -90,7 +104,7 @@ namespace IRaCIS.Core.Application.Image.QA
{
var svExpression = QCCommon.GetSubjectVisitFilter(visitSearchDTO.VisitPlanArray);
var query = _repository.Where<SubjectVisit>(x => x.TrialId == visitSearchDTO.TrialId)
var query = _subjectVisitRepository.Where(x => x.TrialId == visitSearchDTO.TrialId)
.Where(t => t.Subject.FinalSubjectVisitId != null ? t.VisitNum <= t.Subject.FinalSubjectVisit.VisitNum : true)
.WhereIf(visitSearchDTO.SiteId != null, t => t.SiteId == visitSearchDTO.SiteId)
.WhereIf(visitSearchDTO.SubjectId != null, t => t.Subject.Id == visitSearchDTO.SubjectId)