新增项目

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.Infra.EFCore;
using IRaCIS.Core.Application.Service.Inspection.Interface;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Core.API.Controllers.Special
{
@ -43,7 +44,10 @@ namespace IRaCIS.Core.API.Controllers.Special
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);
}
@ -53,7 +57,7 @@ namespace IRaCIS.Core.API.Controllers.Special
/// <returns>新记录Id</returns>
[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 result = await _trialService.AddOrUpdateTrial(param);

View File

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

View File

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

View File

@ -7,7 +7,7 @@ namespace IRaCIS.Application.Interfaces
{
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> DeleteTrial(Guid trialId);

View File

@ -7,6 +7,7 @@ using IRaCIS.Core.Infra.EFCore;
using MassTransit;
using Microsoft.AspNetCore.Mvc;
using Panda.DynamicWebApi.Attributes;
using IRaCIS.Core.Infrastructure;
namespace IRaCIS.Application.Services
{
@ -128,21 +129,22 @@ namespace IRaCIS.Application.Services
/// <param name="trialAddModel"></param>
/// <returns></returns>
[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))
{
return ResponseOutput.NotOk("仅PM/APM可以操作!");
throw new BusinessValidationFailedException("仅PM/APM可以操作!");
}
if (trialAddModel.Id == Guid.Empty || trialAddModel.Id == null)
{
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();
@ -171,7 +173,7 @@ namespace IRaCIS.Application.Services
//状态变更详细表
trial.ClinicalTrialProjectDetails.Add(new TrialStatusDetail() { TrialId = trial.Id, TrialStatus = (int)TrialEnrollStatus.ChooseDoctor });
trial = await _repository.AddAsync(trial);
trial = await _trialRepository.AddAsync(trial);
//如果是PM 则需要将该人员添加到 运维人员表
//添加运维人员PM
@ -189,7 +191,7 @@ namespace IRaCIS.Application.Services
_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
{
@ -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)))
{
return ResponseOutput.NotOk("项目初始化或者进行中时 才允许操作");
throw new BusinessValidationFailedException("项目初始化或者进行中时 才允许操作");
}
// 判断项目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);
var success = await _repository.SaveChangesAsync();
return ResponseOutput.Result(success);
return ResponseOutput.Ok(trial);
}

View File

@ -675,7 +675,24 @@ namespace IRaCIS.Core.Infra.EFCore
{
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))
@ -687,6 +704,7 @@ namespace IRaCIS.Core.Infra.EFCore
SiteId = data.SiteId,
SubjectId = data.Id,
SubjectCode = data.Code,
IsSign = false,
CreateTime = createtime,
Identification = "Init|Subject|Status|Subject", // 初始化受试者信息
@ -874,7 +892,12 @@ namespace IRaCIS.Core.Infra.EFCore
#region 项目名称
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))
{
Data.TrialName = trialdata?.ExperimentName;