WebService.cs 14.2 KB
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Web.Script.Serialization;
using RestSharp;

namespace BLL
{
    public class WebService
    {
        private Asa.File.Log log = DoubleLine.Common.log;
        public delegate void StatusEmptyEvent(string[] s);
        public event StatusEmptyEvent StatusEmpty;

        public WebService()
        {
        }

        /// <summary>
        /// 第一次获取料架信息
        /// </summary>
        /// <param name="smallTask"></param>
        /// <param name="bigTask"></param>
        /// <param name="packageTask"></param>
        //public void FirstGetShelfInfo(out int smallTask, out int bigTask, out int packageTask)
        //{
        //    smallTask = 0;
        //    bigTask = 0;
        //    packageTask = 0;

        //    try
        //    {
        //        string url = ConfigurationManager.AppSettings["WebService"] + "putShelfFinished?barcode=&rfid=&rfidLoc=&robotIndex=";
        //        log.OutInfo("URL:" + url);

        //        var client = new RestClient(url) { Timeout = -1 };
        //        var request = new RestRequest(Method.GET);
        //        IRestResponse response = client.Execute(request);
        //        string json = response.Content;
        //        log.OutInfo("Response:" + json);
        //        if (string.IsNullOrWhiteSpace(json)) return;

        //        JavaScriptSerializer serializer = new JavaScriptSerializer();
        //        Dictionary<string, object> obj = (Dictionary<string, object>)serializer.DeserializeObject(json);
        //        if (!obj.TryGetValue("code", out object value)) return;
        //        if (value.ToString() != "0") return;
        //        if (!obj.TryGetValue("data", out value)) return;
        //        Dictionary<string, object> dict = (Dictionary<string, object>)value;
        //        if (dict == null) return;

        //        if (dict.TryGetValue("bigTask", out value))
        //            int.TryParse(value.ToString(), out bigTask);
        //        if (dict.TryGetValue("smallTask", out value))
        //            int.TryParse(value.ToString(), out smallTask);
        //        if (dict.TryGetValue("packageTask", out value))
        //            int.TryParse(value.ToString(), out packageTask);
        //    }
        //    catch (Exception ex)
        //    {
        //        log.OutError(ex);
        //    }
        //}

        /// <summary>
        /// 连续获取料架信息
        /// </summary>
        /// <param name="rfid"></param>
        /// <param name="barcode"></param>
        /// <param name="rfidLoc"></param>
        /// <param name="robotIndex"></param>
        /// <param name="smallEmpty"></param>
        /// <param name="bigEmpty"></param>
        /// <param name="packageEmpty"></param>
        public void ShelfFinish(string rfid, string barcode, string rfidLoc, string robotIndex, out int smallEmpty, out int bigEmpty, out int packageEmpty)
        {
            smallEmpty = 0;
            bigEmpty = 0;
            packageEmpty = 0;
            string api = "putShelfFinished";

            try
            {
                string url = ConfigurationManager.AppSettings["WebService"] + api + "?barcode=" + barcode + "&rfid=" + rfid + "&rfidLoc=" + rfidLoc + "&robotIndex=" + robotIndex;
                log.OutInfo("URL:" + url);

                var client = new RestClient(url) { Timeout = -1 };
                var request = new RestRequest(Method.GET);
                IRestResponse response = client.Execute(request);
                string json = response.Content;
                log.OutInfo("Response:" + json);
                if (string.IsNullOrWhiteSpace(json)) return;

                JavaScriptSerializer serializer = new JavaScriptSerializer();
                Dictionary<string, object> obj = (Dictionary<string, object>)serializer.DeserializeObject(json);
                if (!obj.TryGetValue("code", out object value)) return;
                if (value.ToString() != "0")
                {
                    if (obj.TryGetValue("msg", out value))
                        log.OutTextBox(api + ": " + value.ToString());
                    return;
                }
                if (!obj.TryGetValue("data", out value)) return;
                Dictionary<string, object> dict = (Dictionary<string, object>)value;
                if (dict == null)
                {
                    log.OutTextBox(api + ": data=null");
                    return;
                }

                if (dict.TryGetValue("barcode", out value))
                {
                    if (value.ToString() == "")
                    {
                        if (dict.TryGetValue("bigTask", out value))
                            int.TryParse(value.ToString(), out bigEmpty);
                        if (dict.TryGetValue("smallTask", out value))
                            int.TryParse(value.ToString(), out smallEmpty);
                        if (dict.TryGetValue("packageTask", out value))
                            int.TryParse(value.ToString(), out packageEmpty);
                        StatusEmpty?.Invoke(new string[] { smallEmpty.ToString(), bigEmpty.ToString(), packageEmpty.ToString()});
                    }
                    else
                    {
                        if (dict.TryGetValue("bigEmpty", out value))
                            int.TryParse(value.ToString(), out bigEmpty);
                        if (dict.TryGetValue("smallEmpty", out value))
                            int.TryParse(value.ToString(), out smallEmpty);
                        if (dict.TryGetValue("packageEmpty", out value))
                            int.TryParse(value.ToString(), out packageEmpty);

                        //StatusEmpty?.Invoke(new string[] { smallEmpty.ToString(), bigEmpty.ToString(), packageEmpty.ToString() });

                    }
                }
            }
            catch (Exception ex)
            {
                log.OutError(ex);
            }
        }

