diff --git a/ds-wms-service/DS.Module.Core/Utils/ApiFox.cs b/ds-wms-service/DS.Module.Core/Utils/ApiFox.cs index 91e4851d..85b95012 100644 --- a/ds-wms-service/DS.Module.Core/Utils/ApiFox.cs +++ b/ds-wms-service/DS.Module.Core/Utils/ApiFox.cs @@ -86,13 +86,14 @@ namespace DS.Module.Core var response = await SendRequestAsync(HttpMethod.Get, url); T? data = default; - if (response != null) + if (response != null && response.IsSuccessStatusCode) { string json = await response.Content.ReadAsStringAsync(); data = JsonConvert.DeserializeObject(json); + return DataResult.Success(data); } - return DataResult.Success(data); + return DataResult.Failed(response.ReasonPhrase); } /// @@ -107,13 +108,14 @@ namespace DS.Module.Core { var response = await SendRequestAsync(HttpMethod.Post, url, requestParams); T? data = default; - if (response != null) + if (response != null && response.IsSuccessStatusCode) { string json = await response.Content.ReadAsStringAsync(); data = JsonConvert.DeserializeObject(json); + return DataResult.Success(data); } - return DataResult.Success(data); + return DataResult.Failed(response.ReasonPhrase); } /// diff --git a/ds-wms-service/DS.WMS.Core/Invoice/Dtos/InvoiceIssuance.cs b/ds-wms-service/DS.WMS.Core/Invoice/Dtos/InvoiceIssuance.cs index e7d49efd..651bc289 100644 --- a/ds-wms-service/DS.WMS.Core/Invoice/Dtos/InvoiceIssuance.cs +++ b/ds-wms-service/DS.WMS.Core/Invoice/Dtos/InvoiceIssuance.cs @@ -8,7 +8,7 @@ /// /// 忽略商品和服务税收分类合并编码提醒 /// - public bool IgnoreSphfwssflhbbm { get; set; } + public bool IgnoreSphfwssflhbbm { get; set; } = true; /// /// 请求体 diff --git a/ds-wms-service/DS.WMS.Core/Invoice/Dtos/InvoiceResult.cs b/ds-wms-service/DS.WMS.Core/Invoice/Dtos/InvoiceResult.cs index 4d920b0d..b34d048a 100644 --- a/ds-wms-service/DS.WMS.Core/Invoice/Dtos/InvoiceResult.cs +++ b/ds-wms-service/DS.WMS.Core/Invoice/Dtos/InvoiceResult.cs @@ -22,4 +22,37 @@ namespace DS.WMS.Core.Invoice.Dtos [DataMember(Name = "data")] public new T Data { get; set; } } + + public class InvoiceQuery + { + public List Order { get; set; } + } + + public class InvoiceOrder + { + /// + /// 1已提交待上传,2已上传待开票,3开票成功,4开票失败 + /// + public int State { get; set; } + + /// + /// 发票号 + /// + public string fphm { get; set; } + + /// + /// 失败原因 + /// + public string UpMessage { get; set; } + + /// + /// 发票下载地址 + /// + public string FileUrl { get; set; } + + /// + /// 业务ID + /// + public string orderNo { get; set; } + } } diff --git a/ds-wms-service/DS.WMS.Core/Invoice/Entity/Invoice.cs b/ds-wms-service/DS.WMS.Core/Invoice/Entity/Invoice.cs index 988ef0ad..72fe40b0 100644 --- a/ds-wms-service/DS.WMS.Core/Invoice/Entity/Invoice.cs +++ b/ds-wms-service/DS.WMS.Core/Invoice/Entity/Invoice.cs @@ -306,11 +306,18 @@ namespace DS.WMS.Core.Invoice.Entity [SugarColumn(ColumnDescription = "电子发票接口类型")] public InvoiceApiType? ApiType { get; set; } - /// - /// 电子发票接口类型 - /// - [SugarColumn(ColumnDescription = "电子发票接口类型", Length = 50, IsNullable = true)] - public string? ApiLine { get; set; } + ///// + ///// 电子发票接口类型 + ///// + //[SugarColumn(ColumnDescription = "电子发票接口类型", Length = 50, IsNullable = true)] + //public string? ApiLine { get; set; } + + + ///// + ///// 电子发票接口顺序号 + ///// + //[SugarColumn(ColumnDescription = "电子发票接口顺序号", Length = 50, IsNullable = true)] + //public string? ApiSerial { get; set; } /// /// 电子发票接口状态 @@ -318,12 +325,6 @@ namespace DS.WMS.Core.Invoice.Entity [SugarColumn(ColumnDescription = "电子发票接口状态", Length = 50, IsNullable = true)] public string? ApiStatus { get; set; } - /// - /// 电子发票接口顺序号 - /// - [SugarColumn(ColumnDescription = "电子发票接口顺序号", Length = 50, IsNullable = true)] - public string? ApiSerial { get; set; } - /// /// 电子发票接口代码 /// diff --git a/ds-wms-service/DS.WMS.Core/Invoice/Interface/IInvoiceIssuanceService.cs b/ds-wms-service/DS.WMS.Core/Invoice/Interface/IInvoiceIssuanceService.cs index 55ae956d..0bc92c8e 100644 --- a/ds-wms-service/DS.WMS.Core/Invoice/Interface/IInvoiceIssuanceService.cs +++ b/ds-wms-service/DS.WMS.Core/Invoice/Interface/IInvoiceIssuanceService.cs @@ -1,6 +1,5 @@ using DS.Module.Core; using DS.WMS.Core.Invoice.Dtos; -using Newtonsoft.Json.Linq; namespace DS.WMS.Core.Invoice.Interface { @@ -14,14 +13,21 @@ namespace DS.WMS.Core.Invoice.Interface /// /// 开票的发票ID /// - Task> InitiateAsync(params long[] ids); + Task InitiateAsync(params long[] ids); + + /// + /// 更新发票号码 + /// + /// 开票流水号 + /// + Task UpdateInvoiceNumberAsync(string sn); /// /// 发票冲红 /// /// 请求 /// - Task> ReverseAsync(InvoiceReversalRequest request); + Task ReverseAsync(InvoiceReversalRequest request); /// /// 添加租户信息 diff --git a/ds-wms-service/DS.WMS.Core/Invoice/Method/InvoiceIssuanceService.cs b/ds-wms-service/DS.WMS.Core/Invoice/Method/InvoiceIssuanceService.cs index dd31f7d2..bed58390 100644 --- a/ds-wms-service/DS.WMS.Core/Invoice/Method/InvoiceIssuanceService.cs +++ b/ds-wms-service/DS.WMS.Core/Invoice/Method/InvoiceIssuanceService.cs @@ -1,4 +1,5 @@ using DS.Module.Core; +using DS.Module.Core.Enums; using DS.WMS.Core.Application.Entity; using DS.WMS.Core.Application.Method; using DS.WMS.Core.Code.Entity; @@ -35,7 +36,7 @@ namespace DS.WMS.Core.Invoice.Method /// /// 发票ID /// - public async Task> InitiateAsync(params long[] ids) + public async Task InitiateAsync(params long[] ids) { ArgumentNullException.ThrowIfNull(ids, nameof(ids)); @@ -47,7 +48,7 @@ namespace DS.WMS.Core.Invoice.Method }).FirstAsync(); if (string.IsNullOrEmpty(userInfo.IdCardNo)) - return DataResult.FailedWithDesc(MultiLanguageConst.DrawerIDNumberIsNull); + return DataResult.FailedWithDesc(MultiLanguageConst.DrawerIDNumberIsNull); //请求参数设置 InvoiceIssuanceRequest request = new() @@ -98,55 +99,122 @@ namespace DS.WMS.Core.Invoice.Method }; if (request.order.Count == 0 || request.order.Any(x => x.invoiceDetail.Count == 0)) - return DataResult.FailedWithDesc(MultiLanguageConst.InvoiceIncomplete); + return DataResult.FailedWithDesc(MultiLanguageConst.InvoiceIncomplete); var result = await api.PostAsync>("/api/Invoice/services", request); if (!result.Succeeded) - return DataResult.Failed(result.Message, result.MultiCode); + return DataResult.Failed(result.Message, result.MultiCode); var invResult = result.Data; - JObject? jObj = JObject.Parse(invResult.Data); if (invResult.Success) { - return DataResult.Success(jObj); + string sn = invResult.Data; //开票成功返回流水号 + var invoices = ids.Select(x => new Entity.Invoice { Id = x, SN = sn, ApiType = InvoiceApiType.Default }).ToList(); + await TenantDb.Updateable(invoices).UpdateColumns(x => new { x.SN, x.ApiType }).ExecuteCommandAsync(); + + UpdateInvoiceNumberAsync(sn); + + return DataResult.Success; } else { if (invResult.Code == 1) return await InitiateAsync(ids); - return DataResult.FailedData(jObj, invResult.Message); + return DataResult.Failed(invResult.Message); } } + /// + /// 更新发票号码 + /// + /// 开票流水号 + /// + public async Task UpdateInvoiceNumberAsync(string sn) + { + //调用查询API获取发票号 + var result = await api.PostAsync>("/api/Invoice/GetInvoiceState", new { guid = sn }); + if (!result.Succeeded) + return DataResult.Failed(result.Message, result.MultiCode); + + var queryResult = result.Data; + if (queryResult == null || !queryResult.Success) + return DataResult.Failed(queryResult?.Message); + + if (queryResult.Data.Order?.Count > 0) + { + List invoices = []; + foreach (var item in queryResult.Data.Order) + { + var inv = new Entity.Invoice + { + SN = sn, + BillNO = item.orderNo, + InvoiceNO = item.fphm, + ApiCode = item.State.ToString(), + ApiStatus = item.UpMessage, + PDFUrl = item.FileUrl + }; + invoices.Add(inv); + + if (string.IsNullOrEmpty(inv.ApiStatus)) + { + switch (item.State) + { + case 1: + inv.ApiStatus = "已提交待上传"; + break; + case 2: + inv.ApiStatus = "已上传待开票"; + break; + case 3: + inv.ApiStatus = "开票成功"; + break; + } + } + } + + await TenantDb.Updateable(invoices).WhereColumns(x => x.BillNO) + .UpdateColumns(x => new + { + x.InvoiceNO, + x.ApiCode, + x.ApiStatus, + x.PDFUrl + }).ExecuteCommandAsync(); + } + + return DataResult.Success; + } + /// /// 发票冲红 /// /// /// - public async Task> ReverseAsync(InvoiceReversalRequest request) + public async Task ReverseAsync(InvoiceReversalRequest request) { var invoice = await TenantDb.Queryable() .WhereIF(request.InvoiceId.HasValue, x => x.Id == request.InvoiceId) .WhereIF(!request.orderNo.IsNullOrEmpty(), x => x.BillNO == request.orderNo) .FirstAsync(); if (invoice == null) - return DataResult.FailedWithDesc(MultiLanguageConst.EmptyData); + return DataResult.FailedWithDesc(MultiLanguageConst.EmptyData); var req = new InvoiceReversalRequest { orderNo = invoice.BillNO }; var result = await api.PostAsync>("/api/Invoice/RedInvoicing", req); if (!result.Succeeded) - return DataResult.Failed(result.Message, result.MultiCode); + return DataResult.Failed(result.Message, result.MultiCode); var invResult = result.Data; JObject? jObj = JObject.Parse(invResult.Data); if (invResult.Success) - return DataResult.FailedData(jObj, invResult.Message); + return DataResult.Failed(invResult.Message); invoice.IsSetRed = true; invoice.RedReason = request.Reason; await TenantDb.Updateable(invoice).UpdateColumns(x => new { x.IsSetRed, x.RedReason }).ExecuteCommandAsync(); - return DataResult.Success(jObj); + return DataResult.Success; } /// diff --git a/ds-wms-service/DS.WMS.Core/Settlement/Dtos/SettlementRequest.cs b/ds-wms-service/DS.WMS.Core/Settlement/Dtos/SettlementRequest.cs index c32fa5df..ff0b63d1 100644 --- a/ds-wms-service/DS.WMS.Core/Settlement/Dtos/SettlementRequest.cs +++ b/ds-wms-service/DS.WMS.Core/Settlement/Dtos/SettlementRequest.cs @@ -45,11 +45,6 @@ namespace DS.WMS.Core.Settlement.Dtos /// public string? CustomerName { get; set; } - /// - /// 单据币别 - /// - public string Currency { get; set; } = string.Empty; - /// /// 汇率(当收/付申请单币别与结算币别一致时,此字段可为null,发票结算需要提前获取原始币别) /// diff --git a/ds-wms-service/DS.WMS.Core/Settlement/Interface/IApplicationSettlementService.cs b/ds-wms-service/DS.WMS.Core/Settlement/Interface/IApplicationSettlementService.cs index 65993e5c..63d6a66a 100644 --- a/ds-wms-service/DS.WMS.Core/Settlement/Interface/IApplicationSettlementService.cs +++ b/ds-wms-service/DS.WMS.Core/Settlement/Interface/IApplicationSettlementService.cs @@ -8,7 +8,7 @@ namespace DS.WMS.Core.Settlement.Interface /// /// 付费申请结算 /// - public interface IApplicationSettlementService : ISettlementService + public interface IApplicationSettlementService : ISettlementService { /// /// 获取分页列表 diff --git a/ds-wms-service/DS.WMS.Core/Settlement/Interface/IInvoiceSettlementService.cs b/ds-wms-service/DS.WMS.Core/Settlement/Interface/IInvoiceSettlementService.cs index 7ad443be..5678ed1d 100644 --- a/ds-wms-service/DS.WMS.Core/Settlement/Interface/IInvoiceSettlementService.cs +++ b/ds-wms-service/DS.WMS.Core/Settlement/Interface/IInvoiceSettlementService.cs @@ -1,13 +1,15 @@ using DS.Module.Core; using DS.WMS.Core.Application.Dtos; using DS.WMS.Core.Invoice.Dtos; +using DS.WMS.Core.Settlement.Dtos; +using DS.WMS.Core.Settlement.Entity; namespace DS.WMS.Core.Settlement.Interface { /// /// 发票结算 /// - public interface IInvoiceSettlementService + public interface IInvoiceSettlementService : ISettlementService { /// /// 获取待结算的发票申请列表 @@ -22,5 +24,12 @@ namespace DS.WMS.Core.Settlement.Interface /// /// Task>> GetInvoiceDetailsAsync(params long[] ids); + + /// + /// 获取发票费用明细的原始币别 + /// + /// + /// + Task>> GetExchangesAsync(List documents); } } diff --git a/ds-wms-service/DS.WMS.Core/Settlement/Method/ApplicationSettlementService.cs b/ds-wms-service/DS.WMS.Core/Settlement/Method/ApplicationSettlementService.cs index 62199d1c..e61d1665 100644 --- a/ds-wms-service/DS.WMS.Core/Settlement/Method/ApplicationSettlementService.cs +++ b/ds-wms-service/DS.WMS.Core/Settlement/Method/ApplicationSettlementService.cs @@ -447,7 +447,7 @@ namespace DS.WMS.Core.Settlement.Method } - protected override async Task PreSaveAsync(Entity.ApplicationSettlement settlement) + protected override async Task PreSaveAsync(ApplicationSettlement settlement) { var appIds = settlement.Details.Select(x => x.ApplicationId).Distinct(); var appList = await TenantDb.Queryable().Where(x => appIds.Contains(x.Id)) diff --git a/ds-wms-service/DS.WMS.Core/Settlement/Method/InvoiceSettlementService.cs b/ds-wms-service/DS.WMS.Core/Settlement/Method/InvoiceSettlementService.cs index a8f39988..359e9fbc 100644 --- a/ds-wms-service/DS.WMS.Core/Settlement/Method/InvoiceSettlementService.cs +++ b/ds-wms-service/DS.WMS.Core/Settlement/Method/InvoiceSettlementService.cs @@ -37,8 +37,8 @@ namespace DS.WMS.Core.Settlement.Method { var whereList = request.GetConditionalModels(Db); var result = await TenantDb.Queryable() - .InnerJoin((a, d) => d.Category == DetailCategory.InvoiceIssuance && a.Id == d.ApplicationId && d.OriginalAmount - d.OriginalProcessedAmount != 0) - .InnerJoin((a, d, f) => (f.FeeStatus == FeeStatus.AuditPassed || f.FeeStatus == FeeStatus.PartialSettlement) && d.RecordId == f.Id && + .InnerJoin((a, d) => d.Category == DetailCategory.InvoiceIssuance && a.Id == d.ApplicationId) + .InnerJoin((a, d, f) => d.RecordId == f.Id && (f.FeeStatus == FeeStatus.AuditPassed || f.FeeStatus == FeeStatus.PartialSettlement) && ((f.Amount > 0 && d.OriginalAmount - d.OriginalProcessedAmount <= f.Amount - f.SettlementAmount - f.OrderAmount + f.OrderSettlementAmount) || (f.Amount < 0 && d.OriginalAmount - d.OriginalProcessedAmount >= f.Amount - f.SettlementAmount - f.OrderAmount + f.OrderSettlementAmount)) ) @@ -122,7 +122,7 @@ namespace DS.WMS.Core.Settlement.Method foreach (var document in documents) { document.ExchangeRates ??= []; - //获取该申请单下的全部币别 + //获取该发票费用明细的全部币别 var items = list.FindAll(x => x.ApplicationId == document.Id); foreach (var item in items) { @@ -212,8 +212,6 @@ namespace DS.WMS.Core.Settlement.Method protected override async Task PreSaveAsync(ApplicationSettlement settlement) { - //settlement.Mode = SettlementMode.InvoiceSettlement; - var appIds = settlement.Details.Select(x => x.ApplicationId).Distinct(); var appList = await TenantDb.Queryable().Where(x => appIds.Contains(x.Id)) .Select(x => new diff --git a/ds-wms-service/DS.WMS.FeeApi/Controllers/GeneralInvoiceController.cs b/ds-wms-service/DS.WMS.FeeApi/Controllers/GeneralInvoiceController.cs index 78a8cdc0..ad81d787 100644 --- a/ds-wms-service/DS.WMS.FeeApi/Controllers/GeneralInvoiceController.cs +++ b/ds-wms-service/DS.WMS.FeeApi/Controllers/GeneralInvoiceController.cs @@ -153,11 +153,11 @@ namespace DS.WMS.FeeApi.Controllers /// 开票的发票ID /// [HttpPost, Route("Initiate")] - public async Task> InitiateAsync([FromServices] IInvoiceIssuanceService issuanceService, + public async Task InitiateAsync([FromServices] IInvoiceIssuanceService issuanceService, [FromBody] IdModel idModel) { if (!ModelState.IsValid) - return DataResult.Failed(ModelState.GetErrorMessage(), MultiLanguageConst.IllegalRequest); + return DataResult.Failed(ModelState.GetErrorMessage(), MultiLanguageConst.IllegalRequest); return await issuanceService.InitiateAsync(idModel.Ids); } @@ -169,7 +169,7 @@ namespace DS.WMS.FeeApi.Controllers /// 请求参数 /// [HttpPost, Route("Reverse")] - public async Task> ReverseAsync([FromServices] IInvoiceIssuanceService issuanceService, + public async Task ReverseAsync([FromServices] IInvoiceIssuanceService issuanceService, [FromBody] InvoiceReversalRequest request) { return await issuanceService.ReverseAsync(request); diff --git a/ds-wms-service/DS.WMS.FeeApi/Controllers/InvoiceApplicationController.cs b/ds-wms-service/DS.WMS.FeeApi/Controllers/InvoiceApplicationController.cs index 83099164..f3b5adbf 100644 --- a/ds-wms-service/DS.WMS.FeeApi/Controllers/InvoiceApplicationController.cs +++ b/ds-wms-service/DS.WMS.FeeApi/Controllers/InvoiceApplicationController.cs @@ -31,7 +31,7 @@ namespace DS.WMS.FeeApi.Controllers /// 业务ID与业务类型 /// [HttpPost, Route("GetCurrencies")] - public async Task>> GetCurrenciesAsync(params FeeClient[] items) + public async Task>> GetCurrenciesAsync([FromBody] params FeeClient[] items) { return await _service.GetCurrenciesAsync(items); } diff --git a/ds-wms-service/DS.WMS.FeeApi/Controllers/InvoiceSettlementController.cs b/ds-wms-service/DS.WMS.FeeApi/Controllers/InvoiceSettlementController.cs index f0beea2a..b152b12b 100644 --- a/ds-wms-service/DS.WMS.FeeApi/Controllers/InvoiceSettlementController.cs +++ b/ds-wms-service/DS.WMS.FeeApi/Controllers/InvoiceSettlementController.cs @@ -2,6 +2,8 @@ using DS.Module.Core.Data; using DS.WMS.Core.Application.Dtos; using DS.WMS.Core.Invoice.Dtos; +using DS.WMS.Core.Settlement.Dtos; +using DS.WMS.Core.Settlement.Entity; using DS.WMS.Core.Settlement.Interface; using Microsoft.AspNetCore.Mvc; @@ -29,7 +31,7 @@ namespace DS.WMS.FeeApi.Controllers /// /// [HttpPost, Route("GetInvoiceList")] - public async Task>> GetInvoiceListAsync(PageRequest request) + public async Task>> GetInvoiceListAsync([FromBody] PageRequest request) { return await _service.GetInvoiceListAsync(request); } @@ -40,9 +42,31 @@ namespace DS.WMS.FeeApi.Controllers /// /// [HttpPost, Route("GetInvoiceDetails")] - public async Task>> GetInvoiceDetailsAsync(IdModel idModel) + public async Task>> GetInvoiceDetailsAsync([FromBody] IdModel idModel) { return await _service.GetInvoiceDetailsAsync(idModel.Ids); } + + /// + /// 获取发票费用明细的原始币别 + /// + /// + /// + [HttpPost, Route("GetExchanges")] + public async Task>> GetExchangesAsync([FromBody] List documents) + { + return await _service.GetExchangesAsync(documents); + } + + /// + /// 根据发票创建结算单 + /// + /// + /// + [HttpPost, Route("Save")] + public async Task> SaveAsync([FromBody] SettlementRequest request) + { + return await _service.SaveAsync(request); + } } } diff --git a/ds-wms-service/DS.WMS.FeeApi/Controllers/PaymentApplicationController.cs b/ds-wms-service/DS.WMS.FeeApi/Controllers/PaymentApplicationController.cs index b91f3312..3f9c7e64 100644 --- a/ds-wms-service/DS.WMS.FeeApi/Controllers/PaymentApplicationController.cs +++ b/ds-wms-service/DS.WMS.FeeApi/Controllers/PaymentApplicationController.cs @@ -30,7 +30,7 @@ namespace DS.WMS.FeeApi.Controllers /// 业务ID与业务类型 /// [HttpPost, Route("GetCurrencies")] - public async Task>> GetCurrenciesAsync(params FeeClient[] items) + public async Task>> GetCurrenciesAsync([FromBody] params FeeClient[] items) { return await _service.GetCurrenciesAsync(items); } diff --git a/ds-wms-service/DS.WMS.FeeApi/Properties/PublishProfiles/FolderProfile1.pubxml.user b/ds-wms-service/DS.WMS.FeeApi/Properties/PublishProfiles/FolderProfile1.pubxml.user index 5c11674d..aa5abf9b 100644 --- a/ds-wms-service/DS.WMS.FeeApi/Properties/PublishProfiles/FolderProfile1.pubxml.user +++ b/ds-wms-service/DS.WMS.FeeApi/Properties/PublishProfiles/FolderProfile1.pubxml.user @@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. <_PublishTargetUrl>D:\Publish\DS8\FeeApi - True|2024-09-25T11:14:27.8906774Z||;True|2024-09-25T18:57:40.1435131+08:00||;True|2024-09-25T17:38:44.0915841+08:00||;True|2024-09-25T15:33:58.4630618+08:00||;True|2024-09-25T15:10:31.3022063+08:00||;False|2024-09-25T14:14:40.9640545+08:00||;True|2024-09-25T10:09:32.2558600+08:00||;True|2024-09-25T09:59:17.1525160+08:00||;False|2024-09-25T09:57:58.7265103+08:00||;False|2024-09-25T09:53:36.7732713+08:00||;False|2024-09-24T18:40:10.0166224+08:00||;True|2024-09-24T08:59:56.1995425+08:00||;True|2024-09-23T18:07:54.7222163+08:00||;True|2024-09-23T17:23:57.7568406+08:00||;True|2024-09-23T16:28:49.3169826+08:00||;True|2024-09-23T15:57:31.8052490+08:00||;True|2024-09-23T11:47:21.1445419+08:00||;True|2024-09-23T09:24:36.0732229+08:00||;True|2024-09-21T11:59:19.0549926+08:00||;True|2024-09-21T11:24:32.4451752+08:00||;True|2024-09-21T10:39:11.5297411+08:00||;True|2024-09-20T18:24:31.7827684+08:00||;True|2024-09-19T17:55:53.1666689+08:00||;True|2024-09-19T17:42:47.9061485+08:00||;True|2024-09-19T16:08:21.7225571+08:00||;False|2024-09-19T14:15:42.9318446+08:00||;True|2024-09-19T11:20:03.5567568+08:00||;True|2024-09-18T11:35:18.1509724+08:00||;True|2024-09-18T09:08:59.1152574+08:00||;True|2024-09-14T15:48:22.9374486+08:00||;True|2024-09-14T15:42:19.0503983+08:00||;True|2024-09-14T11:51:53.3339222+08:00||;True|2024-09-14T11:41:38.3542237+08:00||;True|2024-09-14T11:19:13.1037012+08:00||;True|2024-09-13T14:31:12.4598160+08:00||;True|2024-09-13T10:44:56.1241214+08:00||;False|2024-09-13T10:44:26.6088271+08:00||;False|2024-09-13T10:44:06.1615137+08:00||;False|2024-09-13T10:43:19.2432517+08:00||;False|2024-09-13T10:38:18.1663387+08:00||;True|2024-09-06T18:49:17.9435308+08:00||;True|2024-09-06T17:01:39.6646353+08:00||;True|2024-09-06T10:27:36.9990456+08:00||;True|2024-09-06T09:48:23.4236094+08:00||;True|2024-09-05T13:57:23.8452431+08:00||;True|2024-09-05T10:21:34.6675149+08:00||;True|2024-09-05T09:12:44.5610882+08:00||;True|2024-09-04T10:07:38.3707398+08:00||;True|2024-09-04T09:52:47.0574599+08:00||;True|2024-09-03T16:41:23.7516960+08:00||;True|2024-09-03T15:22:31.8718097+08:00||;True|2024-09-03T10:01:09.7656702+08:00||;False|2024-09-03T09:46:46.8956531+08:00||;True|2024-09-02T17:07:41.0268500+08:00||;True|2024-09-02T13:50:22.0203254+08:00||;True|2024-09-02T13:34:23.3441546+08:00||;True|2024-08-30T11:25:14.7431645+08:00||;True|2024-08-29T16:38:26.3491372+08:00||;True|2024-08-29T16:32:31.8580864+08:00||;False|2024-08-29T16:30:41.4763198+08:00||;True|2024-08-09T09:18:05.8484398+08:00||;True|2024-08-09T08:45:38.7858906+08:00||;True|2024-08-05T11:37:07.3133020+08:00||;True|2024-07-24T16:45:58.2272340+08:00||;True|2024-07-24T15:48:52.0128987+08:00||;True|2024-07-23T17:41:01.7494842+08:00||;True|2024-07-23T17:25:11.8773492+08:00||;True|2024-07-23T17:07:16.5460273+08:00||;True|2024-07-22T08:59:23.3235603+08:00||;True|2024-07-12T17:35:11.1225017+08:00||;True|2024-07-11T11:40:17.3581147+08:00||;True|2024-07-04T17:20:50.0175739+08:00||;True|2024-07-02T11:26:14.2092751+08:00||;True|2024-07-02T09:21:51.3513605+08:00||;True|2024-07-01T17:47:56.0407256+08:00||;True|2024-07-01T16:42:55.7374984+08:00||;True|2024-07-01T15:49:58.9266967+08:00||;True|2024-07-01T14:35:48.1117178+08:00||;True|2024-07-01T11:41:52.2969338+08:00||;True|2024-07-01T11:13:02.6561160+08:00||;True|2024-06-28T15:28:43.1470725+08:00||;True|2024-06-28T15:16:20.1999596+08:00||;True|2024-06-28T15:14:56.2534743+08:00||;True|2024-06-28T15:02:41.3033806+08:00||;True|2024-06-28T13:37:28.2462742+08:00||;True|2024-06-28T11:06:30.7400535+08:00||;True|2024-06-26T15:24:17.1939896+08:00||;True|2024-06-26T14:33:06.3530466+08:00||;True|2024-06-26T09:45:24.4055568+08:00||;True|2024-06-25T15:45:57.6052473+08:00||;True|2024-06-25T10:17:17.7408916+08:00||;False|2024-06-25T10:16:23.5639654+08:00||;False|2024-06-25T10:15:28.3857721+08:00||;False|2024-06-25T10:10:59.5536995+08:00||;False|2024-06-25T10:07:10.4050937+08:00||;True|2024-06-24T15:22:18.2672769+08:00||;True|2024-06-24T15:01:04.8153621+08:00||;False|2024-06-24T15:00:29.9618848+08:00||;True|2024-06-24T14:07:19.9401637+08:00||;False|2024-06-24T14:06:36.1250570+08:00||; + True|2024-09-26T09:48:13.8526872Z||;True|2024-09-26T16:08:20.1746970+08:00||;True|2024-09-26T16:01:01.1501975+08:00||;False|2024-09-26T16:00:34.1516745+08:00||;True|2024-09-26T14:33:03.4007570+08:00||;True|2024-09-25T19:14:27.8906774+08:00||;True|2024-09-25T18:57:40.1435131+08:00||;True|2024-09-25T17:38:44.0915841+08:00||;True|2024-09-25T15:33:58.4630618+08:00||;True|2024-09-25T15:10:31.3022063+08:00||;False|2024-09-25T14:14:40.9640545+08:00||;True|2024-09-25T10:09:32.2558600+08:00||;True|2024-09-25T09:59:17.1525160+08:00||;False|2024-09-25T09:57:58.7265103+08:00||;False|2024-09-25T09:53:36.7732713+08:00||;False|2024-09-24T18:40:10.0166224+08:00||;True|2024-09-24T08:59:56.1995425+08:00||;True|2024-09-23T18:07:54.7222163+08:00||;True|2024-09-23T17:23:57.7568406+08:00||;True|2024-09-23T16:28:49.3169826+08:00||;True|2024-09-23T15:57:31.8052490+08:00||;True|2024-09-23T11:47:21.1445419+08:00||;True|2024-09-23T09:24:36.0732229+08:00||;True|2024-09-21T11:59:19.0549926+08:00||;True|2024-09-21T11:24:32.4451752+08:00||;True|2024-09-21T10:39:11.5297411+08:00||;True|2024-09-20T18:24:31.7827684+08:00||;True|2024-09-19T17:55:53.1666689+08:00||;True|2024-09-19T17:42:47.9061485+08:00||;True|2024-09-19T16:08:21.7225571+08:00||;False|2024-09-19T14:15:42.9318446+08:00||;True|2024-09-19T11:20:03.5567568+08:00||;True|2024-09-18T11:35:18.1509724+08:00||;True|2024-09-18T09:08:59.1152574+08:00||;True|2024-09-14T15:48:22.9374486+08:00||;True|2024-09-14T15:42:19.0503983+08:00||;True|2024-09-14T11:51:53.3339222+08:00||;True|2024-09-14T11:41:38.3542237+08:00||;True|2024-09-14T11:19:13.1037012+08:00||;True|2024-09-13T14:31:12.4598160+08:00||;True|2024-09-13T10:44:56.1241214+08:00||;False|2024-09-13T10:44:26.6088271+08:00||;False|2024-09-13T10:44:06.1615137+08:00||;False|2024-09-13T10:43:19.2432517+08:00||;False|2024-09-13T10:38:18.1663387+08:00||;True|2024-09-06T18:49:17.9435308+08:00||;True|2024-09-06T17:01:39.6646353+08:00||;True|2024-09-06T10:27:36.9990456+08:00||;True|2024-09-06T09:48:23.4236094+08:00||;True|2024-09-05T13:57:23.8452431+08:00||;True|2024-09-05T10:21:34.6675149+08:00||;True|2024-09-05T09:12:44.5610882+08:00||;True|2024-09-04T10:07:38.3707398+08:00||;True|2024-09-04T09:52:47.0574599+08:00||;True|2024-09-03T16:41:23.7516960+08:00||;True|2024-09-03T15:22:31.8718097+08:00||;True|2024-09-03T10:01:09.7656702+08:00||;False|2024-09-03T09:46:46.8956531+08:00||;True|2024-09-02T17:07:41.0268500+08:00||;True|2024-09-02T13:50:22.0203254+08:00||;True|2024-09-02T13:34:23.3441546+08:00||;True|2024-08-30T11:25:14.7431645+08:00||;True|2024-08-29T16:38:26.3491372+08:00||;True|2024-08-29T16:32:31.8580864+08:00||;False|2024-08-29T16:30:41.4763198+08:00||;True|2024-08-09T09:18:05.8484398+08:00||;True|2024-08-09T08:45:38.7858906+08:00||;True|2024-08-05T11:37:07.3133020+08:00||;True|2024-07-24T16:45:58.2272340+08:00||;True|2024-07-24T15:48:52.0128987+08:00||;True|2024-07-23T17:41:01.7494842+08:00||;True|2024-07-23T17:25:11.8773492+08:00||;True|2024-07-23T17:07:16.5460273+08:00||;True|2024-07-22T08:59:23.3235603+08:00||;True|2024-07-12T17:35:11.1225017+08:00||;True|2024-07-11T11:40:17.3581147+08:00||;True|2024-07-04T17:20:50.0175739+08:00||;True|2024-07-02T11:26:14.2092751+08:00||;True|2024-07-02T09:21:51.3513605+08:00||;True|2024-07-01T17:47:56.0407256+08:00||;True|2024-07-01T16:42:55.7374984+08:00||;True|2024-07-01T15:49:58.9266967+08:00||;True|2024-07-01T14:35:48.1117178+08:00||;True|2024-07-01T11:41:52.2969338+08:00||;True|2024-07-01T11:13:02.6561160+08:00||;True|2024-06-28T15:28:43.1470725+08:00||;True|2024-06-28T15:16:20.1999596+08:00||;True|2024-06-28T15:14:56.2534743+08:00||;True|2024-06-28T15:02:41.3033806+08:00||;True|2024-06-28T13:37:28.2462742+08:00||;True|2024-06-28T11:06:30.7400535+08:00||;True|2024-06-26T15:24:17.1939896+08:00||;True|2024-06-26T14:33:06.3530466+08:00||;True|2024-06-26T09:45:24.4055568+08:00||;True|2024-06-25T15:45:57.6052473+08:00||;True|2024-06-25T10:17:17.7408916+08:00||;False|2024-06-25T10:16:23.5639654+08:00||;False|2024-06-25T10:15:28.3857721+08:00||;False|2024-06-25T10:10:59.5536995+08:00||;False|2024-06-25T10:07:10.4050937+08:00||; \ No newline at end of file