diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs index cb656e350..acb3374fc 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingImageTask/ReadingImageTaskService.cs @@ -37,6 +37,7 @@ namespace IRaCIS.Application.Services private readonly IRepository _subjectRepository; private readonly IRepository _readingGlobalTaskInfoRepository; private readonly IRepository _readingCriterionPageRepository; + private readonly IRepository _readingTaskRelationRepository; private readonly IRepository _readingJudgeInfoRepository; private readonly IRepository _readModuleRepository; private readonly IRepository _dicomInstanceRepository; @@ -72,6 +73,7 @@ namespace IRaCIS.Application.Services IRepository subjectRepository, IRepository readingGlobalTaskInfoRepository, IRepository readingCriterionPageRepository, + IRepository readingTaskRelationRepository, IRepository readingJudgeInfoRepository, IRepository readModuleRepository, IRepository 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; } + /// + /// 维护任务关系 + /// + /// + public async Task MaintainTaskRelated() + { + List relations = new List(); + var visitList = await _visitTaskRepository.Where(x => x.PastResultTaskIds != "[]" && x.RelatedVisitTaskIds != "[]").Select(x => new + { + x.Id, + x.RelatedVisitTaskIds, + x.PastResultTaskIds + }).ToListAsync(); + + + List relatedIds = new List(); + + List PastResultds = new List(); + + foreach (var item in visitList) + { + try + { + PastResultds = JsonConvert.DeserializeObject>(item.PastResultTaskIds) ?? new List(); + } + catch (Exception) + { + + PastResultds = new List(); + } + + try + { + relatedIds = JsonConvert.DeserializeObject>(item.RelatedVisitTaskIds)?? new List(); + } + catch (Exception) + { + + relatedIds = new List(); + } + + 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(); + } + + + /// /// 修改计算问题 /// @@ -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(); } diff --git a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs index 99bc6ab4b..68ce0112c 100644 --- a/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs +++ b/IRaCIS.Core.Domain.Share/Reading/ReadEnum.cs @@ -16,6 +16,20 @@ namespace IRaCIS.Core.Domain.Share public static readonly string Group = "group"; } + + public enum RelevanceType + { + /// + /// 关联的访视任务ID (当前任务是访视任务的话会有自己)集合 + /// + Related = 0, + + /// + /// 既往任务Id 不包括自己 + /// + PastResult = 0, + } + /// /// 数据来源 /// diff --git a/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskRelation.cs b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskRelation.cs new file mode 100644 index 000000000..85838f8c4 --- /dev/null +++ b/IRaCIS.Core.Domain/Reading/ReadingFormAnswer/ReadingTaskRelation.cs @@ -0,0 +1,46 @@ + +//-------------------------------------------------------------------- +// 此代码由T4模板自动生成 byzhouhang 20210918 +// 生成时间 2023-02-03 09:43:09 +// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 +using System; +using IRaCIS.Core.Domain.Share; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +namespace IRaCIS.Core.Domain.Models +{ + /// + ///任务关系表 + /// + [Table("ReadingTaskRelation")] + public class ReadingTaskRelation : Entity, IAuditAdd + { + /// + /// 任务ID + /// + public Guid TaskId { get; set; } + + /// + /// 关联的任务ID + /// + public Guid RelevanceTaskId { get; set; } + + /// + /// 类型具体解释 看枚举 + /// + public RelevanceType RelevanceType { get; set; } + + /// + /// CreateTime + /// + public DateTime CreateTime { get; set; } + + /// + /// CreateUserId + /// + public Guid CreateUserId { get; set; } + + } + + +} diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index e8f53b7c1..a3f341c8e 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -209,6 +209,8 @@ namespace IRaCIS.Core.Infra.EFCore #region Reading + + public virtual DbSet ReadingTaskRelation { get; set; } public virtual DbSet OrganInfo { get; set; } public virtual DbSet ReadingCriterionDictionary { get; set; } diff --git a/IRaCIS.Core.Test/DbHelper.ttinclude b/IRaCIS.Core.Test/DbHelper.ttinclude index 94175bd75..d6d3ddf59 100644 --- a/IRaCIS.Core.Test/DbHelper.ttinclude +++ b/IRaCIS.Core.Test/DbHelper.ttinclude @@ -4,7 +4,7 @@ public static readonly string ConnectionString = "Server=123.56.94.154,1433\\MSSQLSERVER;Database=IRaCIS_New_Tet;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true"; public static readonly string DbDatabase = "IRaCIS_New_Tet"; //ַ,ƴ - public static readonly string TableName = "TrialClinicalDataSetCriterion"; + public static readonly string TableName = "ReadingTaskRelation"; //ļ service Ƿҳ } #>