using MongoDB.Driver;
using VitalService.Entities;
using WingServerCommon.Mapper;
using VitalService.Request;
using WingInterfaceLibrary.Request.DBVitalRequest;
using WingInterfaceLibrary.DTO.Vital;
using WingInterfaceLibrary.Request;
using WingInterfaceLibrary.Interface.DBVitalInterface;
namespace VitalService.Service
{
///
/// 第三方厂商数据推送记录
///
public partial class VitalDatabaseService : IVitalFacturyPostHistoryDBService
{
///
/// 创建数据
///
/// 创建请求
///
public async Task CreateFacturyPostHistoryDBAsync(CreateFacturyPostHistoryDBRequest request)
{
var entity = new FacturyPostHistoryEntity
{
FacturyUniqueCode = request.FacturyUniqueCode ?? string.Empty,
FacturyUrl = request.FacturyUrl,
IDCardNo = request.IDCardNo,
PatientName = request.PatientName,
ApiType = request.ApiType,
Status = request.Status,
PostTime = request.PostTime,
Headers = request.Headers,
Content = request.Content,
Result = request.Result,
};
return await _facturyPostHistoryDBRepository.InsertOneAsync(entity);
}
///
/// 更新数据
///
/// 更新请求
///
public async Task UpdateFacturyPostHistoryDBAsync(UpdateFacturyPostHistoryDBRequest request)
{
var code = request.Code;
if (!string.IsNullOrWhiteSpace(code))
{
var entity = await _facturyPostHistoryDBRepository.FindOneAsync(Builders.Filter.Eq(f => f.Code, code));
if (entity != null && !entity.IsDelete)
{
var filter = Builders.Filter.Eq(f => f.Code, code);
var update = Builders.Update
.Set(f => f.Status, request.Status)
.Set(f => f.Result, request.Result)
.Set(f => f.PostTime, request.PostTime)
.Set(f => f.UpdateTime, DateTime.UtcNow);
return await _facturyPostHistoryDBRepository.UpdateOneAsync(filter, update) > 0;
}
}
return false;
}
///
/// 根据编码获取第三方厂商数据推送记录
///
/// 数据编码
///
public async Task GetFacturyPostHistoryDBAsync(GetFacturyPostHistoryDBRequest request)
{
var filter = Builders.Filter.Eq(f => f.Code, request.Code);
var result = await _facturyPostHistoryDBRepository.FindOneAsync(filter);
return result.MappingTo();
}
///
/// 分页获取第三方厂商数据推送记录
///
/// 分页请求
///
public async Task> GetFacturyPostHistoryByPageDBAsync(GetFacturyPostHistoryByPageDBRequest request)
{
var filter = await _facturyPostHistoryDBRepository.GetPageFilter(request);
if (request.Status > 0)
{
filter &= Builders.Filter.Eq(x => x.Status, request.Status);
}
var pageFilter = new DBPageRequest
{
PageIndex = request.PageIndex,
PageSize = request.PageSize,
Filter = filter,
Sort = Builders.Sort.Descending(x => x.CreateTime)
};
var result = await _facturyPostHistoryDBRepository.GetPages(pageFilter);
return result.MappingTo>();
}
///
/// 获取所有未推送数据记录
///
/// 分页请求
///
public async Task> GetNonPostHistoryDBAsync(GetNonPostHistoryDBRequest request)
{
var filter = Builders.Filter.Eq(f => f.Status, 1);
var entities = await _facturyPostHistoryDBRepository.FindAllAsync(filter);
entities = entities.OrderBy(x => x.CreateTime).ToList();
return entities.MappingTo>();
}
///
/// 删除数据
///
/// 数据编码
///
public async Task RemoveFacturyPostHistoryDBAsync(RemoveFacturyPostHistoryDBRequest request)
{
return await _facturyPostHistoryDBRepository.DeleteOneAsync("Code", request.Code);
}
}
}