1
czw
2025-06-30 f7781420ef5b7406be4945562c6483b7e0d35893
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/RunTime/Code/×Ô¶¨ÒåÀà.cs
@@ -739,140 +739,8 @@
        public static void ResMesTask()
        {
            ///1.
            TaskRepository taskservice = new TaskRepository();
var tasks = taskservice.FindList(x => (x.S_B_STATE == "MES" || x.S_B_STATE == "People") && x.N_PRIORITY == -88);
var VERXs = Settings.deviceInfos?.FindAll(x => x.deviceType == 2);
//if (VERXs.Any())
foreach (var task in tasks)
{
    LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ");
    var sx = VERXs?.Find(x => x.location.Contains(task.S_END_LOC));
    LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} {(sx == null ? "非" : "是")}总装机器人任务");
    if (sx == null)
    {
        LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç›´æŽ¥ç”Ÿæˆå¯¹åº”任务");
        //直接生成对应任务。
        var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_START_LOC, task.S_END_LOC, task.S_TYPE, 6, task.S_CNTRS?.Split(',').ToList() ?? new List<string>());
        LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç›´æŽ¥ç”Ÿæˆå¯¹åº”任务 ç»“果:{res}");
        if (res)
        {
            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ä¿®æ”¹æ ‡è¯†");
            //task.N_PRIORITY = 0;
            taskservice.dbcontext.Set<TaskEntity>().Attach(task);
            taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).CurrentValue = 0;
            taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).IsModified = true;
            taskservice.dbcontext.SaveChanges();
        }
    }
    else
    {
        var sindex = sx.location.ToList().IndexOf(task.S_END_LOC);
        LocRepository locRepository = new LocRepository();
        //生成跳跃任务。  -- æ‰˜ç›˜è´§ä½è¡¨ã€‚
        var t1s = taskservice.FindList(x => x.S_SRC_NO == task.S_TASK_NO);
        LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} æŸ¥æ‰¾æ˜¯å¦æœ‰å·²ç”Ÿæˆä»»åŠ¡ï¼š{t1s != null}");
        if (t1s.Any())
        {
            var t1 = t1s.OrderBy(x => x.T_CREATE).LastOrDefault();
            if (t1.S_END_LOC == task.S_END_LOC)
            {
                task.N_PRIORITY = 0;
                task.S_B_STATE = "MES_完成";
                taskservice.Update(task);
                continue;
            }
            if (t1.S_B_STATE == "完成")
            {
                //1.终点是否有托盘。 ä¾æ®æ˜¯ç»ˆç‚¹çš„任务是 ä½œä¸ºç»ˆç‚¹ï¼Œè¿˜æ˜¯èµ·ç‚¹ã€‚
                //var ec = taskservice.FindList(x => (x.S_START_LOC == task.S_START_LOC || x.S_END_LOC == task.S_END_LOC) /*&& DateTime.Now.Subtract(x.T_CREATE).TotalHours < 5*/).OrderByDescending(x => x.T_CREATE).FirstOrDefault();//($"select top 1 * from TN_TASK WHERE S_START_LOC='{task.S_END_LOC}' OR S_END_LOC='{task.S_END_LOC}' ORDER BY T_CREATE DESC");
                //var ec = taskservice.FindList(x => x.S_START_LOC == task.S_START_LOC && x.S_END_LOC == task.S_START_LOC, new Common.Data.Pagination
                //                        {
                //                            page = 1,
                //                            sidx = "T_CREATE",
                //                            sord = "desc",
                //                            rows = 1
                //                        }).FirstOrDefault();
                TaskEntity ec = null;
                var dev = Conn.默认Redis.GetValue(sx.deviceName + "." + (sindex == 0 ? "D1224" : "D1225"));
                if (dev?.Trim() == "1")
                    ec = taskservice.FindList(x => x.S_END_LOC == task.S_END_LOC && x.S_B_STATE == "完成", new Common.Data.Pagination
                    {
                        page = 1,
                        sidx = "T_CREATE",
                        sord = "desc",
                        rows = 1
                    }).FirstOrDefault();
                if (t1.S_START_LOC == task.S_START_LOC && ec != null)//!= task.S_END_LOC)
                {
                    //第二段。
                    LocEntity endLoc = null;
                    var di = sx;
                    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)
                        {
                            var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_END_LOC, endLoc.S_LOC_CODE, task.S_TYPE + "下空", 7, ec.S_CNTRS.Split(',').ToList());
                            if (res)
                            {
                                task.N_PRIORITY = 0; taskservice.Update(task);
                            }
                        }
                    }
                }
                else
                {
                    var res = TaskProcess.CreateTask(task.S_TASK_NO, t1.S_END_LOC, task.S_END_LOC, task.S_TYPE + "补满", 6, task.S_CNTRS.Split(',').ToList());
                    if (res)
                    {
                        task.N_PRIORITY = 0; taskservice.Update(task);
                    }
                }
            }
        }
        else
        {
            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç­›é€‰ç”Ÿæˆç¬¬ä¸€æ®µ ä»»åŠ¡ã€‚");
            //生成第一段。
            LocEntity endLoc = null;
            var di = sx;
            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)
                {
                    LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} åˆ›å»ºç¬¬ä¸€æ®µ ä»»åŠ¡ã€‚");
                    var res = TaskProcess.CreateTask("", task.S_START_LOC, endLoc.S_LOC_CODE, task.S_TYPE + "满转", 8, task.S_CNTRS.Split(',').ToList());
                    LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} åˆ›å»ºç¬¬ä¸€æ®µ ä»»åŠ¡ã€‚ç»“æžœï¼š{res}");
                    if (res)
                    {
                        task.N_PRIORITY = 0; taskservice.Update(task);
                    }
                }
            }
        }
    }
}
            AutoThread.InvokeMethod(AutoThread.Instance, "ResolveMesTask");
            //var VERX = Settings.deviceInfos?.FindAll(x => x.deviceName.Contains("捷瞬抓臂"));
            //if ()
            ///2  çœ‹ç¼“存区。 æ²¡æ»¡çš„。