Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing Details

Uat_IRC_Net8
he 2025-07-24 13:37:50 +08:00
commit e221af244d
5 changed files with 38 additions and 10 deletions

View File

@ -85,6 +85,8 @@ public class SystemEmailSendConfigView
public string CompanyShortName { get; set; } = string.Empty;
public string CompanyShortNameCN { get; set; } = string.Empty;
public string EmailRegexStr { get; set; }
}
public class SystemPacsConfig

View File

@ -2215,6 +2215,24 @@ namespace IRaCIS.Core.Application.Service.Common
else if (criterion.CriterionType == CriterionType.PCWG3)
{
}
else if (criterion.CriterionType == CriterionType.SelfDefine)
{
//自定义的又问题名称重复 所以统一加上组名
//有重复的就加,没有重复的就不加
if (list.Any(t => t.QuestionAnswerList.Select(t => t.QuestionName).Count() != t.QuestionAnswerList.Select(t => t.QuestionName).Distinct().Count()))
{
foreach (var item in list)
{
foreach (var qs in item.QuestionAnswerList)
{
qs.QuestionName = qs.Group + "_" + qs.QuestionName;
}
}
}
}
#endregion
@ -3630,11 +3648,11 @@ namespace IRaCIS.Core.Application.Service.Common
VisitName = qa.SubjectVisit.VisitName,
CurrentQCEnum = qa.CurrentQCEnum,
AuditTime = qa.CurrentQCEnum==CurrentQC.First?qa.SubjectVisit.PreliminaryAuditTime: (qa.CurrentQCEnum == CurrentQC.Second ? qa.SubjectVisit.ReviewAuditTime: qa.UpdateTime) ,
AuditUserName = qa.CurrentQCEnum == CurrentQC.First ? qa.SubjectVisit.PreliminaryAuditUser.UserName : (qa.CurrentQCEnum == CurrentQC.Second ? qa.SubjectVisit.ReviewAuditUser.UserName : u.UserName) ,
AuditTime = qa.CurrentQCEnum == CurrentQC.First ? qa.SubjectVisit.PreliminaryAuditTime : (qa.CurrentQCEnum == CurrentQC.Second ? qa.SubjectVisit.ReviewAuditTime : qa.UpdateTime),
AuditUserName = qa.CurrentQCEnum == CurrentQC.First ? qa.SubjectVisit.PreliminaryAuditUser.UserName : (qa.CurrentQCEnum == CurrentQC.Second ? qa.SubjectVisit.ReviewAuditUser.UserName : u.UserName),
AuditUserFullName = qa.CurrentQCEnum == CurrentQC.First ? qa.SubjectVisit.PreliminaryAuditUser.FullName : (qa.CurrentQCEnum == CurrentQC.Second ? qa.SubjectVisit.ReviewAuditUser.FullName : u.FullName),
QuestionId=qa.TrialQCQuestionConfigure.Id,
QuestionId = qa.TrialQCQuestionConfigure.Id,
QuesitonName = qa.TrialQCQuestionConfigure.QuestionName,
ShowOrder = qa.TrialQCQuestionConfigure.ShowOrder,
Answer = qa.Answer,
@ -3657,7 +3675,7 @@ namespace IRaCIS.Core.Application.Service.Common
AuditUserName = g.Select(t => t.AuditUserName).First(),
AuditUserFullName = g.Select(t => t.AuditUserFullName).First(),
QuestionAnswerList = g.Select(t => new QCQuestionAnswerExport() { Answer = t.Answer, QuestionName = t.QuesitonName, ShowOrder = t.ShowOrder ,QuestionId=t.QuestionId}).OrderBy(t => t.ShowOrder).ToList()
QuestionAnswerList = g.Select(t => new QCQuestionAnswerExport() { Answer = t.Answer, QuestionName = t.QuesitonName, ShowOrder = t.ShowOrder, QuestionId = t.QuestionId }).OrderBy(t => t.ShowOrder).ToList()
}).OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.VisitNum).ToList();
@ -3669,7 +3687,7 @@ namespace IRaCIS.Core.Application.Service.Common
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
var columNameList = _trialQCQuestionRepository.Where(t=>t.TrialId==trialId).OrderBy(t=>t.ShowOrder).Select(t=>new {t.QuestionName,t.Id}).ToList();
var columNameList = _trialQCQuestionRepository.Where(t => t.TrialId == trialId).OrderBy(t => t.ShowOrder).Select(t => new { t.QuestionName, t.Id }).ToList();
var dynamicColumnConfig = new DynamicColumnConfig()

