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; } } }