        /// <summary>
        /// 获取定位机构上的料盘信息
        /// </summary>
        /// <param name="robot">ABB机器人索引号</param>
        /// <param name="currRFID">当前工位的RFID</param>
        /// <param name="pDisk">moveget的位置</param>
        /// <param name="pShelf">moveput的位置</param>
        /// <param name="virtualRFID"></param>
        /// <param name="realRFID"></param>
        /// <param name="barcode">条码内容</param>
        public void GetDiskInfo(int robot, string currRFID, out int pDisk, out int pShelf, out string virtualRFID, out string realRFID, out string barcode)
        {
            pDisk = 0;
            pShelf = 0;
            virtualRFID = "";
            realRFID = "";
            barcode = "";
            string api = "getLocation";

            try
            {
                string url = ConfigurationManager.AppSettings["WebService"] + api + "?robotIndex=" + robot + "&rfid=" + currRFID;
                log.OutInfo("URL:" + url);

                var client = new RestClient(url) { Timeout = -1 };
                var request = new RestRequest(Method.GET);
                IRestResponse response = client.Execute(request);
                string json = response.Content;
                log.OutInfo("Response:" + json);
                if (string.IsNullOrWhiteSpace(json)) return;

                JavaScriptSerializer serializer = new JavaScriptSerializer();
                Dictionary<string, object> obj = (Dictionary<string, object>)serializer.DeserializeObject(json);
                if (!obj.TryGetValue("code", out object value)) return;
                if (value.ToString() != "0")
                {
                    if (obj.TryGetValue("msg", out value))
                        log.OutTextBox(api + ": " + value.ToString());
                    return;
                }
                if (!obj.TryGetValue("data", out value)) return;
                Dictionary<string, object> dict = (Dictionary<string, object>)value;
                if (dict == null)
                {
                    log.OutTextBox(api + ": data=null");
                    return;
                }

                if (dict.TryGetValue("w", out value))
                {
                    switch (value)
                    {
                        case "7": pDisk = 1; break;
                        case "11": pDisk = 2; break;
                        case "13": pDisk = 3; break;
                        case "15": pDisk = 4; break;
                    }
                }
                if (dict.TryGetValue("rfidLoc", out value))
                    int.TryParse(value.ToString(), out pShelf);
                if (dict.TryGetValue("rfid", out value))
                    virtualRFID = value.ToString();
                if (dict.TryGetValue("realRfid", out value))
                    realRFID = value.ToString();
                if (dict.TryGetValue("barcode", out value))
                    barcode = value.ToString();
            }
            catch (Exception ex)
            {
                log.OutError(ex);
            }
        }

