1
czw
2025-06-19 b447a2b0dafdaf7e460ca4a73727c81fe820a1ff
1
1个文件已添加
6个文件已修改
1017 ■■■■■ 已修改文件
2025年6月12日/AuxAllWCS/Build/Project/AuxAllWCS.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
2025年6月12日/AuxAllWCS/Build/Project/代码/VS自定义类/AutoThread.cs 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
2025年6月12日/AuxAllWCS/Build/Project/代码/ViewModel.cs 721 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
2025年6月12日/AuxAllWCS/Build/Project/代码/界面事件.cs 186 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
2025年6月12日/AuxAllWCS/Build/Project/代码/自定义类.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
2025年6月12日/AuxAllWCS/Dlls/GZ.Device.PLC.dll 补丁 | 查看 | 原始文档 | blame | 历史
2025年6月12日/AuxAllWCS/Dlls/GZ.Modular.Redis.dll 补丁 | 查看 | 原始文档 | blame | 历史
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/AuxAllWCS.csproj
@@ -198,6 +198,7 @@
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Compile Include="代码\VS自定义类\AutoThread.cs" />
    <Compile Include="界面\View1.xaml.cs">
      <DependentUpon>View1.xaml</DependentUpon>
      <SubType>Code</SubType>
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/VS×Ô¶¨ÒåÀà/AutoThread.cs
New file
@@ -0,0 +1,102 @@
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;
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());
            }
        }
        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;
            }
        }
    }
}
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/ViewModel.cs
@@ -31,27 +31,27 @@
using GZ.Modular.Redis;
namespace GZ.Projects.AuxAllWCS
{
    public partial class ViewModel : System.ComponentModel.INotifyPropertyChanged
    {
        #region ç§æœ‰å˜é‡
        //集成互联
        private Conn Conn = new Conn();
        //设备通信
        private Device Device = new Device();
        //变量数据库
        private Tag tag = new Tag();
        public Tag Tag
        {
            get { return tag; }
            set { tag = value; RaisePropertyChanged(nameof(Tag)); }
        }
        //简化PLC
        public EasyPLC EasyPLC = new EasyPLC();
        #endregion
        #region æž„造函数
        private static ViewModel _ViewModel = null;
        private static List<object> _Windows = new List<object>();
    public partial class ViewModel : System.ComponentModel.INotifyPropertyChanged
    {
        #region ç§æœ‰å˜é‡
        //集成互联
        private Conn Conn = new Conn();
        //设备通信
        private Device Device = new Device();
        //变量数据库
        private Tag tag = new Tag();
        public Tag Tag
        {
            get { return tag; }
            set { tag = value; RaisePropertyChanged(nameof(Tag)); }
        }
        //简化PLC
        public EasyPLC EasyPLC = new EasyPLC();
        #endregion
        #region æž„造函数
        private static ViewModel _ViewModel = null;
        private static List<object> _Windows = new List<object>();
        public static ViewModel CreateInstance(object obj, Type type)
        {
            if (_ViewModel == null)
@@ -60,47 +60,49 @@
            }
            if (!_Windows.Contains(obj))
            {
                _Windows.Add(obj);
                _Windows.Add(obj);
            }
            return _ViewModel;
        }
        public ViewModel()
        {
        }
        #endregion
        #region è‡ªå®šä¹‰æŒ‡ä»¤
public void Method1(System.Int32 param1)
{
        #region    [自定义指令][20250323111354905][Method1]
        #endregion [自定义指令][20250323111354905][Method1]
}
public void SettingInit()
{
        #region    [自定义指令][20250323144605974][SettingInit]
try
{
    var jsonFile = System.AppDomain.CurrentDomain.BaseDirectory + "/Static/config.json";
    using (System.IO.StreamReader file = System.IO.File.OpenText(jsonFile))
    {
        using (JsonTextReader reader = new JsonTextReader(file))
        public ViewModel()
        {
            JObject o = (JObject)JToken.ReadFrom(reader);
            foreach (Newtonsoft.Json.Linq.JProperty keyValue in o.Properties())
        }
        #endregion
        #region è‡ªå®šä¹‰æŒ‡ä»¤
        public void Method1(System.Int32 param1)
        {
            #region    [自定义指令][20250323111354905][Method1]
            #endregion [自定义指令][20250323111354905][Method1]
        }
        public void SettingInit()
        {
            #region    [自定义指令][20250323144605974][SettingInit]
            try
            {
                Console.WriteLine(keyValue.Name);
                if (keyValue.Name == "HostToAgvServerUrl")
                var jsonFile = System.AppDomain.CurrentDomain.BaseDirectory + "/Static/config.json";
                using (System.IO.StreamReader file = System.IO.File.OpenText(jsonFile))
                {
                    Settings.HostToAgvServerUrl = keyValue.Value.ToString();
                }
                if (keyValue.Name == "deviceInfo") {
                      Settings.deviceInfos = JsonConvert.DeserializeObject<List<deviceInfo>>(keyValue.Value.ToString());
                }
                if (keyValue.Name == "HKbaseUrl") {
                      Settings.HKbaseUrl = keyValue.Value.ToString();
                }
                    using (JsonTextReader reader = new JsonTextReader(file))
                    {
                        JObject o = (JObject)JToken.ReadFrom(reader);
                        foreach (Newtonsoft.Json.Linq.JProperty keyValue in o.Properties())
                        {
                            Console.WriteLine(keyValue.Name);
                            if (keyValue.Name == "HostToAgvServerUrl")
                            {
                                Settings.HostToAgvServerUrl = keyValue.Value.ToString();
                            }
                            if (keyValue.Name == "deviceInfo")
                            {
                                Settings.deviceInfos = JsonConvert.DeserializeObject<List<deviceInfo>>(keyValue.Value.ToString());
                            }
                            if (keyValue.Name == "HKbaseUrl")
                            {
                                Settings.HKbaseUrl = keyValue.Value.ToString();
                            }
                            if (keyValue.Name == "MESbaseUrl")
                            {
                                Settings.MESbaseUrl = keyValue.Value.ToString();
@@ -109,22 +111,22 @@
                            {
                                Settings.WMSbaseUrl = keyValue.Value.ToString();
                            }
                        }
                    }
                }
                //if(!Settings.FirstG)
                //LogHelper.Info("加载配置文件信息 å®Œæˆ");
            }
            catch (Exception ex)
            {
                LogHelper.Error("加载配置文件失败!" + ex.Message, ex);
            }
            #endregion [自定义指令][20250323144605974][SettingInit]
        }
    }
    //if(!Settings.FirstG)
        //LogHelper.Info("加载配置文件信息 å®Œæˆ");
}
catch (Exception ex)
{
    LogHelper.Error("加载配置文件失败!" + ex.Message, ex);
}
        #endregion [自定义指令][20250323144605974][SettingInit]
}
public void OperateHKTaskStatus(System.Object param1)
{
        #region    [自定义指令][20250324165239206][OperateHKTaskStatus]
HaiKangOrderInfo model = (HaiKangOrderInfo)param1;
        public void OperateHKTaskStatus(System.Object param1)
        {
            #region    [自定义指令][20250324165239206][OperateHKTaskStatus]
            HaiKangOrderInfo model = (HaiKangOrderInfo)param1;
            if (string.IsNullOrEmpty(model.taskCode))
                return;
            // æŸ¥è¯¢ä»»åŠ¡ï¼šæ ¹æ®ä»»åŠ¡å·
@@ -174,16 +176,17 @@
                                {
                                    if (device.deviceName.Contains("维希尔抓臂"))
                                    {  //卸货进行清空,触发扫码
                                       var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;
                                       string V = inde ? "R05" : "R06";
                                       Conn.默认Redis.SetValue(device.deviceName + "." + V, "true", device.deviceName + "Queue");
                                       TcpServer.TrayIps.Remove(device.deviceNo[inde ? 0 : 1]);
                                        var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;
                                        string V = inde ? "R05" : "R06";
                                        Conn.默认Redis.SetValue(device.deviceName + "." + V, "true", device.deviceName + "Queue");
                                        TcpServer.TrayIps.Remove(device.deviceNo[inde ? 0 : 1]);
                                    }
                                }
                                else if(device.deviceType == 2){
                                    var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;
                                     string V = inde? "D1224" : "D1225";
                                     Conn.默认Redis.SetValue(device.deviceName + "." + V, "0", device.deviceName + "Queue");
                                else if (device.deviceType == 2)
                                {
                                    var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;
                                    string V = inde ? "D1224" : "D1225";
                                    Conn.默认Redis.SetValue(device.deviceName + "." + V, "0", device.deviceName + "Queue");
                                }
                            }
                            //LocationHelper.UnLockLoc(wcsTask.S_START_LOC);
@@ -216,7 +219,7 @@
                            endLoc.N_CURRENT_NUM = 1;
                            endLoc.T_MODIFY = DateTime.Now;
                            MainMissionService.Update(wcsTask);
                            if(Settings.deviceInfos.Find(x=>x.deviceType==2 && (/*x.location.Contains(wcsTask.S_END_LOC)||*/x.deviceNo.Contains(wcsTask.S_END_LOC)))!=null)
                            if (Settings.deviceInfos.Find(x => x.deviceType == 2 && (/*x.location.Contains(wcsTask.S_END_LOC)||*/x.deviceNo.Contains(wcsTask.S_END_LOC))) != null)
                                locrep.Update(endLoc);
                            //locContainerRepository2.Insert(llls);
@@ -244,7 +247,7 @@
                                    if (device2.deviceName.Contains("Js捷顺"))
                                    {
                                        var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
                                        string V = inde? "D1224" : "D1225";
                                        string V = inde ? "D1224" : "D1225";
                                        Conn.默认Redis.SetValue(device2.deviceName + "." + V, "1", device2.deviceName + "Queue");
                                        var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new
@@ -276,13 +279,14 @@
                            var tare = taskActRepository.FindList(x => x.S_TASK_NO == wcsTask.S_TASK_NO);
                            if (tare.Any())
                            {
                                if(tare.Find(x=>x.S_ACTION_CODE=="outbin")==null)
                                if (tare.Find(x => x.S_ACTION_CODE == "outbin") == null)
                                {
                                    startloc.S_LOCK_STATE = "无";
                                    endLoc.S_LOCK_STATE = "无";
                                    locrep.Update(startloc);
                                    locrep.Update(endLoc);
                                }else if (tare.Find(x => x.S_ACTION_CODE == "end") == null)
                                }
                                else if (tare.Find(x => x.S_ACTION_CODE == "end") == null)
                                {
                                    endLoc.S_LOCK_STATE = "无";
                                    locrep.Update(endLoc);
@@ -303,16 +307,16 @@
                    if (!string.IsNullOrEmpty(wcsTask.S_SRC_NO))
                    {
                        var mestask = MainMissionService.FindEntity(x => x.S_TASK_NO == wcsTask.S_SRC_NO);
                        if (mestask!=null&&bobe)
                        if (mestask != null && bobe)
                        {
                            if ( model.method != "end")
                            if (model.method != "end")
                            {
                                if (mestask.S_START_LOC == wcsTask.S_START_LOC&&mestask.S_B_STATE == "MES")
                                    Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new
                                    {
                                        reqCode = wcsTask.S_SRC_NO,
                                        model.method
                                    }));
                                if (mestask.S_START_LOC == wcsTask.S_START_LOC && mestask.S_B_STATE == "MES")
                                    Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new
                                    {
                                        reqCode = wcsTask.S_SRC_NO,
                                        model.method
                                    }));
                            }
                            else
                            {
@@ -322,7 +326,7 @@
                                    mestask.N_PRIORITY = -88;
                                    MainMissionService.Update(mestask);
                                }
                                else if(mestask.S_B_STATE == "MES")
                                else if (mestask.S_B_STATE == "MES")
                                {
                                    var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new
                                    {
@@ -332,21 +336,22 @@
                                }
                            }
                        }else if(mestask!=null && model.method== "cancel")
                        }
                        else if (mestask != null && model.method == "cancel")
                        {
                             if(mestask.S_B_STATE == "MES")
                               Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new
                                {
                                    reqCode = wcsTask.S_SRC_NO,
                                    model.method
                                }));
                            if (mestask.S_B_STATE == "MES")
                                Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new
                                {
                                    reqCode = wcsTask.S_SRC_NO,
                                    model.method
                                }));
                            LogHelper.Info($"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} ä¸€é˜¶æ®µå–消,重置点,线程处理。");
                            mestask.N_PRIORITY = -1;
                            mestask.S_B_STATE = "MES_取消";
                            MainMissionService.Update(mestask);
                        }
                    }
                    TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data,wcsTask.S_START_LOC,wcsTask.S_END_LOC);
                    TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data, wcsTask.S_START_LOC, wcsTask.S_END_LOC);
                    //调用第三方接口(如果有)TaskProcess.ReportStatus
                }
                else
