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.

116 lines
5.4 KiB

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.Application.Services;
  11. using Volo.Abp.Domain.Repositories;
  12. namespace Shentun.WebPeis.Asbitems
  13. {
  14. /// <summary>
  15. /// 组合项目
  16. /// </summary>
  17. [ApiExplorerSettings(GroupName = "Work")]
  18. [Authorize]
  19. public class AsbitemAppService : ApplicationService
  20. {
  21. private readonly IRepository<Asbitem> _repository;
  22. private readonly IRepository<ItemType> _itemTypeRepository;
  23. private readonly IRepository<DiseaseScreeningType> _diseaseScreeningTypeRepository;
  24. private readonly CacheService _cacheService;
  25. public AsbitemAppService(IRepository<Asbitem> repository,
  26. CacheService cacheService,
  27. IRepository<ItemType> itemTypeRepository,
  28. IRepository<DiseaseScreeningType> diseaseScreeningTypeRepository
  29. )
  30. {
  31. _repository = repository;
  32. _cacheService = cacheService;
  33. _itemTypeRepository = itemTypeRepository;
  34. _diseaseScreeningTypeRepository = diseaseScreeningTypeRepository;
  35. }
  36. [HttpPost("api/app/Asbitem/GetDiseaseScreeningTypeAsbitemList")]
  37. //[AllowAnonymous]
  38. public async Task<List<DiseaseScreeningTypeAsbitemDto>> GetDiseaseScreeningTypeAsbitemListAsync()
  39. {
  40. var asbitems = (await _repository.GetListAsync(o => o.IsActive == 'Y' && o.IsWebAppoint == 'Y'))
  41. .OrderBy(o => o.DisplayOrder).ToList();
  42. //获取检查分类
  43. var diseaseScreeningTypeAsbitemDtos = new List<DiseaseScreeningTypeAsbitemDto>()
  44. {
  45. //排序乘以1000,确保排在疾病筛查类别后面
  46. new DiseaseScreeningTypeAsbitemDto(){
  47. DiseaseScreeningTypeId = CheckTypeFlag.Regular.ToString(),DiseaseScreeningTypeName = "科室检查",DisplayOrder = 1*1000},
  48. new DiseaseScreeningTypeAsbitemDto(){
  49. DiseaseScreeningTypeId = CheckTypeFlag.Laboratory.ToString(),DiseaseScreeningTypeName = "检验",DisplayOrder = 2*1000},
  50. new DiseaseScreeningTypeAsbitemDto(){
  51. DiseaseScreeningTypeId =CheckTypeFlag.SpecialInspection.ToString(),DiseaseScreeningTypeName = "特检",DisplayOrder = 3 * 1000},
  52. new DiseaseScreeningTypeAsbitemDto(){
  53. DiseaseScreeningTypeId = CheckTypeFlag.Radiology.ToString(),DiseaseScreeningTypeName = "放射",DisplayOrder = 4*1000}
  54. };
  55. var diseaseScreeningTypes = (await _diseaseScreeningTypeRepository.GetListAsync()).OrderBy(o=>o.DisplayOrder).ToList();
  56. diseaseScreeningTypes.ForEach(o =>
  57. {
  58. diseaseScreeningTypeAsbitemDtos.Add(new DiseaseScreeningTypeAsbitemDto()
  59. {
  60. DiseaseScreeningTypeId = o.DiseaseScreeningTypeId.ToString(),
  61. DiseaseScreeningTypeName = o.DiseaseScreeningTypeName,
  62. DisplayOrder = o.DisplayOrder
  63. });
  64. });
  65. //设置组合项目的筛查类别
  66. var itemTypes = await _itemTypeRepository.GetListAsync();
  67. var diseaseScreeningTypeAsbitems = new List<DiseaseScreeningTypeAsbitem>();
  68. foreach (var asbitem in asbitems)
  69. {
  70. var diseaseScreeningTypeAsbitem = new DiseaseScreeningTypeAsbitem()
  71. {
  72. AsbitemId = asbitem.AsbitemId,
  73. AsbitemName = asbitem.AsbitemName,
  74. ShortName = asbitem.ShortName,
  75. Price = asbitem.Price,
  76. ForSexId = asbitem.ForSexId,
  77. ForSexName = _cacheService.GetForSexNameAsync(asbitem.ForSexId).Result,
  78. IsBeforeEat = asbitem.IsBeforeEat,
  79. ClinicalMeaning = asbitem.ClinicalMeaning,
  80. IsCheck = asbitem.IsCheck,
  81. Warn = asbitem.Warn,
  82. DiseaseScreeningTypeId = asbitem.DiseaseScreeningTypeId == null ? "" : ((Guid)asbitem.DiseaseScreeningTypeId).ToString(),
  83. SimpleCode = asbitem.SimpleCode,
  84. DisplayOrder = asbitem.DisplayOrder,
  85. };
  86. var itemType = itemTypes.Where(o => o.ItemTypeId == asbitem.ItemTypeId).Single();
  87. if (itemType.PathCode.Length > 5)
  88. {
  89. itemType = itemTypes.Where(o => o.PathCode == itemType.PathCode.Substring(0, 5)).Single();
  90. asbitem.ItemTypeId = itemType.ItemTypeId;
  91. }
  92. if(string.IsNullOrWhiteSpace(diseaseScreeningTypeAsbitem.DiseaseScreeningTypeId))
  93. {
  94. diseaseScreeningTypeAsbitem.DiseaseScreeningTypeId = itemType.CheckTypeFlag.ToString();
  95. }
  96. diseaseScreeningTypeAsbitems.Add(diseaseScreeningTypeAsbitem);
  97. }
  98. //设置检查类别对应的组合项目
  99. foreach(var diseaseScreeningTypeAsbitemDto in diseaseScreeningTypeAsbitemDtos)
  100. {
  101. diseaseScreeningTypeAsbitemDto.Asbitems = diseaseScreeningTypeAsbitems.Where(o=>
  102. o.DiseaseScreeningTypeId == diseaseScreeningTypeAsbitemDto.DiseaseScreeningTypeId).ToList();
  103. }
  104. return diseaseScreeningTypeAsbitemDtos;
  105. }
  106. }
  107. }