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

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. using Microsoft.AspNetCore.Authorization;
  2. using Microsoft.AspNetCore.Mvc;
  3. using Shentun.WebPeis.Enums;
  4. using Shentun.WebPeis.Models;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using Volo.Abp;
  11. using Volo.Abp.Application.Services;
  12. using Volo.Abp.Domain.Repositories;
  13. namespace Shentun.WebPeis.MedicalPackages
  14. {
  15. [ApiExplorerSettings(GroupName = "Work")]
  16. [Authorize]
  17. public class MedicalPackageAppService : ApplicationService
  18. {
  19. private readonly IRepository<MedicalPackage> _repository;
  20. private readonly IRepository<Asbitem> _asbitemRepository;
  21. private readonly IRepository<ItemType> _itemTypeRepository;
  22. private readonly IRepository<MedicalPackageDetail> _medicalPackageDetailRepository;
  23. private readonly IRepository<CustomerOrgGroupDetail> _customerOrgGroupDetailRepository;
  24. private readonly CacheService _cacheService;
  25. public MedicalPackageAppService(IRepository<MedicalPackage> repository,
  26. CacheService cacheService,
  27. IRepository<Asbitem> asbitemRepository,
  28. IRepository<MedicalPackageDetail> medicalPackageDetailRepository,
  29. IRepository<ItemType> itemTypeRepository,
  30. IRepository<CustomerOrgGroupDetail> customerOrgGroupDetailRepository
  31. )
  32. {
  33. _repository = repository;
  34. _cacheService = cacheService;
  35. _asbitemRepository = asbitemRepository;
  36. _medicalPackageDetailRepository = medicalPackageDetailRepository;
  37. _itemTypeRepository = itemTypeRepository;
  38. _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository;
  39. }
  40. /// <summary>
  41. /// 获取能预约的套餐信息
  42. /// </summary>
  43. /// <returns></returns>
  44. [HttpPost("api/app/MedicalPackage/GetCanAppointList")]
  45. //[AllowAnonymous]
  46. public async Task<List<MedicalPackageDto>> GetCanAppointListAsync()
  47. {
  48. var list = (await _repository.GetListAsync(o => o.IsActive == 'Y' && o.IsWebAppoint == 'Y'))
  49. .OrderBy(o => o.DisplayOrder).ToList();
  50. var returnList = ObjectMapper.Map<List<MedicalPackage>, List<MedicalPackageDto>>(list); ;
  51. foreach (var item in returnList)
  52. {
  53. item.ForSexName = await _cacheService.GetForSexNameAsync(item.ForSexId);
  54. item.MaritalStatusName = await _cacheService.GetForSexNameAsync(item.MaritalStatusId);
  55. }
  56. return returnList; ;
  57. }
  58. /// <summary>
  59. /// 获取套餐或单位分组组合项目
  60. /// </summary>
  61. /// <param name="input"></param>
  62. /// <returns></returns>
  63. [HttpPost("api/app/MedicalPackage/GetCheckTypeWithAsbitemsListByMedicalPackageId")]
  64. //[AllowAnonymous]
  65. public async Task<List<MedicalPackageCheckTypeWithAsbitemsDto>> GetCheckTypeWithAsbitemsListByMedicalPackageIdAsync(MedicalPackageIdInput input)
  66. {
  67. //获取套餐所有组合项目
  68. var asbitems = (from medicalPackageDetail in await _medicalPackageDetailRepository.GetQueryableAsync()
  69. join asbitem in await _asbitemRepository.GetQueryableAsync()
  70. on medicalPackageDetail.AsbitemId equals asbitem.AsbitemId
  71. where medicalPackageDetail.MedicalPackageId == input.MedicalPackageId
  72. select new MedicalPackageAsbitem()
  73. {
  74. ItemTypeId = asbitem.ItemTypeId,
  75. AsbitemId = asbitem.AsbitemId,
  76. AsbitemName = asbitem.AsbitemName,
  77. ShortName = asbitem.ShortName,
  78. Price = asbitem.Price,
  79. ForSexId = asbitem.ForSexId,
  80. //ForSexName = _cacheService.GetForSexNameAsync(asbitem.ForSexId).Result,
  81. IsBeforeEat = asbitem.IsBeforeEat,
  82. ClinicalMeaning = asbitem.ClinicalMeaning,
  83. IsCheck = asbitem.IsCheck,
  84. Warn = asbitem.Warn,
  85. DiseaseScreeningTypeId = asbitem.DiseaseScreeningTypeId,
  86. SimpleCode = asbitem.SimpleCode,
  87. DisplayOrder = asbitem.DisplayOrder,
  88. }
  89. ).ToList();
  90. //获取检查分类
  91. var medicalPackageAsbitemDtos = new List<MedicalPackageCheckTypeWithAsbitemsDto>()
  92. {
  93. new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Regular,CheckTypeFlagName = "科室检查",DisplayOrder = 1},
  94. new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Laboratory,CheckTypeFlagName = "检验",DisplayOrder = 2},
  95. new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag =CheckTypeFlag.SpecialInspection,CheckTypeFlagName = "特检",DisplayOrder = 3},
  96. new MedicalPackageCheckTypeWithAsbitemsDto(){CheckTypeFlag = CheckTypeFlag.Radiology,CheckTypeFlagName = "放射",DisplayOrder = 4}
  97. };
  98. var itemTypes = await _itemTypeRepository.GetListAsync();
  99. foreach (var asbitem in asbitems)
  100. {
  101. asbitem.ForSexName = await _cacheService.GetForSexNameAsync(asbitem.ForSexId);
  102. var itemType = itemTypes.Where(o => o.ItemTypeId == asbitem.ItemTypeId).Single();
  103. if (itemType.PathCode.Length > 5)
  104. {
  105. itemType = itemTypes.Where(o => o.PathCode == itemType.PathCode.Substring(0, 5)).Single();
  106. asbitem.ItemTypeId = itemType.ItemTypeId;
  107. }
  108. asbitem.CheckTypeFlag = itemType.CheckTypeFlag;
  109. }
  110. //设置每个分类包含的组合项目
  111. foreach (var medicalPackageAsbitemDto in medicalPackageAsbitemDtos)
  112. {
  113. medicalPackageAsbitemDto.Asbitems = asbitems.Where(o => o.CheckTypeFlag == medicalPackageAsbitemDto.CheckTypeFlag).ToList();
  114. }
  115. return medicalPackageAsbitemDtos;
  116. }
  117. }
  118. }