修改导表,日志记录
continuous-integration/drone/push Build is passing Details

Test_HIR_Net8
hang 2024-11-25 11:47:52 +08:00
parent 542ead68a7
commit a3f635894b
5 changed files with 213 additions and 57 deletions

View File

@ -165,7 +165,7 @@ public static class ExcelExportHelper
} }
//中文替换项目术语 //中文替换项目术语
if (isEn_US == false && data.TrialObjectNameList.Count > 0) if (data.TrialObjectNameList.Count > 0)
{ {
var replaceObjectList = data.TrialObjectNameList; var replaceObjectList = data.TrialObjectNameList;
@ -176,24 +176,30 @@ public static class ExcelExportHelper
for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) for (int rowIndex = 0; rowIndex < rowCount; rowIndex++)
{ {
var row = sheet.GetRow(rowIndex); var row = sheet.GetRow(rowIndex);
var colums = row.LastCellNum;
for (int colIndex = 0; colIndex < colums; colIndex++) if (row != null)
{ {
var cell = row.GetCell(colIndex);
// 只处理字符串类型的单元格 var colums = row.LastCellNum;
if (cell != null)
for (int colIndex = 0; colIndex < colums; colIndex++)
{ {
var cellValue = cell.StringCellValue; var cell = row.GetCell(colIndex);
var find = replaceObjectList.FirstOrDefault(t => t.Name == cellValue); // 只处理字符串类型的单元格
if (find != null) if (cell != null)
{ {
cell.SetCellValue(find.TrialName); var cellValue = cell.StringCellValue;
var find = replaceObjectList.FirstOrDefault(t => t.Name == cellValue);
if (find != null)
{
cell.SetCellValue(find.TrialName);
}
} }
} }
} }
} }
} }
@ -415,7 +421,7 @@ public static class ExcelExportHelper
} }
//中文替换项目术语 //中文替换项目术语
if (isEn_US == false && data.TrialObjectNameList.Count > 0) if (data.TrialObjectNameList.Count > 0)
{ {
var replaceObjectList = data.TrialObjectNameList; var replaceObjectList = data.TrialObjectNameList;
@ -426,21 +432,25 @@ public static class ExcelExportHelper
for (int rowIndex = 0; rowIndex < rowCount; rowIndex++) for (int rowIndex = 0; rowIndex < rowCount; rowIndex++)
{ {
var row = sheet.GetRow(rowIndex); var row = sheet.GetRow(rowIndex);
var colums = row.LastCellNum; if (row != null)
for (int colIndex = 0; colIndex < colums; colIndex++)
{ {
var cell = row.GetCell(colIndex);
// 只处理字符串类型的单元格 var colums = row.LastCellNum;
if (cell != null)
for (int colIndex = 0; colIndex < colums; colIndex++)
{ {
var cellValue = cell.StringCellValue; var cell = row.GetCell(colIndex);
var find = replaceObjectList.FirstOrDefault(t => t.Name == cellValue); // 只处理字符串类型的单元格
if (find != null) if (cell != null)
{ {
cell.SetCellValue(find.TrialName); var cellValue = cell.StringCellValue;
var find = replaceObjectList.FirstOrDefault(t => t.Name == cellValue);
if (find != null)
{
cell.SetCellValue(find.TrialName);
}
} }
} }
} }

View File

@ -884,6 +884,16 @@
<param name="_trialRepository"></param> <param name="_trialRepository"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetTrialDownloadList_Export(IRaCIS.Core.Application.Contracts.TrialIamgeDownQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialImageDownload},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
<summary>
影像下载记录表
</summary>
<param name="inQuery"></param>
<param name="_trialImageDownloadRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetInternationalizationList_Export(IRaCIS.Core.Application.ViewModel.InternationalizationQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Internationalization},IRaCIS.Application.Interfaces.IDictionaryService)"> <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetInternationalizationList_Export(IRaCIS.Core.Application.ViewModel.InternationalizationQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Internationalization},IRaCIS.Application.Interfaces.IDictionaryService)">
<summary> <summary>
国际化导出 国际化导出
@ -891,6 +901,15 @@
<param name="inQuery"></param> <param name="inQuery"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetEmailNoticeConfigList_Export(IRaCIS.Core.Application.Contracts.EmailNoticeConfigQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},IRaCIS.Application.Interfaces.IDictionaryService)">
<summary>
邮件导出
</summary>
<param name="inQuery"></param>
<param name="_emailNoticeConfigrepository"></param>
<param name="_dictionaryService"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetAnalysisTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})"> <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.GetAnalysisTaskList_Export(IRaCIS.Core.Application.ViewModel.VisitTaskQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial})">
<summary> <summary>
一致性分析结果导出 7 8 分别是自身 和组件一致性 一致性分析结果导出 7 8 分别是自身 和组件一致性

