Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing Details

Test_IRC_Net8
hang 2025-11-12 15:47:50 +08:00
commit 2b961c7985
13 changed files with 458 additions and 1 deletions

View File

@ -993,6 +993,8 @@ namespace IRaCIS.Core.API.Controllers
EmailBodyHtml = 4, EmailBodyHtml = 4,
ReadKeyFile=5,
Other = 5 Other = 5
} }
@ -1025,6 +1027,9 @@ namespace IRaCIS.Core.API.Controllers
case UploadFileType.EmailBodyHtml: case UploadFileType.EmailBodyHtml:
result = await SingleFileUploadAsync((fileName) => FileStoreHelper.GetSystemFileUploadPath(_hostEnvironment, StaticData.Folder.EmailTemplate, fileName)); result = await SingleFileUploadAsync((fileName) => FileStoreHelper.GetSystemFileUploadPath(_hostEnvironment, StaticData.Folder.EmailTemplate, fileName));
break; break;
case UploadFileType.ReadKeyFile:
result = await SingleFileUploadAsync((fileName) => FileStoreHelper.GetSystemFileUploadPath(_hostEnvironment, StaticData.Folder.ReadKetFile, fileName));
break;
default: default:
result = await SingleFileUploadAsync((fileName) => FileStoreHelper.GetOtherFileUploadPath(_hostEnvironment, StaticData.Folder.TempFile, fileName)); result = await SingleFileUploadAsync((fileName) => FileStoreHelper.GetOtherFileUploadPath(_hostEnvironment, StaticData.Folder.TempFile, fileName));

View File

