| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 | using PlcSiemens.Core.Extension;using ServiceCenter.Logs;using ServiceCenter.Redis;using ServiceCenter.SqlSugars;using System.ComponentModel;using WCS.Core;using WCS.Entity;using WCS.WorkEngineering.Extensions;using WCS.WorkEngineering.Worlds;namespace WCS.WorkEngineering.Systems{    /// <summary>    ///  无交互系统    /// </summary>    [BelongTo(typeof(MainWorld))]    [Description("无交互系统")]    public class NoInteractionSystems : DeviceSystem<Station>    {        public NoInteractionSystems()        {        }        protected override bool ParallelDo => true;        protected override bool SaveLogsToFile => true;        public override void Do(Station obj)        {            var key = $"WCS:Lock:无交互系统{obj.Entity.Code}";            try            {                if (RedisHub.Default.Get(key) != null)                {                    throw new KnownException($"[{obj.Entity.Code}]--触发并发管控", LogLevelEnum.High);                }                RedisHub.Default.Set(key, obj.Entity.Code);                #region 处理所有的新增任务                try                {                    List<WCS_TaskInfo> taskInfos = new List<WCS_TaskInfo>();                    SqlSugarHelper.Do(db =>                    {                        taskInfos = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.Status == Entity.TaskStatus.NewBuild).ToList();                    });                    if (taskInfos.Any())                    {                        foreach (var item in taskInfos)                        {                            try                            {                                SqlSugarHelper.Do(db =>                                {                                    var task = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.ID == item.ID).First() ?? throw new Exception($"未找到对应的WCS任务[{item.ID}]");                                    if (task.Type == TaskType.EnterDepot)                                    {                                        //更新任务状态                                        task.Status = Entity.TaskStatus.WaitingToExecute;                                        db.Default.Updateable(task).ExecuteCommand();                                        task.AddWCS_TASK_DTL(db, task.Device, $"初始化入库任务信息");                                    }                                    else if (task.Type == TaskType.OutDepot)                                    {                                        //if (task.SrmStation.IsNullOrEmpty()) //如果没有指定放货站台                                        //{                                        //    //获取堆垛机到目标地址的路径信息                                        //    var path = DevicePath.GetPath(task.Device, task.AddrTo);                                        //    task.SrmStation = path.Points[1].Code;                                        //}                                        string putStation = "";                                        if (task.AddrTo == "8278")                                        {                                            switch (task.Tunnel)                                            {                                                case "1":                                                    putStation = "8271";                                                    break;                                                case "2":                                                    putStation = "8272";                                                    break;                                                case "3":                                                    putStation = "8273";                                                    break;                                                case "4":                                                    putStation = "8274";                                                    break;                                                case "5":                                                    putStation = "8275";                                                    break;                                            }                                        }                                        else if (task.AddrTo == "8263" || task.AddrTo == "8257" || task.AddrTo == "8269")                                        {                                            switch (task.Tunnel)                                            {                                                case "1":                                                    putStation = "8251";                                                    break;                                                case "2":                                                    putStation = "8248";                                                    break;                                                case "3":                                                    putStation = "8247";                                                    break;                                                case "4":                                                    putStation = "8245";                                                    break;                                                case "5":                                                    putStation = "8242";                                                    break;                                            }                                        }                                        //更新任务状态                                        task.Status = Entity.TaskStatus.WaitingToExecute;                                        task.SrmStation = putStation;                                        db.Default.Updateable(task).ExecuteCommand();                                        task.AddWCS_TASK_DTL(db, task.Device, $"初始化出库任务信息,放货站台:{task.SrmStation}");                                    }                                                                                                  });                            }                            catch (Exception ex)                            {                                World.Log(ex.Message, LogLevelEnum.Mid);                                continue;                            }                        }                    }                }                catch (Exception ex)                {                    World.Log(ex.Message, LogLevelEnum.Mid);                }                #endregion 处理所有的新增任务            }            finally            {                RedisHub.Default.Del(key);            }        }        public override bool Select(Device dev)        {            return dev.Code == "8271";        }    }}
 |