访视计划废除
parent
af15ff58d4
commit
440a3f0554
|
@ -23,6 +23,9 @@ namespace IRaCIS.Application.Contracts
|
||||||
public class VisitStageDTO : VisitPlanCommand
|
public class VisitStageDTO : VisitPlanCommand
|
||||||
{
|
{
|
||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
|
|
||||||
|
public bool IsHaveFirstConfirmed { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VisitPlanView
|
public class VisitPlanView
|
||||||
|
@ -60,6 +63,8 @@ namespace IRaCIS.Application.Contracts
|
||||||
|
|
||||||
public int VisitWindowLeft { get; set; }
|
public int VisitWindowLeft { get; set; }
|
||||||
public int VisitWindowRight { get; set; }
|
public int VisitWindowRight { get; set; }
|
||||||
|
|
||||||
|
public bool IsDeleted { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@ namespace IRaCIS.Application.Services
|
||||||
/// <summary> 获取项目访视计划</summary>
|
/// <summary> 获取项目访视计划</summary>
|
||||||
public async Task<PageOutput<VisitStageDTO>> GetTrialVisitStageList(VisitPlanQueryDTO param)
|
public async Task<PageOutput<VisitStageDTO>> GetTrialVisitStageList(VisitPlanQueryDTO param)
|
||||||
{
|
{
|
||||||
var visitStageQuery = _visitStageRepository.Where(u => u.TrialId == param.TrialId)
|
var visitStageQuery = _visitStageRepository.AsQueryable(true).Where(u => u.TrialId == param.TrialId)
|
||||||
.WhereIf(!string.IsNullOrWhiteSpace(param.Keyword), t => t.VisitName.Contains(param.Keyword))
|
.WhereIf(!string.IsNullOrWhiteSpace(param.Keyword), t => t.VisitName.Contains(param.Keyword))
|
||||||
.ProjectTo<VisitStageDTO>(_mapper.ConfigurationProvider);
|
.ProjectTo<VisitStageDTO>(_mapper.ConfigurationProvider);
|
||||||
|
|
||||||
|
@ -93,12 +93,12 @@ namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
DateTime createtime = DateTime.Now;
|
DateTime createtime = DateTime.Now;
|
||||||
List<DataInspection> datas = new List<DataInspection>();
|
List<DataInspection> datas = new List<DataInspection>();
|
||||||
if (!await _repository.Where<Trial>(t => t.Id == visitPlan.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialOngoing || t.TrialStatusStr == StaticData.TrialInitializing))
|
if (!await _trialRepository.Where(t => t.Id == visitPlan.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialOngoing || t.TrialStatusStr == StaticData.TrialInitializing))
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk(" only in Initializing or Ongoing State can operate ");
|
return ResponseOutput.NotOk(" only in Initializing or Ongoing State can operate ");
|
||||||
}
|
}
|
||||||
|
|
||||||
var visitPlanList = await _visitStageRepository.Where(t => t.TrialId == visitPlan.TrialId)
|
var visitPlanList = await _visitStageRepository.Where(t => t.TrialId == visitPlan.TrialId,ignoreQueryFilters:true)
|
||||||
.Select(t => new { t.Id, t.VisitNum, t.VisitDay }).OrderBy(t => t.VisitNum).ToListAsync();
|
.Select(t => new { t.Id, t.VisitNum, t.VisitDay }).OrderBy(t => t.VisitNum).ToListAsync();
|
||||||
|
|
||||||
//更新的时候,需要排除自己
|
//更新的时候,需要排除自己
|
||||||
|
@ -127,20 +127,20 @@ namespace IRaCIS.Application.Services
|
||||||
if (visitPlan.Id == Guid.Empty || visitPlan.Id == null)//add
|
if (visitPlan.Id == Guid.Empty || visitPlan.Id == null)//add
|
||||||
{
|
{
|
||||||
|
|
||||||
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && (t.VisitName == visitPlan.VisitName || t.VisitNum == visitPlan.VisitNum)))
|
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && (t.VisitName == visitPlan.VisitName || t.VisitNum == visitPlan.VisitNum), true))
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk("A visit with the same VisitName/VisitNum already existed in the current visit plan.");
|
return ResponseOutput.NotOk("A visit with the same VisitName/VisitNum already existed in the current visit plan.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && t.IsBaseLine) && visitPlan.IsBaseLine)
|
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && t.IsBaseLine, true) && visitPlan.IsBaseLine)
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk("A visit already is baseline in the current visit plan.");
|
return ResponseOutput.NotOk("A visit already is baseline in the current visit plan.");
|
||||||
}
|
}
|
||||||
|
|
||||||
//已添加受试者 都不存在该新增的计划名称 那么该项目所有受试者都增加一个访视记录
|
//已添加受试者 都不存在该新增的计划名称 那么该项目所有受试者都增加一个访视记录
|
||||||
if (!await _repository.AnyAsync<SubjectVisit>(t => t.VisitName == visitPlan.VisitName && t.TrialId == visitPlan.TrialId))
|
if (!await _subjectVisitRepository.AnyAsync(t => t.VisitName == visitPlan.VisitName && t.TrialId == visitPlan.TrialId))
|
||||||
{
|
{
|
||||||
var subjectSVS = await _repository.Where<SubjectVisit>(t => t.TrialId == visitPlan.TrialId).Select(t => new { t.SubjectId, t.SiteId,t.IsFinalVisit }).Distinct().ToListAsync();
|
var subjectSVS = await _subjectVisitRepository.Where(t => t.TrialId == visitPlan.TrialId).Select(t => new { t.SubjectId, t.SiteId,t.IsFinalVisit }).Distinct().ToListAsync();
|
||||||
|
|
||||||
var subjects = subjectSVS.Select(t => new { t.SubjectId, t.SiteId }).Distinct().ToList();
|
var subjects = subjectSVS.Select(t => new { t.SubjectId, t.SiteId }).Distinct().ToList();
|
||||||
|
|
||||||
|
@ -198,7 +198,7 @@ namespace IRaCIS.Application.Services
|
||||||
visitPlan.Id = result.Id;
|
visitPlan.Id = result.Id;
|
||||||
|
|
||||||
//更新项目访视计划状态为未确认
|
//更新项目访视计划状态为未确认
|
||||||
await _repository.UpdateFromQueryAsync<Trial>(u => u.Id == visitPlan.TrialId, t => new Trial() { VisitPlanConfirmed = false });
|
await _trialRepository.UpdateFromQueryAsync(u => u.Id == visitPlan.TrialId, t => new Trial() { VisitPlanConfirmed = false });
|
||||||
|
|
||||||
await _repository.SaveChangesAsync();
|
await _repository.SaveChangesAsync();
|
||||||
|
|
||||||
|
@ -211,19 +211,19 @@ namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && (t.VisitName == visitPlan.VisitName || t.VisitNum == visitPlan.VisitNum) && t.Id != visitPlan.Id))
|
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && (t.VisitName == visitPlan.VisitName || t.VisitNum == visitPlan.VisitNum) && t.Id != visitPlan.Id,true))
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk("A visit with the same VisitName/VisitNum already existed in the current visit plan.");
|
return ResponseOutput.NotOk("A visit with the same VisitName/VisitNum already existed in the current visit plan.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && t.IsBaseLine && t.Id != visitPlan.Id) && visitPlan.IsBaseLine)
|
if (await _visitStageRepository.AnyAsync(t => t.TrialId == visitPlan.TrialId && t.IsBaseLine && t.Id != visitPlan.Id,true) && visitPlan.IsBaseLine)
|
||||||
{
|
{
|
||||||
return ResponseOutput.NotOk("A visit already is baseline in the current visit plan.");
|
return ResponseOutput.NotOk("A visit already is baseline in the current visit plan.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var stage = await _visitStageRepository.FirstOrDefaultAsync(t => t.Id == visitPlan.Id);
|
var stage = await _visitStageRepository.FirstOrDefaultAsync(t => t.Id == visitPlan.Id,true);
|
||||||
if (stage == null) return ResponseOutput.NotOk("None");
|
if (stage == null) return ResponseOutput.NotOk("None");
|
||||||
|
|
||||||
//修改是否是基线
|
//修改是否是基线
|
||||||
|
@ -240,7 +240,7 @@ namespace IRaCIS.Application.Services
|
||||||
stage.BlindName = "B" + ((int)visitPlan.VisitNum * 10).ToString("D3");
|
stage.BlindName = "B" + ((int)visitPlan.VisitNum * 10).ToString("D3");
|
||||||
|
|
||||||
//更新项目访视计划状态为未确认
|
//更新项目访视计划状态为未确认
|
||||||
await _repository.UpdateFromQueryAsync<Trial>(u => u.Id == visitPlan.TrialId, t => new Trial() { VisitPlanConfirmed = false });
|
//await _trialRepository.UpdateFromQueryAsync(u => u.Id == visitPlan.TrialId, t => new Trial() { VisitPlanConfirmed = false });
|
||||||
|
|
||||||
await _repository.SaveChangesAsync();
|
await _repository.SaveChangesAsync();
|
||||||
|
|
||||||
|
@ -296,11 +296,8 @@ namespace IRaCIS.Application.Services
|
||||||
await _inspectionService.AddListInspectionRecordAsync(datas);
|
await _inspectionService.AddListInspectionRecordAsync(datas);
|
||||||
await _repository.DeleteFromQueryAsync<SubjectVisit>(t => t.TrialId == visitPlan.TrialId && t.VisitName == visitPlan.VisitName);
|
await _repository.DeleteFromQueryAsync<SubjectVisit>(t => t.TrialId == visitPlan.TrialId && t.VisitName == visitPlan.VisitName);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var result = await _visitStageRepository.DeleteFromQueryAsync(u => u.Id == id);
|
var result = await _visitStageRepository.DeleteFromQueryAsync(u => u.Id == id);
|
||||||
|
|
||||||
|
|
||||||
return ResponseOutput.Result(result);
|
return ResponseOutput.Result(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -363,7 +360,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
|
|
||||||
//访视计划 整体状态变更为 确认
|
//访视计划 整体状态变更为 确认
|
||||||
await _visitStageRepository.UpdateFromQueryAsync(u => u.TrialId == trialId, t => new VisitStage() { IsConfirmed = true });
|
await _visitStageRepository.UpdateFromQueryAsync(u => u.TrialId == trialId, t => new VisitStage() { IsConfirmed = true ,IsHaveFirstConfirmed = true});
|
||||||
|
|
||||||
var stat = new VisitPlanInfluenceStat() { TrialId = trialId };
|
var stat = new VisitPlanInfluenceStat() { TrialId = trialId };
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||||
namespace IRaCIS.Core.Domain.Models
|
namespace IRaCIS.Core.Domain.Models
|
||||||
{
|
{
|
||||||
[Table("VisitStage")]
|
[Table("VisitStage")]
|
||||||
public class VisitStage : Entity, IAuditUpdate, IAuditAdd
|
public class VisitStage : Entity, IAuditUpdate, IAuditAdd,ISoftDelete
|
||||||
{
|
{
|
||||||
public Trial Trial { get; set; }
|
public Trial Trial { get; set; }
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
@ -23,7 +23,6 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
|
|
||||||
public bool IsBaseLine { get; set; } = false;
|
public bool IsBaseLine { get; set; } = false;
|
||||||
|
|
||||||
//public string AnonymousVisitName { get; set; } = string.Empty;
|
|
||||||
|
|
||||||
public int VisitWindowLeft { get; set; }
|
public int VisitWindowLeft { get; set; }
|
||||||
public int VisitWindowRight { get; set; }
|
public int VisitWindowRight { get; set; }
|
||||||
|
@ -33,5 +32,12 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
public Guid UpdateUserId { get; set; }
|
public Guid UpdateUserId { get; set; }
|
||||||
public DateTime UpdateTime { get; set; }
|
public DateTime UpdateTime { get; set; }
|
||||||
|
|
||||||
|
public bool IsDeleted { get; set; }
|
||||||
|
public bool IsHaveFirstConfirmed { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public DateTime? DeletedTime { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ using System.Threading.Tasks;
|
||||||
using Microsoft.EntityFrameworkCore.ChangeTracking;
|
using Microsoft.EntityFrameworkCore.ChangeTracking;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
|
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||||
using UserTypeGroup = IRaCIS.Core.Domain.Models.UserTypeGroup;
|
using UserTypeGroup = IRaCIS.Core.Domain.Models.UserTypeGroup;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Infra.EFCore
|
namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
@ -32,7 +33,8 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
//比数据库上下文构造函数先执行 不能构造函数注入的方式使用配置文件
|
//比数据库上下文构造函数先执行 不能构造函数注入的方式使用配置文件
|
||||||
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
||||||
{
|
{
|
||||||
optionsBuilder.UseLoggerFactory(MyLoggerFactory);
|
optionsBuilder.UseLoggerFactory(MyLoggerFactory)
|
||||||
|
.ReplaceService<IModelCacheKeyFactory, DynamicModelCacheKeyFactoryDesignTimeSupport>();
|
||||||
|
|
||||||
//var config = new ConfigurationBuilder()
|
//var config = new ConfigurationBuilder()
|
||||||
// .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true).Build();
|
// .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true).Build();
|
||||||
|
@ -40,10 +42,47 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
//optionsBuilder.AddInterceptors(new AuditingInterceptor(connectionString));
|
//optionsBuilder.AddInterceptors(new AuditingInterceptor(connectionString));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region IModelCacheKeyFactory
|
||||||
|
|
||||||
|
//public class DynamicModelCacheKeyFactory : IModelCacheKeyFactory
|
||||||
|
//{
|
||||||
|
// public object Create(DbContext context)
|
||||||
|
// => context is IRaCISDBContext dynamicContext
|
||||||
|
// ? (context.GetType(), dynamicContext._userInfo.IsEn_Us)
|
||||||
|
// : (object)context.GetType();
|
||||||
|
//}
|
||||||
|
|
||||||
|
public class DynamicModelCacheKeyFactoryDesignTimeSupport : IModelCacheKeyFactory
|
||||||
|
{
|
||||||
|
public object Create(DbContext context, bool designTime)
|
||||||
|
=> context is IRaCISDBContext dynamicContext
|
||||||
|
? (context.GetType(), dynamicContext._userInfo.IsEn_Us, designTime)
|
||||||
|
: (object)context.GetType();
|
||||||
|
|
||||||
|
public object Create(DbContext context)
|
||||||
|
=> Create(context, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
//modelBuilder.Entity<TrialSiteSurvey>().HasMany(s => s.TrialSiteUserSurveyList).WithOne(sv => sv.TrialSiteSurvey);
|
//modelBuilder.Entity<TrialSiteSurvey>().HasMany(s => s.TrialSiteUserSurveyList).WithOne(sv => sv.TrialSiteSurvey);
|
||||||
//modelBuilder.Entity<TrialSiteSurvey>().HasMany(s => s.TrialSiteEquipmentSurveyList).WithOne(sv => sv.TrialSiteSurvey);
|
//modelBuilder.Entity<TrialSiteSurvey>().HasMany(s => s.TrialSiteEquipmentSurveyList).WithOne(sv => sv.TrialSiteSurvey);
|
||||||
|
//modelBuilder.Entity<Dictionary>().Ignore(t => t.MappedValue);
|
||||||
|
//modelBuilder.Entity<Dictionary>().Property(t => t.MappedValue).HasComputedColumnSql(_userInfo.IsEn_Us? "[Value]":"[ValueCN]");
|
||||||
|
//modelBuilder.Entity<TrialSiteSurvey>()// .HasQueryFilter(t => t.IsDeleted == false);
|
||||||
|
|
||||||
|
|
||||||
|
if (_userInfo.IsEn_Us)
|
||||||
|
{
|
||||||
|
modelBuilder.Entity<Dictionary>().Property(t => t.MappedValue).HasColumnName( "Value" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
modelBuilder.Entity<Dictionary>().Property(t => t.MappedValue).HasColumnName( "ValueCN");
|
||||||
|
}
|
||||||
|
|
||||||
//遍历实体模型手动配置
|
//遍历实体模型手动配置
|
||||||
var typesToRegister = Assembly.GetExecutingAssembly().GetTypes().Where(q => q.GetInterface(typeof(IEntityTypeConfiguration<>).FullName) != null);
|
var typesToRegister = Assembly.GetExecutingAssembly().GetTypes().Where(q => q.GetInterface(typeof(IEntityTypeConfiguration<>).FullName) != null);
|
||||||
|
@ -56,13 +95,11 @@ namespace IRaCIS.Core.Infra.EFCore
|
||||||
|
|
||||||
base.OnModelCreating(modelBuilder);
|
base.OnModelCreating(modelBuilder);
|
||||||
|
|
||||||
//modelBuilder.Entity<Dictionary>().Ignore(t => t.MappedValue);
|
|
||||||
//modelBuilder.Entity<Dictionary>().Property(t => t.MappedValue).HasComputedColumnSql(_userInfo.IsEn_Us? "[Value]":"[ValueCN]");
|
|
||||||
|
|
||||||
//modelBuilder.Entity<Dictionary>().Property(t => t.MappedValue).HasColumnName(_userInfo.IsEn_Us ? "Value" : "ValueCN").UsePropertyAccessMode(PropertyAccessMode.Property);
|
//modelBuilder.Entity<Dictionary>().Property(t => t.MappedValue).HasColumnName(_userInfo.IsEn_Us ? "Value" : "ValueCN").UsePropertyAccessMode(PropertyAccessMode.Property);
|
||||||
|
|
||||||
//modelBuilder.Entity<TrialSiteSurvey>()
|
|
||||||
// .HasQueryFilter(t => t.IsDeleted == false);
|
|
||||||
|
|
||||||
// 软删除配置
|
// 软删除配置
|
||||||
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
|
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
|
||||||
|
|
Loading…
Reference in New Issue