1
czw
22 小时以前 fcafa52c43d54fb57822f045595e1bbb5de55b29
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/VS×Ô¶¨ÒåÀà/AutoThread.cs
@@ -30,6 +30,9 @@
using System.Net.NetworkInformation;
using System.Windows.Documents;
using System.Text.RegularExpressions;
using GZ.Device.PLC;
using System.Runtime.CompilerServices;
using ServiceStack.Text;
namespace GZ.Projects.AuxAllWCS
{
@@ -58,6 +61,18 @@
    }
    public partial class AutoThread
    {
        /// <summary>
        ///  1 åªå¼€çº¿ç¨‹  Device Client
        ///  2 åªå¼€è®¾å¤‡  Device Server
        ///  3 å…¨å¼€
        /// </summary>
        public static readonly int _type = 1;
        /// <summary>
        /// 1 modbus
        /// 2 -24 vxr  25 S7
        /// 3 MC
        /// </summary>
        public static readonly string tys = "1 2 24 25 3";
        private static AutoThread _instance;
@@ -83,6 +98,12 @@
        public static object InvokeMethod(object instance, string methodName, params object[] args)
        {
            var cacheKey = $"{instance.GetType().FullName}_{methodName}";
            if (AutoThread._type % 2 == 0)
            {
                Console.WriteLine($"{AutoThread._type}> å½“前是 Device Server æ¨¡å¼ã€‚");
                return null;
            }
            try
            {
@@ -113,7 +134,7 @@
            }
            catch (Exception ex)
            {
                LogHelper.Error($"InvokeMethod > cacheKey-{ex.Message}", ex);
                LogHelper.Error($"InvokeMethod > cacheKey:{cacheKey}-{ex.Message}", ex);
                throw ex;
            }
        }
@@ -149,6 +170,7 @@
        //        return _repository;
        //    }
        //}
        /// <summary>
        /// é…ç½®åˆå§‹åŒ–。
        /// </summary>
@@ -173,6 +195,7 @@
                Console.Clear();
            }
        }
        public void ThreaTotal(Tag tag, Device device)
@@ -226,6 +249,7 @@
            tasks.Add(GetTask(taskssss1, tag, 3000));
            tasks.Add(GetTask(taskssss2, tag, 3000));
            tasks.Add(GetTask(taskssss3, tag, 3000));
            tasks.Add(GetTask(task20132027, tag, 3000));
            //tasks.Add(GetTask(sa1022, tag, 3000));
            //tasks.Add(GetTask(sa1025, tag, 3000));
            //tasks.Add(GetTask(sa1030, tag, 3000));
