diff --git a/IRaCIS.Core.API/Controllers/InspectionController.cs b/IRaCIS.Core.API/Controllers/InspectionController.cs index 5e919a6b6..c39cf86ec 100644 --- a/IRaCIS.Core.API/Controllers/InspectionController.cs +++ b/IRaCIS.Core.API/Controllers/InspectionController.cs @@ -111,17 +111,19 @@ namespace IRaCIS.Core.API.Controllers { await _inspectionService.RecordSing(opt.SignInfo); - var data = await _trialConfigService.ConfigTrialBasicInfo(opt.Data); - if (!data.IsSuccess) - { - return ResponseOutput.NotOk(data.ErrorMessage); - } + opt.Data.IsTrialBasicLogicConfirmed = true; + return await _trialConfigService.ConfigTrialBasicInfo(opt.Data); + //if (!data.IsSuccess) + //{ + // return ResponseOutput.NotOk(data.ErrorMessage); + //} - return await _trialConfigService.TrialConfigSignatureConfirm(new SignConfirmDTO() - { - TrialId = opt.Data.TrialId, - SignCode = opt.SignInfo.SignCode - }); + //return ResponseOutput.Ok(); + //return await _trialConfigService.TrialConfigSignatureConfirm(new SignConfirmDTO() + //{ + // TrialId = opt.Data.TrialId, + // SignCode = opt.SignInfo.SignCode + //}); } @@ -152,17 +154,20 @@ namespace IRaCIS.Core.API.Controllers public async Task ConfigTrialProcessInfoConfirm(DataInspectionDto opt) { await _inspectionService.RecordSing(opt.SignInfo); - var data = await _trialConfigService.ConfigTrialProcessInfo(opt.Data); - if (!data.IsSuccess) - { - return ResponseOutput.NotOk(data.ErrorMessage); - } - return await _trialConfigService.TrialConfigSignatureConfirm(new SignConfirmDTO() - { - TrialId = opt.Data.TrialId, - SignCode = opt.SignInfo.SignCode - }); - + opt.Data.IsTrialProcessConfirmed = true; + return await _trialConfigService.ConfigTrialProcessInfo(opt.Data); + //if (!data.IsSuccess) + //{ + // return ResponseOutput.NotOk(data.ErrorMessage); + //} + + //return ResponseOutput.Ok(); + //return await _trialConfigService.TrialConfigSignatureConfirm(new SignConfirmDTO() + //{ + // TrialId = opt.Data.TrialId, + // SignCode = opt.SignInfo.SignCode + //}); + } @@ -180,17 +185,17 @@ namespace IRaCIS.Core.API.Controllers { await _inspectionService.RecordSing(opt.SignInfo); - - var data = await _trialConfigService.ConfigTrialUrgentInfo(opt.Data); - if (!data.IsSuccess) - { - return ResponseOutput.NotOk(data.ErrorMessage); - } - return await _trialConfigService.TrialConfigSignatureConfirm(new SignConfirmDTO() - { - TrialId = opt.Data.TrialId, - SignCode = opt.SignInfo.SignCode - }); + opt.Data.IsTrialUrgentConfirmed = true; + return await _trialConfigService.ConfigTrialUrgentInfo(opt.Data); + //if (!data.IsSuccess) + //{ + // return ResponseOutput.NotOk(data.ErrorMessage); + //} + //return await _trialConfigService.TrialConfigSignatureConfirm(new SignConfirmDTO() + //{ + // TrialId = opt.Data.TrialId, + // SignCode = opt.SignInfo.SignCode + //}); } diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index ecca20e42..448f4e0ce 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1067,6 +1067,11 @@ 影像一致性核查 + + + 流程是否确认 + + 1 Mint、2 PACS @@ -1077,6 +1082,11 @@ 是否有 入组评估确认 + + + 流程配置是否确认 + + QC流程 0 不审,1 单审,2双审 diff --git a/IRaCIS.Core.Application/Service/Common/FrontAuditConfigService.cs b/IRaCIS.Core.Application/Service/Common/FrontAuditConfigService.cs index 5a141006c..b7622a57b 100644 --- a/IRaCIS.Core.Application/Service/Common/FrontAuditConfigService.cs +++ b/IRaCIS.Core.Application/Service/Common/FrontAuditConfigService.cs @@ -140,6 +140,7 @@ namespace IRaCIS.Core.Application.Service var list = await _frontAuditConfigRepository.Where(x => x.ParentId == fully.DataFromItem).ToListAsync(); list.ForEach(x => { + x.Id = NewId.NextGuid(); x.ParentId = fully.ThisTiem; }); await _frontAuditConfigRepository.AddRangeAsync(list); diff --git a/IRaCIS.Core.Application/Service/Common/SystemBasicDataService.cs b/IRaCIS.Core.Application/Service/Common/SystemBasicDataService.cs index 8b29545ce..f6dd559c5 100644 --- a/IRaCIS.Core.Application/Service/Common/SystemBasicDataService.cs +++ b/IRaCIS.Core.Application/Service/Common/SystemBasicDataService.cs @@ -66,9 +66,14 @@ namespace IRaCIS.Core.Application.Services } else { - var entity = await _systemBasicDataRepository.Where(t => t.Id == addOrEditSystemBasicData.Id).FirstOrDefaultAsync(); + + var entity =await _systemBasicDataRepository.Where(t => t.Id == addOrEditSystemBasicData.Id,true).FirstOrDefaultAsync(); _mapper.Map(addOrEditSystemBasicData, entity); - var success = await _repository.SaveChangesAsync(); + await _systemBasicDataRepository.SaveChangesAsync(); + + //var entity = _mapper.Map(addOrEditSystemBasicData); + //await _systemBasicDataRepository.UpdateFromDTOAsync(entity); + //await _systemBasicDataRepository.SaveChangesAsync(); } return ResponseOutput.Ok(true); } @@ -79,8 +84,9 @@ namespace IRaCIS.Core.Application.Services [HttpDelete("{systemBasicDataId:guid}")] public async Task DeleteSystemBasicData(Guid systemBasicDataId) { - var success = await _repository.BatchDeleteAsync(t => t.Id == systemBasicDataId); - return ResponseOutput.Result(success); + var success = await _systemBasicDataRepository.DeleteFromQueryAsync(x=>x.Id== systemBasicDataId); + await _systemBasicDataRepository.SaveChangesAsync(); + return ResponseOutput.Result(true); } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs index 050562e31..9dd1204ba 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs @@ -38,6 +38,8 @@ namespace IRaCIS.Core.Application.Contracts /// public bool IsHaveSubjectAge { get; set; } = false; + public bool IsTrialBasicLogicConfirmed { get; set; } = false; + /// /// 出组后计划外访视名称 @@ -87,6 +89,11 @@ namespace IRaCIS.Core.Application.Contracts /// public bool IsImageConsistencyVerification { get; set; } = false; + /// + /// 流程是否确认 + /// + public bool IsTrialProcessConfirmed { get; set; } = false; + /// /// 1 Mint、2 PACS /// @@ -125,6 +132,11 @@ namespace IRaCIS.Core.Application.Contracts /// public bool IsEnrollementQualificationConfirm { get; set; } = false; + /// + /// 流程配置是否确认 + /// + public bool IsTrialUrgentConfirmed { get; set; } = false; + public bool IsUrgent { get; set; } public bool IsPDProgressView { get; set; } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 3c4fbec73..a346833a0 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -106,6 +106,11 @@ namespace IRaCIS.Core.Application /// public async Task TrialConfigSignatureConfirm(SignConfirmDTO signConfirmDTO) { + //var currentEntry = _trialRepository._dbContext.ChangeTracker.Entries().Where(x => x.Entity.GetType() == typeof(Trial)).ToList(); + //currentEntry.ForEach(x => + //{ + // x.State = EntityState.Detached; + //}); if (!await _trialRepository.AnyAsync(t => t.Id == signConfirmDTO.TrialId && (t.TrialStatusStr == StaticData.TrialInitializing|| t.TrialStatusStr == StaticData.TrialOngoing))) { @@ -114,15 +119,15 @@ namespace IRaCIS.Core.Application if (signConfirmDTO.SignCode == ((int)SignEnum.TrialLogicConfim).ToString()) { - await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialBasicLogicConfirmed = true }); + await _trialRepository.UpdatePartialFromQueryAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialBasicLogicConfirmed = true }); } else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialProcessConfim).ToString()) { - await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialProcessConfirmed = true }); + await _trialRepository.UpdatePartialFromQueryAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialProcessConfirmed = true }); } else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialUrgentConfim).ToString()) { - await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialUrgentConfirmed = true }); + await _trialRepository.UpdatePartialFromQueryAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialUrgentConfirmed = true }); } else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialQCQuestionConfirm).ToString()) @@ -158,7 +163,7 @@ namespace IRaCIS.Core.Application throw new BusinessValidationFailedException("父问题的序号要比子问题序号小,请确认"); } - await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { QCQuestionConfirmedTime = DateTime.Now, QCQuestionConfirmedUserId = _userInfo.Id, IsQCQuestionConfirmed = true }); + await _trialRepository.UpdatePartialFromQueryAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { QCQuestionConfirmedTime = DateTime.Now, QCQuestionConfirmedUserId = _userInfo.Id, IsQCQuestionConfirmed = true }); } @@ -184,8 +189,9 @@ namespace IRaCIS.Core.Application var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId); if (trialInfo == null) return Null404NotFound(trialInfo); - + _mapper.Map(trialConfig, trialInfo); + trialInfo.UpdateTime = DateTime.Now; return ResponseOutput.Ok(await _repository.SaveChangesAsync()); } @@ -328,7 +334,7 @@ namespace IRaCIS.Core.Application if (trialInfo == null) return Null404NotFound(trialInfo); _mapper.Map(trialConfig, trialInfo); - + trialInfo.UpdateTime = DateTime.Now; return ResponseOutput.Ok(await _repository.SaveChangesAsync()); @@ -368,6 +374,8 @@ namespace IRaCIS.Core.Application _mapper.Map(trialConfig, trialInfo); + trialInfo.UpdateTime = DateTime.Now; + return ResponseOutput.Ok(await _repository.SaveChangesAsync()); } diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index f1b5854b8..3057235d4 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -109,17 +109,31 @@ namespace IRaCIS.Core.Infra.EFCore.Common // 签名模板 foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(SystemBasicData))) { + var entity = item.Entity as SystemBasicData; + type = type + (entity.ParentId == null ? "/parent" : string.Empty); await InsertInspection(item, type, x => new DataInspection() { VisitStageId = x.Id, }); } - - // 项目 foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(Trial))) { + var originalValues = item.OriginalValues.ToObject() as Trial; + switch (GetRequestUrl().ToLower()) + { + case "configtrialbasicinfo/configtrialbasicinfoconfirm": + type = type + "/" + originalValues.IsTrialBasicLogicConfirmed.ToString(); + break; + case "configtrialbasicinfo/configtrialprocessinfoconfirm": + type = type + "/" + originalValues.IsTrialProcessConfirmed.ToString(); + break; + case "configtrialbasicinfo/configtrialurgentinfoconfirm": + type = type + "/" + originalValues.IsTrialUrgentConfirmed.ToString(); + break; + } + var entity = item.Entity as Trial; await InsertInspection(item, type, x => new DataInspection() { @@ -127,6 +141,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common TrialName = x.ExperimentName, ResearchProgramNo=x.ResearchProgramNo, GeneralId = x.Id, + },new { + TrialDicList= string.Join(",",entity.TrialDicList.Select(x => x.KeyName).ToList()) }); }