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.

125 lines
4.6 KiB

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Shentun.Peis.Enums;
using Shentun.Peis.Models;
using Shentun.Peis.PlugIns.Sms;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
namespace Shentun.Peis.ThirdBookings
{
/// <summary>
/// 第三方预约记录
/// </summary>
[Authorize]
[ApiExplorerSettings(GroupName = "Work")]
public class ThirdBookingAppService : ApplicationService
{
private readonly IRepository<ThirdBooking, Guid> _thirdBookingRepository;
private readonly IRepository<ThirdInterface, Guid> _thirdInterfaceRepository;
public ThirdBookingAppService(
IRepository<ThirdBooking, Guid> thirdBookingRepository,
IRepository<ThirdInterface, Guid> thirdInterfaceRepository)
{
_thirdBookingRepository = thirdBookingRepository;
_thirdInterfaceRepository = thirdInterfaceRepository;
}
/// <summary>
/// 获取人寿预约记录
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/ThirdBooking/GetThirdBookingList")]
public async Task<List<GetThirdBookingListDto>> GetThirdBookingListAsync(GetThirdBookingListInputDto input)
{
Guid? customerOrgRegisterId = null;
Guid? customerOrgId = null;
var thirdBookingInterface = await _thirdInterfaceRepository.FirstOrDefaultAsync(o => o.ThirdInterfaceType ==
ThirdInterfaceTypeFlag.ThirdBooking);
if (thirdBookingInterface != null && thirdBookingInterface.IsActive == 'Y')
{
var parmValue = thirdBookingInterface.ParmValue;
var configurationBuilder = new ConfigurationBuilder()
.AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(parmValue)));
var interfaceConfig = configurationBuilder.Build();
var isActive = interfaceConfig.GetSection("Interface").GetSection("IsActive").Value;
var customerOrgRegisterIdPara = interfaceConfig.GetSection("Interface").GetSection("CustomerOrgRegisterId").Value;
var customerOrgIdPara = interfaceConfig.GetSection("Interface").GetSection("CustomerOrgId").Value;
if (!string.IsNullOrWhiteSpace(isActive)
&& isActive == "Y")
{
customerOrgRegisterId = Guid.Parse(customerOrgRegisterIdPara);
customerOrgId = Guid.Parse(customerOrgIdPara);
}
}
var query = await _thirdBookingRepository.GetQueryableAsync();
if (!string.IsNullOrWhiteSpace(input.StartDate) && !string.IsNullOrWhiteSpace(input.StartDate))
{
query = query.Where(m => m.BookingDate >= Convert.ToDateTime(input.StartDate) &&
m.BookingDate < Convert.ToDateTime(input.EndDate).AddDays(1));
}
if (!string.IsNullOrWhiteSpace(input.KeyWord))
{
query = query.Where(m => m.PatientName == input.KeyWord
|| m.IdNo == input.KeyWord || m.Phone == input.KeyWord);
}
if (input.MedicalStatus != null)
{
query = query.Where(m => m.MedicalStatus == input.MedicalStatus);
}
var entListDto = query.Select(s => new GetThirdBookingListDto
{
ThirdBookingId = s.Id,
Age = s.Age,
BookingDate = s.BookingDate,
CustomerOrgGroupId = s.CustomerOrgGroupId,
IdNo = s.IdNo,
MedicalStatus = s.MedicalStatus,
PatientName = s.PatientName,
Phone = s.Phone,
SexId = GetSexId(s.SexName),
CustomerOrgId = customerOrgId,
CustomerOrgRegisterId = customerOrgRegisterId,
}).ToList();
return entListDto;
}
/// <summary>
/// 转换性别
/// </summary>
/// <returns></returns>
private static char GetSexId(string SexName)
{
char SexId = 'U';
if (SexName == "0" || SexName == "男")
{
SexId = 'M';
}
if (SexName == "1" || SexName == "女")
{
SexId = 'F';
}
return SexId;
}
}
}