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

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