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.
161 lines
6.4 KiB
161 lines
6.4 KiB
using AutoMapper.Internal.Mappers;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Shentun.Peis.Asbitems;
|
|
using Shentun.Peis.Models;
|
|
using Shentun.Peis.MedicalPackageDetails;
|
|
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;
|
|
using Volo.Abp.Identity;
|
|
using Volo.Abp;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Shentun.Peis.CustomerOrgGroupDetails;
|
|
|
|
namespace Shentun.Peis.MedicalPackageDetails
|
|
{
|
|
|
|
/// <summary>
|
|
/// 体检套餐包含的组合项目
|
|
/// </summary>
|
|
[ApiExplorerSettings(GroupName = "Work")]
|
|
[Authorize]
|
|
public class MedicalPackageDetailAppService : ApplicationService
|
|
{
|
|
private readonly IRepository<MedicalPackageDetail> _repository;
|
|
private readonly IRepository<IdentityUser, Guid> _userRepository;
|
|
private readonly MedicalPackageDetailManager _manager;
|
|
|
|
public MedicalPackageDetailAppService(IRepository<MedicalPackageDetail> repository, IRepository<IdentityUser, Guid> userRepository, MedicalPackageDetailManager manager)
|
|
{
|
|
this._repository = repository;
|
|
this._userRepository = userRepository;
|
|
this._manager = manager;
|
|
}
|
|
|
|
///// <summary>
|
|
///// 创建
|
|
///// </summary>
|
|
///// <param name="input"></param>
|
|
///// <returns></returns>
|
|
//[HttpPost("api/app/medicalpackagedetail/createmedicalpackagedetail")]
|
|
//public async Task<MedicalPackageDetailDto> CreateMedicalPackageDetailAsync(CreateMedicalPackageDetailDto input)
|
|
//{
|
|
// var createEntity = ObjectMapper.Map<CreateMedicalPackageDetailDto, MedicalPackageDetail>(input);
|
|
// var entity = await _repository.InsertAsync(createEntity);
|
|
// var dto = ObjectMapper.Map<MedicalPackageDetail, MedicalPackageDetailDto>(entity);
|
|
// return dto;
|
|
//}
|
|
|
|
|
|
/// <summary>
|
|
/// 批量创建 先删除
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
/// <exception cref="UserFriendlyException"></exception>
|
|
[HttpPost("api/app/medicalpackagedetail/createmedicalpackagedetailmany")]
|
|
public async Task CreateMedicalPackageDetailManyAsync(CreateMedicalPackageDetailManyDto input)
|
|
{
|
|
//删除套餐明细 按套餐ID
|
|
await _manager.CheckAndDeleteAsync(input.MedicalPackageId);
|
|
|
|
if (input.Details.Any())
|
|
{
|
|
List<MedicalPackageDetail> medicalPackageDetails = new List<MedicalPackageDetail>();
|
|
foreach (var details in input.Details)
|
|
{
|
|
var entity = new MedicalPackageDetail
|
|
{
|
|
Amount = details.Amount,
|
|
Price = details.Price,
|
|
MedicalPackageId = input.MedicalPackageId,
|
|
AsbitemId = details.AsbitemId
|
|
};
|
|
medicalPackageDetails.Add(_manager.CreateAsync(entity));
|
|
}
|
|
|
|
if (medicalPackageDetails.Count > 0)
|
|
{
|
|
await _repository.InsertManyAsync(medicalPackageDetails);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
///// <summary>
|
|
///// 删除
|
|
///// </summary>
|
|
///// <param name="MedicalPackageId">体检套餐ID</param>
|
|
///// <param name="AsbitemId">组合项目ID</param>
|
|
///// <returns></returns>
|
|
//public async Task DeleteAsync(Guid MedicalPackageId, Guid AsbitemId)
|
|
//{
|
|
// await _repository.DeleteAsync(d => d.AsbitemId == AsbitemId && d.MedicalPackageId == MedicalPackageId);
|
|
//}
|
|
|
|
|
|
/// <summary>
|
|
/// 获取列表 体检套餐包含的组合项目
|
|
/// </summary>
|
|
/// <param name="input"></param>
|
|
/// <returns></returns>
|
|
[HttpPost("api/app/medicalpackagedetail/getmedicalpackageinasbitem")]
|
|
public async Task<List<MedicalPackageDetailDto>> GetMedicalPackageInAsbitemAsync(MedicalPackageInAsbitemDto input)
|
|
{
|
|
|
|
var entlist = (await _repository.GetDbSetAsync()).Include(c => c.Asbitem)
|
|
.Where(m => m.MedicalPackageId == input.MedicalPackageId).ToList();
|
|
|
|
var userList = await _userRepository.GetListAsync();
|
|
|
|
var entdto = entlist.Select(s => new MedicalPackageDetailDto
|
|
{
|
|
ClinicalMeaning = s.Asbitem.ClinicalMeaning,
|
|
CreationTime = s.Asbitem.CreationTime,
|
|
CreatorId = s.Asbitem.CreatorId,
|
|
DefaultResult = s.Asbitem.DefaultResult,
|
|
DeviceTypeId = s.Asbitem.DeviceTypeId,
|
|
DiagnosisFunction = s.Asbitem.DiagnosisFunction,
|
|
DisplayName = s.Asbitem.DisplayName,
|
|
DisplayOrder = s.Asbitem.DisplayOrder,
|
|
ForSexId = s.Asbitem.ForSexId,
|
|
Id = s.Asbitem.Id,
|
|
//InvoiceItemTypeId = s.Asbitem.InvoiceItemTypeId,
|
|
IsActive = s.Asbitem.IsActive,
|
|
IsBeforeEat = s.Asbitem.IsBeforeEat,
|
|
IsCheck = s.Asbitem.IsCheck,
|
|
IsContinueProcess = s.Asbitem.IsContinueProcess,
|
|
IsDiagnosisFunction = s.Asbitem.IsDiagnosisFunction,
|
|
IsItemResultMerger = s.Asbitem.IsItemResultMerger,
|
|
IsPictureRotate = s.Asbitem.IsPictureRotate,
|
|
ItemTypeId = s.Asbitem.ItemTypeId,
|
|
LastModificationTime = s.Asbitem.LastModificationTime,
|
|
LastModifierId = s.Asbitem.LastModifierId,
|
|
Price = s.Asbitem.Price,
|
|
QueueTime = s.Asbitem.QueueTime,
|
|
ShortName = s.Asbitem.ShortName,
|
|
SimpleCode = s.Asbitem.SimpleCode,
|
|
AsbitemMoney = s.Amount * s.Asbitem.Price,
|
|
Discount = s.Asbitem.Price == 0 ? 100 : Math.Round(s.Price * 100 / s.Asbitem.Price, 2),
|
|
MedicalPackageDetailAmount = s.Amount,
|
|
MedicalPackageDetailMoney = s.Amount * s.Price,
|
|
MedicalPackageDetailPrice = s.Price,
|
|
CreatorName = EntityHelper.GetSurnameNoSql(userList, s.Asbitem.CreatorId),
|
|
LastModifierName = EntityHelper.GetSurnameNoSql(userList, s.Asbitem.LastModifierId)
|
|
}).ToList();
|
|
|
|
return entdto;
|
|
|
|
}
|
|
|
|
|
|
}
|
|
}
|