From 2cca46b104c77cdc344e236aea08c035e14b3eee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=AD=A3=E6=98=93?= Date: Wed, 12 Mar 2025 16:59:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=87=E7=AB=99=E8=AE=B0=E5=BD=95=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=8A=E4=BC=A0=E6=B5=8B=E8=AF=95=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DOAN.Model/Bydlms/BydProductionStation.cs | 2 +- .../Bydlms/Dto/BydProductionStationDto.cs | 2 +- DOAN.Tasks/TaskScheduler/Job_SyncForward.cs | 53 ++++++++++++------- 3 files changed, 35 insertions(+), 22 deletions(-) diff --git a/DOAN.Model/Bydlms/BydProductionStation.cs b/DOAN.Model/Bydlms/BydProductionStation.cs index a5cf59e..b7fc2fe 100644 --- a/DOAN.Model/Bydlms/BydProductionStation.cs +++ b/DOAN.Model/Bydlms/BydProductionStation.cs @@ -85,7 +85,7 @@ namespace DOAN.Model.Bydlms /// /// 是否产出。0表示产出,1表示非产出 /// - public int? IsProduc { get; set; } + public int? IsProduct { get; set; } /// /// 过站类型(1表示进站;2表示出站) diff --git a/DOAN.Model/Bydlms/Dto/BydProductionStationDto.cs b/DOAN.Model/Bydlms/Dto/BydProductionStationDto.cs index bda4358..3d15025 100644 --- a/DOAN.Model/Bydlms/Dto/BydProductionStationDto.cs +++ b/DOAN.Model/Bydlms/Dto/BydProductionStationDto.cs @@ -43,7 +43,7 @@ namespace DOAN.Model.Bydlms.Dto public string StationCode { get; set; } - public int? IsProduc { get; set; } + public int? IsProduct { get; set; } public int? ReqType { get; set; } diff --git a/DOAN.Tasks/TaskScheduler/Job_SyncForward.cs b/DOAN.Tasks/TaskScheduler/Job_SyncForward.cs index 847f897..9616cb2 100644 --- a/DOAN.Tasks/TaskScheduler/Job_SyncForward.cs +++ b/DOAN.Tasks/TaskScheduler/Job_SyncForward.cs @@ -12,6 +12,7 @@ using DOAN.Service.Bydlms.IBydlmsService; using Infrastructure; using Newtonsoft.Json; using System.Text; +using Azure; namespace DOAN.Tasks.TaskScheduler { @@ -42,7 +43,7 @@ namespace DOAN.Tasks.TaskScheduler /// public async Task Run() { - await Task.Delay(1000 * 10); + await Task.Delay(1000 * 60); //TODO 业务逻辑 //var db = DbScoped.SugarScope; @@ -51,13 +52,10 @@ namespace DOAN.Tasks.TaskScheduler try { - Console.WriteLine("后台任务执行!"); - - // TODO 过站信息转发 await ProcessStationPasses(_BaseUrl + _StationPassesUrl); // 报警信息转发 - await ProcessAlarms(_BaseUrl + _AlarmsUrl); + // await ProcessAlarms(_BaseUrl + _AlarmsUrl); // TODO 设备数采信息转发 // await ProcessDeviceDataCollection(BaseUrl + DeviceDataCollectionUrl); @@ -95,7 +93,6 @@ namespace DOAN.Tasks.TaskScheduler Console.WriteLine($"本次报警未上传信息,数据大小为{list.Count}"); if (list.Count > 0) { - // 发送HTTP请求并获取响应内容 AlarmUploadData uploadData = new() @@ -105,10 +102,14 @@ namespace DOAN.Tasks.TaskScheduler data = list }; string responseBody = await SendRequestAsync(url, uploadData); - + // 标记报警信息已上传 + foreach (var item in list) + { + item.IsUpload = 1; + } var updateRes = db.Updateable(list) - .UpdateColumns(it => it.IsUpload == 1) + .UpdateColumns(it => new { it.IsUpload }) // .UpdateColumns(it => new { it.IsUpload }) .ExecuteCommand(); if (updateRes == 0) @@ -138,7 +139,7 @@ namespace DOAN.Tasks.TaskScheduler /// 表示异步操作的任务。 private async Task ProcessStationPasses(string url) { - + Console.WriteLine($"执行过站信息上传!================================"); try { var db = DbScoped.SugarScope; @@ -149,7 +150,6 @@ namespace DOAN.Tasks.TaskScheduler Console.WriteLine($"本次过站未上传信息,数据大小为{list.Count}"); if (list.Count > 0) { - // 发送HTTP请求并获取响应内容 ProductionStationUploadData uploadData = new() @@ -167,9 +167,13 @@ namespace DOAN.Tasks.TaskScheduler data = list }; string responseBody = await SendRequestAsync(url, uploadData); - // 标记信息已上传 - var updateRes = db.Updateable(list).UpdateColumns(it => it.IsUpload == 1) + foreach (var item in list) + { + item.IsUpload = 1; + } + var updateRes = db.Updateable(list) + .UpdateColumns(it => new { it.IsUpload }) // .UpdateColumns(it => new { it.IsUpload }) .ExecuteCommand(); if (updateRes == 0) @@ -189,6 +193,7 @@ namespace DOAN.Tasks.TaskScheduler } catch (Exception ex) { + Console.WriteLine("过站信息上传出现异常!======== " + ex.Message); throw; } } @@ -200,28 +205,35 @@ namespace DOAN.Tasks.TaskScheduler /// API响应的内容字符串。 private async Task SendRequestAsync(string url, object data) { + if (data == null) { + throw new HttpRequestException($"请求发送失败: 请求体data为空"); + } // 将数据对象序列化为JSON字符串 var jsonData = JsonConvert.SerializeObject(data); var content = new StringContent(jsonData, Encoding.UTF8, "application/json"); - // 创建HTTP请求消息 using (var request = new HttpRequestMessage(HttpMethod.Post, url)) { request.Content = content; // 设置请求体内容 - request.Headers.Add("appId", "61320D6EEF5A48B7C32149DF991BED41"); // 添加请求头 - request.Headers.Add("appKey", "85725BB0BCCEE8DB1AE2D5A48D393ABE"); // 添加请求头 + // 添加请求头 + request.Headers.Add("appId", "7A5D0E17337C574DA1B6BAE22AC8B635"); + request.Headers.Add("appKey", "501546E35229E5725B9765568B461BB2"); using HttpClient client = new HttpClient(); // 发送HTTP请求并获取响应 HttpResponseMessage response = await client.SendAsync(request); - + string responseBody = await response.Content.ReadAsStringAsync(); // 确保响应状态码成功 - if (!response.IsSuccessStatusCode) + if (!response.IsSuccessStatusCode || response == null) { - throw new HttpRequestException($"请求发送失败: {response.StatusCode};url={url}"); + Console.WriteLine($"==1===请求响应失败,状态码: {response.StatusCode}"); + Console.WriteLine($"==2===请求响应失败,发送url: {url}"); + Console.WriteLine($"==3===请求响应失败,发送body内容: {jsonData}"); + Console.WriteLine($"==4===请求响应失败,请求内容: {response.RequestMessage}"); + Console.WriteLine($"==5===请求响应失败,返回内容Content: {responseBody}"); + throw new HttpRequestException($"请求发送失败: {responseBody}"); } - // 读取并返回响应内容 - return await response.Content.ReadAsStringAsync(); + return responseBody; } } @@ -231,6 +243,7 @@ namespace DOAN.Tasks.TaskScheduler /// 捕获的HttpRequestException异常。 private void HandleHttpRequestException(HttpRequestException exception) { + Console.WriteLine("exception" + exception); Console.WriteLine($"HTTP Request Error: {exception.Message}"); // 可以在这里添加日志记录或其他处理逻辑 }