Uat_Study
he 2022-04-19 15:14:43 +08:00
parent fe6ac1a8be
commit bfc0fd4203
5 changed files with 319 additions and 102 deletions

View File

@ -322,31 +322,34 @@ namespace IRaCIS.Core.Application.Service.Inspection
//var childrenTypes= datas.Select(x => x.ChildrenType).Distinct().ToList(); //var childrenTypes= datas.Select(x => x.ChildrenType).Distinct().ToList();
//var objectTypes = datas.Select(x => x.ObjectType).Distinct().ToList(); //var objectTypes = datas.Select(x => x.ObjectType).Distinct().ToList();
foreach (var add in datas)
{ await _dataInspectionRepository.AddListInspectionRecordAsync(datas);
await SetInspectionNameValue(add);
add.ParentId = (await _repository.GetQueryable<DataInspection>().Where(x => x.TrialId == add.TrialId && x.SubjectVisitId == add.SubjectVisitId && x.SubjectId == add.SubjectId && x.SiteId == add.SiteId && x.ChildrenType == add.ChildrenType && x.ObjectType == add.ObjectType&&x.VisitStageId==add.VisitStageId&& x.GeneralId == add.GeneralId).OrderByDescending(x => x.CreateTime).FirstOrDefaultAsync())?.Id; //foreach (var add in datas)
add.CreateUserId = _userInfo.Id; //{
add.IP = _userInfo.IP; // await SetInspectionNameValue(add);
// add.ParentId = (await _repository.GetQueryable<DataInspection>().Where(x => x.TrialId == add.TrialId && x.SubjectVisitId == add.SubjectVisitId && x.SubjectId == add.SubjectId && x.SiteId == add.SiteId && x.ChildrenType == add.ChildrenType && x.ObjectType == add.ObjectType&&x.VisitStageId==add.VisitStageId&& x.GeneralId == add.GeneralId).OrderByDescending(x => x.CreateTime).FirstOrDefaultAsync())?.Id;
// add.CreateUserId = _userInfo.Id;
// add.IP = _userInfo.IP;
var JsonData = JsonConvert.DeserializeObject<IDictionary<string, object>>(add.JsonDetail); // var JsonData = JsonConvert.DeserializeObject<IDictionary<string, object>>(add.JsonDetail);
foreach (var item in JsonData.Keys) // foreach (var item in JsonData.Keys)
{ // {
if (JsonData[item].ToString().ToLower() == "true".ToLower()) // if (JsonData[item].ToString().ToLower() == "true".ToLower())
{ // {
JsonData[item] = "是"; // JsonData[item] = "是";
} else if (JsonData[item].ToString().ToLower() == "false".ToLower()) // } else if (JsonData[item].ToString().ToLower() == "false".ToLower())
{ // {
JsonData[item] = "否"; // JsonData[item] = "否";
} // }
} // }
add.JsonDetail= JsonConvert.SerializeObject(JsonData); // add.JsonDetail= JsonConvert.SerializeObject(JsonData);
} //}
await _dataInspectionRepository.AddRangeAsync(datas); //await _dataInspectionRepository.AddRangeAsync(datas);
} }
@ -492,92 +495,95 @@ namespace IRaCIS.Core.Application.Service.Inspection
/// <returns></returns> /// <returns></returns>
public async Task SetInspectionNameValue(DataInspection Data) public async Task SetInspectionNameValue(DataInspection Data)
{ {
#region 项目名称
var trialdata = await _repository.GetQueryable<Trial>().FirstOrDefaultAsync(x => x.Id == Data.TrialId); await _dataInspectionRepository.SetInspectionNameValue(Data);
Data.ResearchProgramNo = trialdata?.ResearchProgramNo;
if (Data.TrialName.IsNullOrEmpty())
{
Data.TrialName = trialdata?.ExperimentName;
}
#endregion
#region 测试中心名称 //#region 项目名称
//var trialdata = await _repository.GetQueryable<Trial>().FirstOrDefaultAsync(x => x.Id == Data.TrialId);
//Data.ResearchProgramNo = trialdata?.ResearchProgramNo;
//if (Data.TrialName.IsNullOrEmpty())
//{
// Data.TrialName = trialdata?.ExperimentName;
//}
//#endregion
//#region 测试中心名称
Data.SiteCode = (await _repository.GetQueryable<TrialSite>().FirstOrDefaultAsync(x => x.TrialId == Data.TrialId && x.SiteId == Data.SiteId))?.TrialSiteCode; //Data.SiteCode = (await _repository.GetQueryable<TrialSite>().FirstOrDefaultAsync(x => x.TrialId == Data.TrialId && x.SiteId == Data.SiteId))?.TrialSiteCode;
var sitedata = await _repository.GetQueryable<Site>().FirstOrDefaultAsync(x => x.Id == Data.SiteId); //var sitedata = await _repository.GetQueryable<Site>().FirstOrDefaultAsync(x => x.Id == Data.SiteId);
if (Data.SiteName.IsNullOrEmpty()) //if (Data.SiteName.IsNullOrEmpty())
{ //{
Data.SiteName = sitedata?.SiteName; // Data.SiteName = sitedata?.SiteName;
} //}
#endregion //#endregion
#region 受试者 //#region 受试者
if (Data.SubjectCode.IsNullOrEmpty()) //if (Data.SubjectCode.IsNullOrEmpty())
{ //{
Data.SubjectCode = (await _repository.GetQueryable<Subject>().FirstOrDefaultAsync(x => x.Id == Data.SubjectId))?.Code; // Data.SubjectCode = (await _repository.GetQueryable<Subject>().FirstOrDefaultAsync(x => x.Id == Data.SubjectId))?.Code;
} //}
#endregion //#endregion
#region 访视 //#region 访视
if (Data.SubjectVisitName.IsNullOrEmpty()) //if (Data.SubjectVisitName.IsNullOrEmpty())
{ //{
Data.SubjectVisitName = (await _repository.GetQueryable<SubjectVisit>().FirstOrDefaultAsync(x => x.Id == Data.SubjectVisitId))?.VisitName; // Data.SubjectVisitName = (await _repository.GetQueryable<SubjectVisit>().FirstOrDefaultAsync(x => x.Id == Data.SubjectVisitId))?.VisitName;
} //}
#endregion //#endregion
#region 创建者 //#region 创建者
if (Data.CreateUserName.IsNullOrEmpty() || Data.RoleName.IsNullOrEmpty()) //if (Data.CreateUserName.IsNullOrEmpty() || Data.RoleName.IsNullOrEmpty())
{ //{
var userdata = await _repository.GetQueryable<User>().Where(x => x.Id == Data.CreateUserId).GroupJoin(_repository.GetQueryable<UserType>(), a => a.UserTypeId, b => b.Id, (a, b) => new // var userdata = await _repository.GetQueryable<User>().Where(x => x.Id == Data.CreateUserId).GroupJoin(_repository.GetQueryable<UserType>(), a => a.UserTypeId, b => b.Id, (a, b) => new
{ // {
UserName = a.FirstName + a.LastName, // UserName = a.FirstName + a.LastName,
Role = b // Role = b
}).SelectMany(a => a.Role, (m, n) => new // }).SelectMany(a => a.Role, (m, n) => new
{ // {
UserName = m.UserName, // UserName = m.UserName,
RoleName = n.UserTypeShortName // RoleName = n.UserTypeShortName
}).FirstOrDefaultAsync(); // }).FirstOrDefaultAsync();
if (userdata != null) // if (userdata != null)
{ // {
if (Data.CreateUserName.IsNullOrEmpty()) // if (Data.CreateUserName.IsNullOrEmpty())
{ // {
Data.CreateUserName = userdata?.UserName; // Data.CreateUserName = userdata?.UserName;
} // }
if (Data.RoleName.IsNullOrEmpty()) // if (Data.RoleName.IsNullOrEmpty())
{ // {
Data.RoleName = userdata?.RoleName; // Data.RoleName = userdata?.RoleName;
} // }
} // }
} //}
#endregion //#endregion
#region 取操作类型 //#region 取操作类型
try //try
{ //{
var from = await _frontAuditConfigRepository.FirstOrDefaultAsync(x => x.Identification == Data.Identification); // var from = await _frontAuditConfigRepository.FirstOrDefaultAsync(x => x.Identification == Data.Identification);
Data.ObjectType = from.ObjectTypeId; // Data.ObjectType = from.ObjectTypeId;
Data.OptType = from.OptTypeId; // Data.OptType = from.OptTypeId;
Data.ChildrenType = from.ChildrenTypeId; // Data.ChildrenType = from.ChildrenTypeId;
Data.ModuleType = from.ModuleTypeId; // Data.ModuleType = from.ModuleTypeId;
} //}
catch (Exception) //catch (Exception)
{ //{
throw new BusinessValidationFailedException("操作标识异常"); // throw new BusinessValidationFailedException("操作标识异常");
} //}
#endregion //#endregion
} }

