Uat_Study
parent
fde24002d1
commit
a1913ca5b3
|
@ -204,6 +204,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 问题
|
#region 问题
|
||||||
|
|
||||||
private async Task<List<ReadingMedicineQuestion>> GetMedicalQuestionAnswer(GetMedicalReviewReadingTaskInDto inDto)
|
private async Task<List<ReadingMedicineQuestion>> GetMedicalQuestionAnswer(GetMedicalReviewReadingTaskInDto inDto)
|
||||||
{
|
{
|
||||||
var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == inDto.TaskMedicalReviewId).FirstNotNullAsync();
|
var medicalReview = await _taskMedicalReviewRepository.Where(x => x.Id == inDto.TaskMedicalReviewId).FirstNotNullAsync();
|
||||||
|
@ -250,6 +251,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,4 @@
|
||||||
|
|
||||||
using IRaCIS.Core.Domain.Models;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using IRaCIS.Core.Application.Interfaces;
|
|
||||||
using IRaCIS.Core.Application.ViewModel;
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
using IRaCIS.Core.Infra.EFCore.Common;
|
using IRaCIS.Core.Infra.EFCore.Common;
|
||||||
using MassTransit;
|
using MassTransit;
|
||||||
|
@ -11,10 +8,10 @@ using IRaCIS.Core.Domain.Share;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 医学审核问题
|
/// 医学审核问题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ ApiExplorerSettings(GroupName = "Reading")]
|
[ ApiExplorerSettings(GroupName = "Reading")]
|
||||||
public class ReadingMedicineQuestionService: BaseService, IReadingMedicineQuestionService
|
public class ReadingMedicineQuestionService: BaseService, IReadingMedicineQuestionService
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -37,6 +34,9 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#region 系统
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取系统的医学审核问题
|
/// 获取系统的医学审核问题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -50,8 +50,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.WhereIf(!inDto.ParentTriggerValue.IsNullOrEmpty(), x => x.ParentTriggerValue.Contains(inDto.ParentTriggerValue))
|
.WhereIf(!inDto.ParentTriggerValue.IsNullOrEmpty(), x => x.ParentTriggerValue.Contains(inDto.ParentTriggerValue))
|
||||||
.WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName))
|
.WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName))
|
||||||
.WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type))
|
.WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type))
|
||||||
.WhereIf(inDto.ReadingCategory!=null, x => x.ReadingCategory==inDto.ReadingCategory)
|
.WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory)
|
||||||
.ProjectTo<ReadingMedicineSystemQuestionView>(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder);
|
.ProjectTo<ReadingMedicineSystemQuestionView>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder);
|
||||||
return await query.ToListAsync();
|
return await query.ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
var existsQuery = _readingMedicineSystemQuestionRepository
|
var existsQuery = _readingMedicineSystemQuestionRepository
|
||||||
.WhereIf(inDto.Id != null, x => x.Id != inDto.Id)
|
.WhereIf(inDto.Id != null, x => x.Id != inDto.Id)
|
||||||
.Where(x =>x.ShowOrder == inDto.ShowOrder);
|
.Where(x => x.ShowOrder == inDto.ShowOrder);
|
||||||
|
|
||||||
if (await existsQuery.AnyAsync())
|
if (await existsQuery.AnyAsync())
|
||||||
{
|
{
|
||||||
|
@ -105,9 +105,6 @@ namespace IRaCIS.Core.Application.Service
|
||||||
return ResponseOutput.Ok(entity.Id.ToString());
|
return ResponseOutput.Ok(entity.Id.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 删除系统的医学审核问题
|
/// 删除系统的医学审核问题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -124,88 +121,38 @@ namespace IRaCIS.Core.Application.Service
|
||||||
var result = await _readingMedicineSystemQuestionRepository.SaveChangesAsync();
|
var result = await _readingMedicineSystemQuestionRepository.SaveChangesAsync();
|
||||||
return ResponseOutput.Result(result);
|
return ResponseOutput.Result(result);
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region 项目
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取项目的医学审核问题
|
/// 获取项目的医学审核问题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<(List<ReadingMedicineTrialQuestionView>,object)> GetReadingMedicineTrialQuestionList(ReadingMedicineTrialQuestionQuery inDto)
|
public async Task<(List<ReadingMedicineTrialQuestionView>, object)> GetReadingMedicineTrialQuestionList(ReadingMedicineTrialQuestionQuery inDto)
|
||||||
{
|
{
|
||||||
var query = _readingMedicineTrialQuestionRepository.AsQueryable()
|
var query = _readingMedicineTrialQuestionRepository.AsQueryable()
|
||||||
.Where(x=>x.TrialId==inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId)
|
.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)
|
||||||
.WhereIf(!inDto.TypeValue.IsNullOrEmpty(), x => x.TypeValue.Contains(inDto.TypeValue))
|
.WhereIf(!inDto.TypeValue.IsNullOrEmpty(), x => x.TypeValue.Contains(inDto.TypeValue))
|
||||||
.WhereIf(!inDto.ParentTriggerValue.IsNullOrEmpty(), x => x.ParentTriggerValue.Contains(inDto.ParentTriggerValue))
|
.WhereIf(!inDto.ParentTriggerValue.IsNullOrEmpty(), x => x.ParentTriggerValue.Contains(inDto.ParentTriggerValue))
|
||||||
.WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName))
|
.WhereIf(!inDto.QuestionName.IsNullOrEmpty(), x => x.QuestionName.Contains(inDto.QuestionName))
|
||||||
.WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type))
|
.WhereIf(!inDto.Type.IsNullOrEmpty(), x => x.Type.Contains(inDto.Type))
|
||||||
.WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory)
|
.WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory)
|
||||||
.ProjectTo<ReadingMedicineTrialQuestionView>(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder);
|
.ProjectTo<ReadingMedicineTrialQuestionView>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder);
|
||||||
|
|
||||||
|
|
||||||
var isConfirmMedicineQuestion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id==inDto.TrialReadingCriterionId).Select(x => x.IsConfirmMedicineQuestion).FirstOrDefaultAsync();
|
var isConfirmMedicineQuestion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inDto.TrialReadingCriterionId).Select(x => x.IsConfirmMedicineQuestion).FirstOrDefaultAsync();
|
||||||
var questionList = await query.ToListAsync();
|
var questionList = await query.ToListAsync();
|
||||||
return (questionList, new {
|
return (questionList, new
|
||||||
IsConfirmMedicineQuestion= isConfirmMedicineQuestion,
|
{
|
||||||
QuestionCount= questionList.Count(),
|
IsConfirmMedicineQuestion = isConfirmMedicineQuestion,
|
||||||
|
QuestionCount = questionList.Count(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取预览问题信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="inDto"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
public async Task<List<GetMedicineQuestionPreviewOutDto>> GetMedicineQuestionPreview(GetMedicineQuestionPreviewInDto inDto)
|
|
||||||
{
|
|
||||||
var trialQuestionList = await _readingMedicineTrialQuestionRepository.Where(x=>x.TrialId==inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId)
|
|
||||||
.WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory)
|
|
||||||
.ProjectTo<GetMedicineQuestionPreviewOutDto>(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder).ToListAsync();
|
|
||||||
|
|
||||||
List<GetMedicineQuestionPreviewOutDto> readingQuestionList = trialQuestionList.Where(x => x.ParentId == null).ToList();
|
|
||||||
readingQuestionList.ForEach(x =>
|
|
||||||
{
|
|
||||||
FindChildQuestion(x, trialQuestionList);
|
|
||||||
});
|
|
||||||
|
|
||||||
return readingQuestionList;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void FindChildQuestion(GetMedicineQuestionPreviewOutDto trialReadingQuestion, List<GetMedicineQuestionPreviewOutDto> questionlists)
|
|
||||||
{
|
|
||||||
trialReadingQuestion.Childrens = questionlists.Where(x => x.ParentId == trialReadingQuestion.Id).ToList();
|
|
||||||
if (trialReadingQuestion.Childrens != null && trialReadingQuestion.Childrens.Count != 0)
|
|
||||||
{
|
|
||||||
trialReadingQuestion.Childrens.ForEach(x =>
|
|
||||||
{
|
|
||||||
this.FindChildQuestion(x, questionlists);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 新增或修改项目医学审核问题
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="inDto"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
[HttpPost]
|
|
||||||
public async Task<IResponseOutput> AddOrUpdateReadingMedicineTrialQuestion(ReadingMedicineTrialQuestionAddOrEdit inDto)
|
|
||||||
{
|
|
||||||
var existsQuery = _readingMedicineTrialQuestionRepository
|
|
||||||
.WhereIf(inDto.Id != null, x => x.Id != inDto.Id)
|
|
||||||
.Where(x => x.TrialId==inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId)
|
|
||||||
.Where(x => x.ShowOrder == inDto.ShowOrder);
|
|
||||||
|
|
||||||
if (await existsQuery.AnyAsync())
|
|
||||||
{
|
|
||||||
return ResponseOutput.NotOk("当前问题序号存在重复");
|
|
||||||
}
|
|
||||||
var entity = await _readingMedicineTrialQuestionRepository.InsertOrUpdateAsync(inDto);
|
|
||||||
await _readingMedicineTrialQuestionRepository.SaveChangesAsync();
|
|
||||||
return ResponseOutput.Ok(entity.Id.ToString());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取项目的其他医学审核问题
|
/// 获取项目的其他医学审核问题
|
||||||
|
@ -220,74 +167,65 @@ namespace IRaCIS.Core.Application.Service
|
||||||
"select","radio"
|
"select","radio"
|
||||||
};
|
};
|
||||||
|
|
||||||
var questionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId)
|
var questionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)
|
||||||
.Where(x => types.Contains(x.Type))
|
.Where(x => types.Contains(x.Type))
|
||||||
.WhereIf(inDto.Id != null, x => x.Id != inDto.Id && x.ParentId != inDto.Id)
|
.WhereIf(inDto.Id != null, x => x.Id != inDto.Id && x.ParentId != inDto.Id)
|
||||||
.WhereIf(inDto.ShowOrder != null, x => x.ShowOrder <inDto.ShowOrder)
|
.WhereIf(inDto.ShowOrder != null, x => x.ShowOrder < inDto.ShowOrder)
|
||||||
.WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory)
|
.WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory)
|
||||||
.Select(x => new GetReadingMedicineTrialOtherQuestionOutDto()
|
.Select(x => new GetReadingMedicineTrialOtherQuestionOutDto()
|
||||||
{
|
{
|
||||||
Id = x.Id,
|
Id = x.Id,
|
||||||
QuestionName = x.QuestionName,
|
QuestionName = x.QuestionName,
|
||||||
TypeValue=x.TypeValue,
|
TypeValue = x.TypeValue,
|
||||||
ReadingCategory=x.ReadingCategory,
|
ReadingCategory = x.ReadingCategory,
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
|
|
||||||
return questionList;
|
return questionList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 从系统里面选择问题添加到项目里面
|
/// <summary>
|
||||||
|
/// 获取预览问题信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IResponseOutput> AddTrialDataFromSystem(AddTrialDataFromSystemInDto inDto)
|
public async Task<List<GetMedicineQuestionPreviewOutDto>> GetMedicineQuestionPreview(GetMedicineQuestionPreviewInDto inDto)
|
||||||
{
|
{
|
||||||
// 直接写??
|
var trialQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)
|
||||||
var systemList = await _readingMedicineSystemQuestionRepository.Where(x => inDto.SystemQuestionIds.Contains(x.Id)).ToListAsync();
|
.WhereIf(inDto.ReadingCategory != null, x => x.ReadingCategory == inDto.ReadingCategory)
|
||||||
|
.ProjectTo<GetMedicineQuestionPreviewOutDto>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync();
|
||||||
|
|
||||||
var maxOrder = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId).OrderByDescending(x => x.ShowOrder).Select(x => x.ShowOrder).FirstOrDefaultAsync();
|
List<GetMedicineQuestionPreviewOutDto> readingQuestionList = trialQuestionList.Where(x => x.ParentId == null).ToList();
|
||||||
|
readingQuestionList.ForEach(x =>
|
||||||
|
{
|
||||||
var needList= systemList.Select(x => new TrialDataFromSystem()
|
FindChildQuestion(x, trialQuestionList);
|
||||||
{
|
|
||||||
Id = NewId.NextGuid(),
|
|
||||||
ShowOrder = x.ShowOrder,
|
|
||||||
IsEnable = x.IsEnable,
|
|
||||||
IsRequired = x.IsRequired,
|
|
||||||
QuestionName = x.QuestionName,
|
|
||||||
TrialReadingCriterionId=inDto.TrialReadingCriterionId,
|
|
||||||
Type = x.Type,
|
|
||||||
ParentId=x.ParentId,
|
|
||||||
SystemQuestionId=x.Id,
|
|
||||||
ReadingCategory=x.ReadingCategory,
|
|
||||||
TypeValue = x.TypeValue,
|
|
||||||
TrialId=inDto.TrialId,
|
|
||||||
}).ToList();
|
|
||||||
|
|
||||||
needList.ForEach(x => {
|
|
||||||
maxOrder++;
|
|
||||||
x.ShowOrder = maxOrder;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
foreach (var item in needList.Where(x => x.ParentId != null))
|
return readingQuestionList;
|
||||||
{
|
}
|
||||||
var parent = needList.Where(x => x.SystemQuestionId == item.ParentId).FirstOrDefault();
|
|
||||||
if (parent == null)
|
/// <summary>
|
||||||
{
|
/// 新增或修改项目医学审核问题
|
||||||
item.ParentId = null;
|
/// </summary>
|
||||||
item.ParentTriggerValue = String.Empty;
|
/// <param name="inDto"></param>
|
||||||
}
|
/// <returns></returns>
|
||||||
else
|
[HttpPost]
|
||||||
{
|
public async Task<IResponseOutput> AddOrUpdateReadingMedicineTrialQuestion(ReadingMedicineTrialQuestionAddOrEdit inDto)
|
||||||
item.ParentId = parent.Id;
|
{
|
||||||
}
|
var existsQuery = _readingMedicineTrialQuestionRepository
|
||||||
}
|
.WhereIf(inDto.Id != null, x => x.Id != inDto.Id)
|
||||||
|
.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)
|
||||||
|
.Where(x => x.ShowOrder == inDto.ShowOrder);
|
||||||
|
|
||||||
|
if (await existsQuery.AnyAsync())
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("当前问题序号存在重复");
|
||||||
|
}
|
||||||
|
var entity = await _readingMedicineTrialQuestionRepository.InsertOrUpdateAsync(inDto);
|
||||||
|
await _readingMedicineTrialQuestionRepository.SaveChangesAsync();
|
||||||
|
return ResponseOutput.Ok(entity.Id.ToString());
|
||||||
|
|
||||||
await _readingMedicineTrialQuestionRepository.AddRangeAsync(needList);
|
|
||||||
var result = await _readingMedicineTrialQuestionRepository.SaveChangesAsync();
|
|
||||||
return ResponseOutput.Result(result);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -296,7 +234,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <param name="inDto"></param>
|
/// <param name="inDto"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IResponseOutput> DeleteReadingMedicineTrialQuestion(DeleteReadingMedicineTrialQuestion inDto)
|
public async Task<IResponseOutput> DeleteReadingMedicineTrialQuestion(DeleteReadingMedicineTrialQuestion inDto)
|
||||||
{
|
{
|
||||||
if (await _readingMedicineTrialQuestionRepository.AnyAsync(x => x.ParentId == inDto.Id))
|
if (await _readingMedicineTrialQuestionRepository.AnyAsync(x => x.ParentId == inDto.Id))
|
||||||
{
|
{
|
||||||
|
@ -308,6 +246,16 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#region 项目 医学审核问题 验证 确认
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 验证医学审核问题
|
/// 验证医学审核问题
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -316,7 +264,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
/// <exception cref="BusinessValidationFailedException"></exception>
|
/// <exception cref="BusinessValidationFailedException"></exception>
|
||||||
public async Task<IResponseOutput> VerifyReadingMedicineQuestion(ConfirmReadingMedicineQuestionInDto inDto)
|
public async Task<IResponseOutput> VerifyReadingMedicineQuestion(ConfirmReadingMedicineQuestionInDto inDto)
|
||||||
{
|
{
|
||||||
var readingMedicineQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId)
|
var readingMedicineQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)
|
||||||
.Select(x => new TrialQuestion()
|
.Select(x => new TrialQuestion()
|
||||||
{
|
{
|
||||||
Id = x.Id,
|
Id = x.Id,
|
||||||
|
@ -383,7 +331,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
x.IsOncologyReading,
|
x.IsOncologyReading,
|
||||||
x.IsArbitrationReading,
|
x.IsArbitrationReading,
|
||||||
}).FirstNotNullAsync();
|
}).FirstNotNullAsync();
|
||||||
var readingMedicineQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId&&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId)
|
var readingMedicineQuestionList = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId)
|
||||||
.Select(x => new TrialQuestion()
|
.Select(x => new TrialQuestion()
|
||||||
{
|
{
|
||||||
Id = x.Id,
|
Id = x.Id,
|
||||||
|
@ -443,6 +391,82 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void FindChildQuestion(GetMedicineQuestionPreviewOutDto trialReadingQuestion, List<GetMedicineQuestionPreviewOutDto> questionlists)
|
||||||
|
{
|
||||||
|
trialReadingQuestion.Childrens = questionlists.Where(x => x.ParentId == trialReadingQuestion.Id).ToList();
|
||||||
|
if (trialReadingQuestion.Childrens != null && trialReadingQuestion.Childrens.Count != 0)
|
||||||
|
{
|
||||||
|
trialReadingQuestion.Childrens.ForEach(x =>
|
||||||
|
{
|
||||||
|
this.FindChildQuestion(x, questionlists);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 从系统里面选择问题添加到项目里面
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput> AddTrialDataFromSystem(AddTrialDataFromSystemInDto inDto)
|
||||||
|
{
|
||||||
|
// 直接写??
|
||||||
|
var systemList = await _readingMedicineSystemQuestionRepository.Where(x => inDto.SystemQuestionIds.Contains(x.Id)).ToListAsync();
|
||||||
|
|
||||||
|
var maxOrder = await _readingMedicineTrialQuestionRepository.Where(x => x.TrialId == inDto.TrialId).OrderByDescending(x => x.ShowOrder).Select(x => x.ShowOrder).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
var needList= systemList.Select(x => new TrialDataFromSystem()
|
||||||
|
{
|
||||||
|
Id = NewId.NextGuid(),
|
||||||
|
ShowOrder = x.ShowOrder,
|
||||||
|
IsEnable = x.IsEnable,
|
||||||
|
IsRequired = x.IsRequired,
|
||||||
|
QuestionName = x.QuestionName,
|
||||||
|
TrialReadingCriterionId=inDto.TrialReadingCriterionId,
|
||||||
|
Type = x.Type,
|
||||||
|
ParentId=x.ParentId,
|
||||||
|
SystemQuestionId=x.Id,
|
||||||
|
ReadingCategory=x.ReadingCategory,
|
||||||
|
TypeValue = x.TypeValue,
|
||||||
|
TrialId=inDto.TrialId,
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
needList.ForEach(x => {
|
||||||
|
maxOrder++;
|
||||||
|
x.ShowOrder = maxOrder;
|
||||||
|
});
|
||||||
|
|
||||||
|
foreach (var item in needList.Where(x => x.ParentId != null))
|
||||||
|
{
|
||||||
|
var parent = needList.Where(x => x.SystemQuestionId == item.ParentId).FirstOrDefault();
|
||||||
|
if (parent == null)
|
||||||
|
{
|
||||||
|
item.ParentId = null;
|
||||||
|
item.ParentTriggerValue = String.Empty;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item.ParentId = parent.Id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await _readingMedicineTrialQuestionRepository.AddRangeAsync(needList);
|
||||||
|
var result = await _readingMedicineTrialQuestionRepository.SaveChangesAsync();
|
||||||
|
return ResponseOutput.Result(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue