using HH.WCS.Hexafluo; using HH.WCS.Hexafluo.dispatch; using HH.WCS.Hexafluo.util; using HH.WCS.Hexafluo.wms; using HH.WCS.SJML.Entitys; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; namespace HH.WCS.ZCQTJ.core { public class OverTimeAgvTask { private static object locko8 = new object(); public static void AgvOverTaskPir() { try { lock (locko8) { var chi = new SqlHelper().GetInstance(); var newDb2 = chi.CopyNew(); //任务超时通知 DateTime datt = DateTime.Now; var Area = new List { "LCCKJBW" }; var ShyArea = new List { "LC11T" }; var State = new List { "执行中", "已推送" }; var StateFa = new List { "完成", "取消" }; var TaskList2 = newDb2.Queryable().Where(e => ShyArea.Contains(e.S_START_LAREA) && e.S_TYPE == "出库" && !StateFa.Contains(e.S_B_STATE)) .ToList(); var ZTaskList = TaskList2.FindAll(e => e.S_Main_task == "主任务").ToList(); if (ZTaskList.Any()) { var tTaskNum = newDb2.Queryable().Where(e => ShyArea.Contains(e.S_AreaCode))?.First(); if (tTaskNum != null && tTaskNum.N_TaskQuantity <= ZTaskList.Count()) { var agvTask = newDb2.Queryable().Where(e => Area.Contains(e.S_START_LAREA) && e.S_NOTE == "agv任务" && e.S_TYPE == "出库" && State.Contains(e.S_B_STATE) && e.T_MODIFY < datt.AddMinutes(-1)).ToList(); if (agvTask.Any()) { //调整优先级 foreach (var task in agvTask) { //查询这个任务的立库任务是否完成了 LogHelper.Info("调整优先级", $" Agv每超过1分钟优先级+1 任务提高优先级 {task.S_TASK_NO}"); try { newDb2.BeginTran(); int pri = task.N_PRIORITY + 1; var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = pri, T_MODIFY = DateTime.Now }).Where(e => e.S_ID == task.S_ID).ExecuteCommand(); var Agvstr = NDCHelper.ChangeParamPri(task.S_TASK_NO, pri); if (!Agvstr) { throw new Exception("优先级调整失败"); } newDb2.CommitTran(); } catch (Exception ex) { LogHelper.DanInfo("调整优先级", ex.Message); newDb2.RollbackTran(); } } } } else { var agvTask = newDb2.Queryable().Where(e => Area.Contains(e.S_START_LAREA) && e.S_NOTE == "agv任务" && e.S_TYPE == "出库" && State.Contains(e.S_B_STATE) && e.T_MODIFY < datt.AddMinutes(-2)).ToList(); if (agvTask.Any()) { //调整优先级 foreach (var task in agvTask) { //查询这个任务的立库任务是否完成了 LogHelper.Info("调整优先级", $" Agv每超过2分钟优先级+1 任务提高优先级 {task.S_TASK_NO}"); try { newDb2.BeginTran(); int pri = task.N_PRIORITY + 1; var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = pri, T_MODIFY = DateTime.Now }).Where(e => e.S_ID == task.S_ID).ExecuteCommand(); var Agvstr = NDCHelper.ChangeParamPri(task.S_TASK_NO, pri); if (!Agvstr) { throw new Exception("优先级调整失败"); } newDb2.CommitTran(); } catch (Exception ex) { LogHelper.DanInfo("调整优先级", ex.Message); newDb2.RollbackTran(); } } } } } //var TaskList2 = newDb2.Queryable().Where(e => Area.Contains(e.S_START_LAREA) && e.S_NOTE == "agv任务" && e.S_TYPE == "出库" && State.Contains(e.S_B_STATE) && e.T_MODIFY < datt.AddMinutes(-2)) // .ToList(); //if (TaskList2.Any()) //{ // //调整优先级 // foreach (var task in TaskList2) // { // //查询这个任务的立库任务是否完成了 // LogHelper.Info("调整优先级", $" Agv每超过5分钟优先级+1 任务提高优先级 {task.S_TASK_NO}"); // try // { // newDb2.BeginTran(); // int pri = task.N_PRIORITY + 1; // var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = pri, T_MODIFY = DateTime.Now }).Where(e => e.S_ID == task.S_ID).ExecuteCommand(); // var Agvstr = NDCHelper.ChangeParamPri(task.S_TASK_NO, pri); // if (!Agvstr) // { // throw new Exception("优先级调整失败"); // } // newDb2.CommitTran(); // } // catch (Exception ex) // { // LogHelper.DanInfo("调整优先级", ex.Message); // newDb2.RollbackTran(); // } // } //} var Area2 = new List { "LBJT", "NCYYXB", "TCYYXB" }; //var State = new List { "执行中", "已推送" }; var TaskList3 = newDb2.Queryable().Where(e => Area2.Contains(e.S_START_LAREA) && e.S_NOTE == "agv任务" && e.S_TYPE == "入库" && State.Contains(e.S_B_STATE) && e.T_MODIFY < datt.AddMinutes(-5)) .ToList(); if (TaskList3.Any()) { //调整优先级 foreach (var task in TaskList3) { //查询这个任务的立库任务是否完成了 LogHelper.Info("调整优先级", $" Agv每超过5分钟优先级+1 任务提高优先级 {task.S_TASK_NO}"); try { newDb2.BeginTran(); int pri = task.N_PRIORITY + 1; var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = pri, T_MODIFY = DateTime.Now }).Where(e => e.S_ID == task.S_ID).ExecuteCommand(); var Agvstr = NDCHelper.ChangeParamPri(task.S_TASK_NO, pri); if (!Agvstr) { throw new Exception("优先级调整失败"); } newDb2.CommitTran(); } catch (Exception ex) { LogHelper.DanInfo("调整优先级", ex.Message); newDb2.RollbackTran(); } } } var Area3 = new List { "TQCKJBW", "DSCKJBW", "TMCKJBW", "XWCKJBW", "GSCKJBW" }; var TaskList4 = newDb2.Queryable().Where(e => Area3.Contains(e.S_START_LAREA) && e.S_NOTE == "agv任务" && e.S_TYPE == "出库" && State.Contains(e.S_B_STATE) && e.T_MODIFY < datt.AddMinutes(-5)) .ToList(); if (TaskList4.Any()) { //调整优先级 foreach (var task in TaskList4) { //查询这个任务的立库任务是否完成了 LogHelper.Info("调整优先级", $" Agv每超过5分钟优先级+1 任务提高优先级 {task.S_TASK_NO}"); try { newDb2.BeginTran(); int pri = task.N_PRIORITY + 1; var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = pri, T_MODIFY = DateTime.Now }).Where(e => e.S_ID == task.S_ID).ExecuteCommand(); var Agvstr = NDCHelper.ChangeParamPri(task.S_TASK_NO, pri); if (!Agvstr) { throw new Exception("优先级调整失败"); } newDb2.CommitTran(); } catch (Exception ex) { LogHelper.DanInfo("调整优先级", ex.Message); newDb2.RollbackTran(); } } } } } catch (System.Exception ex) { LogHelper.DanInfo("调整优先级", ex.Message); } } } }