using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Shentun.WebPeis.Enums; using Shentun.WebPeis.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; namespace Shentun.WebPeis.Asbitems { /// /// 组合项目 /// [ApiExplorerSettings(GroupName = "Work")] [Authorize] public class AsbitemAppService : ApplicationService { private readonly IRepository _repository; private readonly IRepository _itemTypeRepository; private readonly IRepository _diseaseScreeningTypeRepository; private readonly CacheService _cacheService; public AsbitemAppService(IRepository repository, CacheService cacheService, IRepository itemTypeRepository, IRepository diseaseScreeningTypeRepository ) { _repository = repository; _cacheService = cacheService; _itemTypeRepository = itemTypeRepository; _diseaseScreeningTypeRepository = diseaseScreeningTypeRepository; } [HttpPost("api/app/Asbitem/GetDiseaseScreeningTypeAsbitemList")] //[AllowAnonymous] public async Task> GetDiseaseScreeningTypeAsbitemListAsync() { var asbitems = (await _repository.GetListAsync(o => o.IsActive == 'Y' && o.IsWebAppoint == 'Y')) .OrderBy(o => o.DisplayOrder).ToList(); //获取检查分类 var diseaseScreeningTypeAsbitemDtos = new List() { //排序乘以1000,确保排在疾病筛查类别后面 new DiseaseScreeningTypeAsbitemDto(){ DiseaseScreeningTypeId = CheckTypeFlag.Regular.ToString(),DiseaseScreeningTypeName = "科室检查",DisplayOrder = 1*1000}, new DiseaseScreeningTypeAsbitemDto(){ DiseaseScreeningTypeId = CheckTypeFlag.Laboratory.ToString(),DiseaseScreeningTypeName = "检验",DisplayOrder = 2*1000}, new DiseaseScreeningTypeAsbitemDto(){ DiseaseScreeningTypeId =CheckTypeFlag.SpecialInspection.ToString(),DiseaseScreeningTypeName = "特检",DisplayOrder = 3 * 1000}, new DiseaseScreeningTypeAsbitemDto(){ DiseaseScreeningTypeId = CheckTypeFlag.Radiology.ToString(),DiseaseScreeningTypeName = "放射",DisplayOrder = 4*1000} }; var diseaseScreeningTypes = (await _diseaseScreeningTypeRepository.GetListAsync()).OrderBy(o=>o.DisplayOrder).ToList(); diseaseScreeningTypes.ForEach(o => { diseaseScreeningTypeAsbitemDtos.Add(new DiseaseScreeningTypeAsbitemDto() { DiseaseScreeningTypeId = o.DiseaseScreeningTypeId.ToString(), DiseaseScreeningTypeName = o.DiseaseScreeningTypeName, DisplayOrder = o.DisplayOrder }); }); //设置组合项目的筛查类别 var itemTypes = await _itemTypeRepository.GetListAsync(); var diseaseScreeningTypeAsbitems = new List(); foreach (var asbitem in asbitems) { var diseaseScreeningTypeAsbitem = new DiseaseScreeningTypeAsbitem() { AsbitemId = asbitem.AsbitemId, AsbitemName = asbitem.AsbitemName, ShortName = asbitem.ShortName, Price = asbitem.Price, ForSexId = asbitem.ForSexId, ForSexName = _cacheService.GetForSexNameAsync(asbitem.ForSexId).Result, IsBeforeEat = asbitem.IsBeforeEat, ClinicalMeaning = asbitem.ClinicalMeaning, IsCheck = asbitem.IsCheck, Warn = asbitem.Warn, DiseaseScreeningTypeId = asbitem.DiseaseScreeningTypeId == null ? "" : ((Guid)asbitem.DiseaseScreeningTypeId).ToString(), SimpleCode = asbitem.SimpleCode, DisplayOrder = asbitem.DisplayOrder, }; var itemType = itemTypes.Where(o => o.ItemTypeId == asbitem.ItemTypeId).Single(); if (itemType.PathCode.Length > 5) { itemType = itemTypes.Where(o => o.PathCode == itemType.PathCode.Substring(0, 5)).Single(); asbitem.ItemTypeId = itemType.ItemTypeId; } if(string.IsNullOrWhiteSpace(diseaseScreeningTypeAsbitem.DiseaseScreeningTypeId)) { diseaseScreeningTypeAsbitem.DiseaseScreeningTypeId = itemType.CheckTypeFlag.ToString(); } diseaseScreeningTypeAsbitems.Add(diseaseScreeningTypeAsbitem); } //设置检查类别对应的组合项目 foreach(var diseaseScreeningTypeAsbitemDto in diseaseScreeningTypeAsbitemDtos) { diseaseScreeningTypeAsbitemDto.Asbitems = diseaseScreeningTypeAsbitems.Where(o=> o.DiseaseScreeningTypeId == diseaseScreeningTypeAsbitemDto.DiseaseScreeningTypeId).ToList(); } return diseaseScreeningTypeAsbitemDtos; } } }