From 82e5d2df096e55f1142106657668b87c8cfedda3 Mon Sep 17 00:00:00 2001 From: czw <selecti@yeah.net> Date: 星期一, 23 六月 2025 09:09:01 +0800 Subject: [PATCH] aux --- 2025年6月12日/AuxAllWCS/AutoThread.cs | 1369 ++++++++++++++++++++++++++ 2025年6月12日/AuxAllWCS/Build/Project/AuxAllWCS.csproj | 44 2025年6月12日/AuxAllWCS/RunTime/Code/自定义类.cs | 5 2025年6月12日/AuxAllWCS/Build/Project/代码/界面事件.cs | 114 - 2025年6月12日/AuxAllWCS/AuxAllWCS.json | 2 2025年6月12日/AuxAllWCS/Devices/PlcConfig | 19 2025年6月12日/AuxAllWCS/RunTime/Code/VS自定义类/AutoThread.cs | 1369 ++++++++++++++++++++++++++ 2025年6月12日/AuxAllWCS/Devices/设备通信.json | 2 2025年6月12日/AuxAllWCS/Scripts/Custom.json | 31 2025年6月12日/AuxAllWCS/Build/Project/代码/自定义类.cs | 12 2025年6月12日/AuxAllWCS/Build/Project/代码/ViewModel.cs | 5 2025年6月12日/AuxAllWCS/Build/Project/代码/VS自定义类/AutoThread.cs | 7 2025年6月12日/AuxAllWCS/Net/Conn.json | 2 2025年6月12日/AuxAllWCS/Scripts/Script.json | 86 14 files changed, 2,892 insertions(+), 175 deletions(-) diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/AutoThread.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/AutoThread.cs" new file mode 100644 index 0000000..1551ace --- /dev/null +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/AutoThread.cs" @@ -0,0 +1,1369 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Collections.Concurrent; +using System.ComponentModel; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using GZ.Modular.Redis; +using GZ.DB.Entity.OIDATABASE; +using GZ.DB.IRepository.OIDATABASE; +using GZ.DB.Repository.OIDATABASE; +using static System.Windows.Forms.VisualStyles.VisualStyleElement; +using System.Windows.Interop; +using static System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox; + +namespace GZ.Projects.AuxAllWCS +{ + public partial class AutoThread + { + + private static AutoThread _instance; + + // 绉佹湁鏋勯�鍑芥暟闃叉澶栭儴瀹炰緥鍖�+ private AutoThread() { } + + public static AutoThread Instance + { + get + { + if (_instance == null) + { + _instance = new AutoThread(); + } + return _instance; + } + } + + // 绾跨▼瀹夊叏鐨勫鎵樼紦瀛�+ private static readonly ConcurrentDictionary<string, Delegate> _methodCache = new ConcurrentDictionary<string, Delegate>(); + + // 鏂规硶鎵ц鍣�+ public static object InvokeMethod(object instance, string methodName, params object[] args) + { + var cacheKey = $"{instance.GetType().FullName}_{methodName}"; + + if (!_methodCache.TryGetValue(cacheKey, out var methodDelegate)) + { + // 鑾峰彇鏂规硶淇℃伅 + var methodInfo = instance.GetType().GetMethod( + methodName, + BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + + if (methodInfo == null) + throw new MissingMethodException($"Method {methodName} not found"); + + // 鍒涘缓濮旀墭骞剁紦瀛�+ methodDelegate = Delegate.CreateDelegate( + GetDelegateType(methodInfo), + instance, + methodInfo); + + _methodCache.TryAdd(cacheKey, methodDelegate); + } + + // 鎵ц濮旀墭 + return methodDelegate.DynamicInvoke(args); + } + + // 鏍规嵁鏂规硶绛惧悕鐢熸垚瀵瑰簲鐨勫鎵樼被鍨�+ private static Type GetDelegateType(MethodInfo methodInfo) + { + var parameterTypes = methodInfo.GetParameters() + .Select(p => p.ParameterType) + .ToList(); + + if (methodInfo.ReturnType == typeof(void)) + { + return System.Linq.Expressions.Expression.GetActionType(parameterTypes.ToArray()); + } + else + { + parameterTypes.Add(methodInfo.ReturnType); + return System.Linq.Expressions.Expression.GetFuncType(parameterTypes.ToArray()); + } + } + + /// <summary> + /// 閰嶇疆鍒濆鍖栥� + /// </summary> + /// <param name="tag"></param> + /// <param name="action"></param> + public void ThreadSettingInit(Tag tag, Action action) + { + Console.WriteLine("鍒濆鍖栭厤缃�绾跨▼ run " + tag.Global.SettingsOver); + if (tag.Global.SettingsOver == 0) + { + action?.Invoke(); + tag.Global.SettingsOver = 1; + } + else if (Settings.deviceInfos.Count == 0) + { + tag.Global.SettingsOver = 0; + } + } + + /// <summary> + /// 鎹烽『1 淇″彿澶勭悊 + /// </summary> + /// <param name="tag"></param> + public void ThreadJS1(Tag tag) + { + Console.WriteLine($"ThreadJS1 鎹烽『1 淇″彿澶勭悊 =================> "); + var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 2 && x.deviceName == "Js鎹烽『1"); + + if (VERX != null) + { + if (tag.Js1.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 1) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 4, + endBit = VERX.location[0] + })); + LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + //tag.Js1.D1212_LAST = 1; + RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "1", out string msg); + } + } + if (tag.Js1.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 0) + { + //tag.Js1.D1212_LAST = 0; + RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "0", out string msg); + } + if (tag.Js1.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 1) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 4, + endBit = VERX.location[1] + })); + LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + //tag.Js1.D1213_LAST = 1; + RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "1", out string msg); + } + } + if (tag.Js1.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 0) + { + //tag.Js1.D1213_LAST = 0; + RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "0", out string msg); + } + } + } + /// <summary> + /// 鎹烽『2 淇″彿澶勭悊 + /// </summary> + /// <param name="tag"></param> + public void ThreadJS2(Tag tag) + { + Console.WriteLine($"ThreadJS2 鎹烽『2 淇″彿澶勭悊 =================> "); + var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 2 && x.deviceName == "Js鎹烽『2"); + + if (VERX != null) + { + if (tag.Js2.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 1) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 4, + endBit = VERX.location[0] + })); + LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + //tag.Js2.D1212_LAST = 1; + + RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "1", out string msg); + } + } + if (tag.Js2.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 0) + { + //tag.Js2.D1212_LAST = 0; + + RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "0", out string msg); + } + if (tag.Js2.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 3) == 1) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 4, + endBit = VERX.location[1] + })); + LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + //tag.Js2.D1213_LAST = 1; + + RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "1", out string msg); + } + } + if (tag.Js2.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1213, 2) == 0) + { + //tag.Js2.D1213_LAST = 0; + + RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "0", out string msg); + } + } + } + /// <summary> + /// 缁村笇灏� 宸�+ /// </summary> + /// <param name="tag"></param> + public void Threadwxr1L(Tag tag) + { + Console.WriteLine($"Threadwxr1L 缁村笇灏� 宸�=================> "); + var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("1")); + + if (VERX != null) + { + if (tag.wxr1.R44 && !tag.wxr1.R44_LAST && tag.wxr1.R10) + { + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode)) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 1, + cntrCode = traycode, + startBit = VERX.location[0], + endBit = "" + })); + LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + tag.wxr1.R44_LAST = true; + } + } + else + { + TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); + } + } + else + { + //TaskRepository ts = new TaskRepository(); + if (tag.wxr1.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘� + { + if (tag.wxr1.R10) + { + tag.wxr1.R10_LAST = false; + } + else + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode)) + { + //涓婃姤鏍¢獙銆�+ ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson); + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new + { + sceneType = 1, + cntrCode = traycode, + })); + if (str.Contains("true")) + { + //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue"); + tag.wxr1.R10 = true; + tag.wxr1.R44_LAST = false; + } + else + { + //鎶ヨ銆�+ } + } + else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); } + } + } + } + } + + /// <summary> + /// 缁村笇灏� 鍙�+ /// </summary> + /// <param name="tag"></param> + public void Threadwxr1R(Tag tag) + { + Console.WriteLine($"Threadwxr1R 缁村笇灏� 鍙�=================> "); + var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("1")); + + if (VERX != null) + { + if (tag.wxr1.R46 && !tag.wxr1.R46_LAST && tag.wxr1.R11) + { + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode)) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 1, + cntrCode = traycode, + startBit = VERX.location[1], + endBit = "" + })); + LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + tag.wxr1.R46_LAST = true; + } + } + else + { + TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); + } + } + else + { + if (tag.wxr1.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘� + { + if (tag.wxr1.R11) + { + tag.wxr1.R11_LAST = false; + } + else + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode)) + { + //涓婃姤鏍¢獙銆�+ ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson); + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new + { + sceneType = 1, + cntrCode = traycode, + })); + if (str.Contains("true")) + { + //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue"); + tag.wxr1.R11 = true; + tag.wxr1.R46_LAST = false; + } + else + { + //鎶ヨ銆�+ } + } + else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); } + } + } + } + } + + /// <summary> + /// 缁村笇灏� 宸�+ /// </summary> + /// <param name="tag"></param> + public void Threadwxr2L(Tag tag) + { + Console.WriteLine($"Threadwxr2L 缁村笇灏� 宸�=================> "); + var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("2")); + + if (VERX != null) + { + if (tag.wxr2.R44 && !tag.wxr2.R44_LAST && tag.wxr2.R10) + { + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode)) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 1, + cntrCode = traycode, + startBit = VERX.location[0], + endBit = "" + })); + LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + tag.wxr2.R44_LAST = true; + } + } + else + { + TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); + } + } + else + { + if (tag.wxr2.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘� + { + if (tag.wxr2.R10) + { + tag.wxr2.R10_LAST = false; + } + else + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode)) + { + //涓婃姤鏍¢獙銆�+ ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson); + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new + { + sceneType = 1, + cntrCode = traycode, + })); + if (str.Contains("true")) + { + //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue"); + tag.wxr2.R10 = true; + tag.wxr2.R44_LAST = false; + } + else + { + //鎶ヨ銆�+ } + } + else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); } + } + } + } + } + + /// <summary> + /// 缁村笇灏� 鍙�+ /// </summary> + /// <param name="tag"></param> + public void Threadwxr2R(Tag tag) + { + Console.WriteLine($"Threadwxr2R 缁村笇灏� 鍙�=================> "); + + var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("2")); + + if (VERX != null) + { + if (tag.wxr2.R46 && !tag.wxr2.R46_LAST && tag.wxr2.R11) + { + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode)) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 1, + cntrCode = traycode, + startBit = VERX.location[1], + endBit = "" + })); + LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + tag.wxr2.R46_LAST = true; + } + } + else + { + TcpServer.TcpServerSend(VERX.deviceNo[2], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); + } + } + else + { + if (tag.wxr2.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘� + { + if (tag.wxr2.R11) + { + tag.wxr2.R11_LAST = false; + } + else + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode)) + { + //涓婃姤鏍¢獙銆�+ ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson); + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new + { + sceneType = 1, + cntrCode = traycode, + })); + if (str.Contains("true")) + { + //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue"); + tag.wxr2.R11 = true; + tag.wxr2.R46_LAST = false; + } + else + { + //鎶ヨ銆�+ } + } + else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); } + } + } + } + } + + + public void ThreadTaskRun(Tag tag, Func<TaskEntity, bool> action) + { + Console.WriteLine($"ThreadTaskRun 浠诲姟涓嬪彂 =================> "); + LogHelper.Info("ThreadTaskRun 浠诲姟涓嬪彂"); + + ITaskRepository taskservice = new TaskRepository(); + try + { + LogHelper.Info("浠诲姟涓嬪彂 ARG 浠诲姟 杩涘叆"); + #region AGV浠诲姟涓嬪彂銆�+ + var tklist = taskservice.FindList(x => x.S_B_STATE == "鏈墽琛� && x.S_WORK_MODE == "AGV"); + if (tklist.Any()) + foreach (var tk in tklist.GroupBy(item => + { + var ticks = item.T_CREATE.Ticks; + return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute)); + }).OrderBy(x => x.Key)) + { + var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList(); + foreach (var t in ts) + { + var b = false; + b = action?.Invoke(t) ?? false; //new ViewModel().RunTask(t); + + if (b) + { + t.S_B_STATE = "宸叉帹閫�; + taskservice.Update(t); + } + } + break; + } + //foreach (var tk in tklist.GroupBy(item => + //{ + // var ticks = item.T_CREATE.Ticks; + // return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute)); + //}).OrderBy(x => x.Key)) + //if (tklist.Any()) + //{ + + #endregion + } + catch (Exception ex) + { + LogHelper.Info(ex.Message + ex.StackTrace); + } + try + { + #region Rgv + + LogHelper.Info($"鏌ョ湅RGV 鐢甸噺锛氥�{tag.RGV.R褰撳墠鐢甸噺}銆�鍏呯數鐘舵�锛氥�{tag.RGV.R鍏呯數鐘舵�}銆�鏁呴殰浠g爜锛氥�{tag.RGV.RgvrunError}銆�); + + if (tag.RGV.taskend == 125) + { + System.Threading.Thread.Sleep(3000); + return; + } + LogHelper.Info("浠诲姟涓嬪彂 Rgv 浠诲姟 杩涘叆"); + + var task1Isrun = false; + if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1) + { + task1Isrun = true; + //if (tag.RGV.bit1taskOver_LAST == 1) + // RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); + } + var task2Isrun = false; + if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1) + { + task2Isrun = true; + //if (tag.RGV.bit2taskOver_LAST == 1) + // RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); + } + if (task1Isrun || task2Isrun) + { + string mes = ""; + if (task1Isrun) + mes += tag.RGV.ReadTask1No + "鎵ц涓�.."; + if (task2Isrun) + mes += tag.RGV.ReadTask2No + "鎵ц涓�.."; + LogHelper.Info($"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�"); + System.Threading.Thread.Sleep(3000); + return; + } + var thisOver = 0; + TaskEntity task1 = null; + TaskEntity task2 = null; + + LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅浠诲姟銆�); + if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1) + { + var taskno = tag.RGV.ReadTask1No; + LogHelper.Info($"RGV 1宸ヤ綅浠诲姟{tag.RGV.ReadTask1No}"); + string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0')); + task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno); + + LogHelper.Info($"RGV 1宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task1)}.bit1taskOver_LAST锛歿tag.RGV.bit1taskOver_LAST}"); + if (tag.RGV.bit1taskOver_LAST == 0 && task1 != null) + { + if (task1.S_B_STATE != "瀹屾垚") + { + thisOver = 1; + if (task1.S_B_STATE == "鍙栬揣瀹屾垚") + { + task1.S_B_STATE = "瀹屾垚"; + tag.RGV.ReadTask1No = 0; + } + else + { + task1.S_B_STATE = "鍙栬揣瀹屾垚"; + } + tag.RGV.bit1taskOver = 0; + LogHelper.Info($"RGV 1宸ヤ綅浠诲姟{task1.S_TASK_NO} 鐘舵�鍒囨崲涓簕task1.S_B_STATE}"); + //tag.RGV.bit1taskOver_LAST = 1; + RedisHelper.Add($"RGV.bit1taskOver_LAST", "1", out string msg); + LogHelper.Info($"RGV 1宸ヤ綅浠诲姟鍐欏鐞�); + taskservice.Update(task1); + LogHelper.Info($"RGV 1宸ヤ綅浠诲姟鏇存柊銆�); + } + else + { + LogHelper.Info("RGV1宸ヤ綅浠诲姟宸茬粡瀹屾垚銆�); + } + } + } + else if (tag.RGV.ReadTask1No == 0) + { + LogHelper.Info($"RGV 1宸ヤ綅娌℃湁浠诲姟銆�); + } + + LogHelper.Info($"鏌ョ湅RGV 2宸ヤ綅浠诲姟銆�); + if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver == 1) + { + var taskno = tag.RGV.ReadTask2No; + LogHelper.Info($"RGV 2宸ヤ綅浠诲姟{tag.RGV.ReadTask2No}"); + string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0')); + task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno); + + LogHelper.Info($"RGV2宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task2)}.bit2taskOver_LAST锛歿tag.RGV.bit2taskOver_LAST}"); + if (tag.RGV.bit2taskOver_LAST == 0 && task2 != null) + { + if (task2.S_B_STATE != "瀹屾垚") + { + thisOver = 2; + if (task2.S_B_STATE == "鍙栬揣瀹屾垚") + { + task2.S_B_STATE = "瀹屾垚"; + tag.RGV.ReadTask2No = 0; + } + else + { + task2.S_B_STATE = "鍙栬揣瀹屾垚"; + } + tag.RGV.bit2taskOver = 0; + LogHelper.Info($"RGV 2宸ヤ綅浠诲姟{task2.S_TASK_NO} 鐘舵�鍒囨崲涓簕task2.S_B_STATE}"); + RedisHelper.Add($"RGV.bit2taskOver_LAST", "1", out string msg); + LogHelper.Info($"RGV 2宸ヤ綅浠诲姟鍐欏鐞�); + taskservice.Update(task2); + LogHelper.Info($"RGV 2宸ヤ綅浠诲姟鏇存柊銆�); + } + else + { + LogHelper.Info("RGV2宸ヤ綅浠诲姟宸茬粡瀹屾垚銆�); + } + } + } + else if (tag.RGV.ReadTask2No == 0) + { + LogHelper.Info($"RGV 2宸ヤ綅娌℃湁浠诲姟銆�); + } + + + + //if (thisOver > 0) + //{ + // var v2 = RedisHelper.Get<WriteGroupEntity>("RGVQueue", out string rev); + // if (v2 != null) + // { + // LogHelper.Info($"RGVQueue 璇诲埌缁撴灉-{JsonConvert.SerializeObject(v2)} \n 涓嬪彂鍓嶈繘琛屾竻闄ゃ�"); + // var b = RedisHelper.Remove("RGVQueue", out rev); + // } + //} + + ///1 鏈夎揣 灏� 鍙栥� 1 娌¤揣 灏� 鍗歌揣锛�閮芥湁璐� 灏�鍗歌揣銆�閮芥病璐�灏�鍗�+ var tklist = taskservice.FindList(x => x.S_B_STATE == "鏈墽琛� && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList(); + if (task1 != null && task1.S_B_STATE != "瀹屾垚") //1鏈変换鍔�+ { + if (task2 != null && task2.S_B_STATE != "瀹屾垚")// 1 鏈変换鍔� 2 鏈変换鍔°� + { + LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 涔熸湁浠诲姟{task2.S_TASK_NO}銆�寮�宸ヤ綅1 鍗歌揣銆�); + tag.RGV.workMod = 1; + tag.RGV.taskmod = 2; + tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4)); + tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC); + System.Threading.Thread.Sleep(750); + //RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); + //tag.RGV.taskend = 125; + //Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue"); + + LogHelper.Info($"{task1.S_TASK_NO}> bit1taskOver_LAST 鍐�0"); + RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); + LogHelper.Info($"{task1.S_TASK_NO}> end 鍐�125"); + Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + } + else //1鏈変换鍔� 2 娌′换鍔°� + { + + LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔°�"); + + var leftSide = new List<string> { "1023", "1020" }; + var RightSide = new List<string> { "1002", "1008", "1010", "1016" }; + bool creT2 = false; + + // 2鍙�浼樺厛缁�1020 1008 1016 + var t2 = tklist.OrderBy(x => x.T_CREATE).ToList().Find(x => x.S_START_LOC == "1020" || x.S_START_LOC == "1008" || x.S_START_LOC == "1016"); + if (t2 != null) + { + LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵�020 1008 1016鍙栬揣浠诲姟{t2.S_TASK_NO}銆�); + tag.RGV.workMod = 2; + tag.RGV.taskmod = 1; + tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4)); + tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC); + t2.S_B_STATE = "宸叉帹閫�; + taskservice.Update(t2); + creT2 = true; + System.Threading.Thread.Sleep(750); + LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0"); + RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); + LogHelper.Info($"{t2.S_TASK_NO}> end 鍐�125"); + Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + } + ////2 濡傛灉鏈夊悓渚у彇璐т换鍔°�灏卞彇銆傛病鏈�+ //else if (leftSide.Contains(task1.S_START_LOC)) + //{ + // leftSide.Remove(task1.S_START_LOC); + // var lsde = leftSide.FirstOrDefault(); + // t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != "1017"); + // if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆�+ // { + // LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔t2.S_TASK_NO}銆�); + // tag.RGV.workMod = 2; + // tag.RGV.taskmod = 1; + // tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4)); + // tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC); + // t2.S_B_STATE = "宸叉帹閫�; + // taskservice.Update(t2); + // creT2 = true; + // System.Threading.Thread.Sleep(750); + // LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0"); + // RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); + // LogHelper.Info($"{t2.S_TASK_NO}> end 鍐�125"); + // Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + // } + //} + //else if (RightSide.Contains(task1.S_START_LOC)) + //{ + // RightSide.Remove(task1.S_START_LOC); + // t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != "1017"); + // if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆�+ // { + // LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚�1002,1010 鍙栬揣浠诲姟{t2.S_TASK_NO}銆�); + // tag.RGV.workMod = 2; + // tag.RGV.taskmod = 1; + // tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4)); + // tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC); + // t2.S_B_STATE = "宸叉帹閫�; + // taskservice.Update(t2); + // creT2 = true; + // System.Threading.Thread.Sleep(750); + // LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�125"); + // RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); + // LogHelper.Info($"{t2.S_TASK_NO}> end 鍐�125"); + // Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + // } + //} + else //1 鐩存帴鍗歌揣銆� + //if (!creT2) + { + LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 娌℃湁鍚屼晶鍙栬揣浠诲姟 1宸ヤ綅鍗歌揣銆�); + tag.RGV.workMod = 1; + tag.RGV.taskmod = 2; + tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4)); + tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC); + System.Threading.Thread.Sleep(750); + LogHelper.Info($"{task1.S_TASK_NO}> bit1taskOver_LAST 鍐�0"); + RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); + LogHelper.Info($"{task1.S_TASK_NO}> taskend 鍐�0"); + Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + } + } + } + else + { + if (task2 != null && task2.S_B_STATE != "瀹屾垚")// 1 娌′换鍔� 2 鏈変换鍔°� + { + LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 鏈変换鍔task2.S_TASK_NO}銆傚伐浣�鍗歌揣銆傘�"); + //2 鍗歌揣銆�+ tag.RGV.workMod = 2; + tag.RGV.taskmod = 2; + tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4)); + tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC); + System.Threading.Thread.Sleep(750); + LogHelper.Info($"{task2.S_TASK_NO}> bit2taskOver_LAST 鍐�0"); + RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); + //tag.RGV.taskend = 125; + LogHelper.Info($"{task2.S_TASK_NO}> taskend 鍐�25"); + Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + } + else if (tklist.Any()) //1mei 浠诲姟 2 娌′换鍔°� + { + LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 涔熸病浠诲姟銆備紭鍏�宸ヤ綅缁堢偣1017浠诲姟銆傘�"); + //銆佷笅 1017浠诲姟 缁�鍙峰伐浣嶃� + //var lss = tklist.Take(2).ToList(); + var e1017first = tklist.Find(x => x.S_START_LOC == "1002" || x.S_START_LOC == "1010" || x.S_START_LOC == "1023"); + //if (e1017first != null) + //{ + // e1017first = tklist.FirstOrDefault(); + //} + if (e1017first != null) + { + LogHelper.Info($"鏌ョ湅RGV1 浠诲姟宸ヤ綅2 娌′换鍔°� 1002 1010 1023鍙栬揣浠诲姟{e1017first.S_TASK_NO}銆�); + tag.RGV.workMod = 1; + tag.RGV.taskmod = 1; + uint tno = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(4)); + LogHelper.Info($"{e1017first.S_TASK_NO}> 杞崲鍚庝换鍔″彿{tno} 寮�鍐欏叆銆�); + tag.RGV.taskno1 = tno; + LogHelper.Info($"{e1017first.S_TASK_NO}>寮�鍐欏叆 task1do>>{e1017first.S_START_LOC}銆�); + tag.RGV.task1do = Convert.ToUInt16(e1017first.S_START_LOC); + LogHelper.Info($"{e1017first.S_TASK_NO}> 鏇存柊浠诲姟銆�); + e1017first.S_B_STATE = "宸叉帹閫�; + taskservice.Update(e1017first); + System.Threading.Thread.Sleep(750); + LogHelper.Info($"{e1017first.S_TASK_NO}> bit1taskOver_LAST 鍐�"); + RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); + LogHelper.Info($"{e1017first.S_TASK_NO}> taskend 鍐�25"); + //tag.RGV.taskend=125 + Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + } + else + { + var t2 = tklist.OrderBy(x => x.T_CREATE).ToList().Find(x => x.S_START_LOC == "1020" || x.S_START_LOC == "1008" || x.S_START_LOC == "1016"); + if (tklist != null) + { + LogHelper.Info($"鏌ョ湅RGV1 娌′换鍔″伐浣� 娌′换鍔°� 鎵�020 1008 1016鍙栬揣浠诲姟{t2.S_TASK_NO}銆�); + tag.RGV.workMod = 2; + tag.RGV.taskmod = 1; + tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4)); + tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC); + t2.S_B_STATE = "宸叉帹閫�; + taskservice.Update(t2); + System.Threading.Thread.Sleep(750); + LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0"); + RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); + LogHelper.Info($"{t2.S_TASK_NO}> end 鍐�125"); + Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + } + } + } + } + LogHelper.Info($"rgv 澶勭悊瀹屾垚銆倀askend 125"); + #endregion + } + catch (Exception ex) + { + LogHelper.Info(ex.Message + ex.StackTrace); + } + } + + + public void ThreadGrats(Tag tag, Action<HaiKangOrderInfo> continueTask) + { + Console.WriteLine($"ThreadGrats 鍏夋爡澶勭悊 =================> "); + var taskCOdes = new List<string> { "Sarrive", "Srelease", "Earrive", "Erelease" }; + TaskActRepository taskActRepository = new TaskActRepository(); + TaskRepository taskRepository = new TaskRepository(); + var requires = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0); + foreach (var item in requires) + { + var tin = taskCOdes.IndexOf(item.S_ACTION_CODE); + if (tin == -1) + { + item.N_CREATEMETHOD = -1; + taskActRepository.Update(item); + continue; + } + //var task = taskRepository.FindEntity(x => x.S_TASK_NO == item.S_TASK_NO); + string loc = ""; + if (tin < 2) + { + loc = item.S_START_LOC; + } + else + { + loc = item.S_END_LOC; + } + if (loc == null) continue; else loc = loc.Trim(); + bool goin = tin % 2 == 0; + bool continuuuuu = false; + var dev = Settings.deviceInfos.Find(x => x.location.Contains(loc)); + if (dev != null) + { + var V = dev.location.ToList().FindIndex(x => x == loc) == 0; + //杞﹁蛋浜� 寮�厜鏍�+ if (!goin) + { + if (dev.deviceType == 1) + { + LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue")); + Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue"); + + } + else if (dev.deviceType == 2) + { + LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue")); + Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue"); + } + + item.N_CREATEMETHOD = 1; + taskActRepository.Update(item); + } + //杞﹁杩涘叆浜や簰銆�+ else + { + if (dev.deviceType == 1) + { + var tf = Conn.榛樿Redis.GetValue(dev.deviceName + "." + (V ? "R50" : "R52"));//璇诲叧闂姸鎬�+ if (tf?.ToLower() == "true") + { + LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆�宸茬粡鍏抽棴锛�); + continuuuuu = true; + } + else + { + LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "R01" : "R03"), "true", dev.deviceName + "Queue")); + Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "R01" : "R03"), "true", dev.deviceName + "Queue"); + } + + } + else if (dev.deviceType == 2) + { + var tf = Conn.榛樿Redis.GetValue(dev.deviceName + ".D1202"); + int numm = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf); + if (TcpServer.GetBitdata(numm, (V ? 0 : 1)) == 1) + { + LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆�宸茬粡鍏抽棴锛�); + continuuuuu = true; + } + else + { + LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "D1220" : "D1221"), dev.deviceName + "Queue")); + Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1220" : "D1221"), "1", dev.deviceName + "Queue"); + } + } + + } + + } + if (continuuuuu) + { + LogHelper.Info($"{item.S_TASK_NO}{item.S_ACTION_CODE} 杞﹁締鍙戦�缁х画浠诲姟锛�); + continueTask?.Invoke(new HaiKangOrderInfo + { + reqCode = item.S_ID.Replace("-", ""), + taskCode = item.S_TASK_NO + }); + item.N_CREATEMETHOD = 1; + taskActRepository.Update(item); + } + } + System.Threading.Thread.Sleep(3000); + //閲嶇疆淇″彿 + foreach (var dev in Settings.deviceInfos.FindAll(x => x.deviceType == 2)) + { + var tf = Conn.榛樿Redis.GetValue(dev.deviceName + ".D1202"); + int numm = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf); + if (TcpServer.GetBitdata(numm, 0) == 0) + { + Conn.榛樿Redis.SetValue(dev.deviceName + ".D1220", "0", dev.deviceName + "Queue"); + Conn.榛樿Redis.SetValue(dev.deviceName + ".D1222", "0", dev.deviceName + "Queue"); + } + else if (TcpServer.GetBitdata(numm, 1) == 0) + { + Conn.榛樿Redis.SetValue(dev.deviceName + ".D1221", "0", dev.deviceName + "Queue"); + Conn.榛樿Redis.SetValue(dev.deviceName + ".D1223", "0", dev.deviceName + "Queue"); + } + } + + } + /// <summary> + /// 1020 1023绌烘涓嬬嚎 + /// </summary> + /// <param name="tag"></param> + public void ThreadEdown(Tag tag) + { + Console.WriteLine($"ThreadEdown 20 23 = 绌轰笅妫�祴 =================> "); + TaskRepository taskRepository = new TaskRepository(); + foreach (var Bssx in new string[] { "1020", "1023" }) + { + var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16)); + var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16)); + var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.R鎵樼洏鐮�), typeof(System.String)); + Console.WriteLine($"{Bssx} 绌轰笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇 "); + if (RtaskState == 3 && RtaskState_LAST == 0) + { + var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷"); + string msg = ""; + if (task != null) + { + Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + continue; + } + try + { + var listtep = new List<string>(); + if (Bssx == "1020") + { + if (tag.SF涓嬫枡浣�RArrive1003 == 1) + { + listtep = new List<string> { "1012", "1004" }; + } + else + { + listtep = new List<string> { "1004", "1012" }; + } + } + else + { + if (tag.SF涓嬫枡浣�RArrive1005 == 1) + { + listtep = new List<string> { "1014", "1006" }; + } + else + { + listtep = new List<string> { "1006", "1014" }; + } + } + + foreach (var item in listtep)//(Bssx == "1020" ? new string[] { "1004", "1012" } : new string[] { "1006", "1014" })) + { + var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16)); + var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16)); + if (R5 == 5 && R5绌洪棽_LAST == 0 && task == null) + { + task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷"); + msg = ""; + if (task != null) + { + Console.WriteLine($" {item}鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + LogHelper.Info($" {item}鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + continue; + } + + var b = TaskProcess.CreateTask("", Bssx, item, "绌轰笂RGV", 5, new List<string> { R鎵樼洏鐮�}, "RGV"); + if (b) + { + LogHelper.Debug($"杈撻�绾縍GV绌烘墭浠诲姟 from:{Bssx}>to {item}寮�鍒涘缓鎴愬姛"); + RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg); + //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue"); + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out msg); + //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue"); + break; + } + } + else if (R5 != 5 && R5绌洪棽_LAST == 1) + { + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out msg); + //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "0", $"S{item}ReadQueue"); + } + } + System.Threading.Thread.Sleep(1000); + } + catch (Exception ex) + { + LogHelper.Error(ex.Message, ex); + Console.WriteLine(ex.Message + ex.StackTrace); + } + } + else if (RtaskState != 3 && RtaskState_LAST == 1) + { + RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg); + //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "0", $"S{Bssx}ReadQueue"); + } + System.Threading.Thread.Sleep(2000); + } + + foreach (var item in new string[] { "1004", "1012", "1006", "1014", "1026", "1017" }) + { + var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16)); + var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16)); + if (R5 != 5 && R5绌洪棽_LAST == 1) + { + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg); + //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "0", $"S{item}ReadQueue"); + } + } + } + + public void ThreadDdown(Tag tag) + { + Console.WriteLine($"ThreadDdown 08 10 ==================> 1026"); + TaskRepository taskRepository = new TaskRepository(); + foreach (var Bssx in new string[] { "1008", "1016" }) + { + var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16)); + var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16)); + var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.R鎵樼洏鐮�), typeof(System.String)); + Console.WriteLine($"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇"); + if (RtaskState == 3 && RtaskState_LAST == 0) + { + var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷"); + string msg = ""; + if (task != null) + { + Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + continue; + } + + var item = "1026"; + var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16)); + var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16)); + if (R5 == 5 && R5绌洪棽_LAST == 0) + { + task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷"); + msg = ""; + if (task != null) + { + Console.WriteLine($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + LogHelper.Info($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + continue; + } + var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1026", 5, new List<string> { R鎵樼洏鐮�}, "RGV"); + if (b) + { + RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg); + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg2); + //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue"); + //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue"); + break; + } + } + else if (R5 != 5 && R5绌洪棽_LAST == 1) + { + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg2); + } + } + else if (RtaskState != 3 && RtaskState_LAST == 1) + { + RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg); + //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "0", $"S{Bssx}ReadQueue"); + } + System.Threading.Thread.Sleep(2000); + } + } + + public void Thread0210Down(Tag tag) + { + Console.WriteLine($"Thread0210Down ==================>"); + TaskRepository taskRepository = new TaskRepository(); + foreach (var Bssx in new string[] { "1002", "1010" }) + { + var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16)); + var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16)); + var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.R鎵樼洏鐮�), typeof(System.String)); + Console.WriteLine($"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇"); + if (RtaskState == 3 && RtaskState_LAST == 0) + { + var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷"); + string msg = ""; + if (task != null) + { + Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + continue; + } + var item = "1017"; + var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16)); + var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16)); + if (R5 == 5 && R5绌洪棽_LAST == 0) + { + task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷"); + msg = ""; + if (task != null) + { + Console.WriteLine($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + LogHelper.Info($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + continue; + } + var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1017", 5, new List<string> { R鎵樼洏鐮�}, "RGV"); + if (b) + { + RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg); + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg1); + //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue"); + //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue"); + break; + } + } + else if (R5 != 5 && R5绌洪棽_LAST == 1) + { + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg1); + } + } + else if (RtaskState != 3 && RtaskState_LAST == 1) + { + RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg); + } + System.Threading.Thread.Sleep(2000); + } + } + + + public void Thread涓嬫枡浣嶆娴�Tag tag) + { + Console.WriteLine($"Thread涓嬫枡浣嶆娴� =====>"); + foreach (var ssx in new string[] { "1003", "1005", "1011", "1013" }) + { + var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"FNK1003051113.RArrive{ssx}"), typeof(System.UInt16)); + var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"FNK1003051113.RArrive{ssx}_LAST"), typeof(System.UInt16)); + if (RArrive == 1 && RArriveLast == 0) + { + if (ssx == "1005" && tag.SF涓嬫枡浣�WRelease1005 == 0) + { + tag.FNK1.D2215 = 1; + //tag.SF涓嬫枡浣�RArrive1005_LAST = 1; + RedisHelper.Add($"FNK1003051113.RArrive1005_LAST", "1", out string msg); + + //tag.SF涓嬫枡浣�WRelease1005 = 0; + //tag.SF涓嬫枡浣�WSafe0305 = 0; + } + else if (ssx == "1003" && tag.SF涓嬫枡浣�WRelease1003 == 0) + { + tag.FNK1.D2210 = 1; + //tag.SF涓嬫枡浣�RArrive1003_LAST = 1; + + RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "1", out string msg); + + //tag.SF涓嬫枡浣�WRelease1003 = 0; + //tag.SF涓嬫枡浣�WSafe0305 = 0; + } + else if (ssx == "1013" && tag.SF涓嬫枡浣�WRelease1013 == 0) + { + tag.FNK2.D2215 = 1; + //tag.SF涓嬫枡浣�RArrive1013_LAST = 1; + RedisHelper.Add($"FNK1003051113.RArrive1013_LAST", "1", out string msg); + + //tag.SF涓嬫枡浣�WRelease1013 = 0; + //tag.SF涓嬫枡浣�WSafe1113 = 0; + } + else if (ssx == "1011" && tag.SF涓嬫枡浣�WRelease1011 == 0) + { + tag.FNK2.D2210 = 1; + //tag.SF涓嬫枡浣�RArrive1011_LAST = 1; + RedisHelper.Add($"FNK1003051113.RArrive1011_LAST", "1", out string msg); + + //tag.SF涓嬫枡浣�WRelease1011 = 0; + //tag.SF涓嬫枡浣�WSafe1113 = 0; + } + } + else if (RArrive == 0 && RArriveLast == 1) + { + RedisHelper.Add($"FNK1003051113.RArrive{ssx}_LAST", "0", out string msg); + //Conn.榛樿Redis.SetValue($"FNK1003051113.RArrive{ssx}_LAST", "0", $"FNK1003051113Queue"); + } + } + } + + public void ThreadFNK1Over(Tag tag) + { + Console.WriteLine($"ThreadFNK1Over =====>"); + if (tag.FNK1.D2217 == 1 && tag.FNK1.D2217_LAST == 0) + { + tag.FNK1.D2215 = 0; + //tag.FNK1.D2212_LAST = 1; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "1", out string msg); + + tag.SF涓嬫枡浣�WRelease1005 = 1; + tag.SF涓嬫枡浣�WSafe0305 = 1; + System.Threading.Thread.Sleep(1000); + RedisHelper.Add($"FNK1003051113.RArrive1005_LAST", "0", out msg); + } + if (tag.FNK1.D2216 == 1) + tag.FNK1.D2215 = 0; + else if (tag.FNK1.D2217 == 0 && tag.FNK1.D2217_LAST == 1) + //tag.FNK1.D2217_LAST = 0; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "0", out string msg); + + if (tag.FNK1.D2212 == 1 && tag.FNK1.D2212_LAST == 0) + { + tag.FNK1.D2210 = 0; + //tag.FNK1.D2217_LAST = 1; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "1", out string msg); + tag.SF涓嬫枡浣�WRelease1003 = 1; + tag.SF涓嬫枡浣�WSafe0305 = 1; + System.Threading.Thread.Sleep(1000); + RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "0", out msg); + } + //else if (tag.FNK1.D2211 == 1) + // tag.FNK1.D2210 = 0; + else if (tag.FNK1.D2212 == 0 && tag.FNK1.D2212_LAST == 1) + { + //tag.FNK1.D2212_LAST = 0; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "0", out string msg); + } + if (tag.FNK1.D2211 == 1) + tag.FNK1.D2210 = 0; + + } + public void ThreadFNK2Over(Tag tag) + { + Console.WriteLine($"ThreadFNK2Over =====>"); + if (tag.FNK2.D2217 == 1 && tag.FNK2.D2217_LAST == 0) + { + tag.FNK2.D2215 = 0; + //tag.FNK2.D2212_LAST = 1; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "1", out string msg); + + tag.SF涓嬫枡浣�WRelease1013 = 1; + tag.SF涓嬫枡浣�WSafe1113 = 1; + System.Threading.Thread.Sleep(1000); + RedisHelper.Add($"FNK1003051113.RArrive1013_LAST", "0", out msg); + } + else if (tag.FNK2.D2217 == 0 && tag.FNK2.D2217_LAST == 1) + //tag.FNK2.D2217_LAST = 0; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "0", out string msg); + + if (tag.FNK2.D2216 == 1) + tag.FNK2.D2215 = 0; + + if (tag.FNK2.D2212 == 1 && tag.FNK2.D2212_LAST == 0) + { + tag.FNK2.D2210 = 0; + //tag.FNK2.D2217_LAST = 1; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "1", out string msg); + + tag.SF涓嬫枡浣�WRelease1011 = 1; + tag.SF涓嬫枡浣�WSafe1113 = 1; + System.Threading.Thread.Sleep(1000); + RedisHelper.Add($"FNK1003051113.RArrive1011_LAST", "0", out msg); + } + else if (tag.FNK2.D2212 == 0 && tag.FNK2.D2212_LAST == 1) + { + //tag.FNK2.D2212_LAST = 0; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "0", out string msg); + } + if (tag.FNK2.D2211 == 1) + tag.FNK2.D2210 = 0; + + } + + public void Thread1019Down(Tag tag) + { + Console.WriteLine($"1019浠诲姟鐘舵�锛� =====>"); + Console.WriteLine($"1019浠诲姟鐘舵�锛歿tag.SA1019.RtaskState}- barcode:{tag.SA1019.R鎵樼洏鐮亇- 绌洪棽{tag.SA1019.R5绌洪棽}"); + } + public void Thread1025Up(Tag tag) + { + Console.WriteLine($"SA1025 浠诲姟鐘舵�锛� =====>"); + Console.WriteLine($"SA1025 浠诲姟鐘舵�锛歿tag.SA1025.RtaskState}- 绌洪棽{tag.SA1025.R5绌洪棽}"); + } + public void Thread1022Up(Tag tag) + { + Console.WriteLine($"SA1022 =====>"); + Console.WriteLine($"SA1022 浠诲姟鐘舵�锛歿tag.SA1022.RtaskState}- 绌洪棽{tag.SA1022.R5绌洪棽}"); + } + public void Thread1030Down(Tag tag) + { + Console.WriteLine($"SA1030 浠诲姟鐘舵�锛� =====>"); + Console.WriteLine($"SA1030 浠诲姟鐘舵�锛歿tag.SA1030.RtaskState}- 绌洪棽{tag.SA1030.R5绌洪棽}-->瀵瑰簲缁堢偣2001>绌洪棽5锛歿tag.SA2001.R5绌洪棽}"); + } + public void Thread2030Down(Tag tag) + { + Console.WriteLine($"SA2030 浠诲姟鐘舵�锛� =====>"); + Console.WriteLine($"SA2030 浠诲姟鐘舵�锛歿tag.SA2030.RtaskState}- 绌洪棽{tag.SA2030.R5绌洪棽} - barcode:{tag.SA2030.R鎵樼洏鐮亇"); + } + + + } +} diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/AuxAllWCS.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/AuxAllWCS.json" index a2809ca..e58f855 100644 --- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/AuxAllWCS.json" +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/AuxAllWCS.json" @@ -9,5 +9,5 @@ "DevelopVersion": "1.0.2.0", "Encode": "Ij/zvOgkqNT5SmHrFKCAVQ==", "CreationTime": "0001-01-01 00:00:00", - "LastWriteTime": "2025-06-18 23:06:58" + "LastWriteTime": "2025-06-23 08:57:03" } \ No newline at end of file diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/AuxAllWCS.csproj" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/AuxAllWCS.csproj" index 2466075..3f82737 100644 --- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/AuxAllWCS.csproj" +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/AuxAllWCS.csproj" @@ -2,11 +2,11 @@ <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="15.0"> <PropertyGroup> <Platform Condition="'$(Configuration)' == ''">AnyCPU</Platform> - <OutputType>Exe</OutputType> + <OutputType>WinExe</OutputType> <RootNamespace>GZ.Projects.AuxAllWCS</RootNamespace> <AssemblyName>AuxAllWCS</AssemblyName> <TargetFrameworkVersion>4.6.1</TargetFrameworkVersion> - <ProjectGuid>{E1166F09-DED5-4E32-AB55-4DE61A402132}</ProjectGuid> + <ProjectGuid>{50c6b7fe-daa2-4ebe-8ebe-6f6efc0a213c}</ProjectGuid> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"> <PlatformTarget>AnyCPU</PlatformTarget> @@ -26,9 +26,6 @@ <DefineConstants>TRACE</DefineConstants> <ErrorReport>prompt</ErrorReport> <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup> - <StartupObject /> </PropertyGroup> <ItemGroup> <Reference Include="System"> @@ -198,7 +195,6 @@ <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </Page> - <Compile Include="浠g爜\VS鑷畾涔夌被\AutoThread.cs" /> <Compile Include="鐣岄潰\View1.xaml.cs"> <DependentUpon>View1.xaml</DependentUpon> <SubType>Code</SubType> @@ -212,45 +208,11 @@ <Compile Include="浠g爜\鑷畾涔夌粨鏋�cs" /> <Compile Include="浠g爜\鑷畾涔夌被.cs" /> <Compile Include="浠g爜\VS鑷畾涔夌被\TcpServer.cs" /> + <Compile Include="浠g爜\VS鑷畾涔夌被\AutoThread.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> <None Include="App.config" /> - <None Include="Static\config.json"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> - <None Include="Static\js\app.829e775c.js.map"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> - <None Include="Static\js\chunk-vendors.3e768dfe.js.map"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> - </ItemGroup> - <ItemGroup> - <Content Include="Static\css\a.css"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="Static\css\app.d545ec97.css"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="Static\favicon.ico"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="Static\index.html"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="Static\js\a.js"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="Static\js\app.829e775c.js"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="Static\js\chunk-vendors.3e768dfe.js"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="Static\W.html"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project> \ No newline at end of file diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" index a87884a..1fe7d19 100644 --- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" @@ -1,4 +1,5 @@ -锘縰sing Newtonsoft.Json; +#region [鑷畾涔夌被-VS][20250623083459471][AutoThread] +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.Concurrent; @@ -569,7 +570,7 @@ mes += tag.RGV.ReadTask2No + "鎵ц涓�.."; LogHelper.Info($"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�"); System.Threading.Thread.Sleep(3000); - return; + return; } var thisOver = 0; TaskEntity task1 = null; @@ -1367,3 +1368,5 @@ } } + +#endregion [鑷畾涔夌被-VS][20250623083459471][AutoThread] \ No newline at end of file diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/ViewModel.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/ViewModel.cs" index 1e0dcbc..4a728c5 100644 --- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/ViewModel.cs" +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/ViewModel.cs" @@ -28,7 +28,6 @@ using GZ.DB.Repository.OIDATABASE; using GZ.DB.IRepository.OIDATABASE; using GZ.DB.Entity.OIDATABASE; -using GZ.Modular.Redis; namespace GZ.Projects.AuxAllWCS { public partial class ViewModel : System.ComponentModel.INotifyPropertyChanged @@ -237,9 +236,7 @@ //string V = inde ? "R05" : "R06"; //Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "true", device2.deviceName + "Queue"); string V2 = inde ? "R10_LAST" : "R11_LAST"; - //Conn.榛樿Redis.SetValue(device2.deviceName + "." + V2, "true", device2.deviceName + "Queue"); - - RedisHelper.Add(device2.deviceName + "." + V2, "true", out string msg1); + Conn.榛樿Redis.SetValue(device2.deviceName + "." + V2, "true", device2.deviceName + "Queue"); TcpServer.TrayIps.Remove(device2.deviceNo[inde ? 0 : 1]); } } diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\347\225\214\351\235\242\344\272\213\344\273\266.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\347\225\214\351\235\242\344\272\213\344\273\266.cs" index dcd8065..d505f02 100644 --- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\347\225\214\351\235\242\344\272\213\344\273\266.cs" +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\347\225\214\351\235\242\344\272\213\344\273\266.cs" @@ -28,9 +28,6 @@ using GZ.DB.Repository.OIDATABASE; using GZ.DB.IRepository.OIDATABASE; using GZ.DB.Entity.OIDATABASE; -using GZ.Modular.Redis; -using System.Security.Cryptography; -using System.Windows.Interop; namespace GZ.Projects.AuxAllWCS { /// <summary> @@ -80,29 +77,9 @@ try { #region [鑴氭湰][20250323111613779][涓氬姟閫昏緫.鍒濆鍖栭厤缃甝 - //LogHelper.Info("1111 +" + DateTime.Now); - //((Type)typeof(Utils)).GetMethod("ThreadSettingInit").Invoke(new Utils(), null); - //LogHelper.Info("2222 +" + DateTime.Now); - //((Type)typeof(Utils)).GetMethod("ThreadSettingInit").Invoke(new Utils(), new object[] { }); - //LogHelper.Info("3333 +" + DateTime.Now); + Action myDelegate = () => SettingInit(); AutoThread.InvokeMethod(AutoThread.Instance, "ThreadSettingInit", new object[] { tag, myDelegate }); - //LogHelper.Info("4444 +" + DateTime.Now); - //AutoThread.InvokeMethod(AutoThread.Instance, "ThreadSettingInit", null); - //LogHelper.Info("4444 +" + DateTime.Now); - - //if (Tag.Global.SettingsOver == 0) - //{ - // SettingInit(); - // Tag.Global.SettingsOver = 1; - //} - //else if (Settings.deviceInfos.Count == 0) - //{ - // Tag.Global.SettingsOver = 0; - //} - //var _=tag.wxr1.R46_LAST; - //RedisHelper.Add($"缁村笇灏旀姄鑷�.R46_LAST", "true", out string msg); - #endregion [鑴氭湰][20250323111613779][涓氬姟閫昏緫.鍒濆鍖栭厤缃甝 } catch (Exception ex) @@ -123,46 +100,45 @@ try { #region [鑴氭湰][20250323151832119][涓氬姟閫昏緫.Program4] - //Conn.榛樿Redis.SetValue("瑗块棬瀛�.Param3","300","瑗块棬瀛�Queue"); - //return; - if (false) - { - List<string> locs = new List<string>() { "vxr1l", "vx1r", "vxr1c1", "vxr1c2", "vxr2l", "vxr2r", "vxr2c1", "vxr2c2" }; - List<string> sites = new List<string>() { "196365BB283162", "193841BB283149", "198756BB287300", "198767BB286133", "206987BB282931", "204460BB282975", "209405BB287057", "209377BB285899" }; + ////Conn.榛樿Redis.SetValue("瑗块棬瀛�.Param3","300","瑗块棬瀛�Queue"); + ////return; + //if(false){ + // List<string> locs = new List<string>() { "vxr1l", "vx1r", "vxr1c1", "vxr1c2", "vxr2l", "vxr2r", "vxr2c1", "vxr2c2" }; + // List<string> sites = new List<string>() { "196365BB283162", "193841BB283149", "198756BB287300", "198767BB286133", "206987BB282931", "204460BB282975", "209405BB287057", "209377BB285899" }; - LocRepository locservice = new LocRepository(); - for (int i = 0; i < locs.Count; i++) - { - string loccode = locs[i]; - string sitesss = sites[i]; - var loc = locservice.FindEntity(x => x.S_LOC_CODE == loccode); - if (loc == null) - { - locservice.Insert(new LocEntity - { - S_ID = Guid.NewGuid().ToString(), - S_STATE = "缂栬緫", - T_CREATE = DateTime.Now, - T_MODIFY = DateTime.Now, - S_DEEP = "vxr", + // LocRepository locservice = new LocRepository(); + // for (int i = 0; i < locs.Count; i++) + // { + // string loccode = locs[i]; + // string sitesss = sites[i]; + // var loc = locservice.FindEntity(x => x.S_LOC_CODE == loccode); + // if (loc == null) + // { + // locservice.Insert(new LocEntity + // { + // S_ID = Guid.NewGuid().ToString(), + // S_STATE = "缂栬緫", + // T_CREATE = DateTime.Now, + // T_MODIFY = DateTime.Now, + // S_DEEP = "vxr", - S_LOC_CODE = loccode, - S_AGV_SITE = sitesss, + // S_LOC_CODE = loccode, + // S_AGV_SITE = sitesss, - S_LOCK_STATE = "鏃�, - N_ROW = 1, - N_COL = 1, - N_AGV_CODE = 0, - N_AGV_SITE_LAYER = 0, - N_CAPACITY = 1, - N_CURRENT_NUM = 0, - S_TYPE = "", + // S_LOCK_STATE = "鏃�, + // N_ROW = 1, + // N_COL = 1, + // N_AGV_CODE = 0, + // N_AGV_SITE_LAYER = 0, + // N_CAPACITY = 1, + // N_CURRENT_NUM = 0, + // S_TYPE = "", - }); - } - } - // TaskProcess.CreateTask("", locs[6], locs[7], "test", 9, new List<string> { "test" }, 1, 1, 1); - } + // }); + // } + // } + // // TaskProcess.CreateTask("", locs[6], locs[7], "test", 9, new List<string> { "test" }, 1, 1, 1); + // } #endregion [鑴氭湰][20250323151832119][涓氬姟閫昏緫.Program4] } @@ -220,10 +196,8 @@ try { #region [鑴氭湰][20250325083326611][涓氬姟閫昏緫.绗笁鏍囨.鎹风灛鎶撹噦2] - //jsz2鎹风灛鎶撹噦2 AutoThread.InvokeMethod(AutoThread.Instance, "ThreadJS2", new object[] { tag }); - #endregion [鑴氭湰][20250325083326611][涓氬姟閫昏緫.绗笁鏍囨.鎹风灛鎶撹噦2] } catch (Exception ex) @@ -314,6 +288,7 @@ try { #region [鑴氭湰][20250610002047005][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�R] + AutoThread.InvokeMethod(AutoThread.Instance, "Threadwxr1R", new object[] { tag }); #endregion [鑴氭湰][20250610002047005][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�R] } @@ -343,6 +318,7 @@ try { #region [鑴氭湰][20250325083315503][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�L] + AutoThread.InvokeMethod(AutoThread.Instance, "Threadwxr2L", new object[] { tag }); #endregion [鑴氭湰][20250325083315503][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�L] } @@ -372,6 +348,7 @@ try { #region [鑴氭湰][20250610002647095][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�R] + AutoThread.InvokeMethod(AutoThread.Instance, "Threadwxr2R", new object[] { tag }); #endregion [鑴氭湰][20250610002647095][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�R] } @@ -386,7 +363,6 @@ } ExitJudgeStack.TryPop(out int exitJudgeVal); }); - /// <summary> /// 绋嬪簭鐗囨:浠诲姟涓嬪彂 /// 鎻忚堪: @@ -487,6 +463,7 @@ // - 鍏夋爡浜や簰澶勭悊銆傘� Action<HaiKangOrderInfo> myDelegate = (t) => continueTask(t); AutoThread.InvokeMethod(AutoThread.Instance, "ThreadGrats", new object[] { tag, myDelegate }); + // 鍙戦偅绉戜笅鏂欏厜鏍呫� #endregion [鑴氭湰][20250611223832523][涓氬姟閫昏緫.鍏夋爡澶勭悊] } @@ -516,6 +493,7 @@ try { #region [鑴氭湰][20250616094224396][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1020绌烘涓嬬嚎] + //1020 1023 绌烘涓嬬嚎 AutoThread.InvokeMethod(AutoThread.Instance, "ThreadEdown", new object[] { tag }); #endregion [鑴氭湰][20250616094224396][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1020绌烘涓嬬嚎] @@ -575,6 +553,7 @@ try { #region [鑴氭湰][20250616094632985][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.瀹氬瓙婊′笅绾縘 + //瀹氬瓙婊′笅绾� 1008 1016 -> 1026 AutoThread.InvokeMethod(AutoThread.Instance, "ThreadDdown", new object[] { tag }); #endregion [鑴氭湰][20250616094632985][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.瀹氬瓙婊′笅绾縘 @@ -605,6 +584,7 @@ try { #region [鑴氭湰][20250616094511322][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.杞瓙婊′笅绾縘 + //杞瓙婊′笅绾� 1002 1010 - RGV2宸ヤ綅涓嶅彲鍒�1017 涓嶅彲涓嬪彂2宸ヤ綅浠诲姟銆� AutoThread.InvokeMethod(AutoThread.Instance, "Thread0210Down", new object[] { tag }); #endregion [鑴氭湰][20250616094511322][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.杞瓙婊′笅绾縘 @@ -635,6 +615,7 @@ try { #region [鑴氭湰][20250616095605911][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.涓嬫枡浣嶆娴媇 + //涓嬫枡浣嶆娴嬨� 1003 鍒颁綅鏃�鍐�鏍囪瘑淇″彿 骞�缁欐満姊版墜淇″彿銆� AutoThread.InvokeMethod(AutoThread.Instance, "Thread涓嬫枡浣嶆娴�, new object[] { tag }); #endregion [鑴氭湰][20250616095605911][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.涓嬫枡浣嶆娴媇 @@ -664,9 +645,8 @@ if (IsExitApp) { break; } try { - - ////2217 - 1003 #region [鑴氭湰][20250616095709155][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1鍙稦NK鏈烘鎵嬪畬鎴怾 + AutoThread.InvokeMethod(AutoThread.Instance, "ThreadFNK1Over", new object[] { tag }); #endregion [鑴氭湰][20250616095709155][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1鍙稦NK鏈烘鎵嬪畬鎴怾 } @@ -696,6 +676,7 @@ try { #region [鑴氭湰][20250616095733680][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.2鍙稦NK鏈烘鎵嬪畬鎴怾 + AutoThread.InvokeMethod(AutoThread.Instance, "ThreadFNK2Over", new object[] { tag }); #endregion [鑴氭湰][20250616095733680][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.2鍙稦NK鏈烘鎵嬪畬鎴怾 } @@ -785,6 +766,7 @@ try { #region [鑴氭湰][20250617085750712][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1022agv涓婄┖.Program1] + AutoThread.InvokeMethod(AutoThread.Instance, "Thread1022Up", new object[] { tag }); #endregion [鑴氭湰][20250617085750712][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1022agv涓婄┖.Program1] } @@ -814,6 +796,7 @@ try { #region [鑴氭湰][20250617085800942][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1030涓嬫瘝鎵�Program1] + AutoThread.InvokeMethod(AutoThread.Instance, "Thread1030Down", new object[] { tag }); #endregion [鑴氭湰][20250617085800942][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1030涓嬫瘝鎵�Program1] } @@ -843,6 +826,7 @@ try { #region [鑴氭湰][20250617085809982][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.2030杈撻�绾夸笅瀹氬瓙.Program1] + AutoThread.InvokeMethod(AutoThread.Instance, "Thread2030Down", new object[] { tag }); #endregion [鑴氭湰][20250617085809982][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.2030杈撻�绾夸笅瀹氬瓙.Program1] } diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\350\207\252\345\256\232\344\271\211\347\261\273.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\350\207\252\345\256\232\344\271\211\347\261\273.cs" index dc18472..1252671 100644 --- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\350\207\252\345\256\232\344\271\211\347\261\273.cs" +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\350\207\252\345\256\232\344\271\211\347\261\273.cs" @@ -28,7 +28,6 @@ using GZ.DB.Repository.OIDATABASE; using GZ.DB.IRepository.OIDATABASE; using GZ.DB.Entity.OIDATABASE; -using static System.Windows.Forms.VisualStyles.VisualStyleElement; namespace GZ.Projects.AuxAllWCS { public class Settings @@ -563,8 +562,8 @@ #region [鑷畾涔夌被][20250325152141671][TaskProcess] internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = "AGV", int cntrCount = 1, int startLayer = 1, int endLayer = 1) { - LogHelper.Info($"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to}寮�鍒涘缓>"); + LogHelper.Debug($"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to}寮�鍒涘缓>"); var cntrInfo = string.Join(",", cntrs); ILocRepository locc = new LocRepository(); var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from); @@ -605,6 +604,7 @@ }; ITaskRepository taskserice = new TaskRepository(); taskserice.Insert(wmsTask); + if (workMode == "AGV") { fromLoc.S_LOCK_STATE = "鍑哄簱閿�; @@ -613,7 +613,7 @@ locc.Update(endLoc); } - LogHelper.Info($"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to} 鍒涘缓{wmsTask.S_TASK_NO}鎴愬姛"); + LogHelper.Debug($"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to} 鍒涘缓{wmsTask.S_TASK_NO}鎴愬姛"); return true; } catch (Exception ex) @@ -657,12 +657,6 @@ { #region [鑷畾涔夌被][20250417094750211][Utils] - - public void ThreadSettingInit() - { - Console.WriteLine("Utils ThreadSettingInit "); - - } #endregion [鑷畾涔夌被][20250417094750211][Utils] } public class ToWMSMES diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/PlcConfig" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/PlcConfig" index e7d0346..074bf3c 100644 --- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/PlcConfig" +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/PlcConfig" @@ -5901,6 +5901,23 @@ "Reserve1": "", "Reserve2": "", "Reserve3": "" + }, + { + "Id": "20250623084011631", + "Order": 25, + "Name": "R鎵嬪姩1鑷姩2", + "FullName": "RGV.R鎵嬪姩1鑷姩2", + "DataType": "System.UInt16", + "DataValue": "", + "SetValue": "", + "Address": "DB104.2", + "AddrType": "", + "Length": 1, + "Desc": "0-鏃犳晥,1-鎵嬪姩,2-鑱旀満,3-鑴辨満", + "Trigger": false, + "Reserve1": "", + "Reserve2": "", + "Reserve3": "" } ], "GroupList": [], @@ -6769,5 +6786,5 @@ } ], "CreationTime": "2025-02-26 15:31:23", - "LastWriteTime": "2025-06-18 08:31:50" + "LastWriteTime": "2025-06-23 08:50:40" } \ No newline at end of file diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json" index 08fed37..9cf1176 100644 --- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json" +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json" @@ -2,5 +2,5 @@ "ProjectSn": "1", "DeviceList": [], "CreationTime": "2025-02-26 15:31:23", - "LastWriteTime": "2025-06-18 08:31:50" + "LastWriteTime": "2025-06-23 08:51:04" } \ No newline at end of file diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Net/Conn.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Net/Conn.json" index 3449a48..0fa0bd9 100644 --- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Net/Conn.json" +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Net/Conn.json" @@ -340,5 +340,5 @@ } ], "CreationTime": "2025-02-26 15:31:23", - "LastWriteTime": "2025-06-18 08:32:12" + "LastWriteTime": "2025-06-23 08:57:03" } \ No newline at end of file diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" new file mode 100644 index 0000000..1551ace --- /dev/null +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" @@ -0,0 +1,1369 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Collections.Concurrent; +using System.ComponentModel; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using GZ.Modular.Redis; +using GZ.DB.Entity.OIDATABASE; +using GZ.DB.IRepository.OIDATABASE; +using GZ.DB.Repository.OIDATABASE; +using static System.Windows.Forms.VisualStyles.VisualStyleElement; +using System.Windows.Interop; +using static System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox; + +namespace GZ.Projects.AuxAllWCS +{ + public partial class AutoThread + { + + private static AutoThread _instance; + + // 绉佹湁鏋勯�鍑芥暟闃叉澶栭儴瀹炰緥鍖�+ private AutoThread() { } + + public static AutoThread Instance + { + get + { + if (_instance == null) + { + _instance = new AutoThread(); + } + return _instance; + } + } + + // 绾跨▼瀹夊叏鐨勫鎵樼紦瀛�+ private static readonly ConcurrentDictionary<string, Delegate> _methodCache = new ConcurrentDictionary<string, Delegate>(); + + // 鏂规硶鎵ц鍣�+ public static object InvokeMethod(object instance, string methodName, params object[] args) + { + var cacheKey = $"{instance.GetType().FullName}_{methodName}"; + + if (!_methodCache.TryGetValue(cacheKey, out var methodDelegate)) + { + // 鑾峰彇鏂规硶淇℃伅 + var methodInfo = instance.GetType().GetMethod( + methodName, + BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); + + if (methodInfo == null) + throw new MissingMethodException($"Method {methodName} not found"); + + // 鍒涘缓濮旀墭骞剁紦瀛�+ methodDelegate = Delegate.CreateDelegate( + GetDelegateType(methodInfo), + instance, + methodInfo); + + _methodCache.TryAdd(cacheKey, methodDelegate); + } + + // 鎵ц濮旀墭 + return methodDelegate.DynamicInvoke(args); + } + + // 鏍规嵁鏂规硶绛惧悕鐢熸垚瀵瑰簲鐨勫鎵樼被鍨�+ private static Type GetDelegateType(MethodInfo methodInfo) + { + var parameterTypes = methodInfo.GetParameters() + .Select(p => p.ParameterType) + .ToList(); + + if (methodInfo.ReturnType == typeof(void)) + { + return System.Linq.Expressions.Expression.GetActionType(parameterTypes.ToArray()); + } + else + { + parameterTypes.Add(methodInfo.ReturnType); + return System.Linq.Expressions.Expression.GetFuncType(parameterTypes.ToArray()); + } + } + + /// <summary> + /// 閰嶇疆鍒濆鍖栥� + /// </summary> + /// <param name="tag"></param> + /// <param name="action"></param> + public void ThreadSettingInit(Tag tag, Action action) + { + Console.WriteLine("鍒濆鍖栭厤缃�绾跨▼ run " + tag.Global.SettingsOver); + if (tag.Global.SettingsOver == 0) + { + action?.Invoke(); + tag.Global.SettingsOver = 1; + } + else if (Settings.deviceInfos.Count == 0) + { + tag.Global.SettingsOver = 0; + } + } + + /// <summary> + /// 鎹烽『1 淇″彿澶勭悊 + /// </summary> + /// <param name="tag"></param> + public void ThreadJS1(Tag tag) + { + Console.WriteLine($"ThreadJS1 鎹烽『1 淇″彿澶勭悊 =================> "); + var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 2 && x.deviceName == "Js鎹烽『1"); + + if (VERX != null) + { + if (tag.Js1.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 1) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 4, + endBit = VERX.location[0] + })); + LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + //tag.Js1.D1212_LAST = 1; + RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "1", out string msg); + } + } + if (tag.Js1.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 0) + { + //tag.Js1.D1212_LAST = 0; + RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "0", out string msg); + } + if (tag.Js1.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 1) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 4, + endBit = VERX.location[1] + })); + LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + //tag.Js1.D1213_LAST = 1; + RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "1", out string msg); + } + } + if (tag.Js1.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 0) + { + //tag.Js1.D1213_LAST = 0; + RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "0", out string msg); + } + } + } + /// <summary> + /// 鎹烽『2 淇″彿澶勭悊 + /// </summary> + /// <param name="tag"></param> + public void ThreadJS2(Tag tag) + { + Console.WriteLine($"ThreadJS2 鎹烽『2 淇″彿澶勭悊 =================> "); + var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 2 && x.deviceName == "Js鎹烽『2"); + + if (VERX != null) + { + if (tag.Js2.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 1) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 4, + endBit = VERX.location[0] + })); + LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + //tag.Js2.D1212_LAST = 1; + + RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "1", out string msg); + } + } + if (tag.Js2.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 0) + { + //tag.Js2.D1212_LAST = 0; + + RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "0", out string msg); + } + if (tag.Js2.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 3) == 1) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 4, + endBit = VERX.location[1] + })); + LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + //tag.Js2.D1213_LAST = 1; + + RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "1", out string msg); + } + } + if (tag.Js2.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1213, 2) == 0) + { + //tag.Js2.D1213_LAST = 0; + + RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "0", out string msg); + } + } + } + /// <summary> + /// 缁村笇灏� 宸�+ /// </summary> + /// <param name="tag"></param> + public void Threadwxr1L(Tag tag) + { + Console.WriteLine($"Threadwxr1L 缁村笇灏� 宸�=================> "); + var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("1")); + + if (VERX != null) + { + if (tag.wxr1.R44 && !tag.wxr1.R44_LAST && tag.wxr1.R10) + { + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode)) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 1, + cntrCode = traycode, + startBit = VERX.location[0], + endBit = "" + })); + LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + tag.wxr1.R44_LAST = true; + } + } + else + { + TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); + } + } + else + { + //TaskRepository ts = new TaskRepository(); + if (tag.wxr1.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘� + { + if (tag.wxr1.R10) + { + tag.wxr1.R10_LAST = false; + } + else + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode)) + { + //涓婃姤鏍¢獙銆�+ ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson); + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new + { + sceneType = 1, + cntrCode = traycode, + })); + if (str.Contains("true")) + { + //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue"); + tag.wxr1.R10 = true; + tag.wxr1.R44_LAST = false; + } + else + { + //鎶ヨ銆�+ } + } + else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); } + } + } + } + } + + /// <summary> + /// 缁村笇灏� 鍙�+ /// </summary> + /// <param name="tag"></param> + public void Threadwxr1R(Tag tag) + { + Console.WriteLine($"Threadwxr1R 缁村笇灏� 鍙�=================> "); + var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("1")); + + if (VERX != null) + { + if (tag.wxr1.R46 && !tag.wxr1.R46_LAST && tag.wxr1.R11) + { + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode)) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 1, + cntrCode = traycode, + startBit = VERX.location[1], + endBit = "" + })); + LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + tag.wxr1.R46_LAST = true; + } + } + else + { + TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); + } + } + else + { + if (tag.wxr1.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘� + { + if (tag.wxr1.R11) + { + tag.wxr1.R11_LAST = false; + } + else + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode)) + { + //涓婃姤鏍¢獙銆�+ ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson); + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new + { + sceneType = 1, + cntrCode = traycode, + })); + if (str.Contains("true")) + { + //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue"); + tag.wxr1.R11 = true; + tag.wxr1.R46_LAST = false; + } + else + { + //鎶ヨ銆�+ } + } + else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); } + } + } + } + } + + /// <summary> + /// 缁村笇灏� 宸�+ /// </summary> + /// <param name="tag"></param> + public void Threadwxr2L(Tag tag) + { + Console.WriteLine($"Threadwxr2L 缁村笇灏� 宸�=================> "); + var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("2")); + + if (VERX != null) + { + if (tag.wxr2.R44 && !tag.wxr2.R44_LAST && tag.wxr2.R10) + { + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode)) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 1, + cntrCode = traycode, + startBit = VERX.location[0], + endBit = "" + })); + LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + tag.wxr2.R44_LAST = true; + } + } + else + { + TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); + } + } + else + { + if (tag.wxr2.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘� + { + if (tag.wxr2.R10) + { + tag.wxr2.R10_LAST = false; + } + else + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode)) + { + //涓婃姤鏍¢獙銆�+ ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson); + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new + { + sceneType = 1, + cntrCode = traycode, + })); + if (str.Contains("true")) + { + //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue"); + tag.wxr2.R10 = true; + tag.wxr2.R44_LAST = false; + } + else + { + //鎶ヨ銆�+ } + } + else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); } + } + } + } + } + + /// <summary> + /// 缁村笇灏� 鍙�+ /// </summary> + /// <param name="tag"></param> + public void Threadwxr2R(Tag tag) + { + Console.WriteLine($"Threadwxr2R 缁村笇灏� 鍙�=================> "); + + var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("2")); + + if (VERX != null) + { + if (tag.wxr2.R46 && !tag.wxr2.R46_LAST && tag.wxr2.R11) + { + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode)) + { + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new + { + requestType = 1, + cntrCode = traycode, + startBit = VERX.location[1], + endBit = "" + })); + LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}"); + if (str.Contains("true")) + { + tag.wxr2.R46_LAST = true; + } + } + else + { + TcpServer.TcpServerSend(VERX.deviceNo[2], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); + } + } + else + { + if (tag.wxr2.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘� + { + if (tag.wxr2.R11) + { + tag.wxr2.R11_LAST = false; + } + else + if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode)) + { + //涓婃姤鏍¢獙銆�+ ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson); + var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new + { + sceneType = 1, + cntrCode = traycode, + })); + if (str.Contains("true")) + { + //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue"); + tag.wxr2.R11 = true; + tag.wxr2.R46_LAST = false; + } + else + { + //鎶ヨ銆�+ } + } + else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); } + } + } + } + } + + + public void ThreadTaskRun(Tag tag, Func<TaskEntity, bool> action) + { + Console.WriteLine($"ThreadTaskRun 浠诲姟涓嬪彂 =================> "); + LogHelper.Info("ThreadTaskRun 浠诲姟涓嬪彂"); + + ITaskRepository taskservice = new TaskRepository(); + try + { + LogHelper.Info("浠诲姟涓嬪彂 ARG 浠诲姟 杩涘叆"); + #region AGV浠诲姟涓嬪彂銆�+ + var tklist = taskservice.FindList(x => x.S_B_STATE == "鏈墽琛� && x.S_WORK_MODE == "AGV"); + if (tklist.Any()) + foreach (var tk in tklist.GroupBy(item => + { + var ticks = item.T_CREATE.Ticks; + return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute)); + }).OrderBy(x => x.Key)) + { + var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList(); + foreach (var t in ts) + { + var b = false; + b = action?.Invoke(t) ?? false; //new ViewModel().RunTask(t); + + if (b) + { + t.S_B_STATE = "宸叉帹閫�; + taskservice.Update(t); + } + } + break; + } + //foreach (var tk in tklist.GroupBy(item => + //{ + // var ticks = item.T_CREATE.Ticks; + // return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute)); + //}).OrderBy(x => x.Key)) + //if (tklist.Any()) + //{ + + #endregion + } + catch (Exception ex) + { + LogHelper.Info(ex.Message + ex.StackTrace); + } + try + { + #region Rgv + + LogHelper.Info($"鏌ョ湅RGV 鐢甸噺锛氥�{tag.RGV.R褰撳墠鐢甸噺}銆�鍏呯數鐘舵�锛氥�{tag.RGV.R鍏呯數鐘舵�}銆�鏁呴殰浠g爜锛氥�{tag.RGV.RgvrunError}銆�); + + if (tag.RGV.taskend == 125) + { + System.Threading.Thread.Sleep(3000); + return; + } + LogHelper.Info("浠诲姟涓嬪彂 Rgv 浠诲姟 杩涘叆"); + + var task1Isrun = false; + if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1) + { + task1Isrun = true; + //if (tag.RGV.bit1taskOver_LAST == 1) + // RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); + } + var task2Isrun = false; + if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1) + { + task2Isrun = true; + //if (tag.RGV.bit2taskOver_LAST == 1) + // RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); + } + if (task1Isrun || task2Isrun) + { + string mes = ""; + if (task1Isrun) + mes += tag.RGV.ReadTask1No + "鎵ц涓�.."; + if (task2Isrun) + mes += tag.RGV.ReadTask2No + "鎵ц涓�.."; + LogHelper.Info($"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�"); + System.Threading.Thread.Sleep(3000); + return; + } + var thisOver = 0; + TaskEntity task1 = null; + TaskEntity task2 = null; + + LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅浠诲姟銆�); + if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1) + { + var taskno = tag.RGV.ReadTask1No; + LogHelper.Info($"RGV 1宸ヤ綅浠诲姟{tag.RGV.ReadTask1No}"); + string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0')); + task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno); + + LogHelper.Info($"RGV 1宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task1)}.bit1taskOver_LAST锛歿tag.RGV.bit1taskOver_LAST}"); + if (tag.RGV.bit1taskOver_LAST == 0 && task1 != null) + { + if (task1.S_B_STATE != "瀹屾垚") + { + thisOver = 1; + if (task1.S_B_STATE == "鍙栬揣瀹屾垚") + { + task1.S_B_STATE = "瀹屾垚"; + tag.RGV.ReadTask1No = 0; + } + else + { + task1.S_B_STATE = "鍙栬揣瀹屾垚"; + } + tag.RGV.bit1taskOver = 0; + LogHelper.Info($"RGV 1宸ヤ綅浠诲姟{task1.S_TASK_NO} 鐘舵�鍒囨崲涓簕task1.S_B_STATE}"); + //tag.RGV.bit1taskOver_LAST = 1; + RedisHelper.Add($"RGV.bit1taskOver_LAST", "1", out string msg); + LogHelper.Info($"RGV 1宸ヤ綅浠诲姟鍐欏鐞�); + taskservice.Update(task1); + LogHelper.Info($"RGV 1宸ヤ綅浠诲姟鏇存柊銆�); + } + else + { + LogHelper.Info("RGV1宸ヤ綅浠诲姟宸茬粡瀹屾垚銆�); + } + } + } + else if (tag.RGV.ReadTask1No == 0) + { + LogHelper.Info($"RGV 1宸ヤ綅娌℃湁浠诲姟銆�); + } + + LogHelper.Info($"鏌ョ湅RGV 2宸ヤ綅浠诲姟銆�); + if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver == 1) + { + var taskno = tag.RGV.ReadTask2No; + LogHelper.Info($"RGV 2宸ヤ綅浠诲姟{tag.RGV.ReadTask2No}"); + string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0')); + task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno); + + LogHelper.Info($"RGV2宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task2)}.bit2taskOver_LAST锛歿tag.RGV.bit2taskOver_LAST}"); + if (tag.RGV.bit2taskOver_LAST == 0 && task2 != null) + { + if (task2.S_B_STATE != "瀹屾垚") + { + thisOver = 2; + if (task2.S_B_STATE == "鍙栬揣瀹屾垚") + { + task2.S_B_STATE = "瀹屾垚"; + tag.RGV.ReadTask2No = 0; + } + else + { + task2.S_B_STATE = "鍙栬揣瀹屾垚"; + } + tag.RGV.bit2taskOver = 0; + LogHelper.Info($"RGV 2宸ヤ綅浠诲姟{task2.S_TASK_NO} 鐘舵�鍒囨崲涓簕task2.S_B_STATE}"); + RedisHelper.Add($"RGV.bit2taskOver_LAST", "1", out string msg); + LogHelper.Info($"RGV 2宸ヤ綅浠诲姟鍐欏鐞�); + taskservice.Update(task2); + LogHelper.Info($"RGV 2宸ヤ綅浠诲姟鏇存柊銆�); + } + else + { + LogHelper.Info("RGV2宸ヤ綅浠诲姟宸茬粡瀹屾垚銆�); + } + } + } + else if (tag.RGV.ReadTask2No == 0) + { + LogHelper.Info($"RGV 2宸ヤ綅娌℃湁浠诲姟銆�); + } + + + + //if (thisOver > 0) + //{ + // var v2 = RedisHelper.Get<WriteGroupEntity>("RGVQueue", out string rev); + // if (v2 != null) + // { + // LogHelper.Info($"RGVQueue 璇诲埌缁撴灉-{JsonConvert.SerializeObject(v2)} \n 涓嬪彂鍓嶈繘琛屾竻闄ゃ�"); + // var b = RedisHelper.Remove("RGVQueue", out rev); + // } + //} + + ///1 鏈夎揣 灏� 鍙栥� 1 娌¤揣 灏� 鍗歌揣锛�閮芥湁璐� 灏�鍗歌揣銆�閮芥病璐�灏�鍗�+ var tklist = taskservice.FindList(x => x.S_B_STATE == "鏈墽琛� && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList(); + if (task1 != null && task1.S_B_STATE != "瀹屾垚") //1鏈変换鍔�+ { + if (task2 != null && task2.S_B_STATE != "瀹屾垚")// 1 鏈変换鍔� 2 鏈変换鍔°� + { + LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 涔熸湁浠诲姟{task2.S_TASK_NO}銆�寮�宸ヤ綅1 鍗歌揣銆�); + tag.RGV.workMod = 1; + tag.RGV.taskmod = 2; + tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4)); + tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC); + System.Threading.Thread.Sleep(750); + //RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); + //tag.RGV.taskend = 125; + //Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue"); + + LogHelper.Info($"{task1.S_TASK_NO}> bit1taskOver_LAST 鍐�0"); + RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); + LogHelper.Info($"{task1.S_TASK_NO}> end 鍐�125"); + Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + } + else //1鏈変换鍔� 2 娌′换鍔°� + { + + LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔°�"); + + var leftSide = new List<string> { "1023", "1020" }; + var RightSide = new List<string> { "1002", "1008", "1010", "1016" }; + bool creT2 = false; + + // 2鍙�浼樺厛缁�1020 1008 1016 + var t2 = tklist.OrderBy(x => x.T_CREATE).ToList().Find(x => x.S_START_LOC == "1020" || x.S_START_LOC == "1008" || x.S_START_LOC == "1016"); + if (t2 != null) + { + LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵�020 1008 1016鍙栬揣浠诲姟{t2.S_TASK_NO}銆�); + tag.RGV.workMod = 2; + tag.RGV.taskmod = 1; + tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4)); + tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC); + t2.S_B_STATE = "宸叉帹閫�; + taskservice.Update(t2); + creT2 = true; + System.Threading.Thread.Sleep(750); + LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0"); + RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); + LogHelper.Info($"{t2.S_TASK_NO}> end 鍐�125"); + Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + } + ////2 濡傛灉鏈夊悓渚у彇璐т换鍔°�灏卞彇銆傛病鏈�+ //else if (leftSide.Contains(task1.S_START_LOC)) + //{ + // leftSide.Remove(task1.S_START_LOC); + // var lsde = leftSide.FirstOrDefault(); + // t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != "1017"); + // if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆�+ // { + // LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔t2.S_TASK_NO}銆�); + // tag.RGV.workMod = 2; + // tag.RGV.taskmod = 1; + // tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4)); + // tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC); + // t2.S_B_STATE = "宸叉帹閫�; + // taskservice.Update(t2); + // creT2 = true; + // System.Threading.Thread.Sleep(750); + // LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0"); + // RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); + // LogHelper.Info($"{t2.S_TASK_NO}> end 鍐�125"); + // Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + // } + //} + //else if (RightSide.Contains(task1.S_START_LOC)) + //{ + // RightSide.Remove(task1.S_START_LOC); + // t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != "1017"); + // if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆�+ // { + // LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚�1002,1010 鍙栬揣浠诲姟{t2.S_TASK_NO}銆�); + // tag.RGV.workMod = 2; + // tag.RGV.taskmod = 1; + // tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4)); + // tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC); + // t2.S_B_STATE = "宸叉帹閫�; + // taskservice.Update(t2); + // creT2 = true; + // System.Threading.Thread.Sleep(750); + // LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�125"); + // RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); + // LogHelper.Info($"{t2.S_TASK_NO}> end 鍐�125"); + // Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + // } + //} + else //1 鐩存帴鍗歌揣銆� + //if (!creT2) + { + LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 娌℃湁鍚屼晶鍙栬揣浠诲姟 1宸ヤ綅鍗歌揣銆�); + tag.RGV.workMod = 1; + tag.RGV.taskmod = 2; + tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4)); + tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC); + System.Threading.Thread.Sleep(750); + LogHelper.Info($"{task1.S_TASK_NO}> bit1taskOver_LAST 鍐�0"); + RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); + LogHelper.Info($"{task1.S_TASK_NO}> taskend 鍐�0"); + Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + } + } + } + else + { + if (task2 != null && task2.S_B_STATE != "瀹屾垚")// 1 娌′换鍔� 2 鏈変换鍔°� + { + LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 鏈変换鍔task2.S_TASK_NO}銆傚伐浣�鍗歌揣銆傘�"); + //2 鍗歌揣銆�+ tag.RGV.workMod = 2; + tag.RGV.taskmod = 2; + tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4)); + tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC); + System.Threading.Thread.Sleep(750); + LogHelper.Info($"{task2.S_TASK_NO}> bit2taskOver_LAST 鍐�0"); + RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); + //tag.RGV.taskend = 125; + LogHelper.Info($"{task2.S_TASK_NO}> taskend 鍐�25"); + Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + } + else if (tklist.Any()) //1mei 浠诲姟 2 娌′换鍔°� + { + LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 涔熸病浠诲姟銆備紭鍏�宸ヤ綅缁堢偣1017浠诲姟銆傘�"); + //銆佷笅 1017浠诲姟 缁�鍙峰伐浣嶃� + //var lss = tklist.Take(2).ToList(); + var e1017first = tklist.Find(x => x.S_START_LOC == "1002" || x.S_START_LOC == "1010" || x.S_START_LOC == "1023"); + //if (e1017first != null) + //{ + // e1017first = tklist.FirstOrDefault(); + //} + if (e1017first != null) + { + LogHelper.Info($"鏌ョ湅RGV1 浠诲姟宸ヤ綅2 娌′换鍔°� 1002 1010 1023鍙栬揣浠诲姟{e1017first.S_TASK_NO}銆�); + tag.RGV.workMod = 1; + tag.RGV.taskmod = 1; + uint tno = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(4)); + LogHelper.Info($"{e1017first.S_TASK_NO}> 杞崲鍚庝换鍔″彿{tno} 寮�鍐欏叆銆�); + tag.RGV.taskno1 = tno; + LogHelper.Info($"{e1017first.S_TASK_NO}>寮�鍐欏叆 task1do>>{e1017first.S_START_LOC}銆�); + tag.RGV.task1do = Convert.ToUInt16(e1017first.S_START_LOC); + LogHelper.Info($"{e1017first.S_TASK_NO}> 鏇存柊浠诲姟銆�); + e1017first.S_B_STATE = "宸叉帹閫�; + taskservice.Update(e1017first); + System.Threading.Thread.Sleep(750); + LogHelper.Info($"{e1017first.S_TASK_NO}> bit1taskOver_LAST 鍐�"); + RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg); + LogHelper.Info($"{e1017first.S_TASK_NO}> taskend 鍐�25"); + //tag.RGV.taskend=125 + Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + } + else + { + var t2 = tklist.OrderBy(x => x.T_CREATE).ToList().Find(x => x.S_START_LOC == "1020" || x.S_START_LOC == "1008" || x.S_START_LOC == "1016"); + if (tklist != null) + { + LogHelper.Info($"鏌ョ湅RGV1 娌′换鍔″伐浣� 娌′换鍔°� 鎵�020 1008 1016鍙栬揣浠诲姟{t2.S_TASK_NO}銆�); + tag.RGV.workMod = 2; + tag.RGV.taskmod = 1; + tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4)); + tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC); + t2.S_B_STATE = "宸叉帹閫�; + taskservice.Update(t2); + System.Threading.Thread.Sleep(750); + LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0"); + RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg); + LogHelper.Info($"{t2.S_TASK_NO}> end 鍐�125"); + Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false); + } + } + } + } + LogHelper.Info($"rgv 澶勭悊瀹屾垚銆倀askend 125"); + #endregion + } + catch (Exception ex) + { + LogHelper.Info(ex.Message + ex.StackTrace); + } + } + + + public void ThreadGrats(Tag tag, Action<HaiKangOrderInfo> continueTask) + { + Console.WriteLine($"ThreadGrats 鍏夋爡澶勭悊 =================> "); + var taskCOdes = new List<string> { "Sarrive", "Srelease", "Earrive", "Erelease" }; + TaskActRepository taskActRepository = new TaskActRepository(); + TaskRepository taskRepository = new TaskRepository(); + var requires = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0); + foreach (var item in requires) + { + var tin = taskCOdes.IndexOf(item.S_ACTION_CODE); + if (tin == -1) + { + item.N_CREATEMETHOD = -1; + taskActRepository.Update(item); + continue; + } + //var task = taskRepository.FindEntity(x => x.S_TASK_NO == item.S_TASK_NO); + string loc = ""; + if (tin < 2) + { + loc = item.S_START_LOC; + } + else + { + loc = item.S_END_LOC; + } + if (loc == null) continue; else loc = loc.Trim(); + bool goin = tin % 2 == 0; + bool continuuuuu = false; + var dev = Settings.deviceInfos.Find(x => x.location.Contains(loc)); + if (dev != null) + { + var V = dev.location.ToList().FindIndex(x => x == loc) == 0; + //杞﹁蛋浜� 寮�厜鏍�+ if (!goin) + { + if (dev.deviceType == 1) + { + LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue")); + Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue"); + + } + else if (dev.deviceType == 2) + { + LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue")); + Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue"); + } + + item.N_CREATEMETHOD = 1; + taskActRepository.Update(item); + } + //杞﹁杩涘叆浜や簰銆�+ else + { + if (dev.deviceType == 1) + { + var tf = Conn.榛樿Redis.GetValue(dev.deviceName + "." + (V ? "R50" : "R52"));//璇诲叧闂姸鎬�+ if (tf?.ToLower() == "true") + { + LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆�宸茬粡鍏抽棴锛�); + continuuuuu = true; + } + else + { + LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "R01" : "R03"), "true", dev.deviceName + "Queue")); + Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "R01" : "R03"), "true", dev.deviceName + "Queue"); + } + + } + else if (dev.deviceType == 2) + { + var tf = Conn.榛樿Redis.GetValue(dev.deviceName + ".D1202"); + int numm = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf); + if (TcpServer.GetBitdata(numm, (V ? 0 : 1)) == 1) + { + LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆�宸茬粡鍏抽棴锛�); + continuuuuu = true; + } + else + { + LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "D1220" : "D1221"), dev.deviceName + "Queue")); + Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1220" : "D1221"), "1", dev.deviceName + "Queue"); + } + } + + } + + } + if (continuuuuu) + { + LogHelper.Info($"{item.S_TASK_NO}{item.S_ACTION_CODE} 杞﹁締鍙戦�缁х画浠诲姟锛�); + continueTask?.Invoke(new HaiKangOrderInfo + { + reqCode = item.S_ID.Replace("-", ""), + taskCode = item.S_TASK_NO + }); + item.N_CREATEMETHOD = 1; + taskActRepository.Update(item); + } + } + System.Threading.Thread.Sleep(3000); + //閲嶇疆淇″彿 + foreach (var dev in Settings.deviceInfos.FindAll(x => x.deviceType == 2)) + { + var tf = Conn.榛樿Redis.GetValue(dev.deviceName + ".D1202"); + int numm = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf); + if (TcpServer.GetBitdata(numm, 0) == 0) + { + Conn.榛樿Redis.SetValue(dev.deviceName + ".D1220", "0", dev.deviceName + "Queue"); + Conn.榛樿Redis.SetValue(dev.deviceName + ".D1222", "0", dev.deviceName + "Queue"); + } + else if (TcpServer.GetBitdata(numm, 1) == 0) + { + Conn.榛樿Redis.SetValue(dev.deviceName + ".D1221", "0", dev.deviceName + "Queue"); + Conn.榛樿Redis.SetValue(dev.deviceName + ".D1223", "0", dev.deviceName + "Queue"); + } + } + + } + /// <summary> + /// 1020 1023绌烘涓嬬嚎 + /// </summary> + /// <param name="tag"></param> + public void ThreadEdown(Tag tag) + { + Console.WriteLine($"ThreadEdown 20 23 = 绌轰笅妫�祴 =================> "); + TaskRepository taskRepository = new TaskRepository(); + foreach (var Bssx in new string[] { "1020", "1023" }) + { + var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16)); + var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16)); + var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.R鎵樼洏鐮�), typeof(System.String)); + Console.WriteLine($"{Bssx} 绌轰笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇 "); + if (RtaskState == 3 && RtaskState_LAST == 0) + { + var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷"); + string msg = ""; + if (task != null) + { + Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + continue; + } + try + { + var listtep = new List<string>(); + if (Bssx == "1020") + { + if (tag.SF涓嬫枡浣�RArrive1003 == 1) + { + listtep = new List<string> { "1012", "1004" }; + } + else + { + listtep = new List<string> { "1004", "1012" }; + } + } + else + { + if (tag.SF涓嬫枡浣�RArrive1005 == 1) + { + listtep = new List<string> { "1014", "1006" }; + } + else + { + listtep = new List<string> { "1006", "1014" }; + } + } + + foreach (var item in listtep)//(Bssx == "1020" ? new string[] { "1004", "1012" } : new string[] { "1006", "1014" })) + { + var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16)); + var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16)); + if (R5 == 5 && R5绌洪棽_LAST == 0 && task == null) + { + task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷"); + msg = ""; + if (task != null) + { + Console.WriteLine($" {item}鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + LogHelper.Info($" {item}鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + continue; + } + + var b = TaskProcess.CreateTask("", Bssx, item, "绌轰笂RGV", 5, new List<string> { R鎵樼洏鐮�}, "RGV"); + if (b) + { + LogHelper.Debug($"杈撻�绾縍GV绌烘墭浠诲姟 from:{Bssx}>to {item}寮�鍒涘缓鎴愬姛"); + RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg); + //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue"); + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out msg); + //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue"); + break; + } + } + else if (R5 != 5 && R5绌洪棽_LAST == 1) + { + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out msg); + //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "0", $"S{item}ReadQueue"); + } + } + System.Threading.Thread.Sleep(1000); + } + catch (Exception ex) + { + LogHelper.Error(ex.Message, ex); + Console.WriteLine(ex.Message + ex.StackTrace); + } + } + else if (RtaskState != 3 && RtaskState_LAST == 1) + { + RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg); + //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "0", $"S{Bssx}ReadQueue"); + } + System.Threading.Thread.Sleep(2000); + } + + foreach (var item in new string[] { "1004", "1012", "1006", "1014", "1026", "1017" }) + { + var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16)); + var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16)); + if (R5 != 5 && R5绌洪棽_LAST == 1) + { + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg); + //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "0", $"S{item}ReadQueue"); + } + } + } + + public void ThreadDdown(Tag tag) + { + Console.WriteLine($"ThreadDdown 08 10 ==================> 1026"); + TaskRepository taskRepository = new TaskRepository(); + foreach (var Bssx in new string[] { "1008", "1016" }) + { + var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16)); + var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16)); + var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.R鎵樼洏鐮�), typeof(System.String)); + Console.WriteLine($"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇"); + if (RtaskState == 3 && RtaskState_LAST == 0) + { + var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷"); + string msg = ""; + if (task != null) + { + Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + continue; + } + + var item = "1026"; + var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16)); + var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16)); + if (R5 == 5 && R5绌洪棽_LAST == 0) + { + task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷"); + msg = ""; + if (task != null) + { + Console.WriteLine($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + LogHelper.Info($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + continue; + } + var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1026", 5, new List<string> { R鎵樼洏鐮�}, "RGV"); + if (b) + { + RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg); + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg2); + //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue"); + //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue"); + break; + } + } + else if (R5 != 5 && R5绌洪棽_LAST == 1) + { + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg2); + } + } + else if (RtaskState != 3 && RtaskState_LAST == 1) + { + RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg); + //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "0", $"S{Bssx}ReadQueue"); + } + System.Threading.Thread.Sleep(2000); + } + } + + public void Thread0210Down(Tag tag) + { + Console.WriteLine($"Thread0210Down ==================>"); + TaskRepository taskRepository = new TaskRepository(); + foreach (var Bssx in new string[] { "1002", "1010" }) + { + var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16)); + var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16)); + var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.R鎵樼洏鐮�), typeof(System.String)); + Console.WriteLine($"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇"); + if (RtaskState == 3 && RtaskState_LAST == 0) + { + var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷"); + string msg = ""; + if (task != null) + { + Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + continue; + } + var item = "1017"; + var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16)); + var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16)); + if (R5 == 5 && R5绌洪棽_LAST == 0) + { + task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷"); + msg = ""; + if (task != null) + { + Console.WriteLine($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + LogHelper.Info($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟"); + continue; + } + var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1017", 5, new List<string> { R鎵樼洏鐮�}, "RGV"); + if (b) + { + RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg); + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg1); + //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue"); + //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue"); + break; + } + } + else if (R5 != 5 && R5绌洪棽_LAST == 1) + { + RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg1); + } + } + else if (RtaskState != 3 && RtaskState_LAST == 1) + { + RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg); + } + System.Threading.Thread.Sleep(2000); + } + } + + + public void Thread涓嬫枡浣嶆娴�Tag tag) + { + Console.WriteLine($"Thread涓嬫枡浣嶆娴� =====>"); + foreach (var ssx in new string[] { "1003", "1005", "1011", "1013" }) + { + var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"FNK1003051113.RArrive{ssx}"), typeof(System.UInt16)); + var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"FNK1003051113.RArrive{ssx}_LAST"), typeof(System.UInt16)); + if (RArrive == 1 && RArriveLast == 0) + { + if (ssx == "1005" && tag.SF涓嬫枡浣�WRelease1005 == 0) + { + tag.FNK1.D2215 = 1; + //tag.SF涓嬫枡浣�RArrive1005_LAST = 1; + RedisHelper.Add($"FNK1003051113.RArrive1005_LAST", "1", out string msg); + + //tag.SF涓嬫枡浣�WRelease1005 = 0; + //tag.SF涓嬫枡浣�WSafe0305 = 0; + } + else if (ssx == "1003" && tag.SF涓嬫枡浣�WRelease1003 == 0) + { + tag.FNK1.D2210 = 1; + //tag.SF涓嬫枡浣�RArrive1003_LAST = 1; + + RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "1", out string msg); + + //tag.SF涓嬫枡浣�WRelease1003 = 0; + //tag.SF涓嬫枡浣�WSafe0305 = 0; + } + else if (ssx == "1013" && tag.SF涓嬫枡浣�WRelease1013 == 0) + { + tag.FNK2.D2215 = 1; + //tag.SF涓嬫枡浣�RArrive1013_LAST = 1; + RedisHelper.Add($"FNK1003051113.RArrive1013_LAST", "1", out string msg); + + //tag.SF涓嬫枡浣�WRelease1013 = 0; + //tag.SF涓嬫枡浣�WSafe1113 = 0; + } + else if (ssx == "1011" && tag.SF涓嬫枡浣�WRelease1011 == 0) + { + tag.FNK2.D2210 = 1; + //tag.SF涓嬫枡浣�RArrive1011_LAST = 1; + RedisHelper.Add($"FNK1003051113.RArrive1011_LAST", "1", out string msg); + + //tag.SF涓嬫枡浣�WRelease1011 = 0; + //tag.SF涓嬫枡浣�WSafe1113 = 0; + } + } + else if (RArrive == 0 && RArriveLast == 1) + { + RedisHelper.Add($"FNK1003051113.RArrive{ssx}_LAST", "0", out string msg); + //Conn.榛樿Redis.SetValue($"FNK1003051113.RArrive{ssx}_LAST", "0", $"FNK1003051113Queue"); + } + } + } + + public void ThreadFNK1Over(Tag tag) + { + Console.WriteLine($"ThreadFNK1Over =====>"); + if (tag.FNK1.D2217 == 1 && tag.FNK1.D2217_LAST == 0) + { + tag.FNK1.D2215 = 0; + //tag.FNK1.D2212_LAST = 1; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "1", out string msg); + + tag.SF涓嬫枡浣�WRelease1005 = 1; + tag.SF涓嬫枡浣�WSafe0305 = 1; + System.Threading.Thread.Sleep(1000); + RedisHelper.Add($"FNK1003051113.RArrive1005_LAST", "0", out msg); + } + if (tag.FNK1.D2216 == 1) + tag.FNK1.D2215 = 0; + else if (tag.FNK1.D2217 == 0 && tag.FNK1.D2217_LAST == 1) + //tag.FNK1.D2217_LAST = 0; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "0", out string msg); + + if (tag.FNK1.D2212 == 1 && tag.FNK1.D2212_LAST == 0) + { + tag.FNK1.D2210 = 0; + //tag.FNK1.D2217_LAST = 1; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "1", out string msg); + tag.SF涓嬫枡浣�WRelease1003 = 1; + tag.SF涓嬫枡浣�WSafe0305 = 1; + System.Threading.Thread.Sleep(1000); + RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "0", out msg); + } + //else if (tag.FNK1.D2211 == 1) + // tag.FNK1.D2210 = 0; + else if (tag.FNK1.D2212 == 0 && tag.FNK1.D2212_LAST == 1) + { + //tag.FNK1.D2212_LAST = 0; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "0", out string msg); + } + if (tag.FNK1.D2211 == 1) + tag.FNK1.D2210 = 0; + + } + public void ThreadFNK2Over(Tag tag) + { + Console.WriteLine($"ThreadFNK2Over =====>"); + if (tag.FNK2.D2217 == 1 && tag.FNK2.D2217_LAST == 0) + { + tag.FNK2.D2215 = 0; + //tag.FNK2.D2212_LAST = 1; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "1", out string msg); + + tag.SF涓嬫枡浣�WRelease1013 = 1; + tag.SF涓嬫枡浣�WSafe1113 = 1; + System.Threading.Thread.Sleep(1000); + RedisHelper.Add($"FNK1003051113.RArrive1013_LAST", "0", out msg); + } + else if (tag.FNK2.D2217 == 0 && tag.FNK2.D2217_LAST == 1) + //tag.FNK2.D2217_LAST = 0; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "0", out string msg); + + if (tag.FNK2.D2216 == 1) + tag.FNK2.D2215 = 0; + + if (tag.FNK2.D2212 == 1 && tag.FNK2.D2212_LAST == 0) + { + tag.FNK2.D2210 = 0; + //tag.FNK2.D2217_LAST = 1; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "1", out string msg); + + tag.SF涓嬫枡浣�WRelease1011 = 1; + tag.SF涓嬫枡浣�WSafe1113 = 1; + System.Threading.Thread.Sleep(1000); + RedisHelper.Add($"FNK1003051113.RArrive1011_LAST", "0", out msg); + } + else if (tag.FNK2.D2212 == 0 && tag.FNK2.D2212_LAST == 1) + { + //tag.FNK2.D2212_LAST = 0; + RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "0", out string msg); + } + if (tag.FNK2.D2211 == 1) + tag.FNK2.D2210 = 0; + + } + + public void Thread1019Down(Tag tag) + { + Console.WriteLine($"1019浠诲姟鐘舵�锛� =====>"); + Console.WriteLine($"1019浠诲姟鐘舵�锛歿tag.SA1019.RtaskState}- barcode:{tag.SA1019.R鎵樼洏鐮亇- 绌洪棽{tag.SA1019.R5绌洪棽}"); + } + public void Thread1025Up(Tag tag) + { + Console.WriteLine($"SA1025 浠诲姟鐘舵�锛� =====>"); + Console.WriteLine($"SA1025 浠诲姟鐘舵�锛歿tag.SA1025.RtaskState}- 绌洪棽{tag.SA1025.R5绌洪棽}"); + } + public void Thread1022Up(Tag tag) + { + Console.WriteLine($"SA1022 =====>"); + Console.WriteLine($"SA1022 浠诲姟鐘舵�锛歿tag.SA1022.RtaskState}- 绌洪棽{tag.SA1022.R5绌洪棽}"); + } + public void Thread1030Down(Tag tag) + { + Console.WriteLine($"SA1030 浠诲姟鐘舵�锛� =====>"); + Console.WriteLine($"SA1030 浠诲姟鐘舵�锛歿tag.SA1030.RtaskState}- 绌洪棽{tag.SA1030.R5绌洪棽}-->瀵瑰簲缁堢偣2001>绌洪棽5锛歿tag.SA2001.R5绌洪棽}"); + } + public void Thread2030Down(Tag tag) + { + Console.WriteLine($"SA2030 浠诲姟鐘舵�锛� =====>"); + Console.WriteLine($"SA2030 浠诲姟鐘舵�锛歿tag.SA2030.RtaskState}- 绌洪棽{tag.SA2030.R5绌洪棽} - barcode:{tag.SA2030.R鎵樼洏鐮亇"); + } + + + } +} diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\350\207\252\345\256\232\344\271\211\347\261\273.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\350\207\252\345\256\232\344\271\211\347\261\273.cs" index ee13809..b3035c0 100644 --- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\350\207\252\345\256\232\344\271\211\347\261\273.cs" +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\350\207\252\345\256\232\344\271\211\347\261\273.cs" @@ -536,7 +536,7 @@ internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = "AGV", int cntrCount = 1, int startLayer = 1, int endLayer = 1) { - LogHelper.Debug($"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to}寮�鍒涘缓>"); + LogHelper.Info($"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to}寮�鍒涘缓>"); var cntrInfo = string.Join(",", cntrs); ILocRepository locc = new LocRepository(); var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from); @@ -586,7 +586,8 @@ locc.Update(endLoc); } - LogHelper.Debug($"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to} 鍒涘缓{wmsTask.S_TASK_NO}鎴愬姛"); + LogHelper.Info($"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to} 鍒涘缓{wmsTask.S_TASK_NO}鎴愬姛"); + return true; } catch (Exception ex) { diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Custom.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Custom.json" index 47cbbd7..b84ecf3 100644 --- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Custom.json" +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Custom.json" @@ -120,8 +120,8 @@ "Type": "MethodCode", "Level": "Item", "Statement": "public void OperateHKTaskStatus(System.Object param1)", - "EditCode": "HaiKangOrderInfo model = (HaiKangOrderInfo)param1;\r\n if (string.IsNullOrEmpty(model.taskCode))\r\n return;\r\n // 鏌ヨ浠诲姟锛氭牴鎹换鍔″彿\r\n //var wcsTask = WCSHelper.GetTask(model.taskCode);\r\n ITaskRepository MainMissionService = new TaskRepository();\r\n var wcsTask = MainMissionService.FindEntity(x => model.taskCode == x.S_TASK_NO);\r\n if (wcsTask != null)\r\n {\r\n if (!string.IsNullOrWhiteSpace(model.method))\r\n {\r\n ILocRepository locrep = new LocRepository();\r\n var startloc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_END_LOC);\r\n\r\n List<string> cntrs = wcsTask.S_CNTRS.Split(',').ToList();\r\n bool bobe = false;\r\n switch (model.method)\r\n {\r\n case \"start\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鎵ц锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n if (wcsTask.S_B_STATE.Trim() == \"宸叉帹閫乗")\r\n {\r\n wcsTask.S_B_STATE = \"鎵ц涓璡";\r\n wcsTask.T_START_TIME = DateTime.Now;\r\n MainMissionService.Update(wcsTask);\r\n bobe = true;\r\n }\r\n break;\r\n case \"outbin\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栬揣瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n wcsTask.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n\r\n startloc.N_CURRENT_NUM = 0;\r\n startloc.S_LOCK_STATE = \"鏃燶";\r\n startloc.T_MODIFY = DateTime.Now;\r\n //ILocContainerRepository locContainerRepository = new LocContainerRepository();\r\n ////var cnr = locContainerRepository.FindList(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n //locContainerRepository.Delete(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n MainMissionService.Update(wcsTask);\r\n locrep.Update(startloc);\r\n\r\n bobe = true;\r\n var device = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_START_LOC));\r\n if (device != null)\r\n {\r\n if (device.deviceType == 1)\r\n {\r\n if (device.deviceName.Contains(\"缁村笇灏旀姄鑷俓"))\r\n { //鍗歌揣杩涜娓呯┖锛岃Е鍙戞壂鐮乗r\n var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;\r\n string V = inde ? \"R05\" : \"R06\";\r\n Conn.榛樿Redis.SetValue(device.deviceName + \".\" + V, \"true\", device.deviceName + \"Queue\");\r\n TcpServer.TrayIps.Remove(device.deviceNo[inde ? 0 : 1]);\r\n }\r\n }\r\n else if(device.deviceType == 2){\r\n\t\t\t\t\t\t\t\t\tvar inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;\r\n\t\t\t\t\t\t\t\t\t string V = inde? \"D1224\" : \"D1225\";\r\n\t\t\t\t\t\t\t\t\t Conn.榛樿Redis.SetValue(device.deviceName + \".\" + V, \"0\", device.deviceName + \"Queue\");\r\n }\r\n }\r\n //LocationHelper.UnLockLoc(wcsTask.S_START_LOC);\r\n break;\r\n case \"end\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n wcsTask.S_B_STATE = \"瀹屾垚\";\r\n wcsTask.T_END_TIME = DateTime.Now;\r\n\r\n bobe = true;\r\n //ILocContainerRepository locContainerRepository2 = new LocContainerRepository();\r\n //List<LocContainerEntity> llls = new List<LocContainerEntity>();\r\n //foreach (var c in cntrs)\r\n //{\r\n // var action = new LocContainerEntity()\r\n // {\r\n // S_ID = Guid.NewGuid().ToString(),\r\n // S_STATE = \"缂栬緫\",\r\n // T_CREATE = DateTime.Now,\r\n // T_MODIFY = DateTime.Now,\r\n\r\n // S_LOC_CODE = endLoc.S_LOC_CODE,\r\n // S_CNTR_CODE = c,\r\n // S_TYPE = \"\",\r\n // };\r\n // llls.Add(action);\r\n //}\r\n\r\n endLoc.S_LOCK_STATE = \"鏃燶";\r\n endLoc.N_CURRENT_NUM = 1;\r\n endLoc.T_MODIFY = DateTime.Now;\r\n MainMissionService.Update(wcsTask);\r\n if(Settings.deviceInfos.Find(x=>x.deviceType==2 && (/*x.location.Contains(wcsTask.S_END_LOC)||*/x.deviceNo.Contains(wcsTask.S_END_LOC)))!=null)\r\n locrep.Update(endLoc);\r\n //locContainerRepository2.Insert(llls);\r\n\r\n var device2 = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_END_LOC));\r\n if (device2 != null)\r\n {\r\n if (device2.deviceType == 1)\r\n {\r\n if (device2.deviceName.Contains(\"缁村笇灏旀姄鑷俓"))\r\n {\r\n //string V = device2.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0 ? \"R10\" : \"R11\";\r\n //Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"true\", device2.deviceName + \"Queue\");\r\n //鍗歌揣鍐嶅啓鎵樼洏鍙栬蛋銆�鐒跺悗瑙﹀彂鎵爜杩涜鏍¢獙銆�\r\n var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;\r\n //string V = inde ? \"R05\" : \"R06\";\r\n //Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"true\", device2.deviceName + \"Queue\");\r\n string V2 = inde ? \"R10_LAST\" : \"R11_LAST\";\r\n Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V2, \"true\", device2.deviceName + \"Queue\");\r\n TcpServer.TrayIps.Remove(device2.deviceNo[inde ? 0 : 1]);\r\n }\r\n }\r\n else if (device2.deviceType == 2)\r\n if (device2.deviceName.Contains(\"Js鎹烽『\"))\r\n {\r\n var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;\r\n string V = inde? \"D1224\" : \"D1225\";\r\n Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"1\", device2.deviceName + \"Queue\");\r\n\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 3,\r\n cntrCode = cntrs.FirstOrDefault()\r\n }));\r\n //if (device2.deviceName.Contains(\"1\"))\r\n //{\r\n // if (inde) tag.Js1.D1224 = 1;\r\n // else tag.Js1.D1225 = 1;\r\n //}else\r\n //{\r\n // if (inde) tag.Js2.D1224 = 1;\r\n // else tag.Js2.D1225 = 1;\r\n //}\r\n }\r\n }\r\n\r\n //LocationMethod.JudgeLocation(wcsTask);\r\n break;\r\n case \"cancel\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栨秷锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n wcsTask.S_B_STATE = \"鍙栨秷\";\r\n //startloc.S_LOCK_STATE = \"鏃燶";\r\n //endLoc.S_LOCK_STATE = \"鏃燶";\r\n MainMissionService.Update(wcsTask);\r\n TaskActRepository taskActRepository = new TaskActRepository();\r\n var tare = taskActRepository.FindList(x => x.S_TASK_NO == wcsTask.S_TASK_NO);\r\n if (tare.Any())\r\n {\r\n if(tare.Find(x=>x.S_ACTION_CODE==\"outbin\")==null)\r\n {\r\n startloc.S_LOCK_STATE = \"鏃燶";\r\n endLoc.S_LOCK_STATE = \"鏃燶";\r\n locrep.Update(startloc);\r\n locrep.Update(endLoc);\r\n }else if (tare.Find(x => x.S_ACTION_CODE == \"end\") == null)\r\n {\r\n endLoc.S_LOCK_STATE = \"鏃燶";\r\n locrep.Update(endLoc);\r\n }\r\n }\r\n\r\n //locrep.Update(startloc);\r\n //locrep.Update(endLoc);\r\n //TaskProcess.OperateStatus(wcsTask, 7);\r\n //WCSHelper.Fail(wcsTask);\r\n break;\r\n case \"apply\":\r\n // 鍒ゆ柇璇ヤ换鍔$殑鎺ラ┏浣嶆槸鍚︽湁鍏朵粬鍏ュ簱鎴栧嚭搴撲换鍔★紝濡傛灉鏈夛紝鍒欏湪绛変綅绛夊緟锛屽鏋滄病鏈夛紝鍒欏叆\r\n TaskisOk(wcsTask);\r\n break;\r\n }\r\n\r\n if (!string.IsNullOrEmpty(wcsTask.S_SRC_NO))\r\n {\r\n var mestask = MainMissionService.FindEntity(x => x.S_TASK_NO == wcsTask.S_SRC_NO);\r\n if (mestask!=null&&bobe)\r\n {\r\n if ( model.method != \"end\")\r\n {\r\n \tif (mestask.S_START_LOC == wcsTask.S_START_LOC&&mestask.S_B_STATE == \"MES\")\r\n\t Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/201\", JsonConvert.SerializeObject(new\r\n\t {\r\n\t reqCode = wcsTask.S_SRC_NO,\r\n\t model.method\r\n\t }));\r\n }\r\n else\r\n {\r\n if (mestask.S_END_LOC != wcsTask.S_END_LOC)\r\n {\r\n LogHelper.Info($\"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} 涓�樁娈靛畬鎴愶紝閲嶇疆杩涜浜岄樁娈点�\");\r\n mestask.N_PRIORITY = -88;\r\n MainMissionService.Update(mestask);\r\n }\r\n else if(mestask.S_B_STATE == \"MES\")\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/201\", JsonConvert.SerializeObject(new\r\n {\r\n reqCode = wcsTask.S_SRC_NO,\r\n model.method\r\n }));\r\n }\r\n }\r\n\r\n }else if(mestask!=null && model.method== \"cancel\")\r\n {\r\n \t if(mestask.S_B_STATE == \"MES\")\r\n\t Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/201\", JsonConvert.SerializeObject(new\r\n\t {\r\n\t reqCode = wcsTask.S_SRC_NO,\r\n\t model.method\r\n\t })); \r\n LogHelper.Info($\"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} 涓�樁娈靛彇娑堬紝閲嶇疆鐐癸紝绾跨▼澶勭悊銆俓");\r\n mestask.N_PRIORITY = -1;\r\n mestask.S_B_STATE = \"MES_鍙栨秷\";\r\n MainMissionService.Update(mestask);\r\n }\r\n }\r\n TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data,wcsTask.S_START_LOC,wcsTask.S_END_LOC);\r\n //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus\r\n }\r\n else\r\n {\r\n // 鏆傛椂璁惧畾涓�\r\n wcsTask.S_B_STATE = \"涓婃姤鐘舵�绌篭";\r\n //瀹夊叏璇锋眰绛塡r\n //TaskProcess.OperateReq(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data);\r\n }\r\n }\r\n else\r\n {\r\n LogHelper.Info($\"褰撳墠浠诲姟鍙蜂换鍔′笉瀛樺湪{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n }", - "Code": "public void OperateHKTaskStatus(System.Object param1)\r\n{HaiKangOrderInfo model = (HaiKangOrderInfo)param1;\r\n if (string.IsNullOrEmpty(model.taskCode))\r\n return;\r\n // 鏌ヨ浠诲姟锛氭牴鎹换鍔″彿\r\n //var wcsTask = WCSHelper.GetTask(model.taskCode);\r\n ITaskRepository MainMissionService = new TaskRepository();\r\n var wcsTask = MainMissionService.FindEntity(x => model.taskCode == x.S_TASK_NO);\r\n if (wcsTask != null)\r\n {\r\n if (!string.IsNullOrWhiteSpace(model.method))\r\n {\r\n ILocRepository locrep = new LocRepository();\r\n var startloc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_END_LOC);\r\n\r\n List<string> cntrs = wcsTask.S_CNTRS.Split(',').ToList();\r\n bool bobe = false;\r\n switch (model.method)\r\n {\r\n case \"start\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鎵ц锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n if (wcsTask.S_B_STATE.Trim() == \"宸叉帹閫乗")\r\n {\r\n wcsTask.S_B_STATE = \"鎵ц涓璡";\r\n wcsTask.T_START_TIME = DateTime.Now;\r\n MainMissionService.Update(wcsTask);\r\n bobe = true;\r\n }\r\n break;\r\n case \"outbin\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栬揣瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n wcsTask.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n\r\n startloc.N_CURRENT_NUM = 0;\r\n startloc.S_LOCK_STATE = \"鏃燶";\r\n startloc.T_MODIFY = DateTime.Now;\r\n //ILocContainerRepository locContainerRepository = new LocContainerRepository();\r\n ////var cnr = locContainerRepository.FindList(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n //locContainerRepository.Delete(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n MainMissionService.Update(wcsTask);\r\n locrep.Update(startloc);\r\n\r\n bobe = true;\r\n var device = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_START_LOC));\r\n if (device != null)\r\n {\r\n if (device.deviceType == 1)\r\n {\r\n if (device.deviceName.Contains(\"缁村笇灏旀姄鑷俓"))\r\n { //鍗歌揣杩涜娓呯┖锛岃Е鍙戞壂鐮乗r\n var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;\r\n string V = inde ? \"R05\" : \"R06\";\r\n Conn.榛樿Redis.SetValue(device.deviceName + \".\" + V, \"true\", device.deviceName + \"Queue\");\r\n TcpServer.TrayIps.Remove(device.deviceNo[inde ? 0 : 1]);\r\n }\r\n }\r\n else if(device.deviceType == 2){\r\n\t\t\t\t\t\t\t\t\tvar inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;\r\n\t\t\t\t\t\t\t\t\t string V = inde? \"D1224\" : \"D1225\";\r\n\t\t\t\t\t\t\t\t\t Conn.榛樿Redis.SetValue(device.deviceName + \".\" + V, \"0\", device.deviceName + \"Queue\");\r\n }\r\n }\r\n //LocationHelper.UnLockLoc(wcsTask.S_START_LOC);\r\n break;\r\n case \"end\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n wcsTask.S_B_STATE = \"瀹屾垚\";\r\n wcsTask.T_END_TIME = DateTime.Now;\r\n\r\n bobe = true;\r\n //ILocContainerRepository locContainerRepository2 = new LocContainerRepository();\r\n //List<LocContainerEntity> llls = new List<LocContainerEntity>();\r\n //foreach (var c in cntrs)\r\n //{\r\n // var action = new LocContainerEntity()\r\n // {\r\n // S_ID = Guid.NewGuid().ToString(),\r\n // S_STATE = \"缂栬緫\",\r\n // T_CREATE = DateTime.Now,\r\n // T_MODIFY = DateTime.Now,\r\n\r\n // S_LOC_CODE = endLoc.S_LOC_CODE,\r\n // S_CNTR_CODE = c,\r\n // S_TYPE = \"\",\r\n // };\r\n // llls.Add(action);\r\n //}\r\n\r\n endLoc.S_LOCK_STATE = \"鏃燶";\r\n endLoc.N_CURRENT_NUM = 1;\r\n endLoc.T_MODIFY = DateTime.Now;\r\n MainMissionService.Update(wcsTask);\r\n if(Settings.deviceInfos.Find(x=>x.deviceType==2 && (/*x.location.Contains(wcsTask.S_END_LOC)||*/x.deviceNo.Contains(wcsTask.S_END_LOC)))!=null)\r\n locrep.Update(endLoc);\r\n //locContainerRepository2.Insert(llls);\r\n\r\n var device2 = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_END_LOC));\r\n if (device2 != null)\r\n {\r\n if (device2.deviceType == 1)\r\n {\r\n if (device2.deviceName.Contains(\"缁村笇灏旀姄鑷俓"))\r\n {\r\n //string V = device2.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0 ? \"R10\" : \"R11\";\r\n //Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"true\", device2.deviceName + \"Queue\");\r\n //鍗歌揣鍐嶅啓鎵樼洏鍙栬蛋銆�鐒跺悗瑙﹀彂鎵爜杩涜鏍¢獙銆�\r\n var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;\r\n //string V = inde ? \"R05\" : \"R06\";\r\n //Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"true\", device2.deviceName + \"Queue\");\r\n string V2 = inde ? \"R10_LAST\" : \"R11_LAST\";\r\n Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V2, \"true\", device2.deviceName + \"Queue\");\r\n TcpServer.TrayIps.Remove(device2.deviceNo[inde ? 0 : 1]);\r\n }\r\n }\r\n else if (device2.deviceType == 2)\r\n if (device2.deviceName.Contains(\"Js鎹烽『\"))\r\n {\r\n var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;\r\n string V = inde? \"D1224\" : \"D1225\";\r\n Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"1\", device2.deviceName + \"Queue\");\r\n\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 3,\r\n cntrCode = cntrs.FirstOrDefault()\r\n }));\r\n //if (device2.deviceName.Contains(\"1\"))\r\n //{\r\n // if (inde) tag.Js1.D1224 = 1;\r\n // else tag.Js1.D1225 = 1;\r\n //}else\r\n //{\r\n // if (inde) tag.Js2.D1224 = 1;\r\n // else tag.Js2.D1225 = 1;\r\n //}\r\n }\r\n }\r\n\r\n //LocationMethod.JudgeLocation(wcsTask);\r\n break;\r\n case \"cancel\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栨秷锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n wcsTask.S_B_STATE = \"鍙栨秷\";\r\n //startloc.S_LOCK_STATE = \"鏃燶";\r\n //endLoc.S_LOCK_STATE = \"鏃燶";\r\n MainMissionService.Update(wcsTask);\r\n TaskActRepository taskActRepository = new TaskActRepository();\r\n var tare = taskActRepository.FindList(x => x.S_TASK_NO == wcsTask.S_TASK_NO);\r\n if (tare.Any())\r\n {\r\n if(tare.Find(x=>x.S_ACTION_CODE==\"outbin\")==null)\r\n {\r\n startloc.S_LOCK_STATE = \"鏃燶";\r\n endLoc.S_LOCK_STATE = \"鏃燶";\r\n locrep.Update(startloc);\r\n locrep.Update(endLoc);\r\n }else if (tare.Find(x => x.S_ACTION_CODE == \"end\") == null)\r\n {\r\n endLoc.S_LOCK_STATE = \"鏃燶";\r\n locrep.Update(endLoc);\r\n }\r\n }\r\n\r\n //locrep.Update(startloc);\r\n //locrep.Update(endLoc);\r\n //TaskProcess.OperateStatus(wcsTask, 7);\r\n //WCSHelper.Fail(wcsTask);\r\n break;\r\n case \"apply\":\r\n // 鍒ゆ柇璇ヤ换鍔$殑鎺ラ┏浣嶆槸鍚︽湁鍏朵粬鍏ュ簱鎴栧嚭搴撲换鍔★紝濡傛灉鏈夛紝鍒欏湪绛変綅绛夊緟锛屽鏋滄病鏈夛紝鍒欏叆\r\n TaskisOk(wcsTask);\r\n break;\r\n }\r\n\r\n if (!string.IsNullOrEmpty(wcsTask.S_SRC_NO))\r\n {\r\n var mestask = MainMissionService.FindEntity(x => x.S_TASK_NO == wcsTask.S_SRC_NO);\r\n if (mestask!=null&&bobe)\r\n {\r\n if ( model.method != \"end\")\r\n {\r\n \tif (mestask.S_START_LOC == wcsTask.S_START_LOC&&mestask.S_B_STATE == \"MES\")\r\n\t Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/201\", JsonConvert.SerializeObject(new\r\n\t {\r\n\t reqCode = wcsTask.S_SRC_NO,\r\n\t model.method\r\n\t }));\r\n }\r\n else\r\n {\r\n if (mestask.S_END_LOC != wcsTask.S_END_LOC)\r\n {\r\n LogHelper.Info($\"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} 涓�樁娈靛畬鎴愶紝閲嶇疆杩涜浜岄樁娈点�\");\r\n mestask.N_PRIORITY = -88;\r\n MainMissionService.Update(mestask);\r\n }\r\n else if(mestask.S_B_STATE == \"MES\")\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/201\", JsonConvert.SerializeObject(new\r\n {\r\n reqCode = wcsTask.S_SRC_NO,\r\n model.method\r\n }));\r\n }\r\n }\r\n\r\n }else if(mestask!=null && model.method== \"cancel\")\r\n {\r\n \t if(mestask.S_B_STATE == \"MES\")\r\n\t Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/201\", JsonConvert.SerializeObject(new\r\n\t {\r\n\t reqCode = wcsTask.S_SRC_NO,\r\n\t model.method\r\n\t })); \r\n LogHelper.Info($\"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} 涓�樁娈靛彇娑堬紝閲嶇疆鐐癸紝绾跨▼澶勭悊銆俓");\r\n mestask.N_PRIORITY = -1;\r\n mestask.S_B_STATE = \"MES_鍙栨秷\";\r\n MainMissionService.Update(mestask);\r\n }\r\n }\r\n TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data,wcsTask.S_START_LOC,wcsTask.S_END_LOC);\r\n //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus\r\n }\r\n else\r\n {\r\n // 鏆傛椂璁惧畾涓�\r\n wcsTask.S_B_STATE = \"涓婃姤鐘舵�绌篭";\r\n //瀹夊叏璇锋眰绛塡r\n //TaskProcess.OperateReq(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data);\r\n }\r\n }\r\n else\r\n {\r\n LogHelper.Info($\"褰撳墠浠诲姟鍙蜂换鍔′笉瀛樺湪{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n }\r\n}", + "EditCode": "HaiKangOrderInfo model = (HaiKangOrderInfo)param1;\r\n if (string.IsNullOrEmpty(model.taskCode))\r\n return;\r\n // 鏌ヨ浠诲姟锛氭牴鎹换鍔″彿\r\n //var wcsTask = WCSHelper.GetTask(model.taskCode);\r\n ITaskRepository MainMissionService = new TaskRepository();\r\n var wcsTask = MainMissionService.FindEntity(x => model.taskCode == x.S_TASK_NO);\r\n if (wcsTask != null)\r\n {\r\n if (!string.IsNullOrWhiteSpace(model.method))\r\n {\r\n ILocRepository locrep = new LocRepository();\r\n var startloc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_END_LOC);\r\n\r\n List<string> cntrs = wcsTask.S_CNTRS.Split(',').ToList();\r\n bool bobe = false;\r\n switch (model.method)\r\n {\r\n case \"start\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鎵ц锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n if (wcsTask.S_B_STATE.Trim() == \"宸叉帹閫乗")\r\n {\r\n wcsTask.S_B_STATE = \"鎵ц涓璡";\r\n wcsTask.T_START_TIME = DateTime.Now;\r\n MainMissionService.Update(wcsTask);\r\n bobe = true;\r\n }\r\n break;\r\n case \"outbin\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栬揣瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n wcsTask.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n\r\n startloc.N_CURRENT_NUM = 0;\r\n startloc.S_LOCK_STATE = \"鏃燶";\r\n startloc.T_MODIFY = DateTime.Now;\r\n //ILocContainerRepository locContainerRepository = new LocContainerRepository();\r\n ////var cnr = locContainerRepository.FindList(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n //locContainerRepository.Delete(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n MainMissionService.Update(wcsTask);\r\n locrep.Update(startloc);\r\n\r\n bobe = true;\r\n var device = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_START_LOC));\r\n if (device != null)\r\n {\r\n if (device.deviceType == 1)\r\n {\r\n if (device.deviceName.Contains(\"缁村笇灏旀姄鑷俓"))\r\n { //鍗歌揣杩涜娓呯┖锛岃Е鍙戞壂鐮乗r\n var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;\r\n string V = inde ? \"R05\" : \"R06\";\r\n Conn.榛樿Redis.SetValue(device.deviceName + \".\" + V, \"true\", device.deviceName + \"Queue\");\r\n \r\n TcpServer.TrayIps.Remove(device.deviceNo[inde ? 0 : 1]);\r\n }\r\n }\r\n else if(device.deviceType == 2){\r\n\t\t\t\t\t\t\t\t\tvar inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;\r\n\t\t\t\t\t\t\t\t\t string V = inde? \"D1224\" : \"D1225\";\r\n\t\t\t\t\t\t\t\t\t Conn.榛樿Redis.SetValue(device.deviceName + \".\" + V, \"0\", device.deviceName + \"Queue\");\r\n }\r\n }\r\n //LocationHelper.UnLockLoc(wcsTask.S_START_LOC);\r\n break;\r\n case \"end\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n wcsTask.S_B_STATE = \"瀹屾垚\";\r\n wcsTask.T_END_TIME = DateTime.Now;\r\n\r\n bobe = true;\r\n //ILocContainerRepository locContainerRepository2 = new LocContainerRepository();\r\n //List<LocContainerEntity> llls = new List<LocContainerEntity>();\r\n //foreach (var c in cntrs)\r\n //{\r\n // var action = new LocContainerEntity()\r\n // {\r\n // S_ID = Guid.NewGuid().ToString(),\r\n // S_STATE = \"缂栬緫\",\r\n // T_CREATE = DateTime.Now,\r\n // T_MODIFY = DateTime.Now,\r\n\r\n // S_LOC_CODE = endLoc.S_LOC_CODE,\r\n // S_CNTR_CODE = c,\r\n // S_TYPE = \"\",\r\n // };\r\n // llls.Add(action);\r\n //}\r\n\r\n endLoc.S_LOCK_STATE = \"鏃燶";\r\n endLoc.N_CURRENT_NUM = 1;\r\n endLoc.T_MODIFY = DateTime.Now;\r\n MainMissionService.Update(wcsTask);\r\n if(Settings.deviceInfos.Find(x=>x.deviceType==2 && (/*x.location.Contains(wcsTask.S_END_LOC)||*/x.deviceNo.Contains(wcsTask.S_END_LOC)))!=null)\r\n locrep.Update(endLoc);\r\n //locContainerRepository2.Insert(llls);\r\n\r\n var device2 = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_END_LOC));\r\n if (device2 != null)\r\n {\r\n if (device2.deviceType == 1)\r\n {\r\n if (device2.deviceName.Contains(\"缁村笇灏旀姄鑷俓"))\r\n {\r\n //string V = device2.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0 ? \"R10\" : \"R11\";\r\n //Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"true\", device2.deviceName + \"Queue\");\r\n //鍗歌揣鍐嶅啓鎵樼洏鍙栬蛋銆�鐒跺悗瑙﹀彂鎵爜杩涜鏍¢獙銆�\r\n var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;\r\n //string V = inde ? \"R05\" : \"R06\";\r\n //Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"true\", device2.deviceName + \"Queue\");\r\n string V2 = inde ? \"R10_LAST\" : \"R11_LAST\";\r\n //Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V2, \"true\", device2.deviceName + \"Queue\");\r\n \r\n RedisHelper.Add(device2.deviceName + \".\" + V2, \"true\", out string msg1);\r\n TcpServer.TrayIps.Remove(device2.deviceNo[inde ? 0 : 1]);\r\n }\r\n }\r\n else if (device2.deviceType == 2)\r\n if (device2.deviceName.Contains(\"Js鎹烽『\"))\r\n {\r\n var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;\r\n string V = inde? \"D1224\" : \"D1225\";\r\n Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"1\", device2.deviceName + \"Queue\");\r\n\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 3,\r\n cntrCode = cntrs.FirstOrDefault()\r\n }));\r\n //if (device2.deviceName.Contains(\"1\"))\r\n //{\r\n // if (inde) tag.Js1.D1224 = 1;\r\n // else tag.Js1.D1225 = 1;\r\n //}else\r\n //{\r\n // if (inde) tag.Js2.D1224 = 1;\r\n // else tag.Js2.D1225 = 1;\r\n //}\r\n }\r\n }\r\n\r\n //LocationMethod.JudgeLocation(wcsTask);\r\n break;\r\n case \"cancel\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栨秷锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n wcsTask.S_B_STATE = \"鍙栨秷\";\r\n //startloc.S_LOCK_STATE = \"鏃燶";\r\n //endLoc.S_LOCK_STATE = \"鏃燶";\r\n MainMissionService.Update(wcsTask);\r\n TaskActRepository taskActRepository = new TaskActRepository();\r\n var tare = taskActRepository.FindList(x => x.S_TASK_NO == wcsTask.S_TASK_NO);\r\n if (tare.Any())\r\n {\r\n if(tare.Find(x=>x.S_ACTION_CODE==\"outbin\")==null)\r\n {\r\n startloc.S_LOCK_STATE = \"鏃燶";\r\n endLoc.S_LOCK_STATE = \"鏃燶";\r\n locrep.Update(startloc);\r\n locrep.Update(endLoc);\r\n }else if (tare.Find(x => x.S_ACTION_CODE == \"end\") == null)\r\n {\r\n endLoc.S_LOCK_STATE = \"鏃燶";\r\n locrep.Update(endLoc);\r\n }\r\n }\r\n\r\n //locrep.Update(startloc);\r\n //locrep.Update(endLoc);\r\n //TaskProcess.OperateStatus(wcsTask, 7);\r\n //WCSHelper.Fail(wcsTask);\r\n break;\r\n case \"apply\":\r\n // 鍒ゆ柇璇ヤ换鍔$殑鎺ラ┏浣嶆槸鍚︽湁鍏朵粬鍏ュ簱鎴栧嚭搴撲换鍔★紝濡傛灉鏈夛紝鍒欏湪绛変綅绛夊緟锛屽鏋滄病鏈夛紝鍒欏叆\r\n TaskisOk(wcsTask);\r\n break;\r\n }\r\n\r\n if (!string.IsNullOrEmpty(wcsTask.S_SRC_NO))\r\n {\r\n var mestask = MainMissionService.FindEntity(x => x.S_TASK_NO == wcsTask.S_SRC_NO);\r\n if (mestask!=null&&bobe)\r\n {\r\n if ( model.method != \"end\")\r\n {\r\n \tif (mestask.S_START_LOC == wcsTask.S_START_LOC&&mestask.S_B_STATE == \"MES\")\r\n\t Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/201\", JsonConvert.SerializeObject(new\r\n\t {\r\n\t reqCode = wcsTask.S_SRC_NO,\r\n\t model.method\r\n\t }));\r\n }\r\n else\r\n {\r\n if (mestask.S_END_LOC != wcsTask.S_END_LOC)\r\n {\r\n LogHelper.Info($\"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} 涓�樁娈靛畬鎴愶紝閲嶇疆杩涜浜岄樁娈点�\");\r\n mestask.N_PRIORITY = -88;\r\n MainMissionService.Update(mestask);\r\n }\r\n else if(mestask.S_B_STATE == \"MES\")\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/201\", JsonConvert.SerializeObject(new\r\n {\r\n reqCode = wcsTask.S_SRC_NO,\r\n model.method\r\n }));\r\n }\r\n }\r\n\r\n }else if(mestask!=null && model.method== \"cancel\")\r\n {\r\n \t if(mestask.S_B_STATE == \"MES\")\r\n\t Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/201\", JsonConvert.SerializeObject(new\r\n\t {\r\n\t reqCode = wcsTask.S_SRC_NO,\r\n\t model.method\r\n\t })); \r\n LogHelper.Info($\"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} 涓�樁娈靛彇娑堬紝閲嶇疆鐐癸紝绾跨▼澶勭悊銆俓");\r\n mestask.N_PRIORITY = -1;\r\n mestask.S_B_STATE = \"MES_鍙栨秷\";\r\n MainMissionService.Update(mestask);\r\n }\r\n }\r\n TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data,wcsTask.S_START_LOC,wcsTask.S_END_LOC);\r\n //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus\r\n }\r\n else\r\n {\r\n // 鏆傛椂璁惧畾涓�\r\n wcsTask.S_B_STATE = \"涓婃姤鐘舵�绌篭";\r\n //瀹夊叏璇锋眰绛塡r\n //TaskProcess.OperateReq(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data);\r\n }\r\n }\r\n else\r\n {\r\n LogHelper.Info($\"褰撳墠浠诲姟鍙蜂换鍔′笉瀛樺湪{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n }", + "Code": "public void OperateHKTaskStatus(System.Object param1)\r\n{HaiKangOrderInfo model = (HaiKangOrderInfo)param1;\r\n if (string.IsNullOrEmpty(model.taskCode))\r\n return;\r\n // 鏌ヨ浠诲姟锛氭牴鎹换鍔″彿\r\n //var wcsTask = WCSHelper.GetTask(model.taskCode);\r\n ITaskRepository MainMissionService = new TaskRepository();\r\n var wcsTask = MainMissionService.FindEntity(x => model.taskCode == x.S_TASK_NO);\r\n if (wcsTask != null)\r\n {\r\n if (!string.IsNullOrWhiteSpace(model.method))\r\n {\r\n ILocRepository locrep = new LocRepository();\r\n var startloc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_END_LOC);\r\n\r\n List<string> cntrs = wcsTask.S_CNTRS.Split(',').ToList();\r\n bool bobe = false;\r\n switch (model.method)\r\n {\r\n case \"start\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鎵ц锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n if (wcsTask.S_B_STATE.Trim() == \"宸叉帹閫乗")\r\n {\r\n wcsTask.S_B_STATE = \"鎵ц涓璡";\r\n wcsTask.T_START_TIME = DateTime.Now;\r\n MainMissionService.Update(wcsTask);\r\n bobe = true;\r\n }\r\n break;\r\n case \"outbin\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栬揣瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n wcsTask.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n\r\n startloc.N_CURRENT_NUM = 0;\r\n startloc.S_LOCK_STATE = \"鏃燶";\r\n startloc.T_MODIFY = DateTime.Now;\r\n //ILocContainerRepository locContainerRepository = new LocContainerRepository();\r\n ////var cnr = locContainerRepository.FindList(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n //locContainerRepository.Delete(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n MainMissionService.Update(wcsTask);\r\n locrep.Update(startloc);\r\n\r\n bobe = true;\r\n var device = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_START_LOC));\r\n if (device != null)\r\n {\r\n if (device.deviceType == 1)\r\n {\r\n if (device.deviceName.Contains(\"缁村笇灏旀姄鑷俓"))\r\n { //鍗歌揣杩涜娓呯┖锛岃Е鍙戞壂鐮乗r\n var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;\r\n string V = inde ? \"R05\" : \"R06\";\r\n Conn.榛樿Redis.SetValue(device.deviceName + \".\" + V, \"true\", device.deviceName + \"Queue\");\r\n \r\n TcpServer.TrayIps.Remove(device.deviceNo[inde ? 0 : 1]);\r\n }\r\n }\r\n else if(device.deviceType == 2){\r\n\t\t\t\t\t\t\t\t\tvar inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;\r\n\t\t\t\t\t\t\t\t\t string V = inde? \"D1224\" : \"D1225\";\r\n\t\t\t\t\t\t\t\t\t Conn.榛樿Redis.SetValue(device.deviceName + \".\" + V, \"0\", device.deviceName + \"Queue\");\r\n }\r\n }\r\n //LocationHelper.UnLockLoc(wcsTask.S_START_LOC);\r\n break;\r\n case \"end\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n wcsTask.S_B_STATE = \"瀹屾垚\";\r\n wcsTask.T_END_TIME = DateTime.Now;\r\n\r\n bobe = true;\r\n //ILocContainerRepository locContainerRepository2 = new LocContainerRepository();\r\n //List<LocContainerEntity> llls = new List<LocContainerEntity>();\r\n //foreach (var c in cntrs)\r\n //{\r\n // var action = new LocContainerEntity()\r\n // {\r\n // S_ID = Guid.NewGuid().ToString(),\r\n // S_STATE = \"缂栬緫\",\r\n // T_CREATE = DateTime.Now,\r\n // T_MODIFY = DateTime.Now,\r\n\r\n // S_LOC_CODE = endLoc.S_LOC_CODE,\r\n // S_CNTR_CODE = c,\r\n // S_TYPE = \"\",\r\n // };\r\n // llls.Add(action);\r\n //}\r\n\r\n endLoc.S_LOCK_STATE = \"鏃燶";\r\n endLoc.N_CURRENT_NUM = 1;\r\n endLoc.T_MODIFY = DateTime.Now;\r\n MainMissionService.Update(wcsTask);\r\n if(Settings.deviceInfos.Find(x=>x.deviceType==2 && (/*x.location.Contains(wcsTask.S_END_LOC)||*/x.deviceNo.Contains(wcsTask.S_END_LOC)))!=null)\r\n locrep.Update(endLoc);\r\n //locContainerRepository2.Insert(llls);\r\n\r\n var device2 = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_END_LOC));\r\n if (device2 != null)\r\n {\r\n if (device2.deviceType == 1)\r\n {\r\n if (device2.deviceName.Contains(\"缁村笇灏旀姄鑷俓"))\r\n {\r\n //string V = device2.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0 ? \"R10\" : \"R11\";\r\n //Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"true\", device2.deviceName + \"Queue\");\r\n //鍗歌揣鍐嶅啓鎵樼洏鍙栬蛋銆�鐒跺悗瑙﹀彂鎵爜杩涜鏍¢獙銆�\r\n var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;\r\n //string V = inde ? \"R05\" : \"R06\";\r\n //Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"true\", device2.deviceName + \"Queue\");\r\n string V2 = inde ? \"R10_LAST\" : \"R11_LAST\";\r\n //Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V2, \"true\", device2.deviceName + \"Queue\");\r\n \r\n RedisHelper.Add(device2.deviceName + \".\" + V2, \"true\", out string msg1);\r\n TcpServer.TrayIps.Remove(device2.deviceNo[inde ? 0 : 1]);\r\n }\r\n }\r\n else if (device2.deviceType == 2)\r\n if (device2.deviceName.Contains(\"Js鎹烽『\"))\r\n {\r\n var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;\r\n string V = inde? \"D1224\" : \"D1225\";\r\n Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"1\", device2.deviceName + \"Queue\");\r\n\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 3,\r\n cntrCode = cntrs.FirstOrDefault()\r\n }));\r\n //if (device2.deviceName.Contains(\"1\"))\r\n //{\r\n // if (inde) tag.Js1.D1224 = 1;\r\n // else tag.Js1.D1225 = 1;\r\n //}else\r\n //{\r\n // if (inde) tag.Js2.D1224 = 1;\r\n // else tag.Js2.D1225 = 1;\r\n //}\r\n }\r\n }\r\n\r\n //LocationMethod.JudgeLocation(wcsTask);\r\n break;\r\n case \"cancel\":\r\n LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栨秷锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n wcsTask.S_B_STATE = \"鍙栨秷\";\r\n //startloc.S_LOCK_STATE = \"鏃燶";\r\n //endLoc.S_LOCK_STATE = \"鏃燶";\r\n MainMissionService.Update(wcsTask);\r\n TaskActRepository taskActRepository = new TaskActRepository();\r\n var tare = taskActRepository.FindList(x => x.S_TASK_NO == wcsTask.S_TASK_NO);\r\n if (tare.Any())\r\n {\r\n if(tare.Find(x=>x.S_ACTION_CODE==\"outbin\")==null)\r\n {\r\n startloc.S_LOCK_STATE = \"鏃燶";\r\n endLoc.S_LOCK_STATE = \"鏃燶";\r\n locrep.Update(startloc);\r\n locrep.Update(endLoc);\r\n }else if (tare.Find(x => x.S_ACTION_CODE == \"end\") == null)\r\n {\r\n endLoc.S_LOCK_STATE = \"鏃燶";\r\n locrep.Update(endLoc);\r\n }\r\n }\r\n\r\n //locrep.Update(startloc);\r\n //locrep.Update(endLoc);\r\n //TaskProcess.OperateStatus(wcsTask, 7);\r\n //WCSHelper.Fail(wcsTask);\r\n break;\r\n case \"apply\":\r\n // 鍒ゆ柇璇ヤ换鍔$殑鎺ラ┏浣嶆槸鍚︽湁鍏朵粬鍏ュ簱鎴栧嚭搴撲换鍔★紝濡傛灉鏈夛紝鍒欏湪绛変綅绛夊緟锛屽鏋滄病鏈夛紝鍒欏叆\r\n TaskisOk(wcsTask);\r\n break;\r\n }\r\n\r\n if (!string.IsNullOrEmpty(wcsTask.S_SRC_NO))\r\n {\r\n var mestask = MainMissionService.FindEntity(x => x.S_TASK_NO == wcsTask.S_SRC_NO);\r\n if (mestask!=null&&bobe)\r\n {\r\n if ( model.method != \"end\")\r\n {\r\n \tif (mestask.S_START_LOC == wcsTask.S_START_LOC&&mestask.S_B_STATE == \"MES\")\r\n\t Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/201\", JsonConvert.SerializeObject(new\r\n\t {\r\n\t reqCode = wcsTask.S_SRC_NO,\r\n\t model.method\r\n\t }));\r\n }\r\n else\r\n {\r\n if (mestask.S_END_LOC != wcsTask.S_END_LOC)\r\n {\r\n LogHelper.Info($\"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} 涓�樁娈靛畬鎴愶紝閲嶇疆杩涜浜岄樁娈点�\");\r\n mestask.N_PRIORITY = -88;\r\n MainMissionService.Update(mestask);\r\n }\r\n else if(mestask.S_B_STATE == \"MES\")\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/201\", JsonConvert.SerializeObject(new\r\n {\r\n reqCode = wcsTask.S_SRC_NO,\r\n model.method\r\n }));\r\n }\r\n }\r\n\r\n }else if(mestask!=null && model.method== \"cancel\")\r\n {\r\n \t if(mestask.S_B_STATE == \"MES\")\r\n\t Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/201\", JsonConvert.SerializeObject(new\r\n\t {\r\n\t reqCode = wcsTask.S_SRC_NO,\r\n\t model.method\r\n\t })); \r\n LogHelper.Info($\"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} 涓�樁娈靛彇娑堬紝閲嶇疆鐐癸紝绾跨▼澶勭悊銆俓");\r\n mestask.N_PRIORITY = -1;\r\n mestask.S_B_STATE = \"MES_鍙栨秷\";\r\n MainMissionService.Update(mestask);\r\n }\r\n }\r\n TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data,wcsTask.S_START_LOC,wcsTask.S_END_LOC);\r\n //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus\r\n }\r\n else\r\n {\r\n // 鏆傛椂璁惧畾涓�\r\n wcsTask.S_B_STATE = \"涓婃姤鐘舵�绌篭";\r\n //瀹夊叏璇锋眰绛塡r\n //TaskProcess.OperateReq(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data);\r\n }\r\n }\r\n else\r\n {\r\n LogHelper.Info($\"褰撳墠浠诲姟鍙蜂换鍔′笉瀛樺湪{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n }\r\n}", "CusMethod": { "Name": "OperateHKTaskStatus", "Params": [ @@ -593,8 +593,8 @@ "Type": "ClassCode", "Level": "Item", "Statement": "public class TaskProcess", - "EditCode": "internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = \"AGV\", int cntrCount = 1, int startLayer = 1, int endLayer = 1)\r\n{\r\n\t\r\n LogHelper.Debug($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to}寮�鍒涘缓>\");\r\n var cntrInfo = string.Join(\",\", cntrs);\r\n ILocRepository locc = new LocRepository();\r\n var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from);\r\n var endLoc = locc.FindEntity(x => x.S_LOC_CODE == to);\r\n \r\n var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null;\r\n var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null;\r\n string t = \"F01\";\r\n if (s && !e) t = \"A002\";\r\n if (!s && e) t = \"A003\";\r\n if (s && e) t = \"A004\";\r\n try\r\n {\r\n\r\n TaskEntity wmsTask = new TaskEntity()\r\n {\r\n \tS_ID = Guid.NewGuid().ToString(),\r\n\t\tS_STATE = \"缂栬緫\",\r\n\t\tT_CREATE = DateTime.Now,\r\n\t\tT_MODIFY = DateTime.Now,\r\n\r\n S_TASK_NO = GenerateTaskNo(),\r\n S_START_LAREA = fromLoc.S_AREA_CODE,\r\n S_END_LAREA = endLoc.S_AREA_CODE,\r\n S_DEPART_NAME = \"\",\r\n S_START_LOC = from,\r\n S_END_LOC = to,\r\n S_TYPE = taskType,\r\n S_SRC_NO = no,//\r\n N_PRIORITY = pri,\r\n S_WORK_MODE = workMode,\r\n S_B_STATE = \"鏈墽琛孿",\r\n S_CNTRS = cntrInfo,\r\n N_START_LAYER = startLayer,\r\n N_END_LAYER = endLayer,\r\n N_CNTR_COUNT = cntrCount,\r\n S_INDEX=t,\r\n };\r\n ITaskRepository taskserice = new TaskRepository();\r\n taskserice.Insert(wmsTask);\r\n \r\n if (workMode == \"AGV\")\r\n {\r\n fromLoc.S_LOCK_STATE = \"鍑哄簱閿乗";\r\n endLoc.S_LOCK_STATE = \"鍏ュ簱閿乗";\r\n locc.Update(fromLoc);\r\n locc.Update(endLoc);\r\n }\r\n \r\n LogHelper.Debug($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to} 鍒涘缓{wmsTask.S_TASK_NO}鎴愬姛\");\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Error(\"CreateTask\" + ex.Message, ex);\r\n return false;\r\n }\r\n}\r\n\r\n\r\n internal static void AddActionRecord(string no, string state, string forkliftNo, string extData,string strloc,string endloc)\r\n {\r\n var action = new TaskActEntity()\r\n {\r\n S_ID = Guid.NewGuid().ToString(),\r\n S_STATE = \"缂栬緫\",\r\n T_CREATE = DateTime.Now,\r\n T_MODIFY = DateTime.Now,\r\n S_START_LOC= strloc,\r\n S_END_LOC= endloc,\r\n S_ACTION_CODE = state,\r\n S_TASK_NO = no,\r\n S_EQ_NO = forkliftNo,\r\n S_EQ_TYPE = \"agv\",\r\n S_DATA = extData,\r\n N_CREATEMETHOD = 0\r\n };\r\n TaskActRepository taskserice = new TaskActRepository();\r\n taskserice.Insert(action);\r\n }\r\n\r\n public static System.String GenerateTaskNo()\r\n {\r\n var id = SYSHelper.GetSerialNumber(\"浠诲姟鍙穃", \"TN\", \"1\");\r\n var date = DateTime.Now.ToString(\"yyMMdd\");\r\n return $\"TN{date}{id.ToString().PadLeft(4, '0')}\";\r\n }", - "Code": "public class TaskProcess\r\n{internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = \"AGV\", int cntrCount = 1, int startLayer = 1, int endLayer = 1)\r\n{\r\n\t\r\n LogHelper.Debug($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to}寮�鍒涘缓>\");\r\n var cntrInfo = string.Join(\",\", cntrs);\r\n ILocRepository locc = new LocRepository();\r\n var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from);\r\n var endLoc = locc.FindEntity(x => x.S_LOC_CODE == to);\r\n \r\n var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null;\r\n var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null;\r\n string t = \"F01\";\r\n if (s && !e) t = \"A002\";\r\n if (!s && e) t = \"A003\";\r\n if (s && e) t = \"A004\";\r\n try\r\n {\r\n\r\n TaskEntity wmsTask = new TaskEntity()\r\n {\r\n \tS_ID = Guid.NewGuid().ToString(),\r\n\t\tS_STATE = \"缂栬緫\",\r\n\t\tT_CREATE = DateTime.Now,\r\n\t\tT_MODIFY = DateTime.Now,\r\n\r\n S_TASK_NO = GenerateTaskNo(),\r\n S_START_LAREA = fromLoc.S_AREA_CODE,\r\n S_END_LAREA = endLoc.S_AREA_CODE,\r\n S_DEPART_NAME = \"\",\r\n S_START_LOC = from,\r\n S_END_LOC = to,\r\n S_TYPE = taskType,\r\n S_SRC_NO = no,//\r\n N_PRIORITY = pri,\r\n S_WORK_MODE = workMode,\r\n S_B_STATE = \"鏈墽琛孿",\r\n S_CNTRS = cntrInfo,\r\n N_START_LAYER = startLayer,\r\n N_END_LAYER = endLayer,\r\n N_CNTR_COUNT = cntrCount,\r\n S_INDEX=t,\r\n };\r\n ITaskRepository taskserice = new TaskRepository();\r\n taskserice.Insert(wmsTask);\r\n \r\n if (workMode == \"AGV\")\r\n {\r\n fromLoc.S_LOCK_STATE = \"鍑哄簱閿乗";\r\n endLoc.S_LOCK_STATE = \"鍏ュ簱閿乗";\r\n locc.Update(fromLoc);\r\n locc.Update(endLoc);\r\n }\r\n \r\n LogHelper.Debug($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to} 鍒涘缓{wmsTask.S_TASK_NO}鎴愬姛\");\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Error(\"CreateTask\" + ex.Message, ex);\r\n return false;\r\n }\r\n}\r\n\r\n\r\n internal static void AddActionRecord(string no, string state, string forkliftNo, string extData,string strloc,string endloc)\r\n {\r\n var action = new TaskActEntity()\r\n {\r\n S_ID = Guid.NewGuid().ToString(),\r\n S_STATE = \"缂栬緫\",\r\n T_CREATE = DateTime.Now,\r\n T_MODIFY = DateTime.Now,\r\n S_START_LOC= strloc,\r\n S_END_LOC= endloc,\r\n S_ACTION_CODE = state,\r\n S_TASK_NO = no,\r\n S_EQ_NO = forkliftNo,\r\n S_EQ_TYPE = \"agv\",\r\n S_DATA = extData,\r\n N_CREATEMETHOD = 0\r\n };\r\n TaskActRepository taskserice = new TaskActRepository();\r\n taskserice.Insert(action);\r\n }\r\n\r\n public static System.String GenerateTaskNo()\r\n {\r\n var id = SYSHelper.GetSerialNumber(\"浠诲姟鍙穃", \"TN\", \"1\");\r\n var date = DateTime.Now.ToString(\"yyMMdd\");\r\n return $\"TN{date}{id.ToString().PadLeft(4, '0')}\";\r\n }\r\n}", + "EditCode": "internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = \"AGV\", int cntrCount = 1, int startLayer = 1, int endLayer = 1)\r\n{\r\n\t\r\n LogHelper.Info($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to}寮�鍒涘缓>\");\r\n var cntrInfo = string.Join(\",\", cntrs);\r\n ILocRepository locc = new LocRepository();\r\n var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from);\r\n var endLoc = locc.FindEntity(x => x.S_LOC_CODE == to);\r\n \r\n var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null;\r\n var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null;\r\n string t = \"F01\";\r\n if (s && !e) t = \"A002\";\r\n if (!s && e) t = \"A003\";\r\n if (s && e) t = \"A004\";\r\n try\r\n {\r\n\r\n TaskEntity wmsTask = new TaskEntity()\r\n {\r\n \tS_ID = Guid.NewGuid().ToString(),\r\n\t\tS_STATE = \"缂栬緫\",\r\n\t\tT_CREATE = DateTime.Now,\r\n\t\tT_MODIFY = DateTime.Now,\r\n\r\n S_TASK_NO = GenerateTaskNo(),\r\n S_START_LAREA = fromLoc.S_AREA_CODE,\r\n S_END_LAREA = endLoc.S_AREA_CODE,\r\n S_DEPART_NAME = \"\",\r\n S_START_LOC = from,\r\n S_END_LOC = to,\r\n S_TYPE = taskType,\r\n S_SRC_NO = no,//\r\n N_PRIORITY = pri,\r\n S_WORK_MODE = workMode,\r\n S_B_STATE = \"鏈墽琛孿",\r\n S_CNTRS = cntrInfo,\r\n N_START_LAYER = startLayer,\r\n N_END_LAYER = endLayer,\r\n N_CNTR_COUNT = cntrCount,\r\n S_INDEX=t,\r\n };\r\n ITaskRepository taskserice = new TaskRepository();\r\n taskserice.Insert(wmsTask);\r\n \r\n if (workMode == \"AGV\")\r\n {\r\n fromLoc.S_LOCK_STATE = \"鍑哄簱閿乗";\r\n endLoc.S_LOCK_STATE = \"鍏ュ簱閿乗";\r\n locc.Update(fromLoc);\r\n locc.Update(endLoc);\r\n }\r\n \r\n LogHelper.Info($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to} 鍒涘缓{wmsTask.S_TASK_NO}鎴愬姛\");\r\n return true;\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Error(\"CreateTask\" + ex.Message, ex);\r\n return false;\r\n }\r\n}\r\n\r\n\r\n internal static void AddActionRecord(string no, string state, string forkliftNo, string extData,string strloc,string endloc)\r\n {\r\n var action = new TaskActEntity()\r\n {\r\n S_ID = Guid.NewGuid().ToString(),\r\n S_STATE = \"缂栬緫\",\r\n T_CREATE = DateTime.Now,\r\n T_MODIFY = DateTime.Now,\r\n S_START_LOC= strloc,\r\n S_END_LOC= endloc,\r\n S_ACTION_CODE = state,\r\n S_TASK_NO = no,\r\n S_EQ_NO = forkliftNo,\r\n S_EQ_TYPE = \"agv\",\r\n S_DATA = extData,\r\n N_CREATEMETHOD = 0\r\n };\r\n TaskActRepository taskserice = new TaskActRepository();\r\n taskserice.Insert(action);\r\n }\r\n\r\n public static System.String GenerateTaskNo()\r\n {\r\n var id = SYSHelper.GetSerialNumber(\"浠诲姟鍙穃", \"TN\", \"1\");\r\n var date = DateTime.Now.ToString(\"yyMMdd\");\r\n return $\"TN{date}{id.ToString().PadLeft(4, '0')}\";\r\n }", + "Code": "public class TaskProcess\r\n{internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = \"AGV\", int cntrCount = 1, int startLayer = 1, int endLayer = 1)\r\n{\r\n\t\r\n LogHelper.Info($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to}寮�鍒涘缓>\");\r\n var cntrInfo = string.Join(\",\", cntrs);\r\n ILocRepository locc = new LocRepository();\r\n var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from);\r\n var endLoc = locc.FindEntity(x => x.S_LOC_CODE == to);\r\n \r\n var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null;\r\n var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null;\r\n string t = \"F01\";\r\n if (s && !e) t = \"A002\";\r\n if (!s && e) t = \"A003\";\r\n if (s && e) t = \"A004\";\r\n try\r\n {\r\n\r\n TaskEntity wmsTask = new TaskEntity()\r\n {\r\n \tS_ID = Guid.NewGuid().ToString(),\r\n\t\tS_STATE = \"缂栬緫\",\r\n\t\tT_CREATE = DateTime.Now,\r\n\t\tT_MODIFY = DateTime.Now,\r\n\r\n S_TASK_NO = GenerateTaskNo(),\r\n S_START_LAREA = fromLoc.S_AREA_CODE,\r\n S_END_LAREA = endLoc.S_AREA_CODE,\r\n S_DEPART_NAME = \"\",\r\n S_START_LOC = from,\r\n S_END_LOC = to,\r\n S_TYPE = taskType,\r\n S_SRC_NO = no,//\r\n N_PRIORITY = pri,\r\n S_WORK_MODE = workMode,\r\n S_B_STATE = \"鏈墽琛孿",\r\n S_CNTRS = cntrInfo,\r\n N_START_LAYER = startLayer,\r\n N_END_LAYER = endLayer,\r\n N_CNTR_COUNT = cntrCount,\r\n S_INDEX=t,\r\n };\r\n ITaskRepository taskserice = new TaskRepository();\r\n taskserice.Insert(wmsTask);\r\n \r\n if (workMode == \"AGV\")\r\n {\r\n fromLoc.S_LOCK_STATE = \"鍑哄簱閿乗";\r\n endLoc.S_LOCK_STATE = \"鍏ュ簱閿乗";\r\n locc.Update(fromLoc);\r\n locc.Update(endLoc);\r\n }\r\n \r\n LogHelper.Info($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to} 鍒涘缓{wmsTask.S_TASK_NO}鎴愬姛\");\r\n return true;\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Error(\"CreateTask\" + ex.Message, ex);\r\n return false;\r\n }\r\n}\r\n\r\n\r\n internal static void AddActionRecord(string no, string state, string forkliftNo, string extData,string strloc,string endloc)\r\n {\r\n var action = new TaskActEntity()\r\n {\r\n S_ID = Guid.NewGuid().ToString(),\r\n S_STATE = \"缂栬緫\",\r\n T_CREATE = DateTime.Now,\r\n T_MODIFY = DateTime.Now,\r\n S_START_LOC= strloc,\r\n S_END_LOC= endloc,\r\n S_ACTION_CODE = state,\r\n S_TASK_NO = no,\r\n S_EQ_NO = forkliftNo,\r\n S_EQ_TYPE = \"agv\",\r\n S_DATA = extData,\r\n N_CREATEMETHOD = 0\r\n };\r\n TaskActRepository taskserice = new TaskActRepository();\r\n taskserice.Insert(action);\r\n }\r\n\r\n public static System.String GenerateTaskNo()\r\n {\r\n var id = SYSHelper.GetSerialNumber(\"浠诲姟鍙穃", \"TN\", \"1\");\r\n var date = DateTime.Now.ToString(\"yyMMdd\");\r\n return $\"TN{date}{id.ToString().PadLeft(4, '0')}\";\r\n }\r\n}", "CusMethod": { "Name": "", "Params": [], @@ -668,9 +668,30 @@ "InheritClass": "", "Inherits": [] } + }, + { + "ID": "20250623083459471", + "Name": "AutoThread", + "Desc": "", + "ParentID": "", + "Type": "VsCode", + "Level": "Item", + "Statement": "", + "EditCode": "using Newtonsoft.Json;\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.Concurrent;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\nusing GZ.Modular.Redis;\r\nusing GZ.DB.Entity.OIDATABASE;\r\nusing GZ.DB.IRepository.OIDATABASE;\r\nusing GZ.DB.Repository.OIDATABASE;\r\nusing static System.Windows.Forms.VisualStyles.VisualStyleElement;\r\nusing System.Windows.Interop;\r\nusing static System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox;\r\n\r\nnamespace GZ.Projects.AuxAllWCS\r\n{\r\n public partial class AutoThread\r\n {\r\n\r\n private static AutoThread _instance;\r\n\r\n // 绉佹湁鏋勯�鍑芥暟闃叉澶栭儴瀹炰緥鍖朶r\n private AutoThread() { }\r\n\r\n public static AutoThread Instance\r\n {\r\n get\r\n {\r\n if (_instance == null)\r\n {\r\n _instance = new AutoThread();\r\n }\r\n return _instance;\r\n }\r\n }\r\n\r\n // 绾跨▼瀹夊叏鐨勫鎵樼紦瀛榎r\n private static readonly ConcurrentDictionary<string, Delegate> _methodCache = new ConcurrentDictionary<string, Delegate>();\r\n\r\n // 鏂规硶鎵ц鍣╘r\n public static object InvokeMethod(object instance, string methodName, params object[] args)\r\n {\r\n var cacheKey = $\"{instance.GetType().FullName}_{methodName}\";\r\n\r\n if (!_methodCache.TryGetValue(cacheKey, out var methodDelegate))\r\n {\r\n // 鑾峰彇鏂规硶淇℃伅\r\n var methodInfo = instance.GetType().GetMethod(\r\n methodName,\r\n BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);\r\n\r\n if (methodInfo == null)\r\n throw new MissingMethodException($\"Method {methodName} not found\");\r\n\r\n // 鍒涘缓濮旀墭骞剁紦瀛榎r\n methodDelegate = Delegate.CreateDelegate(\r\n GetDelegateType(methodInfo),\r\n instance,\r\n methodInfo);\r\n\r\n _methodCache.TryAdd(cacheKey, methodDelegate);\r\n }\r\n\r\n // 鎵ц濮旀墭\r\n return methodDelegate.DynamicInvoke(args);\r\n }\r\n\r\n // 鏍规嵁鏂规硶绛惧悕鐢熸垚瀵瑰簲鐨勫鎵樼被鍨媆r\n private static Type GetDelegateType(MethodInfo methodInfo)\r\n {\r\n var parameterTypes = methodInfo.GetParameters()\r\n .Select(p => p.ParameterType)\r\n .ToList();\r\n\r\n if (methodInfo.ReturnType == typeof(void))\r\n {\r\n return System.Linq.Expressions.Expression.GetActionType(parameterTypes.ToArray());\r\n }\r\n else\r\n {\r\n parameterTypes.Add(methodInfo.ReturnType);\r\n return System.Linq.Expressions.Expression.GetFuncType(parameterTypes.ToArray());\r\n }\r\n }\r\n\r\n /// <summary>\r\n /// 閰嶇疆鍒濆鍖栥�\r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n /// <param name=\"action\"></param>\r\n public void ThreadSettingInit(Tag tag, Action action)\r\n {\r\n Console.WriteLine(\"鍒濆鍖栭厤缃�绾跨▼ run \" + tag.Global.SettingsOver);\r\n if (tag.Global.SettingsOver == 0)\r\n {\r\n action?.Invoke();\r\n tag.Global.SettingsOver = 1;\r\n }\r\n else if (Settings.deviceInfos.Count == 0)\r\n {\r\n tag.Global.SettingsOver = 0;\r\n }\r\n }\r\n\r\n /// <summary>\r\n /// 鎹烽『1 淇″彿澶勭悊\r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void ThreadJS1(Tag tag)\r\n {\r\n Console.WriteLine($\"ThreadJS1 鎹烽『1 淇″彿澶勭悊 =================> \");\r\n var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 2 && x.deviceName == \"Js鎹烽『1\");\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.Js1.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[0]\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n //tag.Js1.D1212_LAST = 1;\r\n RedisHelper.Add($\"Js鎹烽『1.D1212_LAST\", \"1\", out string msg);\r\n }\r\n }\r\n if (tag.Js1.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 0)\r\n {\r\n //tag.Js1.D1212_LAST = 0; \r\n RedisHelper.Add($\"Js鎹烽『1.D1212_LAST\", \"0\", out string msg);\r\n }\r\n if (tag.Js1.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[1]\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n //tag.Js1.D1213_LAST = 1;\r\n RedisHelper.Add($\"Js鎹烽『1.D1213_LAST\", \"1\", out string msg);\r\n }\r\n }\r\n if (tag.Js1.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 0)\r\n {\r\n //tag.Js1.D1213_LAST = 0;\r\n RedisHelper.Add($\"Js鎹烽『1.D1213_LAST\", \"0\", out string msg);\r\n }\r\n }\r\n }\r\n /// <summary>\r\n /// 鎹烽『2 淇″彿澶勭悊\r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void ThreadJS2(Tag tag)\r\n {\r\n Console.WriteLine($\"ThreadJS2 鎹烽『2 淇″彿澶勭悊 =================> \");\r\n var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 2 && x.deviceName == \"Js鎹烽『2\");\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.Js2.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[0]\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n //tag.Js2.D1212_LAST = 1;\r\n\r\n RedisHelper.Add($\"Js鎹烽『1.D1212_LAST\", \"1\", out string msg);\r\n }\r\n }\r\n if (tag.Js2.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 0)\r\n {\r\n //tag.Js2.D1212_LAST = 0;\r\n\r\n RedisHelper.Add($\"Js鎹烽『1.D1212_LAST\", \"0\", out string msg);\r\n }\r\n if (tag.Js2.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 3) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[1]\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n //tag.Js2.D1213_LAST = 1;\r\n\r\n RedisHelper.Add($\"Js鎹烽『1.D1213_LAST\", \"1\", out string msg);\r\n }\r\n }\r\n if (tag.Js2.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1213, 2) == 0)\r\n {\r\n //tag.Js2.D1213_LAST = 0;\r\n\r\n RedisHelper.Add($\"Js鎹烽『1.D1213_LAST\", \"0\", out string msg);\r\n }\r\n }\r\n }\r\n /// <summary>\r\n /// 缁村笇灏� 宸r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void Threadwxr1L(Tag tag)\r\n {\r\n Console.WriteLine($\"Threadwxr1L 缁村笇灏� 宸�=================> \");\r\n var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"1\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr1.R44 && !tag.wxr1.R44_LAST && tag.wxr1.R10)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[0],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr1.R44_LAST = true;\r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n //TaskRepository ts = new TaskRepository();\r\n if (tag.wxr1.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n if (tag.wxr1.R10)\r\n {\r\n tag.wxr1.R10_LAST = false;\r\n }\r\n else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr1.R10 = true;\r\n tag.wxr1.R44_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /// <summary>\r\n /// 缁村笇灏� 鍙砛r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void Threadwxr1R(Tag tag)\r\n {\r\n Console.WriteLine($\"Threadwxr1R 缁村笇灏� 鍙�=================> \");\r\n var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"1\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr1.R46 && !tag.wxr1.R46_LAST && tag.wxr1.R11)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[1],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr1.R46_LAST = true;\r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n if (tag.wxr1.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n if (tag.wxr1.R11)\r\n {\r\n tag.wxr1.R11_LAST = false;\r\n }\r\n else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr1.R11 = true;\r\n tag.wxr1.R46_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /// <summary>\r\n /// 缁村笇灏� 宸r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void Threadwxr2L(Tag tag)\r\n {\r\n Console.WriteLine($\"Threadwxr2L 缁村笇灏� 宸�=================> \");\r\n var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"2\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr2.R44 && !tag.wxr2.R44_LAST && tag.wxr2.R10)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[0],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr2.R44_LAST = true;\r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n if (tag.wxr2.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n if (tag.wxr2.R10)\r\n {\r\n tag.wxr2.R10_LAST = false;\r\n }\r\n else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr2.R10 = true;\r\n tag.wxr2.R44_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /// <summary>\r\n /// 缁村笇灏� 鍙砛r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void Threadwxr2R(Tag tag)\r\n {\r\n Console.WriteLine($\"Threadwxr2R 缁村笇灏� 鍙�=================> \");\r\n\r\n var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"2\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr2.R46 && !tag.wxr2.R46_LAST && tag.wxr2.R11)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[1],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr2.R46_LAST = true;\r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[2], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n if (tag.wxr2.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n if (tag.wxr2.R11)\r\n {\r\n tag.wxr2.R11_LAST = false;\r\n }\r\n else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr2.R11 = true;\r\n tag.wxr2.R46_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n public void ThreadTaskRun(Tag tag, Func<TaskEntity, bool> action)\r\n {\r\n Console.WriteLine($\"ThreadTaskRun 浠诲姟涓嬪彂 =================> \");\r\n LogHelper.Info(\"ThreadTaskRun 浠诲姟涓嬪彂\");\r\n\r\n ITaskRepository taskservice = new TaskRepository();\r\n try\r\n {\r\n LogHelper.Info(\"浠诲姟涓嬪彂 ARG 浠诲姟 杩涘叆\");\r\n #region AGV浠诲姟涓嬪彂銆俓r\n\r\n var tklist = taskservice.FindList(x => x.S_B_STATE == \"鏈墽琛孿" && x.S_WORK_MODE == \"AGV\");\r\n if (tklist.Any())\r\n foreach (var tk in tklist.GroupBy(item =>\r\n {\r\n var ticks = item.T_CREATE.Ticks;\r\n return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));\r\n }).OrderBy(x => x.Key))\r\n {\r\n var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList();\r\n foreach (var t in ts)\r\n {\r\n var b = false;\r\n b = action?.Invoke(t) ?? false; //new ViewModel().RunTask(t);\r\n\r\n if (b)\r\n {\r\n t.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(t);\r\n }\r\n }\r\n break;\r\n }\r\n //foreach (var tk in tklist.GroupBy(item =>\r\n //{\r\n // var ticks = item.T_CREATE.Ticks;\r\n // return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));\r\n //}).OrderBy(x => x.Key))\r\n //if (tklist.Any())\r\n //{\r\n\r\n #endregion\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Info(ex.Message + ex.StackTrace);\r\n }\r\n try\r\n {\r\n #region Rgv\r\n\r\n LogHelper.Info($\"鏌ョ湅RGV 鐢甸噺锛氥�{tag.RGV.R褰撳墠鐢甸噺}銆�鍏呯數鐘舵�锛氥�{tag.RGV.R鍏呯數鐘舵�}銆�鏁呴殰浠g爜锛氥�{tag.RGV.RgvrunError}銆慭");\r\n\r\n if (tag.RGV.taskend == 125)\r\n {\r\n System.Threading.Thread.Sleep(3000);\r\n return;\r\n }\r\n LogHelper.Info(\"浠诲姟涓嬪彂 Rgv 浠诲姟 杩涘叆\");\r\n\r\n var task1Isrun = false;\r\n if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)\r\n {\r\n task1Isrun = true;\r\n //if (tag.RGV.bit1taskOver_LAST == 1)\r\n // RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n }\r\n var task2Isrun = false;\r\n if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1)\r\n {\r\n task2Isrun = true;\r\n //if (tag.RGV.bit2taskOver_LAST == 1)\r\n // RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n }\r\n if (task1Isrun || task2Isrun)\r\n {\r\n string mes = \"\";\r\n if (task1Isrun)\r\n mes += tag.RGV.ReadTask1No + \"鎵ц涓�..\";\r\n if (task2Isrun)\r\n mes += tag.RGV.ReadTask2No + \"鎵ц涓�..\";\r\n LogHelper.Info($\"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�\");\r\n System.Threading.Thread.Sleep(3000);\r\n return; \r\n }\r\n var thisOver = 0;\r\n TaskEntity task1 = null;\r\n TaskEntity task2 = null;\r\n\r\n LogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅浠诲姟銆媆");\r\n if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1)\r\n {\r\n var taskno = tag.RGV.ReadTask1No;\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟{tag.RGV.ReadTask1No}\");\r\n string tno = \"TN\" + (DateTime.Now.ToString(\"yy\")) + ((taskno.ToString()).PadLeft(8, '0'));\r\n task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);\r\n\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task1)}.bit1taskOver_LAST锛歿tag.RGV.bit1taskOver_LAST}\");\r\n if (tag.RGV.bit1taskOver_LAST == 0 && task1 != null)\r\n {\r\n if (task1.S_B_STATE != \"瀹屾垚\")\r\n {\r\n thisOver = 1;\r\n if (task1.S_B_STATE == \"鍙栬揣瀹屾垚\")\r\n {\r\n task1.S_B_STATE = \"瀹屾垚\";\r\n tag.RGV.ReadTask1No = 0;\r\n }\r\n else\r\n {\r\n task1.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n }\r\n tag.RGV.bit1taskOver = 0;\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟{task1.S_TASK_NO} 鐘舵�鍒囨崲涓簕task1.S_B_STATE}\");\r\n //tag.RGV.bit1taskOver_LAST = 1;\r\n RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"1\", out string msg);\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟鍐欏鐞哱");\r\n taskservice.Update(task1);\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟鏇存柊銆俓");\r\n }\r\n else\r\n {\r\n LogHelper.Info(\"RGV1宸ヤ綅浠诲姟宸茬粡瀹屾垚銆俓");\r\n }\r\n }\r\n }\r\n else if (tag.RGV.ReadTask1No == 0)\r\n {\r\n LogHelper.Info($\"RGV 1宸ヤ綅娌℃湁浠诲姟銆媆");\r\n }\r\n\r\n LogHelper.Info($\"鏌ョ湅RGV 2宸ヤ綅浠诲姟銆媆");\r\n if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver == 1)\r\n {\r\n var taskno = tag.RGV.ReadTask2No;\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟{tag.RGV.ReadTask2No}\");\r\n string tno = \"TN\" + (DateTime.Now.ToString(\"yy\")) + ((taskno.ToString()).PadLeft(8, '0'));\r\n task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);\r\n\r\n LogHelper.Info($\"RGV2宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task2)}.bit2taskOver_LAST锛歿tag.RGV.bit2taskOver_LAST}\");\r\n if (tag.RGV.bit2taskOver_LAST == 0 && task2 != null)\r\n {\r\n if (task2.S_B_STATE != \"瀹屾垚\")\r\n {\r\n thisOver = 2;\r\n if (task2.S_B_STATE == \"鍙栬揣瀹屾垚\")\r\n {\r\n task2.S_B_STATE = \"瀹屾垚\";\r\n tag.RGV.ReadTask2No = 0;\r\n }\r\n else\r\n {\r\n task2.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n }\r\n tag.RGV.bit2taskOver = 0;\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟{task2.S_TASK_NO} 鐘舵�鍒囨崲涓簕task2.S_B_STATE}\");\r\n RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"1\", out string msg);\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟鍐欏鐞哱");\r\n taskservice.Update(task2);\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟鏇存柊銆俓");\r\n }\r\n else\r\n {\r\n LogHelper.Info(\"RGV2宸ヤ綅浠诲姟宸茬粡瀹屾垚銆俓");\r\n }\r\n }\r\n }\r\n else if (tag.RGV.ReadTask2No == 0)\r\n {\r\n LogHelper.Info($\"RGV 2宸ヤ綅娌℃湁浠诲姟銆媆");\r\n }\r\n\r\n\r\n\r\n //if (thisOver > 0)\r\n //{\r\n // var v2 = RedisHelper.Get<WriteGroupEntity>(\"RGVQueue\", out string rev);\r\n // if (v2 != null)\r\n // {\r\n // LogHelper.Info($\"RGVQueue 璇诲埌缁撴灉-{JsonConvert.SerializeObject(v2)} \\n 涓嬪彂鍓嶈繘琛屾竻闄ゃ�\");\r\n // var b = RedisHelper.Remove(\"RGVQueue\", out rev);\r\n // }\r\n //}\r\n\r\n ///1 鏈夎揣 灏� 鍙栥� 1 娌¤揣 灏� 鍗歌揣锛�閮芥湁璐� 灏�鍗歌揣銆�閮芥病璐�灏�鍗竆r\n var tklist = taskservice.FindList(x => x.S_B_STATE == \"鏈墽琛孿" && x.S_WORK_MODE == \"RGV\").OrderBy(x => x.T_CREATE).ToList();\r\n if (task1 != null && task1.S_B_STATE != \"瀹屾垚\") //1鏈変换鍔r\n {\r\n if (task2 != null && task2.S_B_STATE != \"瀹屾垚\")// 1 鏈変换鍔� 2 鏈変换鍔°� \r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 涔熸湁浠诲姟{task2.S_TASK_NO}銆�寮�宸ヤ綅1 鍗歌揣銆俓");\r\n tag.RGV.workMod = 1;\r\n tag.RGV.taskmod = 2;\r\n tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));\r\n tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n //RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n //tag.RGV.taskend = 125;\r\n //Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\");\r\n\r\n LogHelper.Info($\"{task1.S_TASK_NO}> bit1taskOver_LAST 鍐�0\");\r\n RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n LogHelper.Info($\"{task1.S_TASK_NO}> end 鍐�125\");\r\n Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n }\r\n else //1鏈変换鍔� 2 娌′换鍔°� \r\n {\r\n\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔°�\");\r\n\r\n var leftSide = new List<string> { \"1023\", \"1020\" };\r\n var RightSide = new List<string> { \"1002\", \"1008\", \"1010\", \"1016\" };\r\n bool creT2 = false;\r\n\r\n // 2鍙�浼樺厛缁�1020 1008 1016\r\n var t2 = tklist.OrderBy(x => x.T_CREATE).ToList().Find(x => x.S_START_LOC == \"1020\" || x.S_START_LOC == \"1008\" || x.S_START_LOC == \"1016\");\r\n if (t2 != null)\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵�020 1008 1016鍙栬揣浠诲姟{t2.S_TASK_NO}銆俓");\r\n tag.RGV.workMod = 2;\r\n tag.RGV.taskmod = 1;\r\n tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n t2.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(t2);\r\n creT2 = true;\r\n System.Threading.Thread.Sleep(750);\r\n LogHelper.Info($\"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0\");\r\n RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n LogHelper.Info($\"{t2.S_TASK_NO}> end 鍐�125\");\r\n Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n }\r\n ////2 濡傛灉鏈夊悓渚у彇璐т换鍔°�灏卞彇銆傛病鏈塡r\n //else if (leftSide.Contains(task1.S_START_LOC))\r\n //{\r\n // leftSide.Remove(task1.S_START_LOC);\r\n // var lsde = leftSide.FirstOrDefault();\r\n // t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != \"1017\");\r\n // if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆俓r\n // {\r\n // LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔t2.S_TASK_NO}銆俓");\r\n // tag.RGV.workMod = 2;\r\n // tag.RGV.taskmod = 1;\r\n // tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n // tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n // t2.S_B_STATE = \"宸叉帹閫乗";\r\n // taskservice.Update(t2);\r\n // creT2 = true;\r\n // System.Threading.Thread.Sleep(750);\r\n // LogHelper.Info($\"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0\");\r\n // RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n // LogHelper.Info($\"{t2.S_TASK_NO}> end 鍐�125\");\r\n // Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n // }\r\n //}\r\n //else if (RightSide.Contains(task1.S_START_LOC))\r\n //{\r\n // RightSide.Remove(task1.S_START_LOC);\r\n // t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != \"1017\");\r\n // if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆俓r\n // {\r\n // LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚�1002,1010 鍙栬揣浠诲姟{t2.S_TASK_NO}銆俓");\r\n // tag.RGV.workMod = 2;\r\n // tag.RGV.taskmod = 1;\r\n // tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n // tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n // t2.S_B_STATE = \"宸叉帹閫乗";\r\n // taskservice.Update(t2);\r\n // creT2 = true;\r\n // System.Threading.Thread.Sleep(750);\r\n // LogHelper.Info($\"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�125\");\r\n // RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n // LogHelper.Info($\"{t2.S_TASK_NO}> end 鍐�125\");\r\n // Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n // }\r\n //}\r\n else //1 鐩存帴鍗歌揣銆�\r\n //if (!creT2)\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 娌℃湁鍚屼晶鍙栬揣浠诲姟 1宸ヤ綅鍗歌揣銆俓");\r\n tag.RGV.workMod = 1;\r\n tag.RGV.taskmod = 2;\r\n tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));\r\n tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n LogHelper.Info($\"{task1.S_TASK_NO}> bit1taskOver_LAST 鍐�0\");\r\n RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n LogHelper.Info($\"{task1.S_TASK_NO}> taskend 鍐�0\");\r\n Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n }\r\n }\r\n }\r\n else\r\n {\r\n if (task2 != null && task2.S_B_STATE != \"瀹屾垚\")// 1 娌′换鍔� 2 鏈変换鍔°� \r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 鏈変换鍔task2.S_TASK_NO}銆傚伐浣�鍗歌揣銆傘�\");\r\n //2 鍗歌揣銆俓r\n tag.RGV.workMod = 2;\r\n tag.RGV.taskmod = 2;\r\n tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4));\r\n tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n LogHelper.Info($\"{task2.S_TASK_NO}> bit2taskOver_LAST 鍐�0\");\r\n RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n //tag.RGV.taskend = 125;\r\n LogHelper.Info($\"{task2.S_TASK_NO}> taskend 鍐�25\");\r\n Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n }\r\n else if (tklist.Any()) //1mei 浠诲姟 2 娌′换鍔°�\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 涔熸病浠诲姟銆備紭鍏�宸ヤ綅缁堢偣1017浠诲姟銆傘�\");\r\n //銆佷笅 1017浠诲姟 缁�鍙峰伐浣嶃�\r\n //var lss = tklist.Take(2).ToList();\r\n var e1017first = tklist.Find(x => x.S_START_LOC == \"1002\" || x.S_START_LOC == \"1010\" || x.S_START_LOC == \"1023\");\r\n //if (e1017first != null)\r\n //{\r\n // e1017first = tklist.FirstOrDefault();\r\n //}\r\n if (e1017first != null)\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 浠诲姟宸ヤ綅2 娌′换鍔°� 1002 1010 1023鍙栬揣浠诲姟{e1017first.S_TASK_NO}銆俓");\r\n tag.RGV.workMod = 1;\r\n tag.RGV.taskmod = 1;\r\n uint tno = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(4));\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}> 杞崲鍚庝换鍔″彿{tno} 寮�鍐欏叆銆俓");\r\n tag.RGV.taskno1 = tno;\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}>寮�鍐欏叆 task1do>>{e1017first.S_START_LOC}銆俓");\r\n tag.RGV.task1do = Convert.ToUInt16(e1017first.S_START_LOC);\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}> 鏇存柊浠诲姟銆俓");\r\n e1017first.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(e1017first);\r\n System.Threading.Thread.Sleep(750);\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}> bit1taskOver_LAST 鍐�\");\r\n RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}> taskend 鍐�25\");\r\n //tag.RGV.taskend=125\r\n Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n }\r\n else\r\n {\r\n var t2 = tklist.OrderBy(x => x.T_CREATE).ToList().Find(x => x.S_START_LOC == \"1020\" || x.S_START_LOC == \"1008\" || x.S_START_LOC == \"1016\");\r\n if (tklist != null)\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 娌′换鍔″伐浣� 娌′换鍔°� 鎵�020 1008 1016鍙栬揣浠诲姟{t2.S_TASK_NO}銆俓");\r\n tag.RGV.workMod = 2;\r\n tag.RGV.taskmod = 1;\r\n tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n t2.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(t2);\r\n System.Threading.Thread.Sleep(750);\r\n LogHelper.Info($\"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0\");\r\n RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n LogHelper.Info($\"{t2.S_TASK_NO}> end 鍐�125\");\r\n Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n }\r\n }\r\n }\r\n }\r\n LogHelper.Info($\"rgv 澶勭悊瀹屾垚銆倀askend 125\");\r\n #endregion\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Info(ex.Message + ex.StackTrace);\r\n }\r\n }\r\n\r\n\r\n public void ThreadGrats(Tag tag, Action<HaiKangOrderInfo> continueTask)\r\n {\r\n Console.WriteLine($\"ThreadGrats 鍏夋爡澶勭悊 =================> \");\r\n var taskCOdes = new List<string> { \"Sarrive\", \"Srelease\", \"Earrive\", \"Erelease\" };\r\n TaskActRepository taskActRepository = new TaskActRepository();\r\n TaskRepository taskRepository = new TaskRepository();\r\n var requires = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0);\r\n foreach (var item in requires)\r\n {\r\n var tin = taskCOdes.IndexOf(item.S_ACTION_CODE);\r\n if (tin == -1)\r\n {\r\n item.N_CREATEMETHOD = -1;\r\n taskActRepository.Update(item);\r\n continue;\r\n }\r\n //var task = taskRepository.FindEntity(x => x.S_TASK_NO == item.S_TASK_NO);\r\n string loc = \"\";\r\n if (tin < 2)\r\n {\r\n loc = item.S_START_LOC;\r\n }\r\n else\r\n {\r\n loc = item.S_END_LOC;\r\n }\r\n if (loc == null) continue; else loc = loc.Trim();\r\n bool goin = tin % 2 == 0;\r\n bool continuuuuu = false;\r\n var dev = Settings.deviceInfos.Find(x => x.location.Contains(loc));\r\n if (dev != null)\r\n {\r\n var V = dev.location.ToList().FindIndex(x => x == loc) == 0;\r\n //杞﹁蛋浜� 寮�厜鏍匼r\n if (!goin)\r\n {\r\n if (dev.deviceType == 1)\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin ? \"鍏抽棴\" : \"寮�惎\")} 鐢宠銆俓" + string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"R02\" : \"R04\"), \"true\", dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"R02\" : \"R04\"), \"true\", dev.deviceName + \"Queue\");\r\n\r\n }\r\n else if (dev.deviceType == 2)\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin ? \"鍏抽棴\" : \"寮�惎\")} 鐢宠銆俓" + string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"D1222\" : \"D1223\"), \"1\", dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"D1222\" : \"D1223\"), \"1\", dev.deviceName + \"Queue\");\r\n }\r\n\r\n item.N_CREATEMETHOD = 1;\r\n taskActRepository.Update(item);\r\n }\r\n //杞﹁杩涘叆浜や簰銆俓r\n else\r\n {\r\n if (dev.deviceType == 1)\r\n {\r\n var tf = Conn.榛樿Redis.GetValue(dev.deviceName + \".\" + (V ? \"R50\" : \"R52\"));//璇诲叧闂姸鎬乗r\n if (tf?.ToLower() == \"true\")\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin ? \"鍏抽棴\" : \"寮�惎\")} 鐢宠銆�宸茬粡鍏抽棴锛乗");\r\n continuuuuu = true;\r\n }\r\n else\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin ? \"鍏抽棴\" : \"寮�惎\")} 鐢宠銆俓" + string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"R01\" : \"R03\"), \"true\", dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"R01\" : \"R03\"), \"true\", dev.deviceName + \"Queue\");\r\n }\r\n\r\n }\r\n else if (dev.deviceType == 2)\r\n {\r\n var tf = Conn.榛樿Redis.GetValue(dev.deviceName + \".D1202\");\r\n int numm = int.Parse(string.IsNullOrEmpty(tf) ? \"0\" : tf);\r\n if (TcpServer.GetBitdata(numm, (V ? 0 : 1)) == 1)\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin ? \"鍏抽棴\" : \"寮�惎\")} 鐢宠銆�宸茬粡鍏抽棴锛乗");\r\n continuuuuu = true;\r\n }\r\n else\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin ? \"鍏抽棴\" : \"寮�惎\")} 鐢宠銆俓" + string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"D1220\" : \"D1221\"), dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"D1220\" : \"D1221\"), \"1\", dev.deviceName + \"Queue\");\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n if (continuuuuu)\r\n {\r\n LogHelper.Info($\"{item.S_TASK_NO}{item.S_ACTION_CODE} 杞﹁締鍙戦�缁х画浠诲姟锛乗");\r\n continueTask?.Invoke(new HaiKangOrderInfo\r\n {\r\n reqCode = item.S_ID.Replace(\"-\", \"\"),\r\n taskCode = item.S_TASK_NO\r\n });\r\n item.N_CREATEMETHOD = 1;\r\n taskActRepository.Update(item);\r\n }\r\n }\r\n System.Threading.Thread.Sleep(3000);\r\n //閲嶇疆淇″彿\r\n foreach (var dev in Settings.deviceInfos.FindAll(x => x.deviceType == 2))\r\n {\r\n var tf = Conn.榛樿Redis.GetValue(dev.deviceName + \".D1202\");\r\n int numm = int.Parse(string.IsNullOrEmpty(tf) ? \"0\" : tf);\r\n if (TcpServer.GetBitdata(numm, 0) == 0)\r\n {\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1220\", \"0\", dev.deviceName + \"Queue\");\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1222\", \"0\", dev.deviceName + \"Queue\");\r\n }\r\n else if (TcpServer.GetBitdata(numm, 1) == 0)\r\n {\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1221\", \"0\", dev.deviceName + \"Queue\");\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1223\", \"0\", dev.deviceName + \"Queue\");\r\n }\r\n }\r\n\r\n }\r\n /// <summary>\r\n /// 1020 1023绌烘涓嬬嚎\r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void ThreadEdown(Tag tag)\r\n {\r\n Console.WriteLine($\"ThreadEdown 20 23 = 绌轰笅妫�祴 =================> \");\r\n TaskRepository taskRepository = new TaskRepository();\r\n foreach (var Bssx in new string[] { \"1020\", \"1023\" })\r\n {\r\n var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.R鎵樼洏鐮乗"), typeof(System.String));\r\n Console.WriteLine($\"{Bssx} 绌轰笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇 \");\r\n if (RtaskState == 3 && RtaskState_LAST == 0)\r\n {\r\n var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != \"瀹屾垚\" && x.S_B_STATE != \"鍙栨秷\");\r\n string msg = \"\";\r\n if (task != null)\r\n {\r\n Console.WriteLine($\"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n LogHelper.Info($\"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n continue;\r\n }\r\n try\r\n {\r\n var listtep = new List<string>();\r\n if (Bssx == \"1020\")\r\n {\r\n if (tag.SF涓嬫枡浣�RArrive1003 == 1)\r\n {\r\n listtep = new List<string> { \"1012\", \"1004\" };\r\n }\r\n else\r\n {\r\n listtep = new List<string> { \"1004\", \"1012\" };\r\n }\r\n }\r\n else\r\n {\r\n if (tag.SF涓嬫枡浣�RArrive1005 == 1)\r\n {\r\n listtep = new List<string> { \"1014\", \"1006\" };\r\n }\r\n else\r\n {\r\n listtep = new List<string> { \"1006\", \"1014\" };\r\n }\r\n }\r\n\r\n foreach (var item in listtep)//(Bssx == \"1020\" ? new string[] { \"1004\", \"1012\" } : new string[] { \"1006\", \"1014\" }))\r\n {\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 == 5 && R5绌洪棽_LAST == 0 && task == null)\r\n {\r\n task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != \"瀹屾垚\" && x.S_B_STATE != \"鍙栨秷\");\r\n msg = \"\";\r\n if (task != null)\r\n {\r\n Console.WriteLine($\" {item}鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n LogHelper.Info($\" {item}鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n continue;\r\n }\r\n\r\n var b = TaskProcess.CreateTask(\"\", Bssx, item, \"绌轰笂RGV\", 5, new List<string> { R鎵樼洏鐮�}, \"RGV\");\r\n if (b)\r\n {\r\n LogHelper.Debug($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{Bssx}>to {item}寮�鍒涘缓鎴愬姛\");\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out msg);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"1\", out msg);\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n break;\r\n }\r\n }\r\n else if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out msg);\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n }\r\n }\r\n System.Threading.Thread.Sleep(1000);\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Error(ex.Message, ex);\r\n Console.WriteLine(ex.Message + ex.StackTrace);\r\n }\r\n }\r\n else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n }\r\n System.Threading.Thread.Sleep(2000);\r\n }\r\n\r\n foreach (var item in new string[] { \"1004\", \"1012\", \"1006\", \"1014\", \"1026\", \"1017\" })\r\n {\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n }\r\n }\r\n }\r\n\r\n public void ThreadDdown(Tag tag)\r\n {\r\n Console.WriteLine($\"ThreadDdown 08 10 ==================> 1026\");\r\n TaskRepository taskRepository = new TaskRepository();\r\n foreach (var Bssx in new string[] { \"1008\", \"1016\" })\r\n {\r\n var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.R鎵樼洏鐮乗"), typeof(System.String));\r\n Console.WriteLine($\"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇\");\r\n if (RtaskState == 3 && RtaskState_LAST == 0)\r\n {\r\n var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != \"瀹屾垚\" && x.S_B_STATE != \"鍙栨秷\");\r\n string msg = \"\";\r\n if (task != null)\r\n {\r\n Console.WriteLine($\"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n LogHelper.Info($\"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n continue;\r\n }\r\n\r\n var item = \"1026\";\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 == 5 && R5绌洪棽_LAST == 0)\r\n {\r\n task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != \"瀹屾垚\" && x.S_B_STATE != \"鍙栨秷\");\r\n msg = \"\";\r\n if (task != null)\r\n {\r\n Console.WriteLine($\"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n LogHelper.Info($\"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n continue;\r\n }\r\n var b = TaskProcess.CreateTask(\"\", Bssx, item, \"婊¤浆1026\", 5, new List<string> { R鎵樼洏鐮�}, \"RGV\");\r\n if (b)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out msg);\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"1\", out string msg2);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n break;\r\n }\r\n }\r\n else if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out string msg2);\r\n }\r\n }\r\n else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n }\r\n System.Threading.Thread.Sleep(2000);\r\n }\r\n }\r\n\r\n public void Thread0210Down(Tag tag)\r\n {\r\n Console.WriteLine($\"Thread0210Down ==================>\");\r\n TaskRepository taskRepository = new TaskRepository();\r\n foreach (var Bssx in new string[] { \"1002\", \"1010\" })\r\n {\r\n var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.R鎵樼洏鐮乗"), typeof(System.String));\r\n Console.WriteLine($\"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇\");\r\n if (RtaskState == 3 && RtaskState_LAST == 0)\r\n {\r\n var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != \"瀹屾垚\" && x.S_B_STATE != \"鍙栨秷\");\r\n string msg = \"\";\r\n if (task != null)\r\n {\r\n Console.WriteLine($\"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n LogHelper.Info($\"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n continue;\r\n }\r\n var item = \"1017\";\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 == 5 && R5绌洪棽_LAST == 0)\r\n {\r\n task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != \"瀹屾垚\" && x.S_B_STATE != \"鍙栨秷\");\r\n msg = \"\";\r\n if (task != null)\r\n {\r\n Console.WriteLine($\"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n LogHelper.Info($\"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n continue;\r\n }\r\n var b = TaskProcess.CreateTask(\"\", Bssx, item, \"婊¤浆1017\", 5, new List<string> { R鎵樼洏鐮�}, \"RGV\");\r\n if (b)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out msg);\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"1\", out string msg1);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n break;\r\n }\r\n }\r\n else if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out string msg1);\r\n }\r\n }\r\n else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n }\r\n System.Threading.Thread.Sleep(2000);\r\n }\r\n }\r\n\r\n\r\n public void Thread涓嬫枡浣嶆娴�Tag tag)\r\n {\r\n Console.WriteLine($\"Thread涓嬫枡浣嶆娴� =====>\");\r\n foreach (var ssx in new string[] { \"1003\", \"1005\", \"1011\", \"1013\" })\r\n {\r\n var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"FNK1003051113.RArrive{ssx}\"), typeof(System.UInt16));\r\n var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"FNK1003051113.RArrive{ssx}_LAST\"), typeof(System.UInt16));\r\n if (RArrive == 1 && RArriveLast == 0)\r\n {\r\n if (ssx == \"1005\" && tag.SF涓嬫枡浣�WRelease1005 == 0)\r\n {\r\n tag.FNK1.D2215 = 1;\r\n //tag.SF涓嬫枡浣�RArrive1005_LAST = 1;\r\n RedisHelper.Add($\"FNK1003051113.RArrive1005_LAST\", \"1\", out string msg);\r\n\r\n //tag.SF涓嬫枡浣�WRelease1005 = 0;\r\n //tag.SF涓嬫枡浣�WSafe0305 = 0;\r\n }\r\n else if (ssx == \"1003\" && tag.SF涓嬫枡浣�WRelease1003 == 0)\r\n {\r\n tag.FNK1.D2210 = 1;\r\n //tag.SF涓嬫枡浣�RArrive1003_LAST = 1;\r\n\r\n RedisHelper.Add($\"FNK1003051113.RArrive1003_LAST\", \"1\", out string msg);\r\n\r\n //tag.SF涓嬫枡浣�WRelease1003 = 0;\r\n //tag.SF涓嬫枡浣�WSafe0305 = 0;\r\n }\r\n else if (ssx == \"1013\" && tag.SF涓嬫枡浣�WRelease1013 == 0)\r\n {\r\n tag.FNK2.D2215 = 1;\r\n //tag.SF涓嬫枡浣�RArrive1013_LAST = 1;\r\n RedisHelper.Add($\"FNK1003051113.RArrive1013_LAST\", \"1\", out string msg);\r\n\r\n //tag.SF涓嬫枡浣�WRelease1013 = 0;\r\n //tag.SF涓嬫枡浣�WSafe1113 = 0;\r\n }\r\n else if (ssx == \"1011\" && tag.SF涓嬫枡浣�WRelease1011 == 0)\r\n {\r\n tag.FNK2.D2210 = 1;\r\n //tag.SF涓嬫枡浣�RArrive1011_LAST = 1;\r\n RedisHelper.Add($\"FNK1003051113.RArrive1011_LAST\", \"1\", out string msg);\r\n\r\n //tag.SF涓嬫枡浣�WRelease1011 = 0;\r\n //tag.SF涓嬫枡浣�WSafe1113 = 0;\r\n }\r\n }\r\n else if (RArrive == 0 && RArriveLast == 1)\r\n {\r\n RedisHelper.Add($\"FNK1003051113.RArrive{ssx}_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"FNK1003051113.RArrive{ssx}_LAST\", \"0\", $\"FNK1003051113Queue\");\r\n }\r\n }\r\n }\r\n\r\n public void ThreadFNK1Over(Tag tag)\r\n {\r\n Console.WriteLine($\"ThreadFNK1Over =====>\");\r\n if (tag.FNK1.D2217 == 1 && tag.FNK1.D2217_LAST == 0)\r\n {\r\n tag.FNK1.D2215 = 0;\r\n //tag.FNK1.D2212_LAST = 1;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2217_LAST\", \"1\", out string msg);\r\n\r\n tag.SF涓嬫枡浣�WRelease1005 = 1;\r\n tag.SF涓嬫枡浣�WSafe0305 = 1;\r\n System.Threading.Thread.Sleep(1000);\r\n RedisHelper.Add($\"FNK1003051113.RArrive1005_LAST\", \"0\", out msg);\r\n }\r\n if (tag.FNK1.D2216 == 1)\r\n tag.FNK1.D2215 = 0;\r\n else if (tag.FNK1.D2217 == 0 && tag.FNK1.D2217_LAST == 1)\r\n //tag.FNK1.D2217_LAST = 0;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2217_LAST\", \"0\", out string msg);\r\n\r\n if (tag.FNK1.D2212 == 1 && tag.FNK1.D2212_LAST == 0)\r\n {\r\n tag.FNK1.D2210 = 0;\r\n //tag.FNK1.D2217_LAST = 1;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2212_LAST\", \"1\", out string msg);\r\n tag.SF涓嬫枡浣�WRelease1003 = 1;\r\n tag.SF涓嬫枡浣�WSafe0305 = 1;\r\n System.Threading.Thread.Sleep(1000);\r\n RedisHelper.Add($\"FNK1003051113.RArrive1003_LAST\", \"0\", out msg);\r\n }\r\n //else if (tag.FNK1.D2211 == 1)\r\n // tag.FNK1.D2210 = 0;\r\n else if (tag.FNK1.D2212 == 0 && tag.FNK1.D2212_LAST == 1)\r\n {\r\n //tag.FNK1.D2212_LAST = 0;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2212_LAST\", \"0\", out string msg);\r\n }\r\n if (tag.FNK1.D2211 == 1)\r\n tag.FNK1.D2210 = 0;\r\n\r\n }\r\n public void ThreadFNK2Over(Tag tag)\r\n {\r\n Console.WriteLine($\"ThreadFNK2Over =====>\");\r\n if (tag.FNK2.D2217 == 1 && tag.FNK2.D2217_LAST == 0)\r\n {\r\n tag.FNK2.D2215 = 0;\r\n //tag.FNK2.D2212_LAST = 1;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2217_LAST\", \"1\", out string msg);\r\n\r\n tag.SF涓嬫枡浣�WRelease1013 = 1;\r\n tag.SF涓嬫枡浣�WSafe1113 = 1;\r\n System.Threading.Thread.Sleep(1000);\r\n RedisHelper.Add($\"FNK1003051113.RArrive1013_LAST\", \"0\", out msg);\r\n }\r\n else if (tag.FNK2.D2217 == 0 && tag.FNK2.D2217_LAST == 1)\r\n //tag.FNK2.D2217_LAST = 0;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2217_LAST\", \"0\", out string msg);\r\n\r\n if (tag.FNK2.D2216 == 1)\r\n tag.FNK2.D2215 = 0;\r\n\r\n if (tag.FNK2.D2212 == 1 && tag.FNK2.D2212_LAST == 0)\r\n {\r\n tag.FNK2.D2210 = 0;\r\n //tag.FNK2.D2217_LAST = 1;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2212_LAST\", \"1\", out string msg);\r\n\r\n tag.SF涓嬫枡浣�WRelease1011 = 1;\r\n tag.SF涓嬫枡浣�WSafe1113 = 1;\r\n System.Threading.Thread.Sleep(1000);\r\n RedisHelper.Add($\"FNK1003051113.RArrive1011_LAST\", \"0\", out msg);\r\n }\r\n else if (tag.FNK2.D2212 == 0 && tag.FNK2.D2212_LAST == 1)\r\n {\r\n //tag.FNK2.D2212_LAST = 0;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2212_LAST\", \"0\", out string msg);\r\n }\r\n if (tag.FNK2.D2211 == 1)\r\n tag.FNK2.D2210 = 0;\r\n\r\n }\r\n\r\n public void Thread1019Down(Tag tag)\r\n {\r\n Console.WriteLine($\"1019浠诲姟鐘舵�锛� =====>\");\r\n Console.WriteLine($\"1019浠诲姟鐘舵�锛歿tag.SA1019.RtaskState}- barcode:{tag.SA1019.R鎵樼洏鐮亇- 绌洪棽{tag.SA1019.R5绌洪棽}\");\r\n }\r\n public void Thread1025Up(Tag tag)\r\n {\r\n Console.WriteLine($\"SA1025 浠诲姟鐘舵�锛� =====>\");\r\n Console.WriteLine($\"SA1025 浠诲姟鐘舵�锛歿tag.SA1025.RtaskState}- 绌洪棽{tag.SA1025.R5绌洪棽}\");\r\n }\r\n public void Thread1022Up(Tag tag)\r\n {\r\n Console.WriteLine($\"SA1022 =====>\");\r\n Console.WriteLine($\"SA1022 浠诲姟鐘舵�锛歿tag.SA1022.RtaskState}- 绌洪棽{tag.SA1022.R5绌洪棽}\");\r\n }\r\n public void Thread1030Down(Tag tag)\r\n {\r\n Console.WriteLine($\"SA1030 浠诲姟鐘舵�锛� =====>\");\r\n Console.WriteLine($\"SA1030 浠诲姟鐘舵�锛歿tag.SA1030.RtaskState}- 绌洪棽{tag.SA1030.R5绌洪棽}-->瀵瑰簲缁堢偣2001>绌洪棽5锛歿tag.SA2001.R5绌洪棽}\");\r\n }\r\n public void Thread2030Down(Tag tag)\r\n {\r\n Console.WriteLine($\"SA2030 浠诲姟鐘舵�锛� =====>\");\r\n Console.WriteLine($\"SA2030 浠诲姟鐘舵�锛歿tag.SA2030.RtaskState}- 绌洪棽{tag.SA2030.R5绌洪棽} - barcode:{tag.SA2030.R鎵樼洏鐮亇\");\r\n }\r\n\r\n\r\n }\r\n}\r\n", + "Code": "using Newtonsoft.Json;\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.Concurrent;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\nusing GZ.Modular.Redis;\r\nusing GZ.DB.Entity.OIDATABASE;\r\nusing GZ.DB.IRepository.OIDATABASE;\r\nusing GZ.DB.Repository.OIDATABASE;\r\nusing static System.Windows.Forms.VisualStyles.VisualStyleElement;\r\nusing System.Windows.Interop;\r\nusing static System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox;\r\n\r\nnamespace GZ.Projects.AuxAllWCS\r\n{\r\n public partial class AutoThread\r\n {\r\n\r\n private static AutoThread _instance;\r\n\r\n // 绉佹湁鏋勯�鍑芥暟闃叉澶栭儴瀹炰緥鍖朶r\n private AutoThread() { }\r\n\r\n public static AutoThread Instance\r\n {\r\n get\r\n {\r\n if (_instance == null)\r\n {\r\n _instance = new AutoThread();\r\n }\r\n return _instance;\r\n }\r\n }\r\n\r\n // 绾跨▼瀹夊叏鐨勫鎵樼紦瀛榎r\n private static readonly ConcurrentDictionary<string, Delegate> _methodCache = new ConcurrentDictionary<string, Delegate>();\r\n\r\n // 鏂规硶鎵ц鍣╘r\n public static object InvokeMethod(object instance, string methodName, params object[] args)\r\n {\r\n var cacheKey = $\"{instance.GetType().FullName}_{methodName}\";\r\n\r\n if (!_methodCache.TryGetValue(cacheKey, out var methodDelegate))\r\n {\r\n // 鑾峰彇鏂规硶淇℃伅\r\n var methodInfo = instance.GetType().GetMethod(\r\n methodName,\r\n BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);\r\n\r\n if (methodInfo == null)\r\n throw new MissingMethodException($\"Method {methodName} not found\");\r\n\r\n // 鍒涘缓濮旀墭骞剁紦瀛榎r\n methodDelegate = Delegate.CreateDelegate(\r\n GetDelegateType(methodInfo),\r\n instance,\r\n methodInfo);\r\n\r\n _methodCache.TryAdd(cacheKey, methodDelegate);\r\n }\r\n\r\n // 鎵ц濮旀墭\r\n return methodDelegate.DynamicInvoke(args);\r\n }\r\n\r\n // 鏍规嵁鏂规硶绛惧悕鐢熸垚瀵瑰簲鐨勫鎵樼被鍨媆r\n private static Type GetDelegateType(MethodInfo methodInfo)\r\n {\r\n var parameterTypes = methodInfo.GetParameters()\r\n .Select(p => p.ParameterType)\r\n .ToList();\r\n\r\n if (methodInfo.ReturnType == typeof(void))\r\n {\r\n return System.Linq.Expressions.Expression.GetActionType(parameterTypes.ToArray());\r\n }\r\n else\r\n {\r\n parameterTypes.Add(methodInfo.ReturnType);\r\n return System.Linq.Expressions.Expression.GetFuncType(parameterTypes.ToArray());\r\n }\r\n }\r\n\r\n /// <summary>\r\n /// 閰嶇疆鍒濆鍖栥�\r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n /// <param name=\"action\"></param>\r\n public void ThreadSettingInit(Tag tag, Action action)\r\n {\r\n Console.WriteLine(\"鍒濆鍖栭厤缃�绾跨▼ run \" + tag.Global.SettingsOver);\r\n if (tag.Global.SettingsOver == 0)\r\n {\r\n action?.Invoke();\r\n tag.Global.SettingsOver = 1;\r\n }\r\n else if (Settings.deviceInfos.Count == 0)\r\n {\r\n tag.Global.SettingsOver = 0;\r\n }\r\n }\r\n\r\n /// <summary>\r\n /// 鎹烽『1 淇″彿澶勭悊\r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void ThreadJS1(Tag tag)\r\n {\r\n Console.WriteLine($\"ThreadJS1 鎹烽『1 淇″彿澶勭悊 =================> \");\r\n var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 2 && x.deviceName == \"Js鎹烽『1\");\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.Js1.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[0]\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n //tag.Js1.D1212_LAST = 1;\r\n RedisHelper.Add($\"Js鎹烽『1.D1212_LAST\", \"1\", out string msg);\r\n }\r\n }\r\n if (tag.Js1.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 0)\r\n {\r\n //tag.Js1.D1212_LAST = 0; \r\n RedisHelper.Add($\"Js鎹烽『1.D1212_LAST\", \"0\", out string msg);\r\n }\r\n if (tag.Js1.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[1]\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n //tag.Js1.D1213_LAST = 1;\r\n RedisHelper.Add($\"Js鎹烽『1.D1213_LAST\", \"1\", out string msg);\r\n }\r\n }\r\n if (tag.Js1.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 0)\r\n {\r\n //tag.Js1.D1213_LAST = 0;\r\n RedisHelper.Add($\"Js鎹烽『1.D1213_LAST\", \"0\", out string msg);\r\n }\r\n }\r\n }\r\n /// <summary>\r\n /// 鎹烽『2 淇″彿澶勭悊\r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void ThreadJS2(Tag tag)\r\n {\r\n Console.WriteLine($\"ThreadJS2 鎹烽『2 淇″彿澶勭悊 =================> \");\r\n var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 2 && x.deviceName == \"Js鎹烽『2\");\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.Js2.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[0]\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n //tag.Js2.D1212_LAST = 1;\r\n\r\n RedisHelper.Add($\"Js鎹烽『1.D1212_LAST\", \"1\", out string msg);\r\n }\r\n }\r\n if (tag.Js2.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 0)\r\n {\r\n //tag.Js2.D1212_LAST = 0;\r\n\r\n RedisHelper.Add($\"Js鎹烽『1.D1212_LAST\", \"0\", out string msg);\r\n }\r\n if (tag.Js2.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 3) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[1]\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n //tag.Js2.D1213_LAST = 1;\r\n\r\n RedisHelper.Add($\"Js鎹烽『1.D1213_LAST\", \"1\", out string msg);\r\n }\r\n }\r\n if (tag.Js2.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1213, 2) == 0)\r\n {\r\n //tag.Js2.D1213_LAST = 0;\r\n\r\n RedisHelper.Add($\"Js鎹烽『1.D1213_LAST\", \"0\", out string msg);\r\n }\r\n }\r\n }\r\n /// <summary>\r\n /// 缁村笇灏� 宸r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void Threadwxr1L(Tag tag)\r\n {\r\n Console.WriteLine($\"Threadwxr1L 缁村笇灏� 宸�=================> \");\r\n var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"1\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr1.R44 && !tag.wxr1.R44_LAST && tag.wxr1.R10)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[0],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr1.R44_LAST = true;\r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n //TaskRepository ts = new TaskRepository();\r\n if (tag.wxr1.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n if (tag.wxr1.R10)\r\n {\r\n tag.wxr1.R10_LAST = false;\r\n }\r\n else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr1.R10 = true;\r\n tag.wxr1.R44_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /// <summary>\r\n /// 缁村笇灏� 鍙砛r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void Threadwxr1R(Tag tag)\r\n {\r\n Console.WriteLine($\"Threadwxr1R 缁村笇灏� 鍙�=================> \");\r\n var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"1\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr1.R46 && !tag.wxr1.R46_LAST && tag.wxr1.R11)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[1],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr1.R46_LAST = true;\r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n if (tag.wxr1.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n if (tag.wxr1.R11)\r\n {\r\n tag.wxr1.R11_LAST = false;\r\n }\r\n else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr1.R11 = true;\r\n tag.wxr1.R46_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /// <summary>\r\n /// 缁村笇灏� 宸r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void Threadwxr2L(Tag tag)\r\n {\r\n Console.WriteLine($\"Threadwxr2L 缁村笇灏� 宸�=================> \");\r\n var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"2\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr2.R44 && !tag.wxr2.R44_LAST && tag.wxr2.R10)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[0],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr2.R44_LAST = true;\r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n if (tag.wxr2.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n if (tag.wxr2.R10)\r\n {\r\n tag.wxr2.R10_LAST = false;\r\n }\r\n else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr2.R10 = true;\r\n tag.wxr2.R44_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /// <summary>\r\n /// 缁村笇灏� 鍙砛r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void Threadwxr2R(Tag tag)\r\n {\r\n Console.WriteLine($\"Threadwxr2R 缁村笇灏� 鍙�=================> \");\r\n\r\n var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"2\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr2.R46 && !tag.wxr2.R46_LAST && tag.wxr2.R11)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[1],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr2.R46_LAST = true;\r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[2], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n if (tag.wxr2.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n if (tag.wxr2.R11)\r\n {\r\n tag.wxr2.R11_LAST = false;\r\n }\r\n else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr2.R11 = true;\r\n tag.wxr2.R46_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n public void ThreadTaskRun(Tag tag, Func<TaskEntity, bool> action)\r\n {\r\n Console.WriteLine($\"ThreadTaskRun 浠诲姟涓嬪彂 =================> \");\r\n LogHelper.Info(\"ThreadTaskRun 浠诲姟涓嬪彂\");\r\n\r\n ITaskRepository taskservice = new TaskRepository();\r\n try\r\n {\r\n LogHelper.Info(\"浠诲姟涓嬪彂 ARG 浠诲姟 杩涘叆\");\r\n #region AGV浠诲姟涓嬪彂銆俓r\n\r\n var tklist = taskservice.FindList(x => x.S_B_STATE == \"鏈墽琛孿" && x.S_WORK_MODE == \"AGV\");\r\n if (tklist.Any())\r\n foreach (var tk in tklist.GroupBy(item =>\r\n {\r\n var ticks = item.T_CREATE.Ticks;\r\n return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));\r\n }).OrderBy(x => x.Key))\r\n {\r\n var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList();\r\n foreach (var t in ts)\r\n {\r\n var b = false;\r\n b = action?.Invoke(t) ?? false; //new ViewModel().RunTask(t);\r\n\r\n if (b)\r\n {\r\n t.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(t);\r\n }\r\n }\r\n break;\r\n }\r\n //foreach (var tk in tklist.GroupBy(item =>\r\n //{\r\n // var ticks = item.T_CREATE.Ticks;\r\n // return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));\r\n //}).OrderBy(x => x.Key))\r\n //if (tklist.Any())\r\n //{\r\n\r\n #endregion\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Info(ex.Message + ex.StackTrace);\r\n }\r\n try\r\n {\r\n #region Rgv\r\n\r\n LogHelper.Info($\"鏌ョ湅RGV 鐢甸噺锛氥�{tag.RGV.R褰撳墠鐢甸噺}銆�鍏呯數鐘舵�锛氥�{tag.RGV.R鍏呯數鐘舵�}銆�鏁呴殰浠g爜锛氥�{tag.RGV.RgvrunError}銆慭");\r\n\r\n if (tag.RGV.taskend == 125)\r\n {\r\n System.Threading.Thread.Sleep(3000);\r\n return;\r\n }\r\n LogHelper.Info(\"浠诲姟涓嬪彂 Rgv 浠诲姟 杩涘叆\");\r\n\r\n var task1Isrun = false;\r\n if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)\r\n {\r\n task1Isrun = true;\r\n //if (tag.RGV.bit1taskOver_LAST == 1)\r\n // RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n }\r\n var task2Isrun = false;\r\n if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1)\r\n {\r\n task2Isrun = true;\r\n //if (tag.RGV.bit2taskOver_LAST == 1)\r\n // RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n }\r\n if (task1Isrun || task2Isrun)\r\n {\r\n string mes = \"\";\r\n if (task1Isrun)\r\n mes += tag.RGV.ReadTask1No + \"鎵ц涓�..\";\r\n if (task2Isrun)\r\n mes += tag.RGV.ReadTask2No + \"鎵ц涓�..\";\r\n LogHelper.Info($\"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�\");\r\n System.Threading.Thread.Sleep(3000);\r\n return; \r\n }\r\n var thisOver = 0;\r\n TaskEntity task1 = null;\r\n TaskEntity task2 = null;\r\n\r\n LogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅浠诲姟銆媆");\r\n if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1)\r\n {\r\n var taskno = tag.RGV.ReadTask1No;\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟{tag.RGV.ReadTask1No}\");\r\n string tno = \"TN\" + (DateTime.Now.ToString(\"yy\")) + ((taskno.ToString()).PadLeft(8, '0'));\r\n task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);\r\n\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task1)}.bit1taskOver_LAST锛歿tag.RGV.bit1taskOver_LAST}\");\r\n if (tag.RGV.bit1taskOver_LAST == 0 && task1 != null)\r\n {\r\n if (task1.S_B_STATE != \"瀹屾垚\")\r\n {\r\n thisOver = 1;\r\n if (task1.S_B_STATE == \"鍙栬揣瀹屾垚\")\r\n {\r\n task1.S_B_STATE = \"瀹屾垚\";\r\n tag.RGV.ReadTask1No = 0;\r\n }\r\n else\r\n {\r\n task1.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n }\r\n tag.RGV.bit1taskOver = 0;\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟{task1.S_TASK_NO} 鐘舵�鍒囨崲涓簕task1.S_B_STATE}\");\r\n //tag.RGV.bit1taskOver_LAST = 1;\r\n RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"1\", out string msg);\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟鍐欏鐞哱");\r\n taskservice.Update(task1);\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟鏇存柊銆俓");\r\n }\r\n else\r\n {\r\n LogHelper.Info(\"RGV1宸ヤ綅浠诲姟宸茬粡瀹屾垚銆俓");\r\n }\r\n }\r\n }\r\n else if (tag.RGV.ReadTask1No == 0)\r\n {\r\n LogHelper.Info($\"RGV 1宸ヤ綅娌℃湁浠诲姟銆媆");\r\n }\r\n\r\n LogHelper.Info($\"鏌ョ湅RGV 2宸ヤ綅浠诲姟銆媆");\r\n if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver == 1)\r\n {\r\n var taskno = tag.RGV.ReadTask2No;\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟{tag.RGV.ReadTask2No}\");\r\n string tno = \"TN\" + (DateTime.Now.ToString(\"yy\")) + ((taskno.ToString()).PadLeft(8, '0'));\r\n task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);\r\n\r\n LogHelper.Info($\"RGV2宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task2)}.bit2taskOver_LAST锛歿tag.RGV.bit2taskOver_LAST}\");\r\n if (tag.RGV.bit2taskOver_LAST == 0 && task2 != null)\r\n {\r\n if (task2.S_B_STATE != \"瀹屾垚\")\r\n {\r\n thisOver = 2;\r\n if (task2.S_B_STATE == \"鍙栬揣瀹屾垚\")\r\n {\r\n task2.S_B_STATE = \"瀹屾垚\";\r\n tag.RGV.ReadTask2No = 0;\r\n }\r\n else\r\n {\r\n task2.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n }\r\n tag.RGV.bit2taskOver = 0;\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟{task2.S_TASK_NO} 鐘舵�鍒囨崲涓簕task2.S_B_STATE}\");\r\n RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"1\", out string msg);\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟鍐欏鐞哱");\r\n taskservice.Update(task2);\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟鏇存柊銆俓");\r\n }\r\n else\r\n {\r\n LogHelper.Info(\"RGV2宸ヤ綅浠诲姟宸茬粡瀹屾垚銆俓");\r\n }\r\n }\r\n }\r\n else if (tag.RGV.ReadTask2No == 0)\r\n {\r\n LogHelper.Info($\"RGV 2宸ヤ綅娌℃湁浠诲姟銆媆");\r\n }\r\n\r\n\r\n\r\n //if (thisOver > 0)\r\n //{\r\n // var v2 = RedisHelper.Get<WriteGroupEntity>(\"RGVQueue\", out string rev);\r\n // if (v2 != null)\r\n // {\r\n // LogHelper.Info($\"RGVQueue 璇诲埌缁撴灉-{JsonConvert.SerializeObject(v2)} \\n 涓嬪彂鍓嶈繘琛屾竻闄ゃ�\");\r\n // var b = RedisHelper.Remove(\"RGVQueue\", out rev);\r\n // }\r\n //}\r\n\r\n ///1 鏈夎揣 灏� 鍙栥� 1 娌¤揣 灏� 鍗歌揣锛�閮芥湁璐� 灏�鍗歌揣銆�閮芥病璐�灏�鍗竆r\n var tklist = taskservice.FindList(x => x.S_B_STATE == \"鏈墽琛孿" && x.S_WORK_MODE == \"RGV\").OrderBy(x => x.T_CREATE).ToList();\r\n if (task1 != null && task1.S_B_STATE != \"瀹屾垚\") //1鏈変换鍔r\n {\r\n if (task2 != null && task2.S_B_STATE != \"瀹屾垚\")// 1 鏈変换鍔� 2 鏈変换鍔°� \r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 涔熸湁浠诲姟{task2.S_TASK_NO}銆�寮�宸ヤ綅1 鍗歌揣銆俓");\r\n tag.RGV.workMod = 1;\r\n tag.RGV.taskmod = 2;\r\n tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));\r\n tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n //RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n //tag.RGV.taskend = 125;\r\n //Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\");\r\n\r\n LogHelper.Info($\"{task1.S_TASK_NO}> bit1taskOver_LAST 鍐�0\");\r\n RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n LogHelper.Info($\"{task1.S_TASK_NO}> end 鍐�125\");\r\n Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n }\r\n else //1鏈変换鍔� 2 娌′换鍔°� \r\n {\r\n\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔°�\");\r\n\r\n var leftSide = new List<string> { \"1023\", \"1020\" };\r\n var RightSide = new List<string> { \"1002\", \"1008\", \"1010\", \"1016\" };\r\n bool creT2 = false;\r\n\r\n // 2鍙�浼樺厛缁�1020 1008 1016\r\n var t2 = tklist.OrderBy(x => x.T_CREATE).ToList().Find(x => x.S_START_LOC == \"1020\" || x.S_START_LOC == \"1008\" || x.S_START_LOC == \"1016\");\r\n if (t2 != null)\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵�020 1008 1016鍙栬揣浠诲姟{t2.S_TASK_NO}銆俓");\r\n tag.RGV.workMod = 2;\r\n tag.RGV.taskmod = 1;\r\n tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n t2.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(t2);\r\n creT2 = true;\r\n System.Threading.Thread.Sleep(750);\r\n LogHelper.Info($\"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0\");\r\n RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n LogHelper.Info($\"{t2.S_TASK_NO}> end 鍐�125\");\r\n Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n }\r\n ////2 濡傛灉鏈夊悓渚у彇璐т换鍔°�灏卞彇銆傛病鏈塡r\n //else if (leftSide.Contains(task1.S_START_LOC))\r\n //{\r\n // leftSide.Remove(task1.S_START_LOC);\r\n // var lsde = leftSide.FirstOrDefault();\r\n // t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != \"1017\");\r\n // if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆俓r\n // {\r\n // LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔t2.S_TASK_NO}銆俓");\r\n // tag.RGV.workMod = 2;\r\n // tag.RGV.taskmod = 1;\r\n // tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n // tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n // t2.S_B_STATE = \"宸叉帹閫乗";\r\n // taskservice.Update(t2);\r\n // creT2 = true;\r\n // System.Threading.Thread.Sleep(750);\r\n // LogHelper.Info($\"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0\");\r\n // RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n // LogHelper.Info($\"{t2.S_TASK_NO}> end 鍐�125\");\r\n // Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n // }\r\n //}\r\n //else if (RightSide.Contains(task1.S_START_LOC))\r\n //{\r\n // RightSide.Remove(task1.S_START_LOC);\r\n // t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != \"1017\");\r\n // if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆俓r\n // {\r\n // LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚�1002,1010 鍙栬揣浠诲姟{t2.S_TASK_NO}銆俓");\r\n // tag.RGV.workMod = 2;\r\n // tag.RGV.taskmod = 1;\r\n // tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n // tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n // t2.S_B_STATE = \"宸叉帹閫乗";\r\n // taskservice.Update(t2);\r\n // creT2 = true;\r\n // System.Threading.Thread.Sleep(750);\r\n // LogHelper.Info($\"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�125\");\r\n // RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n // LogHelper.Info($\"{t2.S_TASK_NO}> end 鍐�125\");\r\n // Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n // }\r\n //}\r\n else //1 鐩存帴鍗歌揣銆�\r\n //if (!creT2)\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 娌℃湁鍚屼晶鍙栬揣浠诲姟 1宸ヤ綅鍗歌揣銆俓");\r\n tag.RGV.workMod = 1;\r\n tag.RGV.taskmod = 2;\r\n tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));\r\n tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n LogHelper.Info($\"{task1.S_TASK_NO}> bit1taskOver_LAST 鍐�0\");\r\n RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n LogHelper.Info($\"{task1.S_TASK_NO}> taskend 鍐�0\");\r\n Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n }\r\n }\r\n }\r\n else\r\n {\r\n if (task2 != null && task2.S_B_STATE != \"瀹屾垚\")// 1 娌′换鍔� 2 鏈変换鍔°� \r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 鏈変换鍔task2.S_TASK_NO}銆傚伐浣�鍗歌揣銆傘�\");\r\n //2 鍗歌揣銆俓r\n tag.RGV.workMod = 2;\r\n tag.RGV.taskmod = 2;\r\n tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4));\r\n tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n LogHelper.Info($\"{task2.S_TASK_NO}> bit2taskOver_LAST 鍐�0\");\r\n RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n //tag.RGV.taskend = 125;\r\n LogHelper.Info($\"{task2.S_TASK_NO}> taskend 鍐�25\");\r\n Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n }\r\n else if (tklist.Any()) //1mei 浠诲姟 2 娌′换鍔°�\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 涔熸病浠诲姟銆備紭鍏�宸ヤ綅缁堢偣1017浠诲姟銆傘�\");\r\n //銆佷笅 1017浠诲姟 缁�鍙峰伐浣嶃�\r\n //var lss = tklist.Take(2).ToList();\r\n var e1017first = tklist.Find(x => x.S_START_LOC == \"1002\" || x.S_START_LOC == \"1010\" || x.S_START_LOC == \"1023\");\r\n //if (e1017first != null)\r\n //{\r\n // e1017first = tklist.FirstOrDefault();\r\n //}\r\n if (e1017first != null)\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 浠诲姟宸ヤ綅2 娌′换鍔°� 1002 1010 1023鍙栬揣浠诲姟{e1017first.S_TASK_NO}銆俓");\r\n tag.RGV.workMod = 1;\r\n tag.RGV.taskmod = 1;\r\n uint tno = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(4));\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}> 杞崲鍚庝换鍔″彿{tno} 寮�鍐欏叆銆俓");\r\n tag.RGV.taskno1 = tno;\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}>寮�鍐欏叆 task1do>>{e1017first.S_START_LOC}銆俓");\r\n tag.RGV.task1do = Convert.ToUInt16(e1017first.S_START_LOC);\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}> 鏇存柊浠诲姟銆俓");\r\n e1017first.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(e1017first);\r\n System.Threading.Thread.Sleep(750);\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}> bit1taskOver_LAST 鍐�\");\r\n RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}> taskend 鍐�25\");\r\n //tag.RGV.taskend=125\r\n Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n }\r\n else\r\n {\r\n var t2 = tklist.OrderBy(x => x.T_CREATE).ToList().Find(x => x.S_START_LOC == \"1020\" || x.S_START_LOC == \"1008\" || x.S_START_LOC == \"1016\");\r\n if (tklist != null)\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 娌′换鍔″伐浣� 娌′换鍔°� 鎵�020 1008 1016鍙栬揣浠诲姟{t2.S_TASK_NO}銆俓");\r\n tag.RGV.workMod = 2;\r\n tag.RGV.taskmod = 1;\r\n tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n t2.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(t2);\r\n System.Threading.Thread.Sleep(750);\r\n LogHelper.Info($\"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0\");\r\n RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n LogHelper.Info($\"{t2.S_TASK_NO}> end 鍐�125\");\r\n Conn.榛樿Redis.SetValue(\"RGV.taskend\", \"125\", \"RGVQueue\", false);\r\n }\r\n }\r\n }\r\n }\r\n LogHelper.Info($\"rgv 澶勭悊瀹屾垚銆倀askend 125\");\r\n #endregion\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Info(ex.Message + ex.StackTrace);\r\n }\r\n }\r\n\r\n\r\n public void ThreadGrats(Tag tag, Action<HaiKangOrderInfo> continueTask)\r\n {\r\n Console.WriteLine($\"ThreadGrats 鍏夋爡澶勭悊 =================> \");\r\n var taskCOdes = new List<string> { \"Sarrive\", \"Srelease\", \"Earrive\", \"Erelease\" };\r\n TaskActRepository taskActRepository = new TaskActRepository();\r\n TaskRepository taskRepository = new TaskRepository();\r\n var requires = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0);\r\n foreach (var item in requires)\r\n {\r\n var tin = taskCOdes.IndexOf(item.S_ACTION_CODE);\r\n if (tin == -1)\r\n {\r\n item.N_CREATEMETHOD = -1;\r\n taskActRepository.Update(item);\r\n continue;\r\n }\r\n //var task = taskRepository.FindEntity(x => x.S_TASK_NO == item.S_TASK_NO);\r\n string loc = \"\";\r\n if (tin < 2)\r\n {\r\n loc = item.S_START_LOC;\r\n }\r\n else\r\n {\r\n loc = item.S_END_LOC;\r\n }\r\n if (loc == null) continue; else loc = loc.Trim();\r\n bool goin = tin % 2 == 0;\r\n bool continuuuuu = false;\r\n var dev = Settings.deviceInfos.Find(x => x.location.Contains(loc));\r\n if (dev != null)\r\n {\r\n var V = dev.location.ToList().FindIndex(x => x == loc) == 0;\r\n //杞﹁蛋浜� 寮�厜鏍匼r\n if (!goin)\r\n {\r\n if (dev.deviceType == 1)\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin ? \"鍏抽棴\" : \"寮�惎\")} 鐢宠銆俓" + string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"R02\" : \"R04\"), \"true\", dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"R02\" : \"R04\"), \"true\", dev.deviceName + \"Queue\");\r\n\r\n }\r\n else if (dev.deviceType == 2)\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin ? \"鍏抽棴\" : \"寮�惎\")} 鐢宠銆俓" + string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"D1222\" : \"D1223\"), \"1\", dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"D1222\" : \"D1223\"), \"1\", dev.deviceName + \"Queue\");\r\n }\r\n\r\n item.N_CREATEMETHOD = 1;\r\n taskActRepository.Update(item);\r\n }\r\n //杞﹁杩涘叆浜や簰銆俓r\n else\r\n {\r\n if (dev.deviceType == 1)\r\n {\r\n var tf = Conn.榛樿Redis.GetValue(dev.deviceName + \".\" + (V ? \"R50\" : \"R52\"));//璇诲叧闂姸鎬乗r\n if (tf?.ToLower() == \"true\")\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin ? \"鍏抽棴\" : \"寮�惎\")} 鐢宠銆�宸茬粡鍏抽棴锛乗");\r\n continuuuuu = true;\r\n }\r\n else\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin ? \"鍏抽棴\" : \"寮�惎\")} 鐢宠銆俓" + string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"R01\" : \"R03\"), \"true\", dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"R01\" : \"R03\"), \"true\", dev.deviceName + \"Queue\");\r\n }\r\n\r\n }\r\n else if (dev.deviceType == 2)\r\n {\r\n var tf = Conn.榛樿Redis.GetValue(dev.deviceName + \".D1202\");\r\n int numm = int.Parse(string.IsNullOrEmpty(tf) ? \"0\" : tf);\r\n if (TcpServer.GetBitdata(numm, (V ? 0 : 1)) == 1)\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin ? \"鍏抽棴\" : \"寮�惎\")} 鐢宠銆�宸茬粡鍏抽棴锛乗");\r\n continuuuuu = true;\r\n }\r\n else\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin ? \"鍏抽棴\" : \"寮�惎\")} 鐢宠銆俓" + string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"D1220\" : \"D1221\"), dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"D1220\" : \"D1221\"), \"1\", dev.deviceName + \"Queue\");\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n if (continuuuuu)\r\n {\r\n LogHelper.Info($\"{item.S_TASK_NO}{item.S_ACTION_CODE} 杞﹁締鍙戦�缁х画浠诲姟锛乗");\r\n continueTask?.Invoke(new HaiKangOrderInfo\r\n {\r\n reqCode = item.S_ID.Replace(\"-\", \"\"),\r\n taskCode = item.S_TASK_NO\r\n });\r\n item.N_CREATEMETHOD = 1;\r\n taskActRepository.Update(item);\r\n }\r\n }\r\n System.Threading.Thread.Sleep(3000);\r\n //閲嶇疆淇″彿\r\n foreach (var dev in Settings.deviceInfos.FindAll(x => x.deviceType == 2))\r\n {\r\n var tf = Conn.榛樿Redis.GetValue(dev.deviceName + \".D1202\");\r\n int numm = int.Parse(string.IsNullOrEmpty(tf) ? \"0\" : tf);\r\n if (TcpServer.GetBitdata(numm, 0) == 0)\r\n {\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1220\", \"0\", dev.deviceName + \"Queue\");\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1222\", \"0\", dev.deviceName + \"Queue\");\r\n }\r\n else if (TcpServer.GetBitdata(numm, 1) == 0)\r\n {\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1221\", \"0\", dev.deviceName + \"Queue\");\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1223\", \"0\", dev.deviceName + \"Queue\");\r\n }\r\n }\r\n\r\n }\r\n /// <summary>\r\n /// 1020 1023绌烘涓嬬嚎\r\n /// </summary>\r\n /// <param name=\"tag\"></param>\r\n public void ThreadEdown(Tag tag)\r\n {\r\n Console.WriteLine($\"ThreadEdown 20 23 = 绌轰笅妫�祴 =================> \");\r\n TaskRepository taskRepository = new TaskRepository();\r\n foreach (var Bssx in new string[] { \"1020\", \"1023\" })\r\n {\r\n var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.R鎵樼洏鐮乗"), typeof(System.String));\r\n Console.WriteLine($\"{Bssx} 绌轰笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇 \");\r\n if (RtaskState == 3 && RtaskState_LAST == 0)\r\n {\r\n var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != \"瀹屾垚\" && x.S_B_STATE != \"鍙栨秷\");\r\n string msg = \"\";\r\n if (task != null)\r\n {\r\n Console.WriteLine($\"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n LogHelper.Info($\"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n continue;\r\n }\r\n try\r\n {\r\n var listtep = new List<string>();\r\n if (Bssx == \"1020\")\r\n {\r\n if (tag.SF涓嬫枡浣�RArrive1003 == 1)\r\n {\r\n listtep = new List<string> { \"1012\", \"1004\" };\r\n }\r\n else\r\n {\r\n listtep = new List<string> { \"1004\", \"1012\" };\r\n }\r\n }\r\n else\r\n {\r\n if (tag.SF涓嬫枡浣�RArrive1005 == 1)\r\n {\r\n listtep = new List<string> { \"1014\", \"1006\" };\r\n }\r\n else\r\n {\r\n listtep = new List<string> { \"1006\", \"1014\" };\r\n }\r\n }\r\n\r\n foreach (var item in listtep)//(Bssx == \"1020\" ? new string[] { \"1004\", \"1012\" } : new string[] { \"1006\", \"1014\" }))\r\n {\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 == 5 && R5绌洪棽_LAST == 0 && task == null)\r\n {\r\n task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != \"瀹屾垚\" && x.S_B_STATE != \"鍙栨秷\");\r\n msg = \"\";\r\n if (task != null)\r\n {\r\n Console.WriteLine($\" {item}鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n LogHelper.Info($\" {item}鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n continue;\r\n }\r\n\r\n var b = TaskProcess.CreateTask(\"\", Bssx, item, \"绌轰笂RGV\", 5, new List<string> { R鎵樼洏鐮�}, \"RGV\");\r\n if (b)\r\n {\r\n LogHelper.Debug($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{Bssx}>to {item}寮�鍒涘缓鎴愬姛\");\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out msg);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"1\", out msg);\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n break;\r\n }\r\n }\r\n else if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out msg);\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n }\r\n }\r\n System.Threading.Thread.Sleep(1000);\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Error(ex.Message, ex);\r\n Console.WriteLine(ex.Message + ex.StackTrace);\r\n }\r\n }\r\n else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n }\r\n System.Threading.Thread.Sleep(2000);\r\n }\r\n\r\n foreach (var item in new string[] { \"1004\", \"1012\", \"1006\", \"1014\", \"1026\", \"1017\" })\r\n {\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n }\r\n }\r\n }\r\n\r\n public void ThreadDdown(Tag tag)\r\n {\r\n Console.WriteLine($\"ThreadDdown 08 10 ==================> 1026\");\r\n TaskRepository taskRepository = new TaskRepository();\r\n foreach (var Bssx in new string[] { \"1008\", \"1016\" })\r\n {\r\n var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.R鎵樼洏鐮乗"), typeof(System.String));\r\n Console.WriteLine($\"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇\");\r\n if (RtaskState == 3 && RtaskState_LAST == 0)\r\n {\r\n var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != \"瀹屾垚\" && x.S_B_STATE != \"鍙栨秷\");\r\n string msg = \"\";\r\n if (task != null)\r\n {\r\n Console.WriteLine($\"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n LogHelper.Info($\"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n continue;\r\n }\r\n\r\n var item = \"1026\";\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 == 5 && R5绌洪棽_LAST == 0)\r\n {\r\n task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != \"瀹屾垚\" && x.S_B_STATE != \"鍙栨秷\");\r\n msg = \"\";\r\n if (task != null)\r\n {\r\n Console.WriteLine($\"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n LogHelper.Info($\"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n continue;\r\n }\r\n var b = TaskProcess.CreateTask(\"\", Bssx, item, \"婊¤浆1026\", 5, new List<string> { R鎵樼洏鐮�}, \"RGV\");\r\n if (b)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out msg);\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"1\", out string msg2);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n break;\r\n }\r\n }\r\n else if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out string msg2);\r\n }\r\n }\r\n else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n }\r\n System.Threading.Thread.Sleep(2000);\r\n }\r\n }\r\n\r\n public void Thread0210Down(Tag tag)\r\n {\r\n Console.WriteLine($\"Thread0210Down ==================>\");\r\n TaskRepository taskRepository = new TaskRepository();\r\n foreach (var Bssx in new string[] { \"1002\", \"1010\" })\r\n {\r\n var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.R鎵樼洏鐮乗"), typeof(System.String));\r\n Console.WriteLine($\"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇\");\r\n if (RtaskState == 3 && RtaskState_LAST == 0)\r\n {\r\n var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != \"瀹屾垚\" && x.S_B_STATE != \"鍙栨秷\");\r\n string msg = \"\";\r\n if (task != null)\r\n {\r\n Console.WriteLine($\"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n LogHelper.Info($\"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n continue;\r\n }\r\n var item = \"1017\";\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 == 5 && R5绌洪棽_LAST == 0)\r\n {\r\n task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != \"瀹屾垚\" && x.S_B_STATE != \"鍙栨秷\");\r\n msg = \"\";\r\n if (task != null)\r\n {\r\n Console.WriteLine($\"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n LogHelper.Info($\"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟\");\r\n continue;\r\n }\r\n var b = TaskProcess.CreateTask(\"\", Bssx, item, \"婊¤浆1017\", 5, new List<string> { R鎵樼洏鐮�}, \"RGV\");\r\n if (b)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out msg);\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"1\", out string msg1);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n break;\r\n }\r\n }\r\n else if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out string msg1);\r\n }\r\n }\r\n else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n }\r\n System.Threading.Thread.Sleep(2000);\r\n }\r\n }\r\n\r\n\r\n public void Thread涓嬫枡浣嶆娴�Tag tag)\r\n {\r\n Console.WriteLine($\"Thread涓嬫枡浣嶆娴� =====>\");\r\n foreach (var ssx in new string[] { \"1003\", \"1005\", \"1011\", \"1013\" })\r\n {\r\n var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"FNK1003051113.RArrive{ssx}\"), typeof(System.UInt16));\r\n var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"FNK1003051113.RArrive{ssx}_LAST\"), typeof(System.UInt16));\r\n if (RArrive == 1 && RArriveLast == 0)\r\n {\r\n if (ssx == \"1005\" && tag.SF涓嬫枡浣�WRelease1005 == 0)\r\n {\r\n tag.FNK1.D2215 = 1;\r\n //tag.SF涓嬫枡浣�RArrive1005_LAST = 1;\r\n RedisHelper.Add($\"FNK1003051113.RArrive1005_LAST\", \"1\", out string msg);\r\n\r\n //tag.SF涓嬫枡浣�WRelease1005 = 0;\r\n //tag.SF涓嬫枡浣�WSafe0305 = 0;\r\n }\r\n else if (ssx == \"1003\" && tag.SF涓嬫枡浣�WRelease1003 == 0)\r\n {\r\n tag.FNK1.D2210 = 1;\r\n //tag.SF涓嬫枡浣�RArrive1003_LAST = 1;\r\n\r\n RedisHelper.Add($\"FNK1003051113.RArrive1003_LAST\", \"1\", out string msg);\r\n\r\n //tag.SF涓嬫枡浣�WRelease1003 = 0;\r\n //tag.SF涓嬫枡浣�WSafe0305 = 0;\r\n }\r\n else if (ssx == \"1013\" && tag.SF涓嬫枡浣�WRelease1013 == 0)\r\n {\r\n tag.FNK2.D2215 = 1;\r\n //tag.SF涓嬫枡浣�RArrive1013_LAST = 1;\r\n RedisHelper.Add($\"FNK1003051113.RArrive1013_LAST\", \"1\", out string msg);\r\n\r\n //tag.SF涓嬫枡浣�WRelease1013 = 0;\r\n //tag.SF涓嬫枡浣�WSafe1113 = 0;\r\n }\r\n else if (ssx == \"1011\" && tag.SF涓嬫枡浣�WRelease1011 == 0)\r\n {\r\n tag.FNK2.D2210 = 1;\r\n //tag.SF涓嬫枡浣�RArrive1011_LAST = 1;\r\n RedisHelper.Add($\"FNK1003051113.RArrive1011_LAST\", \"1\", out string msg);\r\n\r\n //tag.SF涓嬫枡浣�WRelease1011 = 0;\r\n //tag.SF涓嬫枡浣�WSafe1113 = 0;\r\n }\r\n }\r\n else if (RArrive == 0 && RArriveLast == 1)\r\n {\r\n RedisHelper.Add($\"FNK1003051113.RArrive{ssx}_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"FNK1003051113.RArrive{ssx}_LAST\", \"0\", $\"FNK1003051113Queue\");\r\n }\r\n }\r\n }\r\n\r\n public void ThreadFNK1Over(Tag tag)\r\n {\r\n Console.WriteLine($\"ThreadFNK1Over =====>\");\r\n if (tag.FNK1.D2217 == 1 && tag.FNK1.D2217_LAST == 0)\r\n {\r\n tag.FNK1.D2215 = 0;\r\n //tag.FNK1.D2212_LAST = 1;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2217_LAST\", \"1\", out string msg);\r\n\r\n tag.SF涓嬫枡浣�WRelease1005 = 1;\r\n tag.SF涓嬫枡浣�WSafe0305 = 1;\r\n System.Threading.Thread.Sleep(1000);\r\n RedisHelper.Add($\"FNK1003051113.RArrive1005_LAST\", \"0\", out msg);\r\n }\r\n if (tag.FNK1.D2216 == 1)\r\n tag.FNK1.D2215 = 0;\r\n else if (tag.FNK1.D2217 == 0 && tag.FNK1.D2217_LAST == 1)\r\n //tag.FNK1.D2217_LAST = 0;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2217_LAST\", \"0\", out string msg);\r\n\r\n if (tag.FNK1.D2212 == 1 && tag.FNK1.D2212_LAST == 0)\r\n {\r\n tag.FNK1.D2210 = 0;\r\n //tag.FNK1.D2217_LAST = 1;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2212_LAST\", \"1\", out string msg);\r\n tag.SF涓嬫枡浣�WRelease1003 = 1;\r\n tag.SF涓嬫枡浣�WSafe0305 = 1;\r\n System.Threading.Thread.Sleep(1000);\r\n RedisHelper.Add($\"FNK1003051113.RArrive1003_LAST\", \"0\", out msg);\r\n }\r\n //else if (tag.FNK1.D2211 == 1)\r\n // tag.FNK1.D2210 = 0;\r\n else if (tag.FNK1.D2212 == 0 && tag.FNK1.D2212_LAST == 1)\r\n {\r\n //tag.FNK1.D2212_LAST = 0;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2212_LAST\", \"0\", out string msg);\r\n }\r\n if (tag.FNK1.D2211 == 1)\r\n tag.FNK1.D2210 = 0;\r\n\r\n }\r\n public void ThreadFNK2Over(Tag tag)\r\n {\r\n Console.WriteLine($\"ThreadFNK2Over =====>\");\r\n if (tag.FNK2.D2217 == 1 && tag.FNK2.D2217_LAST == 0)\r\n {\r\n tag.FNK2.D2215 = 0;\r\n //tag.FNK2.D2212_LAST = 1;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2217_LAST\", \"1\", out string msg);\r\n\r\n tag.SF涓嬫枡浣�WRelease1013 = 1;\r\n tag.SF涓嬫枡浣�WSafe1113 = 1;\r\n System.Threading.Thread.Sleep(1000);\r\n RedisHelper.Add($\"FNK1003051113.RArrive1013_LAST\", \"0\", out msg);\r\n }\r\n else if (tag.FNK2.D2217 == 0 && tag.FNK2.D2217_LAST == 1)\r\n //tag.FNK2.D2217_LAST = 0;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2217_LAST\", \"0\", out string msg);\r\n\r\n if (tag.FNK2.D2216 == 1)\r\n tag.FNK2.D2215 = 0;\r\n\r\n if (tag.FNK2.D2212 == 1 && tag.FNK2.D2212_LAST == 0)\r\n {\r\n tag.FNK2.D2210 = 0;\r\n //tag.FNK2.D2217_LAST = 1;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2212_LAST\", \"1\", out string msg);\r\n\r\n tag.SF涓嬫枡浣�WRelease1011 = 1;\r\n tag.SF涓嬫枡浣�WSafe1113 = 1;\r\n System.Threading.Thread.Sleep(1000);\r\n RedisHelper.Add($\"FNK1003051113.RArrive1011_LAST\", \"0\", out msg);\r\n }\r\n else if (tag.FNK2.D2212 == 0 && tag.FNK2.D2212_LAST == 1)\r\n {\r\n //tag.FNK2.D2212_LAST = 0;\r\n RedisHelper.Add($\"p鍙戦偅绉�涓嬬嚎.D2212_LAST\", \"0\", out string msg);\r\n }\r\n if (tag.FNK2.D2211 == 1)\r\n tag.FNK2.D2210 = 0;\r\n\r\n }\r\n\r\n public void Thread1019Down(Tag tag)\r\n {\r\n Console.WriteLine($\"1019浠诲姟鐘舵�锛� =====>\");\r\n Console.WriteLine($\"1019浠诲姟鐘舵�锛歿tag.SA1019.RtaskState}- barcode:{tag.SA1019.R鎵樼洏鐮亇- 绌洪棽{tag.SA1019.R5绌洪棽}\");\r\n }\r\n public void Thread1025Up(Tag tag)\r\n {\r\n Console.WriteLine($\"SA1025 浠诲姟鐘舵�锛� =====>\");\r\n Console.WriteLine($\"SA1025 浠诲姟鐘舵�锛歿tag.SA1025.RtaskState}- 绌洪棽{tag.SA1025.R5绌洪棽}\");\r\n }\r\n public void Thread1022Up(Tag tag)\r\n {\r\n Console.WriteLine($\"SA1022 =====>\");\r\n Console.WriteLine($\"SA1022 浠诲姟鐘舵�锛歿tag.SA1022.RtaskState}- 绌洪棽{tag.SA1022.R5绌洪棽}\");\r\n }\r\n public void Thread1030Down(Tag tag)\r\n {\r\n Console.WriteLine($\"SA1030 浠诲姟鐘舵�锛� =====>\");\r\n Console.WriteLine($\"SA1030 浠诲姟鐘舵�锛歿tag.SA1030.RtaskState}- 绌洪棽{tag.SA1030.R5绌洪棽}-->瀵瑰簲缁堢偣2001>绌洪棽5锛歿tag.SA2001.R5绌洪棽}\");\r\n }\r\n public void Thread2030Down(Tag tag)\r\n {\r\n Console.WriteLine($\"SA2030 浠诲姟鐘舵�锛� =====>\");\r\n Console.WriteLine($\"SA2030 浠诲姟鐘舵�锛歿tag.SA2030.RtaskState}- 绌洪棽{tag.SA2030.R5绌洪棽} - barcode:{tag.SA2030.R鎵樼洏鐮亇\");\r\n }\r\n\r\n\r\n }\r\n}\r\n", + "CusMethod": { + "Name": "", + "Params": [], + "ReturnType": "" + }, + "CusClass": { + "Name": "", + "InheritClass": "", + "Inherits": [] + } } ], "CreationTime": "2025-02-26 15:31:23", - "LastWriteTime": "2025-06-18 23:06:58", + "LastWriteTime": "2025-06-23 09:06:09", "HasSaved": true } \ No newline at end of file diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Script.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Script.json" index 11efd81..4517436 100644 --- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Script.json" +++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Script.json" @@ -14,8 +14,8 @@ "ID": "20250323111613779", "Name": "鍒濆鍖栭厤缃�, "Desc": "", - "Content": " if (Tag.Global.SettingsOver == 0)\r\n {\r\n SettingInit();\r\n Tag.Global.SettingsOver = 1;\r\n }\r\n else if(Settings.deviceInfos.Count == 0)\r\n {\r\n Tag.Global.SettingsOver = 0;\r\n }\r\n", - "ContentCopy": " if (Tag.Global.SettingsOver == 0)\r\n {\r\n SettingInit();\r\n Tag.Global.SettingsOver = 1;\r\n }\r\n else if(Settings.deviceInfos.Count == 0)\r\n {\r\n Tag.Global.SettingsOver = 0;\r\n }\r\n", + "Content": "\r\n Action myDelegate = () => SettingInit();\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadSettingInit\", new object[] { tag, myDelegate });", + "ContentCopy": "\r\n Action myDelegate = () => SettingInit();\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadSettingInit\", new object[] { tag, myDelegate });", "ParentID": "20250226153120175", "Children": [], "Type": "Program", @@ -53,8 +53,8 @@ "ID": "20250323151832119", "Name": "Program4", "Desc": "", - "Content": "//Conn.榛樿Redis.SetValue(\"瑗块棬瀛�.Param3\",\"300\",\"瑗块棬瀛�Queue\");\r\n//return;\r\nif(false){\r\n List<string> locs = new List<string>() { \"vxr1l\", \"vx1r\", \"vxr1c1\", \"vxr1c2\", \"vxr2l\", \"vxr2r\", \"vxr2c1\", \"vxr2c2\" };\r\n List<string> sites = new List<string>() { \"196365BB283162\", \"193841BB283149\", \"198756BB287300\", \"198767BB286133\", \"206987BB282931\", \"204460BB282975\", \"209405BB287057\", \"209377BB285899\" };\r\n\r\n LocRepository locservice = new LocRepository();\r\n for (int i = 0; i < locs.Count; i++)\r\n {\r\n string loccode = locs[i];\r\n string sitesss = sites[i];\r\n var loc = locservice.FindEntity(x => x.S_LOC_CODE == loccode);\r\n if (loc == null)\r\n {\r\n locservice.Insert(new LocEntity\r\n {\r\n S_ID = Guid.NewGuid().ToString(),\r\n S_STATE = \"缂栬緫\",\r\n T_CREATE = DateTime.Now,\r\n T_MODIFY = DateTime.Now,\r\n S_DEEP = \"vxr\",\r\n\r\n S_LOC_CODE = loccode,\r\n S_AGV_SITE = sitesss,\r\n\r\n S_LOCK_STATE = \"鏃燶",\r\n N_ROW = 1,\r\n N_COL = 1,\r\n N_AGV_CODE = 0,\r\n N_AGV_SITE_LAYER = 0,\r\n N_CAPACITY = 1,\r\n N_CURRENT_NUM = 0,\r\n S_TYPE = \"\",\r\n\r\n });\r\n }\r\n }\r\n // TaskProcess.CreateTask(\"\", locs[6], locs[7], \"test\", 9, new List<string> { \"test\" }, 1, 1, 1);\r\n }\r\n", - "ContentCopy": "//Conn.榛樿Redis.SetValue(\"瑗块棬瀛�.Param3\",\"300\",\"瑗块棬瀛�Queue\");\r\n//return;\r\nif(false){\r\n List<string> locs = new List<string>() { \"vxr1l\", \"vx1r\", \"vxr1c1\", \"vxr1c2\", \"vxr2l\", \"vxr2r\", \"vxr2c1\", \"vxr2c2\" };\r\n List<string> sites = new List<string>() { \"196365BB283162\", \"193841BB283149\", \"198756BB287300\", \"198767BB286133\", \"206987BB282931\", \"204460BB282975\", \"209405BB287057\", \"209377BB285899\" };\r\n\r\n LocRepository locservice = new LocRepository();\r\n for (int i = 0; i < locs.Count; i++)\r\n {\r\n string loccode = locs[i];\r\n string sitesss = sites[i];\r\n var loc = locservice.FindEntity(x => x.S_LOC_CODE == loccode);\r\n if (loc == null)\r\n {\r\n locservice.Insert(new LocEntity\r\n {\r\n S_ID = Guid.NewGuid().ToString(),\r\n S_STATE = \"缂栬緫\",\r\n T_CREATE = DateTime.Now,\r\n T_MODIFY = DateTime.Now,\r\n S_DEEP = \"vxr\",\r\n\r\n S_LOC_CODE = loccode,\r\n S_AGV_SITE = sitesss,\r\n\r\n S_LOCK_STATE = \"鏃燶",\r\n N_ROW = 1,\r\n N_COL = 1,\r\n N_AGV_CODE = 0,\r\n N_AGV_SITE_LAYER = 0,\r\n N_CAPACITY = 1,\r\n N_CURRENT_NUM = 0,\r\n S_TYPE = \"\",\r\n\r\n });\r\n }\r\n }\r\n // TaskProcess.CreateTask(\"\", locs[6], locs[7], \"test\", 9, new List<string> { \"test\" }, 1, 1, 1);\r\n }\r\n", + "Content": "////Conn.榛樿Redis.SetValue(\"瑗块棬瀛�.Param3\",\"300\",\"瑗块棬瀛�Queue\");\r\n////return;\r\n//if(false){\r\n// List<string> locs = new List<string>() { \"vxr1l\", \"vx1r\", \"vxr1c1\", \"vxr1c2\", \"vxr2l\", \"vxr2r\", \"vxr2c1\", \"vxr2c2\" };\r\n// List<string> sites = new List<string>() { \"196365BB283162\", \"193841BB283149\", \"198756BB287300\", \"198767BB286133\", \"206987BB282931\", \"204460BB282975\", \"209405BB287057\", \"209377BB285899\" };\r\n\r\n// LocRepository locservice = new LocRepository();\r\n// for (int i = 0; i < locs.Count; i++)\r\n// {\r\n// string loccode = locs[i];\r\n// string sitesss = sites[i];\r\n// var loc = locservice.FindEntity(x => x.S_LOC_CODE == loccode);\r\n// if (loc == null)\r\n// {\r\n// locservice.Insert(new LocEntity\r\n// {\r\n// S_ID = Guid.NewGuid().ToString(),\r\n// S_STATE = \"缂栬緫\",\r\n// T_CREATE = DateTime.Now,\r\n// T_MODIFY = DateTime.Now,\r\n// S_DEEP = \"vxr\",\r\n\r\n// S_LOC_CODE = loccode,\r\n// S_AGV_SITE = sitesss,\r\n\r\n// S_LOCK_STATE = \"鏃燶",\r\n// N_ROW = 1,\r\n// N_COL = 1,\r\n// N_AGV_CODE = 0,\r\n// N_AGV_SITE_LAYER = 0,\r\n// N_CAPACITY = 1,\r\n// N_CURRENT_NUM = 0,\r\n// S_TYPE = \"\",\r\n\r\n// });\r\n// }\r\n// }\r\n// // TaskProcess.CreateTask(\"\", locs[6], locs[7], \"test\", 9, new List<string> { \"test\" }, 1, 1, 1);\r\n// }\r\n", + "ContentCopy": "////Conn.榛樿Redis.SetValue(\"瑗块棬瀛�.Param3\",\"300\",\"瑗块棬瀛�Queue\");\r\n////return;\r\n//if(false){\r\n// List<string> locs = new List<string>() { \"vxr1l\", \"vx1r\", \"vxr1c1\", \"vxr1c2\", \"vxr2l\", \"vxr2r\", \"vxr2c1\", \"vxr2c2\" };\r\n// List<string> sites = new List<string>() { \"196365BB283162\", \"193841BB283149\", \"198756BB287300\", \"198767BB286133\", \"206987BB282931\", \"204460BB282975\", \"209405BB287057\", \"209377BB285899\" };\r\n\r\n// LocRepository locservice = new LocRepository();\r\n// for (int i = 0; i < locs.Count; i++)\r\n// {\r\n// string loccode = locs[i];\r\n// string sitesss = sites[i];\r\n// var loc = locservice.FindEntity(x => x.S_LOC_CODE == loccode);\r\n// if (loc == null)\r\n// {\r\n// locservice.Insert(new LocEntity\r\n// {\r\n// S_ID = Guid.NewGuid().ToString(),\r\n// S_STATE = \"缂栬緫\",\r\n// T_CREATE = DateTime.Now,\r\n// T_MODIFY = DateTime.Now,\r\n// S_DEEP = \"vxr\",\r\n\r\n// S_LOC_CODE = loccode,\r\n// S_AGV_SITE = sitesss,\r\n\r\n// S_LOCK_STATE = \"鏃燶",\r\n// N_ROW = 1,\r\n// N_COL = 1,\r\n// N_AGV_CODE = 0,\r\n// N_AGV_SITE_LAYER = 0,\r\n// N_CAPACITY = 1,\r\n// N_CURRENT_NUM = 0,\r\n// S_TYPE = \"\",\r\n\r\n// });\r\n// }\r\n// }\r\n// // TaskProcess.CreateTask(\"\", locs[6], locs[7], \"test\", 9, new List<string> { \"test\" }, 1, 1, 1);\r\n// }\r\n", "ParentID": "20250226153120175", "Children": [], "Type": "Program", @@ -100,8 +100,8 @@ "ID": "20250325083325390", "Name": "鎹风灛鎶撹噦1", "Desc": "", - "Content": "var VERX = Settings.deviceInfos?.Find(x =>x.deviceType==2&& x.deviceName == \"Js鎹烽『1\");\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.Js1.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[0]\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.Js1.D1212_LAST = 1;\r\n }\r\n }\r\n if(tag.Js1.D1212_LAST == 1 &&TcpServer.GetBitdata(tag.Js1.D1212, 2) == 0){\r\n\t\t\t\t\t\t\t\ttag.Js1.D1212_LAST = 0;\r\n }\r\n\t\t\t\t\t\t\tif (tag.Js1.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 1)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvar str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\trequestType = 4,\r\n\t\t\t\t\t\t\t\t\tendBit = VERX.location[1]\r\n\t\t\t\t\t\t\t\t}));\r\n\t\t\t\t\t\t\t\tLogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n\t\t\t\t\t\t\t\tif (str.Contains(\"true\"))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ttag.Js1.D1213_LAST = 1;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}if(tag.Js1.D1213_LAST == 1 &&TcpServer.GetBitdata(tag.Js1.D1212, 3) == 0){\r\n\t\t\t\t\t\t\t\ttag.Js1.D1213_LAST = 0;\r\n }\r\n }", - "ContentCopy": "var VERX = Settings.deviceInfos?.Find(x =>x.deviceType==2&& x.deviceName == \"Js鎹烽『1\");\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.Js1.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[0]\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.Js1.D1212_LAST = 1;\r\n }\r\n }\r\n if(tag.Js1.D1212_LAST == 1 &&TcpServer.GetBitdata(tag.Js1.D1212, 2) == 0){\r\n\t\t\t\t\t\t\t\ttag.Js1.D1212_LAST = 0;\r\n }\r\n\t\t\t\t\t\t\tif (tag.Js1.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 1)\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tvar str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\trequestType = 4,\r\n\t\t\t\t\t\t\t\t\tendBit = VERX.location[1]\r\n\t\t\t\t\t\t\t\t}));\r\n\t\t\t\t\t\t\t\tLogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n\t\t\t\t\t\t\t\tif (str.Contains(\"true\"))\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ttag.Js1.D1213_LAST = 1;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}if(tag.Js1.D1213_LAST == 1 &&TcpServer.GetBitdata(tag.Js1.D1212, 3) == 0){\r\n\t\t\t\t\t\t\t\ttag.Js1.D1213_LAST = 0;\r\n }\r\n }", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadJS1\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadJS1\", new object[] { tag });", "ParentID": "20250325083047245", "Children": [], "Type": "Program", @@ -139,8 +139,8 @@ "ID": "20250325083326611", "Name": "鎹风灛鎶撹噦2", "Desc": "", - "Content": "//jsz2鎹风灛鎶撹噦2\r\n\r\n var VERX = Settings.deviceInfos?.Find(x =>x.deviceType==2&& x.deviceName == \"Js鎹烽『2\");\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.Js2.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[0]\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.Js2.D1212_LAST = 1;\r\n }\r\n } if(tag.Js2.D1212_LAST == 1 &&TcpServer.GetBitdata(tag.Js2.D1212, 2) == 0){\r\n\t\t\t\t\t\t\t\ttag.Js2.D1212_LAST = 0;\r\n }\r\n if (tag.Js2.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 3) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[1]\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.Js2.D1213_LAST = 1;\r\n }\r\n }if(tag.Js2.D1213_LAST == 1 &&TcpServer.GetBitdata(tag.Js2.D1213, 2) == 0){\r\n\t\t\t\t\t\t\t\ttag.Js2.D1213_LAST = 0;\r\n }\r\n }", - "ContentCopy": "//jsz2鎹风灛鎶撹噦2\r\n\r\n var VERX = Settings.deviceInfos?.Find(x =>x.deviceType==2&& x.deviceName == \"Js鎹烽『2\");\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.Js2.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[0]\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.Js2.D1212_LAST = 1;\r\n }\r\n } if(tag.Js2.D1212_LAST == 1 &&TcpServer.GetBitdata(tag.Js2.D1212, 2) == 0){\r\n\t\t\t\t\t\t\t\ttag.Js2.D1212_LAST = 0;\r\n }\r\n if (tag.Js2.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 3) == 1)\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 4,\r\n endBit = VERX.location[1]\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.Js2.D1213_LAST = 1;\r\n }\r\n }if(tag.Js2.D1213_LAST == 1 &&TcpServer.GetBitdata(tag.Js2.D1213, 2) == 0){\r\n\t\t\t\t\t\t\t\ttag.Js2.D1213_LAST = 0;\r\n }\r\n }", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadJS2\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadJS2\", new object[] { tag });", "ParentID": "20250325083047245", "Children": [], "Type": "Program", @@ -225,8 +225,8 @@ "ID": "20250325083149366", "Name": "缁村笇灏旀姄鑷�L", "Desc": "", - "Content": "\r\nvar VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"1\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr1.R44 && !tag.wxr1.R44_LAST && tag.wxr1.R10)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[0],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr1.R44_LAST = true; \r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n //TaskRepository ts = new TaskRepository();\r\n if (tag.wxr1.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n \tif (tag.wxr1.R10)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ttag.wxr1.R10_LAST=false;\r\n\t\t\t\t\t\t\t\t\t} else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0],out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr1.R10 = true;\r\n tag.wxr1.R44_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }", - "ContentCopy": "\r\nvar VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"1\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr1.R44 && !tag.wxr1.R44_LAST && tag.wxr1.R10)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[0],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr1.R44_LAST = true; \r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n //TaskRepository ts = new TaskRepository();\r\n if (tag.wxr1.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n \tif (tag.wxr1.R10)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ttag.wxr1.R10_LAST=false;\r\n\t\t\t\t\t\t\t\t\t} else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0],out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr1.R10 = true;\r\n tag.wxr1.R44_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Threadwxr1L\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Threadwxr1L\", new object[] { tag });", "ParentID": "20250610002001052", "Children": [], "Type": "Program", @@ -264,8 +264,8 @@ "ID": "20250610002047005", "Name": "缁村笇灏旀姄鑷�R", "Desc": "", - "Content": "var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"1\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr1.R46 && !tag.wxr1.R46_LAST && tag.wxr1.R11)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[1],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr1.R46_LAST = true; \r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n if (tag.wxr1.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n \tif (tag.wxr1.R11)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ttag.wxr1.R11_LAST=false;\r\n\t\t\t\t\t\t\t\t\t} else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1],out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr1.R11 = true;\r\n tag.wxr1.R46_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }", - "ContentCopy": "var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"1\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr1.R46 && !tag.wxr1.R46_LAST && tag.wxr1.R11)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[1],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr1.R46_LAST = true; \r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n if (tag.wxr1.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n \tif (tag.wxr1.R11)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\ttag.wxr1.R11_LAST=false;\r\n\t\t\t\t\t\t\t\t\t} else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1],out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr1.R11 = true;\r\n tag.wxr1.R46_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Threadwxr1R\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Threadwxr1R\", new object[] { tag });", "ParentID": "20250610002001052", "Children": [], "Type": "Program", @@ -339,8 +339,8 @@ "ID": "20250325083315503", "Name": "缁村笇灏旀姄鑷�L", "Desc": "", - "Content": "\r\nvar VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"2\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr2.R44 && !tag.wxr2.R44_LAST && tag.wxr2.R10)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[0],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr2.R44_LAST = true; \r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n if (tag.wxr2.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n \tif (tag.wxr2.R10)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttag.wxr2.R10_LAST=false;\r\n\t\t\t\t\t\t\t\t\t} else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0],out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr2.R10 = true;\r\n tag.wxr2.R44_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }", - "ContentCopy": "\r\nvar VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"2\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr2.R44 && !tag.wxr2.R44_LAST && tag.wxr2.R10)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[0],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr2.R44_LAST = true; \r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n if (tag.wxr2.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n \tif (tag.wxr2.R10)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttag.wxr2.R10_LAST=false;\r\n\t\t\t\t\t\t\t\t\t} else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0],out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr2.R10 = true;\r\n tag.wxr2.R44_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Threadwxr2L\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Threadwxr2L\", new object[] { tag });", "ParentID": "20250610002414741", "Children": [], "Type": "Program", @@ -378,8 +378,8 @@ "ID": "20250610002647095", "Name": "缁村笇灏旀姄鑷�R", "Desc": "", - "Content": "var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"2\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr2.R46 && !tag.wxr2.R46_LAST && tag.wxr2.R11)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[1],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr2.R46_LAST = true; \r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[2], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n if (tag.wxr2.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n \tif (tag.wxr2.R11)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttag.wxr2.R11_LAST=false;\r\n\t\t\t\t\t\t\t\t\t} else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1],out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr2.R11 = true;\r\n tag.wxr2.R46_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }", - "ContentCopy": "var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains(\"2\"));\r\n\r\n if (VERX != null)\r\n {\r\n if (tag.wxr2.R46 && !tag.wxr2.R46_LAST && tag.wxr2.R11)\r\n {\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))\r\n {\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", JsonConvert.SerializeObject(new\r\n {\r\n requestType = 1,\r\n cntrCode = traycode,\r\n startBit = VERX.location[1],\r\n endBit = \"\"\r\n }));\r\n LogHelper.Info($\"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}\");\r\n if (str.Contains(\"true\"))\r\n {\r\n tag.wxr2.R46_LAST = true; \r\n }\r\n }\r\n else\r\n {\r\n TcpServer.TcpServerSend(VERX.deviceNo[2], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\"));\r\n }\r\n }\r\n else\r\n {\r\n if (tag.wxr2.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�\r\n {\r\n \tif (tag.wxr2.R11)\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\ttag.wxr2.R11_LAST=false;\r\n\t\t\t\t\t\t\t\t\t} else\r\n if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1],out string traycode))\r\n {\r\n //涓婃姤鏍¢獙銆俓r\n ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/202\", JsonConvert.SerializeObject(new\r\n {\r\n sceneType = 1,\r\n cntrCode = traycode,\r\n }));\r\n if (str.Contains(\"true\"))\r\n {\r\n //Conn.榛樿Redis.SetValue(\"缁村笇灏旀姄鑷�.R10\", \"true\", \"缁村笇灏旀姄鑷�Queue\");\r\n tag.wxr2.R11 = true;\r\n tag.wxr2.R46_LAST = false;\r\n }\r\n else\r\n {\r\n //鎶ヨ銆俓r\n }\r\n }\r\n else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin(\"544F4E\")); }\r\n }\r\n }\r\n }", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Threadwxr2R\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Threadwxr2R\", new object[] { tag });", "ParentID": "20250610002414741", "Children": [], "Type": "Program", @@ -473,8 +473,8 @@ "ID": "20250325085542733", "Name": "浠诲姟涓嬪彂", "Desc": "", - "Content": "ITaskRepository taskservice = new TaskRepository();\r\nvar tklist = taskservice.FindList(x => x.S_B_STATE == \"鏈墽琛孿" && x.S_WORK_MODE == \"AGV\");\r\nif(tklist.Any())\r\nforeach (var tk in tklist.GroupBy(item =>\r\n{\r\n var ticks = item.T_CREATE.Ticks;\r\n return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));\r\n}).OrderBy(x => x.Key))\r\n{\r\n var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList();\r\n foreach (var t in ts)\r\n {\r\n var b = false;\r\n b = RunTask(t);\r\n\r\n if (b)\r\n {\r\n t.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(t);\r\n }\r\n }\r\n break;\r\n}\r\n#region Rgv\r\n\r\nvar task1Isrun = false;\r\nif (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)\r\n{\r\n task1Isrun = true;\r\n if (tag.RGV.bit1taskOver_LAST == 1)\r\n RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n}\r\nvar task2Isrun = false;\r\nif (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1)\r\n{\r\n task2Isrun = true;\r\n if (tag.RGV.bit2taskOver_LAST == 1)\r\n RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n}\r\nif (task1Isrun || task2Isrun)\r\n{\r\n string mes = \"\";\r\n if (task1Isrun)\r\n mes += tag.RGV.ReadTask1No + \"鎵ц涓�..\";\r\n if (task2Isrun)\r\n mes += tag.RGV.ReadTask2No + \"鎵ц涓�..\";\r\n LogHelper.Info($\"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�\");\r\n throw new Exception($\"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�\");\r\n //continue;\r\n}\r\nvar thisOver = 0;\r\n\r\nTaskEntity task1 = null;\r\nTaskEntity task2 = null;\r\n\r\nLogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅浠诲姟銆媆");\r\nif (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1)\r\n{\r\n var taskno = tag.RGV.ReadTask1No;\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟{tag.RGV.ReadTask1No}\");\r\n string tno = \"TN\" + (DateTime.Now.ToString(\"yy\")) + ((taskno.ToString()).PadLeft(8, '0'));\r\n task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);\r\n\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task1)}.bit1taskOver_LAST锛歿tag.RGV.bit1taskOver_LAST}\");\r\n if (tag.RGV.bit1taskOver_LAST == 0 && task1 != null)\r\n {\r\n if (task1.S_B_STATE != \"瀹屾垚\")\r\n {\r\n if (task1.S_B_STATE == \"鍙栬揣瀹屾垚\")\r\n {\r\n task1.S_B_STATE = \"瀹屾垚\";\r\n }\r\n else\r\n {\r\n task1.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n }\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟{task1.S_TASK_NO} 鐘舵�鍒囨崲涓簕task1.S_B_STATE}\");\r\n //tag.RGV.bit1taskOver_LAST = 1;\r\n RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"1\", out string msg);\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟鍐欏鐞哱");\r\n taskservice.Update(task1);\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟鏇存柊銆俓");\r\n }\r\n }\r\n}\r\nelse if (tag.RGV.ReadTask1No == 0)\r\n{\r\n LogHelper.Info($\"RGV 1宸ヤ綅娌℃湁浠诲姟銆媆");\r\n}\r\n\r\nLogHelper.Info($\"鏌ョ湅RGV 2宸ヤ綅浠诲姟銆媆");\r\nif (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver == 1)\r\n{\r\n var taskno = tag.RGV.ReadTask2No;\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟{tag.RGV.ReadTask2No}\");\r\n string tno = \"TN\" + (DateTime.Now.ToString(\"yy\")) + ((taskno.ToString()).PadLeft(8, '0'));\r\n task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);\r\n\r\n LogHelper.Info($\"RGV2宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task2)}.bit1taskOver_LAST锛歿tag.RGV.bit2taskOver_LAST}\");\r\n if (tag.RGV.bit2taskOver_LAST == 0 && task2 != null)\r\n {\r\n if (task2.S_B_STATE != \"瀹屾垚\")\r\n {\r\n if (task2.S_B_STATE == \"鍙栬揣瀹屾垚\")\r\n {\r\n task2.S_B_STATE = \"瀹屾垚\";\r\n }\r\n else\r\n {\r\n task2.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n }\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟{task2.S_TASK_NO} 鐘舵�鍒囨崲涓簕task2.S_B_STATE}\");\r\n RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"1\", out string msg);\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟鍐欏鐞哱");\r\n taskservice.Update(task2);\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟鏇存柊銆俓");\r\n }\r\n }\r\n}\r\nelse if (tag.RGV.ReadTask2No == 0)\r\n{\r\n LogHelper.Info($\"RGV 2宸ヤ綅娌℃湁浠诲姟銆媆");\r\n}\r\n\r\n\r\n///1 鏈夎揣 灏� 鍙栥� 1 娌¤揣 灏� 鍗歌揣锛�閮芥湁璐� 灏�鍗歌揣銆�閮芥病璐�灏�鍗竆r\ntklist = taskservice.FindList(x => x.S_B_STATE == \"鏈墽琛孿" && x.S_WORK_MODE == \"RGV\").OrderBy(x => x.T_CREATE).ToList();\r\nif (task1 != null && task1.S_B_STATE != \"瀹屾垚\") //1鏈変换鍔r\n{\r\n if (task2 != null && task2.S_B_STATE != \"瀹屾垚\")// 1 鏈変换鍔� 2 鏈変换鍔°� \r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 涔熸湁浠诲姟{task2.S_TASK_NO}銆�寮�宸ヤ綅1 鍗歌揣銆俓");\r\n tag.RGV.workMod = 1;\r\n tag.RGV.taskmod = 2;\r\n tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));\r\n tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n }\r\n else //1鏈変换鍔� 2 娌′换鍔°�\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔°�\");\r\n //1 濡傛灉鏈夊悓渚у彇璐т换鍔°�灏卞彇銆傛病鏈塡r\n var leftSide = new List<string> { \"1023\", \"1020\" };\r\n var RightSide = new List<string> { \"1002\", \"1008\", \"1010\", \"1016\" };\r\n bool creT2 = false;\r\n if (leftSide.Contains(task1.S_START_LOC))\r\n {\r\n leftSide.Remove(task1.S_START_LOC);\r\n var lsde = leftSide.FirstOrDefault();\r\n var t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != \"1017\");\r\n if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆俓r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔t2.S_TASK_NO}銆俓");\r\n tag.RGV.workMod = 2;\r\n tag.RGV.taskmod = 1;\r\n tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n t2.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(t2);\r\n creT2 = true;\r\n }\r\n }\r\n else if (RightSide.Contains(task1.S_START_LOC))\r\n {\r\n RightSide.Remove(task1.S_START_LOC);\r\n var t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != \"1017\");\r\n if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆俓r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔t2.S_TASK_NO}銆俓");\r\n tag.RGV.workMod = 2;\r\n tag.RGV.taskmod = 1;\r\n tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n t2.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(t2);\r\n creT2 = true;\r\n }\r\n }\r\n //else //1 鐩存帴鍗歌揣銆�\r\n if (!creT2)\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 娌℃湁鍚屼晶鍙栬揣浠诲姟 1宸ヤ綅鍗歌揣銆俓");\r\n tag.RGV.workMod = 1;\r\n tag.RGV.taskmod = 2;\r\n tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));\r\n tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n }\r\n }\r\n}\r\nelse\r\n{\r\n if (task2 != null && task2.S_B_STATE != \"瀹屾垚\")// 1 娌′换鍔� 2 鏈変换鍔°� \r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 鏈変换鍔task2.S_TASK_NO}銆傚伐浣�鍗歌揣銆傘�\");\r\n //2 鍗歌揣銆俓r\n tag.RGV.workMod = 2;\r\n tag.RGV.taskmod = 2;\r\n tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4));\r\n tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n }\r\n else //1mei 浠诲姟 2 娌′换鍔°�\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 涔熸病浠诲姟銆備紭鍏�宸ヤ綅缁堢偣1017浠诲姟銆傘�\");\r\n //銆佷笅 1017浠诲姟 缁�鍙峰伐浣嶃�\r\n var lss = tklist.Take(2).ToList();\r\n var e1017first = lss.Find(x => x.S_END_LOC == \"1017\");\r\n if (e1017first == null)\r\n {\r\n e1017first = lss.FirstOrDefault();\r\n }\r\n if (e1017first != null)\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 涔熸病浠诲姟銆�宸ヤ綅涓嬩换鍔e1017first.S_TASK_NO}> 缁堢偣{e1017first.S_END_LOC}銆俓");\r\n try\r\n {\r\n tag.RGV.workMod = 1;\r\n tag.RGV.taskmod = 1;\r\n uint tno = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(4));\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}> 杞崲鍚庝换鍔″彿{tno} 寮�鍐欏叆銆俓");\r\n tag.RGV.taskno1 = tno;\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}>寮�鍐欏叆 task1do>>{e1017first.S_START_LOC}銆俓");\r\n tag.RGV.task1do = Convert.ToUInt16(e1017first.S_START_LOC);\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Error(ex.Message, ex);\r\n throw ex;\r\n }\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}> taskend 125\");\r\n e1017first.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(e1017first);\r\n }\r\n }\r\n}\r\n\r\n#endregion", - "ContentCopy": "ITaskRepository taskservice = new TaskRepository();\r\nvar tklist = taskservice.FindList(x => x.S_B_STATE == \"鏈墽琛孿" && x.S_WORK_MODE == \"AGV\");\r\nif(tklist.Any())\r\nforeach (var tk in tklist.GroupBy(item =>\r\n{\r\n var ticks = item.T_CREATE.Ticks;\r\n return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));\r\n}).OrderBy(x => x.Key))\r\n{\r\n var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList();\r\n foreach (var t in ts)\r\n {\r\n var b = false;\r\n b = RunTask(t);\r\n\r\n if (b)\r\n {\r\n t.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(t);\r\n }\r\n }\r\n break;\r\n}\r\n#region Rgv\r\n\r\nvar task1Isrun = false;\r\nif (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)\r\n{\r\n task1Isrun = true;\r\n if (tag.RGV.bit1taskOver_LAST == 1)\r\n RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n}\r\nvar task2Isrun = false;\r\nif (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1)\r\n{\r\n task2Isrun = true;\r\n if (tag.RGV.bit2taskOver_LAST == 1)\r\n RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n}\r\nif (task1Isrun || task2Isrun)\r\n{\r\n string mes = \"\";\r\n if (task1Isrun)\r\n mes += tag.RGV.ReadTask1No + \"鎵ц涓�..\";\r\n if (task2Isrun)\r\n mes += tag.RGV.ReadTask2No + \"鎵ц涓�..\";\r\n LogHelper.Info($\"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�\");\r\n throw new Exception($\"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�\");\r\n //continue;\r\n}\r\nvar thisOver = 0;\r\n\r\nTaskEntity task1 = null;\r\nTaskEntity task2 = null;\r\n\r\nLogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅浠诲姟銆媆");\r\nif (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1)\r\n{\r\n var taskno = tag.RGV.ReadTask1No;\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟{tag.RGV.ReadTask1No}\");\r\n string tno = \"TN\" + (DateTime.Now.ToString(\"yy\")) + ((taskno.ToString()).PadLeft(8, '0'));\r\n task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);\r\n\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task1)}.bit1taskOver_LAST锛歿tag.RGV.bit1taskOver_LAST}\");\r\n if (tag.RGV.bit1taskOver_LAST == 0 && task1 != null)\r\n {\r\n if (task1.S_B_STATE != \"瀹屾垚\")\r\n {\r\n if (task1.S_B_STATE == \"鍙栬揣瀹屾垚\")\r\n {\r\n task1.S_B_STATE = \"瀹屾垚\";\r\n }\r\n else\r\n {\r\n task1.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n }\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟{task1.S_TASK_NO} 鐘舵�鍒囨崲涓簕task1.S_B_STATE}\");\r\n //tag.RGV.bit1taskOver_LAST = 1;\r\n RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"1\", out string msg);\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟鍐欏鐞哱");\r\n taskservice.Update(task1);\r\n LogHelper.Info($\"RGV 1宸ヤ綅浠诲姟鏇存柊銆俓");\r\n }\r\n }\r\n}\r\nelse if (tag.RGV.ReadTask1No == 0)\r\n{\r\n LogHelper.Info($\"RGV 1宸ヤ綅娌℃湁浠诲姟銆媆");\r\n}\r\n\r\nLogHelper.Info($\"鏌ョ湅RGV 2宸ヤ綅浠诲姟銆媆");\r\nif (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver == 1)\r\n{\r\n var taskno = tag.RGV.ReadTask2No;\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟{tag.RGV.ReadTask2No}\");\r\n string tno = \"TN\" + (DateTime.Now.ToString(\"yy\")) + ((taskno.ToString()).PadLeft(8, '0'));\r\n task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);\r\n\r\n LogHelper.Info($\"RGV2宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task2)}.bit1taskOver_LAST锛歿tag.RGV.bit2taskOver_LAST}\");\r\n if (tag.RGV.bit2taskOver_LAST == 0 && task2 != null)\r\n {\r\n if (task2.S_B_STATE != \"瀹屾垚\")\r\n {\r\n if (task2.S_B_STATE == \"鍙栬揣瀹屾垚\")\r\n {\r\n task2.S_B_STATE = \"瀹屾垚\";\r\n }\r\n else\r\n {\r\n task2.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n }\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟{task2.S_TASK_NO} 鐘舵�鍒囨崲涓簕task2.S_B_STATE}\");\r\n RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"1\", out string msg);\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟鍐欏鐞哱");\r\n taskservice.Update(task2);\r\n LogHelper.Info($\"RGV 2宸ヤ綅浠诲姟鏇存柊銆俓");\r\n }\r\n }\r\n}\r\nelse if (tag.RGV.ReadTask2No == 0)\r\n{\r\n LogHelper.Info($\"RGV 2宸ヤ綅娌℃湁浠诲姟銆媆");\r\n}\r\n\r\n\r\n///1 鏈夎揣 灏� 鍙栥� 1 娌¤揣 灏� 鍗歌揣锛�閮芥湁璐� 灏�鍗歌揣銆�閮芥病璐�灏�鍗竆r\ntklist = taskservice.FindList(x => x.S_B_STATE == \"鏈墽琛孿" && x.S_WORK_MODE == \"RGV\").OrderBy(x => x.T_CREATE).ToList();\r\nif (task1 != null && task1.S_B_STATE != \"瀹屾垚\") //1鏈変换鍔r\n{\r\n if (task2 != null && task2.S_B_STATE != \"瀹屾垚\")// 1 鏈変换鍔� 2 鏈変换鍔°� \r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 涔熸湁浠诲姟{task2.S_TASK_NO}銆�寮�宸ヤ綅1 鍗歌揣銆俓");\r\n tag.RGV.workMod = 1;\r\n tag.RGV.taskmod = 2;\r\n tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));\r\n tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n }\r\n else //1鏈変换鍔� 2 娌′换鍔°�\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔°�\");\r\n //1 濡傛灉鏈夊悓渚у彇璐т换鍔°�灏卞彇銆傛病鏈塡r\n var leftSide = new List<string> { \"1023\", \"1020\" };\r\n var RightSide = new List<string> { \"1002\", \"1008\", \"1010\", \"1016\" };\r\n bool creT2 = false;\r\n if (leftSide.Contains(task1.S_START_LOC))\r\n {\r\n leftSide.Remove(task1.S_START_LOC);\r\n var lsde = leftSide.FirstOrDefault();\r\n var t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != \"1017\");\r\n if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆俓r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔t2.S_TASK_NO}銆俓");\r\n tag.RGV.workMod = 2;\r\n tag.RGV.taskmod = 1;\r\n tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n t2.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(t2);\r\n creT2 = true;\r\n }\r\n }\r\n else if (RightSide.Contains(task1.S_START_LOC))\r\n {\r\n RightSide.Remove(task1.S_START_LOC);\r\n var t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != \"1017\");\r\n if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆俓r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔t2.S_TASK_NO}銆俓");\r\n tag.RGV.workMod = 2;\r\n tag.RGV.taskmod = 1;\r\n tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n t2.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(t2);\r\n creT2 = true;\r\n }\r\n }\r\n //else //1 鐩存帴鍗歌揣銆�\r\n if (!creT2)\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 娌℃湁鍚屼晶鍙栬揣浠诲姟 1宸ヤ綅鍗歌揣銆俓");\r\n tag.RGV.workMod = 1;\r\n tag.RGV.taskmod = 2;\r\n tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));\r\n tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n }\r\n }\r\n}\r\nelse\r\n{\r\n if (task2 != null && task2.S_B_STATE != \"瀹屾垚\")// 1 娌′换鍔� 2 鏈変换鍔°� \r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 鏈変换鍔task2.S_TASK_NO}銆傚伐浣�鍗歌揣銆傘�\");\r\n //2 鍗歌揣銆俓r\n tag.RGV.workMod = 2;\r\n tag.RGV.taskmod = 2;\r\n tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4));\r\n tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC);\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n }\r\n else //1mei 浠诲姟 2 娌′换鍔°�\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 涔熸病浠诲姟銆備紭鍏�宸ヤ綅缁堢偣1017浠诲姟銆傘�\");\r\n //銆佷笅 1017浠诲姟 缁�鍙峰伐浣嶃�\r\n var lss = tklist.Take(2).ToList();\r\n var e1017first = lss.Find(x => x.S_END_LOC == \"1017\");\r\n if (e1017first == null)\r\n {\r\n e1017first = lss.FirstOrDefault();\r\n }\r\n if (e1017first != null)\r\n {\r\n LogHelper.Info($\"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 涔熸病浠诲姟銆�宸ヤ綅涓嬩换鍔e1017first.S_TASK_NO}> 缁堢偣{e1017first.S_END_LOC}銆俓");\r\n try\r\n {\r\n tag.RGV.workMod = 1;\r\n tag.RGV.taskmod = 1;\r\n uint tno = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(4));\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}> 杞崲鍚庝换鍔″彿{tno} 寮�鍐欏叆銆俓");\r\n tag.RGV.taskno1 = tno;\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}>寮�鍐欏叆 task1do>>{e1017first.S_START_LOC}銆俓");\r\n tag.RGV.task1do = Convert.ToUInt16(e1017first.S_START_LOC);\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Error(ex.Message, ex);\r\n throw ex;\r\n }\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n System.Threading.Thread.Sleep(750);\r\n tag.RGV.taskend = 125;\r\n LogHelper.Info($\"{e1017first.S_TASK_NO}> taskend 125\");\r\n e1017first.S_B_STATE = \"宸叉帹閫乗";\r\n taskservice.Update(e1017first);\r\n }\r\n }\r\n}\r\n\r\n#endregion", + "Content": "\r\n Func<TaskEntity, bool> myDelegate = (t) => RunTask(t);\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadTaskRun\", new object[] { tag, myDelegate });", + "ContentCopy": "\r\n Func<TaskEntity, bool> myDelegate = (t) => RunTask(t);\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadTaskRun\", new object[] { tag, myDelegate });", "ParentID": "20250226153120175", "Children": [], "Type": "Program", @@ -626,8 +626,8 @@ "ID": "20250611223832523", "Name": "鍏夋爡澶勭悊", "Desc": "", - "Content": "// - 鍏夋爡浜や簰澶勭悊銆傘�\r\n var taskCOdes = new List<string> { \"Sarrive\", \"Srelease\", \"Earrive\", \"Erelease\" };\r\n TaskActRepository taskActRepository = new TaskActRepository();\r\n TaskRepository taskRepository = new TaskRepository();\r\n var requires = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0);\r\n foreach (var item in requires)\r\n {\r\n var tin = taskCOdes.IndexOf(item.S_ACTION_CODE);\r\n if (tin == -1)\r\n {\r\n item.N_CREATEMETHOD = -1;\r\n taskActRepository.Update(item);\r\n continue;\r\n }\r\n //var task = taskRepository.FindEntity(x => x.S_TASK_NO == item.S_TASK_NO);\r\n string loc = \"\";\r\n if (tin < 2)\r\n {\r\n loc = item.S_START_LOC;\r\n }\r\n else\r\n {\r\n loc = item.S_END_LOC;\r\n } \r\n\t\t\t\t\t\t\tif (loc == null) continue; else loc = loc.Trim();\r\n bool goin = tin % 2 == 0;\r\n bool continuuuuu =false;\r\n var dev = Settings.deviceInfos.Find(x => x.location.Contains(loc));\r\n if (dev != null)\r\n {\r\n var V = dev.location.ToList().FindIndex(x => x == loc) == 0;\r\n\t\t\t\t\t\t\t\t//杞﹁蛋浜� 寮�厜鏍匼r\n if (!goin)\r\n {\r\n if (dev.deviceType == 1)\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin?\"鍏抽棴\":\"寮�惎\")} 鐢宠銆俓"+string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"R02\" : \"R04\"), \"true\", dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"R02\" : \"R04\"), \"true\", dev.deviceName + \"Queue\");\r\n\r\n }\r\n else if (dev.deviceType == 2)\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin?\"鍏抽棴\":\"寮�惎\")} 鐢宠銆俓"+string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"D1222\" : \"D1223\"), \"1\", dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"D1222\" : \"D1223\"), \"1\", dev.deviceName + \"Queue\");\r\n }\r\n \r\n\t item.N_CREATEMETHOD = 1;\r\n\t taskActRepository.Update(item);\r\n\t\t\t\t\t\t\t\t}\r\n //杞﹁杩涘叆浜や簰銆俓r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n if (dev.deviceType == 1)\r\n {\r\n\t\t\t\t\t\t\t\t\t\tvar tf = Conn.榛樿Redis.GetValue(dev.deviceName + \".\" + (V ? \"R50\" : \"R52\"));//璇诲叧闂姸鎬乗r\n\t\t\t\t\t\t\t\t\t\tif (tf?.ToLower() == \"true\")\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tLogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin?\"鍏抽棴\":\"寮�惎\")} 鐢宠銆�宸茬粡鍏抽棴锛乗");\r\n\t\t\t\t\t\t\t\t\t\t\tcontinuuuuu = true;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tLogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin?\"鍏抽棴\":\"寮�惎\")} 鐢宠銆俓"+string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"R01\" : \"R03\"), \"true\", dev.deviceName + \"Queue\"));\r\n\t\t\t\t\t\t\t\t\t\t\tConn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"R01\" : \"R03\"), \"true\", dev.deviceName + \"Queue\");\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n }\r\n else if (dev.deviceType == 2)\r\n {\r\n var tf = Conn.榛樿Redis.GetValue(dev.deviceName + \".D1202\");\r\n\t\t\t\t\t\t\t\t\t\tint numm = int.Parse(string.IsNullOrEmpty(tf) ? \"0\" : tf);\r\n if (TcpServer.GetBitdata(numm,(V?0:1))==1)\r\n {\r\n\t\t\t\t\t\t\t\t\t\t\tLogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin?\"鍏抽棴\":\"寮�惎\")} 鐢宠銆�宸茬粡鍏抽棴锛乗");\r\n continuuuuu = true;\r\n }\r\n else\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin?\"鍏抽棴\":\"寮�惎\")} 鐢宠銆俓"+string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"D1220\" : \"D1221\"), dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"D1220\" : \"D1221\"), \"1\", dev.deviceName + \"Queue\");\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n if (continuuuuu)\r\n {\r\n\t\t\t\t\t\t\t\tLogHelper.Info($\"{item.S_TASK_NO}{item.S_ACTION_CODE} 杞﹁締鍙戦�缁х画浠诲姟锛乗");\r\n continueTask(new HaiKangOrderInfo\r\n {\r\n reqCode = item.S_ID.Replace(\"-\", \"\"),\r\n taskCode = item.S_TASK_NO\r\n });\r\n item.N_CREATEMETHOD = 1;\r\n taskActRepository.Update(item);\r\n }\r\n }\r\n System.Threading.Thread.Sleep(3000);\r\n //閲嶇疆淇″彿\r\n foreach (var dev in Settings.deviceInfos.FindAll(x => x.deviceType == 2))\r\n {\r\n var tf = Conn.榛樿Redis.GetValue(dev.deviceName + \".D1202\");\r\n int numm = int.Parse(string.IsNullOrEmpty(tf) ? \"0\" : tf);\r\n if (TcpServer.GetBitdata(numm, 0) == 0)\r\n {\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1220\", \"0\", dev.deviceName + \"Queue\");\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1222\", \"0\", dev.deviceName + \"Queue\");\r\n }\r\n else if (TcpServer.GetBitdata(numm, 1) == 0)\r\n {\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1221\", \"0\", dev.deviceName + \"Queue\");\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1223\", \"0\", dev.deviceName + \"Queue\");\r\n }\r\n }\r\n \r\n // 鍙戦偅绉戜笅鏂欏厜鏍呫�", - "ContentCopy": "// - 鍏夋爡浜や簰澶勭悊銆傘�\r\n var taskCOdes = new List<string> { \"Sarrive\", \"Srelease\", \"Earrive\", \"Erelease\" };\r\n TaskActRepository taskActRepository = new TaskActRepository();\r\n TaskRepository taskRepository = new TaskRepository();\r\n var requires = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0);\r\n foreach (var item in requires)\r\n {\r\n var tin = taskCOdes.IndexOf(item.S_ACTION_CODE);\r\n if (tin == -1)\r\n {\r\n item.N_CREATEMETHOD = -1;\r\n taskActRepository.Update(item);\r\n continue;\r\n }\r\n //var task = taskRepository.FindEntity(x => x.S_TASK_NO == item.S_TASK_NO);\r\n string loc = \"\";\r\n if (tin < 2)\r\n {\r\n loc = item.S_START_LOC;\r\n }\r\n else\r\n {\r\n loc = item.S_END_LOC;\r\n } \r\n\t\t\t\t\t\t\tif (loc == null) continue; else loc = loc.Trim();\r\n bool goin = tin % 2 == 0;\r\n bool continuuuuu =false;\r\n var dev = Settings.deviceInfos.Find(x => x.location.Contains(loc));\r\n if (dev != null)\r\n {\r\n var V = dev.location.ToList().FindIndex(x => x == loc) == 0;\r\n\t\t\t\t\t\t\t\t//杞﹁蛋浜� 寮�厜鏍匼r\n if (!goin)\r\n {\r\n if (dev.deviceType == 1)\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin?\"鍏抽棴\":\"寮�惎\")} 鐢宠銆俓"+string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"R02\" : \"R04\"), \"true\", dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"R02\" : \"R04\"), \"true\", dev.deviceName + \"Queue\");\r\n\r\n }\r\n else if (dev.deviceType == 2)\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin?\"鍏抽棴\":\"寮�惎\")} 鐢宠銆俓"+string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"D1222\" : \"D1223\"), \"1\", dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"D1222\" : \"D1223\"), \"1\", dev.deviceName + \"Queue\");\r\n }\r\n \r\n\t item.N_CREATEMETHOD = 1;\r\n\t taskActRepository.Update(item);\r\n\t\t\t\t\t\t\t\t}\r\n //杞﹁杩涘叆浜や簰銆俓r\n\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t{\r\n if (dev.deviceType == 1)\r\n {\r\n\t\t\t\t\t\t\t\t\t\tvar tf = Conn.榛樿Redis.GetValue(dev.deviceName + \".\" + (V ? \"R50\" : \"R52\"));//璇诲叧闂姸鎬乗r\n\t\t\t\t\t\t\t\t\t\tif (tf?.ToLower() == \"true\")\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tLogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin?\"鍏抽棴\":\"寮�惎\")} 鐢宠銆�宸茬粡鍏抽棴锛乗");\r\n\t\t\t\t\t\t\t\t\t\t\tcontinuuuuu = true;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tLogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin?\"鍏抽棴\":\"寮�惎\")} 鐢宠銆俓"+string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"R01\" : \"R03\"), \"true\", dev.deviceName + \"Queue\"));\r\n\t\t\t\t\t\t\t\t\t\t\tConn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"R01\" : \"R03\"), \"true\", dev.deviceName + \"Queue\");\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n }\r\n else if (dev.deviceType == 2)\r\n {\r\n var tf = Conn.榛樿Redis.GetValue(dev.deviceName + \".D1202\");\r\n\t\t\t\t\t\t\t\t\t\tint numm = int.Parse(string.IsNullOrEmpty(tf) ? \"0\" : tf);\r\n if (TcpServer.GetBitdata(numm,(V?0:1))==1)\r\n {\r\n\t\t\t\t\t\t\t\t\t\t\tLogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin?\"鍏抽棴\":\"寮�惎\")} 鐢宠銆�宸茬粡鍏抽棴锛乗");\r\n continuuuuu = true;\r\n }\r\n else\r\n {\r\n LogHelper.Info($\"{dev.deviceName}{(V ? \"宸" : \"鍙砛")} 鍏夋爡{(goin?\"鍏抽棴\":\"寮�惎\")} 鐢宠銆俓"+string.Format(\"{0}{1}{2}\", dev.deviceName + \".\" + (V ? \"D1220\" : \"D1221\"), dev.deviceName + \"Queue\"));\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".\" + (V ? \"D1220\" : \"D1221\"), \"1\", dev.deviceName + \"Queue\");\r\n }\r\n }\r\n\r\n }\r\n\r\n }\r\n if (continuuuuu)\r\n {\r\n\t\t\t\t\t\t\t\tLogHelper.Info($\"{item.S_TASK_NO}{item.S_ACTION_CODE} 杞﹁締鍙戦�缁х画浠诲姟锛乗");\r\n continueTask(new HaiKangOrderInfo\r\n {\r\n reqCode = item.S_ID.Replace(\"-\", \"\"),\r\n taskCode = item.S_TASK_NO\r\n });\r\n item.N_CREATEMETHOD = 1;\r\n taskActRepository.Update(item);\r\n }\r\n }\r\n System.Threading.Thread.Sleep(3000);\r\n //閲嶇疆淇″彿\r\n foreach (var dev in Settings.deviceInfos.FindAll(x => x.deviceType == 2))\r\n {\r\n var tf = Conn.榛樿Redis.GetValue(dev.deviceName + \".D1202\");\r\n int numm = int.Parse(string.IsNullOrEmpty(tf) ? \"0\" : tf);\r\n if (TcpServer.GetBitdata(numm, 0) == 0)\r\n {\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1220\", \"0\", dev.deviceName + \"Queue\");\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1222\", \"0\", dev.deviceName + \"Queue\");\r\n }\r\n else if (TcpServer.GetBitdata(numm, 1) == 0)\r\n {\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1221\", \"0\", dev.deviceName + \"Queue\");\r\n Conn.榛樿Redis.SetValue(dev.deviceName + \".D1223\", \"0\", dev.deviceName + \"Queue\");\r\n }\r\n }\r\n \r\n // 鍙戦偅绉戜笅鏂欏厜鏍呫�", + "Content": "// - 鍏夋爡浜や簰澶勭悊銆傘�\r\n Action<HaiKangOrderInfo> myDelegate = (t) => continueTask(t);\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadGrats\", new object[] { tag, myDelegate });\r\n \r\n // 鍙戦偅绉戜笅鏂欏厜鏍呫�", + "ContentCopy": "// - 鍏夋爡浜や簰澶勭悊銆傘�\r\n Action<HaiKangOrderInfo> myDelegate = (t) => continueTask(t);\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadGrats\", new object[] { tag, myDelegate });\r\n \r\n // 鍙戦偅绉戜笅鏂欏厜鏍呫�", "ParentID": "20250226153120175", "Children": [], "Type": "Program", @@ -673,8 +673,8 @@ "ID": "20250616094224396", "Name": "1020绌烘涓嬬嚎", "Desc": "", - "Content": "foreach (var Bssx in new string[] { \"1020\", \"1023\" })\r\n{\r\n var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.R鎵樼洏鐮乗"), typeof(System.String));\r\n Console.WriteLine($\"{Bssx} 绌轰笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇\");\r\n if (RtaskState == 3 && RtaskState_LAST == 0)\r\n {\r\n try\r\n {\r\n foreach (var item in new string[] { \"1004\", \"1006\", \"1012\", \"1014\" })\r\n {\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 == 5 && R5绌洪棽_LAST == 0)\r\n {\r\n var b = TaskProcess.CreateTask(\"\", Bssx, item, \"绌轰笂RGV\", 5, new List<string> { R鎵樼洏鐮�}, \"RGV\");\r\n if (b)\r\n {\r\n LogHelper.Debug($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{Bssx}>to {item}寮�鍒涘缓鎴愬姛\");\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"1\", out string msg1);\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n break;\r\n }\r\n }\r\n else if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n }\r\n }\r\n System.Threading.Thread.Sleep(1000);\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Error(ex.Message, ex);\r\n Console.WriteLine(ex.Message + ex.StackTrace);\r\n }\r\n }\r\n else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n }\r\n System.Threading.Thread.Sleep(2000);\r\n}", - "ContentCopy": "foreach (var Bssx in new string[] { \"1020\", \"1023\" })\r\n{\r\n var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.R鎵樼洏鐮乗"), typeof(System.String));\r\n Console.WriteLine($\"{Bssx} 绌轰笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇\");\r\n if (RtaskState == 3 && RtaskState_LAST == 0)\r\n {\r\n try\r\n {\r\n foreach (var item in new string[] { \"1004\", \"1006\", \"1012\", \"1014\" })\r\n {\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 == 5 && R5绌洪棽_LAST == 0)\r\n {\r\n var b = TaskProcess.CreateTask(\"\", Bssx, item, \"绌轰笂RGV\", 5, new List<string> { R鎵樼洏鐮�}, \"RGV\");\r\n if (b)\r\n {\r\n LogHelper.Debug($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{Bssx}>to {item}寮�鍒涘缓鎴愬姛\");\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"1\", out string msg1);\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n break;\r\n }\r\n }\r\n else if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n }\r\n }\r\n System.Threading.Thread.Sleep(1000);\r\n }\r\n catch (Exception ex)\r\n {\r\n LogHelper.Error(ex.Message, ex);\r\n Console.WriteLine(ex.Message + ex.StackTrace);\r\n }\r\n }\r\n else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n }\r\n System.Threading.Thread.Sleep(2000);\r\n}", + "Content": "\r\n //1020 1023 绌烘涓嬬嚎\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadEdown\", new object[] { tag });", + "ContentCopy": "\r\n //1020 1023 绌烘涓嬬嚎\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadEdown\", new object[] { tag });", "ParentID": "20250614173821058", "Children": [], "Type": "Program", @@ -751,8 +751,8 @@ "ID": "20250616094632985", "Name": "瀹氬瓙婊′笅绾�, "Desc": "", - "Content": "foreach (var Bssx in new string[] { \"1008\", \"1016\" })\r\n{\r\n var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.R鎵樼洏鐮乗"), typeof(System.String));\r\n Console.WriteLine($\"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇\");\r\n if (RtaskState == 3 && RtaskState_LAST == 0)\r\n {\r\n var item = \"1026\";\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 == 5 && R5绌洪棽_LAST == 0)\r\n {\r\n var b = TaskProcess.CreateTask(\"\", Bssx, item, \"婊¤浆1026\", 5, new List<string> { R鎵樼洏鐮�}, \"RGV\");\r\n if (b)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out string msg);\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"1\", out string msg2);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n break;\r\n }\r\n }\r\n else if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out string msg2);\r\n }\r\n }\r\n else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n }\r\n System.Threading.Thread.Sleep(2000);\r\n}", - "ContentCopy": "foreach (var Bssx in new string[] { \"1008\", \"1016\" })\r\n{\r\n var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.R鎵樼洏鐮乗"), typeof(System.String));\r\n Console.WriteLine($\"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇\");\r\n if (RtaskState == 3 && RtaskState_LAST == 0)\r\n {\r\n var item = \"1026\";\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 == 5 && R5绌洪棽_LAST == 0)\r\n {\r\n var b = TaskProcess.CreateTask(\"\", Bssx, item, \"婊¤浆1026\", 5, new List<string> { R鎵樼洏鐮�}, \"RGV\");\r\n if (b)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out string msg);\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"1\", out string msg2);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n break;\r\n }\r\n }\r\n else if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out string msg2);\r\n }\r\n }\r\n else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n }\r\n System.Threading.Thread.Sleep(2000);\r\n}", + "Content": "\r\n //瀹氬瓙婊′笅绾� 1008 1016 -> 1026\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadDdown\", new object[] { tag });", + "ContentCopy": "\r\n //瀹氬瓙婊′笅绾� 1008 1016 -> 1026\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadDdown\", new object[] { tag });", "ParentID": "20250614173821058", "Children": [], "Type": "Program", @@ -790,8 +790,8 @@ "ID": "20250616094511322", "Name": "杞瓙婊′笅绾�, "Desc": "", - "Content": "//杞瓙婊′笅绾� 1002 1010 - RGV2宸ヤ綅涓嶅彲鍒�1017 涓嶅彲涓嬪彂2宸ヤ綅浠诲姟銆俓r\nforeach (var Bssx in new string[] { \"1002\", \"1010\" })\r\n{\r\n var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.R鎵樼洏鐮乗"), typeof(System.String));\r\n Console.WriteLine($\"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇\");\r\n if (RtaskState == 3 && RtaskState_LAST == 0)\r\n {\r\n var item = \"1017\";\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 == 5 && R5绌洪棽_LAST == 0)\r\n {\r\n var b = TaskProcess.CreateTask(\"\", Bssx, item, \"婊¤浆1017\", 5, new List<string> { R鎵樼洏鐮�}, \"RGV\");\r\n if (b)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out string msg);\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"1\", out string msg1);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n break;\r\n }\r\n }\r\n else if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out string msg1);\r\n }\r\n }\r\n else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n }\r\n System.Threading.Thread.Sleep(2000);\r\n}", - "ContentCopy": "//杞瓙婊′笅绾� 1002 1010 - RGV2宸ヤ綅涓嶅彲鍒�1017 涓嶅彲涓嬪彂2宸ヤ綅浠诲姟銆俓r\nforeach (var Bssx in new string[] { \"1002\", \"1010\" })\r\n{\r\n var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{Bssx}Read.R鎵樼洏鐮乗"), typeof(System.String));\r\n Console.WriteLine($\"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇\");\r\n if (RtaskState == 3 && RtaskState_LAST == 0)\r\n {\r\n var item = \"1017\";\r\n var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽\"), typeof(System.UInt16));\r\n var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"S{item}Read.R5绌洪棽_LAST\"), typeof(System.UInt16));\r\n if (R5 == 5 && R5绌洪棽_LAST == 0)\r\n {\r\n var b = TaskProcess.CreateTask(\"\", Bssx, item, \"婊¤浆1017\", 5, new List<string> { R鎵樼洏鐮�}, \"RGV\");\r\n if (b)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out string msg);\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"1\", out string msg1);\r\n //Conn.榛樿Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n //Conn.榛樿Redis.SetValue($\"S{item}Read.R5绌洪棽_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n break;\r\n }\r\n }\r\n else if (R5 != 5 && R5绌洪棽_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{item}Read.R5绌洪棽_LAST\", \"0\", out string msg1);\r\n }\r\n }\r\n else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n {\r\n RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n }\r\n System.Threading.Thread.Sleep(2000);\r\n}", + "Content": "\r\n //杞瓙婊′笅绾� 1002 1010 - RGV2宸ヤ綅涓嶅彲鍒�1017 涓嶅彲涓嬪彂2宸ヤ綅浠诲姟銆俓r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread0210Down\", new object[] { tag });", + "ContentCopy": "\r\n //杞瓙婊′笅绾� 1002 1010 - RGV2宸ヤ綅涓嶅彲鍒�1017 涓嶅彲涓嬪彂2宸ヤ綅浠诲姟銆俓r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread0210Down\", new object[] { tag });", "ParentID": "20250614173821058", "Children": [], "Type": "Program", @@ -829,8 +829,8 @@ "ID": "20250616095605911", "Name": "涓嬫枡浣嶆娴�, "Desc": "", - "Content": "//涓嬫枡浣嶆娴嬨� 1003 鍒颁綅鏃�鍐�鏍囪瘑淇″彿 骞�缁欐満姊版墜淇″彿銆� \r\nforeach (var ssx in new string[] { \"1003\", \"1005\", \"1011\", \"1013\" })\r\n{\r\n var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"FNK1003051113.RArrive{ssx}\"), typeof(System.UInt16));\r\n var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"FNK1003051113.RArrive{ssx}_LAST\"), typeof(System.UInt16));\r\n if (RArrive == 1 && RArriveLast == 0)\r\n {\r\n if (ssx == \"1005\")\r\n {\r\n tag.FNK1.D2210 = 1;\r\n tag.SF涓嬫枡浣�RArrive1005_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1005 = 0;\r\n tag.SF涓嬫枡浣�WSafe0305 = 0;\r\n }\r\n else if (ssx == \"1003\")\r\n {\r\n tag.FNK2.D2215 = 1;\r\n tag.SF涓嬫枡浣�RArrive1003_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1003 = 0;\r\n tag.SF涓嬫枡浣�WSafe0305 = 0;\r\n }\r\n else if (ssx == \"1013\")\r\n {\r\n tag.FNK2.D2210 = 1;\r\n tag.SF涓嬫枡浣�RArrive1013_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1013 = 0;\r\n tag.SF涓嬫枡浣�WSafe1113 = 0;\r\n }\r\n else if (ssx == \"1011\")\r\n {\r\n tag.FNK2.D2215 = 1;\r\n tag.SF涓嬫枡浣�RArrive1011_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1011 = 0;\r\n tag.SF涓嬫枡浣�WSafe1113 = 0;\r\n }\r\n }\r\n else if (RArrive == 0 && RArriveLast == 1)\r\n {\r\n RedisHelper.Add($\"FNK1003051113.RArrive{ssx}_LAST\", \"0\", out string msg);\r\n }\r\n}", - "ContentCopy": "//涓嬫枡浣嶆娴嬨� 1003 鍒颁綅鏃�鍐�鏍囪瘑淇″彿 骞�缁欐満姊版墜淇″彿銆� \r\nforeach (var ssx in new string[] { \"1003\", \"1005\", \"1011\", \"1013\" })\r\n{\r\n var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"FNK1003051113.RArrive{ssx}\"), typeof(System.UInt16));\r\n var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($\"FNK1003051113.RArrive{ssx}_LAST\"), typeof(System.UInt16));\r\n if (RArrive == 1 && RArriveLast == 0)\r\n {\r\n if (ssx == \"1005\")\r\n {\r\n tag.FNK1.D2210 = 1;\r\n tag.SF涓嬫枡浣�RArrive1005_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1005 = 0;\r\n tag.SF涓嬫枡浣�WSafe0305 = 0;\r\n }\r\n else if (ssx == \"1003\")\r\n {\r\n tag.FNK2.D2215 = 1;\r\n tag.SF涓嬫枡浣�RArrive1003_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1003 = 0;\r\n tag.SF涓嬫枡浣�WSafe0305 = 0;\r\n }\r\n else if (ssx == \"1013\")\r\n {\r\n tag.FNK2.D2210 = 1;\r\n tag.SF涓嬫枡浣�RArrive1013_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1013 = 0;\r\n tag.SF涓嬫枡浣�WSafe1113 = 0;\r\n }\r\n else if (ssx == \"1011\")\r\n {\r\n tag.FNK2.D2215 = 1;\r\n tag.SF涓嬫枡浣�RArrive1011_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1011 = 0;\r\n tag.SF涓嬫枡浣�WSafe1113 = 0;\r\n }\r\n }\r\n else if (RArrive == 0 && RArriveLast == 1)\r\n {\r\n RedisHelper.Add($\"FNK1003051113.RArrive{ssx}_LAST\", \"0\", out string msg);\r\n }\r\n}", + "Content": "\r\n //涓嬫枡浣嶆娴嬨� 1003 鍒颁綅鏃�鍐�鏍囪瘑淇″彿 骞�缁欐満姊版墜淇″彿銆� \r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread涓嬫枡浣嶆娴媆", new object[] { tag });", + "ContentCopy": "\r\n //涓嬫枡浣嶆娴嬨� 1003 鍒颁綅鏃�鍐�鏍囪瘑淇″彿 骞�缁欐満姊版墜淇″彿銆� \r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread涓嬫枡浣嶆娴媆", new object[] { tag });", "ParentID": "20250614173821058", "Children": [], "Type": "Program", @@ -868,8 +868,8 @@ "ID": "20250616095709155", "Name": "1鍙稦NK鏈烘鎵嬪畬鎴�, "Desc": "", - "Content": "if (tag.FNK1.D2212 == 1 && tag.FNK1.D2212_LAST == 0)\r\n{\r\n tag.FNK1.D2210 = 0;\r\n tag.FNK1.D2212_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1005 = 1;\r\n tag.SF涓嬫枡浣�WSafe0305 = 1;\r\n}\r\nelse if (tag.FNK1.D2212 == 0 && tag.FNK1.D2212_LAST == 1)\r\n{\r\n tag.FNK1.D2212_LAST = 0;\r\n}\r\nif (tag.FNK1.D2217 == 1 && tag.FNK1.D2217_LAST == 0)\r\n{\r\n tag.FNK1.D2215 = 0;\r\n tag.FNK1.D2217_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1003 = 1;\r\n tag.SF涓嬫枡浣�WSafe0305 = 1;\r\n}\r\nelse if (tag.FNK1.D2217 == 0 && tag.FNK1.D2217_LAST == 1)\r\n tag.FNK1.D2217_LAST = 0;\r\n", - "ContentCopy": "if (tag.FNK1.D2212 == 1 && tag.FNK1.D2212_LAST == 0)\r\n{\r\n tag.FNK1.D2210 = 0;\r\n tag.FNK1.D2212_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1005 = 1;\r\n tag.SF涓嬫枡浣�WSafe0305 = 1;\r\n}\r\nelse if (tag.FNK1.D2212 == 0 && tag.FNK1.D2212_LAST == 1)\r\n{\r\n tag.FNK1.D2212_LAST = 0;\r\n}\r\nif (tag.FNK1.D2217 == 1 && tag.FNK1.D2217_LAST == 0)\r\n{\r\n tag.FNK1.D2215 = 0;\r\n tag.FNK1.D2217_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1003 = 1;\r\n tag.SF涓嬫枡浣�WSafe0305 = 1;\r\n}\r\nelse if (tag.FNK1.D2217 == 0 && tag.FNK1.D2217_LAST == 1)\r\n tag.FNK1.D2217_LAST = 0;\r\n", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadFNK1Over\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadFNK1Over\", new object[] { tag });", "ParentID": "20250614173821058", "Children": [], "Type": "Program", @@ -907,8 +907,8 @@ "ID": "20250616095733680", "Name": "2鍙稦NK鏈烘鎵嬪畬鎴�, "Desc": "", - "Content": " if (tag.FNK2.D2212 == 1 && tag.FNK2.D2212_LAST == 0)\r\n {\r\n tag.FNK2.D2210 = 0;\r\n tag.FNK2.D2212_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1013 = 1;\r\n tag.SF涓嬫枡浣�WSafe1113 = 1;\r\n }\r\n else if (tag.FNK2.D2212 == 0 && tag.FNK2.D2212_LAST == 1)\r\n {\r\n tag.FNK2.D2212_LAST = 0;\r\n }\r\n if (tag.FNK2.D2217 == 1 && tag.FNK2.D2217_LAST == 0)\r\n {\r\n tag.FNK2.D2215 = 0;\r\n tag.FNK2.D2217_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1011 = 1;\r\n tag.SF涓嬫枡浣�WSafe1113 = 1;\r\n }\r\n else if (tag.FNK2.D2217 == 0 && tag.FNK2.D2217_LAST == 1)\r\n tag.FNK2.D2217_LAST = 0;", - "ContentCopy": " if (tag.FNK2.D2212 == 1 && tag.FNK2.D2212_LAST == 0)\r\n {\r\n tag.FNK2.D2210 = 0;\r\n tag.FNK2.D2212_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1013 = 1;\r\n tag.SF涓嬫枡浣�WSafe1113 = 1;\r\n }\r\n else if (tag.FNK2.D2212 == 0 && tag.FNK2.D2212_LAST == 1)\r\n {\r\n tag.FNK2.D2212_LAST = 0;\r\n }\r\n if (tag.FNK2.D2217 == 1 && tag.FNK2.D2217_LAST == 0)\r\n {\r\n tag.FNK2.D2215 = 0;\r\n tag.FNK2.D2217_LAST = 1;\r\n\r\n tag.SF涓嬫枡浣�WRelease1011 = 1;\r\n tag.SF涓嬫枡浣�WSafe1113 = 1;\r\n }\r\n else if (tag.FNK2.D2217 == 0 && tag.FNK2.D2217_LAST == 1)\r\n tag.FNK2.D2217_LAST = 0;", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadFNK2Over\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"ThreadFNK2Over\", new object[] { tag });", "ParentID": "20250614173821058", "Children": [], "Type": "Program", @@ -954,8 +954,8 @@ "ID": "20250617085708084", "Name": "Program1", "Desc": "", - "Content": "\r\n Console.WriteLine($\"1019浠诲姟鐘舵�锛歿tag.SA1019.RtaskState}- barcode:{tag.SA1019.R鎵樼洏鐮亇- 绌洪棽{tag.SA1019.R5绌洪棽}\");", - "ContentCopy": "\r\n Console.WriteLine($\"1019浠诲姟鐘舵�锛歿tag.SA1019.RtaskState}- barcode:{tag.SA1019.R鎵樼洏鐮亇- 绌洪棽{tag.SA1019.R5绌洪棽}\");", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread1019Down\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread1019Down\", new object[] { tag });", "ParentID": "20250617081923670", "Children": [], "Type": "Program", @@ -1029,8 +1029,8 @@ "ID": "20250617085712101", "Name": "Program1", "Desc": "", - "Content": "\r\n Console.WriteLine($\"SA1025 浠诲姟鐘舵�锛歿tag.SA1025.RtaskState}- 绌洪棽{tag.SA1025.R5绌洪棽}\");", - "ContentCopy": "\r\n Console.WriteLine($\"SA1025 浠诲姟鐘舵�锛歿tag.SA1025.RtaskState}- 绌洪棽{tag.SA1025.R5绌洪棽}\");", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread1025Up\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread1025Up\", new object[] { tag });", "ParentID": "20250617081926036", "Children": [], "Type": "Program", @@ -1104,8 +1104,8 @@ "ID": "20250617085750712", "Name": "Program1", "Desc": "", - "Content": "\r\n Console.WriteLine($\"SA1022 浠诲姟鐘舵�锛歿tag.SA1022.RtaskState}- 绌洪棽{tag.SA1022.R5绌洪棽}\");", - "ContentCopy": "\r\n Console.WriteLine($\"SA1022 浠诲姟鐘舵�锛歿tag.SA1022.RtaskState}- 绌洪棽{tag.SA1022.R5绌洪棽}\");", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread1022Up\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread1022Up\", new object[] { tag });", "ParentID": "20250617081930010", "Children": [], "Type": "Program", @@ -1179,8 +1179,8 @@ "ID": "20250617085800942", "Name": "Program1", "Desc": "", - "Content": "\r\n Console.WriteLine($\"SA1030 浠诲姟鐘舵�锛歿tag.SA1030.RtaskState}- 绌洪棽{tag.SA1030.R5绌洪棽}-->瀵瑰簲缁堢偣2001>绌洪棽5锛歿tag.SA2001.R5绌洪棽}\");", - "ContentCopy": "\r\n Console.WriteLine($\"SA1030 浠诲姟鐘舵�锛歿tag.SA1030.RtaskState}- 绌洪棽{tag.SA1030.R5绌洪棽}-->瀵瑰簲缁堢偣2001>绌洪棽5锛歿tag.SA2001.R5绌洪棽}\");", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread1030Down\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread1030Down\", new object[] { tag });", "ParentID": "20250617081932131", "Children": [], "Type": "Program", @@ -1254,8 +1254,8 @@ "ID": "20250617085809982", "Name": "Program1", "Desc": "", - "Content": "\r\n Console.WriteLine($\"SA2030 浠诲姟鐘舵�锛歿tag.SA2030.RtaskState}- 绌洪棽{tag.SA2030.R5绌洪棽} - barcode:{tag.SA2030.R鎵樼洏鐮亇\");", - "ContentCopy": "\r\n Console.WriteLine($\"SA2030 浠诲姟鐘舵�锛歿tag.SA2030.RtaskState}- 绌洪棽{tag.SA2030.R5绌洪棽} - barcode:{tag.SA2030.R鎵樼洏鐮亇\");", + "Content": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread2030Down\", new object[] { tag });", + "ContentCopy": "\r\n AutoThread.InvokeMethod(AutoThread.Instance, \"Thread2030Down\", new object[] { tag });", "ParentID": "20250617081938161", "Children": [], "Type": "Program", @@ -1410,6 +1410,6 @@ } ], "CreationTime": "2025-02-26 15:31:20", - "LastWriteTime": "2025-06-18 23:06:58", + "LastWriteTime": "2025-06-23 08:38:47", "HasSaved": true } \ No newline at end of file -- Gitblit v1.9.1