//--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2022-08-12 14:07:20
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Domain.Models;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Infra.EFCore.Common;
namespace IRaCIS.Core.Application.Service
{
///
/// 器官服务层
///
[ApiExplorerSettings(GroupName = "Reading")]
public class OrganInfoService : BaseService, IOrganInfoService
{
private readonly IRepository _organInfoRepository;
private readonly IRepository _organTrialInfoRepository;
public OrganInfoService(
IRepository organInfoRepository,
IRepository organTrialInfoRepository
)
{
_organInfoRepository = organInfoRepository;
this._organTrialInfoRepository = organTrialInfoRepository;
}
///
/// 获取系统器官信息
///
///
///
[HttpPost]
public async Task> GetOrganInfoList(OrganInfoQuery inQuery)
{
var organInfoQueryable = _organInfoRepository
.WhereIf(!inQuery.TypeName.IsNullOrEmpty(),x=>x.TypeName==inQuery.TypeName)
.ProjectTo(_mapper.ConfigurationProvider);
return await organInfoQueryable.ToListAsync();
}
///
/// 新增或修改系统器官数据
///
///
///
[HttpPost]
public async Task AddOrUpdateOrganInfo(OrganInfoAddOrEdit addOrEditOrganInfo)
{
var entity = await _organInfoRepository.InsertOrUpdateAsync(addOrEditOrganInfo, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
///
/// 删除系统器官
///
///
///
[HttpDelete("{Id:guid}")]
public async Task DeleteOrganInfo(Guid Id)
{
var success = await _organInfoRepository.DeleteFromQueryAsync(t => t.Id == Id, true);
return ResponseOutput.Ok();
}
///
/// 批量添加项目器官
///
///
///
public async Task BatchAddTrialOrgan(BatchAddTrialOrganInDto inDto)
{
await _organTrialInfoRepository.BatchDeleteNoTrackingAsync(t => t.TrialId==inDto.TrialId&&t.OrganType == inDto.OrganType);
List organTrialInfos = inDto.OrganIds.Select(x => new OrganTrialInfo()
{
OrganInfoId=x,
TrialId=inDto.TrialId,
OrganType=inDto.OrganType,
}).ToList();
await _organTrialInfoRepository.AddRangeAsync(organTrialInfos);
await _organInfoRepository.SaveChangesAsync();
return ResponseOutput.Ok();
}
///
/// 删除系统器官
///
///
///
[HttpDelete("{Id:guid}")]
public async Task DeleteTrialOrganInfo(Guid Id)
{
var success = await _organTrialInfoRepository.DeleteFromQueryAsync(t => t.Id == Id, true);
return ResponseOutput.Ok();
}
///
/// 获取项目器官信息
///
///
///
[HttpPost]
public async Task> GetTrialOrganList(GetTrialOrganListInDto inDto)
{
var organInfoQueryable = from data in _organInfoRepository.Where(x => x.OrganType == inDto.OrganType)
join trialData in _organTrialInfoRepository.Where(x => x.TrialId == inDto.TrialId && x.OrganType == inDto.OrganType)
on data.Id equals trialData.OrganInfoId
select new GetTrialOrganListOutDto()
{
Id = trialData.Id,
Part = data.Part,
TULAT = data.TULAT,
TULOC = data.TULOC,
TypeName = data.TypeName,
Remark= data.Remark,
OrganType=data.OrganType,
};
return await organInfoQueryable.ToListAsync();
}
///
/// 获取项目勾选器官信息
///
///
///
[HttpPost]
public async Task> GetTrialCheckOrganList(GetTrialOrganListInDto inDto)
{
var organInfoQueryable = from data in _organInfoRepository.Where(x => x.OrganType == inDto.OrganType)
join trialData in _organTrialInfoRepository.Where(x => x.TrialId == inDto.TrialId && x.OrganType == inDto.OrganType)
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,
TypeName = data.TypeName,
IsCheckd= leftjoin!=null,
Remark = data.Remark,
};
return await organInfoQueryable.ToListAsync();
}
}
}