维护关系

Test.EIImageViewer
he 2023-02-03 10:01:51 +08:00
parent 1c546fcb2b
commit 4666e030ac
5 changed files with 150 additions and 1 deletions

View File

@ -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();
}

View File

@ -16,6 +16,20 @@ namespace IRaCIS.Core.Domain.Share
public static readonly string Group = "group";
}
public enum RelevanceType
{
/// <summary>
/// 关联的访视任务ID (当前任务是访视任务的话会有自己)集合
/// </summary>
Related = 0,
/// <summary>
/// 既往任务Id 不包括自己
/// </summary>
PastResult = 0,
}
/// <summary>
/// 数据来源
/// </summary>

View File

@ -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
{
///<summary>
///任务关系表
///</summary>
[Table("ReadingTaskRelation")]
public class ReadingTaskRelation : Entity, IAuditAdd
{
/// <summary>
/// 任务ID
/// </summary>
public Guid TaskId { get; set; }
/// <summary>
/// 关联的任务ID
/// </summary>
public Guid RelevanceTaskId { get; set; }
/// <summary>
/// 类型具体解释 看枚举
/// </summary>
public RelevanceType RelevanceType { get; set; }
/// <summary>
/// CreateTime
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// CreateUserId
/// </summary>
public Guid CreateUserId { get; set; }
}
}

View File

@ -209,6 +209,8 @@ namespace IRaCIS.Core.Infra.EFCore
#region Reading
public virtual DbSet<ReadingTaskRelation> ReadingTaskRelation { get; set; }
public virtual DbSet<OrganInfo> OrganInfo { get; set; }
public virtual DbSet<ReadingCriterionDictionary> ReadingCriterionDictionary { get; set; }

View File

@ -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 可以配置是否分页
}
#>