@@ -361,95 +366,97 @@
            {
                LogHelper.Info($"当前任务号任务不存在{model.taskCode}", "agv杭叉交互日志");
            }
        #endregion [自定义指令][20250324165239206][OperateHKTaskStatus]
}
public GZ.DB.Entity.OIDATABASE.TaskEntity Begin(GZ.DB.Entity.OIDATABASE.TaskEntity task)
{
        #region    [自定义指令][20250324170811305][Begin]
 if (task.S_B_STATE.Trim() == "已推送") {
     task.S_B_STATE = "执行中";
     task.T_START_TIME = DateTime.Now;
 }
 return task;
        #endregion [自定义指令][20250324170811305][Begin]
}
public GZ.DB.Entity.OIDATABASE.TaskEntity End(GZ.DB.Entity.OIDATABASE.TaskEntity task)
{
        #region    [自定义指令][20250324170922920][End]
 if (task != null) {
     task.S_B_STATE = "完成";
     task.T_END_TIME = DateTime.Now;
 }
 return task;
        #endregion [自定义指令][20250324170922920][End]
}
public GZ.DB.Entity.OIDATABASE.TaskEntity UpdateStatus(GZ.DB.Entity.OIDATABASE.TaskEntity task, System.String status)
{
        #region    [自定义指令][20250324171118766][UpdateStatus]
task.S_B_STATE = status;
return task;
        #endregion [自定义指令][20250324171118766][UpdateStatus]
}
public void RunafterMac(System.Object dev, System.Boolean blen)
{
        #region    [自定义指令][20250325085905222][RunafterMac]
var device = (deviceInfo)dev;
if (device.areaPriy.Any() && device.deviceNo.Any())
{
    LocRepository locRepository = new LocRepository();
    LocContainerRepository locContainerRepository = new LocContainerRepository();
    ContainerRepository containerRepository = new ContainerRepository();
    LocEntity startLoc = null;
    string Sign = device.deviceType == 1 ? "F" : "E";
    foreach (var sloc in device.deviceNo)
    {
        ContainerEntity c = null;
        var Startloc = locRepository.FindEntity(x => x.S_LOC_CODE == sloc);
        if (Startloc != null && Startloc.N_CURRENT_NUM == 1 && Startloc.S_LOCK_STATE == "无")
        {
            var cntr = locContainerRepository.FindEntity(x => x.S_LOC_CODE == sloc);
            if (cntr != null)
            {
                c = containerRepository.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);
                if (c != null && c.S_TYPE == Sign)
                {
                    startLoc = Startloc;
                }
            }
            #endregion [自定义指令][20250324165239206][OperateHKTaskStatus]
        }
        if (startLoc != null)
        public GZ.DB.Entity.OIDATABASE.TaskEntity Begin(GZ.DB.Entity.OIDATABASE.TaskEntity task)
        {
            foreach (var dn in device.areaPriy)
            #region    [自定义指令][20250324170811305][Begin]
            if (task.S_B_STATE.Trim() == "已推送")
            {
                LocEntity endLoc = null;
                var di = Settings.deviceInfos.Find(x => x.deviceName == dn);
                if (di != null)
                task.S_B_STATE = "执行中";
                task.T_START_TIME = DateTime.Now;
            }
            return task;
            #endregion [自定义指令][20250324170811305][Begin]
        }
        public GZ.DB.Entity.OIDATABASE.TaskEntity End(GZ.DB.Entity.OIDATABASE.TaskEntity task)
        {
            #region    [自定义指令][20250324170922920][End]
            if (task != null)
            {
                task.S_B_STATE = "完成";
                task.T_END_TIME = DateTime.Now;
            }
            return task;
            #endregion [自定义指令][20250324170922920][End]
        }
        public GZ.DB.Entity.OIDATABASE.TaskEntity UpdateStatus(GZ.DB.Entity.OIDATABASE.TaskEntity task, System.String status)
        {
            #region    [自定义指令][20250324171118766][UpdateStatus]
            task.S_B_STATE = status;
            return task;
            #endregion [自定义指令][20250324171118766][UpdateStatus]
        }
        public void RunafterMac(System.Object dev, System.Boolean blen)
        {
            #region    [自定义指令][20250325085905222][RunafterMac]
            var device = (deviceInfo)dev;
            if (device.areaPriy.Any() && device.deviceNo.Any())
            {
                LocRepository locRepository = new LocRepository();
                LocContainerRepository locContainerRepository = new LocContainerRepository();
                ContainerRepository containerRepository = new ContainerRepository();
                LocEntity startLoc = null;
                string Sign = device.deviceType == 1 ? "F" : "E";
                foreach (var sloc in device.deviceNo)
                {
                    foreach (var ssloc in di.deviceNo)
                    ContainerEntity c = null;
                    var Startloc = locRepository.FindEntity(x => x.S_LOC_CODE == sloc);
                    if (Startloc != null && Startloc.N_CURRENT_NUM == 1 && Startloc.S_LOCK_STATE == "无")
                    {
                        var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc);
                        if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE == "无")
                        var cntr = locContainerRepository.FindEntity(x => x.S_LOC_CODE == sloc);
                        if (cntr != null)
                        {
                            endLoc = endloc;
                            break;
                            c = containerRepository.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);
                            if (c != null && c.S_TYPE == Sign)
                            {
                                startLoc = Startloc;
                            }
                        }
                    }
                    if (endLoc != null)
                    if (startLoc != null)
                    {
                        TaskProcess.CreateTask("", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, $"托盘流转-{Sign}", 5, new List<string> { c.S_CODE });
                        break;
                        foreach (var dn in device.areaPriy)
                        {
                            LocEntity endLoc = null;
                            var di = Settings.deviceInfos.Find(x => x.deviceName == dn);
                            if (di != null)
                            {
                                foreach (var ssloc in di.deviceNo)
                                {
                                    var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc);
                                    if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE == "无")
                                    {
                                        endLoc = endloc;
                                        break;
                                    }
                                }
                                if (endLoc != null)
                                {
                                    TaskProcess.CreateTask("", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, $"托盘流转-{Sign}", 5, new List<string> { c.S_CODE });
                                    break;
                                }
                            }
                        }
                    }
                }
            }
            #endregion [自定义指令][20250325085905222][RunafterMac]
        }
    }
}
        #endregion [自定义指令][20250325085905222][RunafterMac]
}
public System.Boolean RunTask(GZ.DB.Entity.OIDATABASE.TaskEntity task)
{
        #region    [自定义指令][20250325092323531][RunTask]
        public System.Boolean RunTask(GZ.DB.Entity.OIDATABASE.TaskEntity task)
        {
            #region    [自定义指令][20250325092323531][RunTask]
            ILocRepository locrep = new LocRepository();
            var startloc = locrep.FindEntity(x => x.S_LOC_CODE == task.S_START_LOC);
@@ -479,8 +486,8 @@
            //调第三方接口
            var model = new HaiKangOrderInfo
            {
                reqCode=task.S_TASK_NO.Trim(),
                reqTime=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                reqCode = task.S_TASK_NO.Trim(),
                reqTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                taskCode = task.S_TASK_NO.Trim(),
                ctnrCode = task.S_CNTRS,
                taskTyp = task.S_INDEX,
@@ -488,199 +495,207 @@
            };
            return CreateOrder(model);
        #endregion [自定义指令][20250325092323531][RunTask]
}
public System.Boolean CreateOrder(System.Object m)
{
        #region    [自定义指令][20250325095053549][CreateOrder]
var model = (HaiKangOrderInfo)m;
            #endregion [自定义指令][20250325092323531][RunTask]
        }
        public System.Boolean CreateOrder(System.Object m)
        {
            #region    [自定义指令][20250325095053549][CreateOrder]
            var model = (HaiKangOrderInfo)m;
            var msg = "";
            var result = false;
            var request = JsonConvert.SerializeObject(model);
            var response = Settings.apiHelper.Post(Settings.HKbaseUrl + "rcms/services/rest/hikRpcService/genAgvSchedulingTask", request);
            msg = $"[haikang-CreateOrder] request={request} response={response}";
            LogHelper.Info(msg);
            if (response != "") {
                try {
            if (response != "")
            {
                try
                {
                    var dataResult = JsonConvert.DeserializeObject<HKResult>(response);
                    if (dataResult.code == "0") {
                    if (dataResult.code == "0")
                    {
                        result = true;
                    }
                }
                catch (Exception ex) {
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    LogHelper.Info(msg,"海康");
                    LogHelper.Info(msg, "海康");
                }
            }
            else {
            else
            {
                msg = "[haikang-CreateOrder]创建订单失败";
                Console.WriteLine(msg);
            }
            LogHelper.Info(msg,"海康");
            LogHelper.Info(msg, "海康");
            return result;
        #endregion [自定义指令][20250325095053549][CreateOrder]
}
public void TaskisOk(GZ.DB.Entity.OIDATABASE.TaskEntity task)
{
        #region    [自定义指令][20250325100336909][TaskisOk]
// è½¦è¾†å–放申请。
 if ("取货申请" != "")
 {
     var device1 = Settings.deviceInfos.Find(x => x.location.Contains(task.S_START_LOC));
     if (device1 != null)
     {
         var left = device1.location.ToList().FindIndex(x => x == task.S_START_LOC) == 0;
         if (device1.deviceType == 1)
         {
             if (device1.deviceName.Contains("维希尔抓臂"))
             {
                 if ("IN_BEFORE" == "IN_BEFORE"|| "out_BEFORE" == "out_BEFORE")
                 {
                     string V = left ? "R01" : "R03";
                     Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                 }
                 if ("IN_after" == "IN_after"|| "out_after" == "out_after")
                 {
                     string V = left ? "R02" : "R04";
                     Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                 }
             }
             else if(device1.deviceName.Contains("Js捷顺"))
             {
                 if ("IN_BEFORE" == "IN_BEFORE")
                 {
                     string V = left ? "M0" : "M1";
                     Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                 }
                 if ("out_BEFORE" == "out_BEFORE")
                 {
                     //string V = left ? "R01" : "R03";
                     //Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                 }
                 if ("IN_after" == "IN_after")
                 {
                     string V = left ? "M2" : "M3";
                     Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                 }
                 if ("out_after" == "out_after")
                 {
                     string V = left ? "M6" : "M7";
                     Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                 }
             }
         }
     }
 }
 if ("放货申请" != "")
 {
     var device1 = Settings.deviceInfos.Find(x => x.location.Contains(task.S_END_LOC));
     if (device1 != null)
     {
         var left = device1.location.ToList().FindIndex(x => x == task.S_END_LOC) == 0;
         if (device1.deviceType == 1)
         {
             if (device1.deviceName.Contains("维希尔抓臂"))
             {
                 if ("IN_BEFORE" == "IN_BEFORE" || "out_BEFORE" == "out_BEFORE")
                 {
                     string V = left ? "R01" : "R03";
                     Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                 }
                 if ("IN_after" == "IN_after" || "out_after" == "out_after")
                 {
                     string V = left ? "R02" : "R04";
                     Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                 }
             }
             else if (device1.deviceName.Contains("Js捷顺"))
             {
                 if ("IN_BEFORE" == "IN_BEFORE")
                 {
                     string V = left ? "M0" : "M1";
                     Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                 }
                 if ("out_BEFORE" == "out_BEFORE")
                 {
                     string V = left ? "M4" : "M5";
                     Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                 }
                 if ("IN_after" == "IN_after")
                 {
                     string V = left ? "M2" : "M3";
                     Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                 }
                 if ("out_after" == "out_after")
                 {
                     string V = left ? "M6" : "M7";
                     Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                 }
             }
         }
     }
 }
        #endregion [自定义指令][20250325100336909][TaskisOk]
}
public System.Boolean continueTask(System.Object m)
{
        #region    [自定义指令][20250325100607380][continueTask]
var model = (HaiKangOrderInfo)m;
bool result = false;
string msg = "";
var request = JsonConvert.SerializeObject(model);
var response = Settings.apiHelper.Post(Settings.HKbaseUrl + "rcms/services/rest/hikRpcService/continueTask", request);
msg = $"[haikang-CancelOrder] request={request};response={response}";
Console.WriteLine(msg);
if (response != "")
{
    var dataResult = JsonConvert.DeserializeObject<HKResult>(response);
    if (dataResult.code == "0")
    {
        result = true;
            #endregion [自定义指令][20250325095053549][CreateOrder]
        }
        public void TaskisOk(GZ.DB.Entity.OIDATABASE.TaskEntity task)
        {
            #region    [自定义指令][20250325100336909][TaskisOk]
            // è½¦è¾†å–放申请。
            if ("取货申请" != "")
            {
                var device1 = Settings.deviceInfos.Find(x => x.location.Contains(task.S_START_LOC));
                if (device1 != null)
                {
                    var left = device1.location.ToList().FindIndex(x => x == task.S_START_LOC) == 0;
                    if (device1.deviceType == 1)
                    {
                        if (device1.deviceName.Contains("维希尔抓臂"))
                        {
                            if ("IN_BEFORE" == "IN_BEFORE" || "out_BEFORE" == "out_BEFORE")
                            {
                                string V = left ? "R01" : "R03";
                                Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                            }
                            if ("IN_after" == "IN_after" || "out_after" == "out_after")
                            {
                                string V = left ? "R02" : "R04";
                                Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                            }
                        }
                        else if (device1.deviceName.Contains("Js捷顺"))
                        {
                            if ("IN_BEFORE" == "IN_BEFORE")
                            {
                                string V = left ? "M0" : "M1";
                                Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                            }
                            if ("out_BEFORE" == "out_BEFORE")
                            {
                                //string V = left ? "R01" : "R03";
                                //Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                            }
                            if ("IN_after" == "IN_after")
                            {
                                string V = left ? "M2" : "M3";
                                Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                            }
                            if ("out_after" == "out_after")
                            {
                                string V = left ? "M6" : "M7";
                                Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                            }
                        }
                    }
                }
            }
            if ("放货申请" != "")
            {
                var device1 = Settings.deviceInfos.Find(x => x.location.Contains(task.S_END_LOC));
                if (device1 != null)
                {
                    var left = device1.location.ToList().FindIndex(x => x == task.S_END_LOC) == 0;
                    if (device1.deviceType == 1)
                    {
                        if (device1.deviceName.Contains("维希尔抓臂"))
                        {
                            if ("IN_BEFORE" == "IN_BEFORE" || "out_BEFORE" == "out_BEFORE")
                            {
                                string V = left ? "R01" : "R03";
                                Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                            }
                            if ("IN_after" == "IN_after" || "out_after" == "out_after")
                            {
                                string V = left ? "R02" : "R04";
                                Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                            }
                        }
                        else if (device1.deviceName.Contains("Js捷顺"))
                        {
                            if ("IN_BEFORE" == "IN_BEFORE")
                            {
                                string V = left ? "M0" : "M1";
                                Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                            }
                            if ("out_BEFORE" == "out_BEFORE")
                            {
                                string V = left ? "M4" : "M5";
                                Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                            }
                            if ("IN_after" == "IN_after")
                            {
                                string V = left ? "M2" : "M3";
                                Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                            }
                            if ("out_after" == "out_after")
                            {
                                string V = left ? "M6" : "M7";
                                Conn.默认Redis.SetValue(device1.deviceName + "." + V, "true", device1.deviceName + "Queue");
                            }
                        }
                    }
                }
            }
            #endregion [自定义指令][20250325100336909][TaskisOk]
        }
        public System.Boolean continueTask(System.Object m)
        {
            #region    [自定义指令][20250325100607380][continueTask]
            var model = (HaiKangOrderInfo)m;
            bool result = false;
            string msg = "";
            var request = JsonConvert.SerializeObject(model);
            var response = Settings.apiHelper.Post(Settings.HKbaseUrl + "rcms/services/rest/hikRpcService/continueTask", request);
            msg = $"[haikang-CancelOrder] request={request};response={response}";
            Console.WriteLine(msg);
            if (response != "")
            {
                var dataResult = JsonConvert.DeserializeObject<HKResult>(response);
                if (dataResult.code == "0")
                {
                    result = true;
                }
            }
            else
            {
                msg = "[haikang-CancelOrder]获取任务状态失败";
                Console.WriteLine(msg);
            }
            LogHelper.Info(msg, "海康");
            return result;
            #endregion [自定义指令][20250325100607380][continueTask]
        }
        public System.Boolean CancelOrder(System.Object m)
        {
            #region    [自定义指令][20250325100705351][CancelOrder]
            var model = (HaiKangOrderInfo)m;
            bool result = false;
            string msg = "";
            var request = JsonConvert.SerializeObject(model);
            var response = Settings.apiHelper.Post(Settings.HKbaseUrl + "rcms/services/rest/hikRpcService/continueTask", request);
            msg = $"[haikang-CancelOrder] request={request};response={response}";
            Console.WriteLine(msg);
            if (response != "")
            {
                var dataResult = JsonConvert.DeserializeObject<HKResult>(response);
                if (dataResult.code == "0")
                {
                    result = true;
                }
            }
            else
            {
                msg = "[haikang-CancelOrder]取消订单失败";
                Console.WriteLine(msg);
            }
            LogHelper.Info(msg, "海康");
            return result;
            #endregion [自定义指令][20250325100705351][CancelOrder]
        }
        public System.String GetSerialNumber(System.String snType, System.String prefix)
        {
            #region    [自定义指令][20250325131530407][GetSerialNumber]
            int result = 0;
            return "";
            #endregion [自定义指令][20250325131530407][GetSerialNumber]
        }
        #endregion
    }
}
else
{
    msg = "[haikang-CancelOrder]获取任务状态失败";
    Console.WriteLine(msg);
}
LogHelper.Info(msg, "海康");
return result;
        #endregion [自定义指令][20250325100607380][continueTask]
}
public System.Boolean CancelOrder(System.Object m)
{
        #region    [自定义指令][20250325100705351][CancelOrder]
var model = (HaiKangOrderInfo)m;
bool result = false;
string msg = "";
var request = JsonConvert.SerializeObject(model);
var response = Settings.apiHelper.Post(Settings.HKbaseUrl + "rcms/services/rest/hikRpcService/continueTask", request);
msg = $"[haikang-CancelOrder] request={request};response={response}";
Console.WriteLine(msg);
if (response != "") {
    var dataResult = JsonConvert.DeserializeObject<HKResult>(response);
    if (dataResult.code == "0") {
        result = true;
    }
}
else {
    msg = "[haikang-CancelOrder]取消订单失败";
    Console.WriteLine(msg);
}
LogHelper.Info(msg, "海康");
return result;
        #endregion [自定义指令][20250325100705351][CancelOrder]
}
public System.String GetSerialNumber(System.String snType, System.String prefix)
{
        #region    [自定义指令][20250325131530407][GetSerialNumber]
int result = 0;
return "";
        #endregion [自定义指令][20250325131530407][GetSerialNumber]
}
        #endregion
    }
}
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/½çÃæÊ¼þ.cs
@@ -29,6 +29,7 @@
using GZ.DB.IRepository.OIDATABASE;
using GZ.DB.Entity.OIDATABASE;
using GZ.Modular.Redis;
using System.Security.Cryptography;
namespace GZ.Projects.AuxAllWCS
{
    /// <summary>
@@ -78,15 +79,26 @@
                    try
                    {
                        #region    [脚本][20250323111613779][业务逻辑.初始化配置]
                        if (Tag.Global.SettingsOver == 0)
                        {
                            SettingInit();
                            Tag.Global.SettingsOver = 1;
                        }
                        else if (Settings.deviceInfos.Count == 0)
                        {
                            Tag.Global.SettingsOver = 0;
                        }
                        //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;
                        //}
                        #endregion [脚本][20250323111613779][业务逻辑.初始化配置]
                    }
@@ -691,6 +703,32 @@
                }
                ExitJudgeStack.TryPop(out int exitJudgeVal);
            });
            System.Threading.Tasks.Task.Factory.StartNew(() =>
            {
                System.Threading.Thread.CurrentThread.IsBackground = true;
                ExitJudgeStack.Push(0);
                //一直执行,直到满足结束条件
                while (true)
                {
                    if (IsExitApp) { break; }
                    try
                    {
                        #region    [脚本][20250610002647095][业务逻辑.第三标段.维系尔2号.维希尔抓臂2R]
                        LogHelper.Info($"测试线程运行状态日志》》》》》");
                        #endregion [脚本][20250610002647095][业务逻辑.第三标段.维系尔2号.维希尔抓臂2R]
                    }
                    catch (Exception ex)
                    {
                        Conn.默认日志.Error(ex.ToString());
                    }
                    finally
                    {
                        System.Threading.Thread.Sleep(3000);
                    }
                }
                ExitJudgeStack.TryPop(out int exitJudgeVal);
            });
            /// <summary>
            /// ç¨‹åºç‰‡æ®µ:任务下发
            /// æè¿°:
@@ -702,43 +740,58 @@
                //一直执行,直到满足结束条件
                while (true)
                {
                    if (IsExitApp) { break; }
                    //if (IsExitApp) { break; }
                    LogHelper.Info("任务下发  while è¿›å…¥");
                    try
                    {
                        LogHelper.Info("任务下发  try 1 è¿›å…¥");
                        #region    [脚本][20250325085542733][业务逻辑.任务下发]
                        ITaskRepository taskservice = new TaskRepository();
                        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 = 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())
                        //{
                        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 = 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
                        {
                            LogHelper.Info("任务下发  Rgv ä»»åŠ¡ è¿›å…¥");
                            #region Rgv
                            LogHelper.Info($"查看RGV ç”µé‡ï¼šã€{tag.RGV.R当前电量}】 å……电状态:【{tag.RGV.R充电状态}】 æ•…障代码:【{tag.RGV.RgvrunError}】");
@@ -862,7 +915,7 @@
                            }
                            ///1 æœ‰è´§  å°±2 å–。  1 æ²¡è´§ å°±2 å¸è´§ï¼Œ éƒ½æœ‰è´§  å°±1卸货。 éƒ½æ²¡è´§ å°±1卸
                            tklist = taskservice.FindList(x => x.S_B_STATE == "未执行" && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList();
                            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 æœ‰ä»»åŠ¡ã€‚ 
@@ -873,8 +926,14 @@
                                    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);
                                    tag.RGV.taskend = 125;
                                    LogHelper.Info($"{task1.S_TASK_NO}> end å†™ 125");
                                    Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                }
                                else //1有任务  2 æ²¡ä»»åŠ¡ã€‚
                                {
@@ -899,8 +958,10 @@
                                            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);
                                            tag.RGV.taskend = 125;
                                            LogHelper.Info($"{t2.S_TASK_NO}> end å†™ 125");
                                            Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                        }
                                    }
                                    else if (RightSide.Contains(task1.S_START_LOC))
