添加项目文件。

This commit is contained in:
DK
2022-03-28 09:57:06 +08:00
parent 3338504c58
commit 9e9868bc4c
527 changed files with 38592 additions and 0 deletions
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,271 @@
using AutoMapper;
using IRaCIS.Application.ExpressionExtend;
using IRaCIS.Application.Interfaces;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
using IRaCIS.Core.Domain.Interfaces;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Infra.Data.ExpressionExtend;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using EasyCaching.Core.Configurations;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Domain.Share.AuthUser;
namespace IRaCIS.Application.Services
{
public class SubjectService : ISubjectService
{
private readonly ISubjectRepository _subjectsRepository;
private readonly IVisitStageRepository _visitStageRepository;
private readonly ISiteRepository _siteRepository;
private readonly IMapper _mapper;
private readonly ISubjectVisitRepository _subjectVisitRepository;
private readonly IDicomStudyRepository _studyRepository;
private readonly IUserInfo _userInfo;
private readonly IUserRepository _userRepository;
private readonly IUserTrialRepository _userTrialRepository;
private readonly ITrialRepository _trialRepository;
public SubjectService(ISubjectRepository subjectRepository,
IVisitStageRepository visitStageRepository,
ISiteRepository siteRepository, IMapper mapper,
ISubjectVisitRepository subjectVisitRepository, IDicomStudyRepository studyRepository,
IUserInfo userInfo, IUserRepository userRepository, IUserTrialRepository userTrialRepository,ITrialRepository trialRepository)
{
_subjectsRepository = subjectRepository;
_visitStageRepository = visitStageRepository;
_siteRepository = siteRepository;
_mapper = mapper;
_subjectVisitRepository = subjectVisitRepository;
_studyRepository = studyRepository;
_userInfo = userInfo;
_userRepository = userRepository;
_userTrialRepository = userTrialRepository;
_trialRepository = trialRepository;
}
public IResponseOutput AddOrUpdateSubject(SubjectCommand model)
{
model.Code = model.Code.Trim();
if (model.Id == Guid.Empty || model.Id == null) //add
{
var saveItem = _mapper.Map<Subject>(model);
saveItem.StudyCount = 0;
saveItem.SubjectVisitId = Guid.Empty;
saveItem.Modalities = string.Empty;
//var last = _subjectsRepository.GetAll()
// .OrderByDescending(c => c.Code).FirstOrDefault();
//if (last != null)
//{
// var len = last.Code.Length;
// if (len > 9 && int.TryParse(last.Code.Substring(len - 9, 9), out var num))
// {
// saveItem.Code = "S" + (++num).ToString().PadLeft(9, '0');
// }
// else
// {
// return ResponseOutput.NotOk("Generated Code failed.", new DicomStudy());
// }
//}
//else
//{
// saveItem.Code = "S" + 1.ToString().PadLeft(9, '0');
//}
var subject = _subjectsRepository.GetAll().FirstOrDefault(u => u.Code == model.Code && u.TrialId == model.TrialId);
if (subject != null)
{
return ResponseOutput.NotOk("该项目下已经存在相同受试者编码的受试者。");
}
if (!_trialRepository.GetAll().Any(t => t.Id == model.TrialId && t.VisitPlanConfirmed))
{
return ResponseOutput.NotOk("该项目访视计划未确认,无法添加受试者及其访视计划安排");
}
var result = _subjectsRepository.Add(saveItem);
//获取访视计划列表
var visitPlan= _visitStageRepository.GetAll().Where(t => t.TrialId == model.TrialId).ToList();
var subjectVisitPlanList=new List<SubjectVisit>();
visitPlan.ForEach(plan=>subjectVisitPlanList.Add(new SubjectVisit()
{
TrialId = model.TrialId,
SubjectId = result.Id,
SiteId = model.SiteId,
InPlan =true,
VisitNum=plan.VisitNum,
VisitName= plan.VisitName,
VisitDay = plan.VisitDay
}));
_subjectVisitRepository.AddRange(subjectVisitPlanList);
var isSuccess = _subjectsRepository.SaveChanges();
return ResponseOutput.Result(isSuccess, result.Id.ToString());
}
else // update
{
var subject = _subjectsRepository.GetAll().FirstOrDefault(t => t.Id == model.Id);
_mapper.Map(model, subject);
var temp = _subjectsRepository.GetAll().FirstOrDefault(u => u.Code == model.Code
&& u.TrialId == model.TrialId && u.Id != model.Id);
if (temp != null)
{
return ResponseOutput.NotOk("该项目下已经存在相同受试者编码的受试者。");
}
_subjectsRepository.Update(subject);
var isSuccess = _subjectsRepository.SaveChanges();
return ResponseOutput.Result(isSuccess);
}
}
public IResponseOutput DeleteSubject(Guid id)
{
if (_studyRepository.GetAll().Any(t => t.SubjectId == id) ||
_subjectVisitRepository.GetAll().Any(u => u.SubjectId == id))
{
return ResponseOutput.NotOk("Subjects visit or study data exists under the subject");
}
var isSuccess = _subjectsRepository.Delete(u => u.Id == id);
return ResponseOutput.Result(isSuccess);
}
public PageOutput<SubjectQueryModel> GetSubjectList(SubjectQueryParam param)
{
Expression<Func<Subject, bool>> subjectLambda = x => true;
Expression<Func<DicomStudy, bool>> studyLambda = x => x.TrialId == param.TrialId&& x.Status != (int)StudyStatus.Abandon;
Expression<Func<SubjectVisit, bool>> subjectVisitLambda = x => x.TrialId == param.TrialId;
if (!string.IsNullOrWhiteSpace(param.Code))
{
subjectLambda = subjectLambda.And(t => t.Code.Contains(param.Code.Trim()));
}
if (!string.IsNullOrWhiteSpace(param.Name))
{
subjectLambda = subjectLambda.And(t => t.Name.Contains(param.Name.Trim()));
}
if (!string.IsNullOrWhiteSpace(param.Sex))
{
subjectLambda = subjectLambda.And(t => t.Sex==param.Sex.Trim());
}
if (param.Status != null)
{
subjectLambda = subjectLambda.And(t => t.Status == param.Status);
}
if (param.SiteId != null)
{
subjectLambda = subjectLambda.And(t => t.SiteId == param.SiteId);
studyLambda = studyLambda.And(t => t.SiteId == param.SiteId);
}
else
{
//是CRC 需要过滤
var userId = _userInfo.Id;
var exist = _userRepository.GetAll()
.Any(t => t.Id == userId && t.UserType.Contains(StaticData.CRC));
if (exist)
{
var siteIds = _userTrialRepository.GetAll().Where(t => t.SiteId != Guid.Empty && t.UserId == userId && t.TrialId== param.TrialId)
.Select(u => u.SiteId);
subjectLambda = subjectLambda.And(t => siteIds.Contains(t.SiteId));
studyLambda = studyLambda.And(t => siteIds.Contains(t.SiteId));
}
}
var query = from subject in _subjectsRepository.Find(u => u.TrialId == param.TrialId).Where(subjectLambda)
join subjectVisit in _subjectVisitRepository.Find(u => u.TrialId == param.TrialId)
on subject.SubjectVisitId equals subjectVisit.Id into h
from subjectVisit in h.DefaultIfEmpty()
join site in _siteRepository.GetAll()
on subject.SiteId equals site.Id
join studyStat in _studyRepository.GetAll().Where(studyLambda)
.GroupBy(u => u.SubjectId).Select(g => new { SubjectId = g.Key, StudyCount = g.Count() })
on subject.Id equals studyStat.SubjectId into cc
from studyStatItem in cc.DefaultIfEmpty()
join visitStat in _subjectVisitRepository.Find(subjectVisitLambda).GroupBy(u => u.SubjectId).Select(g => new { SubjectId = g.Key, VisitCount = g.Count() }) on subject.Id equals visitStat.SubjectId into dd
from visitStatItem in dd.DefaultIfEmpty()
join subjectVisitStat2 in _subjectVisitRepository.Find(t => t.TrialId == param.TrialId && t.StudyUploaded ).GroupBy(t => t.SubjectId).Select(g => new { SubjectId = g.Key, VisitCount = g.Count() }) on subject.Id equals subjectVisitStat2.SubjectId into SSV2
from subjectVisitStatItem2 in SSV2.DefaultIfEmpty()
select new SubjectQueryModel()
{
Id = subject.Id,
TrialId = subject.TrialId,
Name = subject.Name,
Code = subject.Code,
SubjectVisitId = subject.SubjectVisitId,
Sex = subject.Sex,
Age = subject.Age,
MedicalNo = subject.MedicalNo,
Modalities = subject.Modalities,
SiteId = subject.SiteId,
SiteName = site.SiteName,
Status = subject.Status,
UpdateTime = subject.UpdateTime,
CreateTime = subject.CreateTime,
Reason = subject.Reason,
StudyCount = studyStatItem.StudyCount,
PlanVisitCount = visitStatItem.VisitCount,
VisitCount = subjectVisitStatItem2.VisitCount,
VisitName = subjectVisit.VisitName,
};
var count = query.Count();
var propName = param.SortField == string.Empty ? "Code" : param.SortField;
query = param.Asc
? query.OrderBy(propName).ThenBy(t => t.SiteName).ThenBy(t => t.Code)
: query.OrderByDescending(propName).ThenBy(t => t.SiteName).ThenBy(t => t.Code);
query = query.Skip((param.PageIndex - 1) * param.PageSize).Take(param.PageSize);
var list = query.ToList();
return new PageOutput<SubjectQueryModel>(param.PageIndex,
param.PageSize, count, list);
}
public List<SubjectSelect> GetSubjectListBySiteId(Guid siteId, Guid trialId)
{
var query = _subjectsRepository.GetAll().Where(t => t.SiteId == siteId && t.TrialId == trialId).Select(u => new SubjectSelect()
{
Code = u.Code,
Name = u.Name,
Sex = u.Sex,
SubjectId = u.Id,
Age = u.Age
});
return query.ToList();
}
}
}
@@ -0,0 +1,419 @@
using AutoMapper;
using IRaCIS.Application.ExpressionExtend;
using IRaCIS.Application.ViewModels;
using IRaCIS.Core.Application.Contracts.RequestAndResponse;
using IRaCIS.Core.Application.Contracts.Trial;
using IRaCIS.Core.Domain.Interfaces;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Infra.Data.ExpressionExtend;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using IRaCIS.Core.Domain.Share.AuthUser;
using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Core.Application.Trial
{
public class SubjectVisitService : ISubjectVisitService
{
private readonly ISubjectVisitRepository _subjectVisitRepository;
private readonly IDicomStudyRepository _studyRepository;
private readonly IVisitStageRepository _visitStageRepository;
private readonly ISubjectRepository _subjectRepository;
private readonly IUserInfo _userInfo;
private readonly IUserRepository _userRepository;
private readonly IUserTrialRepository _userTrialRepository;
private readonly ISiteRepository _siteRepository;
private readonly IMapper _mapper;
public SubjectVisitService(ISubjectVisitRepository visitPointRepository,
IDicomStudyRepository studyRepository,
IVisitStageRepository visitStageRepository,
ISubjectRepository subjectRepository,
IUserInfo userInfo,
IUserRepository userRepository,
IUserTrialRepository userTrialRepository,
ISiteRepository siteRepository,
IMapper mapper)
{
_subjectVisitRepository = visitPointRepository;
_studyRepository = studyRepository;
_visitStageRepository = visitStageRepository;
_subjectRepository = subjectRepository;
_userInfo = userInfo;
_userRepository = userRepository;
_userTrialRepository = userTrialRepository;
_siteRepository = siteRepository;
_mapper = mapper;
}
public List<SubjectVisitSelectDTO> GetSubjectVisitSelectList(Guid trialId, Guid siteId, Guid subjectId)
{
var subjectVisitQuery = from subjectVisit in _subjectVisitRepository.GetAll()
.Where(t => t.TrialId == trialId && t.SubjectId == subjectId)
select new SubjectVisitSelectDTO
{
SubjectVisitId = subjectVisit.Id,
VisitName = subjectVisit.VisitName,
VisitNum = subjectVisit.VisitNum,
SVUPDES = subjectVisit.SVUPDES,
SVSTDTC = subjectVisit.SVSTDTC,
SVENDTC = subjectVisit.SVENDTC,
StudyUploaded = subjectVisit.StudyUploaded
};
var subjectVisitList = subjectVisitQuery.OrderBy(t => t.VisitNum).ToList();
var subjectVisitIds = subjectVisitList.Select(t => t.SubjectVisitId).ToList();
//获取访视下面的study列表
var studyQuery = _studyRepository.GetAll().Where(t =>
t.TrialId == trialId && t.SiteId == siteId && t.SubjectId == subjectId &&
subjectVisitIds.Contains(t.SubjectVisitId))
.Select(u => new SubjectVisitStudyDTO()
{
SubjectVisitId = u.SubjectVisitId,
Modalities = u.Modalities,
StudyCode = u.StudyCode,
StudyId = u.Id,
Status = u.Status
});
var studyList = studyQuery.ToList();
subjectVisitList.ForEach(t =>
{
t.StudyList = studyList.Where(u => u.SubjectVisitId == t.SubjectVisitId).ToList();
});
return subjectVisitList;
#region 访 访
//var visitPlanQuery = _visitStageRepository.Find(u => u.TrialId == trialId).Select(u =>
// new SubjectVisitSelectDTO()
// {
// VisitStageId = u.Id,
// VisitName = u.VisitName,
// VisitNum = u.VisitNum,
// SVUPDES = u.Description
// });
//var visitPlanList = visitPlanQuery.OrderBy(t => t.VisitNum).ToList();
////如果不存在受试者访视记录 直接返回方式计划
//if (!subjectVisitList.Any())
//{
// return visitPlanList;
//}
//else
//{
// visitPlanList.ForEach(t =>
// {
// // 当前访视计划号 不在受试者访视表中 那么需要返回
// if (!subjectVisitList.Any(u => Math.Abs(t.VisitNum - u.VisitNum) < 0.01))
// {
// subjectVisitList.Add(t);
// }
// });
// return subjectVisitList.OrderBy(t => t.VisitNum).ToList();
//}
#endregion
}
public IEnumerable<SubjectVisitDTO> GetSubjectVisitList(Guid trialId, Guid subjectId)
{
//受试者已经访视得列表 + study统计
var query =
from subjectVisit in _subjectVisitRepository.GetAll()
.Where(t => t.TrialId == trialId && t.SubjectId == subjectId)
//join visitStage in _visitStageRepository.Find(u => u.TrialId == trialId) on
// new { subjectVisit.TrialId, subjectVisit.VisitDay } equals new
// { visitStage.TrialId, visitStage.VisitDay } into dd
//from visitStage in dd.DefaultIfEmpty()
join subjectVisitStat in _studyRepository.GetAll().Where(t => t.TrialId == trialId && t.SubjectId == subjectId)
.GroupBy(u => u.SubjectVisitId).Select(g => new { SubjectVisitId = g.Key, StudyCount = g.Count() })
on subjectVisit.Id equals subjectVisitStat.SubjectVisitId into cc
from subjectVisitStat in cc.DefaultIfEmpty()
select new SubjectVisitDTO
{
Id = subjectVisit.Id,
InPlan = subjectVisit.InPlan,
TrialId = subjectVisit.TrialId,
SubjectId = subjectVisit.SubjectId,
VisitNum = subjectVisit.VisitNum,
VisitName = subjectVisit.VisitName,
VisitDay = subjectVisit.VisitDay,
SVUPDES = subjectVisit.SVUPDES,
SVSTDTC = subjectVisit.SVSTDTC,
SVENDTC = subjectVisit.SVENDTC,
StudyCount = subjectVisitStat.StudyCount
};
var list = query.OrderBy(t => t.VisitNum).ToList();
#region 访 访
////受试者未访视得列表
//Expression<Func<VisitStage, bool>> visitStageLambda = x => x.TrialId == trialId;
//IQueryable<double> subjectVisitQuery = _subjectVisitRepository.GetAll()
// .Where(t => t.TrialId == trialId && t.SubjectId == subjectId).Select(u => u.VisitNum);
//visitStageLambda = visitStageLambda.And(t => !subjectVisitQuery.Contains(t.VisitNum));
//var planVisitList = _visitStageRepository.GetAll().Where(visitStageLambda).Select(t => new SubjectVisitDTO
//{
// TrialId = t.TrialId,
// SubjectId = subjectId,
// VisitNum = t.VisitNum,
// VisitName = t.VisitName,
// VisitDay = t.VisitDay
//}).ToList();
//list.AddRange(planVisitList);
//return list.OrderBy(t => t.VisitNum).ToList();
#endregion
return list;
}
public IResponseOutput AddOrUpdateSV(SubjectVisitCommand svCommand)
{
if (svCommand.Id == Guid.Empty || svCommand.Id == null)
{
var sv = _subjectVisitRepository.Add(_mapper.Map<SubjectVisit>(svCommand));
var success = _subjectVisitRepository.SaveChanges();
var latest = _subjectVisitRepository.GetAll()
.Where(t => t.SubjectId == svCommand.SubjectId && t.TrialId == svCommand.TrialId)
.OrderByDescending(t => t.SVSTDTC).FirstOrDefault();
if (latest != null)
{
_subjectRepository.Update(t => t.Id == svCommand.SubjectId, u => new Subject()
{
SubjectVisitId = latest.Id
});
}
return ResponseOutput.Result(success, sv.Id.ToString());
}
else
{
var success = _subjectVisitRepository.Update(t => t.Id == svCommand.Id, u => new SubjectVisit()
{
SubjectId = svCommand.SubjectId,
TrialId = svCommand.TrialId,
SiteId = svCommand.SiteId,
VisitDay = svCommand.VisitDay,
VisitNum = svCommand.VisitNum,
VisitName = svCommand.VisitName,
SVENDTC = svCommand.SVENDTC,
SVSTDTC = svCommand.SVSTDTC,
SVUPDES = svCommand.SVUPDES,
InPlan = svCommand.InPlan,
UpdateTime = DateTime.Now
});
var latest = _subjectVisitRepository.GetAll()
.Where(t => t.SubjectId == svCommand.SubjectId && t.TrialId == svCommand.TrialId)
.OrderByDescending(t => t.SVSTDTC).FirstOrDefault();
if (latest != null)
{
_subjectRepository.Update(t => t.Id == svCommand.SubjectId, u => new Subject()
{
SubjectVisitId = latest.Id
});
}
return ResponseOutput.Result(success);
}
}
public IResponseOutput DeleteSV(Guid id)
{
if (_studyRepository.GetAll().Any(t => t.SubjectVisitId == id))
{
return ResponseOutput.NotOk("There are Study data under the subjects visit");
}
return ResponseOutput.Result( _subjectVisitRepository.Delete(s => s.Id == id));
}
public PageOutput<SubjectVisitNewDTO> GetVisitList(SubjectVisitSearchDTO subjectVisitSearch)
{
Expression<Func<Subject, bool>> subjectLambda = x => true;
Expression<Func<SubjectVisit, bool>> subjectVisitLambda = x => x.TrialId == subjectVisitSearch.TrialId;
Expression<Func<DicomStudy, bool>> studyLambda = x => x.TrialId == subjectVisitSearch.TrialId&&x.Status!= (int)StudyStatus.Abandon;
//Expression<Func<VisitStage, bool>> visitPlanLambda = x => x.TrialId == subjectVisitSearch.TrialId;
if (subjectVisitSearch.SiteId != null&& subjectVisitSearch.SiteId != Guid.Empty)
{
subjectVisitLambda = subjectVisitLambda.And(t => t.SiteId ==subjectVisitSearch.SiteId.Value);
studyLambda = studyLambda.And(t => t.SiteId == subjectVisitSearch.SiteId.Value);
}
if (subjectVisitSearch.SubjectId != null && subjectVisitSearch.SubjectId != Guid.Empty)
{
subjectLambda = subjectLambda.And(t => t.Id == subjectVisitSearch.SubjectId.Value);
studyLambda= studyLambda.And(t => t.SubjectId == subjectVisitSearch.SubjectId.Value);
}
if (!string.IsNullOrEmpty(subjectVisitSearch.SubjectInfo))
{
var search = subjectVisitSearch.SubjectInfo.Trim();
subjectLambda = subjectLambda.And(t => t.Name.Contains(search) ||t.Code.Contains(search));
}
if (!string.IsNullOrWhiteSpace(subjectVisitSearch.VisitPlanInfo))
{
var visitInfo = subjectVisitSearch.VisitPlanInfo.Trim();
if (visitInfo.Contains('.'))
{
subjectVisitLambda = subjectVisitLambda.And(t => t.VisitNum.ToString().Contains("."));
}
else
{
if (int.TryParse(visitInfo, out var visitNum))
{
subjectVisitLambda = subjectVisitLambda.And(t => t.VisitNum == visitNum);
}
}
}
var requestUser = _userRepository.GetAll().First(t => t.Id == _userInfo.Id);
IQueryable<SubjectVisitNewDTO> query = default;
if (requestUser.SuperAdmin || requestUser.UserType == StaticData.CROCoordinator ||
requestUser.UserType == StaticData.PM || requestUser.UserType == StaticData.QC)
{
query = from subjectVisit in _subjectVisitRepository.Find(subjectVisitLambda)
join subject in _subjectRepository.Find(subjectLambda) on subjectVisit.SubjectId equals subject.Id
join site in _siteRepository.GetAll() on subjectVisit.SiteId equals site.Id
join study in _studyRepository.Find(studyLambda).GroupBy(t=>t.SubjectVisitId).Select(g=>new { SubjectVisitId= g.Key,StudyCount=g.Count()} ) on subjectVisit.Id equals study.SubjectVisitId into d
from study in d.DefaultIfEmpty()
select new SubjectVisitNewDTO()
{
Id= subjectVisit.Id,
//VisitPlanId = visitStage.Id,
SubjectId = subjectVisit.SubjectId,
TrialId = subjectVisit.TrialId,
SiteId = subjectVisit.SiteId,
VisitDay = subjectVisit.VisitDay,
VisitNum = subjectVisit.VisitNum,
VisitName = subjectVisit.VisitName,
SVENDTC = subjectVisit.SVENDTC,
SVSTDTC = subjectVisit.SVSTDTC,
SVUPDES = subjectVisit.SVUPDES,
InPlan = subjectVisit.InPlan,
StudyUploaded = subjectVisit.StudyUploaded,
UpdateTime = subjectVisit.UpdateTime,
SubjectCode = subject.Code,
SubjectName = subject.Name,
StudyCount = study.StudyCount,
SiteCode = site.SiteCode,
SiteName = site.SiteName
};
}
else//CRC 或者其他的
{
//CRC 只能看到他负责得site下的用户、访视
var siteQuery = _userTrialRepository.Find(t => t.SiteId != Guid.Empty && t.UserId == requestUser.Id)
.Select(t => t.SiteId).Distinct();
subjectVisitLambda = subjectVisitLambda.And(t => siteQuery.Contains(t.SiteId));
query = from subjectVisit in _subjectVisitRepository.Find(subjectVisitLambda)
join subject in _subjectRepository.Find(subjectLambda) on subjectVisit.SubjectId equals subject.Id
join site in _siteRepository.GetAll() on subjectVisit.SiteId equals site.Id
join study in _studyRepository.Find(studyLambda).GroupBy(t => t.SubjectVisitId).Select(g => new { SubjectVisitId = g.Key, StudyCount = g.Count() }) on subjectVisit.Id equals study.SubjectVisitId into d
from study in d.DefaultIfEmpty()
select new SubjectVisitNewDTO()
{
Id = subjectVisit.Id,
SubjectId = subjectVisit.SubjectId,
TrialId = subjectVisit.TrialId,
SiteId = subjectVisit.SiteId,
VisitDay = subjectVisit.VisitDay,
VisitNum = subjectVisit.VisitNum,
VisitName = subjectVisit.VisitName,
SVENDTC = subjectVisit.SVENDTC,
SVSTDTC = subjectVisit.SVSTDTC,
SVUPDES = subjectVisit.SVUPDES,
InPlan = subjectVisit.InPlan,
StudyUploaded = subjectVisit.StudyUploaded,
UpdateTime = subjectVisit.UpdateTime,
SubjectCode = subject.Code,
SubjectName = subject.Name,
StudyCount = study.StudyCount,
SiteCode = site.SiteCode,
SiteName = site.SiteName,
};
}
var count = query.Count();
var propName = subjectVisitSearch.SortField == string.Empty ? "UpdateTime" : subjectVisitSearch.SortField;
query = subjectVisitSearch.Asc
? query.OrderBy(t=>t.SubjectId)
: query.OrderByDescending(propName);
query = query.Skip((subjectVisitSearch.PageIndex - 1) * subjectVisitSearch.PageSize).Take(subjectVisitSearch.PageSize);
var list = query.ToList();
return new PageOutput<SubjectVisitNewDTO>(subjectVisitSearch.PageIndex,
subjectVisitSearch.PageSize, count, list);
}
}
}