using Best.HTTP; using Newtonsoft.Json; using Samkwang; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Net; using System.Text; using UnityEngine; public class HTTP : MonoBehaviour { public class Condition { public string max; public string min; public string type; public string deviation; } [Serializable] public class AlarmDatum { public string count; public List rows = new List(); } [Serializable] public class AlarmManagementData { public int status; public string code; public string message; public AlarmDatum data; } [Serializable] public class AlarmData { public string id; public string alarmType; public string level; public string state; public string message; public string code; public string eqpId; public string eqpName; public string value; public Condition condition; public string setTime; public string clearTime; } [Serializable] public class ItemManagementData { public string status; public string code; public string message; public ItemDatum data; public string remark; } [Serializable] public class ItemDatum { public string count; public ItemData[] rows; } [Serializable] public class ItemData { public string id; public string modelId; public string createUserId; public string lastUpdateUserId; public string itemCode; public string itemName; public string spec; public string unit; public string timestamp; public string createdAt; public string updatedAt; public Model Model; } [Serializable] public class Model { public string id; public string previewFileld; public string fileName; public PrevieFile PreviewFile; } [Serializable] public class PrevieFile { public string id; public string title; public string path; public string type; public string size; public string createdAt; } private string itemServer = "https://samkwang-hub.flexing.ai/server/api/item-management/item"; private string alarmServer = "https://samkwang-hub.flexing.ai/server/api/unity-alarm-history"; private string api = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwiZW1haWwiOiJzeXN0ZW0iLCJncm91cElkIjoxLCJncm91cENvZGUiOiIiLCJuYW1lIjoi7Iuc7Iqk7YWcIOq0gOumrOyekCIsInBob25lIjoiMDEwLTExMTEtMTExMSIsImlhdCI6MTc2MzA4MTA4NiwiZXhwIjoxODI2MTk2Mjg2LCJpc3MiOiJodWIifQ.BXZ9tghs9zjh-2zfqk3BOOjUZ2wLLNpGfDFTaD0SkFg"; public ItemManagementData itemManagementData; public Action onItemDatum; public AlarmManagementData alarmManagementData; public Dictionary alarmInfos = new(); public Action> onSetStartAlarmData; public void Start() { ItemServerConnect(); AlarmServerConnect(); } public void ItemServerConnect() { var path = itemServer; var request = HTTPRequest.CreateGet(path, RequestFinishedCallback); request.AddHeader("access-token", api); request.Send(); } public void AlarmServerConnect() { var path = $"{alarmServer}?setTimeFrom={GetTodayStart()}&setTimeTo={GetTodayEnd()}&state=SET"; var request = HTTPRequest.CreateGet(path, RequestFinishedAlarmCallback); request.AddHeader("access-token", api); request.Send(); } public string GetTodayStart() { DateTime start = DateTime.Today; // 00:00:00.000 string iso = start.ToString("yyyy-MM-ddTHH:mm:ss.fffZ", CultureInfo.InvariantCulture); return WebUtility.UrlEncode(iso); } public static string GetTodayEnd() { DateTime end = DateTime.Today.AddHours(23).AddMinutes(59).AddSeconds(59).AddMilliseconds(999); string iso = end.ToString("yyyy-MM-ddTHH:mm:ss.fffZ", CultureInfo.InvariantCulture); return WebUtility.UrlEncode(iso); } private void RequestFinishedCallback(HTTPRequest req, HTTPResponse resp) { switch (req.State) { case HTTPRequestStates.Finished: if (resp.IsSuccess) { var payload = Encoding.UTF8.GetString(resp.Data); var response = JsonConvert.DeserializeObject(payload); itemManagementData = response; } else { Debug.Log("Error"); } break; default: break; } } private void RequestFinishedAlarmCallback(HTTPRequest req, HTTPResponse resp) { switch (req.State) { case HTTPRequestStates.Finished: if (resp.IsSuccess) { var payload = Encoding.UTF8.GetString(resp.Data); var response = JsonConvert.DeserializeObject(payload); alarmManagementData = response; foreach(var alarmData in alarmManagementData.data.rows) { var alarmInfo = new AlarmInfo(); alarmInfo.id = alarmData.id; alarmInfo.state = alarmData.state; alarmInfo.message = alarmData.message; alarmInfo.code = alarmData.code; alarmInfo.set_time = alarmData.setTime; alarmInfo.clear_time = alarmData.clearTime; alarmInfo.workcd = alarmData.eqpId; alarmInfo.worknm = alarmData.eqpName; if (!alarmInfos.ContainsKey(alarmInfo.id)) { alarmInfos.Add(alarmInfo.id, alarmInfo); } } } else { Debug.Log("Error"); } break; default: break; } } public void SetSendItemDatum() { onItemDatum?.Invoke(itemManagementData.data); } public void SetSendAlarmDatum() { onSetStartAlarmData?.Invoke(alarmInfos.Values.ToList()); } }