Merge branch 'Test_IRC_Net8' into Uat_IRC_Net8
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
0a6ee05417
|
@ -75,6 +75,7 @@ public class SystemEmailSendConfig
|
|||
|
||||
public class SystemEmailSendConfigView
|
||||
{
|
||||
public string SystemShortName { get; set; } = string.Empty;
|
||||
public string CompanyName { get; set; } = string.Empty;
|
||||
|
||||
public string CompanyNameCN { get; set; } = string.Empty;
|
||||
|
|
|
@ -522,7 +522,7 @@
|
|||
<param name="agreeReReadingCommand"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.PMSetTaskBack(System.Guid,System.Guid)">
|
||||
<member name="M:IRaCIS.Core.Application.Service.Allocation.VisitTaskService.PMSetTaskBack(System.Guid,System.Guid,System.String)">
|
||||
<summary>
|
||||
PM 设置任务 退回
|
||||
</summary>
|
||||
|
@ -14169,7 +14169,7 @@
|
|||
返回
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.ConsistencyCheckConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomStudy},IRaCIS.Core.Domain.Share.IUserInfo,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy},AutoMapper.IMapper,Microsoft.Extensions.Localization.IStringLocalizer,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
|
||||
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.ConsistencyCheckConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomStudy},IRaCIS.Core.Domain.Share.IUserInfo,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy},AutoMapper.IMapper,Microsoft.Extensions.Localization.IStringLocalizer,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary})">
|
||||
<summary>
|
||||
构造函数注入
|
||||
</summary>
|
||||
|
|
|
@ -214,6 +214,8 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
/// </summary>
|
||||
public bool IsManualGeneration { get; set; }
|
||||
//public bool IsAfterConvertedTask { get; set; }
|
||||
|
||||
public string PMBackReason { get; set; }
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -2281,11 +2281,11 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
|
|||
/// PM 设置任务 退回
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPut("{trialId:guid}/{taskId:guid}")]
|
||||
[HttpPut("{trialId:guid}/{taskId:guid}/{pmBackReason}")]
|
||||
[UnitOfWork]
|
||||
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
||||
|
||||
public async Task<IResponseOutput> PMSetTaskBack(Guid trialId, Guid taskId)
|
||||
public async Task<IResponseOutput> PMSetTaskBack(Guid trialId, Guid taskId,string pmBackReason)
|
||||
{
|
||||
|
||||
//var trialConfig = (await _trialRepository.Where(t => t.Id == trialId).Select(t => new { TrialId = t.Id, t.IsReadingTaskViewInOrder, t.ReadingType }).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
|
@ -2346,7 +2346,6 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
|
|||
|
||||
#region 有序 无序公用流程
|
||||
|
||||
|
||||
//执行类似一致性核查回退流程 回退访视到影像上传流程
|
||||
await VisitBackAsync(task.SourceSubjectVisitId);
|
||||
|
||||
|
@ -2463,6 +2462,9 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
|
|||
|
||||
}
|
||||
|
||||
var trackTask = await _visitTaskRepository.FindAsync(task.Id);
|
||||
trackTask.PMBackReason = pmBackReason;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2677,8 +2679,9 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
|
|||
}
|
||||
else
|
||||
{
|
||||
//默认影响的都是该标准的任务
|
||||
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId);
|
||||
//默认影响的都是该标准的任务
|
||||
filterExpression = filterExpression.And(t => t.TrialReadingCriterionId == filterObj.TrialReadingCriterionId);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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 };
|
||||
var companyInfo = new SystemEmailSendConfigView() { CompanyName = emailConfig.CompanyName, CompanyNameCN = emailConfig.CompanyNameCN, CompanyShortName = emailConfig.CompanyShortName, CompanyShortNameCN = emailConfig.CompanyShortNameCN,SystemShortName=emailConfig.SystemShortName };
|
||||
|
||||
|
||||
int maxFailures = _verifyConfig.CurrentValue.LoginMaxFailCount;
|
||||
|
|
|
@ -255,7 +255,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
/// <returns></returns>
|
||||
/// <exception cref="BusinessValidationFailedException"></exception>
|
||||
[HttpPut]
|
||||
public async Task<IResponseOutput> RequestImageBack(Guid subjectVisitId,string ApplyReason)
|
||||
public async Task<IResponseOutput> RequestImageBack(Guid subjectVisitId, string ApplyReason)
|
||||
{
|
||||
|
||||
if (_subjectVisitRepository.Any(t => t.Id == subjectVisitId && t.QCChallengeList.Any(t => t.IsClosed == false)))
|
||||
|
@ -266,7 +266,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
|
||||
if (!_subjectVisitRepository.Any(t => t.Id == subjectVisitId && !t.VisitTaskList.Any(u => u.TaskState == TaskState.Effect) && t.SubmitState == SubmitStateEnum.Submitted))
|
||||
{
|
||||
//已提交未生成任务的才允许申请
|
||||
//已提交、未生成任务的才允许申请
|
||||
throw new BusinessValidationFailedException(_localizer["QCOperation_ShouldBeforeCheckPassed"]);
|
||||
}
|
||||
|
||||
|
@ -291,7 +291,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
throw new BusinessValidationFailedException(_localizer["QCOperation_SomeOneHaveApplyedImageBack"]);
|
||||
}
|
||||
|
||||
var newRecord = new SubjectVisitImageBackRecord() { SubjectVisitId = subjectVisitId, ApplyReason=ApplyReason, SubmitTime = sv.SubmitTime, EarliestScanDate = sv.EarliestScanDate, LatestScanDate = sv.LatestScanDate };
|
||||
var newRecord = new SubjectVisitImageBackRecord() { SubjectVisitId = subjectVisitId, ApplyReason = ApplyReason, SubmitTime = sv.SubmitTime, EarliestScanDate = sv.EarliestScanDate, LatestScanDate = sv.LatestScanDate };
|
||||
|
||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator)
|
||||
{
|
||||
|
@ -319,7 +319,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
/// <returns></returns>
|
||||
/// <exception cref="BusinessValidationFailedException"></exception>
|
||||
[HttpPut]
|
||||
public async Task<IResponseOutput> AuditImageBack(Guid iamgeBackRecordId, bool isAgree,string? resultRemark)
|
||||
public async Task<IResponseOutput> AuditImageBack(Guid iamgeBackRecordId, bool isAgree, string? resultRemark)
|
||||
{
|
||||
var backRecord = (await _subjectVisitImageBackRecordReposiotry.FirstOrDefaultAsync(t => t.Id == iamgeBackRecordId)).IfNullThrowException();
|
||||
|
||||
|
@ -414,7 +414,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
}
|
||||
|
||||
backRecord.AuditTime = DateTime.Now;
|
||||
backRecord.ResultRemark = resultRemark??string.Empty;
|
||||
backRecord.ResultRemark = resultRemark ?? string.Empty;
|
||||
await _subjectVisitRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
@ -1106,7 +1106,9 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
{
|
||||
var prefix = fisrtPath.Substring(1, fisrtPath.LastIndexOf('/') - 1);
|
||||
|
||||
await _oSSService.DeleteFromPrefix(prefix, false);
|
||||
await _oSSService.DeleteFromPrefix(prefix, true);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1248,7 +1250,9 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
return new GetNextIQCQualityOutDto() { };
|
||||
break;
|
||||
case TrialQCProcess.SingleAudit:
|
||||
visitList = await _subjectVisitRepository.Where(x => x.SubmitState == SubmitStateEnum.Submitted
|
||||
visitList = await _subjectVisitRepository
|
||||
.Where(x => !x.SubjectVisitImageBackRecordList.Any(t => t.ImageBackState == ImageBackStateEnum.None))
|
||||
.Where(x => x.SubmitState == SubmitStateEnum.Submitted
|
||||
&& x.TrialId == inDto.TrialId && x.PreliminaryAuditUserId != _userInfo.UserRoleId && (x.CurrentActionUserId == _userInfo.UserRoleId || (x.AuditState != AuditStateEnum.PrimaryQCPassed && !x.IsTake)))
|
||||
.Where(x => x.QCChallengeList.Count() == 0 || x.QCChallengeList.Where(y => !y.IsClosed).OrderByDescending(x => x.CreateTime).FirstOrDefault().CreateUserId != _userInfo.UserRoleId)
|
||||
.Include(x => x.Subject).ToListAsync();
|
||||
|
@ -1282,7 +1286,9 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
break;
|
||||
case TrialQCProcess.DoubleAudit:
|
||||
|
||||
visitList = await _subjectVisitRepository.Where(x => x.SubmitState == SubmitStateEnum.Submitted && x.TrialId == inDto.TrialId &&
|
||||
visitList = await _subjectVisitRepository
|
||||
.Where(x => !x.SubjectVisitImageBackRecordList.Any(t => t.ImageBackState == ImageBackStateEnum.None))
|
||||
.Where(x => x.SubmitState == SubmitStateEnum.Submitted && x.TrialId == inDto.TrialId &&
|
||||
((x.CurrentActionUserId == _userInfo.UserRoleId) || (!x.IsTake && x.AuditState != AuditStateEnum.QCPassed && (x.PreliminaryAuditUserId != _userInfo.UserRoleId)))
|
||||
)
|
||||
.Where(x => x.QCChallengeList.Count() == 0 || x.QCChallengeList.Where(y => !y.IsClosed).OrderByDescending(x => x.CreateTime).FirstOrDefault().CreateUserId != _userInfo.UserRoleId)
|
||||
|
@ -1356,6 +1362,11 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
return ResponseOutput.NotOk(_localizer["QCOperation_QCConfigFirst"], ApiResponseCodeEnum.NeedTips);
|
||||
}
|
||||
|
||||
if (_subjectVisitImageBackRecordReposiotry.Any(t => t.SubjectVisitId == subjectVisitId && t.ImageBackState == ImageBackStateEnum.None))
|
||||
{
|
||||
//已申请的影像回退,不能领取
|
||||
throw new BusinessValidationFailedException(_localizer["QCOperation_HaveApplyedImageBackCanNotObtain"]);
|
||||
}
|
||||
|
||||
//if (await _subjectVisitRepository.AnyAsync(t => t.IsTake &&
|
||||
// t.SubjectId != dbSubjectVisit.SubjectId &&
|
||||
|
|
|
@ -285,4 +285,7 @@ public class VisitTask : BaseFullAuditEntity
|
|||
|
||||
[Comment("通知IR加急阅片时间")]
|
||||
public DateTime? ExpetidEmailNoticeTime { get; set; }
|
||||
|
||||
[Comment("退回原因")]
|
||||
public string PMBackReason { get; set; }
|
||||
}
|
||||
|
|
|
@ -3487,12 +3487,28 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
}
|
||||
else
|
||||
{
|
||||
isDistinctionInterface = false;
|
||||
|
||||
|
||||
isDistinctionInterface = false;
|
||||
switch (_userInfo.RequestUrl)
|
||||
{
|
||||
//申请重阅
|
||||
case "VisitTask/applyReReading":
|
||||
extraIdentification = "/" + (int)entity.ReReadingApplyState;
|
||||
|
||||
//PM 申请重阅,区分不了是否有SPM参与
|
||||
|
||||
if (entity.ReReadingApplyState== ReReadingApplyState.TrialGroupHaveApplyed)
|
||||
{
|
||||
var hasSPM = _dbContext.VisitTaskReReading.Any(t => t.OriginalReReadingTaskId == entity.Id);
|
||||
|
||||
if (!hasSPM)
|
||||
{
|
||||
//有SPM 是5 没有SPM是6
|
||||
extraIdentification = "/" + 6;
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
|
@ -3510,6 +3526,16 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
}
|
||||
|
||||
break;
|
||||
|
||||
case "VisitTask/PMSetTaskBack":
|
||||
|
||||
if (entity.PMBackReason.IsNotNullOrEmpty())
|
||||
{
|
||||
extraIdentification = "/" + "Reason";
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,31 @@
|
|||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class pmReason : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "PMBackReason",
|
||||
table: "VisitTask",
|
||||
type: "nvarchar(400)",
|
||||
maxLength: 400,
|
||||
nullable: false,
|
||||
defaultValue: "",
|
||||
comment: "退回原因");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "PMBackReason",
|
||||
table: "VisitTask");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14378,6 +14378,12 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||
.HasColumnType("uniqueidentifier")
|
||||
.HasComment("在访视或者全局任务上记录 裁判任务的Id");
|
||||
|
||||
b.Property<string>("PMBackReason")
|
||||
.IsRequired()
|
||||
.HasMaxLength(400)
|
||||
.HasColumnType("nvarchar(400)")
|
||||
.HasComment("退回原因");
|
||||
|
||||
b.Property<string>("PastResultTaskIds")
|
||||
.IsRequired()
|
||||
.HasMaxLength(2000)
|
||||
|
|
Loading…
Reference in New Issue