View File

@ -100,19 +100,22 @@ namespace IRaCIS.Application.Services
if (isadd) if (isadd)
{ {
List<DataInspection> datas = new List<DataInspection>(); List<DataInspection> datas = new List<DataInspection>();
datas.Add(new DataInspection()
{ // 移到仓储了
TrialId = subjectCommand.TrialId,
SiteId = subjectCommand.SiteId, //datas.Add(new DataInspection()
SubjectId = mapedSubject.Id, //{
SubjectCode = subjectCommand.Code, // TrialId = subjectCommand.TrialId,
IsSign=false, // SiteId = subjectCommand.SiteId,
CreateTime = createtime, // SubjectId = mapedSubject.Id,
Identification = "Init|Subject|Status|Subject", // SubjectCode = subjectCommand.Code,
JsonDetail= JsonConvert.SerializeObject(new { // IsSign=false,
Status= "新增", // CreateTime = createtime,
}) // Identification = "Init|Subject|Status|Subject",
}); // JsonDetail= JsonConvert.SerializeObject(new {
// Status= "新增",
// })
//});
var visittime = createtime.AddSeconds(1); var visittime = createtime.AddSeconds(1);
foreach (var item in mapedSubject.SubjectVisitList) foreach (var item in mapedSubject.SubjectVisitList)

View File

@ -138,7 +138,7 @@ namespace IRaCIS.Core.Infra.EFCore
#region Subject and Visit and study #region Subject and Visit and study
public virtual DbSet<StudyMonitor> StudyMonitor { get; set; } public virtual DbSet<StudyMonitor> StudyMonitor { get; set; }
public virtual DbSet<Subject> Subjects { get; set; } public virtual DbSet<Subject> Subject { get; set; }
public virtual DbSet<VisitStage> VisitPlans { get; set; } public virtual DbSet<VisitStage> VisitPlans { get; set; }
public virtual DbSet<VisitPlanInfluenceStudy> VisitPlanInfluenceStudy { get; set; } public virtual DbSet<VisitPlanInfluenceStudy> VisitPlanInfluenceStudy { get; set; }
@ -197,6 +197,8 @@ namespace IRaCIS.Core.Infra.EFCore
public virtual DbSet<TrialSiteUser> UserTrialSite { get; set; } public virtual DbSet<TrialSiteUser> UserTrialSite { get; set; }
public virtual DbSet<TrialSite> TrialSite { get; set; } public virtual DbSet<TrialSite> TrialSite { get; set; }
public virtual DbSet<Site> Site { get; set; }
public virtual DbSet<TrialSiteUserSurvey> TrialSiteUserSurvey { get; set; } public virtual DbSet<TrialSiteUserSurvey> TrialSiteUserSurvey { get; set; }
public virtual DbSet<TrialSiteEquipmentSurvey> TrialSiteEquipmentSurvey { get; set; } public virtual DbSet<TrialSiteEquipmentSurvey> TrialSiteEquipmentSurvey { get; set; }
public virtual DbSet<TrialSiteSurvey> TrialSiteSurvey { get; set; } public virtual DbSet<TrialSiteSurvey> TrialSiteSurvey { get; set; }

View File

@ -18,7 +18,19 @@ namespace IRaCIS.Core.Infra.EFCore
{ {
public interface IRepository<TEntity> : ICommandRepository<TEntity>, IQueryRepository<TEntity> where TEntity : Entity public interface IRepository<TEntity> : ICommandRepository<TEntity>, IQueryRepository<TEntity> where TEntity : Entity
{ {
/// <summary>
/// 获取中心啥的名称
/// </summary>
/// <param name="Data"></param>
/// <returns></returns>
Task SetInspectionNameValue(DataInspection Data);
/// <summary>
/// 添加稽查记录
/// </summary>
/// <param name="datas"></param>
/// <returns></returns>
Task AddListInspectionRecordAsync(List<DataInspection> datas);
} }
@ -418,7 +430,7 @@ namespace IRaCIS.Core.Infra.EFCore
{ {
bindings.Add(Expression.Bind(typeof(T).GetMember(nameof(IAuditUpdate.UpdateTime))[0], Expression.Constant(DateTime.Now))); bindings.Add(Expression.Bind(typeof(T).GetMember(nameof(IAuditUpdate.UpdateTime))[0], Expression.Constant(DateTime.Now)));
bindings.Add(Expression.Bind(typeof(TR).GetMember(nameof(IAuditUpdate.UpdateUserId))[0], Expression.Constant(_userInfo.Id))); bindings.Add(Expression.Bind(typeof(T).GetMember(nameof(IAuditUpdate.UpdateUserId))[0], Expression.Constant(_userInfo.Id)));
} }

View File

@ -16,12 +16,14 @@ using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Infrastructure;
using IRaCIS.Core.Infrastructure.Extention; using IRaCIS.Core.Infrastructure.Extention;
using Microsoft.Data.SqlClient; using Microsoft.Data.SqlClient;
using Newtonsoft.Json;
namespace IRaCIS.Core.Infra.EFCore namespace IRaCIS.Core.Infra.EFCore
{ {
public class Repository<TEntity> : IRepository<TEntity> public class Repository<TEntity> : IRepository<TEntity>
where TEntity : Entity, new() where TEntity : Entity, new()
{ {
public IMapper _mapper { get; set; } public IMapper _mapper { get; set; }
public IRaCISDBContext _dbContext { get; set; } public IRaCISDBContext _dbContext { get; set; }
@ -34,6 +36,7 @@ namespace IRaCIS.Core.Infra.EFCore
_dbContext = dbContext; _dbContext = dbContext;
_mapper = mapper; _mapper = mapper;
_userInfo = userInfo; _userInfo = userInfo;
} }
#region 异步部分 #region 异步部分
@ -142,6 +145,7 @@ namespace IRaCIS.Core.Infra.EFCore
public async Task<TEntity> InsertFromDTOAsync<TFrom>(TFrom from, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify) public async Task<TEntity> InsertFromDTOAsync<TFrom>(TFrom from, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify)
{ {
List<DataInspection> datas = new List<DataInspection>();
var entity = _mapper.Map<TEntity>(from); var entity = _mapper.Map<TEntity>(from);
await EntityVerifyAsync(true, verify); await EntityVerifyAsync(true, verify);
@ -150,11 +154,201 @@ namespace IRaCIS.Core.Infra.EFCore
await SaveChangesAsync(autoSave); await SaveChangesAsync(autoSave);
// 这里用不了 switch
//switch (typeof(TEntity))
//{
// case typeof(Dictionary):
// break;
//}
var createtime = DateTime.Now.AddSeconds(1);
// 受试者
if (typeof(TEntity) == typeof(Subject))
{
Subject data = entity as Subject;
datas.Add(new DataInspection()
{
TrialId = data.TrialId,
SiteId = data.SiteId,
SubjectId = data.Id,
SubjectCode = data.Code,
IsSign = false,
CreateTime = createtime,
Identification = "Init|Subject|Status|Subject",
JsonDetail = JsonConvert.SerializeObject(new
{
Status = "新增",
})
});
}
await AddListInspectionRecordAsync(datas);
return entity; return entity;
} }
#region 稽查
/// <summary>
/// 添加稽查记录
/// </summary>
/// <param name="datas"></param>
/// <returns></returns>
public async Task AddListInspectionRecordAsync(List<DataInspection> datas)
{
//var trialIds= datas.Select(x=>x.TrialId).Distinct().ToList();
//var subjectVisitIds= datas.Select(x=>x.SubjectVisitId).Distinct().ToList();
//var subjectIds = datas.Select(x => x.SubjectId).Distinct().ToList();
//var siteIds = datas.Select(x => x.SiteId).Distinct().ToList();
//var childrenTypes= datas.Select(x => x.ChildrenType).Distinct().ToList();
//var objectTypes = datas.Select(x => x.ObjectType).Distinct().ToList();
foreach (var add in datas)
{
await SetInspectionNameValue(add);
add.ParentId = (await _dbContext.DataInspection.AsQueryable().Where(x => x.TrialId == add.TrialId && x.SubjectVisitId == add.SubjectVisitId && x.SubjectId == add.SubjectId && x.SiteId == add.SiteId && x.ChildrenType == add.ChildrenType && x.ObjectType == add.ObjectType && x.VisitStageId == add.VisitStageId && x.GeneralId == add.GeneralId).OrderByDescending(x => x.CreateTime).FirstOrDefaultAsync())?.Id;
add.CreateUserId = _userInfo.Id;
add.IP = _userInfo.IP;
var JsonData = JsonConvert.DeserializeObject<IDictionary<string, object>>(add.JsonDetail);
foreach (var item in JsonData.Keys)
{
if (JsonData[item].ToString().ToLower() == "true".ToLower())
{
JsonData[item] = "是";
}
else if (JsonData[item].ToString().ToLower() == "false".ToLower())
{
JsonData[item] = "否";
}
}
if (add.CreateTime == default(DateTime))
{
add.CreateTime = DateTime.Now;
}
add.JsonDetail = JsonConvert.SerializeObject(JsonData);
}
await _dbContext.DataInspection.AddRangeAsync(datas);
await _dbContext.SaveChangesAsync();
}
/// <summary>
/// IsNullOrEmpty
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
private bool IsNullOrEmpty(object value)
{
if (value.ToString() == null || value.ToString() == string.Empty)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// 设置项目以及名称
/// </summary>
/// <param name="Data"></param>
/// <returns></returns>
public async Task SetInspectionNameValue(DataInspection Data)
{
#region 项目名称
var trialdata = await _dbContext.Trial.FirstOrDefaultAsync(x => x.Id == Data.TrialId);
Data.ResearchProgramNo = trialdata?.ResearchProgramNo;
if (IsNullOrEmpty(Data.TrialName))
{
Data.TrialName = trialdata?.ExperimentName;
}
#endregion
#region 测试中心名称
Data.SiteCode = (await _dbContext.TrialSite.FirstOrDefaultAsync(x => x.TrialId == Data.TrialId && x.SiteId == Data.SiteId))?.TrialSiteCode;
var sitedata = await _dbContext.Site.FirstOrDefaultAsync(x => x.Id == Data.SiteId);
if (IsNullOrEmpty(Data.SiteName))
{
Data.SiteName = sitedata?.SiteName;
}
#endregion
#region 受试者
if (IsNullOrEmpty(Data.SubjectCode))
{
Data.SubjectCode = (await _dbContext.Subject.FirstOrDefaultAsync(x => x.Id == Data.SubjectId))?.Code;
}
#endregion
#region 访视
if (IsNullOrEmpty(Data.SubjectVisitName))
{
Data.SubjectVisitName = (await _dbContext.SubjectVisit.FirstOrDefaultAsync(x => x.Id == Data.SubjectVisitId))?.VisitName;
}
#endregion
#region 创建者
if (IsNullOrEmpty(Data.CreateUserName) || IsNullOrEmpty(Data.RoleName))
{
var userdata = await _dbContext.Users.AsQueryable().Where(x => x.Id == Data.CreateUserId).GroupJoin(_dbContext.UserType.AsQueryable(), a => a.UserTypeId, b => b.Id, (a, b) => new
{
UserName = a.FirstName + a.LastName,
Role = b
}).SelectMany(a => a.Role, (m, n) => new
{
UserName = m.UserName,
RoleName = n.UserTypeShortName
}).FirstOrDefaultAsync();
if (userdata != null)
{
if (IsNullOrEmpty(Data.CreateUserName))
{
Data.CreateUserName = userdata?.UserName;
}
if (IsNullOrEmpty(Data.RoleName))
{
Data.RoleName = userdata?.RoleName;
}
}
}
#endregion
#region 取操作类型
try
{
var from = await _dbContext.FrontAuditConfig.FirstOrDefaultAsync(x => x.Identification == Data.Identification);
Data.ObjectType = from.ObjectTypeId;
Data.OptType = from.OptTypeId;
Data.ChildrenType = from.ChildrenTypeId;
Data.ModuleType = from.ModuleTypeId;
}
catch (Exception)
{
throw new BusinessValidationFailedException("操作标识异常");
}
#endregion
}
#endregion
/// <summary> /// <summary>
/// 用前端传递的视图模型字段,更新,同时返回数据库该条记录的原始信息,方便对比某些字段是否更改,进行相应的逻辑操作 /// 用前端传递的视图模型字段,更新,同时返回数据库该条记录的原始信息,方便对比某些字段是否更改,进行相应的逻辑操作