using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Drawing; using System.Net.Http; using System.Text; 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); JObject root = JObject.Parse(result); JArray dataArr = (JArray)root["data"]; foreach (JToken item in dataArr) { clientId.Add(item["clientid"].ToString()); clientName.Add(item["clientname"].ToString()); } if (root["status"].ToString() == "200") { ShowMsg(Msg1, 1, $"获取温湿度设备成功,已获取到{dataArr.Count}个"); } } string basrUrl = IpPortUrlVal.Text.Trim() + "getEquipDetails"; for (int i = 0; i < clientId.Count; i++) { try { var paramsObj = new { secret = secret, clientId = clientId[i] }; string result = await HttpHelper.PostAsync(basrUrl, paramsObj); JObject root = JObject.Parse(result); string status = root["status"].ToString(); if (status == "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; } } JToken chart = root["data"]["equip"]["chart"]; string checkPoint1_T = chart["检测点01"]["当前温度"].ToString(); string checkPoint1_H = chart["检测点01"]["当前湿度"].ToString(); string checkPoint2_T = chart["检测点02"]["当前温度"].ToString(); string checkPoint2_H = chart["检测点02"]["当前湿度"].ToString(); string checkPoint3_T = chart["检测点03"]["当前温度"].ToString(); string checkPoint3_H = chart["检测点03"]["当前湿度"].ToString(); string checkPoint4_T = chart["检测点04"]["当前温度"].ToString(); string checkPoint4_H = chart["检测点04"]["当前湿度"].ToString(); string checkPoint5_T = chart["检测点05"]["当前温度"].ToString(); string checkPoint5_H = chart["检测点05"]["当前湿度"].ToString(); string average = chart["环境平均湿度"].ToString(); 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}','{checkPoint1_H}','{checkPoint2_T}','{checkPoint2_H}','{checkPoint3_T}','{checkPoint3_H}', '{checkPoint4_T}','{checkPoint4_H}','{checkPoint5_T}','{checkPoint5_H}','{average}','{clientName[i]}','{clientId[i]}')", "insert"); } catch(Exception ex) { switch (i) { case 1: ShowMsg(Msg2, 0, $"获取设备:{clientName[i]}数据时发生错误: {ex.Message}"); break; case 2: ShowMsg(Msg3, 0, $"获取设备:{clientName[i]}数据时发生错误: {ex.Message}"); break; case 3: ShowMsg(Msg4, 0, $"获取设备:{clientName[i]}数据时发生错误: {ex.Message}"); break; default: ShowMsg(Msg1, 0, $"获取设备:{clientName[i]}数据时发生错误: {ex.Message}"); break; } } } } 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 = JsonConvert.SerializeObject(data); var content = new StringContent(json, Encoding.UTF8, "application/json"); var response = await client.PostAsync(url, content); response.EnsureSuccessStatusCode(); return await response.Content.ReadAsStringAsync(); } } } }