@@ -240,10 +264,46 @@
            tasks.Add(GetTask(ThreadMXC5, tag, 3000));
            tasks.Add(GetTask(ThreadMXC6, tag, 3000));
            tasks.Add(GetTask(ThreadS7helper, tag, 3000));
            LogHelper.Info("ThreaTotal çº¿ç¨‹æ€»çº¿runing");
            Task.WaitAll(tasks.ToArray());
            LogHelper.Info("ThreaTotal çº¿ç¨‹æ€»çº¿over");
        }
        private void ThreadS7helper(Tag tag)
        {
            //var plc = new Plc(CpuType.S71500,);
            //foreach (var item in collection)
            //{
            //    S7.Net.Plc plc = new Plc(CpuType.S71500, item.address, 0, 1);
            //    Link(plc);
            //    PLCS.Add(item.deviceName, plc);
            //}
        }
        void task20132027(Tag tag)
        {
            if (tag.ssx输送线.s2027.wTaskNo > 0 && tag.ssx输送线.s2020.w托盘码 != tag.ssx输送线.s2027.R托盘码)
            {
                tag.ssx输送线.s2027.wEbit = 0;
                tag.ssx输送线.s2027.w托盘码 = "";
                tag.ssx输送线.s2027.wTaskNo = 0;
            }
            if (tag.ssx输送线.s2020.wTaskNo > 0 && tag.ssx输送线.s2020.w托盘码 != tag.ssx输送线.s2020.R托盘码)
            {
                tag.ssx输送线.s2020.wEbit = 0;
                tag.ssx输送线.s2020.w托盘码 = "";
                tag.ssx输送线.s2020.wTaskNo = 0;
            }
            if (tag.ssx输送线.s2013.wTaskNo > 0 && tag.ssx输送线.s2013.w托盘码 != tag.ssx输送线.s2013.R托盘码)
            {
                tag.ssx输送线.s2013.wEbit = 0;
                tag.ssx输送线.s2013.w托盘码 = "";
                tag.ssx输送线.s2013.wTaskNo = 0;
            }
        }
        void taskssss1(Tag tag)
        {
@@ -264,7 +324,7 @@
            sa3010(tag);
        }
        public static ConcurrentDictionary<string, bool> Iponlines = new ConcurrentDictionary<string, bool>();
        //public static ConcurrentDictionary<string, bool> Iponlines = new ConcurrentDictionary<string, bool>();
        public bool IsMachineOnline(string hostNameOrIp, int timeout = 1000)
        {
            //device.p发那科1下线.Config.IP
@@ -2450,27 +2510,45 @@
        private void sa2008(Tag tag)
        {
            string tno = "sa2008";// TaskProcess.GenerateTaskNo("日志流水号", "LOG");
            var rdisTcode = RedisHelper.Get<string>($"Arrive{2008}BarcodeLast", out string msg);
            LogHelper.Info($"2008 æ‰˜ç›˜å·{tag.SA2030.R托盘码}  redis Arrive{2008}BarcodeLast托盘号:{rdisTcode} åŒ¹é…æ ¡éªŒã€‚");
            if (!string.IsNullOrEmpty(tag.ssx输送线.s2008.R托盘码) && rdisTcode != tag.ssx输送线.s2008.R托盘码)
            var ntr = tag.ssx输送线.s2008.R托盘码;
            LogHelper.Info($"[{tno}]2008 æ‰˜ç›˜å·{ntr}  redis Arrive{2008}BarcodeLast托盘号:{rdisTcode},任务申请:{tag.ssx输送线.s2008.RtaskState} åŒ¹é…æ ¡éªŒã€‚");
            if (ntr == "123")
                ntr = "";
            if (rdisTcode != ntr && (tag.ssx输送线.s2008.wTaskNo > 0 || !string.IsNullOrEmpty(tag.ssx输送线.s2008.w托盘码)))
            {
                var ntr = tag.ssx输送线.s2008.R托盘码;
                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
                {
                    cntrCode = ntr,
                    type = 1
                }));
                var strr = JsonConvert.DeserializeObject<MES2234>(str);
                if (strr.success && strr.data != null)
                {
                    var end = (strr.data.lineNum == 1 ? 2027
                                : strr.data.lineNum == 2 ? 2020 : 2013);
                    tag.ssx输送线.s2008.wTaskNo = (uint)(20080000 + end);
                    tag.ssx输送线.s2008.wEbit = 2027;
                    tag.ssx输送线.s2008.R托盘码 = ntr;
                LogHelper.Info($"[{tno}]2008 æ‰˜ç›˜å·{ntr}  åˆ‡æ¢æ‰˜ç›˜å·ï¼ˆä¹Ÿå¯èƒ½æ¸…空了),清除任务数据。wTaskNo,wEbit=0,w托盘码=空");
                tag.ssx输送线.s2008.wEbit = 0;
                LogHelper.Info($"[{tno}] wEbit 0");
                tag.ssx输送线.s2008.w托盘码 = "";
                LogHelper.Info($"[{tno}] w托盘码 ''");
                tag.ssx输送线.s2008.wTaskNo = 0;
                LogHelper.Info($"[{tno}] wTaskNo 0");
                if (string.IsNullOrEmpty(ntr))
                    RedisHelper.Add<string>($"Arrive{2008}BarcodeLast", ntr, out msg);
                }
            }
            if (tag.ssx输送线.s2008.RtaskState == 1)
                if (!string.IsNullOrEmpty(ntr) && rdisTcode != ntr)
                {
                    LogHelper.Info($"[{tno}]2008 æ‰˜ç›˜å·{ntr} ç”³è¯·WMS åˆ†é“");
                    var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
                    {
                        cntrCode = ntr,
                        type = 1
                    }));
                    var strr = JsonConvert.DeserializeObject<MES2234>(str);
                    if (strr.success && strr.data != null)
                    {
                        tag.ssx输送线.s2008.w托盘码 = ntr;
                        var end = (ushort)(strr.data.lineNum == 1 ? 2027
                                    : strr.data.lineNum == 2 ? 2020 : 2013);
                        tag.ssx输送线.s2008.wTaskNo = (uint)(20080000 + end);
                        tag.ssx输送线.s2008.wEbit = end;
                        LogHelper.Info($"[{tno}]2008 æ‰˜ç›˜å·{ntr}  å†™ä»»åŠ¡ï¼ŒwTaskNo={(uint)(20080000 + end)}  wEbit={end} w托盘码={ntr} Arrive{2008}BarcodeLast={ntr} ");
                        RedisHelper.Add<string>($"Arrive{2008}BarcodeLast", ntr, out msg);
                    }
                }
        }
        private void sa2030(Tag tag)
