using System.Collections; using System.Collections.Generic; using UnityEngine; using Best.HTTP; using System; using Newtonsoft.Json; using System.Text; using WI; using System.Linq; using UnityEngine.Networking; /// /// Option.ini /// /// --httpSetting-- /// apiKey="" /// httpServer="" /// kpiAPI="" /// predictionTimeAPI="" /// /// --mqttClientSetting-- /// brokerAddress="" /// brokerPort="" /// topics="a","b","c"... /// --mqttBrokerSetting-- /// address="" /// port="" /// topics="a","b","c"... /// /// --defaultInfo-- /// machineInfoPath="" /// /// --controllerOption-- /// forward="" /// backward="" /// left="" /// right="" /// zoomSpeed="" /// moveSpeed="" /// sprintSpeed="" /// rotateSpeed="" /// /// --graphicOption-- /// shadow=true /// uiEffect=true /// uiAnimation=true /// uiResolution=1.0 /// machineEffect=true /// machineAnimation=true /// graphicQuality=1 /// namespace CHN { public class WorkTimeRequesttBody { public string startDate; public string endDate; public string MCHCD; public string WO; } public class WorkConditionsRequestBody { public string startDate; public string endDate; public string MCHCD; public string WO; } public class HTTPRequester : Protocol, ISingle, IOptionable { public Action onMachineKPIData; public Action onWorkConditionsfacilityData; public Action onWorkTimefacilityData; public Action onWorkConditionsItemCodeData; public Action onWorkTimeItemCodeData; public Action onSendWorkConditionsData; public Action onSendWorkTimeData; [OptionSection] string httpSetting; [OptionKey] string apiKey = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MiwiZW1haWwiOiJjaHVuaWxlbmdAdXZjLmNvLmtyIiwiZ3JvdXBJZCI6MiwiZ3JvdXBDb2RlIjoiY2h1bmlsZW5nIiwicm9sZSI6IlRlbmFudEFkbWluIiwibmFtZSI6IuyynOydvOyXlOyngOuLiOyWtOungSIsImxpY2Vuc2UiOiJidXNpbmVzcyIsInBob25lIjoiMDEwMDAwMDAwMDAiLCJpYXQiOjE3MTgxNjI2MjksImV4cCI6MjAzMzUyMjYyOX0.zdlNswh_88M44oxs1HuaoA-rFdUoS50tHQ1-xNqWzIc"; [OptionKey] string httpServer = "http://106.247.236.204:8863"; [OptionKey] string kpiAPI = "/api/usp_ppmr020/list/facilityKpi"; public string testAPIKey = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MywiZW1haWwiOiJ1dmMiLCJncm91cElkIjoyLCJncm91cENvZGUiOiJjaHVuaWxlbmciLCJyb2xlIjoiVGVuYW50QWRtaW4iLCJuYW1lIjoi7Jyg67mE7JSoIiwibGljZW5zZSI6ImJ1c2luZXNzIiwicGhvbmUiOiIiLCJpYXQiOjE3NDA1MzY0NzUsImV4cCI6NDg5NDEzNjQ3NX0.hr4D0bOA4K09Vhp12itiJgd-nVDQ3VZO8D7MVP5Ltw0"; public string facilityAPI = "/api/workConditionAnalysis/facilityCode"; public string workItemCodeAPI = "/api/workConditionAnalysis/workOrderAndItemCode"; public string workingConditionsAPI = "/api/workConditionAnalysis/analyze"; public string workingTimeAPI = "/api/workTimeAnalysis/analyze"; public WorkConditionFacilityData workConditionFacilityData; public WorkItemCodeData workItemCodeData; public WorkConditionsData workConditionsData; public WorkTimeData workTimeData; private string startDate; private string endDate; public void Start() { HTTPConnect(); } public void HTTPConnect() { var path = httpServer + kpiAPI; var yesterday = DateTime.Now.AddDays(-1); var yesterdayTime = yesterday.ToString("yyyyMMdd"); var todayTime = DateTime.Now.ToString("yyyyMMdd"); var query = $"?&p_frdt={yesterdayTime}&p_todt={todayTime}&limit={100}"; var request = HTTPRequest.CreateGet(path + query, RequestFinishedCallback); request.AddHeader("access-token", apiKey); request.Send(); } private void RequestFinishedCallback(HTTPRequest req, HTTPResponse resp) { switch (req.State) { case HTTPRequestStates.Finished: if (resp.IsSuccess) { isSuccess = true; errorMessage = "Connected"; var payload = Encoding.UTF8.GetString(resp.Data); var response = JsonConvert.DeserializeObject(payload); onMachineKPIData?.Invoke(response); } else { isSuccess = false; errorMessage = "Not connected"; } break; default: isSuccess = false; errorMessage = "Not connected"; break; } } public void GetFacilityCodeData(string panelName, string startDate, string endDate) { StartCoroutine(GetFacilityCode(panelName, startDate, endDate)); } IEnumerator GetFacilityCode(string panelName, string startDate, string endDate) { this.startDate = startDate; this.endDate = endDate; var path = httpServer + facilityAPI; var query = $"?startDate={startDate}&endDate={endDate}"; string url = path + query; UnityWebRequest www = UnityWebRequest.Get(url); www.SetRequestHeader("access-token", testAPIKey); yield return www.SendWebRequest(); if (www.error == null) { var payload = Encoding.UTF8.GetString(www.downloadHandler.data); var response = JsonConvert.DeserializeObject(payload); workConditionFacilityData = response; if(panelName == "ÀÛ¾÷ Á¶°Ç ºÐ¼®") { onWorkConditionsfacilityData?.Invoke(workConditionFacilityData); } else if(panelName == "ÀÛ¾÷ ½Ã°£ ºÐ¼®") { onWorkTimefacilityData?.Invoke(workConditionFacilityData); } } else { Debug.Log(www.error); } } public void GetWorkItemCodeData(string panelName, string facilityCode) { StartCoroutine(GetWorkItemCode(panelName, facilityCode)); } IEnumerator GetWorkItemCode(string panelName, string facilityCode) { var path = httpServer + workItemCodeAPI; var query = $"?startDate={startDate}&endDate={endDate}&workcd={facilityCode}"; string url = path + query; UnityWebRequest www = UnityWebRequest.Get(url); www.SetRequestHeader("access-token", testAPIKey); yield return www.SendWebRequest(); if (www.error == null) { var payload = Encoding.UTF8.GetString(www.downloadHandler.data); var response = JsonConvert.DeserializeObject(payload); workItemCodeData = response; if (panelName == "ÀÛ¾÷ Á¶°Ç ºÐ¼®") { onWorkConditionsItemCodeData?.Invoke(workItemCodeData); } else if (panelName == "ÀÛ¾÷ ½Ã°£ ºÐ¼®") { onWorkTimeItemCodeData?.Invoke(workItemCodeData); } } else { Debug.Log(www.error); } } public void SearchWorkConditions(string startDate, string endDate, string MCHCD, string WO) { var WorkConditionRequest = new WorkConditionsRequestBody { startDate = startDate, endDate = endDate, MCHCD = MCHCD, WO = WO }; var path = httpServer + workingConditionsAPI; var json = JsonUtility.ToJson(WorkConditionRequest); StopAllCoroutines(); StartCoroutine(WorkConditionsPost(path, json)); } IEnumerator WorkConditionsPost(string url, string jsonData) { var request = new UnityWebRequest(url, "POST"); byte[] bodyRaw = new UTF8Encoding().GetBytes(jsonData); request.uploadHandler = new UploadHandlerRaw(bodyRaw); request.downloadHandler = new DownloadHandlerBuffer(); request.SetRequestHeader("access-token", apiKey); request.SetRequestHeader("Content-Type", "application/json"); yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.Success) { var payload = Encoding.UTF8.GetString(request.downloadHandler.data); var response = JsonConvert.DeserializeObject(payload); workConditionsData = response; onSendWorkConditionsData?.Invoke(workConditionsData); } } public void SearchWorkTime(string startDate, string endDate, string MCHCD, string WO) { var WorkConditionRequest = new WorkConditionsRequestBody { startDate = startDate, endDate = endDate, MCHCD = MCHCD, WO = WO }; var path = httpServer + workingTimeAPI; var json = JsonUtility.ToJson(WorkConditionRequest); StopAllCoroutines(); StartCoroutine(WorkTimePost(path, json)); } IEnumerator WorkTimePost(string url, string jsonData) { var request = new UnityWebRequest(url, "POST"); byte[] bodyRaw = new UTF8Encoding().GetBytes(jsonData); request.uploadHandler = new UploadHandlerRaw(bodyRaw); request.downloadHandler = new DownloadHandlerBuffer(); request.SetRequestHeader("access-token", apiKey); request.SetRequestHeader("Content-Type", "application/json"); yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.Success) { var payload = Encoding.UTF8.GetString(request.downloadHandler.data); var response = JsonConvert.DeserializeObject(payload); workTimeData = response; onSendWorkTimeData?.Invoke(workTimeData); } } } }