//-------------------------------------------------------------------- // 此代码由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; private readonly IRepository _criterionNidusRepository; public OrganInfoService( IRepository organInfoRepository, IRepository organTrialInfoRepository, IRepository criterionNidusRepository ) { _organInfoRepository = organInfoRepository; this._organTrialInfoRepository = organTrialInfoRepository; this._criterionNidusRepository = criterionNidusRepository; } /// /// 获取标准病灶列表 /// /// /// [HttpPost] public async Task> GetCriterionNidusList(CriterionNidusQuery inQuery) { var criterionNidusQueryable = _criterionNidusRepository .Where(x=>x.CriterionId== inQuery.CriterionId) .ProjectTo(_mapper.ConfigurationProvider); return await criterionNidusQueryable.ToListAsync(); } /// /// 新增修改标准病灶列表 /// /// /// [HttpPost] public async Task AddOrUpdateCriterionNidus(CriterionNidusAddOrEdit addOrEditCriterionNidus) { var entity = await _criterionNidusRepository.InsertOrUpdateAsync(addOrEditCriterionNidus, true); return ResponseOutput.Ok(entity.Id.ToString()); } /// /// 删除病灶列表 /// /// /// [HttpDelete("{id:guid}")] public async Task DeleteCriterionNidus(Guid id) { var success = await _criterionNidusRepository.DeleteFromQueryAsync(t => t.Id == id, true); return ResponseOutput.Ok(); } /// /// 获取系统器官信息 /// /// /// [HttpPost] public async Task> GetOrganInfoList(OrganInfoQuery inQuery) { var organInfoQueryable = _organInfoRepository .WhereIf(inQuery.CriterionNidusId != null, x => x.CriterionNidusId == inQuery.CriterionNidusId) .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.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 select new GetTrialOrganListOutDto() { Id = trialData.Id, Part = data.Part, TULAT = data.TULAT, TULOC = data.TULOC, Remark= data.Remark, CriterionNidusId = data.CriterionNidusId, IsEnable= trialData.IsEnable, }; return await organInfoQueryable.ToListAsync(); } /// /// 获取项目勾选器官信息 /// /// /// [HttpPost] public async Task> 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(); } /// /// 设置项目器官是否生效 /// /// /// [HttpPost] public async Task SetOrganIsEnable(SetOrganIsEnableInDto inDto) { await _organTrialInfoRepository.UpdatePartialFromQueryAsync(x => inDto.Ids.Contains(x.Id), x => new OrganTrialInfo() { IsEnable=inDto.IsEnable }); await _organTrialInfoRepository.SaveChangesAsync(); return ResponseOutput.Ok(); } } }