修改获取下一个任务
continuous-integration/drone/push Build is passing Details

Uat_IRC_Net8
hang 2025-08-01 11:04:32 +08:00
parent e9bd228e09
commit 24a082c0f0
2 changed files with 41 additions and 34 deletions

View File

@ -17990,7 +17990,14 @@
<param name="inDto"></param> <param name="inDto"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.GetNextIQCQuality(IRaCIS.Core.Application.Contracts.GetNextIQCQualityInDto,System.Boolean)"> <member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.GetNextIQCQuality(IRaCIS.Core.Application.Contracts.GetNextIQCQualityInDto)">
<summary>
因为不区分任务类型,按照同类型没找到,要自动切换到下一种类型,必须包一层
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.GetNextIQCTask(IRaCIS.Core.Application.Contracts.GetNextIQCQualityInDto,System.Boolean)">
<summary> <summary>
获取下一个质控任务 获取下一个质控任务
</summary> </summary>

View File

@ -1254,70 +1254,70 @@ namespace IRaCIS.Core.Application.Image.QA
public async Task<GetNextIQCQualityOutDto> CollectNextIQCQuality(GetNextIQCQualityInDto inDto) public async Task<GetNextIQCQualityOutDto> CollectNextIQCQuality(GetNextIQCQualityInDto inDto)
{ {
var nextIQCQuality = await this.GetNextIQCQuality(inDto);
if (nextIQCQuality.VisitId != null && nextIQCQuality.IsReceived == false)
{
var visit = await _subjectVisitRepository.Where(x => x.Id == nextIQCQuality.VisitId).FirstNotNullAsync();
if (!visit.IsTake)
{
await ObtainOrCancelQCTask(inDto.TrialId, nextIQCQuality.VisitId.Value, true);
}
}
return nextIQCQuality;
}
/// <summary>
/// 因为不区分任务类型,按照同类型没找到,要自动切换到下一种类型,必须包一层
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<GetNextIQCQualityOutDto> GetNextIQCQuality(GetNextIQCQualityInDto inDto)
{
var trialConfig = await _trialRepository var trialConfig = await _trialRepository
.Select(t => new { TrialId = t.Id, t.IsIQCAutoNextTask, t.IsIQCAutoTaskDistinguishType }) .Select(t => new { TrialId = t.Id, t.IsIQCAutoNextTask, t.IsIQCAutoTaskDistinguishType })
.FirstOrDefaultAsync(t => t.TrialId == inDto.TrialId) .FirstOrDefaultAsync(t => t.TrialId == inDto.TrialId)
.IfNullThrowException(); .IfNullThrowException();
var isDistinguishType = trialConfig.IsIQCAutoNextTask && trialConfig.IsIQCAutoTaskDistinguishType; var isDistinguishType = trialConfig.IsIQCAutoNextTask && trialConfig.IsIQCAutoTaskDistinguishType;
if (isDistinguishType == false) if (isDistinguishType == false)
{ {
//不区分任务类型,也要按照当前任务类型给,没找到,按照默认规则给任务 无质疑 普通质控任务 //不区分任务类型,也要按照当前任务类型给,没找到,按照默认规则给任务 无质疑 普通质控任务
var nextIQCQuality = await this.GetNextIQCQuality(inDto, true); var nextIQCQuality = await this.GetNextIQCTask(inDto, true);
//没找到 //没找到
if (nextIQCQuality.VisitId == null) if (nextIQCQuality.VisitId == null)
{ {
nextIQCQuality = await this.GetNextIQCQuality(inDto, false); nextIQCQuality = await this.GetNextIQCTask(inDto, false);
if (nextIQCQuality.VisitId != null && nextIQCQuality.IsReceived == false) return nextIQCQuality;
{
var visit = await _subjectVisitRepository.Where(x => x.Id == nextIQCQuality.VisitId).FirstNotNullAsync();
if (!visit.IsTake)
{
await ObtainOrCancelQCTask(inDto.TrialId, nextIQCQuality.VisitId.Value, true);
}
}
} }
return nextIQCQuality; return nextIQCQuality;
} }
else else
{ {
//区分任务类型,那么按照当前任务类型给,没找到就结束 //区分任务类型,那么按照当前任务类型给,没找到就结束
var nextIQCQuality = await this.GetNextIQCQuality(inDto, true); var nextIQCQuality = await this.GetNextIQCTask(inDto, true);
if (nextIQCQuality.VisitId != null && nextIQCQuality.IsReceived == false)
{
var visit = await _subjectVisitRepository.Where(x => x.Id == nextIQCQuality.VisitId).FirstNotNullAsync();
if (!visit.IsTake)
{
await ObtainOrCancelQCTask(inDto.TrialId, nextIQCQuality.VisitId.Value, true);
}
}
return nextIQCQuality; return nextIQCQuality;
} }
} }
/// <summary> /// <summary>
/// 获取下一个质控任务 /// 获取下一个质控任务
/// </summary> /// </summary>
/// <param name="inDto"></param> /// <param name="inDto"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public async Task<GetNextIQCQualityOutDto> GetNextIQCQuality(GetNextIQCQualityInDto inDto, bool isDistinguishType) public async Task<GetNextIQCQualityOutDto> GetNextIQCTask(GetNextIQCQualityInDto inDto, bool isDistinguishType)
{ {
var trialConfig = await _trialRepository var trialConfig = await _trialRepository
.Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification, t.IsIQCAutoNextTask, t.IsIQCAutoTaskDistinguishType }) .Select(t => new { TrialId = t.Id, t.QCProcessEnum, t.IsImageConsistencyVerification, t.IsIQCAutoNextTask, t.IsIQCAutoTaskDistinguishType })