唐召明
authored
|
1
|
using HHECS.BllModel;
|
唐召明
authored
|
2
|
using HHECS.DAQClient.Dto;
|
唐召明
authored
|
3
|
using HHECS.DAQClient.Model;
|
唐召明
authored
|
4
5
6
7
8
|
using System.Configuration;
using System.Net.Http;
using System.Text;
using System.Text.Json;
|
唐召明
authored
|
9
|
namespace HHECS.DAQClient.Services
|
唐召明
authored
|
10
11
12
13
14
|
{
internal class HttpService
{
private readonly HttpClient _httpClient;
|
唐召明
authored
|
15
|
private readonly JsonSerializerOptions jsonSerializeOptions = new JsonSerializerOptions
|
唐召明
authored
|
16
17
|
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
|
唐召明
authored
|
18
19
20
21
22
23
|
PropertyNameCaseInsensitive = true
};
private readonly JsonSerializerOptions jsonDeserializeOptions = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
|
唐召明
authored
|
24
25
26
27
|
};
public HttpService(HttpClient httpClient)
{
|
唐召明
authored
|
28
29
30
31
32
|
//HttpClientHandler clientHandler = new HttpClientHandler();
//clientHandler.ServerCertificateCustomValidationCallback += (sender, cert, chain, sslPolicyErrors) => { return true; };
//clientHandler.SslProtocols = SslProtocols.None;
//httpClient = new HttpClient(clientHandler);
|
唐召明
authored
|
33
34
35
36
37
38
39
40
41
42
|
_ = bool.TryParse(ConfigurationManager.AppSettings["IsProductionEnvironment"], out var isProductionEnvironment);
if (isProductionEnvironment)
{
httpClient.BaseAddress = new Uri(ConfigurationManager.AppSettings["ProductionAPI"]!);
}
else
{
httpClient.BaseAddress = new Uri(ConfigurationManager.AppSettings["TestAPI"]!);
}
|
唐召明
authored
|
43
|
httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
|
唐召明
authored
|
44
|
httpClient.DefaultRequestHeaders.Add("User-Agent", "HHECS.DAQClient");
|
唐召明
authored
|
45
46
47
48
49
50
|
_httpClient = httpClient;
}
/// <summary>
/// 推送设备实时数据
/// </summary>
|
唐召明
authored
|
51
|
/// <param name="equipmentDataQueues"></param>
|
唐召明
authored
|
52
|
public BllResult SendEquipmentData(IEnumerable<EquipmentDataQueue> equipmentDataQueues)
|
唐召明
authored
|
53
|
{
|
唐召明
authored
|
54
|
try
|
唐召明
authored
|
55
|
{
|
唐召明
authored
|
56
57
|
var data = equipmentDataQueues.Select(x => new EquipmentDataDto
{
|
唐召明
authored
|
58
|
Plmeid = x.Id == Guid.Empty ? Guid.NewGuid() : x.Id,
|
唐召明
authored
|
59
60
61
62
63
64
65
|
EquipmentSN = x.EquipmentCode,
Reported = JsonSerializer.Deserialize<List<TagItem>>(x.Reported),
Version = x.Version,
Timestamp = x.SourceTimestamp,
}).ToList();
var json = JsonSerializer.Serialize(data, jsonSerializeOptions);
|
唐召明
authored
|
66
|
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
|
唐召明
authored
|
67
|
var result = _httpClient.PostAsync("Equipment/SendEquipmentData", stringContent).Result;
|
唐召明
authored
|
68
69
70
|
var resultContent = result.Content.ReadAsStringAsync().Result;
if (result.IsSuccessStatusCode)
{
|
唐召明
authored
|
71
|
return JsonSerializer.Deserialize<BllResult>(resultContent, jsonDeserializeOptions);
|
唐召明
authored
|
72
73
|
}
else
|
唐召明
authored
|
74
|
{
|
唐召明
authored
|
75
76
77
78
79
|
if (string.IsNullOrEmpty(resultContent))
{
resultContent = result.ReasonPhrase;
}
return BllResultFactory.Error($"推送失败:{resultContent}");
|
唐召明
authored
|
80
|
}
|
唐召明
authored
|
81
82
83
84
|
}
catch (Exception ex)
{
return BllResultFactory.Error(ex.Message);
|
唐召明
authored
|
85
86
|
}
}
|
唐召明
authored
|
87
|
|
唐召明
authored
|
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
/// <summary>
/// 推送某一时间段的数据
/// </summary>
/// <param name="equipmentDataQueues"></param>
/// <returns></returns>
public BllResult SendEquipmentDataV2(IEnumerable<EquipmentDataQueue> equipmentDataQueues)
{
try
{
var data = equipmentDataQueues.Select(x => new EquipmentDataV2Dto
{
Plmeid = x.Id,
EquipmentSN = x.EquipmentCode,
Reported = JsonSerializer.Deserialize<List<TagItem>>(x.Reported),
Version = x.Version,
TimestampStart = x.SourceTimestamp,
TimestampEnd = (long)(x.SourceTimestamp + (x.Updated.Value - x.Created.Value).TotalMilliseconds),
});
var json = JsonSerializer.Serialize(data, jsonSerializeOptions);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
var result = _httpClient.PostAsync("Equipment/SendEquipmentDataV2", stringContent).Result;
var resultContent = result.Content.ReadAsStringAsync().Result;
if (result.IsSuccessStatusCode)
{
return JsonSerializer.Deserialize<BllResult>(resultContent, jsonDeserializeOptions);
}
else
{
if (string.IsNullOrEmpty(resultContent))
{
resultContent = result.ReasonPhrase;
}
return BllResultFactory.Error($"推送失败:{resultContent}");
}
}
catch (Exception ex)
{
return BllResultFactory.Error(ex.Message);
}
}
|
唐召明
authored
|
129
130
131
132
133
134
135
136
137
138
|
public BllResult UpdateClientStatus(Guid clientId)
{
try
{
var data = new
{
ClientId = clientId,
};
var json = JsonSerializer.Serialize(data, jsonSerializeOptions);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
|
唐召明
authored
|
139
|
var result = _httpClient.PostAsync("Equipment/UpdateClientStatus", stringContent).Result;
|
唐召明
authored
|
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
var resultContent = result.Content.ReadAsStringAsync().Result;
if (result.IsSuccessStatusCode)
{
return JsonSerializer.Deserialize<BllResult>(resultContent, jsonDeserializeOptions);
}
else
{
if (string.IsNullOrEmpty(resultContent))
{
resultContent = result.ReasonPhrase;
}
return BllResultFactory.Error($"推送失败:{resultContent}");
}
}
catch (Exception ex)
{
return BllResultFactory.Error(ex.Message);
}
}
|
唐召明
authored
|
159
160
|
}
}
|