using IRaCIS.Core.Infrastructure.ExpressionExtend;
using IRaCIS.Application.Interfaces;
using IRaCIS.Application.Contracts;
using IRaCIS.Core.Infra.EFCore;
using Microsoft.AspNetCore.Mvc;
using Panda.DynamicWebApi.Attributes;
namespace IRaCIS.Application.Services
{
///
/// 数据字典-基础数据维护
///
[ApiExplorerSettings(GroupName = "Common")]
public class DictionaryService : BaseService, IDictionaryService
{
private readonly IRepository _dicRepository;
private readonly IRepository _doctorDictionaryRepository;
private readonly IRepository _trialDictionaryRepository;
private readonly IRepository _doctorRepository;
private readonly IRepository _trialRepository;
public DictionaryService(IRepository sysDicRepository, IRepository doctorDictionaryRepository, IRepository trialDictionaryRepository,
IRepository doctorRepository, IRepository trialRepository)
{
_dicRepository = sysDicRepository;
_doctorDictionaryRepository = doctorDictionaryRepository;
_trialDictionaryRepository = trialDictionaryRepository;
_doctorRepository = doctorRepository;
_trialRepository = trialRepository;
}
///
/// New 查询条件 IsConfig 代表是字典类型配置项 否就是我们普通的项 和普通项的子项
///
///
///
[HttpPost]
public async Task> GetBasicDicList(BasicDicQuery basicDicQuery)
{
var systemBasicDataQueryable = _dicRepository.Where(t => t.ParentId == null)
.WhereIf(!string.IsNullOrEmpty(basicDicQuery.Code), t => t.Code.Contains(basicDicQuery.Code!))
.WhereIf(!string.IsNullOrEmpty(basicDicQuery.KeyName), t => t.KeyName.Contains(basicDicQuery.KeyName!))
.WhereIf(basicDicQuery.ConfigTypeId != null, t => t.ConfigTypeId == basicDicQuery.ConfigTypeId!)
.WhereIf(basicDicQuery.IsConfig != null, t => t.IsConfig == basicDicQuery.IsConfig)
.ProjectTo(_mapper.ConfigurationProvider);
return await systemBasicDataQueryable.ToPagedListAsync(basicDicQuery.PageIndex, basicDicQuery.PageSize, String.IsNullOrEmpty(basicDicQuery.SortField) ? "Code" : basicDicQuery.SortField, basicDicQuery.Asc);
}
///
/// New
///
///
///
[HttpPost]
public async Task AddOrUpdateBasicDic(AddOrEditBasicDic addOrEditBasic)
{
var entity = await _repository.InsertOrUpdateAsync(addOrEditBasic, true);
return ResponseOutput.Ok(entity.Id.ToString());
}
///
/// New
///
///
///
[HttpGet("{parentId:guid}")]
public async Task> GetChildList(Guid parentId)
{
return await _dicRepository.Where(t => t.ParentId == parentId)
.OrderBy(t => t.ShowOrder).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
}
///
/// 传递父亲 code 字符串 数组 返回多个下拉框数据
///
///
///
[HttpPost]
public async Task>> GetBasicDataSelect(string[] searchArray)
{
var searchList = await _dicRepository.Where(t => searchArray.Contains(t.Parent.Code) && t.ParentId != null && t.IsEnable).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
return searchList.GroupBy(t => t.ParentCode).ToDictionary(g => g.Key, g => g.ToList());
}
public async Task> GetBasicDataSelect(string searchKey)
{
var searchList = await _dicRepository.Where(t => t.Parent.Code== searchKey && t.ParentId != null && t.IsEnable).ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
return searchList;
}
}
}