代码整理

This commit is contained in:
2022-10-17 14:49:51 +08:00
parent ab54e04ad6
commit fde24002d1
3 changed files with 256 additions and 225 deletions
@@ -46,70 +46,8 @@ namespace IRaCIS.Core.Application.Service
this._criterionNidusRepository = criterionNidusRepository;
}
/// <summary>
/// 获取标准病灶类型
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<List<OrganDictionary>> GetCriterionLesionType(GetCriterionLesionTypeInDto inDto)
{
var dicNums = new List<string>();
dicNums = await _criterionNidusRepository.Where(x => x.CriterionId == inDto.CriterionId).Select(x => ((int)x.LesionType).ToString()).Distinct().ToListAsync();
var dictionaryId = await _dictionaryRepository.Where(x => x.Code == "LesionType").Select(x => x.Id).FirstOrDefaultAsync();
var result = await _dictionaryRepository.Where(x => x.ParentId == dictionaryId && dicNums.Contains(x.Code)).ProjectTo<OrganDictionary>(_mapper.ConfigurationProvider).ToListAsync();
return result;
}
/// <summary>
/// 获取标准病灶器官关系信息
/// </summary>
/// <param name="inQuery"></param>
/// <returns></returns>
[HttpPost]
public async Task<List<CriterionNidusView>> GetCriterionNidusList(CriterionNidusQuery inQuery)
{
var criterionNidusQueryable = _criterionNidusRepository
.Where(x=>x.CriterionId== inQuery.CriterionId)
.ProjectTo<CriterionNidusView>(_mapper.ConfigurationProvider);
return await criterionNidusQueryable.ToListAsync();
}
/// <summary>
/// 新增修改标准病灶器官关系信息
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateCriterionNidus(CriterionNidusAddOrEdit inDto)
{
if (await _criterionNidusRepository.AnyAsync(x => x.OrganType == inDto.OrganType && x.LesionType == inDto.LesionType && x.CriterionId == inDto.CriterionId && x.Id != inDto.Id))
{
throw new BusinessValidationFailedException("存在相同的数据,操作失败");
}
var entity = await _criterionNidusRepository.InsertOrUpdateAsync(inDto, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
/// <summary>
/// 删除病灶病灶器官关系信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("{id:guid}")]
public async Task<IResponseOutput> DeleteCriterionNidus(Guid id)
{
var success = await _criterionNidusRepository.DeleteFromQueryAsync(t => t.Id == id, true);
return ResponseOutput.Ok();
}
#region
/// <summary>
/// 获取系统器官信息
@@ -122,11 +60,11 @@ namespace IRaCIS.Core.Application.Service
List<OrganType> organs = new List<OrganType>();
if (inQuery.LesionType != null)
{
organs =await _criterionNidusRepository.Where(x => x.CriterionId == inQuery.SystemCriterionId && x.LesionType == inQuery.LesionType)
organs = await _criterionNidusRepository.Where(x => x.CriterionId == inQuery.SystemCriterionId && x.LesionType == inQuery.LesionType)
.Select(x => x.OrganType).ToListAsync();
}
var organInfoQueryable = _organInfoRepository
.Where(x=>x.SystemCriterionId==inQuery.SystemCriterionId)
.Where(x => x.SystemCriterionId == inQuery.SystemCriterionId)
.WhereIf(inQuery.LesionType != null, x => organs.Contains(x.OrganType))
.WhereIf(inQuery.OrganType != null, x => x.OrganType == inQuery.OrganType)
.ProjectTo<OrganInfoView>(_mapper.ConfigurationProvider);
@@ -185,6 +123,64 @@ namespace IRaCIS.Core.Application.Service
return ResponseOutput.Ok();
}
#endregion
#region
/// <summary>
/// 获取项目器官信息
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<List<GetTrialOrganListOutDto>> GetTrialOrganList(GetTrialOrganListInDto inDto)
{
List<OrganType> organs = new List<OrganType>();
if (inDto.TrialReadingCriterionId == null)
{
inDto.TrialReadingCriterionId = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.TrialReadingCriterionId).FirstOrDefaultAsync();
}
if (inDto.LesionType != null)
{
var criterion = await _readingQuestionCriterionTrial.Where(x => x.Id == inDto.TrialReadingCriterionId).FirstOrDefaultAsync();
organs = await _criterionNidusRepository.Where(x => x.CriterionId == (criterion == null ? default(Guid) : criterion.Id) && x.LesionType == inDto.LesionType)
.Select(x => x.OrganType).ToListAsync();
}
var organInfoQueryable = from data in _organInfoRepository
.WhereIf(inDto.OrganType != null, x => x.OrganType == inDto.OrganType)
.WhereIf(inDto.IsLymphNodes != null, x => x.IsLymphNodes == inDto.IsLymphNodes)
.WhereIf(inDto.LesionType != null, x => organs.Contains(x.OrganType))
join trialData in _organTrialInfoRepository.WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable)
.WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable)
.Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId)
on data.Id equals trialData.OrganInfoId
select new GetTrialOrganListOutDto()
{
Id = trialData.Id,
Part = data.Part,
TULAT = data.TULAT,
TULOC = data.TULOC,
Remark = data.Remark,
IsLymphNodes = data.IsLymphNodes,
IsCanEditPosition = data.IsCanEditPosition,
IsEnable = trialData.IsEnable,
OrganType = data.OrganType,
PartEN = data.PartEN,
TULATEN = data.TULATEN,
TULOCEN = data.TULOCEN,
};
return await organInfoQueryable.ToListAsync();
}
/// <summary>
/// 批量添加项目器官
@@ -197,9 +193,9 @@ namespace IRaCIS.Core.Application.Service
List<OrganTrialInfo> organTrialInfos = inDto.OrganIds.Select(x => new OrganTrialInfo()
{
OrganInfoId=x,
TrialId=inDto.TrialId,
TrialCriterionId=inDto.TrialReadingCriterionId,
OrganInfoId = x,
TrialId = inDto.TrialId,
TrialCriterionId = inDto.TrialReadingCriterionId,
//OrganType=inDto.OrganType,
}).ToList();
@@ -224,94 +220,106 @@ namespace IRaCIS.Core.Application.Service
}
/// <summary>
/// 获取项目器官信息
/// 设置项目器官是否生效
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<List<GetTrialOrganListOutDto>> GetTrialOrganList(GetTrialOrganListInDto inDto)
public async Task<IResponseOutput> SetOrganIsEnable(SetOrganIsEnableInDto inDto)
{
List<OrganType> organs = new List<OrganType>();
if (inDto.TrialReadingCriterionId == null)
await _organTrialInfoRepository.UpdatePartialFromQueryAsync(x => inDto.Ids.Contains(x.Id), x => new OrganTrialInfo()
{
inDto.TrialReadingCriterionId = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.TrialReadingCriterionId).FirstOrDefaultAsync();
}
IsEnable = inDto.IsEnable
});
await _organTrialInfoRepository.SaveChangesAsync();
if (inDto.LesionType != null)
{
var criterion = await _readingQuestionCriterionTrial.Where(x => x.Id==inDto.TrialReadingCriterionId).FirstOrDefaultAsync();
organs = await _criterionNidusRepository.Where(x => x.CriterionId == (criterion==null?default(Guid): criterion.Id) && x.LesionType == inDto.LesionType)
.Select(x => x.OrganType).ToListAsync();
}
var organInfoQueryable = from data in _organInfoRepository
.WhereIf(inDto.OrganType != null, x => x.OrganType == inDto.OrganType)
.WhereIf(inDto.IsLymphNodes!=null,x=>x.IsLymphNodes==inDto.IsLymphNodes)
.WhereIf(inDto.LesionType != null, x => organs.Contains(x.OrganType))
join trialData in _organTrialInfoRepository.WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable)
.WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable)
.Where(x => x.TrialCriterionId == inDto.TrialReadingCriterionId)
on data.Id equals trialData.OrganInfoId
select new GetTrialOrganListOutDto()
{
Id = trialData.Id,
Part = data.Part,
TULAT = data.TULAT,
TULOC = data.TULOC,
Remark= data.Remark,
IsLymphNodes = data.IsLymphNodes,
IsCanEditPosition=data.IsCanEditPosition,
IsEnable = trialData.IsEnable,
OrganType = data.OrganType,
PartEN=data.PartEN,
TULATEN=data.TULATEN,
TULOCEN=data.TULOCEN,
};
return await organInfoQueryable.ToListAsync();
return ResponseOutput.Ok();
}
#region
///// <summary>
///// 获取项目勾选器官信息
///// </summary>
///// <param name="inDto"></param>
///// <returns></returns>
//[HttpPost]
//public async Task<List<GetTrialCheckOrganList>> GetTrialCheckOrganList(GetTrialOrganListInDto inDto)
//{
// var organInfoQueryable = from data in _organInfoRepository.WhereIf(inDto.CriterionNidusId != null, x => x.CriterionNidusId == inDto.CriterionNidusId)
// join trialData in _organTrialInfoRepository.WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable)
// .Where(x => x.TrialId == inDto.TrialId)
// on data.Id equals trialData.OrganInfoId into jtemp
// from leftjoin in jtemp.DefaultIfEmpty()
// select new GetTrialCheckOrganList()
// {
// Id = data.Id,
// Part = data.Part,
// TULAT = data.TULAT,
// TULOC = data.TULOC,
// IsCheckd= leftjoin!=null,
// Remark = data.Remark,
// CriterionNidusId = data.CriterionNidusId,
// IsEnable = leftjoin.IsEnable,
// };
// return await organInfoQueryable.ToListAsync();
//}
#endregion
#region ( )
/// <summary>
/// 获取标准病灶类型
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<List<OrganDictionary>> GetCriterionLesionType(GetCriterionLesionTypeInDto inDto)
{
var dicNums = new List<string>();
dicNums = await _criterionNidusRepository.Where(x => x.CriterionId == inDto.CriterionId).Select(x => ((int)x.LesionType).ToString()).Distinct().ToListAsync();
var dictionaryId = await _dictionaryRepository.Where(x => x.Code == "LesionType").Select(x => x.Id).FirstOrDefaultAsync();
var result = await _dictionaryRepository.Where(x => x.ParentId == dictionaryId && dicNums.Contains(x.Code)).ProjectTo<OrganDictionary>(_mapper.ConfigurationProvider).ToListAsync();
return result;
}
/// <summary>
/// 获取标准病灶器官关系信息
/// </summary>
/// <param name="inQuery"></param>
/// <returns></returns>
[HttpPost]
public async Task<List<CriterionNidusView>> GetCriterionNidusList(CriterionNidusQuery inQuery)
{
var criterionNidusQueryable = _criterionNidusRepository
.Where(x => x.CriterionId == inQuery.CriterionId)
.ProjectTo<CriterionNidusView>(_mapper.ConfigurationProvider);
return await criterionNidusQueryable.ToListAsync();
}
/// <summary>
/// 新增修改标准病灶器官关系信息
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<IResponseOutput> AddOrUpdateCriterionNidus(CriterionNidusAddOrEdit inDto)
{
if (await _criterionNidusRepository.AnyAsync(x => x.OrganType == inDto.OrganType && x.LesionType == inDto.LesionType && x.CriterionId == inDto.CriterionId && x.Id != inDto.Id))
{
throw new BusinessValidationFailedException("存在相同的数据,操作失败");
}
var entity = await _criterionNidusRepository.InsertOrUpdateAsync(inDto, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
/// <summary>
/// 删除病灶病灶器官关系信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete("{id:guid}")]
public async Task<IResponseOutput> DeleteCriterionNidus(Guid id)
{
var success = await _criterionNidusRepository.DeleteFromQueryAsync(t => t.Id == id, true);
return ResponseOutput.Ok();
}
#endregion
/// <summary>
/// 同步系统器官到项目
/// </summary>
@@ -373,25 +381,43 @@ namespace IRaCIS.Core.Application.Service
}
/// <summary>
/// 设置项目器官是否生效
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<IResponseOutput> SetOrganIsEnable(SetOrganIsEnableInDto inDto)
{
await _organTrialInfoRepository.UpdatePartialFromQueryAsync(x => inDto.Ids.Contains(x.Id), x => new OrganTrialInfo()
{
IsEnable=inDto.IsEnable
});
await _organTrialInfoRepository.SaveChangesAsync();
return ResponseOutput.Ok();
}
#region
///// <summary>
///// 获取项目勾选器官信息
///// </summary>
///// <param name="inDto"></param>
///// <returns></returns>
//[HttpPost]
//public async Task<List<GetTrialCheckOrganList>> GetTrialCheckOrganList(GetTrialOrganListInDto inDto)
//{
// var organInfoQueryable = from data in _organInfoRepository.WhereIf(inDto.CriterionNidusId != null, x => x.CriterionNidusId == inDto.CriterionNidusId)
// join trialData in _organTrialInfoRepository.WhereIf(inDto.IsEnable != null, x => x.IsEnable == inDto.IsEnable)
// .Where(x => x.TrialId == inDto.TrialId)
// on data.Id equals trialData.OrganInfoId into jtemp
// from leftjoin in jtemp.DefaultIfEmpty()
// select new GetTrialCheckOrganList()
// {
// Id = data.Id,
// Part = data.Part,
// TULAT = data.TULAT,
// TULOC = data.TULOC,
// IsCheckd= leftjoin!=null,
// Remark = data.Remark,
// CriterionNidusId = data.CriterionNidusId,
// IsEnable = leftjoin.IsEnable,
// };
// return await organInfoQueryable.ToListAsync();
//}
#endregion
}
}