View File

@ -230,7 +230,7 @@ namespace IRaCIS.Core.Application.Service.Common
ExperimentName = t.ExperimentName, ExperimentName = t.ExperimentName,
TrialCode = t.TrialCode, TrialCode = t.TrialCode,
CreateTime = t.CreateTime, CreateTime = t.CreateTime,
Sponsor = t.Sponsor, Sponsor = _userInfo.IsEn_Us ? t.Sponsor : t.Sponsor,
TrialStatusStr = t.TrialStatusStr, TrialStatusStr = t.TrialStatusStr,
ExpetiedTaskCount = isPM ? t.VisitTaskList.Where(t => t.IsUrgent).Count() : 0, ExpetiedTaskCount = isPM ? t.VisitTaskList.Where(t => t.IsUrgent).Count() : 0,
@ -1213,6 +1213,44 @@ namespace IRaCIS.Core.Application.Service.Common
} }
/// <summary>
/// 影像下载记录表
/// </summary>
/// <param name="inQuery"></param>
/// <param name="_trialImageDownloadRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetTrialDownloadList_Export(TrialIamgeDownQuery inQuery,
[FromServices] IRepository<TrialImageDownload> _trialImageDownloadRepository,
[FromServices] IDictionaryService _dictionaryService,
[FromServices] IRepository<Trial> _trialRepository)
{
var query = _trialImageDownloadRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.SubjectCode.IsNotNullOrEmpty(), t => t.SubjectCode.Contains(inQuery.SubjectCode))
.WhereIf(inQuery.IP.IsNotNullOrEmpty(), t => t.IP.Contains(inQuery.IP))
.WhereIf(inQuery.Name.IsNotNullOrEmpty(), t => t.CreateUser.UserName.Contains(inQuery.Name) || t.CreateUser.FullName.Contains(inQuery.Name))
.WhereIf(inQuery.ImageType != null, t => t.ImageType == inQuery.ImageType)
.WhereIf(inQuery.UserType != null, t => t.CreateUser.UserTypeEnum == inQuery.UserType)
.WhereIf(inQuery.IsSuccess != null, t => t.IsSuccess == inQuery.IsSuccess)
.WhereIf(inQuery.DownloadStartTime != null, t => t.DownloadStartTime >= inQuery.DownloadStartTime)
.WhereIf(inQuery.DownloadEndTime != null, t => t.DownloadEndTime <= inQuery.DownloadEndTime)
.ProjectTo<TrialImageDownloadExportDto>(_mapper.ConfigurationProvider);
var list = await query.SortToListAsync(inQuery);
var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialImageDownloadList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TrialImageDownloadExportDto));
}
@ -1252,10 +1290,43 @@ namespace IRaCIS.Core.Application.Service.Common
} }
/// <summary>
/// 邮件导出
/// </summary>
/// <param name="inQuery"></param>
/// <param name="_emailNoticeConfigrepository"></param>
/// <param name="_dictionaryService"></param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetEmailNoticeConfigList_Export(EmailNoticeConfigQuery inQuery,
[FromServices] IRepository<EmailNoticeConfig> _emailNoticeConfigrepository,
[FromServices] IDictionaryService _dictionaryService)
{
var emailNoticeConfigQueryable = _emailNoticeConfigrepository
//.WhereIf(inQuery.SystemLevel == null, t => t.SystemLevel == SysEmailLevel.not_sys)
//.WhereIf(inQuery.SystemLevel != null, t => t.SystemLevel == inQuery.SystemLevel)
//.WhereIf(inQuery.IsDistinguishCriteria != null, t => t.IsDistinguishCriteria == inQuery.IsDistinguishCriteria)
.WhereIf(inQuery.CriterionTypeEnum != null, t => t.CriterionTypeEnum == inQuery.CriterionTypeEnum)
.WhereIf(inQuery.BusinessScenarioEnum != null, t => t.BusinessScenarioEnum == inQuery.BusinessScenarioEnum)
.WhereIf(inQuery.IsReturnRequired != null, t => t.IsReturnRequired == inQuery.IsReturnRequired)
.WhereIf(inQuery.IsEnable != null, t => t.IsEnable == inQuery.IsEnable)
.ProjectTo<EmailNoticeConfigExportDto>(_mapper.ConfigurationProvider);
var list = await emailNoticeConfigQueryable.SortToListAsync(inQuery);
var exportInfo = new ExcelExportInfo();
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
return await ExcelExportHelper.DataExportAsync(StaticData.Export.EmailNoticeConfig_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(EmailNoticeConfigExportDto));
}
#region 导表公用 #region 导表公用
@ -1331,11 +1402,25 @@ namespace IRaCIS.Core.Application.Service.Common
} }
else else
{ {
//如果没有产生裁判默认选择R1 //两个人都做了
if (item.ArmEnum == Arm.DoubleReadingArm1) if (resultExceptJudgeList.Count(t => t.VisitTaskNum == item.VisitTaskNum && t.SubjectCode == item.SubjectCode) == 2)
{ {
item.IsJudgeSelect = true; //如果没有产生裁判默认选择R1
if (item.ArmEnum == Arm.DoubleReadingArm1)
{
item.IsJudgeSelect = true;
}
else
{
item.IsJudgeSelect = false;
}
} }
else
{
item.IsJudgeSelect = null;
item.IsTrigerJudge = null;
}
} }
} }
@ -1353,17 +1438,26 @@ namespace IRaCIS.Core.Application.Service.Common
var maxFinishedJudge = judegeList.Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned).OrderByDescending(t => t.VisitTaskNum).FirstOrDefault(); var maxFinishedJudge = judegeList.Where(t => t.ReadingTaskState == ReadingTaskState.HaveSigned).OrderByDescending(t => t.VisitTaskNum).FirstOrDefault();
var maxNotFinishedJudge = judegeList.Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned).FirstOrDefault(); var maxNotFinishedJudge = judegeList.Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned).OrderByDescending(t => t.VisitTaskNum).FirstOrDefault();
//仅有一个未完成的全局裁判那么都是null
//n个裁判任务都未完成
if (maxFinishedJudge == null && maxNotFinishedJudge != null) if (maxFinishedJudge == null && maxNotFinishedJudge != null)
{ {
if (visitItem.VisitTaskNum < maxNotFinishedJudge.VisitTaskNum) if (visitItem.VisitTaskNum < maxNotFinishedJudge.VisitTaskNum)
{ {
visitItem.IsJudgeSelect = null; visitItem.IsJudgeSelect = null;
} }
else
{
//大于当前未完成的全局裁判 后续 肯定是未知的
visitItem.IsTrigerJudge = null;
visitItem.IsJudgeSelect = null;
}
} }
//全局裁判都完成了,那么以最后一次裁判选择的为准 //n个全局裁判都完成了,那么以最后一次裁判选择的为准
else if (maxFinishedJudge != null && maxNotFinishedJudge == null) else if (maxFinishedJudge != null && maxNotFinishedJudge == null)
{ {
if (visitItem.ArmEnum == maxFinishedJudge.JudgeArmEnum && visitItem.VisitTaskNum < maxFinishedJudge.VisitTaskNum) if (visitItem.ArmEnum == maxFinishedJudge.JudgeArmEnum && visitItem.VisitTaskNum < maxFinishedJudge.VisitTaskNum)
@ -1376,14 +1470,27 @@ namespace IRaCIS.Core.Application.Service.Common
{ {
visitItem.IsJudgeSelect = false; visitItem.IsJudgeSelect = false;
} }
else
{
//裁判都完成的后续 没有其他裁判任务 肯定也是未知的
visitItem.IsTrigerJudge = null;
visitItem.IsJudgeSelect = null;
}
} }
else else
{ {
//两个都不为null 肯定是不同的裁判 //两个都不为null 肯定是不同的裁判
//在完成裁判之后的,和未完成裁判之前的 //在完成裁判之后的
if (/*visitItem.VisitTaskNum < maxNotFinishedJudge.VisitTaskNum &&*/ visitItem.VisitTaskNum > maxFinishedJudge.VisitTaskNum) if (visitItem.VisitTaskNum > maxNotFinishedJudge.VisitTaskNum)
{ {
visitItem.IsTrigerJudge = null;
visitItem.IsJudgeSelect = null;
}
//完成裁判之后的 ,和未完成裁判之前的
else if (visitItem.VisitTaskNum < maxNotFinishedJudge.VisitTaskNum && visitItem.VisitTaskNum > maxFinishedJudge.VisitTaskNum)
{
visitItem.IsTrigerJudge = true;
visitItem.IsJudgeSelect = null; visitItem.IsJudgeSelect = null;
} }
else if (visitItem.ArmEnum == maxFinishedJudge.JudgeArmEnum && visitItem.VisitTaskNum < maxFinishedJudge.VisitTaskNum) else if (visitItem.ArmEnum == maxFinishedJudge.JudgeArmEnum && visitItem.VisitTaskNum < maxFinishedJudge.VisitTaskNum)
@ -1400,11 +1507,27 @@ namespace IRaCIS.Core.Application.Service.Common
} }
else else
{ {
//不存在裁判 将R1设置 //没有产生裁判 有可能一个人没做完,也有可能做完了没产生裁判
if (visitItem.ArmEnum == Arm.DoubleReadingArm1) //两个人都做了
if (resultExceptJudgeList.Count(t => t.VisitTaskNum == visitItem.VisitTaskNum && t.SubjectCode == visitItem.SubjectCode) == 2)
{ {
visitItem.IsJudgeSelect = true; //不存在裁判 将R1设置
if (visitItem.ArmEnum == Arm.DoubleReadingArm1)
{
visitItem.IsJudgeSelect = true;
}
else
{
visitItem.IsJudgeSelect = false;
}
} }
else
{
visitItem.IsJudgeSelect = null;
visitItem.IsTrigerJudge = null;
}
} }
} }
} }
@ -1671,7 +1794,7 @@ namespace IRaCIS.Core.Application.Service.Common
list.Add(new ExportDocumentDes() { Code = StaticData.Export.CommonJudgeReadingDetail_Export, ExportCatogory = ExportResult.DetailedTableOfAdjudicationResults }); //list.Add(new ExportDocumentDes() { Code = StaticData.Export.CommonJudgeReadingDetail_Export, ExportCatogory = ExportResult.DetailedTableOfAdjudicationResults });
if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB
@ -1681,29 +1804,29 @@ namespace IRaCIS.Core.Application.Service.Common
list.Add(new ExportDocumentDes() { Code = StaticData.Export.ReadingLession_Export, ExportCatogory = ExportResult.DetailedTableOfLesions }); list.Add(new ExportDocumentDes() { Code = StaticData.Export.ReadingLession_Export, ExportCatogory = ExportResult.DetailedTableOfLesions });
} }
if (criterion.CriterionType == CriterionType.OCT) //if (criterion.CriterionType == CriterionType.OCT)
{ //{
list.Add(new ExportDocumentDes() { Code = StaticData.Export.OCT_ReadingLession_Export, ExportCatogory = ExportResult.OCT_ReadingLession_Export }); // list.Add(new ExportDocumentDes() { Code = StaticData.Export.OCT_ReadingLession_Export, ExportCatogory = ExportResult.OCT_ReadingLession_Export });
} //}
switch (criterion.ArbitrationRule) //switch (criterion.ArbitrationRule)
{ //{
case ArbitrationRule.None: // case ArbitrationRule.None:
break; // break;
case ArbitrationRule.Visit: // case ArbitrationRule.Visit:
list.Add(new ExportDocumentDes() { Code = StaticData.Export.VisitJudgeRatio_Export, ExportCatogory = ExportResult.VisitJudgeRatio_Export }); // list.Add(new ExportDocumentDes() { Code = StaticData.Export.VisitJudgeRatio_Export, ExportCatogory = ExportResult.VisitJudgeRatio_Export });
break; // break;
case ArbitrationRule.Reading: // case ArbitrationRule.Reading:
list.Add(new ExportDocumentDes() { Code = StaticData.Export.ReadingPeriodJudgeRatio_Export, ExportCatogory = ExportResult.ReadingPeriodJudgeRatio_Export }); // list.Add(new ExportDocumentDes() { Code = StaticData.Export.ReadingPeriodJudgeRatio_Export, ExportCatogory = ExportResult.ReadingPeriodJudgeRatio_Export });
break; // break;
case ArbitrationRule.NA: // case ArbitrationRule.NA:
break; // break;
default: // default:
break; // break;
} //}
//if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB) //if (criterion.CriterionType == CriterionType.RECIST1Point1 || criterion.CriterionType == CriterionType.RECIST1Pointt1_MB)

