|
|
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.Application.Services;using Volo.Abp.Domain.Repositories;
namespace Shentun.WebPeis.Asbitems{ /// <summary>
/// 组合项目
/// </summary>
[ApiExplorerSettings(GroupName = "Work")] [Authorize] public class AsbitemAppService : ApplicationService { private readonly IRepository<Asbitem> _repository; private readonly IRepository<ItemType> _itemTypeRepository; private readonly IRepository<DiseaseScreeningType> _diseaseScreeningTypeRepository; private readonly CacheService _cacheService;
public AsbitemAppService(IRepository<Asbitem> repository, CacheService cacheService, IRepository<ItemType> itemTypeRepository, IRepository<DiseaseScreeningType> diseaseScreeningTypeRepository ) { _repository = repository; _cacheService = cacheService; _itemTypeRepository = itemTypeRepository; _diseaseScreeningTypeRepository = diseaseScreeningTypeRepository;
} [HttpPost("api/app/Asbitem/GetDiseaseScreeningTypeAsbitemList")] //[AllowAnonymous]
public async Task<List<DiseaseScreeningTypeAsbitemDto>> GetDiseaseScreeningTypeAsbitemListAsync() { var asbitems = (await _repository.GetListAsync(o => o.IsActive == 'Y' && o.IsWebAppoint == 'Y')) .OrderBy(o => o.DisplayOrder).ToList();
//获取检查分类
var diseaseScreeningTypeAsbitemDtos = new List<DiseaseScreeningTypeAsbitemDto>() { //排序乘以1000,确保排在疾病筛查类别后面
new DiseaseScreeningTypeAsbitemDto(){ DiseaseScreeningTypeId = CheckTypeFlag.Regular.ToString(),DiseaseScreeningTypeName = "科室检查",DisplayOrder = 1*1000}, new DiseaseScreeningTypeAsbitemDto(){ DiseaseScreeningTypeId = CheckTypeFlag.Laboratory.ToString(),DiseaseScreeningTypeName = "检验",DisplayOrder = 2*1000}, new DiseaseScreeningTypeAsbitemDto(){ DiseaseScreeningTypeId =CheckTypeFlag.SpecialInspection.ToString(),DiseaseScreeningTypeName = "特检",DisplayOrder = 3 * 1000}, new DiseaseScreeningTypeAsbitemDto(){ DiseaseScreeningTypeId = CheckTypeFlag.Radiology.ToString(),DiseaseScreeningTypeName = "放射",DisplayOrder = 4*1000} };
var diseaseScreeningTypes = (await _diseaseScreeningTypeRepository.GetListAsync()).OrderBy(o=>o.DisplayOrder).ToList(); diseaseScreeningTypes.ForEach(o => { diseaseScreeningTypeAsbitemDtos.Add(new DiseaseScreeningTypeAsbitemDto() { DiseaseScreeningTypeId = o.DiseaseScreeningTypeId.ToString(), DiseaseScreeningTypeName = o.DiseaseScreeningTypeName, DisplayOrder = o.DisplayOrder }); }); //设置组合项目的筛查类别
var itemTypes = await _itemTypeRepository.GetListAsync(); var diseaseScreeningTypeAsbitems = new List<DiseaseScreeningTypeAsbitem>(); foreach (var asbitem in asbitems) { var diseaseScreeningTypeAsbitem = new DiseaseScreeningTypeAsbitem() { 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 == null ? "" : ((Guid)asbitem.DiseaseScreeningTypeId).ToString(), SimpleCode = asbitem.SimpleCode, DisplayOrder = asbitem.DisplayOrder, };
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; } if(string.IsNullOrWhiteSpace(diseaseScreeningTypeAsbitem.DiseaseScreeningTypeId)) { diseaseScreeningTypeAsbitem.DiseaseScreeningTypeId = itemType.CheckTypeFlag.ToString(); } diseaseScreeningTypeAsbitems.Add(diseaseScreeningTypeAsbitem); }
//设置检查类别对应的组合项目
foreach(var diseaseScreeningTypeAsbitemDto in diseaseScreeningTypeAsbitemDtos) { diseaseScreeningTypeAsbitemDto.Asbitems = diseaseScreeningTypeAsbitems.Where(o=> o.DiseaseScreeningTypeId == diseaseScreeningTypeAsbitemDto.DiseaseScreeningTypeId).ToList(); } return diseaseScreeningTypeAsbitemDtos; }
}}
|