@@ -2643,6 +2721,8 @@
                i = 0;
            }
            //LogHelper.Info($"_methodCache>>>>" + _methodCache.Count + ">>>>" + JsonConvert.SerializeObject(_methodCache.Keys));
            //Console.WriteLine($"SA2030 ä»»åŠ¡çŠ¶æ€ï¼š   =====>");
            //Console.WriteLine($"SA2030 ä»»åŠ¡çŠ¶æ€ï¼š{tag.SA2030.RtaskState}- ç©ºé—²{tag.SA2030.R5空闲} - barcode:{tag.SA2030.R托盘码}");
@@ -2666,7 +2746,7 @@
                    LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} {(sx == null ? "非" : "是")}总装机器人任务");
                    if (sx == null)
                    {
                    gotoOOOOOOOOO:
                        gotoOOOOOOOOO:
                        if (string.IsNullOrEmpty(task.S_CNTRS) && !string.IsNullOrEmpty(task.S_INDEX))
                        {
                            // å«æ–™ä»»åŠ¡ã€‚ æŒ‡å®šç‰©æ–™ä¸æŒ‡å®šæ‰˜ç›˜ï¼Œéœ€è¦å‡ºåº“
@@ -2675,28 +2755,32 @@
                                switch (task.S_START_LOC)
                                {
                                    case "2030":
                                        if (!string.IsNullOrEmpty(tag.SA2030.R托盘码))
                                        //if (!string.IsNullOrEmpty(tag.SA2030.R托盘码))
                                        //{
                                        //    LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} 2030 å‡ºå£æ‰˜ç›˜å·{tag.SA2030.R托盘码} åŒ¹é…æ ¡éªŒã€‚");
                                        //    var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
                                        //    {
                                        //        cntrCode = tag.SA2030.R托盘码,
                                        //        type = 1
                                        //    }));
                                        //    var strr = JsonConvert.DeserializeObject<MES2234>(str);
                                        //    if (strr.success && strr.data.materialCode == task.S_INDEX)
                                        //    {
                                        //        task.S_CNTRS = tag.SA2030.R托盘码;
                                        //        taskservice.Update(task);
                                        //        goto gotoOOOOOOOOO;
                                        //    }
                                        //    else
                                        //    {
                                        //        LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç‰©æ–™{task.S_INDEX} ä¸Ž 2030 å‡ºå£çš„æ‰˜ç›˜ç‰©æ–™{strr.data.materialCode}不符合");
                                        //    }
                                        //}
                                        //else
                                        if (string.IsNullOrEmpty(tag.SA2030.R托盘码))
                                        {
                                            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} 2030 å‡ºå£æ‰˜ç›˜å·{tag.SA2030.R托盘码} åŒ¹é…æ ¡éªŒã€‚");
                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
                                            {
                                                cntrCode = tag.SA2030.R托盘码,
                                                type = 1
                                            }));
                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
                                            {
                                                task.S_CNTRS = tag.SA2030.R托盘码;
                                                taskservice.Update(task);
                                                goto gotoOOOOOOOOO;
                                            }
                                            else
                                            {
                                                LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç‰©æ–™{task.S_INDEX} ä¸Ž 2030 å‡ºå£çš„æ‰˜ç›˜ç‰©æ–™{strr.data.materialCode}不符合");
                                            }
                                        }
                                        else
                                        {
                                            //创建出库直接赋值给mes任务。防止出库慢,多次出库。
                                            //2027  2220   2013.. è¯†åˆ«ä¸€ä¸‹ï¼Œå¼€å§‹åº“
                                            //1 çœ‹27 20 13 æ˜¯å¦æœ‰ä»»åŠ¡ã€‚ æœ‰åˆ™ä¸å‡ºäº†ã€‚ ç­‰å‡ºå£åˆ¤æ–­åŒ¹é…ã€‚
                                            //2  éƒ½æ²¡æœ‰ä»»åŠ¡ï¼Œé€ä¸ªåŒ¹é…æ˜¯å¦ç¬¦åˆï¼Œåˆ™å‡ºåº“ã€‚
@@ -2712,7 +2796,7 @@
                                            }
                                            {
                                                var t20132027 = tag.ssx输送线.s2020;
                                                LogHelper.Info($"识别2027任务 æ‰˜ç›˜å·ï¼š{t20132027.R托盘码} RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
                                                LogHelper.Info($"识别2020任务 æ‰˜ç›˜å·ï¼š{t20132027.R托盘码} RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
                                                if ((t20132027.RTaskNo > 0 && t20132027.REbit == 2030) || (t20132027.wTaskNo > 0 && t20132027.wEbit == 2030))
                                                {
                                                    LogHelper.Info($"2020任务 ä»»åŠ¡ç»ˆç‚¹æ˜¯2030 ï¼Œç»ˆæ­¢");
@@ -2721,13 +2805,14 @@
                                            }
                                            {
                                                var t20132027 = tag.ssx输送线.s2013;
                                                LogHelper.Info($"识别2027任务 æ‰˜ç›˜å·ï¼š{t20132027.R托盘码} RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
                                                LogHelper.Info($"识别2013任务 æ‰˜ç›˜å·ï¼š{t20132027.R托盘码} RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
                                                if ((t20132027.RTaskNo > 0 && t20132027.REbit == 2030) || (t20132027.wTaskNo > 0 && t20132027.wEbit == 2030))
                                                {
                                                    LogHelper.Info($"2013任务 ä»»åŠ¡ç»ˆç‚¹æ˜¯2030 ï¼Œç»ˆæ­¢");
                                                    continue;
                                                }
                                            }
                                            if (!string.IsNullOrEmpty(tag.ssx输送线.s2027.R托盘码))
                                            {
                                                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
@@ -2739,10 +2824,12 @@
                                                if (strr.success && strr.data.materialCode == task.S_INDEX)
                                                {
                                                    LogHelper.Info($"2027 è¯»åˆ°æ‰˜ç›˜{tag.ssx输送线.s2027.R托盘码} åŒ¹é…æˆåŠŸï¼Œå†™ä»»åŠ¡å·ï¼š20272030,终点:2030 å’Œæ‰˜ç›˜ç åŒè¯»");
                                                    tag.ssx输送线.s2027.w托盘码 = tag.ssx输送线.s2027.R托盘码;
                                                    tag.ssx输送线.s2027.wTaskNo = 20272030;
                                                    tag.ssx输送线.s2027.wEbit = 2030;
                                                    tag.ssx输送线.s2027.w托盘码 = tag.ssx输送线.s2027.R托盘码;
                                                    LogHelper.Info($"2027 > 2030  SSX任务下发完成。");
                                                    task.S_CNTRS = tag.ssx输送线.s2027.R托盘码;
                                                    taskservice.Update(task);
                                                    continue;
                                                }
                                            }
@@ -2757,13 +2844,16 @@
                                                if (strr.success && strr.data.materialCode == task.S_INDEX)
                                                {
                                                    LogHelper.Info($"2020 è¯»åˆ°æ‰˜ç›˜{tag.ssx输送线.s2020.R托盘码} åŒ¹é…æˆåŠŸï¼Œå†™ä»»åŠ¡å·ï¼š20202030,终点:2030 å’Œæ‰˜ç›˜ç åŒè¯»");
                                                    tag.ssx输送线.s2020.w托盘码 = tag.ssx输送线.s2020.R托盘码;
                                                    tag.ssx输送线.s2020.wTaskNo = 20202030;
                                                    tag.ssx输送线.s2020.wEbit = 2030;
                                                    tag.ssx输送线.s2020.w托盘码 = tag.ssx输送线.s2020.R托盘码;
                                                    LogHelper.Info($"2020 > 2030  SSX任务下发完成。");
                                                    task.S_CNTRS = tag.ssx输送线.s2020.R托盘码;
                                                    taskservice.Update(task);
                                                    continue;
                                                }
                                            }
                                            if (!string.IsNullOrEmpty(tag.ssx输送线.s2013.R托盘码))
                                            {
                                                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
@@ -2775,10 +2865,12 @@
                                                if (strr.success && strr.data.materialCode == task.S_INDEX)
                                                {
                                                    LogHelper.Info($"2013 è¯»åˆ°æ‰˜ç›˜{tag.ssx输送线.s2013.R托盘码} åŒ¹é…æˆåŠŸï¼Œå†™ä»»åŠ¡å·ï¼š20132030,终点:2030 å’Œæ‰˜ç›˜ç åŒè¯»");
                                                    tag.ssx输送线.s2013.w托盘码 = tag.ssx输送线.s2013.R托盘码;
                                                    tag.ssx输送线.s2013.wTaskNo = 20132030;
                                                    tag.ssx输送线.s2013.wEbit = 2030;
                                                    tag.ssx输送线.s2013.w托盘码 = tag.ssx输送线.s2013.R托盘码;
                                                    LogHelper.Info($"2013 > 2030  SSX任务下发完成。");
                                                    task.S_CNTRS = tag.ssx输送线.s2013.R托盘码;
                                                    taskservice.Update(task);
                                                    continue;
                                                }
                                            }
@@ -2929,6 +3021,15 @@
                                                LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} èµ·ç‚¹ 1019 RtaskState>{tag.SA1019.RtaskState} æœªç”³è¯·RGV任务,不推送");
                                                continue;
                                            }
                                            if (!string.IsNullOrEmpty(tag.SA1019.R托盘码) && tag.SA1019.R托盘码 == task.S_CNTRS)
                                            {
                                            }
                                            else
                                            {
                                                LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} èµ·ç‚¹ 1019 æ‰˜ç›˜å·ä¸Žä»»åŠ¡ä¸åŒ¹é…ï¼Œä¸æŽ¨é€");
                                                continue;
                                            }
                                        }
                                        break;
                                    case "2030":
