You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							129 lines
						
					
					
						
							6.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							129 lines
						
					
					
						
							6.2 KiB
						
					
					
				
								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<MedicalPackage> _repository;
							 | 
						|
								        private readonly IRepository<Asbitem> _asbitemRepository;
							 | 
						|
								        private readonly IRepository<ItemType> _itemTypeRepository;
							 | 
						|
								        private readonly IRepository<MedicalPackageDetail> _medicalPackageDetailRepository;
							 | 
						|
								        private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
							 | 
						|
								        private readonly CacheService _cacheService;
							 | 
						|
								
							 | 
						|
								        public MedicalPackageAppService(IRepository<MedicalPackage> repository,
							 | 
						|
								             CacheService cacheService,
							 | 
						|
								             IRepository<Asbitem> asbitemRepository,
							 | 
						|
								             IRepository<MedicalPackageDetail> medicalPackageDetailRepository,
							 | 
						|
								             IRepository<ItemType> itemTypeRepository,
							 | 
						|
								             IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository
							 | 
						|
								
							 | 
						|
								           )
							 | 
						|
								        {
							 | 
						|
								            _repository = repository;
							 | 
						|
								            _cacheService = cacheService;
							 | 
						|
								            _asbitemRepository = asbitemRepository;
							 | 
						|
								            _medicalPackageDetailRepository = medicalPackageDetailRepository;
							 | 
						|
								            _itemTypeRepository = itemTypeRepository;
							 | 
						|
								            _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
							 | 
						|
								        }
							 | 
						|
								        /// <summary>
							 | 
						|
								        /// 获取能预约的套餐信息
							 | 
						|
								        /// </summary>
							 | 
						|
								        /// <returns></returns>
							 | 
						|
								        [HttpPost("api/app/MedicalPackage/GetCanAppointList")]
							 | 
						|
								        //[AllowAnonymous]
							 | 
						|
								        public async Task<List<MedicalPackageDto>> GetCanAppointListAsync()
							 | 
						|
								        {
							 | 
						|
								            var list = (await _repository.GetListAsync(o => o.IsActive == 'Y' && o.IsWebAppoint == 'Y'))
							 | 
						|
								                .OrderBy(o => o.DisplayOrder).ToList();
							 | 
						|
								            var returnList = ObjectMapper.Map<List<MedicalPackage>, List<MedicalPackageDto>>(list); ;
							 | 
						|
								            foreach (var item in returnList)
							 | 
						|
								            {
							 | 
						|
								                item.ForSexName = await _cacheService.GetForSexNameAsync(item.ForSexId);
							 | 
						|
								                item.MaritalStatusName = await _cacheService.GetForSexNameAsync(item.MaritalStatusId);
							 | 
						|
								            }
							 | 
						|
								            return returnList; ;
							 | 
						|
								
							 | 
						|
								        }
							 | 
						|
								        /// <summary>
							 | 
						|
								        /// 获取套餐或单位分组组合项目
							 | 
						|
								        /// </summary>
							 | 
						|
								        /// <param name="input"></param>
							 | 
						|
								        /// <returns></returns>
							 | 
						|
								        [HttpPost("api/app/MedicalPackage/GetCheckTypeWithAsbitemsListByMedicalPackageId")]
							 | 
						|
								        //[AllowAnonymous]
							 | 
						|
								        public async Task<List<MedicalPackageCheckTypeWithAsbitemsDto>> 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<MedicalPackageCheckTypeWithAsbitemsDto>()
							 | 
						|
								            {
							 | 
						|
								                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;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								}
							 |