using log4net;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RabbitMQ.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Security.Principal;
using System.Text;
using System.Threading.Tasks;
namespace Ropin.Inspection.Common.Helper
{
public class AIProjectHelper
{
private readonly IHttpClientFactory _httpClientFactory;
private static readonly ILog log = LogManager.GetLogger(typeof(AIProjectHelper));
public static AILoginOutput loginResult;
public AIProjectHelper(IHttpClientFactory httpClientFactory)
{
_httpClientFactory = httpClientFactory;
}
///
/// 获取token
///
///
public async Task GetToken()
{
if (loginResult != null)
{
return loginResult;
}
AILoginOutput token = null;
//string url = string.Format(AIConst.ApiUrl+ AIConst.loginUrl);
string url =AIConst.ApiUrl + AIConst.loginUrl;
using (var client = _httpClientFactory.CreateClient())
{
var login = new
{
Account = AIConst.userName,
Password = AIConst.userPwd
};
var loginStr = JsonConvert.SerializeObject(login);
var request = new HttpRequestMessage(HttpMethod.Post, url)
{
Content = new StringContent(loginStr, System.Text.Encoding.UTF8, "application/json")
};
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode(); // 确保响应状态码为成功
if (response.IsSuccessStatusCode)
{
var strReturn = await response.Content.ReadAsStringAsync();
AIModel tencentToken = JsonConvert.DeserializeObject>(strReturn);
if (tencentToken != null && tencentToken.code=="200")
{
token = tencentToken.result;
}
}
}
catch (HttpRequestException ex)
{
log.Info($"AItoken异常【{ex.Message}】");
}
catch (JsonException ex)
{
log.Info($"解析AIToken响应异常【{ex.Message}】");
}
catch (Exception ex)
{
log.Info($"获取AIToken时发生未知异常【{ex.Message}】");
}
}
loginResult = token;
return token;
}
///
/// 获取历史报警记录
///
///
public async Task> GetHistoricAlmrecord(string Devno, int Page = 1, int pageSize = 10,long? entityId=null)
{
if (loginResult == null)
{
loginResult = await GetToken();
}
if (loginResult==null|| loginResult.RefreshToken==null)
{
log.Info($"AI-获取历史报警记录-token 为空");
return null;
}
AISqlSugarPagedList almData= null;
string url = AIConst.ApiUrl + AIConst.HistoricAlmrecord;
using (var client = _httpClientFactory.CreateClient())
{
entityId = entityId ?? AIConst.AIEntityId;
// 设置请求头,添加 token
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", loginResult.AccessToken);
var data = new
{
isPage= Page==0?false:true,
Page= Page,
PageSize=pageSize,
SearchKey = Devno,
EntityId= entityId,
ThirdParty = "",
Device_Type="",
Event_Code = "",
Mistake=false,
//StartTimeRange = ["",""]
};
var dataStr = JsonConvert.SerializeObject(data);
var request = new HttpRequestMessage(HttpMethod.Post, url)
{
Content = new StringContent(dataStr, System.Text.Encoding.UTF8, "application/json")
};
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode(); // 确保响应状态码为成功
if (response.IsSuccessStatusCode)
{
var strReturn = await response.Content.ReadAsStringAsync();
AIModel> ResponseRestult = JsonConvert.DeserializeObject>>(strReturn);
if (ResponseRestult != null && ResponseRestult.code == "200")
{
almData = ResponseRestult.result;
}
}
}
catch (HttpRequestException ex)
{
log.Info($"AI-获取历史报警记录-异常【{ex.Message}】");
}
catch (JsonException ex)
{
log.Info($"解析AI-获取历史报警记录-响应异常【{ex.Message}】");
}
catch (Exception ex)
{
log.Info($"获取AI-获取历史报警记录-时发生未知异常【{ex.Message}】");
}
}
return almData;
}
///
/// 获取报警处理
///
///
public async Task> GetAlmDispose(string Devno, int Page = 1, int pageSize = 10, long? entityId = null)
{
if (loginResult == null)
{
loginResult = await GetToken();
}
if (loginResult == null || loginResult.RefreshToken == null)
{
log.Info($"AI-获取历史报警记录-token 为空");
return null;
}
AISqlSugarPagedList almData = null;
string url = AIConst.ApiUrl + AIConst.AlmDispose;
using (var client = _httpClientFactory.CreateClient())
{
entityId = entityId ?? AIConst.AIEntityId;
// 设置请求头,添加 token
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", loginResult.AccessToken);
var data = new
{
isPage = Page == 0 ? false : true,
Page = Page,
PageSize = pageSize,
SearchKey = Devno,
EntityId = entityId,
ThirdParty = "",
Device_Type = "",
Event_Code = "",
Mistake = false,
//StartTimeRange = ["",""]
};
var dataStr = JsonConvert.SerializeObject(data);
var request = new HttpRequestMessage(HttpMethod.Post, url)
{
Content = new StringContent(dataStr, System.Text.Encoding.UTF8, "application/json")
};
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode(); // 确保响应状态码为成功
if (response.IsSuccessStatusCode)
{
var strReturn = await response.Content.ReadAsStringAsync();
AIModel> ResponseRestult = JsonConvert.DeserializeObject>>(strReturn);
if (ResponseRestult != null && ResponseRestult.code == "200")
{
almData = ResponseRestult.result;
}
}
}
catch (HttpRequestException ex)
{
log.Info($"AI-获取历史报警记录-异常【{ex.Message}】");
}
catch (JsonException ex)
{
log.Info($"解析AI-获取历史报警记录-响应异常【{ex.Message}】");
}
catch (Exception ex)
{
log.Info($"获取AI-获取历史报警记录-时发生未知异常【{ex.Message}】");
}
}
return almData;
}
///
/// AI报警软删除
///
///
public async Task UpdateAlmIsDelete(long AlmId)
{
if (loginResult == null)
{
loginResult = await GetToken();
}
if (loginResult == null || loginResult.RefreshToken == null)
{
log.Info($"AI-AI报警软删除-token 为空");
return false;
}
bool result=false;
string url = AIConst.ApiUrl + AIConst.AlmDeleteDispose;
using (var client = _httpClientFactory.CreateClient())
{
// 设置请求头,添加 token
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", loginResult.AccessToken);
var data = new
{
Id= AlmId
};
var dataStr = JsonConvert.SerializeObject(data);
var request = new HttpRequestMessage(HttpMethod.Post, url)
{
Content = new StringContent(dataStr, System.Text.Encoding.UTF8, "application/json")
};
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode(); // 确保响应状态码为成功
if (response.IsSuccessStatusCode)
{
var strReturn = await response.Content.ReadAsStringAsync();
AIModel