using IRaCIS.Application.Interfaces; using IRaCIS.Application.Contracts; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; 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); } /// /// 添加和编辑 /// /// /// [HttpPost] public async Task AddOrUpdateBasicDic(AddOrEditBasicDic addOrEditBasic) { //if (addOrEditBasic.Id == null) //{ // var entity = await _dicRepository.InsertDictionaryAsync(addOrEditBasic); // await _dicRepository.UpdateFromQueryAsync(t => t.ParentId == Guid.Empty, // u => new Dictionary() { ParentId = null }); // return ResponseOutput.Ok(entity.Id.ToString()); //} //else //{ // var entity = await _dicRepository.InsertOrUpdateAsync(addOrEditBasic, true); // return ResponseOutput.Ok(entity.Id.ToString()); //} var entity = await _dicRepository.InsertOrUpdateAsync(addOrEditBasic, true); return ResponseOutput.Ok(entity.Id.ToString()); } /// /// 获取子项数组 /// /// /// [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(); } /// 删除字典数据 [HttpDelete("{id:guid}")] public async Task DeleteDictionary(Guid id) { if ( await _dicRepository.AnyAsync(t => t.ParentId == id)) { return ResponseOutput.NotOk("有子项数据,不允许直接删除!"); } if ((await _doctorDictionaryRepository.AnyAsync(t => t.DictionaryId == id)) || (await _doctorRepository.AnyAsync(t => t.SpecialityId == id || t.PositionId == id || t.DepartmentId == id || t.RankId == id)) ) { return ResponseOutput.NotOk("This item is referenced by content of the reviewer's resume."); } if (await _trialDictionaryRepository.AnyAsync(t => t.DictionaryId == id) || await _trialRepository.AnyAsync(t => t.ReviewModeId == id)) { return ResponseOutput.NotOk("This item is referenced by content of the trial infomation."); } var success = await _dicRepository.BatchDeleteAsync(t => t.Id == id); return ResponseOutput.Result(success); } /// /// 传递父亲 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()); } /// /// 根据父亲Code 获取单个下拉框数据 /// /// /// 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; } /// /// 获取所有下拉框 枚举 bool 数据 /// /// [AllowAnonymous] public async Task>> GetBasicDataAllSelect() { var searchList = await _dicRepository.Where(t => t.ParentId != null && t.IsEnable).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); return searchList.GroupBy(t => t.ParentCode).ToDictionary(g => g.Key, g => g.ToList()); } } }