From d787a1c5a0ff57b84cefb5ade07ae8cd73395bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=A6=20=E8=B5=B5?= <89237069@qq.com> Date: Thu, 3 Jul 2025 09:30:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JobDbContext.cs | 6 +- .../PublishProfiles/FolderProfile.pubxml.user | 2 +- ...ryRecurringJobInputPageExtendController.cs | 4 +- .../CheryRecurringJobOutPageController.cs | 97 ++++++++++++++++++- 4 files changed, 102 insertions(+), 7 deletions(-) diff --git a/API/TaskManager.EntityFramework/JobDbContext.cs b/API/TaskManager.EntityFramework/JobDbContext.cs index f6189cd..81c4529 100644 --- a/API/TaskManager.EntityFramework/JobDbContext.cs +++ b/API/TaskManager.EntityFramework/JobDbContext.cs @@ -512,7 +512,7 @@ namespace TaskManager.EntityFramework //控制项要求频率 b.Property(e => e.SamplingRate).HasColumnType("DECIMAL").HasPrecision(precision: 16, scale: 5).IsRequired(false); //上下限更新时间,格式(yyyy-MM-ddHH:mm:ss) - b.Property(e => e.LimitUpdateTime).HasColumnType("CHAR").HasMaxLength(19).IsRequired(false); + b.Property(e => e.LimitUpdateTime).HasColumnType("varCHAR").HasMaxLength(19).IsRequired(false); //控制项描述 b.Property(e => e.VendorFieldDesc).HasColumnType("VARCHAR").HasMaxLength(64).IsRequired(false); //控制项代码 @@ -1993,13 +1993,13 @@ namespace TaskManager.EntityFramework //控制项要求频率 b.Property(e => e.SamplingRate).HasColumnType("DECIMAL").HasPrecision(precision: 16, scale: 5).IsRequired(false); //上下限更新时间,格式(yyyy-MM-ddHH:mm:ss) - b.Property(e => e.LimitUpdateTime).HasColumnType("CHAR").HasMaxLength(19).IsRequired(false); + b.Property(e => e.LimitUpdateTime).HasColumnType("VARCHAR").HasMaxLength(19).IsRequired(false); //控制项描述 b.Property(e => e.VendorFieldDesc).HasColumnType("VARCHAR").HasMaxLength(64).IsRequired(false); //控制项代码 b.Property(e => e.VendorFieldCode).HasColumnType("VARCHAR").HasMaxLength(32).IsRequired(); //库存有效日期,格式(yyyy-MM-ddHH:mm:ss) - b.Property(e => e.DeadLine).HasColumnType("VARCHAR").HasMaxLength(10).IsRequired(); + b.Property(e => e.DeadLine).HasColumnType("VARCHAR").HasMaxLength(30).IsRequired(); b.Property(e => e.Remark).HasColumnType("NVarchar").HasMaxLength(500).IsRequired(false); diff --git a/API/Wood.Admin.WebApi/Properties/PublishProfiles/FolderProfile.pubxml.user b/API/Wood.Admin.WebApi/Properties/PublishProfiles/FolderProfile.pubxml.user index fa4421d..f99cbee 100644 --- a/API/Wood.Admin.WebApi/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/API/Wood.Admin.WebApi/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -3,7 +3,7 @@ <_PublishTargetUrl>D:\QRAPI20250528\API\Wood.Admin.WebApi\bin\Release\net8.0\publish\ - True|2025-07-02T02:15:44.3531626Z||;True|2025-07-02T10:14:19.3576521+08:00||;True|2025-07-01T18:51:45.0206266+08:00||;True|2025-06-30T15:39:43.7918723+08:00||;True|2025-06-30T14:40:36.2678533+08:00||;True|2025-06-30T14:22:36.2631903+08:00||;True|2025-06-30T09:23:23.0780295+08:00||;True|2025-06-28T10:37:00.4525422+08:00||;True|2025-06-27T14:51:18.0006510+08:00||;True|2025-06-27T14:46:36.7189818+08:00||;True|2025-06-25T10:54:54.0406425+08:00||;True|2025-06-24T15:53:07.6141315+08:00||;True|2025-06-24T15:48:22.4116425+08:00||;True|2025-06-24T15:47:33.3794364+08:00||;True|2025-06-24T15:21:28.5600646+08:00||;True|2025-06-23T17:18:30.1990173+08:00||;True|2025-06-23T17:12:33.6485743+08:00||;True|2025-06-19T17:18:07.6086155+08:00||; + True|2025-07-03T01:24:39.8368797Z||;True|2025-07-02T17:18:03.6042427+08:00||;True|2025-07-02T10:15:44.3531626+08:00||;True|2025-07-02T10:14:19.3576521+08:00||;True|2025-07-01T18:51:45.0206266+08:00||;True|2025-06-30T15:39:43.7918723+08:00||;True|2025-06-30T14:40:36.2678533+08:00||;True|2025-06-30T14:22:36.2631903+08:00||;True|2025-06-30T09:23:23.0780295+08:00||;True|2025-06-28T10:37:00.4525422+08:00||;True|2025-06-27T14:51:18.0006510+08:00||;True|2025-06-27T14:46:36.7189818+08:00||;True|2025-06-25T10:54:54.0406425+08:00||;True|2025-06-24T15:53:07.6141315+08:00||;True|2025-06-24T15:48:22.4116425+08:00||;True|2025-06-24T15:47:33.3794364+08:00||;True|2025-06-24T15:21:28.5600646+08:00||;True|2025-06-23T17:18:30.1990173+08:00||;True|2025-06-23T17:12:33.6485743+08:00||;True|2025-06-19T17:18:07.6086155+08:00||; \ No newline at end of file diff --git a/API/Wood.Service/Controllers/CheryRecurringJobInputPageExtendController.cs b/API/Wood.Service/Controllers/CheryRecurringJobInputPageExtendController.cs index 711a12d..036f940 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobInputPageExtendController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobInputPageExtendController.cs @@ -307,12 +307,12 @@ namespace TaskManager.Controllers log.InjectFrom(itm); log.RequestDate = requestDate; log.TaskId = taskId; - log.RequestDate = requestDate; + log.WriteState = true; log.ReadState = true; logs.Add(log); } - await _jobDbContext.BulkInsertAsync(logs); + await _jobDbContext.BulkInsertAsync(logs); try { diff --git a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs index bdaf8a1..9fb3298 100644 --- a/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs +++ b/API/Wood.Service/Controllers/CheryRecurringJobOutPageController.cs @@ -324,6 +324,101 @@ namespace TaskManager.Controllers return allData; } + + + + public async Task> CustomFetchAllDataAsync(string inputdate) + { + var allData = new List(); + int totalItems = 0; + int pageSize = 0; + int currentPage = 1; + string date = !string.IsNullOrEmpty(inputdate) ? inputdate : DateTime.Now.ToString("yyyy-MM-dd"); + var taskId = Guid.NewGuid(); + var version = date.Replace("-", ""); + var readedcount = _jobDbContext.Set().Where(p => p.RequestDate == inputdate).Count(); + + + PagedResponse firstResponse = await GetPageAsync(new PAGE_DTO() { Date = date, PageSize = CPageSize, IsForce = true }, taskId, version); + if (firstResponse == null || firstResponse.Code != 200) + { + await _logger.AddInfo("首次请求失败,无法获取分页信息。", TaskName, taskId, version); + return allData; + } + if (firstResponse.Data.Total == "0") + { + await _logger.AddInfo("首次请求失败,Total为0已经全部读取过。", TaskName, taskId, version); + return allData; + + } + if (readedcount != int.Parse(firstResponse.Data.Total))//记录数不相等 + { + var ids = _jobDbContext.Set().Where(p => p.RequestDate == inputdate).Select(p => p.Id).ToList();//已经同步的ID + totalItems = int.Parse(firstResponse.Data.Total); + pageSize = int.Parse(firstResponse.Data.PageSize); + List pagefirstList = new List(); + + foreach (var itm in firstResponse.Data.Rows) + { + T entity = new T(); + entity.InjectFrom(itm); + entity.CreationTime = DateTime.Now; + pagefirstList.Add(entity); + entity.RequestDate = date; + allData.Add(itm); + } + if (pagefirstList.Any()) + { + await InsertDataAsync(pagefirstList); + } + //Console.WriteLine($"总记录数: {totalItems}, 每页大小: {pageSize}"); + // 计算总页数 + int totalPages = (int)Math.Ceiling((double)totalItems / pageSize); + //Console.WriteLine($"总共需要请求 {totalPages} 页数据"); + + // 循环请求剩余页面 + for (currentPage = 2; currentPage <= totalPages; currentPage++) + { + PAGE_DTO pageinput = new PAGE_DTO() { Date = date, PageNum = currentPage, PageSize = CPageSize, IsForce = true }; + //Console.WriteLine($"正在请求第 {currentPage} 页..."); + PagedResponse pageResponse = await GetPageAsync(pageinput, taskId, version); + if (pageResponse?.Data.Rows != null && pageResponse.Data.Rows.Count > 0) + { + List pageList = new List(); + foreach (var itm in pageResponse.Data.Rows) + { + T entity = new T(); + entity.InjectFrom(itm); + entity.CreationTime = DateTime.Now; + entity.RequestDate = date; + pageList.Add(entity); + allData.Add(itm); + } + if (pageList.Any()) + { + await InsertDataAsync(pageList); + } + await _logger.AddSuccess($"成功获取 {pageResponse.Data.Rows.Count} 条记录", TaskName, taskId, version); + } + else + { + await _logger.AddInfo($"第 {currentPage} 页未返回数据", TaskName, taskId, version); + } + // 简单的请求间隔,避免过于频繁 + await Task.Delay(200); + } + await _logger.AddSuccess($"所有数据获取完成,总共获取了 {allData.Count} 条记录", TaskName, taskId, version); + } + + + // 首次请求获取总条数和分页信息 + + return allData; + } + + + + private async Task> GetPageAsync(PAGE_DTO input,Guid taskId,string version) { string inputjson = string.Empty; @@ -385,7 +480,7 @@ namespace TaskManager.Controllers Path = first.Api; TaskName = taskName; CPageSize = first.PageSize; - await FetchAllDataAsync(inputdate); + await CustomFetchAllDataAsync(inputdate); } protected override async Task DoExecutingAsync(string url, string path, string takName, string client, int pagesize) {