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 objectTypes = datas.Select(x => x.ObjectType).Distinct().ToList();
foreach (var add in 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;
add.CreateUserId = _userInfo.Id;
add.IP = _userInfo.IP;
await _dataInspectionRepository.AddListInspectionRecordAsync(datas);
//foreach (var add in 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;
// 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)
{
if (JsonData[item].ToString().ToLower() == "true".ToLower())
{
JsonData[item] = "是";
} else if (JsonData[item].ToString().ToLower() == "false".ToLower())
{
JsonData[item] = "否";
}
// 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] = "否";
// }
}
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>
public async Task SetInspectionNameValue(DataInspection Data)
{
#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
await _dataInspectionRepository.SetInspectionNameValue(Data);
#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())
{
Data.SiteName = sitedata?.SiteName;
}
#endregion
//if (Data.SiteName.IsNullOrEmpty())
//{
// Data.SiteName = sitedata?.SiteName;
//}
//#endregion
#region 受试者
//#region 受试者
if (Data.SubjectCode.IsNullOrEmpty())
{
//if (Data.SubjectCode.IsNullOrEmpty())
//{
Data.SubjectCode = (await _repository.GetQueryable<Subject>().FirstOrDefaultAsync(x => x.Id == Data.SubjectId))?.Code;
}
#endregion
// Data.SubjectCode = (await _repository.GetQueryable<Subject>().FirstOrDefaultAsync(x => x.Id == Data.SubjectId))?.Code;
//}
//#endregion
#region 访视
if (Data.SubjectVisitName.IsNullOrEmpty())
{
Data.SubjectVisitName = (await _repository.GetQueryable<SubjectVisit>().FirstOrDefaultAsync(x => x.Id == Data.SubjectVisitId))?.VisitName;
}
#endregion
//#region 访视
//if (Data.SubjectVisitName.IsNullOrEmpty())
//{
// Data.SubjectVisitName = (await _repository.GetQueryable<SubjectVisit>().FirstOrDefaultAsync(x => x.Id == Data.SubjectVisitId))?.VisitName;
//}
//#endregion
#region 创建者
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
{
UserName = a.FirstName + a.LastName,
Role = b
}).SelectMany(a => a.Role, (m, n) => new
{
UserName = m.UserName,
RoleName = n.UserTypeShortName
}).FirstOrDefaultAsync();
//#region 创建者
//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
// {
// 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 (Data.CreateUserName.IsNullOrEmpty())
{
Data.CreateUserName = userdata?.UserName;
}
// if (userdata != null)
// {
// if (Data.CreateUserName.IsNullOrEmpty())
// {
// Data.CreateUserName = userdata?.UserName;
// }
if (Data.RoleName.IsNullOrEmpty())
{
Data.RoleName = userdata?.RoleName;
}
}
}
#endregion
// if (Data.RoleName.IsNullOrEmpty())
// {
// Data.RoleName = userdata?.RoleName;
// }
// }
//}
//#endregion
#region 取操作类型
try
{
var from = await _frontAuditConfigRepository.FirstOrDefaultAsync(x => x.Identification == Data.Identification);
Data.ObjectType = from.ObjectTypeId;
Data.OptType = from.OptTypeId;
Data.ChildrenType = from.ChildrenTypeId;
Data.ModuleType = from.ModuleTypeId;
}
catch (Exception)
{
//#region 取操作类型
//try
//{
// var from = await _frontAuditConfigRepository.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("操作标识异常");
}
// throw new BusinessValidationFailedException("操作标识异常");
//}
#endregion
//#endregion
}

View File

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

View File

@ -138,7 +138,7 @@ namespace IRaCIS.Core.Infra.EFCore
#region Subject and Visit and study
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<VisitPlanInfluenceStudy> VisitPlanInfluenceStudy { get; set; }
@ -197,6 +197,8 @@ namespace IRaCIS.Core.Infra.EFCore
public virtual DbSet<TrialSiteUser> UserTrialSite { 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<TrialSiteEquipmentSurvey> TrialSiteEquipmentSurvey { 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
{
/// <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(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.Extention;
using Microsoft.Data.SqlClient;
using Newtonsoft.Json;
namespace IRaCIS.Core.Infra.EFCore
{
public class Repository<TEntity> : IRepository<TEntity>
where TEntity : Entity, new()
{
public IMapper _mapper { get; set; }
public IRaCISDBContext _dbContext { get; set; }
@ -34,6 +36,7 @@ namespace IRaCIS.Core.Infra.EFCore
_dbContext = dbContext;
_mapper = mapper;
_userInfo = userInfo;
}
#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)
{
List<DataInspection> datas = new List<DataInspection>();
var entity = _mapper.Map<TEntity>(from);
await EntityVerifyAsync(true, verify);
@ -150,11 +154,201 @@ namespace IRaCIS.Core.Infra.EFCore
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;
}
#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>
/// 用前端传递的视图模型字段,更新,同时返回数据库该条记录的原始信息,方便对比某些字段是否更改,进行相应的逻辑操作