Merge branch 'Uat.Study' of http://192.168.3.69:2000/XCKJ/irc-netcore-api into Uat.Study
commit
2a3748e396
|
@ -25,6 +25,7 @@ using Aliyun.Acs.Core;
|
|||
using Aliyun.Acs.Core.Profile;
|
||||
using Aliyun.Acs.Sts.Model.V20150401;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using MassTransit;
|
||||
|
||||
namespace IRaCIS.Api.Controllers
|
||||
{
|
||||
|
@ -144,16 +145,16 @@ namespace IRaCIS.Api.Controllers
|
|||
.Build();
|
||||
|
||||
|
||||
|
||||
IClientProfile profile = DefaultProfile.GetProfile("cn-shanghai", configuration["AliyunOSS:accessKeyId"], configuration["AliyunOSS:accessKeySecret"]);
|
||||
DefaultAcsClient client = new DefaultAcsClient(profile);
|
||||
|
||||
|
||||
// 创建一个STS请求
|
||||
AssumeRoleRequest request = new AssumeRoleRequest
|
||||
{
|
||||
RoleArn = "acs:ram::1899121822495495:role/oss-upload", // 角色ARN,需要替换为你的角色ARN
|
||||
RoleSessionName = "session-name", // 角色会话名称,可自定义
|
||||
DurationSeconds = 3600, // 令牌有效期(单位:秒),这里设置为1小时
|
||||
RoleSessionName = $"session-name-{NewId.NextGuid()}", // 角色会话名称,可自定义
|
||||
DurationSeconds = 900, // 令牌有效期(单位:秒),这里设置为1小时
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"Logging": {
|
||||
"LogLevel": {
|
||||
"Default": "Information",
|
||||
"Microsoft": "Warning",
|
||||
"Microsoft.Hosting.Lifetime": "Information"
|
||||
}
|
||||
},
|
||||
"AliyunOSS": {
|
||||
"regionId": "cn-shanghai",
|
||||
"region": "oss-cn-shanghai",
|
||||
"endpoint": "https://oss-cn-shanghai.aliyuncs.com",
|
||||
"accessKeyId": "LTAI5tKvzs7ed3UfSpNk3xwQ",
|
||||
"accessKeySecret": "zTIceGEShlZDGnLrCFfIGFE7TXVRio",
|
||||
"bucketName": "zy-sir-store",
|
||||
"viewEndpoint": "https://zy-sir-cache.oss-cn-shanghai.aliyuncs.com"
|
||||
},
|
||||
|
||||
"ConnectionStrings": {
|
||||
"RemoteNew": "Server=47.117.165.18,1434;Database=Prod_Study;User ID=sa;Password=WHxckj@2019;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=47.117.165.18,1434;Database=Prod_Study.hangfire;User ID=sa;Password=WHxckj@2019;TrustServerCertificate=true"
|
||||
},
|
||||
|
||||
"BasicSystemConfig": {
|
||||
|
||||
"OpenUserComplexPassword": false,
|
||||
|
||||
"OpenSignDocumentBeforeWork": false,
|
||||
|
||||
"OpenTrialRelationDelete": true,
|
||||
|
||||
"OpenLoginLimit": false,
|
||||
"LoginMaxFailCount": 5,
|
||||
|
||||
"LoginFailLockMinutes": 30
|
||||
|
||||
},
|
||||
|
||||
"SystemEmailSendConfig": {
|
||||
"Port": 465,
|
||||
"Host": "smtp.qiye.aliyun.com",
|
||||
"FromEmail": "study@extimaging.com",
|
||||
"FromName": "study.extimaging",
|
||||
"AuthorizationCode": "zhanying123",
|
||||
"SiteUrl": "https://study.extimaging.com/login"
|
||||
}
|
||||
|
||||
}
|
|
@ -16,8 +16,8 @@
|
|||
"viewEndpoint": "https://zy-sir-uat-store.oss-cn-shanghai.aliyuncs.com"
|
||||
},
|
||||
"ConnectionStrings": {
|
||||
"RemoteNew": "Server=123.56.94.154,1433\\MSSQLSERVER;Database=Uat.Study;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=123.56.94.154,1433\\MSSQLSERVER;Database=Uat.Study.hangfire;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true"
|
||||
"RemoteNew": "Server=47.117.164.182,1434;Database=Uat.Study;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
||||
"Hangfire": "Server=47.117.164.182,1434;Database=Uat.Study.hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
||||
},
|
||||
"BasicSystemConfig": {
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
"Audience": "ZhiZhun",
|
||||
"TokenExpireDays": "7"
|
||||
},
|
||||
//ip
|
||||
"IpRateLimiting": {
|
||||
"EnableEndpointRateLimiting": true,
|
||||
"StackBlockedRequests": false,
|
||||
|
|
|
@ -58,10 +58,14 @@ namespace IRaCIS.Core.Application.Filter
|
|||
// 后期列举出具体的类型,其他任何用户类型,都不允许操作
|
||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA)
|
||||
{
|
||||
//---对不起,您的账户没有操作权限。
|
||||
context.Result = new JsonResult(ResponseOutput.NotOk(_localizer["TrialResource_NoAccessPermission"]));
|
||||
if (!_userInfo.RequestUrl.Contains("TrialDocument/userConfirm"))
|
||||
{
|
||||
//---对不起,您的账户没有操作权限。
|
||||
context.Result = new JsonResult(ResponseOutput.NotOk(_localizer["TrialResource_NoAccessPermission"]));
|
||||
|
||||
return;
|
||||
return;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -10884,20 +10884,6 @@
|
|||
<param name="inDto"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.TrialConfigService.GetTrialCriterionAdditionalAssessmentOptionList(System.Guid)">
|
||||
<summary>
|
||||
获取附加评估选项列表
|
||||
</summary>
|
||||
<param name="trialReadingCriterionId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.TrialConfigService.SetTrialCriterionAdditionalAssessment(System.Collections.Generic.List{IRaCIS.Core.Application.Contracts.AddOrUpdateTrialCriterionAdditional})">
|
||||
<summary>
|
||||
保存附加评估设置 (自动添加 或者删除附加评估问题)
|
||||
</summary>
|
||||
<param name="updateList"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.TrialConfigService.GetSignText(System.String)">
|
||||
<summary>
|
||||
获取签名文本
|
||||
|
|
|
@ -479,9 +479,17 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||
}
|
||||
|
||||
|
||||
public class PIAuditDialogListView : PIAuditTaskCommand
|
||||
public class PIAuditDialogListView
|
||||
{
|
||||
|
||||
public Guid VisitTaskId { get; set; }
|
||||
public string NotAgreeReason { get; set; }
|
||||
public string PIAuditNote { get; set; } = string.Empty;
|
||||
|
||||
public List<string> PIAuditImagePathList { get; set; }
|
||||
|
||||
public PIAuditState? PIAuditState { get; set; }
|
||||
|
||||
public string ReplyContent { get; set; } = string.Empty;
|
||||
|
||||
public bool? IsEnrollment { get; set; }
|
||||
|
|
|
@ -275,6 +275,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
|||
//发送对话
|
||||
var addDialig = _mapper.Map<PIAudit>(incommand);
|
||||
|
||||
addDialig.PIAuditState = incommand.PIAuditState;
|
||||
|
||||
addDialig.PIAuditImagePath = visitTask.PIAuditImagePath;
|
||||
|
||||
await _PIAuditRepository.AddAsync(addDialig);
|
||||
|
|
|
@ -251,7 +251,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
CreateMap<PIAudit, PIAuditDialogListView>()
|
||||
.ForMember(o => o.CreateUserName, t => t.MapFrom(u => u.CreateUser.UserName))
|
||||
.ForMember(o => o.UserTypeEnum, t => t.MapFrom(u => u.CreateUser.UserTypeEnum))
|
||||
.ForMember(o => o.PIAuditState, t => t.MapFrom(u => u.VisitTask.PIAuditState))
|
||||
//.ForMember(o => o.PIAuditState, t => t.MapFrom(u => u.VisitTask.PIAuditState))
|
||||
;
|
||||
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
return (topicStr, htmlBodyStr, isEn_us, null);
|
||||
};
|
||||
|
||||
await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc);
|
||||
await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc, taskInfo.SiteId);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -27,7 +27,6 @@ namespace IRaCIS.Core.Application.Services
|
|||
private readonly IRepository<Trial> _trialRepository;
|
||||
private readonly IRepository<SystemDocConfirmedUser> _systemDocConfirmedUserRepository;
|
||||
private readonly IRepository<SystemDocument> _systemDocumentRepository;
|
||||
private readonly IRepository<TrialCriterionAdditionalAssessmentType> _trialCriterionAdditionalAssessmentTypeRepository;
|
||||
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository;
|
||||
|
||||
|
||||
|
@ -35,7 +34,6 @@ namespace IRaCIS.Core.Application.Services
|
|||
IRepository<TrialDocConfirmedUser> trialDocUserTypeConfirmedUserRepository,
|
||||
IRepository<Trial> trialRepository,
|
||||
IRepository<SystemDocConfirmedUser> systemDocConfirmedUserRepository,
|
||||
IRepository<TrialCriterionAdditionalAssessmentType> trialCriterionAdditionalAssessmentTypeRepository,
|
||||
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrialRepository
|
||||
, IRepository<SystemDocument> systemDocumentRepository)
|
||||
{
|
||||
|
@ -45,7 +43,6 @@ namespace IRaCIS.Core.Application.Services
|
|||
this._systemDocConfirmedUserRepository = systemDocConfirmedUserRepository;
|
||||
_systemDocumentRepository = systemDocumentRepository;
|
||||
_readingQuestionCriterionTrialRepository = readingQuestionCriterionTrialRepository;
|
||||
_trialCriterionAdditionalAssessmentTypeRepository = trialCriterionAdditionalAssessmentTypeRepository;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -227,13 +224,11 @@ namespace IRaCIS.Core.Application.Services
|
|||
var trialTaskConfig = _trialRepository.Where(t => t.Id == querySystemDocument.TrialId).ProjectTo<TrialConfigTabDto>(_mapper.ConfigurationProvider).FirstOrDefault();
|
||||
|
||||
|
||||
//var trialCriterionAdditionalAssessmentTypeList = _trialCriterionAdditionalAssessmentTypeRepository
|
||||
// .Where(t => t.TrialReadingCriterion.TrialId == trialId && t.IsSelected == true && t.TrialReadingCriterion.IsSigned).Select(t=>new { t.CriterionType,t.AdditionalAssessmentType}).ToList();
|
||||
|
||||
|
||||
var isManualGenerateTask= _readingQuestionCriterionTrialRepository.Where(t=>t.TrialId==trialId && t.IsSigned && t.IsAutoCreate==false).Any();
|
||||
var isAdditionalAssessment = _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == trialId && t.IsSigned && t.IsAdditionalAssessment == true
|
||||
&&t.TrialCriterionAdditionalAssessmentTypeList.Any(c=>/*c.AdditionalAssessmentType==Domain.Share.Reading.AdditionalAssessmentType.BrainMetastasis &&*/ c.IsSelected==true)).Any();
|
||||
|
||||
var isAdditionalAssessment =false;
|
||||
|
||||
|
||||
var isAllOnlySRReading = _readingQuestionCriterionTrialRepository.Where(t => t.TrialId == trialId && t.IsSigned).All(t => t.ReadingDivisionEnum == ReadingDivisionEnum.OnlySR);
|
||||
|
|
|
@ -5,25 +5,27 @@ using Microsoft.AspNetCore.Authorization;
|
|||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using IRaCIS.Core.Application.Auth;
|
||||
using EasyCaching.Core;
|
||||
|
||||
namespace IRaCIS.Core.Application.Services
|
||||
{
|
||||
[AllowAnonymous, ApiExplorerSettings(GroupName = "Image")]
|
||||
public class ImageShareService : BaseService, IImageShareService
|
||||
{
|
||||
|
||||
private readonly IEasyCachingProvider _provider;
|
||||
private readonly IRepository<ImageShare> _imageShareRepository;
|
||||
private readonly IRepository<DicomStudy> _studyRepository;
|
||||
private readonly IConfiguration _configuration;
|
||||
private readonly ITokenService _tokenService;
|
||||
|
||||
public ImageShareService(IRepository<ImageShare> imageShareRepository, IRepository<DicomStudy> studyRepository, IConfiguration configuration, ITokenService tokenService)
|
||||
public ImageShareService(IRepository<ImageShare> imageShareRepository, IRepository<DicomStudy> studyRepository, IConfiguration configuration, ITokenService tokenService, IEasyCachingProvider provider)
|
||||
{
|
||||
|
||||
_imageShareRepository = imageShareRepository;
|
||||
_studyRepository = studyRepository;
|
||||
_configuration = configuration;
|
||||
_tokenService = tokenService;
|
||||
_provider = provider;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
|
@ -110,6 +112,7 @@ namespace IRaCIS.Core.Application.Services
|
|||
return ResponseOutput.NotOk(_localizer["ISS_ShareExpiration"]);
|
||||
}
|
||||
|
||||
var vitrualUserId = Guid.NewGuid();
|
||||
var resource = new ResourceInfo()
|
||||
{
|
||||
StudyId = imageShare.StudyId,
|
||||
|
@ -127,7 +130,7 @@ namespace IRaCIS.Core.Application.Services
|
|||
}))
|
||||
};
|
||||
|
||||
|
||||
await _provider.SetAsync(vitrualUserId.ToString(), resource.Token, TimeSpan.FromDays(7));
|
||||
return ResponseOutput.Ok(resource);
|
||||
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ namespace IRaCIS.Application.Services
|
|||
{
|
||||
|
||||
var siteQueryable = _siteRepository
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.SiteName), t => t.SiteName.Contains(searchModel.SiteName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.SiteName), t => t.SiteName.Contains(searchModel.SiteName)||t.SiteNameCN.Contains(searchModel.SiteName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.AliasName), t => t.AliasName.Contains(searchModel.AliasName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.City), t => t.City.Contains(searchModel.City))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.Country), t => t.Country.Contains(searchModel.Country))
|
||||
|
|
|
@ -1968,6 +1968,18 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||
//已确认临床数据完整性
|
||||
dbSubjectVisit.IsConfirmedClinicalData = true;
|
||||
|
||||
|
||||
await _readingClinicalDataRepository.UpdatePartialFromQueryAsync(x =>
|
||||
|
||||
(x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject || x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit) &&
|
||||
|
||||
|
||||
x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ReadingId == dbSubjectVisit.Id && x.IsSign == false, x => new ReadingClinicalData()
|
||||
{
|
||||
IsSign = true,
|
||||
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveSigned
|
||||
});
|
||||
|
||||
//var signSuccess = await _repository.BatchUpdateAsync<TrialSign>(t => t.Id == cRCReuploadFinishedCommand.SignId, u => new TrialSign() { IsCompleted = true });
|
||||
}
|
||||
|
||||
|
|
|
@ -148,6 +148,7 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
var fileCount = await _readingClinicalDataPDFRepository.Where(t => t.ReadingClinicalDataId == indto.Id).CountAsync();
|
||||
entity.ReadingClinicalDataState = ReadingClinicalDataStatus.HaveUploaded;
|
||||
entity.IsSign = false;
|
||||
entity.FileCount = fileCount;
|
||||
var success = await _readingClinicalDataRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Ok(entity.Id);
|
||||
|
|
|
@ -3,6 +3,7 @@ using MassTransit;
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
@ -2276,6 +2277,42 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||
//public List<TableQuestionDataInfo> TableQuestions { get; set; }
|
||||
|
||||
public List<GetSystemReadingQuestionOutDto> Childrens { get; set; }
|
||||
|
||||
[NotMapped]
|
||||
public List<string> RelevanceValueList
|
||||
{
|
||||
get
|
||||
{
|
||||
try
|
||||
{
|
||||
return this.RelevanceValue.Split(',').ToList();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
return new List<string>();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[NotMapped]
|
||||
public List<string> ParentTriggerValueList
|
||||
{
|
||||
get
|
||||
{
|
||||
try
|
||||
{
|
||||
return this.ParentTriggerValue.Split(',').ToList();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
return new List<string>();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class GetTrialReadingQuestionOutDto
|
||||
|
|
|
@ -503,7 +503,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
.WhereIf(surveyQueryDTO.UpdateTimeBegin != null, t => t.UpdateTime >= surveyQueryDTO.UpdateTimeBegin)
|
||||
.WhereIf(surveyQueryDTO.UpdateTimeEnd != null, t => t.UpdateTime <= surveyQueryDTO.UpdateTimeEnd)
|
||||
|
||||
.ProjectTo<TrialSiteSurveyView>(_mapper.ConfigurationProvider);
|
||||
.ProjectTo<TrialSiteSurveyView>(_mapper.ConfigurationProvider,new { isEn_Us =_userInfo.IsEn_Us});
|
||||
|
||||
return await trialSiteSurveyQueryable.ToPagedListAsync(surveyQueryDTO.PageIndex, surveyQueryDTO.PageSize, surveyQueryDTO.SortField, surveyQueryDTO.Asc);
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ namespace IRaCIS.Core.Application.AutoMapper
|
|||
{
|
||||
public SiteSurveyConfig()
|
||||
{
|
||||
var isEn_Us = false;
|
||||
//编辑
|
||||
CreateMap<TrialSiteSurvey, TrialSiteSurveyAddOrEdit>().ReverseMap();
|
||||
|
||||
|
@ -47,12 +48,12 @@ namespace IRaCIS.Core.Application.AutoMapper
|
|||
|
||||
CreateMap<TrialSiteSurvey, TrialSiteSurveyView>()
|
||||
.ForMember(d => d.TrialSiteAliasName, u => u.MapFrom(s => s.TrialSite.TrialSiteAliasName))
|
||||
.ForMember(d => d.SiteName, u => u.MapFrom(s => s.Site.SiteName))
|
||||
.ForMember(d => d.SiteName, u => u.MapFrom(s => isEn_Us? s.Site.SiteName:s.Site.SiteNameCN))
|
||||
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode));
|
||||
|
||||
CreateMap<TrialSiteSurvey, TrialSiteSurveySelectView>();
|
||||
|
||||
var isEn_Us = false;
|
||||
|
||||
CreateMap<TrialSiteUserSurvey, TrialSiteUserSurveyView>()
|
||||
.ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName))
|
||||
.ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.UserTypeRole.UserTypeEnum));
|
||||
|
|
|
@ -518,7 +518,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
public bool IsAutoCreate { get; set; }
|
||||
|
||||
|
||||
public List<TrialCriterionAdditionalAssessmentType> TrialCriterionAdditionalAssessmentTypeList { get; set; } = new List<TrialCriterionAdditionalAssessmentType>();
|
||||
|
||||
|
||||
|
||||
public int ReadingDivisionEnum { get; set; }
|
||||
|
@ -986,7 +986,6 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
/// </summary>
|
||||
public bool IsUrgent { get; set; } = false;
|
||||
|
||||
public List<AddOrUpdateTrialCriterionAdditional> TrialCriterionAdditionalAssessmentTypeList { get; set; }=new List<AddOrUpdateTrialCriterionAdditional>();
|
||||
|
||||
public ReadingDivisionEnum ReadingDivisionEnum { get; set; }
|
||||
|
||||
|
|
|
@ -115,8 +115,9 @@ namespace IRaCIS.Core.Application.Contracts.DTO
|
|||
public string SiteCode { get; set; } = String.Empty;
|
||||
public string City { get; set; } = String.Empty;
|
||||
public string Country { get; set; } = String.Empty;
|
||||
public Guid? HospitalId { get; set; }
|
||||
public Guid? HospitalId { get; set; }
|
||||
|
||||
public string Address { get; set; } = String.Empty;
|
||||
|
||||
public string HospitalName { get; set; } = String.Empty;
|
||||
|
||||
|
|
|
@ -40,7 +40,6 @@ namespace IRaCIS.Core.Application
|
|||
private readonly IRepository<ReadingSystemCriterionDictionary> _readingCriterionDictionaryRepository;
|
||||
private readonly IRepository<ReadingTrialCriterionDictionary> _readingTrialCriterionDictionaryRepository;
|
||||
private readonly IReadingQuestionService iReadingQuestionService;
|
||||
private readonly IRepository<TrialCriterionAdditionalAssessmentType> _trialCriterionAdditionalAssessmentTypeRepository;
|
||||
|
||||
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswer;
|
||||
|
||||
|
@ -65,7 +64,6 @@ namespace IRaCIS.Core.Application
|
|||
IReadingQuestionService iReadingQuestionService,
|
||||
IEasyCachingProvider provider,
|
||||
IOrganInfoService iOrganInfoService,
|
||||
IRepository<TrialCriterionAdditionalAssessmentType> trialCriterionAdditionalAssessmentTypeRepository,
|
||||
IRepository<VisitTask> visitTaskRepository,
|
||||
IRepository<ReadingTableQuestionTrial> readingTableQuestionTrialRepository,
|
||||
IRepository<ReadingTableQuestionAnswer> readingTableQuestionAnswerRepository,
|
||||
|
@ -74,7 +72,6 @@ namespace IRaCIS.Core.Application
|
|||
|
||||
)
|
||||
{
|
||||
_trialCriterionAdditionalAssessmentTypeRepository = trialCriterionAdditionalAssessmentTypeRepository;
|
||||
_trialRepository = trialRepository;
|
||||
|
||||
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
|
||||
|
@ -188,7 +185,6 @@ namespace IRaCIS.Core.Application
|
|||
trialInfo.ReadingTool = ReadingTool.Dicom;
|
||||
}
|
||||
|
||||
trialInfo.TrialCriterionAdditionalAssessmentTypeList = await _trialCriterionAdditionalAssessmentTypeRepository.Where(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId).ToListAsync();
|
||||
|
||||
|
||||
return trialInfo;
|
||||
|
@ -212,23 +208,7 @@ namespace IRaCIS.Core.Application
|
|||
if (trialCriterion.SynchronizeOriginalTime == null)
|
||||
{
|
||||
|
||||
//同步附加评估类型
|
||||
|
||||
if (!await _trialCriterionAdditionalAssessmentTypeRepository.AnyAsync(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId))
|
||||
{
|
||||
AdditionalAssessment additional = new AdditionalAssessment();
|
||||
var addList = additional.GetSystemDefeaultAdditionalAssessmentList(trialCriterion.CriterionType);
|
||||
|
||||
foreach (var addItem in addList)
|
||||
{
|
||||
await _trialCriterionAdditionalAssessmentTypeRepository.AddAsync(new TrialCriterionAdditionalAssessmentType()
|
||||
{
|
||||
CriterionType = trialCriterion.CriterionType,
|
||||
TrialReadingCriterionId = inDto.TrialReadingCriterionId,
|
||||
AdditionalAssessmentType = addItem.AdditionalAssessmentType
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -604,72 +584,7 @@ namespace IRaCIS.Core.Application
|
|||
|
||||
});
|
||||
|
||||
//判断是否存在附加评估
|
||||
if (inDto.IsAdditionalAssessment)
|
||||
{
|
||||
#region 存在,就将标准对应的附加评估选项加进去--废弃 修改到同步标准的地方去了,不管存在附加评估与否,都增加附加评估类型
|
||||
//if (!await _trialCriterionAdditionalAssessmentTypeRepository.AnyAsync(t => t.TrialReadingCriterionId == inDto.TrialReadingCriterionId))
|
||||
//{
|
||||
// AdditionalAssessment additional = new AdditionalAssessment();
|
||||
// var addList = additional.GetSystemDefeaultAdditionalAssessmentList(inDto.CriterionType);
|
||||
|
||||
// foreach (var addItem in addList)
|
||||
// {
|
||||
// await _trialCriterionAdditionalAssessmentTypeRepository.AddAsync(new TrialCriterionAdditionalAssessmentType()
|
||||
// {
|
||||
// CriterionType = inDto.CriterionType,
|
||||
// TrialReadingCriterionId = inDto.TrialReadingCriterionId,
|
||||
// AdditionalAssessmentType = addItem.AdditionalAssessmentType
|
||||
// });
|
||||
// }
|
||||
//}
|
||||
#endregion
|
||||
|
||||
|
||||
if (inDto.TrialCriterionAdditionalAssessmentTypeList.All(t => t.IsSelected != true))
|
||||
{
|
||||
//---选择了附加评估,必须勾选附加评估类型
|
||||
throw new BusinessValidationFailedException(_localizer["TrialConfig_AddEvalReq"]);
|
||||
}
|
||||
|
||||
var trialId = _readingQuestionTrialRepository.Where(t => t.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId).Select(t => t.TrialId).FirstOrDefault();
|
||||
|
||||
|
||||
if (inDto.TrialCriterionAdditionalAssessmentTypeList.Count != 0)
|
||||
{
|
||||
foreach (var updateItem in inDto.TrialCriterionAdditionalAssessmentTypeList)
|
||||
{
|
||||
if (updateItem.IsSelected == true)
|
||||
{
|
||||
//添加默认问题
|
||||
AdditionalAssessment additional = new AdditionalAssessment();
|
||||
var addTypeList = additional.GetSystemDefeaultAdditionalAssessmentList(updateItem.CriterionType, updateItem.AdditionalAssessmentType);
|
||||
|
||||
if (!await _readingQuestionTrialRepository.AsQueryable().IgnoreQueryFilters().AnyAsync(t => t.ReadingQuestionCriterionTrialId == updateItem.TrialReadingCriterionId && t.IsAdditional == true))
|
||||
{
|
||||
foreach (var addType in addTypeList)
|
||||
{
|
||||
foreach (var question in addType.AdditionalQuestionList)
|
||||
{
|
||||
question.ReadingQuestionCriterionTrialId = updateItem.TrialReadingCriterionId;
|
||||
question.TrialId = trialId;
|
||||
|
||||
await _readingQuestionTrialRepository.AddAsync(question);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
await _trialCriterionAdditionalAssessmentTypeRepository.UpdatePartialFromQueryAsync(updateItem.Id, t => new TrialCriterionAdditionalAssessmentType() { IsSelected = updateItem.IsSelected });
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//删除附加问题
|
||||
await _readingQuestionTrialRepository.BatchDeleteNoTrackingAsync(t => t.ReadingQuestionCriterionTrialId == inDto.TrialReadingCriterionId && t.IsAdditional == true);
|
||||
}
|
||||
|
||||
var result = await _readingQuestionCriterionTrialRepository.SaveChangesAsync();
|
||||
|
||||
|
@ -677,67 +592,9 @@ namespace IRaCIS.Core.Application
|
|||
return ResponseOutput.Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取附加评估选项列表
|
||||
/// </summary>
|
||||
/// <param name="trialReadingCriterionId"></param>
|
||||
/// <returns></returns>
|
||||
[Obsolete]
|
||||
public async Task<List<TrialCriterionAdditionalAssessmentType>> GetTrialCriterionAdditionalAssessmentOptionList(Guid trialReadingCriterionId)
|
||||
{
|
||||
return await _trialCriterionAdditionalAssessmentTypeRepository.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).ToListAsync();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 保存附加评估设置 (自动添加 或者删除附加评估问题)
|
||||
/// </summary>
|
||||
/// <param name="updateList"></param>
|
||||
/// <returns></returns>
|
||||
[Obsolete]
|
||||
public async Task<IResponseOutput> SetTrialCriterionAdditionalAssessment(List<AddOrUpdateTrialCriterionAdditional> updateList)
|
||||
{
|
||||
|
||||
if (updateList.Count == 0)
|
||||
{
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
var trialId = _readingQuestionTrialRepository.Where(t => t.ReadingQuestionCriterionTrialId == updateList.First().TrialReadingCriterionId).Select(t => t.TrialId).FirstOrDefault();
|
||||
|
||||
foreach (var updateItem in updateList)
|
||||
{
|
||||
if (updateItem.IsSelected == true)
|
||||
{
|
||||
//添加默认问题
|
||||
AdditionalAssessment additional = new AdditionalAssessment();
|
||||
var addTypeList = additional.GetSystemDefeaultAdditionalAssessmentList(updateItem.CriterionType, updateItem.AdditionalAssessmentType);
|
||||
|
||||
foreach (var addType in addTypeList)
|
||||
{
|
||||
foreach (var question in addType.AdditionalQuestionList)
|
||||
{
|
||||
question.ReadingQuestionCriterionTrialId = updateItem.TrialReadingCriterionId;
|
||||
question.TrialId = trialId;
|
||||
|
||||
await _readingQuestionTrialRepository.AddAsync(question);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//删除附加问题
|
||||
|
||||
await _readingQuestionTrialRepository.BatchDeleteNoTrackingAsync(t => t.ReadingQuestionCriterionTrialId == updateItem.TrialReadingCriterionId && t.IsAdditional == true);
|
||||
}
|
||||
|
||||
await _trialCriterionAdditionalAssessmentTypeRepository.UpdatePartialFromQueryAsync(updateItem.Id, t => new TrialCriterionAdditionalAssessmentType() { IsSelected = updateItem.IsSelected });
|
||||
}
|
||||
|
||||
|
||||
await _readingQuestionTrialRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -286,8 +286,16 @@ namespace IRaCIS.Application.Services
|
|||
|
||||
await _repository.BatchDeleteAsync<CheckChallengeDialog>(o => o.SubjectVisit.TrialId == trialId);
|
||||
await _repository.BatchDeleteAsync<ClinicalDataTrialSet>(o => o.TrialId == trialId);
|
||||
|
||||
await _repository.BatchDeleteAsync<ClinicalQuestionAnswer>(o => o.ClinicalForm.TrialId == trialId);
|
||||
await _repository.BatchDeleteAsync<ClinicalQuestionAnswer>(o => o.ClinicalForm.TrialId == trialId);
|
||||
await _repository.BatchDeleteAsync<ClinicalForm>(o => o.TrialId == trialId);
|
||||
|
||||
await _repository.BatchDeleteAsync<UserUploadFile>(o => o.TrialId == trialId);
|
||||
await _repository.BatchDeleteAsync<CriterionNidusSystem>(o => o.TrialReadingCriterion.TrialId == trialId);
|
||||
|
||||
await _repository.BatchDeleteAsync<CriterionNidusTrial>(o => o.TrialReadingCriterion.TrialId == trialId);
|
||||
|
||||
await _repository.BatchDeleteAsync<DataInspection>(o => o.TrialId == trialId);
|
||||
await _repository.BatchDeleteAsync<DicomStudy>(t => t.TrialId == trialId);
|
||||
await _repository.BatchDeleteAsync<StudyMonitor>(t => t.TrialId == trialId);
|
||||
|
@ -374,8 +382,7 @@ namespace IRaCIS.Application.Services
|
|||
await _repository.BatchDeleteAsync<TrialQCQuestion>(t => t.TrialId == trialId);
|
||||
await _repository.BatchDeleteAsync<TrialQCQuestionAnswer>(t => t.TrialId == trialId);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
await _repository.BatchDeleteAsync<TrialSign>(t => t.TrialId == trialId);
|
||||
|
|
|
@ -194,7 +194,7 @@ namespace IRaCIS.Core.Application.Services
|
|||
|
||||
|
||||
var siteQueryable = _siteRepository.AsQueryable(true)
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.SiteName), t => t.SiteName.Contains(searchModel.SiteName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.SiteName), t => t.SiteName.Contains(searchModel.SiteName)|| t.SiteNameCN.Contains(searchModel.SiteName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.AliasName), t => t.AliasName.Contains(searchModel.AliasName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.City), t => t.City.Contains(searchModel.City))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.Country), t => t.Country.Contains(searchModel.Country))
|
||||
|
|
|
@ -106,12 +106,11 @@ namespace IRaCIS.Core.Application.Service
|
|||
.ForMember(d => d.TrialId, u => u.MapFrom(s => trialId))
|
||||
.ForMember(d => d.IsSelect, u => u.MapFrom(t => t.UserTrials.Any(t => t.TrialId == trialId)));
|
||||
|
||||
|
||||
var isEn_Us = false;
|
||||
CreateMap<Site, SiteSelectDTO>()
|
||||
.ForMember(d => d.HospitalName, u => u.MapFrom(s => s.Hospital.HospitalName));
|
||||
|
||||
//trial site 选择列表 subjectVisit pannel 模式添加的时候
|
||||
var isEn_Us = false;
|
||||
|
||||
CreateMap<Site, TrialSiteScreeningDTO>()
|
||||
.ForMember(d => d.IsSelect, u => u.MapFrom(s => s.TrialSiteList.Any(k => k.TrialId == trialId)))
|
||||
|
|
|
@ -419,12 +419,20 @@ namespace IRaCIS.Core.Application.Services
|
|||
|
||||
item.InstanceCount = item.InstanceList.Count();
|
||||
|
||||
item.Description = "Key Series";
|
||||
|
||||
var modalityList = await _repository.Where<DicomSeries>(s => thisSeriesIdIds.Contains(s.Id)).OrderBy(s => s.SeriesNumber).
|
||||
ThenBy(s => s.SeriesTime).Select(x => x.Modality).Distinct().ToListAsync(); ;
|
||||
item.Modality = string.Join(",", modalityList);
|
||||
thisVisitTaskStudy.SeriesList.Add(item);
|
||||
thisVisitTaskStudy.SeriesCount = thisVisitTaskStudy.SeriesList.Count();
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
result.Add(thisVisitTaskStudy);
|
||||
|
||||
}
|
||||
|
|
|
@ -22,14 +22,13 @@ namespace IRaCIS.Core.Application.Triggers
|
|||
|
||||
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
||||
|
||||
private readonly IRepository<SubjectAdditionalEvaluationResult> _subjectAdditionalEvaluationResultRepository;
|
||||
|
||||
|
||||
|
||||
public VisitTaskIsFrontTaskNeedSignButNotSignTrigger(
|
||||
|
||||
IRepository<VisitTask> visitTaskRepository, IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository
|
||||
, IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository, IRepository<SubjectAdditionalEvaluationResult> subjectAdditionalEvaluationResultRepository)
|
||||
, IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository)
|
||||
{
|
||||
_trialReadingCriterionRepository = trialReadingCriterionRepository;
|
||||
|
||||
|
@ -37,7 +36,6 @@ namespace IRaCIS.Core.Application.Triggers
|
|||
_trialReadingQuestionRepository = trialReadingQuestionRepository;
|
||||
|
||||
_readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
||||
_subjectAdditionalEvaluationResultRepository = subjectAdditionalEvaluationResultRepository;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -35,6 +35,8 @@ namespace IRaCIS.Core.Domain.Models
|
|||
|
||||
public string NotAgreeReason { get; set; } = string.Empty;
|
||||
|
||||
public PIAuditState? PIAuditState { get; set; }
|
||||
|
||||
|
||||
public string PIAuditImagePath { get; set; } = string.Empty;
|
||||
|
||||
|
|
|
@ -1,79 +0,0 @@
|
|||
|
||||
//--------------------------------------------------------------------
|
||||
// 此代码由T4模板自动生成 byzhouhang 20210918
|
||||
// 生成时间 2023-03-17 11:50:31
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
namespace IRaCIS.Core.Domain.Models
|
||||
{
|
||||
///<summary>
|
||||
///SubjectAdditionalEvaluationResult
|
||||
///</summary>
|
||||
[Table("SubjectAdditionalEvaluationResult")]
|
||||
public class SubjectAdditionalEvaluationResult : Entity, IAuditUpdate, IAuditAdd
|
||||
{
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
[ForeignKey("TrialReadingQuestionId")]
|
||||
public ReadingQuestionTrial TrialReadingQuestion { get; set; }
|
||||
|
||||
|
||||
public Guid TrialReadingQuestionId { get; set; }
|
||||
|
||||
|
||||
|
||||
|
||||
public Guid SubjectId { get; set; }
|
||||
|
||||
|
||||
public Guid TrialReadingCriterionId { get; set; }
|
||||
|
||||
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
|
||||
public Guid CreateUserId { get; set; }
|
||||
|
||||
|
||||
public Guid UpdateUserId { get; set; }
|
||||
|
||||
|
||||
public DateTime UpdateTime { get; set; }
|
||||
|
||||
|
||||
public Guid? VisitTaskId { get; set; }
|
||||
|
||||
|
||||
public string Answer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 附加评估答案翻译字典
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string TranslateDictionaryCode { get; set; }=string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 是否是最终结果
|
||||
/// </summary>
|
||||
[Required]
|
||||
public bool IsFinalResult { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最终结果
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string FinalAnswer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最终结果翻字典
|
||||
/// </summary>
|
||||
[Required]
|
||||
public string FinalTranslateDictionaryCode { get; set; }
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -15,11 +15,14 @@ namespace IRaCIS.Core.Domain.Models
|
|||
[Table("CriterionNidusTrial")]
|
||||
public class CriterionNidusTrial : Entity, IAuditAdd
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
[JsonIgnore]
|
||||
[ForeignKey("CriterionId")]
|
||||
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// CriterionId
|
||||
/// </summary>
|
||||
[Required]
|
||||
[Required]
|
||||
public Guid CriterionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -264,9 +264,7 @@ namespace IRaCIS.Core.Domain.Models
|
|||
|
||||
public List<ReadingQuestionTrial> ReadingQuestionTrialList = new List<ReadingQuestionTrial>();
|
||||
|
||||
[JsonIgnore]
|
||||
|
||||
public List<TrialCriterionAdditionalAssessmentType> TrialCriterionAdditionalAssessmentTypeList { get; set; } = new List<TrialCriterionAdditionalAssessmentType>();
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
--医生相关
|
||||
DROP TABLE Attachment;
|
||||
DROP TABLE Doctor;
|
||||
DROP TABLE DoctorPayInformation
|
||||
DROP TABLE Postgraduate;
|
||||
DROP TABLE Education;
|
||||
DROP TABLE ResearchPublication;
|
||||
|
@ -9,6 +10,8 @@ DROP TABLE Vacation;
|
|||
DROP TABLE DoctorCriterionFile;
|
||||
DROP TABLE DoctorDictionary;
|
||||
|
||||
DROP TABLE TrialExperienceCriteria
|
||||
|
||||
|
||||
|
||||
--费用相关
|
||||
|
@ -22,6 +25,10 @@ DROP TABLE TrialRevenuesPrice;
|
|||
DROP TABLE TrialRevenuesPriceVerification;
|
||||
DROP TABLE VolumeReward;
|
||||
|
||||
--new
|
||||
DROP TABLE Payment
|
||||
DROP TABLE PaymentDetail
|
||||
|
||||
|
||||
--工作量
|
||||
DROP TABLE [Workload];
|
||||
|
@ -48,6 +55,11 @@ DROP TABLE SubjectCriteriaEvaluation;
|
|||
DROP TABLE SubjectCriteriaEvaluationVisitFilter;
|
||||
DROP TABLE SubjectCriteriaEvaluationVisitStudyFilter;
|
||||
|
||||
--new
|
||||
DROP TABLE SubjectAdditionalEvaluationResult
|
||||
DROP TABLE TrialCriterionAdditionalAssessmentType
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -26,11 +26,6 @@ namespace IRaCIS.Core.Domain.Models
|
|||
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
|
||||
public List<SubjectAdditionalEvaluationResult> SubjectAdditionalEvaluationResult { get; set; }
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
public List<ReadingTaskQuestionAnswer> ReadingTaskQuestionAnswerList { get; set; }
|
||||
|
||||
|
|
|
@ -249,10 +249,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
dicValueList = await _dbContext.Dictionary.Where(t => dicIdList.Contains(t.Id)).Select(t => t.Value).ToListAsync();
|
||||
}
|
||||
|
||||
// 附加评估
|
||||
|
||||
var addtionalAssesementList = await _dbContext.TrialCriterionAdditionalAssessmentType.Where(t => t.TrialReadingCriterionId == entity.Id && t.IsSelected != null)
|
||||
.Select(t => new { t.AdditionalAssessmentType, t.IsSelected }).ToListAsync();
|
||||
|
||||
|
||||
await InsertInspection<ReadingQuestionCriterionTrial>(entity, type, x => new InspectionConvertDTO()
|
||||
|
@ -268,7 +264,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
}, new
|
||||
{
|
||||
EvaluationResultTypes = dicValueList.Count > 0 ? string.Join(",", dicValueList) : string.Empty,
|
||||
AdditionalAssessmentTypeList = addtionalAssesementList
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -260,10 +260,8 @@ namespace IRaCIS.Core.Infra.EFCore
|
|||
|
||||
public virtual DbSet<TrialClinicalDataSetCriterion> TrialClinicalDataSetCriterion { get; set; }
|
||||
|
||||
public virtual DbSet<TrialCriterionAdditionalAssessmentType> TrialCriterionAdditionalAssessmentType { get; set; }
|
||||
|
||||
|
||||
public virtual DbSet<SubjectAdditionalEvaluationResult> SubjectAdditionalEvaluationResult { get; set; }
|
||||
|
||||
|
||||
|
||||
|
@ -513,54 +511,54 @@ namespace IRaCIS.Core.Infra.EFCore
|
|||
}
|
||||
catch (UniqueConstraintException ex)
|
||||
{
|
||||
_logger.LogError(ex.Message);
|
||||
_logger.LogError(ex.InnerException is null? ex.Message :ex.InnerException?.Message);
|
||||
|
||||
throw new DBSaveFailedException("该唯一键已经存在于数据库中。");
|
||||
|
||||
}
|
||||
catch (TimeoutException ex)
|
||||
{
|
||||
_logger.LogError(ex.Message);
|
||||
_logger.LogError(ex.InnerException is null ? ex.Message : ex.InnerException?.Message);
|
||||
|
||||
throw new DBSaveFailedException("数据库操作已经超时,请稍后重试。");
|
||||
|
||||
}
|
||||
catch (CannotInsertNullException ex)
|
||||
{
|
||||
_logger.LogError(ex.Message);
|
||||
_logger.LogError(ex.InnerException is null ? ex.Message : ex.InnerException?.Message);
|
||||
|
||||
throw new DBSaveFailedException("无法在非空列上插入空值。");
|
||||
}
|
||||
catch (MaxLengthExceededException ex)
|
||||
{
|
||||
_logger.LogError(ex.Message);
|
||||
_logger.LogError(ex.InnerException is null ? ex.Message : ex.InnerException?.Message);
|
||||
|
||||
throw new DBSaveFailedException("字符串超过了数据库列的最大长度。");
|
||||
}
|
||||
catch (NumericOverflowException ex)
|
||||
{
|
||||
_logger.LogError(ex.Message);
|
||||
|
||||
_logger.LogError(ex.InnerException is null ? ex.Message : ex.InnerException?.Message);
|
||||
throw new DBSaveFailedException("数值超过了数据类型的范围。");
|
||||
}
|
||||
catch (SyntaxErrorException ex)
|
||||
{
|
||||
_logger.LogError(ex.Message);
|
||||
_logger.LogError(ex.InnerException is null ? ex.Message : ex.InnerException?.Message);
|
||||
|
||||
throw new DBSaveFailedException("SQL 查询中存在语法错误。");
|
||||
}
|
||||
catch (ReferenceConstraintException ex)
|
||||
{
|
||||
_logger.LogError(ex.Message);
|
||||
_logger.LogError(ex.InnerException is null ? ex.Message : ex.InnerException?.Message);
|
||||
throw new DBSaveFailedException("无法进行当前操作,当前数据不符合外键约束。");
|
||||
}
|
||||
catch (DbUpdateConcurrencyException ex)
|
||||
{
|
||||
_logger.LogError(ex.Message);
|
||||
_logger.LogError(ex.InnerException is null ? ex.Message : ex.InnerException?.Message);
|
||||
|
||||
throw new DBSaveFailedException("SQL 事务失败,请检查环境。");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public async Task AddAudit()
|
||||
|
|
Loading…
Reference in New Issue