@ -13736,6 +13736,84 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="T:IRaCIS.Core.Application.Service.SystemCriterionKeyFileService">
<summary>
系统标准阅片关键点文件服务
</summary>
<param name="_systemCriterionKeyFileRepository"></param>
<param name="_mapper"></param>
<param name="_userInfo"></param>
<param name="_localizer"></param>
</member>
<member name="M:IRaCIS.Core.Application.Service.SystemCriterionKeyFileService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemCriterionKeyFile},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary>
系统标准阅片关键点文件服务
</summary>
<param name="_systemCriterionKeyFileRepository"></param>
<param name="_mapper"></param>
<param name="_userInfo"></param>
<param name="_localizer"></param>
</member>
<member name="M:IRaCIS.Core.Application.Service.SystemCriterionKeyFileService.GetSystemCriterionKeyFileList(IRaCIS.Core.Application.Service.Reading.Dto.SystemCriterionKeyFileQuery)">
<summary>
获取系统标准阅片关键点文件列表
</summary>
<param name="inQuery"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.SystemCriterionKeyFileService.AddOrUpdateSystemCriterionKeyFile(IRaCIS.Core.Application.Service.Reading.Dto.SystemCriterionKeyFileAddOrEdit)">
<summary>
新增或者修改系统标准阅片关键点文件
</summary>
<param name="addOrEditSystemCriterionKeyFile"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.SystemCriterionKeyFileService.DeleteSystemCriterionKeyFile(System.Guid)">
<summary>
删除系统标准阅片关键点文件
</summary>
<param name="systemCriterionKeyFileId"></param>
<returns></returns>
</member>
<member name="T:IRaCIS.Core.Application.Service.TrialCriterionKeyFileService">
<summary>
项目标准阅片关键点文件服务
</summary>
<param name="_trialCriterionKeyFileRepository"></param>
<param name="_mapper"></param>
<param name="_userInfo"></param>
<param name="_localizer"></param>
</member>
<member name="M:IRaCIS.Core.Application.Service.TrialCriterionKeyFileService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialCriterionKeyFile},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary>
项目标准阅片关键点文件服务
</summary>
<param name="_trialCriterionKeyFileRepository"></param>
<param name="_mapper"></param>
<param name="_userInfo"></param>
<param name="_localizer"></param>
</member>
<member name="M:IRaCIS.Core.Application.Service.TrialCriterionKeyFileService.GetTrialCriterionKeyFileList(IRaCIS.Core.Application.Service.Reading.Dto.TrialCriterionKeyFileQuery)">
<summary>
获取项目标准阅片关键点文件列表
</summary>
<param name="inQuery"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TrialCriterionKeyFileService.AddOrUpdateTrialCriterionKeyFile(IRaCIS.Core.Application.Service.Reading.Dto.TrialCriterionKeyFileAddOrEdit)">
<summary>
新增或者修改项目标准阅片关键点文件
</summary>
<param name="addOrEditTrialCriterionKeyFile"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TrialCriterionKeyFileService.DeleteTrialCriterionKeyFile(System.Guid)">
<summary>
删除项目标准阅片关键点文件
</summary>
<param name="trialCriterionKeyFileId"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TA.ReadingQuestionService.GetTumorAssessmentPageList(IRaCIS.Core.Application.Service.Reading.Dto.GetTumorAssessmentListInDto)"> <member name="M:IRaCIS.Core.Application.Service.TA.ReadingQuestionService.GetTumorAssessmentPageList(IRaCIS.Core.Application.Service.Reading.Dto.GetTumorAssessmentListInDto)">
<summary> <summary>
获取疗效对照 获取疗效对照
@ -13790,11 +13868,18 @@
<param name="inDto"></param> <param name="inDto"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.ReadingImageTaskService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskInstance},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingNoneDicomMark},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingNoneDicomMarkBinding},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserLog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingOncologyTaskInfo},IRaCIS.Core.Application.Service.IVisitTaskHelpeService,IRaCIS.Core.Application.Service.IVisitTaskService,IRaCIS.Core.Application.Contracts.IReadingClinicalDataService,IRaCIS.Core.Application.Service.IReadingCalculateService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserFeedBack},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.ServiceVerifyConfigOption},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingGlobalTaskInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingCriterionPage},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskRelation},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingJudgeInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadModule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomInstance},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.OrganInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.OrganTrialInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDocument},IRaCIS.Core.Application.Service.ReadingCalculate.Interface.ILuganoCalculateService,IRaCIS.Core.Application.Service.ReadingCalculate.Interface.ILuganoWithoutPETCalculateService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskQuestionMark},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTrialCriterionDictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableAnswerRowInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Application.Service.IGeneralCalculateService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskStudy},IRaCIS.Core.Application.Service.ImageAndDoc.IDownloadAndUploadService,IRaCIS.Core.Application.Interfaces.ITrialEmailNoticeConfigService,AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer,ZiggyCreatures.Caching.Fusion.IFusionCache)"> <member name="M:IRaCIS.Core.Application.Service.ReadingImageTaskService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudy},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskInstance},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingNoneDicomMark},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingNoneDicomMarkBinding},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserLog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingOncologyTaskInfo},IRaCIS.Core.Application.Service.IVisitTaskHelpeService,IRaCIS.Core.Application.Service.IVisitTaskService,IRaCIS.Core.Application.Contracts.IReadingClinicalDataService,IRaCIS.Core.Application.Service.IReadingCalculateService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserFeedBack},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.ServiceVerifyConfigOption},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingGlobalTaskInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingCriterionPage},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskRelation},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingJudgeInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadModule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomInstance},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.OrganInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.OrganTrialInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDocument},IRaCIS.Core.Application.Service.ReadingCalculate.Interface.ILuganoCalculateService,IRaCIS.Core.Application.Service.ReadingCalculate.Interface.ILuganoWithoutPETCalculateService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskQuestionMark},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTrialCriterionDictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableAnswerRowInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CriterionKeyFileRead},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Application.Service.IGeneralCalculateService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskStudy},IRaCIS.Core.Application.Service.ImageAndDoc.IDownloadAndUploadService,IRaCIS.Core.Application.Interfaces.ITrialEmailNoticeConfigService,AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer,ZiggyCreatures.Caching.Fusion.IFusionCache)">
<summary> <summary>
IR影像阅片 IR影像阅片
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.ReadingImageTaskService.SetReadKeyFile(IRaCIS.Core.Application.Service.Reading.Dto.SetReadKeyFileInDto)">
<summary>
设置已阅读关键文件
</summary>
<param name="inDto"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.ReadingImageTaskService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)"> <member name="M:IRaCIS.Core.Application.Service.ReadingImageTaskService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
<summary> <summary>
获取阅片的计算数据 获取阅片的计算数据
@ -19325,6 +19410,12 @@
<param name="inDto"></param> <param name="inDto"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.Application.TrialConfigService.SynchronizeKeyFile(System.Guid)">
<summary>
同步阅片关键点
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.TrialConfigService.SetGlobalReadingInfo(IRaCIS.Core.Application.Contracts.SetGlobalReadingInfoInDto)"> <member name="M:IRaCIS.Core.Application.TrialConfigService.SetGlobalReadingInfo(IRaCIS.Core.Application.Contracts.SetGlobalReadingInfoInDto)">
<summary> <summary>
修改全局阅片配置信息 修改全局阅片配置信息

