WcsWebApiClient.cs 5.29 KB
using Newtonsoft.Json;

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;

namespace HH_WCS_Standard
{
    public static class WcsWebApiClient
    {
        private static HttpClient client = new HttpClient();
        private static ApiTokenResultModel ApiTokenResultModel = new ApiTokenResultModel();

        private static BllResult FormPost(object obj, string requestUri)
        {
            try
            {
                string requrl = Properties.Resources.WmsApiClient + requestUri;
                HttpContent content = GetTextContent(obj);
                var ret = client.PostAsync(requrl, content).Result;
                if (ret.IsSuccessStatusCode)
                {
                    ret.EnsureSuccessStatusCode();
                    string temp = ret.Content.ReadAsStringAsync().Result;
                    LogExecute.logNet.WriteDebug($"请求WMS接口{requestUri}成功,返回值:{temp}");
                    var b = JsonConvert.DeserializeObject<ApiResultModel>(temp);
                    if (b.State)
                    {
                        return BllResult.Sucess(null, b.Msg);
                    }
                    else
                    {
                        return BllResult.Error(null, b.Msg);
                    }
                }
                else
                {
                    return BllResult.Error(null, $"请求WMS失败,请检查网络连接,详情:{ret.StatusCode}");
                }
            }
            catch (Exception ex)
            {
                return BllResult.Error(null, $"请求WMS失败,请检查网络连接或者重启本程序,详情:{ex.Message}");
            }
        }

        private static BllResult<T> FormPost<T>(object obj, string requestUri)
        {
            try
            {
                string requrl = Properties.Resources.WmsApiClient + requestUri;
                HttpContent content = GetTextContent(obj);
                var ret = client.PostAsync(requrl, content).Result;
                if (ret.IsSuccessStatusCode)
                {
                    ret.EnsureSuccessStatusCode();
                    string temp = ret.Content.ReadAsStringAsync().Result;
                    LogExecute.logNet.WriteDebug($"请求WMS接口{requestUri}成功,返回值:{temp}");
                    var b = JsonConvert.DeserializeObject<ApiResultModel<T>>(temp);
                    if (b.State)
                    {
                        return BllResult<T>.Sucess(b.Data, b.Msg);
                    }
                    else
                    {
                        
                        return BllResult<T>.Error(default(T), b.Msg);
                    }
                }
                else
                {
                    return BllResult<T>.Error(default(T), "请求WMS失败,请检查网络连接");
                }
            }
            catch (Exception ex)
            {
                return BllResult<T>.Error(default(T), "请求WMS失败,请检查网络连接或者重启本程序" + ex.Message);
            }
        }

        private static HttpContent GetTextContent(Object obj)
        {
            string json = JsonConvert.SerializeObject(obj);
            HttpContent content = new StringContent(json, Encoding.UTF8, "application/json");
            return content;
        }

        /// <summary>
        /// 完成任务接口
        /// </summary>
        /// <param name="reqTask"></param>
        /// <returns></returns>
        public static BllResult FinishTask(ReqTaskFinish reqTask)
        {
            return FormPost(reqTask, "/TaskFinish");
        }

        /// <summary>
        /// 满入
        /// </summary>
        /// <param name="reqOverrideHandle"></param>
        /// <returns></returns>
        public static BllResult<ResOverrideHandle> OverrideHandle(ReqOverrideHandle reqOverrideHandle)
        {
            return FormPost<ResOverrideHandle>(reqOverrideHandle, "/ReenterHandle");
        }

        /// <summary>
        /// 空出
        /// </summary>
        /// <param name="reqEmptyOut"></param>
        /// <returns></returns>
        public static BllResult EmptyOutHandle(ReqEmptyOut reqEmptyOut)
        {
            return FormPost(reqEmptyOut, "/EmptyOutHandle");
        }

        /// <summary>
        /// 取货错
        /// </summary>
        /// <param name="reqTakeError"></param>
        /// <returns></returns>
        public static BllResult TakeErrHandle(ReqTakeError reqTakeError)
        {
            return FormPost(reqTakeError, "/pickupError");
        }

        /// <summary>
        /// 仓位分配接口
        /// </summary>
        /// <param name="reqWareCellAllocation"></param>
        /// <returns></returns>
        public static BllResult<ResGetWarecellAllocation> GetWareCellHandle(ReqWarecellAllocation reqWareCellAllocation)
        {
            return FormPost<ResGetWarecellAllocation>(reqWareCellAllocation, "/WarecellAllocation");
        }
        /// <summary>
        /// 到达操作口任务回传
        /// </summary>
        /// <param name="reqTaskStatusFeedBack"></param>
        /// <returns></returns>
        public static BllResult TaskStatusFeedBack(ReqTaskStatusFeedBack reqTaskStatusFeedBack)
        {
            return FormPost(reqTaskStatusFeedBack, "/arrive");
        }
    }
}