新增项目

Uat_Study
he 2022-04-26 10:44:10 +08:00
parent 76be637e50
commit 0b5d41c8b7
6 changed files with 48 additions and 16 deletions

View File

@ -11,6 +11,7 @@ using IRaCIS.Application.Services;
using IRaCIS.Core.Application.Service.Inspection.DTO; using IRaCIS.Core.Application.Service.Inspection.DTO;
using IRaCIS.Core.Infra.EFCore; using IRaCIS.Core.Infra.EFCore;
using IRaCIS.Core.Application.Service.Inspection.Interface; using IRaCIS.Core.Application.Service.Inspection.Interface;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Core.API.Controllers.Special namespace IRaCIS.Core.API.Controllers.Special
{ {
@ -43,7 +44,10 @@ namespace IRaCIS.Core.API.Controllers.Special
public async Task<IResponseOutput> AddOrUpdateTrialInspection(DataInspectionDto<TrialCommand> opt) public async Task<IResponseOutput> AddOrUpdateTrialInspection(DataInspectionDto<TrialCommand> opt)
{ {
var fun = AddOrUpdateTrial; var fun =await AddOrUpdateTrial(opt.OptCommand);
opt.AuditInfo.TrialId = fun.Data.Id;
opt.AuditInfo.TrialName = fun.Data.ExperimentName;
opt.AuditInfo.ResearchProgramNo = fun.Data.ResearchProgramNo;
return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun); return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun);
} }
@ -53,7 +57,7 @@ namespace IRaCIS.Core.API.Controllers.Special
/// <returns>新记录Id</returns> /// <returns>新记录Id</returns>
[HttpPost, Route("trial/addOrUpdateTrial")] [HttpPost, Route("trial/addOrUpdateTrial")]
public async Task<IResponseOutput> AddOrUpdateTrial(TrialCommand param) public async Task<IResponseOutput<Trial>> AddOrUpdateTrial(TrialCommand param)
{ {
var userId = Guid.Parse(User.FindFirst("id").Value); var userId = Guid.Parse(User.FindFirst("id").Value);
var result = await _trialService.AddOrUpdateTrial(param); var result = await _trialService.AddOrUpdateTrial(param);

View File

@ -53,7 +53,7 @@ namespace IRaCIS.Core.API.Controllers
ITrialDocumentService trialDocumentService, ITrialDocumentService trialDocumentService,
IRepository<DataInspection> dataInspectionRepository, IRepository<DataInspection> dataInspectionRepository,
IQCListService _qCListService, IQCListService _qCListService,
IHttpContextAccessor httpContext, IHttpContextAccessor httpContext,
IInspectionService sinspectionService, IInspectionService sinspectionService,
ITrialConfigService _trialConfigService, ITrialConfigService _trialConfigService,
INoneDicomStudyService noneDicomStudyService, INoneDicomStudyService noneDicomStudyService,

View File

@ -114,6 +114,9 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO
public bool NeedSava { get; set; } = true; public bool NeedSava { get; set; } = true;
} }

View File