View File

@ -446,6 +446,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
} }
public class SetReadKeyFileInDto
{
public Guid TrialCriterionId { get; set; }
}
public class ViewStudyPartInDto public class ViewStudyPartInDto
{ {
public Guid VisitTaskId { get; set; } public Guid VisitTaskId { get; set; }
@ -1947,6 +1951,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
/// </summary> /// </summary>
public bool IsConvertedTask { get; set; } = false; public bool IsConvertedTask { get; set; } = false;
public bool IsReadKeyFile { get; set; } = false;
} }
public class GetReadingImgInDto public class GetReadingImgInDto

View File

@ -0,0 +1,42 @@
//--------------------------------------------------------------------
// 此代码由liquid模板自动生成 byzhouhang 20240909
// 生成时间 2025-11-12 06:46:41Z
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using System;
using IRaCIS.Core.Domain.Share;
using System.Collections.Generic;
namespace IRaCIS.Core.Application.Service.Reading.Dto;
public class SystemCriterionKeyFileView : SystemCriterionKeyFileAddOrEdit
{
public DateTime CreateTime { get; set; }
}
public class SystemCriterionKeyFileAddOrEdit
{
public Guid? Id { get; set; }
public string FileName { get; set; }
public string FilePath { get; set; }
public Guid SystemCriterionId { get; set; }
}
public class SystemCriterionKeyFileQuery:PageInput
{
public string? FileName { get; set; }
public string? FilePath { get; set; }
public Guid SystemCriterionId { get; set; }
}

View File

@ -0,0 +1,41 @@
//--------------------------------------------------------------------
// 此代码由liquid模板自动生成 byzhouhang 20240909
// 生成时间 2025-11-12 06:51:58Z
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using System;
using IRaCIS.Core.Domain.Share;
using System.Collections.Generic;
namespace IRaCIS.Core.Application.Service.Reading.Dto;
public class TrialCriterionKeyFileView : TrialCriterionKeyFileAddOrEdit
{
public DateTime CreateTime { get; set; }
}
public class TrialCriterionKeyFileAddOrEdit
{
public Guid? Id { get; set; }
public string FileName { get; set; }
public string FilePath { get; set; }
public Guid TrialCriterionId { get; set; }
}
public class TrialCriterionKeyFileQuery:PageInput
{
public string? FileName { get; set; }
public Guid TrialCriterionId { get; set; }
}

View File

