diff --git a/IRaCIS.Core.Application/Helper/ExcelExportHelper.cs b/IRaCIS.Core.Application/Helper/ExcelExportHelper.cs index 069eb3b3f..f4285471f 100644 --- a/IRaCIS.Core.Application/Helper/ExcelExportHelper.cs +++ b/IRaCIS.Core.Application/Helper/ExcelExportHelper.cs @@ -3,6 +3,7 @@ using DocumentFormat.OpenXml.Spreadsheet; using DocumentFormat.OpenXml.Wordprocessing; using IRaCIS.Application.Contracts; using IRaCIS.Application.Interfaces; +using IRaCIS.Core.API._ServiceExtensions.NewtonsoftJson; using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Domain.Share; using Microsoft.AspNetCore.Hosting; @@ -14,6 +15,8 @@ using Newtonsoft.Json.Linq; using NPOI.HSSF.UserModel; using NPOI.XSSF.UserModel; using System.Collections; +using System.ComponentModel; +using System.Globalization; using System.IO; namespace IRaCIS.Core.Application.Service; @@ -23,19 +26,13 @@ public static class ExcelExportHelper //MiniExcel_Export public static async Task DataExportAsync(string code, ExcelExportInfo data, string exportFileNamePrefix, IRepository _commonDocumentRepository, IWebHostEnvironment _hostEnvironment, IDictionaryService? _dictionaryService = null, Type? translateType = null, CriterionType? criterionType = null) { + var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; //判断是否有字典翻译 - object translateData = data; if (_dictionaryService != null && translateType != null) { - - ////只标注单个的时候 - //var needTranslatePropertyList = translateType.GetProperties().Where(t => t.IsDefined(typeof(DictionaryTranslateAttribute), true)) - // .Select(c => new { c.Name, DicParentCode = ((DictionaryTranslateAttribute?)c.GetCustomAttributes(typeof(DictionaryTranslateAttribute), false)[0])?.DicParentCode }).ToList(); - - //一个值 对应不同的字典翻译 var needTranslatePropertyList = translateType.GetProperties().Where(t => t.IsDefined(typeof(DictionaryTranslateAttribute), true)) .SelectMany(c => @@ -62,12 +59,18 @@ public static class ExcelExportHelper var newObjList = new List(); var no = 1; - foreach (var item in dic[key] as IList ) + foreach (var item in dic[key] as IList) { - //var itemDic = JsonConvert.DeserializeObject>(item.ToJsonNotIgnoreNull()); - var itemDic = item.ConvertToDictionary(); + //处理集合里面时间类型,根据当前语言将时间转变为字符串 + foreach (var itemValuePair in itemDic) + { + if (DateTime.TryParse(itemValuePair.Value?.ToString(), out DateTime result)) + { + itemDic[itemValuePair.Key] = ExportExcelConverterDate.DateTimeInternationalToString(result ); + } + } foreach (var needTranslateProperty in needTranslatePropertyList) @@ -79,7 +82,7 @@ public static class ExcelExportHelper { var beforeValue = itemDic[needTranslateProperty.Name]?.ToString(); - itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).Select(t=>data.IsEn_US?t.Value:t.ValueCN).FirstOrDefault() ?? String.Empty; + itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).Select(t => isEn_US ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; } } //普通翻译 或者某一标准翻译 @@ -88,7 +91,7 @@ public static class ExcelExportHelper var beforeValue = itemDic[needTranslateProperty.Name]?.ToString(); - itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).Select(t => data.IsEn_US ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; + itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).Select(t => isEn_US ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; } @@ -104,6 +107,7 @@ public static class ExcelExportHelper dic[key] = newObjList; } + } @@ -139,7 +143,7 @@ public static class ExcelExportHelper if (sheetCount == 2) { - if (data.IsEn_US) + if (isEn_US) { workbook.RemoveSheetAt(0); } @@ -149,7 +153,7 @@ public static class ExcelExportHelper } var memoryStream2 = new MemoryStream(); - workbook.Write(memoryStream2,true); + workbook.Write(memoryStream2, true); memoryStream2.Seek(0, SeekOrigin.Begin); @@ -160,14 +164,9 @@ public static class ExcelExportHelper //fileNmae = workbook.GetSheetName(0); #endregion - - - - - #region MiniExcel - var memoryStream = new MemoryStream(); + var memoryStream = new MemoryStream(); var config = new OpenXmlConfiguration() { @@ -181,29 +180,18 @@ public static class ExcelExportHelper return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { - FileDownloadName = $"{(string.IsNullOrEmpty(exportFileNamePrefix) ? "" : exportFileNamePrefix+ "_") }{Path.GetFileNameWithoutExtension(fileName) }_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx" + FileDownloadName = $"{(string.IsNullOrEmpty(exportFileNamePrefix) ? "" : exportFileNamePrefix + "_")}{Path.GetFileNameWithoutExtension(fileName)}_{DateTime.Now.ToString("yyyyMMddHHmmss")}.xlsx" }; #endregion - #region Magicodes 模板规则不一样 - - ////创建Excel导出对象 - //IExportFileByTemplate exporter = new ExcelExporter(); - - ////根据模板导出 - //var result = await exporter.ExportBytesByTemplate(exportInfo, tplPath); - - - //return new XlsxFileResult(bytes: result, fileDownloadName: $"{doc.Name}_{DateTime.Now.ToString("yyyy-MM-dd:hh:mm:ss")}.xlsx"); - #endregion - } public static async Task<(MemoryStream, string)> DataExport_NpoiTestAsync(string code, ExcelExportInfo data, IRepository _commonDocumentRepository, IWebHostEnvironment _hostEnvironment, IDictionaryService? _dictionaryService = null, Type? translateType = null, CriterionType? criterionType = null) { + var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; //判断是否有字典翻译 object translateData = data; @@ -211,11 +199,6 @@ public static class ExcelExportHelper if (_dictionaryService != null && translateType != null) { - ////只标注单个的时候 - //var needTranslatePropertyList = translateType.GetProperties().Where(t => t.IsDefined(typeof(DictionaryTranslateAttribute), true)) - // .Select(c => new { c.Name, DicParentCode = ((DictionaryTranslateAttribute?)c.GetCustomAttributes(typeof(DictionaryTranslateAttribute), false)[0])?.DicParentCode }).ToList(); - - //一个值 对应不同的字典翻译 var needTranslatePropertyList = translateType.GetProperties().Where(t => t.IsDefined(typeof(DictionaryTranslateAttribute), true)) .SelectMany(c => @@ -247,6 +230,15 @@ public static class ExcelExportHelper //var itemDic = JsonConvert.DeserializeObject>(item.ToJsonNotIgnoreNull()); var itemDic = item.ConvertToDictionary(); + //处理集合里面时间类型,根据当前语言将时间转变为字符串 + foreach (var itemValuePair in itemDic) + { + if (DateTime.TryParse(itemValuePair.Value?.ToString(), out DateTime result)) + { + itemDic[itemValuePair.Key] = ExportExcelConverterDate.DateTimeInternationalToString(result); + } + } + foreach (var needTranslateProperty in needTranslatePropertyList) { //翻译的属性依赖其他属性 @@ -256,7 +248,7 @@ public static class ExcelExportHelper { var beforeValue = itemDic[needTranslateProperty.Name]?.ToString(); - itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).Select(t => data.IsEn_US ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; + itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).Select(t => isEn_US ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; } } //普通翻译 或者某一标准翻译 @@ -265,7 +257,7 @@ public static class ExcelExportHelper var beforeValue = itemDic[needTranslateProperty.Name]?.ToString(); - itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).Select(t => data.IsEn_US ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; + itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).Select(t => isEn_US ? t.Value : t.ValueCN).FirstOrDefault() ?? String.Empty; } @@ -310,7 +302,7 @@ public static class ExcelExportHelper if (sheetCount == 2) { - if (data.IsEn_US) + if (isEn_US) { workbook.RemoveSheetAt(0); } @@ -320,7 +312,7 @@ public static class ExcelExportHelper } var memoryStream2 = new MemoryStream(); - workbook.Write(memoryStream2,true); + workbook.Write(memoryStream2, true); memoryStream2.Seek(0, SeekOrigin.Begin); @@ -355,4 +347,7 @@ public static class ExcelExportHelper #endregion } + + + } \ No newline at end of file diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index c206ca82e..27ced84d5 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -86,8 +86,8 @@ namespace IRaCIS.Core.Application.Service.Common .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialUserList_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TrialMaintenanceDTO)); @@ -132,8 +132,8 @@ namespace IRaCIS.Core.Application.Service.Common .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + @@ -187,8 +187,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = data; - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSiteUserSummary_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TrialSiteUserSummaryDto)); @@ -313,8 +313,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = new ExcelExportInfo(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialList_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TrialToBeDoneDto)); @@ -433,9 +433,10 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); + exportInfo.List=list; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialTrainingRecordList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TrainingRecordExportDTO)); @@ -489,8 +490,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialCRCUploadImageList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CRCVisitExportDTO)); @@ -548,8 +549,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialQCVisitImageList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CRCVisitExportDTO)); @@ -598,8 +599,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialQCImageChanllengeList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(QCChanllengeExportDto)); } @@ -642,8 +643,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SubjectExportDTO)); @@ -718,8 +719,8 @@ namespace IRaCIS.Core.Application.Service.Common exportInfo.CriterionName = await _readingQuestionCriterionTrialRepository.Where(u => u.TrialId == dto.TrialId && u.IsConfirm && u.Id == dto.TrialReadingCriterionId).Select(t => t.CriterionName).FirstOrDefaultAsync(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + var (memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(StaticData.Export.TrialSubjectProgressList_Export, exportInfo, /*"", */_commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SubjectProgressDto)); @@ -864,8 +865,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialStudyUploadMonitor_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(UnionStudyMonitorExportDto)); @@ -901,8 +902,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == param.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectReadingPeriodList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReadPeriodExportDto)); @@ -991,8 +992,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == studyQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialStudyList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(UnionStudyExportDTO)); } @@ -1032,8 +1033,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectVisitCheckList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(PMKCheckEXportDTO)); } @@ -1085,8 +1086,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialReadingTaskList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReadingTaskExportDto)); } @@ -1151,8 +1152,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialReReadingTaskList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReReadingTaskExportDto)); } @@ -1211,8 +1212,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TaskMedicalReviewExportDto)); } @@ -1296,8 +1297,8 @@ namespace IRaCIS.Core.Application.Service.Common exportInfo.CriterionName = await _readingQuestionCriterionTrialRepository.Where(u => u.TrialId == queryVisitTask.TrialId && u.IsConfirm && u.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionName).FirstOrDefaultAsync(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSelfAnalysisList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SelftAnalysisExport)); } @@ -1400,8 +1401,8 @@ namespace IRaCIS.Core.Application.Service.Common var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.CriterionName = await _readingQuestionCriterionTrialRepository.Where(u => u.TrialId == queryVisitTask.TrialId && u.IsConfirm && u.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionName).FirstOrDefaultAsync(); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(newList, _userInfo.TimeZoneId); ; - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialGroupAnalysisList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(GroupAnalysisExport)); } @@ -1678,8 +1679,8 @@ namespace IRaCIS.Core.Application.Service.Common list = DealJudgeMark(criterion.ArbitrationRule, list); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list.Where(t => t.ReadingCategory != ReadingCategory.Global).ToList(), _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.OverallTumorEvaluation_Export, exportInfo, $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(OverallTumorEvaluationExport), criterion.CriterionType); @@ -1738,8 +1739,8 @@ namespace IRaCIS.Core.Application.Service.Common list = DealJudgeMark(criterion.ArbitrationRule, list); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list.Where(t => t.ReadingCategory != ReadingCategory.Global).ToList(), _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.RECIST1Point1EvaluationOfTumorEfficacy_Export, exportInfo, $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(RECIST1Point1EvaluationOfTumorEfficacyExport), criterion.CriterionType); @@ -1827,8 +1828,8 @@ namespace IRaCIS.Core.Application.Service.Common //处理裁判标记 list = DealJudgeMark(criterion.ArbitrationRule, list); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(exportList, _userInfo.TimeZoneId); - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.RECIST1Point1DetailedOfEvaluatedLesion_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(RECIST1Point1DetailedOfEvaluatedLesionExport), criterion.CriterionType); @@ -1862,8 +1863,8 @@ namespace IRaCIS.Core.Application.Service.Common list = DealJudgeMark(criterion.ArbitrationRule, list); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(exportList, _userInfo.TimeZoneId); ; - exportInfo.IsEn_US = _userInfo.IsEn_Us; - exportInfo.ClientZoneId = _userInfo.TimeZoneId; + exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.PCWG3Point1DetailedOfEvaluatedLesion_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(PCWG3DetailedOfEvaluatedLesionExport), criterion.CriterionType); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs index a6d85a694..e0c620b3e 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs @@ -44,7 +44,7 @@ namespace IRaCIS.Application.Contracts } - public class TrialUserSelct: UserTrialCommand + public class TrialUserSelct : UserTrialCommand { public string Phone { get; set; } = String.Empty; @@ -120,7 +120,7 @@ namespace IRaCIS.Application.Contracts } - public class TrialCRCUploadImageList_Export: ExcelExportInfo + public class TrialCRCUploadImageList_Export : ExcelExportInfo { @@ -129,12 +129,8 @@ namespace IRaCIS.Application.Contracts public class ExcelExportInfo : TrialSelectDTO { - - public string CurrentTime => TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Local, TimeZoneInfo.FindSystemTimeZoneById(ClientZoneId)).ToString("yyyy-MM-dd HH:mm:ss"); + public string CurrentTime { get; set; } - public bool IsEn_US { get; set; } - - public string ClientZoneId { get; set; } = string.Empty; public object List { get; set; } } @@ -162,10 +158,10 @@ namespace IRaCIS.Application.Contracts { public List TrialSiteUserList { get; set; } = new List(); - + } - public class TrialSiteUserSummaryDto: TrialSiteUserSurveyView + public class TrialSiteUserSummaryDto : TrialSiteUserSurveyView { @@ -177,7 +173,7 @@ namespace IRaCIS.Application.Contracts //public string IsGenerateAccountStr => IsGenerateAccount ? "是" : "否"; - + //public string StateStr => State.GetDescription(); } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs index 7bc62b5bd..0198b9589 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs @@ -22,41 +22,6 @@ namespace IRaCIS.Application.Services IRepository _trialRepository) : BaseService, ITrialMaintenanceService { - #region 移动废弃 - - ///// - ///// 项目参与人员导出 - ///// - ///// - ///// - ///// - ///// - //[HttpPost] - //[AllowAnonymous] - //public async Task TrialUserListExport(TrialMaintenanceExportQuery param, [FromServices] IRepository _commonDocumentRepository, [FromServices] IDictionaryService _dictionaryService) - //{ - - // var exportInfo = (await _trialRepository.Where(t => t.Id == param.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); - - // exportInfo.List = await _trialUseRepository.Where(t => t.TrialId == param.TrialId).IgnoreQueryFilters() - // .WhereIf(param.UserTypeId != null, t => t.User.UserTypeId == param.UserTypeId) - // .WhereIf(!string.IsNullOrWhiteSpace(param.UserName), t => t.User.UserName.Contains(param.UserName)) - - // .WhereIf(param.IsDeleted != null, t => t.IsDeleted == param.IsDeleted) - // .WhereIf(!string.IsNullOrWhiteSpace(param.OrganizationName), - // t => t.User.OrganizationName.Contains(param.OrganizationName)) - // .WhereIf(!string.IsNullOrWhiteSpace(param.UserRealName), - // t => (t.User.FullName).Contains(param.UserRealName)) - // .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - - - // exportInfo.IsEn_US = _userInfo.IsEn_Us; - - // return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialUserList_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TrialMaintenanceDTO)); - - //} - #endregion - [HttpGet] public async Task> GetTrialUserList(Guid trialId) { diff --git a/IRaCIS.Core.Infrastructure/Extention/ExportExcelDateConverter.cs b/IRaCIS.Core.Infrastructure/Extention/ExportExcelDateConverter.cs index 1eab8021d..e24903407 100644 --- a/IRaCIS.Core.Infrastructure/Extention/ExportExcelDateConverter.cs +++ b/IRaCIS.Core.Infrastructure/Extention/ExportExcelDateConverter.cs @@ -2,6 +2,8 @@ using Newtonsoft.Json; using System; using SharpCompress.Writers; +using IRaCIS.Core.Domain.Share; +using System.Globalization; namespace IRaCIS.Core.API._ServiceExtensions.NewtonsoftJson { @@ -77,6 +79,37 @@ namespace IRaCIS.Core.API._ServiceExtensions.NewtonsoftJson return deserializedObj!; } + + public static string DateTimeInternationalToString(DateTime? dateTime, string? clientZoneId=null) + { + var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; + + if (dateTime.HasValue) + { + + var needDealTime = dateTime.Value; + + if (!string.IsNullOrWhiteSpace(clientZoneId)) + { + needDealTime = TimeZoneInfo.ConvertTime(needDealTime, TimeZoneInfo.Local, TimeZoneInfo.FindSystemTimeZoneById(clientZoneId)); + } + + if (isEn_US) + { + //暂时保持一致,等需求确认,修改英文要展示的日期格式 + return needDealTime.ToString("yyyy-MM-dd HH:mm:ss"); + } + else + { + return needDealTime.ToString("yyyy-MM-dd HH:mm:ss"); + } + } + else + { + return string.Empty; + } + + } } }