@ -7,7 +7,7 @@ namespace IRaCIS.Application.Interfaces
{ {
bool TrialExpeditedChange { get; set; } bool TrialExpeditedChange { get; set; }
Task<IResponseOutput> AddOrUpdateTrial(TrialCommand trialAddModel); Task<IResponseOutput<Trial>> AddOrUpdateTrial(TrialCommand trialAddModel);
Task<IResponseOutput> ConfirmTrialVisitPlan(Guid trialId, bool confirmOrCancel = true); Task<IResponseOutput> ConfirmTrialVisitPlan(Guid trialId, bool confirmOrCancel = true);
Task<IResponseOutput> DeleteTrial(Guid trialId); Task<IResponseOutput> DeleteTrial(Guid trialId);

View File

@ -7,6 +7,7 @@ using IRaCIS.Core.Infra.EFCore;
using MassTransit; using MassTransit;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Panda.DynamicWebApi.Attributes; using Panda.DynamicWebApi.Attributes;
using IRaCIS.Core.Infrastructure;
namespace IRaCIS.Application.Services namespace IRaCIS.Application.Services
{ {
@ -128,21 +129,22 @@ namespace IRaCIS.Application.Services
/// <param name="trialAddModel"></param> /// <param name="trialAddModel"></param>
/// <returns></returns> /// <returns></returns>
[NonDynamicMethod] [NonDynamicMethod]
public virtual async Task<IResponseOutput> AddOrUpdateTrial(TrialCommand trialAddModel) public virtual async Task<IResponseOutput<Trial>> AddOrUpdateTrial(TrialCommand trialAddModel)
{ {
// 到时候 策略授权 统一改 归类 // 到时候 策略授权 统一改 归类
if (!(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin)) if (!(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin))
{ {
return ResponseOutput.NotOk("仅PM/APM可以操作!"); throw new BusinessValidationFailedException("仅PM/APM可以操作!");
} }
if (trialAddModel.Id == Guid.Empty || trialAddModel.Id == null) if (trialAddModel.Id == Guid.Empty || trialAddModel.Id == null)
{ {
if (await _trialRepository.AnyAsync(u => u.TrialCode == trialAddModel.TrialCode)) if (await _trialRepository.AnyAsync(u => u.TrialCode == trialAddModel.TrialCode))
{ {
return ResponseOutput.NotOk("Same Trial ID already exists."); throw new BusinessValidationFailedException("Same Trial ID already exists.");
} }
var dbMaxCode = await _trialRepository.Where(t => t.CreateTime.Year == DateTime.Now.Year && t.TrialType == trialAddModel.TrialType).Select(t => t.Code).DefaultIfEmpty().MaxAsync(); var dbMaxCode = await _trialRepository.Where(t => t.CreateTime.Year == DateTime.Now.Year && t.TrialType == trialAddModel.TrialType).Select(t => t.Code).DefaultIfEmpty().MaxAsync();
@ -171,7 +173,7 @@ namespace IRaCIS.Application.Services
//状态变更详细表 //状态变更详细表
trial.ClinicalTrialProjectDetails.Add(new TrialStatusDetail() { TrialId = trial.Id, TrialStatus = (int)TrialEnrollStatus.ChooseDoctor }); trial.ClinicalTrialProjectDetails.Add(new TrialStatusDetail() { TrialId = trial.Id, TrialStatus = (int)TrialEnrollStatus.ChooseDoctor });
trial = await _repository.AddAsync(trial); trial = await _trialRepository.AddAsync(trial);
//如果是PM 则需要将该人员添加到 运维人员表 //如果是PM 则需要将该人员添加到 运维人员表
//添加运维人员PM //添加运维人员PM
@ -189,7 +191,7 @@ namespace IRaCIS.Application.Services
_provider.Set(trial.Id.ToString(), StaticData.TrialInitializing, TimeSpan.FromDays(7)); _provider.Set(trial.Id.ToString(), StaticData.TrialInitializing, TimeSpan.FromDays(7));
return ResponseOutput.Result(success, new { Id = trial.Id, TrialCode = trial.TrialCode }); return ResponseOutput.Ok(trial);
} }
else else
{ {
@ -197,13 +199,13 @@ namespace IRaCIS.Application.Services
if (!await _repository.AnyAsync<Trial>(u => u.Id == trialAddModel.Id && (u.TrialStatusStr == StaticData.TrialInitializing || u.TrialStatusStr == StaticData.TrialOngoing))) if (!await _repository.AnyAsync<Trial>(u => u.Id == trialAddModel.Id && (u.TrialStatusStr == StaticData.TrialInitializing || u.TrialStatusStr == StaticData.TrialOngoing)))
{ {
return ResponseOutput.NotOk("项目初始化或者进行中时 才允许操作"); throw new BusinessValidationFailedException("项目初始化或者进行中时 才允许操作");
} }
// 判断项目Id 是否已经存在 // 判断项目Id 是否已经存在
if (await _repository.AnyAsync<Trial>(u => u.TrialCode == updateModel.TrialCode && u.Id != updateModel.Id)) if (await _repository.AnyAsync<Trial>(u => u.TrialCode == updateModel.TrialCode && u.Id != updateModel.Id))
{ {
return ResponseOutput.NotOk("Same Trial ID already exists."); throw new BusinessValidationFailedException("Same Trial ID already exists.");
} }
@ -229,8 +231,8 @@ namespace IRaCIS.Application.Services
_mapper.Map(updateModel, trial); _mapper.Map(updateModel, trial);
var success = await _repository.SaveChangesAsync(); var success = await _repository.SaveChangesAsync();
return ResponseOutput.Ok(trial);
return ResponseOutput.Result(success);
} }

View File

@ -675,7 +675,24 @@ namespace IRaCIS.Core.Infra.EFCore
{ {
List<DataInspection> datas = new List<DataInspection>(); List<DataInspection> datas = new List<DataInspection>();
var createtime = DateTime.Now.AddSeconds(1); var createtime = DateTime.Now.AddMilliseconds(200);
// 项目
if (typeof(TEntity) == typeof(Trial))
{
Trial data = entity as Trial;
datas.Add(new DataInspection()
{
TrialId = data.Id,
SubjectId = data.Id,
TrialName=data.ExperimentName,
ResearchProgramNo=data.ResearchProgramNo,
IsSign = false,
CreateTime = createtime,
Identification = "Init|Trial|Status|Trial Setting-Infomation", // 初始化项目
JsonDetail = entity.ToJcJson()
});
}
// 受试者 // 受试者
if (typeof(TEntity) == typeof(Subject)) if (typeof(TEntity) == typeof(Subject))
@ -687,6 +704,7 @@ namespace IRaCIS.Core.Infra.EFCore
SiteId = data.SiteId, SiteId = data.SiteId,
SubjectId = data.Id, SubjectId = data.Id,
SubjectCode = data.Code, SubjectCode = data.Code,
IsSign = false, IsSign = false,
CreateTime = createtime, CreateTime = createtime,
Identification = "Init|Subject|Status|Subject", // 初始化受试者信息 Identification = "Init|Subject|Status|Subject", // 初始化受试者信息
@ -874,7 +892,12 @@ namespace IRaCIS.Core.Infra.EFCore
#region 项目名称 #region 项目名称
var trialdata = await _dbContext.Trial.Select(x => new { x.Id, x.ResearchProgramNo, x.ExperimentName, }).FirstOrDefaultAsync(x => x.Id == Data.TrialId); var trialdata = await _dbContext.Trial.Select(x => new { x.Id, x.ResearchProgramNo, x.ExperimentName, }).FirstOrDefaultAsync(x => x.Id == Data.TrialId);
Data.ResearchProgramNo = trialdata?.ResearchProgramNo; if (IsNullOrEmpty(Data.ResearchProgramNo))
{
Data.ResearchProgramNo = trialdata?.ResearchProgramNo;
}
if (IsNullOrEmpty(Data.TrialName)) if (IsNullOrEmpty(Data.TrialName))
{ {
Data.TrialName = trialdata?.ExperimentName; Data.TrialName = trialdata?.ExperimentName;