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