using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Net.Http; using System.Runtime.InteropServices.ComTypes; using System.Text; using System.Text.Json; using System.Threading.Tasks; using System.Windows.Forms; using UAS_MES_NEW.CustomControl.RichText; using UAS_MES_NEW.DataOperate; using UAS_MES_NEW.Entity; namespace UAS_MES_NEW.Make { public partial class Make_Humiture : Form { public Make_Humiture() { InitializeComponent(); } string url = "https://www.zzguorun.top/Platform/"; string secret = "GR682e728acdb269da22754ec9b78d6214"; List clientId = new List(); List clientName = new List(); DataHelper dh; private void Make_Humiture_Load(object sender, EventArgs e) { IpPortUrlVal.Text = url; dh = SystemInf.dh; } private void onStart_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(IpPortUrlVal.Text)) { ShowMsg(Msg1, 0, "请输出请求地址"); IpPortUrlVal.Focus(); IpPortUrlVal.SelectAll(); return; } if (string.IsNullOrEmpty(timeVal.Text)) { ShowMsg(Msg1, 0, "请输出获取间隔时间"); timeVal.Focus(); timeVal.SelectAll(); return; } if (onStart.Text == "获取中") { IpPortUrlVal.Enabled = true; timeVal.Enabled = true; onStart.Text = "开启获取"; timer1.Stop(); } else { IpPortUrlVal.Enabled = false; timeVal.Enabled = false; onStart.Text = "获取中"; double time = Convert.ToDouble(timeVal.Text) * 60000; timer1.Interval = Convert.ToInt32(time); ShowMsg(Msg1, 2, $"执行间隔:{timer1.Interval}毫秒"); timer1.Start(); } } private async void timer1_Tick(object sender, EventArgs e) { try { if (clientId.Count == 0) { clientId.Clear(); clientName.Clear(); string apiUrl = IpPortUrlVal.Text.Trim() + "getAllEquipsInfo"; var dataObject = new { secret = secret }; string result = await HttpHelper.PostAsync(apiUrl, dataObject); JsonDocument doc = JsonDocument.Parse(result); JsonElement root = doc.RootElement; JsonElement dataArr = root.GetProperty("data"); if (dataArr.ValueKind == JsonValueKind.Array) { foreach (JsonElement item in dataArr.EnumerateArray()) { clientId.Add(item.GetProperty("clientid").ToString()); clientName.Add(item.GetProperty("clientname").ToString()); } } JsonElement nameElement = root.GetProperty("status"); if (nameElement.ToString() == "200") { ShowMsg(Msg1, 1, $"获取温湿度设备成功,已获取到{dataArr.GetArrayLength()}个"); } } string basrUrl = IpPortUrlVal.Text.Trim() + "getEquipDetails"; for(int i = 0;i < clientId.Count;i++) { var paramsObj = new { secret = secret, clientId = clientId[i] }; string result = await HttpHelper.PostAsync(basrUrl, paramsObj); JsonDocument doc = JsonDocument.Parse(result); JsonElement root = doc.RootElement; JsonElement nameElement = root.GetProperty("status"); if (nameElement.ToString() == "200") { switch (i) { case 1: ShowMsg(Msg2, 1, $"温湿度设备:{clientName[i]},已获取并记录运行信息"); break; case 2: ShowMsg(Msg3, 1, $"温湿度设备:{clientName[i]},已获取并记录运行信息"); break; case 3: ShowMsg(Msg4, 1, $"温湿度设备:{clientName[i]},已获取并记录运行信息"); break; default: ShowMsg(Msg1, 1, $"温湿度设备:{clientName[i]},已获取并记录运行信息"); break; } } else { switch (i) { case 1: ShowMsg(Msg2, 0, $"温湿度设备:{clientName[i]},获取运行数据异常,请检查设备"); break; case 2: ShowMsg(Msg3, 0, $"温湿度设备:{clientName[i]},获取运行数据异常,请检查设备"); break; case 3: ShowMsg(Msg4, 0, $"温湿度设备:{clientName[i]},获取运行数据异常,请检查设备"); break; default: ShowMsg(Msg1, 0, $"温湿度设备:{clientName[i]},获取运行数据异常,请检查设备"); break; } } JsonElement chart = root.GetProperty("data").GetProperty("equip").GetProperty("chart"); JsonElement checkPoint1_T = chart.GetProperty("检测点01").GetProperty("当前温度"); JsonElement checkPoint1_H = chart.GetProperty("检测点01").GetProperty("当前湿度"); JsonElement checkPoint2_T = chart.GetProperty("检测点02").GetProperty("当前温度"); JsonElement checkPoint2_H = chart.GetProperty("检测点02").GetProperty("当前湿度"); JsonElement checkPoint3_T = chart.GetProperty("检测点03").GetProperty("当前温度"); JsonElement checkPoint3_H = chart.GetProperty("检测点03").GetProperty("当前湿度"); JsonElement checkPoint4_T = chart.GetProperty("检测点04").GetProperty("当前温度"); JsonElement checkPoint4_H = chart.GetProperty("检测点04").GetProperty("当前湿度"); JsonElement checkPoint5_T = chart.GetProperty("检测点05").GetProperty("当前温度"); JsonElement checkPoint5_H = chart.GetProperty("检测点05").GetProperty("当前湿度"); JsonElement average = chart.GetProperty("环境平均湿度"); dh.ExecuteSql($@"INSERT INTO HUMITURE (HU_ID,HU_INDATE,CHECKPOINT1_T,CHECKPOINT1_H,CHECKPOINT2_T,CHECKPOINT2_H,CHECKPOINT3_T,CHECKPOINT3_H, CHECKPOINT4_T,CHECKPOINT4_H,CHECKPOINT5_T,CHECKPOINT5_H,AVERAGE,EQUITYPE,EQUIID) VALUES (HUMITURE_SEQ.NEXTVAL,sysdate,'{checkPoint1_T.ToString()}','{checkPoint1_H.ToString()}','{checkPoint2_T.ToString()}','{checkPoint2_H.ToString()}','{checkPoint3_T.ToString()}','{checkPoint3_H.ToString()}', '{checkPoint4_T.ToString()}','{checkPoint4_H.ToString()}','{checkPoint5_T.ToString()}','{checkPoint5_H.ToString()}','{average.ToString()}','{clientName[i]}','{clientId[i]}')", "insert"); } } catch(Exception ex) { ShowMsg(Msg1, 0, $"获取数据时发生错误: {ex.Message}"); } } private void claerBtn_Click(object sender, EventArgs e) { Msg1.Clear(); Msg2.Clear(); Msg3.Clear(); Msg4.Clear(); } private void ShowMsg(RichTextAutoBottom msgBox, int type, string msg) { msg = msg.Replace("\r", "").Replace("\n", ""); string msgTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string showMsg = $"{msgTime}: {msg}\n"; if (type == 0) { msgBox.AppendText(showMsg, Color.Red); msgBox.SelectionStart = msgBox.Text.Length; msgBox.ScrollToCaret(); } else if (type == 1) { msgBox.AppendText(showMsg, Color.Green); msgBox.SelectionStart = msgBox.Text.Length; msgBox.ScrollToCaret(); } else if (type == 2) { msgBox.AppendText(showMsg, Color.YellowGreen); msgBox.SelectionStart = msgBox.Text.Length; msgBox.ScrollToCaret(); } } public static class HttpHelper { public static async Task PostAsync(string url, T data) { var client = new HttpClient(); string json = JsonSerializer.Serialize(data); var content = new StringContent(json, Encoding.UTF8, "application/json"); var response = await client.PostAsync(url, content); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStringAsync(); } } } }