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