过站记录数据上传测试完成

This commit is contained in:
赵正易 2025-03-12 16:59:06 +08:00
parent dda7303aa5
commit 2cca46b104
3 changed files with 35 additions and 22 deletions

View File

@ -85,7 +85,7 @@ namespace DOAN.Model.Bydlms
/// <summary>
/// 是否产出。0表示产出1表示非产出
/// </summary>
public int? IsProduc { get; set; }
public int? IsProduct { get; set; }
/// <summary>
/// 过站类型(1表示进站2表示出站)

View File

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

View File

@ -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
/// <returns></returns>
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
/// <returns>表示异步操作的任务。</returns>
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
/// <returns>API响应的内容字符串。</returns>
private async Task<string> 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
/// <param name="exception">捕获的HttpRequestException异常。</param>
private void HandleHttpRequestException(HttpRequestException exception)
{
Console.WriteLine("exception" + exception);
Console.WriteLine($"HTTP Request Error: {exception.Message}");
// 可以在这里添加日志记录或其他处理逻辑
}