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

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