查询修改
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
e409aa3c05
commit
70c7f8a740
|
@ -176,7 +176,7 @@ namespace IRaCIS.Application.Contracts
|
|||
|
||||
public string? Code { get; set; }
|
||||
|
||||
public int? OptUserType { get; set; }
|
||||
public UserTypeEnum? UserTypeEnum { get; set; }
|
||||
|
||||
public string? OptUserName { get; set; }
|
||||
}
|
||||
|
@ -243,7 +243,7 @@ namespace IRaCIS.Application.Contracts
|
|||
public int DoctorTrialState { get; set; }
|
||||
public string OptUserName { get; set; } = string.Empty;
|
||||
|
||||
public int? OptUserType { get; set; }
|
||||
public UserTypeEnum? UserTypeEnum { get; set; }
|
||||
public DateTime? OptTime { get; set; }
|
||||
public string? OptTimeStr => OptTime?.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
|
@ -279,6 +279,8 @@ namespace IRaCIS.Application.Contracts
|
|||
|
||||
public int OptUserType { get; set; }
|
||||
|
||||
public UserTypeEnum UserTypeEnum { get; set; }
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -243,30 +243,106 @@ namespace IRaCIS.Core.Application.Service
|
|||
{
|
||||
|
||||
|
||||
var doctorQuery = _enrollRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus >= EnrollStatus.InviteIntoGroup)
|
||||
.ProjectTo<ConfirmationReviewerDTO>(_mapper.ConfigurationProvider)
|
||||
#region 连表查询
|
||||
//var query = from enroll in _enrollRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus >= EnrollStatus.InviteIntoGroup)
|
||||
// join enrollDetail in _enrollDetailRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus >= EnrollStatus.InviteIntoGroup) on new { enroll.DoctorId, enroll.EnrollStatus } equals new { enrollDetail.DoctorId, enrollDetail.EnrollStatus } into enrollDetailtemp
|
||||
// from leftenrollDetail in enrollDetailtemp.DefaultIfEmpty()
|
||||
// select new ConfirmationReviewerDTO()
|
||||
// {
|
||||
// DoctorTrialState = (int)leftenrollDetail.EnrollStatus,
|
||||
// OptTime = leftenrollDetail.CreateTime,
|
||||
// UserTypeEnum = leftenrollDetail.CreateUserRole.UserTypeEnum,
|
||||
// OptUserName = leftenrollDetail.CreateUserRole.UserName,
|
||||
// SubmmitTime = leftenrollDetail.CreateTime,
|
||||
// SubmmitUserName = leftenrollDetail.CreateUserRole.UserName,
|
||||
// //BlindName= enroll.BlindName,
|
||||
// //BlindNameCN= enroll.BlindNameCN,
|
||||
// SpecialityId = enroll.Doctor.SpecialityId,
|
||||
// SpecialityCN = enroll.Doctor.Speciality.ValueCN,
|
||||
// Speciality = enroll.Doctor.Speciality.Value,
|
||||
// //SpecialityOther=enroll.Doctor.Speciality.SpecialityOther,
|
||||
// //SpecialityOtherCN= enroll.Doctor.Speciality.SpecialityOtherCN,
|
||||
// DictionaryList = enroll.Doctor.DoctorDicRelationList.Where(t => t.KeyName == StaticData.ReadingType || t.KeyName == StaticData.Subspeciality).Select(t => t.Dictionary).OrderBy(t => t.ShowOrder).Select(x => new DicView()
|
||||
// {
|
||||
// Id = x.Id,
|
||||
// ParentCode = x.Parent.Code,
|
||||
// ShowOrder = x.ShowOrder,
|
||||
// Value = x.Value,
|
||||
// ValueCN = x.ValueCN
|
||||
// }).ToList(),
|
||||
|
||||
// //HospitalId= enroll.BlindName
|
||||
|
||||
// Id = enroll.Doctor.Id,
|
||||
// Code = enroll.DoctorUser.UserName,
|
||||
// //FirstName=enroll.FirstName,
|
||||
// //LastName = enroll.LastName,
|
||||
// //ChineseName = enroll.ChineseName,
|
||||
// //City = enroll.City,
|
||||
// //HospitalName = enroll.HospitalName,
|
||||
// //Country = enroll.Country,
|
||||
// };
|
||||
|
||||
|
||||
//var result = await query
|
||||
// .WhereIf(inQuery.OptStartTime != null, x => x.OptTime >= inQuery.OptStartTime)
|
||||
// .WhereIf(inQuery.OptEndTime != null, x => x.OptTime <= inQuery.OptEndTime)
|
||||
// .WhereIf(inQuery.UserTypeEnum != null, x => x.UserTypeEnum == inQuery.UserTypeEnum)
|
||||
// .WhereIf(inQuery.Code.IsNotNullOrEmpty(), x => x.Code.Contains(inQuery.Code))
|
||||
|
||||
// .WhereIf(inQuery.OptUserName.IsNotNullOrEmpty(), x => x.OptUserName.Contains(inQuery.OptUserName))
|
||||
// .ToPagedListAsync(inQuery);
|
||||
#endregion
|
||||
|
||||
|
||||
#region 查询第一个
|
||||
|
||||
// 这里这样写的原因是因为 要取最新的入组详情 然后还要根据时间筛选 入组信息
|
||||
var query = _enrollDetailRepository
|
||||
.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus >= EnrollStatus.InviteIntoGroup);
|
||||
var enrollStateList = await query
|
||||
.ProjectTo<DoctorStateModelDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
enrollStateList = enrollStateList.GroupBy(e => e.DoctorId)
|
||||
.Select(g => g.OrderByDescending(e => e.OptTime).FirstOrDefault()).ToList();
|
||||
|
||||
enrollStateList = enrollStateList
|
||||
.WhereIf(inQuery.OptStartTime != null, x => x.OptTime >= inQuery.OptStartTime)
|
||||
.WhereIf(inQuery.OptEndTime != null, x => x.OptTime <= inQuery.OptEndTime)
|
||||
.WhereIf(inQuery.Code.IsNotNullOrEmpty(), x => x.Code.Contains(inQuery.Code))
|
||||
.WhereIf(inQuery.OptUserType!=null, x => x.OptUserType==inQuery.OptUserType)
|
||||
.WhereIf(inQuery.OptUserName.IsNotNullOrEmpty(), x => x.OptUserName.Contains(inQuery.OptUserName));
|
||||
.WhereIf(inQuery.OptEndTime != null, x => x.OptTime <= inQuery.OptEndTime)
|
||||
.WhereIf(inQuery.UserTypeEnum != null, x => x.UserTypeEnum == inQuery.UserTypeEnum)
|
||||
.ToList();
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var doctorids = enrollStateList.Select(x => x.DoctorId).ToList();
|
||||
|
||||
|
||||
var doctorQuery = _enrollRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus >= EnrollStatus.InviteIntoGroup)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.WhereIf(inQuery.OptStartTime != null || inQuery.OptEndTime != null || inQuery.UserTypeEnum != null, x => doctorids.Contains(x.DoctorId))
|
||||
.ProjectTo<ConfirmationReviewerDTO>(_mapper.ConfigurationProvider)
|
||||
.WhereIf(inQuery.Code.IsNotNullOrEmpty(), x => x.Code.Contains(inQuery.Code))
|
||||
|
||||
.WhereIf(inQuery.OptUserName.IsNotNullOrEmpty(), x => x.OptUserName.Contains(inQuery.OptUserName));
|
||||
|
||||
var doctorPageList = await doctorQuery.ToPagedListAsync(inQuery);
|
||||
|
||||
var enrollStateList = await _enrollDetailRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus >= EnrollStatus.InviteIntoGroup)
|
||||
.ProjectTo<DoctorStateModelDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
|
||||
|
||||
doctorPageList.CurrentPageData.ToList().ForEach(u =>
|
||||
{
|
||||
u.DoctorTrialState = (int)EnrollStatus.InviteIntoGroup;
|
||||
var opt = enrollStateList.FirstOrDefault(t => t.DoctorId == u.Id);
|
||||
var opt = enrollStateList.OrderByDescending(x=>x.OptTime).FirstOrDefault(t => t.DoctorId == u.Id);
|
||||
if (opt != null)
|
||||
{
|
||||
u.DoctorTrialState = opt.IntoGroupState;
|
||||
u.OptTime = opt.OptTime;
|
||||
u.OptUserType=opt.OptUserType;
|
||||
u.UserTypeEnum = opt.UserTypeEnum;
|
||||
u.OptUserName = opt.OptUserName;
|
||||
}
|
||||
});
|
||||
|
|
|
@ -178,6 +178,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
CreateMap<Hospital, EmploymentDTO>();
|
||||
|
||||
CreateMap<EnrollDetail, DoctorStateModelDTO>()
|
||||
.ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUserRole.UserTypeEnum))
|
||||
.ForMember(d => d.IntoGroupState, u => u.MapFrom(s => s.EnrollStatus))
|
||||
.ForMember(d => d.OptTime, u => u.MapFrom(s => s.CreateTime))
|
||||
.ForMember(d => d.OptUserName, u => u.MapFrom(s => s.CreateUserRole.IdentityUser.UserName));
|
||||
|
|
|
@ -6,6 +6,9 @@ namespace IRaCIS.Core.Domain.Models;
|
|||
[Table("EnrollDetail")]
|
||||
public partial class EnrollDetail : BaseAddAuditEntity
|
||||
{
|
||||
|
||||
|
||||
|
||||
#region 导航属性
|
||||
[JsonIgnore]
|
||||
public virtual TrialStatusDetail TrialDetail { get; set; }
|
||||
|
|
Loading…
Reference in New Issue