View File

@ -1184,8 +1184,8 @@ namespace IRaCIS.Core.Application.Contracts
//在当前访视触发裁判,或者在截止日期小于等于当前访视的阅片期触发裁判 //在当前访视触发裁判,或者在截止日期小于等于当前访视的阅片期触发裁判
[DictionaryTranslateAttribute("YesOrNo")] [DictionaryTranslateAttribute("YesOrNoAudit")]
public bool IsTrigerJudge { get; set; } public bool? IsTrigerJudge { get; set; }
//(如果是访视点裁判,则仅在所选阅片人对应访视 显示;如果是阅片期裁判,则在所选阅片人 阅片期内的所有访视 显示此原因) //(如果是访视点裁判,则仅在所选阅片人对应访视 显示;如果是阅片期裁判,则在所选阅片人 阅片期内的所有访视 显示此原因)
public string JudgeNote { get; set; } = string.Empty; public string JudgeNote { get; set; } = string.Empty;

View File

@ -34,7 +34,11 @@ namespace IRaCIS.Core.Application.Triggers
{ {
var user = context.Entity; var user = context.Entity;
await _userLogReposiotry.AddAsync(new UserLog() { OptType = UserOptType.AddUser, OptUserId = user.Id, LoginUserId = _userInfo.Id, IP = _userInfo.IP }); if (context.ChangeType == ChangeType.Added)
{
await _userLogReposiotry.AddAsync(new UserLog() { OptType = UserOptType.AddUser, OptUserId = user.Id, LoginUserId = _userInfo.Id, IP = _userInfo.IP });
}
} }
} }
} }