        /// <summary>
        /// 包装料机器人获取取出和放置位置
        /// </summary>
        /// <param name="bigRfid"></param>
        /// <param name="packageRfid"></param>
        /// <param name="barcode"></param>
        /// <param name="emptyInBig"></param>
        /// <param name="reelInPackage"></param>
        /// <param name="packageTask"></param>
        /// <param name="packageLoc"></param>
        /// <param name="bigLoc"></param>
        /// <param name="virtualBigRfid"></param>
        /// <param name="realBigRfid"></param>
        public void GetPackInfo(string bigRfid, string packageRfid, out string barcode, out int emptyInBig, out int reelInPackage, out int packageTask, out int packageLoc, out int bigLoc, out string virtualBigRfid, out string realBigRfid)
        {
            barcode = "";
            emptyInBig = 0;
            reelInPackage = 0;
            packageTask = 0;
            packageLoc = 0;
            bigLoc = 0;
            virtualBigRfid = "";
            realBigRfid = "";
            string api = "getPackageLocation";

            try
            {
                string url = ConfigurationManager.AppSettings["WebService"] + api + "?bigRfid=" + bigRfid + (packageRfid == "" ? "" : "&packageRfid=" + packageRfid);
                log.OutInfo("URL:" + url);

                var client = new RestClient(url) { Timeout = -1 };
                var request = new RestRequest(Method.GET);
                IRestResponse response = client.Execute(request);
                string json = response.Content;
                log.OutInfo("Response:" + json);
                if (string.IsNullOrWhiteSpace(json)) return;

                JavaScriptSerializer serializer = new JavaScriptSerializer();
                Dictionary<string, object> obj = (Dictionary<string, object>)serializer.DeserializeObject(json);
                if (!obj.TryGetValue("code", out object value)) return;
                if (value.ToString() != "0")
                {
                    if (obj.TryGetValue("msg", out value))
                        log.OutTextBox(api + ": " + value.ToString());
                    return;
                }
                if (!obj.TryGetValue("data", out value)) return;
                Dictionary<string, object> dict = (Dictionary<string, object>)value;
                if (dict == null)
                {
                    log.OutTextBox(api + ": data=null");
                    return;
                }

                if (dict.TryGetValue("barcode", out value))
                    barcode = value.ToString();
                if (dict.TryGetValue("emptyInBig", out value))
                    int.TryParse(value.ToString(), out emptyInBig);
                if (dict.TryGetValue("reelInPackage", out value))
                    int.TryParse(value.ToString(), out reelInPackage);
                if (dict.TryGetValue("packageTask", out value))
                    int.TryParse(value.ToString(), out packageTask);
                if (dict.TryGetValue("packageLoc", out value))
                    int.TryParse(value.ToString(), out packageLoc);
                if (dict.TryGetValue("bigLoc", out value))
                    int.TryParse(value.ToString(), out bigLoc);
                if (dict.TryGetValue("bigRfid", out value))
                    virtualBigRfid = value.ToString();
                if (dict.TryGetValue("realBigRfid", out value))
                    realBigRfid = value.ToString();
            }
            catch (Exception ex)
            {
                log.OutError(ex);
            }
        }

        /// <summary>
        /// 包料料机器人放置包装料完成
        /// </summary>
        /// <param name="barcode"></param>
        /// <param name="packageRfid"></param>
        /// <param name="packageLoc"></param>
        /// <param name="bigRfid"></param>
        /// <param name="bigLoc"></param>
        public void PackFinish(string barcode, string packageRfid, int packageLoc, string bigRfid, int bigLoc)
        {
            string api = "putPackageFinished";

            try
            {
                string url = ConfigurationManager.AppSettings["WebService"] + api + "?barcode=" + barcode + "&packageRfid=" + packageRfid + "&packageLoc=" + packageLoc + "&bigRfid=" + bigRfid + "&bigLoc=" + bigLoc;
                log.OutInfo("URL:" + url);

                var client = new RestClient(url) { Timeout = -1 };
                var request = new RestRequest(Method.GET);
                IRestResponse response = client.Execute(request);
                string json = response.Content;
                log.OutInfo("Response:" + json);
                if (string.IsNullOrWhiteSpace(json)) return;

                JavaScriptSerializer serializer = new JavaScriptSerializer();
                Dictionary<string, object> obj = (Dictionary<string, object>)serializer.DeserializeObject(json);
                if (!obj.TryGetValue("code", out object value)) return;
                if (value.ToString() != "0")
                {
                    if (obj.TryGetValue("msg", out value))
                        log.OutTextBox(api + ": " + value.ToString());
                }
            }
            catch (Exception ex)
            {
                log.OutError(ex);
            }
        }


    }
}