218 lines
6.5 KiB
C#
218 lines
6.5 KiB
C#
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<AlarmData> rows = new List<AlarmData>();
|
|
}
|
|
[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<ItemDatum> onItemDatum;
|
|
|
|
public AlarmManagementData alarmManagementData;
|
|
public Dictionary<string, AlarmInfo> alarmInfos = new();
|
|
public Action<List<AlarmInfo>> 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<ItemManagementData>(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<AlarmManagementData>(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());
|
|
}
|
|
}
|