裁判签名
continuous-integration/drone/push Build is passing

This commit is contained in:
he
2026-08-12 16:38:31 +08:00
parent 26f049b31e
commit f9c33e373a
4 changed files with 75 additions and 7 deletions
@@ -195,6 +195,21 @@ namespace IRaCIS.Core.Application.Service
/// </summary>
[HttpPost]
public async Task<IResponseOutput> SetJudgeForm(SetJudgeFormInDto inDto)
{
await SaveJudgeForm(inDto);
await _visitTaskRepository.UpdatePartialFromQueryAsync(inDto.VisitTaskId, x => new VisitTask()
{
JudgeResultRemark = inDto.JudgeResultRemark,
JudgeResultImagePath = string.Join(',', inDto.JudgeResultImagePathList),
});
return ResponseOutput.Result(await _readingTaskQuestionAnswerRepository.SaveChangesAsync());
}
private async Task SaveJudgeForm(SetJudgeFormInDto inDto)
{
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
var judgeRule = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == taskInfo.TrialReadingCriterionId).Select(x => x.JudgeRuleEnum).FirstNotNullAsync();
@@ -216,12 +231,38 @@ namespace IRaCIS.Core.Application.Service
}).ToList());
}
return ResponseOutput.Result(await _readingTaskQuestionAnswerRepository.SaveChangesAsync());
}
/// <summary>
/// 提交裁判表单
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<IResponseOutput> SubmitJudgeForm(SetJudgeFormInDto inDto)
{
await SaveJudgeForm(inDto);
await _visitTaskRepository.UpdatePartialFromQueryAsync(inDto.VisitTaskId, x => new VisitTask()
{
JudgeResultRemark = inDto.JudgeResultRemark,
ReadingTaskState = ReadingTaskState.HaveSigned,
SignTime=DateTime.Now,
JudgeResultImagePath = string.Join(',', inDto.JudgeResultImagePathList),
});
await _readingTaskQuestionAnswerRepository.SaveChangesAsync();
await SignatureAfter(inDto.VisitTaskId);
return ResponseOutput.Ok();
}
private async Task<List<ReadingQuestionTrial>> GetJudgeDisplayQuestions(Guid trialReadingCriterionId, decimal visitNum, JudgeRule judgeRule)
{
var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.IsJudgeQuestion).OrderBy(x => x.ShowOrder).ToListAsync();
var questionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialReadingCriterionId && x.IsJudgeQuestion)
.Where(x=>x.ShowQuestion== ShowQuestion.Show)
.OrderBy(x => x.ShowOrder).ToListAsync();
var questionIds = questionList.Select(x => x.Id).ToList();
var visitJudgeRules = judgeRule == JudgeRule.Difference
? await _readingQuestionVisitJudgeRuleRepository.Where(x => questionIds.Contains(x.ReadingQuestionId) && (x.VisitNum == visitNum || x.VisitNum == -1)).ToListAsync()
@@ -620,8 +661,15 @@ namespace IRaCIS.Core.Application.Service
});
var result = await _visitTaskRepository.SaveChangesAsync();
await SignatureAfter(inDto.VisitTaskId);
return ResponseOutput.Ok(result);
}
private async Task SignatureAfter(Guid visitTaskId)
{
// 需要判断是否添加肿瘤学任务
var taskInfo = await _visitTaskRepository.Where(x => x.JudgeVisitTaskId == inDto.VisitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
var taskInfo = await _visitTaskRepository.Where(x => x.JudgeVisitTaskId == visitTaskId).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
if (taskInfo.ReadingCategory == ReadingCategory.Visit)
{
@@ -658,11 +706,9 @@ namespace IRaCIS.Core.Application.Service
// 创建任务关联关系
await this.CreateTaskRelated(inDto.VisitTaskId);
await this.CreateTaskRelated(visitTaskId);
await SafeMailHelper.Run(async () => await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(inDto.VisitTaskId));
return ResponseOutput.Ok(result);
await SafeMailHelper.Run(async () => await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(visitTaskId));
}
/// <summary>