SServerManager.cs 9.3 KB
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace OnlineStore.DeviceLibrary
{
    public class SServerManager
    {

        //是否测值:
        //http://10.85.17.233/ESMTCommonInterface/CommonService.asmx?op=VMICheckRLC
        //结果上传:
        //http://10.85.17.233/ReturnOne/WebServiceF.asmx?op=Return_Material


        private static string Addr_VMICheckRLC = "/service/store/emptyPosForPutin"; 
        private static string Addr_Return_Material = "/rest/api/qisda/device/getSize"; 
    
        public static string Get_VMICheckRLC(string deviceName, string codeStr, out bool need)
        {
            need = false;
            string msg = "";
            try
            {
                if (String.IsNullOrEmpty(codeStr))
                {
                    return msg = deviceName + "未扫到条码";
                }
                Dictionary<string, string> paramMap = new Dictionary<string, string>();

                paramMap.Add("barcode", codeStr);//  barcode = 扫到的条码

                string server = GetAddr(Addr_VMICheckRLC, paramMap);
                DateTime startTime = DateTime.Now;
                string resultStr = HttpHelper.Post(server, "");

                LogUtil.info("Get_VMICheckRLC   " + FormUtil.GetSpanStr(DateTime.Now - startTime) + " 【" + server + "】【" + resultStr + "】");
                //返回: { "code": 0, "msg":"ok", data: 7} 
                ServerData serverResult = JsonHelper.DeserializeJsonToObject<ServerData>(resultStr);

            }
            catch (Exception ex)
            {
                LogUtil.error(deviceName + " ", ex);
            }
            return "";
        }


        public static string Return_Material(string deviceName, string barcode, int count)
        {
            string msg = "";
            try
            {
                if (String.IsNullOrEmpty(barcode))
                {
                    return msg;
                }

                Dictionary<string, string> paramMap = new Dictionary<string, string>();
                paramMap.Add("barcode", barcode);
                paramMap.Add("count", count.ToString());
                string server = GetAddr(Addr_Return_Material, paramMap);
                DateTime startTime = DateTime.Now;
                string resultStr = HttpHelper.Post(server, "");
                LogUtil.info("Return_Material   " + FormUtil.GetSpanStr(DateTime.Now - startTime) + " 【" + server + "】【" + resultStr + "】");
                // 返回: { "code": 0, "msg":"ok", "data":""}
                ServerData serverResult = JsonHelper.DeserializeJsonToObject<ServerData>(resultStr);

                if (!msg.Equals(""))
                {
                    LogUtil.error(msg);
                }
            }
            catch (Exception ex)
            {
                LogUtil.error(deviceName + " ", ex);
            }
            return msg;
        }

        private static string GetAddr(string addr, Dictionary<string, string> paramsMap)
        {
            string server = ConfigAppSettings.GetValue(Setting_Init.ServerAddr);
            if (server.EndsWith("/"))
            {
                server = server.Substring(0, server.Length - 1);
            }
            string path = server + addr.Trim() + "?";
            foreach (string paramName in paramsMap.Keys)
            {
                string par = System.Web.HttpUtility.UrlEncode(paramsMap[paramName], System.Text.Encoding.UTF8);
                path += paramName + "=" + par + "&";
            }
            path = path.Substring(0, path.Length - 1);
            return path;
        }

        private static string spiltStr = "##";
        public static string ProcessCodeList(List<string> codeList)
        {
            string codeStr = "";
            List<string> list = new List<string>();
            foreach (string str in codeList)
            {
                if (list.Contains(str.Trim()) || String.IsNullOrEmpty(str.Trim()))
                {
                    continue;
                }
                codeStr = codeStr + str.Trim() + spiltStr;
            }
            return codeStr;
        }

        ////        分盘料/紧急料放上料串或料架时调用 /rest/api/qisda/device/afterPutCut
        //private static string Addr_afterPutCut = "/rest/api/qisda/device/afterPutCut";
        //public static string afterPutCut(string deviceName, string rfid, string barcode, string cid, int rfidLoc, out TaskData afterData)
        //{
        //    afterData = null;
        //    string msg = "";
        //    try
        //    {
        //        //参数:
        //        //cid:  料仓cid,流水线可传入空
        //        //barcode : 条码
        //        //rfid :  RFID
        //        //rfidLoc: 料架位置,流水线可传-1

        //        Dictionary<string, string> paramMap = new Dictionary<string, string>();
        //        paramMap.Add("barcode", barcode);      // 参数: barcode=料盘的条码
        //        paramMap.Add("rfid", rfid);                     // rfid = 料架的RFID信息
        //        paramMap.Add("rfidLoc", rfidLoc.ToString());     // rfidLoc=料架的架位信息 
        //        paramMap.Add("cid", cid);     // 料仓cid,流水线可传入空
        //        string server = GetAddr(Addr_afterPutCut, paramMap);
        //        DateTime startTime = DateTime.Now;
        //        string resultStr = HttpHelper.Post(server, "");
        //        if (barcode != "")
        //        {
        //            LogUtil.info(deviceName + "afterPutCut    " + FormUtil.GetSpanStr(DateTime.Now - startTime) + "  【" + server + "】【" + resultStr + "】");
        //        }
        //        else
        //        {
        //            LogUtil.debug(deviceName + "afterPutCut    " + FormUtil.GetSpanStr(DateTime.Now - startTime) + "  【" + server + "】【" + resultStr + "】");
        //        }
        //        //>   返回: 
        //        //>>` {"code": 0, "msg":"ok", "data":{"cutPackageTask":"0","urgentPackageTask":"20","cutTask":"21","urgentTask":"22"}} `
        //        //>>
        //        //>> - code: 0为正常,其他为异常, 
        //        //>> - msg:消息, 
        //        //>> - data:为包装料仓的空闲仓位数(key为与客户端一致的料仓标识, value为空闲仓位)
        //        //>> - cutPackageTask: 表示当前包装仓的分盘任务数
        //        //>> - urgentPackageTask: 表示当前包装仓的紧急料任务数
        //        //>> - cutTask: 表示流水线分盘任务数
        //        //>> - urgentTask: 表示流水线紧急料任务数
        //        AfterPutData serverResult = JsonHelper.DeserializeJsonToObject<AfterPutData>(resultStr);

        //        if (serverResult == null)
        //        {
        //            return msg = deviceName + "afterPutCut【 " + barcode + "】【" + rfid + "】【" + rfidLoc + "】没有收到服务器反馈";
        //        }
        //        else if (serverResult.code.Equals(0).Equals(false))
        //        {
        //            return msg = deviceName + " afterPutCut【 " + barcode + "】【" + rfid + "】【" + rfidLoc + "】  :" + serverResult.msg;
        //        }
        //        afterData = serverResult.data;
        //        return "";
        //    }
        //    catch (Exception ex)
        //    {
        //        LogUtil.error(deviceName + " " + ex.ToString());
        //    }
        //    return msg;
        //}

    }

    public class ServerData
    {
        //{"code":0,"msg":"ok","data":"7"} 
        public int code { get; set; }

        public string msg { get; set; }

        public string data { get; set; }
    }
    //public class AfterPutData
    //{
    //    //>>` {"code": 0, "msg":"ok", "data":{"cutPackageTask":"0","urgentPackageTask":"20","cutTask":"21","urgentTask":"22"}} `
    //    //>>
    //    //>> - code: 0为正常,其他为异常, 
    //    //>> - msg:消息, 
    //    //>> - data:为包装料仓的空闲仓位数(key为与客户端一致的料仓标识, value为空闲仓位)
    //    //>> - cutPackageTask: 表示当前包装仓的分盘任务数
    //    //>> - urgentPackageTask: 表示当前包装仓的紧急料任务数
    //    //>> - cutTask: 表示流水线分盘任务数
    //    //>> - urgentTask: 表示流水线紧急料任务数
    //    public int code { get; set; }

    //    public string msg { get; set; }

    //    public TaskData data { get; set; }
    //}
    //public class TaskData
    //{
    //    /// <summary>
    //    /// urgentPackageTask: 表示当前包装仓的紧急料任务数
    //    /// </summary>
    //    public int urgentPackageTask { get; set; }
    //    /// <summary>
    //    /// cutPackageTask: 表示当前包装仓的分盘任务数
    //    /// </summary>
    //    public int cutPackageTask { get; set; }
    //    /// <summary>
    //    /// cutTask: 表示流水线分盘任务数
    //    /// </summary>
    //    public int cutTask { get; set; }
    //    /// <summary>
    //    /// urgentTask: 表示流水线紧急料任务数
    //    /// </summary>
    //    public int urgentTask { get; set; }

    //    public string ToStr()
    //    {
    //        return "[分盘料=" + cutTask + "][紧急料=" + urgentTask+"]";
    //    }

    //}
}