@@ -2937,6 +3038,15 @@
                                            if (tag.SA2030.RtaskState != 4)
                                            {
                                                LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} èµ·ç‚¹ 2030 RtaskState>{tag.SA2030.RtaskState} æœªç”³è¯·RGV任务,不推送");
                                                continue;
                                            }
                                            if (!string.IsNullOrEmpty(tag.SA2030.R托盘码) && tag.SA2030.R托盘码 == task.S_CNTRS)
                                            {
                                            }
                                            else
                                            {
                                                LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} èµ·ç‚¹ 2030 æ‰˜ç›˜å·ä¸Žä»»åŠ¡ä¸åŒ¹é…ï¼Œä¸æŽ¨é€");
                                                continue;
                                            }
                                        }
@@ -2949,6 +3059,15 @@
                                                LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} èµ·ç‚¹ 3005 RtaskState>{tag.ssx输送线.s3005.RtaskState} æœªç”³è¯·RGV任务,不推送");
                                                continue;
                                            }
                                            if (!string.IsNullOrEmpty(tag.ssx输送线.s3005.R托盘码) && tag.ssx输送线.s3005.R托盘码 == task.S_CNTRS)
                                            {
                                            }
                                            else
                                            {
                                                LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} èµ·ç‚¹ 3005 æ‰˜ç›˜å·ä¸Žä»»åŠ¡ä¸åŒ¹é…ï¼Œä¸æŽ¨é€");
                                                continue;
                                            }
                                        }
                                        break;
                                    case "3010":