View File

@ -922,7 +922,7 @@ namespace IRaCIS.Core.Application.Service
var password = loginDto.Password;
var emailConfig = _emailConfig.CurrentValue;
var companyInfo = new SystemEmailSendConfigView() { CompanyName = emailConfig.CompanyName, CompanyNameCN = emailConfig.CompanyNameCN, CompanyShortName = emailConfig.CompanyShortName, CompanyShortNameCN = emailConfig.CompanyShortNameCN,SystemShortName=emailConfig.SystemShortName };
var companyInfo = new SystemEmailSendConfigView() { CompanyName = emailConfig.CompanyName, CompanyNameCN = emailConfig.CompanyNameCN, CompanyShortName = emailConfig.CompanyShortName, CompanyShortNameCN = emailConfig.CompanyShortNameCN,SystemShortName=emailConfig.SystemShortName ,EmailRegexStr=emailConfig.EmailRegexStr};
int maxFailures = _verifyConfig.CurrentValue.LoginMaxFailCount;

View File

@ -42,7 +42,7 @@ namespace IRaCIS.Core.Application.Image.QA
IOSSService _oSSService,
IRepository<ReadingClinicalData> _readingClinicalDataReposiotry,
IRepository<SubjectVisitImageBackRecord> _subjectVisitImageBackRecordReposiotry,
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IWebHostEnvironment _hostEnvironment) : BaseService, IQCOperationService
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IWebHostEnvironment _hostEnvironment, IFusionCache _fusionCache) : BaseService, IQCOperationService
{
@ -1097,7 +1097,6 @@ namespace IRaCIS.Core.Application.Image.QA
public async Task<IResponseOutput> DeleteStudyList(Guid[] ids, Guid subjectVisitId, Guid trialId)
{
//提交了 但是IQC同意的时候 是可以删除的 | 普通提交后也不能删除
if (await _subjectVisitRepository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
@ -1107,6 +1106,14 @@ namespace IRaCIS.Core.Application.Image.QA
}
var waitDeleteStudyList = await _dicomStudyRepository.Where(x => ids.Contains(x.Id), false, true).ToListAsync();
foreach (var item in waitDeleteStudyList)
{
if (_fusionCache.GetOrDefault<Guid>(CacheKeys.TrialStudyUidUploading(trialId, item.StudyInstanceUid)) != Guid.Empty)
{
return ResponseOutput.NotOk(_localizer["QCOperation_IsInUploadingNoDelete"]);
}
}
foreach (var study in waitDeleteStudyList)
{
@ -1274,7 +1281,7 @@ namespace IRaCIS.Core.Application.Image.QA
break;
case TrialQCProcess.SingleAudit:
visitList = await _subjectVisitRepository
.Where(t=> t.SecondReviewState == SecondReviewState.None)
.Where(t => t.SecondReviewState == SecondReviewState.None)
.Where(x => !x.SubjectVisitImageBackRecordList.Any(t => t.ImageBackState == ImageBackStateEnum.None))
.Where(x => x.SubmitState == SubmitStateEnum.Submitted && x.SecondReviewState == SecondReviewState.None
&& x.TrialId == inDto.TrialId && x.PreliminaryAuditUserId != _userInfo.UserRoleId && (x.CurrentActionUserId == _userInfo.UserRoleId || (x.AuditState != AuditStateEnum.PrimaryQCPassed && !x.IsTake)))

View File

@ -249,7 +249,8 @@ namespace IRaCIS.Core.Application.Service
QuestionValue = c.IsGlobalChange ? c.GlobalChangeAnswer : c.Answer,
QuestionId = c.ReadingQuestionTrial.Id,
TranslateDicName = c.ReadingQuestionTrial.DictionaryCode,
CDISCCode = c.ReadingQuestionTrial.CDISCCode
CDISCCode = c.ReadingQuestionTrial.CDISCCode,
Group= isEn_Us ? c.ReadingQuestionTrial.GroupEnName : c.ReadingQuestionTrial.GroupName,
})))
;