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; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; namespace Shentun.WebPeis.MedicalPackages { [ApiExplorerSettings(GroupName = "Work")] [Authorize] public class MedicalPackageAppService : ApplicationService { private readonly IRepository _repository; private readonly IRepository _asbitemRepository; private readonly IRepository _itemTypeRepository; private readonly IRepository _medicalPackageDetailRepository; private readonly IRepository _customerOrgGroupDetailRepository; private readonly CacheService _cacheService; public MedicalPackageAppService(IRepository repository, CacheService cacheService, IRepository asbitemRepository, IRepository medicalPackageDetailRepository, IRepository itemTypeRepository, IRepository customerOrgGroupDetailRepository ) { _repository = repository; _cacheService = cacheService; _asbitemRepository = asbitemRepository; _medicalPackageDetailRepository = medicalPackageDetailRepository; _itemTypeRepository = itemTypeRepository; _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository; } /// /// 获取能预约的套餐信息 /// /// [HttpPost("api/app/MedicalPackage/GetCanAppointList")] //[AllowAnonymous] public async Task> GetCanAppointListAsync() { var list = (await _repository.GetListAsync(o => o.IsActive == 'Y' && o.IsWebAppoint == 'Y')) .OrderBy(o => o.DisplayOrder).ToList(); var returnList = ObjectMapper.Map, List>(list); ; foreach (var item in returnList) { item.ForSexName = await _cacheService.GetForSexNameAsync(item.ForSexId); item.MaritalStatusName = await _cacheService.GetForSexNameAsync(item.MaritalStatusId); } return returnList; ; } /// /// 获取套餐或单位分组组合项目 /// /// /// [HttpPost("api/app/MedicalPackage/GetCheckTypeWithAsbitemsListByMedicalPackageId")] //[AllowAnonymous] public async Task> GetCheckTypeWithAsbitemsListByMedicalPackageIdAsync(MedicalPackageIdInput input) { //获取套餐所有组合项目 var asbitems = (from medicalPackageDetail in await _medicalPackageDetailRepository.GetQueryableAsync() join asbitem in await _asbitemRepository.GetQueryableAsync() on medicalPackageDetail.AsbitemId equals asbitem.AsbitemId where medicalPackageDetail.MedicalPackageId == input.MedicalPackageId select new MedicalPackageAsbitem() { ItemTypeId = asbitem.ItemTypeId, 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, SimpleCode = asbitem.SimpleCode, DisplayOrder = asbitem.DisplayOrder, } ).ToList(); //获取检查分类 var medicalPackageAsbitemDtos = new List() { new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Regular,CheckTypeFlagName = "科室检查",DisplayOrder = 1}, new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Laboratory,CheckTypeFlagName = "检验",DisplayOrder = 2}, new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag =CheckTypeFlag.SpecialInspection,CheckTypeFlagName = "特检",DisplayOrder = 3}, new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Radiology,CheckTypeFlagName = "放射",DisplayOrder = 4} }; var itemTypes = await _itemTypeRepository.GetListAsync(); foreach (var asbitem in asbitems) { asbitem.ForSexName = await _cacheService.GetForSexNameAsync(asbitem.ForSexId); 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; } asbitem.CheckTypeFlag = itemType.CheckTypeFlag; } //设置每个分类包含的组合项目 foreach (var medicalPackageAsbitemDto in medicalPackageAsbitemDtos) { medicalPackageAsbitemDto.Asbitems = asbitems.Where(o => o.CheckTypeFlag == medicalPackageAsbitemDto.CheckTypeFlag).ToList(); } return medicalPackageAsbitemDtos; } } }