@@ -918,8 +979,10 @@
                                            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);
                                            tag.RGV.taskend = 125;
                                            LogHelper.Info($"{t2.S_TASK_NO}> end å†™ 125");
                                            Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                        }
                                    }
                                    //else //1 ç›´æŽ¥å¸è´§ã€‚ 
@@ -931,8 +994,10 @@
                                        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);
                                        tag.RGV.taskend = 125;
                                        LogHelper.Info($"{task1.S_TASK_NO}> taskend å†™ 0");
                                        Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                    }
                                }
                            }
@@ -947,8 +1012,11 @@
                                    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;
                                    //tag.RGV.taskend = 125;
                                    LogHelper.Info($"{task2.S_TASK_NO}> taskend å†™125");
                                    Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                }
                                else //1mei ä»»åŠ¡  2 æ²¡ä»»åŠ¡ã€‚
                                {
@@ -970,22 +1038,25 @@
                                        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}> taskend 125");
                                        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 å†™0");
                                        RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
                                        tag.RGV.taskend = 125;
                                        LogHelper.Info($"{e1017first.S_TASK_NO}> taskend å†™125");
                                        //tag.RGV.taskend=125
                                        Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                    }
                                }
                            }
                            LogHelper.Info($"rgv å¤„理完成。taskend 125");
                            #endregion
                        }
                        catch (Exception ex)
                        {
                            LogHelper.Error(ex.Message, ex);
                            //throw ex;
                            LogHelper.Info(ex.Message + ex.StackTrace);
                        }
                        #endregion [脚本][20250325085542733][业务逻辑.任务下发]
                    }
@@ -1260,6 +1331,17 @@
                            }
                            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");
                            }
                        }
                        #endregion [脚本][20250616094224396][业务逻辑.流程2热处理炉进出.1020空框下线]
                    }
                    catch (Exception ex)
@@ -1462,7 +1544,7 @@
                                }
                                else if (ssx == "1003")
                                {
                                    tag.FNK2.D2210 = 1;
                                    tag.FNK1.D2210 = 1;
                                    //tag.SF下料位.RArrive1003_LAST = 1;
                                    RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "1", out string msg);
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/×Ô¶¨ÒåÀà.cs
@@ -28,6 +28,7 @@
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
@@ -656,6 +657,12 @@
    {
        #region    [自定义类][20250417094750211][Utils]
        public void ThreadSettingInit()
        {
            Console.WriteLine("Utils ThreadSettingInit ");
        }
        #endregion [自定义类][20250417094750211][Utils]
    }
    public class ToWMSMES
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Dlls/GZ.Device.PLC.dll
Binary files differ
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Dlls/GZ.Modular.Redis.dll
Binary files differ