维护关系

This commit is contained in:
he
2023-02-03 10:01:51 +08:00
parent 1c546fcb2b
commit 4666e030ac
5 changed files with 150 additions and 1 deletions
@@ -37,6 +37,7 @@ namespace IRaCIS.Application.Services
private readonly IRepository<Subject> _subjectRepository;
private readonly IRepository<ReadingGlobalTaskInfo> _readingGlobalTaskInfoRepository;
private readonly IRepository<ReadingCriterionPage> _readingCriterionPageRepository;
private readonly IRepository<ReadingTaskRelation> _readingTaskRelationRepository;
private readonly IRepository<ReadingJudgeInfo> _readingJudgeInfoRepository;
private readonly IRepository<ReadModule> _readModuleRepository;
private readonly IRepository<DicomInstance> _dicomInstanceRepository;
@@ -72,6 +73,7 @@ namespace IRaCIS.Application.Services
IRepository<Subject> subjectRepository,
IRepository<ReadingGlobalTaskInfo> readingGlobalTaskInfoRepository,
IRepository<ReadingCriterionPage> readingCriterionPageRepository,
IRepository<ReadingTaskRelation> readingTaskRelationRepository,
IRepository<ReadingJudgeInfo> readingJudgeInfoRepository,
IRepository<ReadModule> readModuleRepository,
IRepository<DicomInstance> dicomInstanceRepository,
@@ -105,6 +107,7 @@ namespace IRaCIS.Application.Services
this._subjectRepository = subjectRepository;
this._readingGlobalTaskInfoRepository = readingGlobalTaskInfoRepository;
this._readingCriterionPageRepository = readingCriterionPageRepository;
this._readingTaskRelationRepository = readingTaskRelationRepository;
this._readingJudgeInfoRepository = readingJudgeInfoRepository;
this._readModuleRepository = readModuleRepository;
this._dicomInstanceRepository = dicomInstanceRepository;
@@ -124,6 +127,73 @@ namespace IRaCIS.Application.Services
this._trialEmailNoticeConfigService = trialEmailNoticeConfigService;
}
/// <summary>
/// 维护任务关系
/// </summary>
/// <returns></returns>
public async Task MaintainTaskRelated()
{
List<ReadingTaskRelation> relations = new List<ReadingTaskRelation>();
var visitList = await _visitTaskRepository.Where(x => x.PastResultTaskIds != "[]" && x.RelatedVisitTaskIds != "[]").Select(x => new
{
x.Id,
x.RelatedVisitTaskIds,
x.PastResultTaskIds
}).ToListAsync();
List<Guid> relatedIds = new List<Guid>();
List<Guid> PastResultds = new List<Guid>();
foreach (var item in visitList)
{
try
{
PastResultds = JsonConvert.DeserializeObject<List<Guid>>(item.PastResultTaskIds) ?? new List<Guid>();
}
catch (Exception)
{
PastResultds = new List<Guid>();
}
try
{
relatedIds = JsonConvert.DeserializeObject<List<Guid>>(item.RelatedVisitTaskIds)?? new List<Guid>();
}
catch (Exception)
{
relatedIds = new List<Guid>();
}
relations.AddRange(PastResultds.Select(x => new ReadingTaskRelation()
{
RelevanceTaskId = x,
TaskId = item.Id,
RelevanceType = RelevanceType.PastResult,
}));
relations.AddRange(relatedIds.Select(x => new ReadingTaskRelation()
{
RelevanceTaskId = x,
TaskId = item.Id,
RelevanceType = RelevanceType.Related,
}));
await _readingTaskRelationRepository.BatchDeleteNoTrackingAsync(x => x.TaskId == item.Id);
}
await _readingTaskRelationRepository.AddRangeAsync(relations);
await _readingTaskRelationRepository.SaveChangesAsync();
}
/// <summary>
/// 修改计算问题
/// </summary>
@@ -2026,10 +2096,27 @@ namespace IRaCIS.Application.Services
await _visitTaskRepository.UpdatePartialFromQueryAsync(taskInfo.Id, x => new VisitTask()
{
PastResultTaskIds = JsonConvert.SerializeObject(pastResultTaskIdList),
RelatedVisitTaskIds = JsonConvert.SerializeObject(relatedVisitTaskIdList),
});
await _readingTaskRelationRepository.AddRangeAsync(pastResultTaskIdList.Select(x => new ReadingTaskRelation()
{
RelevanceTaskId = x,
TaskId = visitTaskId,
RelevanceType = RelevanceType.PastResult,
}));
await _readingTaskRelationRepository.AddRangeAsync(relatedVisitTaskIdList.Select(x => new ReadingTaskRelation()
{
RelevanceTaskId = x,
TaskId = visitTaskId,
RelevanceType = RelevanceType.Related,
}));
await _visitTaskRepository.SaveChangesAsync();
}