@ -0,0 +1,23 @@
//--------------------------------------------------------------------
// 此代码由liquid模板自动生成 byzhouhang 20240909
// 生成时间 2025-11-12 06:46:41Z
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using System;
using IRaCIS.Core.Infrastructure.Extention;
using System.Threading.Tasks;
using IRaCIS.Core.Application.Service.Reading.Dto;
namespace IRaCIS.Core.Application.Service.Reading.Interface;
public interface ISystemCriterionKeyFileService
{
Task<PageOutput<SystemCriterionKeyFileView>> GetSystemCriterionKeyFileList(SystemCriterionKeyFileQuery inQuery);
Task<IResponseOutput> AddOrUpdateSystemCriterionKeyFile(SystemCriterionKeyFileAddOrEdit addOrEditSystemCriterionKeyFile);
Task<IResponseOutput> DeleteSystemCriterionKeyFile(Guid systemCriterionKeyFileId);
}

View File

@ -0,0 +1,23 @@
//--------------------------------------------------------------------
// 此代码由liquid模板自动生成 byzhouhang 20240909
// 生成时间 2025-11-12 06:51:58Z
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using System;
using IRaCIS.Core.Infrastructure.Extention;
using System.Threading.Tasks;
using IRaCIS.Core.Application.Service.Reading.Dto;
namespace IRaCIS.Core.Application.Service.Reading.Interface;
public interface ITrialCriterionKeyFileService
{
Task<PageOutput<TrialCriterionKeyFileView>> GetTrialCriterionKeyFileList(TrialCriterionKeyFileQuery inQuery);
Task<IResponseOutput> AddOrUpdateTrialCriterionKeyFile(TrialCriterionKeyFileAddOrEdit addOrEditTrialCriterionKeyFile);
Task<IResponseOutput> DeleteTrialCriterionKeyFile(Guid trialCriterionKeyFileId);
}

View File