@@ -2957,6 +3076,15 @@
                                            if (tag.ssx输送线.s3010.RtaskState != 4)
                                            {
                                                LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} èµ·ç‚¹ 3010 RtaskState>{tag.ssx输送线.s3010.RtaskState} æœªç”³è¯·RGV任务,不推送");
                                                continue;
                                            }
                                            if (!string.IsNullOrEmpty(tag.ssx输送线.s3010.R托盘码) && tag.ssx输送线.s3010.R托盘码 == task.S_CNTRS)
                                            {
                                            }
                                            else
                                            {
                                                LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} èµ·ç‚¹ 3010 æ‰˜ç›˜å·ä¸Žä»»åŠ¡ä¸åŒ¹é…ï¼Œä¸æŽ¨é€");
                                                continue;
                                            }
                                        }
@@ -3519,7 +3647,7 @@
                    Console.WriteLine($"ip= {ip.ToString()}");
                    new HttpServer(ip.ToString()).HttpServerRun();
                    new TcpServer(ip.ToString());
                    var server = new EnhancedWebSocketServer($"http://{ip.ToString()}:8809/").StartAsync();
                    //var server = new EnhancedWebSocketServer($"http://{ip.ToString()}:8809/").StartAsync();
                    //var client = new WebSocketClient($"http://{ip.ToString()}:8809/").ConnectAsync();
                    break;
                }