@ -0,0 +1,78 @@
//--------------------------------------------------------------------
// 此代码由liquid模板自动生成 byzhouhang 20240909
// 生成时间 2025-11-12 06:46:38Z
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Domain.Models;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Infrastructure.Extention;
using System.Threading.Tasks;
using IRaCIS.Core.Infra.EFCore;
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Application.Service.Reading.Interface;
namespace IRaCIS.Core.Application.Service;
/// <summary>
/// 系统标准阅片关键点文件服务
/// </summary>
/// <param name="_systemCriterionKeyFileRepository"></param>
/// <param name="_mapper"></param>
/// <param name="_userInfo"></param>
/// <param name="_localizer"></param>
[ApiExplorerSettings(GroupName = "Reading")]
public class SystemCriterionKeyFileService(IRepository<SystemCriterionKeyFile> _systemCriterionKeyFileRepository,
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer): BaseService, ISystemCriterionKeyFileService
{
/// <summary>
/// 获取系统标准阅片关键点文件列表
/// </summary>
/// <param name="inQuery"></param>
/// <returns></returns>
[HttpPost]
public async Task<PageOutput<SystemCriterionKeyFileView>> GetSystemCriterionKeyFileList(SystemCriterionKeyFileQuery inQuery)
{
var systemCriterionKeyFileQueryable =_systemCriterionKeyFileRepository
.Where(x=>x.SystemCriterionId==inQuery.SystemCriterionId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.FileName),x=>x.FileName.Contains(inQuery.FileName))
.ProjectTo<SystemCriterionKeyFileView>(_mapper.ConfigurationProvider);
var pageList= await systemCriterionKeyFileQueryable.ToPagedListAsync(inQuery);
return pageList;
}
/// <summary>
/// 新增或者修改系统标准阅片关键点文件
/// </summary>
/// <param name="addOrEditSystemCriterionKeyFile"></param>
/// <returns></returns>
public async Task<IResponseOutput> AddOrUpdateSystemCriterionKeyFile(SystemCriterionKeyFileAddOrEdit addOrEditSystemCriterionKeyFile)
{
// 在此处拷贝automapper 映射
var entity = await _systemCriterionKeyFileRepository.InsertOrUpdateAsync(addOrEditSystemCriterionKeyFile, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
/// <summary>
/// 删除系统标准阅片关键点文件
/// </summary>
/// <param name="systemCriterionKeyFileId"></param>
/// <returns></returns>
[HttpDelete("{systemCriterionKeyFileId:guid}")]
public async Task<IResponseOutput> DeleteSystemCriterionKeyFile(Guid systemCriterionKeyFileId)
{
var success = await _systemCriterionKeyFileRepository.DeleteFromQueryAsync(t => t.Id == systemCriterionKeyFileId,true);
return ResponseOutput.Ok();
}
}

View File

@ -0,0 +1,81 @@
//--------------------------------------------------------------------
// 此代码由liquid模板自动生成 byzhouhang 20240909
// 生成时间 2025-11-12 06:51:56Z
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Domain.Models;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Infrastructure.Extention;
using System.Threading.Tasks;
using IRaCIS.Core.Infra.EFCore;
using IRaCIS.Core.Application.Service.Reading.Interface;
using IRaCIS.Core.Application.Service.Reading.Dto;
namespace IRaCIS.Core.Application.Service;
/// <summary>
/// 项目标准阅片关键点文件服务
/// </summary>
/// <param name="_trialCriterionKeyFileRepository"></param>
/// <param name="_mapper"></param>
/// <param name="_userInfo"></param>
/// <param name="_localizer"></param>
[ApiExplorerSettings(GroupName = "Reading")]
public class TrialCriterionKeyFileService(IRepository<TrialCriterionKeyFile> _trialCriterionKeyFileRepository,
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer): BaseService, ITrialCriterionKeyFileService
{
/// <summary>
/// 获取项目标准阅片关键点文件列表
/// </summary>
/// <param name="inQuery"></param>
/// <returns></returns>
[HttpPost]
public async Task<PageOutput<TrialCriterionKeyFileView>> GetTrialCriterionKeyFileList(TrialCriterionKeyFileQuery inQuery)
{
var trialCriterionKeyFileQueryable =_trialCriterionKeyFileRepository
.Where(x=>x.TrialCriterionId==inQuery.TrialCriterionId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.FileName),x=>x.FileName.Contains(inQuery.FileName))
.ProjectTo<TrialCriterionKeyFileView>(_mapper.ConfigurationProvider);
var pageList= await trialCriterionKeyFileQueryable.ToPagedListAsync(inQuery);
return pageList;
}
/// <summary>
/// 新增或者修改项目标准阅片关键点文件
/// </summary>
/// <param name="addOrEditTrialCriterionKeyFile"></param>
/// <returns></returns>
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateTrialCriterionKeyFile(TrialCriterionKeyFileAddOrEdit addOrEditTrialCriterionKeyFile)
{
var entity = await _trialCriterionKeyFileRepository.InsertOrUpdateAsync(addOrEditTrialCriterionKeyFile, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
/// <summary>
/// 删除项目标准阅片关键点文件
/// </summary>
/// <param name="trialCriterionKeyFileId"></param>
/// <returns></returns>
[HttpDelete("{trialCriterionKeyFileId:guid}")]
public async Task<IResponseOutput> DeleteTrialCriterionKeyFile(Guid trialCriterionKeyFileId)
{
var success = await _trialCriterionKeyFileRepository.DeleteFromQueryAsync(t => t.Id == trialCriterionKeyFileId,true);
return ResponseOutput.Ok();
}
}

View File

@ -71,6 +71,7 @@ namespace IRaCIS.Core.Application.Service
IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository, IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository, IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IRepository<ReadingQuestionSystem> _readingQuestionSystem, IRepository<ReadingQuestionSystem> _readingQuestionSystem,
IRepository<CriterionKeyFileRead> _criterionKeyFileReadRepository,
IRepository<NoneDicomStudyFile> _noneDicomStudyFileSystem, IRepository<NoneDicomStudyFile> _noneDicomStudyFileSystem,
IGeneralCalculateService _generalCalculateService, IGeneralCalculateService _generalCalculateService,
IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository, IRepository<ReadingQuestionTrial> _readingQuestionTrialRepository,
@ -80,7 +81,23 @@ namespace IRaCIS.Core.Application.Service
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, IReadingImageTaskService IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IFusionCache _fusionCache) : BaseService, IReadingImageTaskService
{ {
/// <summary>
/// 设置已阅读关键文件
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<IResponseOutput> SetReadKeyFile(SetReadKeyFileInDto inDto)
{
await _criterionKeyFileReadRepository.AddAsync(new CriterionKeyFileRead()
{
IdentityUserId=_userInfo.IdentityUserId,
TrialCriterionId= inDto.TrialCriterionId,
});
await _criterionKeyFileReadRepository.SaveChangesAsync();
return ResponseOutput.Ok();
}
#region 计算 #region 计算
@ -3747,6 +3764,7 @@ namespace IRaCIS.Core.Application.Service
task.ReadingToolList = criterionInfo.ReadingToolList; task.ReadingToolList = criterionInfo.ReadingToolList;
task.IsExistUnprocessedFeedback = await _userFeedBackRepository.AnyAsync(x => x.VisitTaskId == task.VisitTaskId && x.State == 0); task.IsExistUnprocessedFeedback = await _userFeedBackRepository.AnyAsync(x => x.VisitTaskId == task.VisitTaskId && x.State == 0);
task.IsViewStudyPart= visitTaskInfo.ReadingCategory==ReadingCategory.Judge|| visitTaskInfo.IsViewStudyPart; task.IsViewStudyPart= visitTaskInfo.ReadingCategory==ReadingCategory.Judge|| visitTaskInfo.IsViewStudyPart;
task.IsReadKeyFile = await _criterionKeyFileReadRepository.AnyAsync(x => x.IdentityUserId == _userInfo.IdentityUserId && x.TrialCriterionId == task.TrialReadingCriterionId);
// 添加默认答案 // 添加默认答案
if (inDto.VisitTaskId == null && visitTaskInfo.ReadingTaskState != ReadingTaskState.HaveSigned) if (inDto.VisitTaskId == null && visitTaskInfo.ReadingTaskState != ReadingTaskState.HaveSigned)
{ {

View File

@ -15,6 +15,14 @@ namespace IRaCIS.Core.Application.Service
//是否英文环境 //是否英文环境
var isEn_Us = false; var isEn_Us = false;
CreateMap<SystemCriterionKeyFile, SystemCriterionKeyFileView>();
CreateMap<SystemCriterionKeyFile, SystemCriterionKeyFileAddOrEdit>().ReverseMap();
// 在此处拷贝automapper 映射
CreateMap<TrialCriterionKeyFile, TrialCriterionKeyFileView>();
CreateMap<TrialCriterionKeyFile, TrialCriterionKeyFileAddOrEdit>().ReverseMap();
//标准Id //标准Id
List<Guid> CriterionIds = new List<Guid>(); List<Guid> CriterionIds = new List<Guid>();

View File

@ -16,6 +16,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Newtonsoft.Json; using Newtonsoft.Json;
using Panda.DynamicWebApi.Attributes; using Panda.DynamicWebApi.Attributes;
using System.IO;
using ZiggyCreatures.Caching.Fusion; using ZiggyCreatures.Caching.Fusion;
namespace IRaCIS.Core.Application namespace IRaCIS.Core.Application
@ -30,6 +31,10 @@ namespace IRaCIS.Core.Application
IRepository<ReadingQuestionCriterionSystem> _readingQuestionCriterionSystemRepository, IRepository<ReadingQuestionCriterionSystem> _readingQuestionCriterionSystemRepository,
IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository, IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository,
IRepository<ReadingCriterionPage> _readingCriterionPageRepository, IRepository<ReadingCriterionPage> _readingCriterionPageRepository,
IRepository<SystemCriterionKeyFile> _systemCriterionKeyFileRepository,
IOSSService oSSService,
IRepository<TrialCriterionKeyFile> _trialCriterionKeyFileRepository,
IOrganInfoService _iOrganInfoService, IOrganInfoService _iOrganInfoService,
IRepository<TrialBodyPart> _trialBodyPartRepository, IRepository<TrialBodyPart> _trialBodyPartRepository,
IRepository<ReadingSystemCriterionDictionary> _readingCriterionDictionaryRepository, IRepository<ReadingSystemCriterionDictionary> _readingCriterionDictionaryRepository,
@ -276,6 +281,8 @@ namespace IRaCIS.Core.Application
await _trialCriterionDictionaryCode.AddRangeAsync(criterionDictionaryCodeList); await _trialCriterionDictionaryCode.AddRangeAsync(criterionDictionaryCodeList);
#endregion #endregion
// 同步阅片关键点
await SynchronizeKeyFile(inDto.TrialReadingCriterionId);
//var trialModalitys = _readingQuestionCriterionTrialRepository.Where(t => t.Id == inDto.TrialReadingCriterionId).Select(t => t.Trial.Modalitys).FirstOrDefault(); //var trialModalitys = _readingQuestionCriterionTrialRepository.Where(t => t.Id == inDto.TrialReadingCriterionId).Select(t => t.Trial.Modalitys).FirstOrDefault();
var systemCriterion = await _readingQuestionCriterionSystemRepository.Where(x => x.Id == trialCriterion.ReadingQuestionCriterionSystemId).FirstNotNullAsync(); var systemCriterion = await _readingQuestionCriterionSystemRepository.Where(x => x.Id == trialCriterion.ReadingQuestionCriterionSystemId).FirstNotNullAsync();
@ -317,6 +324,39 @@ namespace IRaCIS.Core.Application
return ResponseOutput.Ok(true); return ResponseOutput.Ok(true);
} }
/// <summary>
/// 同步阅片关键点
/// </summary>
/// <returns></returns>
public async Task SynchronizeKeyFile(Guid TrialReadingCriterionId)
{
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == TrialReadingCriterionId).AsNoTracking().FirstOrDefaultAsync();
if (trialCriterion != null && trialCriterion.ReadingQuestionCriterionSystemId!=null)
{
var systemCriterionKeyFile = await _systemCriterionKeyFileRepository.Where(x => x.SystemCriterionId == trialCriterion.ReadingQuestionCriterionSystemId).ToListAsync();
List<TrialCriterionKeyFile> trialCriterionKeyFiles= new List<TrialCriterionKeyFile>();
foreach (var item in systemCriterionKeyFile)
{
var path= await oSSService.UploadToOSSAsync(item.FilePath, $"{trialCriterion.TrialId}/KeyFile", true);
trialCriterionKeyFiles.Add(new TrialCriterionKeyFile
{
TrialCriterionId= TrialReadingCriterionId,
FileName= item.FileName,
FilePath= path
});
}
await _trialCriterionKeyFileRepository.BatchDeleteNoTrackingAsync(x => x.TrialCriterionId == TrialReadingCriterionId);
await _trialCriterionKeyFileRepository.AddRangeAsync(trialCriterionKeyFiles);
await _trialCriterionKeyFileRepository.SaveChangesAsync();
}
}
/// <summary> /// <summary>
/// 修改全局阅片配置信息 /// 修改全局阅片配置信息
/// </summary> /// </summary>

View File

@ -85,6 +85,7 @@ public static class StaticData
public static readonly string DataTemplate = "DataTemplate"; public static readonly string DataTemplate = "DataTemplate";
public static readonly string EmailTemplate = "EmailTemplate"; public static readonly string EmailTemplate = "EmailTemplate";
public static readonly string ReadKetFile = "ReadKetFile";
public static readonly string CommonFile = "CommonFile"; public static readonly string CommonFile = "CommonFile";