using HH.WCS.Hexafluo.dispatch; using HH.WCS.Hexafluo.util; using HH.WCS.Hexafluo.wms; using Newtonsoft.Json; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; namespace HH.WCS.Hexafluo.core { /// /// 定时轮询任务 /// public class MonitorAgvPriy { private static object locko4 = new object(); /// /// 调整优先级 /// public static void CheckCamera() { try { //lock (locko4) //{ var chi = new SqlHelper().GetInstance(); var newDb2 = chi.CopyNew(); DateTime datt = DateTime.Now; //提高优先级 var TaskList1 = newDb2.Queryable().Where(e => e.S_NOTE == "自管任务" && e.S_READ_LOCK == "N" && e.S_B_STATE == "未执行" && e.S_TYPE == "出库" && e.T_MODIFY < datt.AddMinutes(-20) && e.N_PRIORITY == 0) .ToList(); if (!TaskList1.Any()) { //调整优先级 foreach (var task in TaskList1) { LogHelper.Info("处理自管任务", $" 出库 任务提高优先级 {JsonConvert.SerializeObject(task)}"); var ddd = newDb2.Queryable().Where(e => e.S_SRC_NO == task.S_SRC_NO).ToList(); var fff = ddd.Select(e => e.S_ID).ToList(); try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = 30, T_MODIFY = DateTime.Now }).Where(x => fff.Contains(x.S_ID)).ExecuteCommand(); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } } //提高出库agv的优先级 var TaskList2 = newDb2.Queryable().Where(e => e.S_NOTE == "agv任务" && e.S_B_STATE == "已推送" && e.S_TYPE == "出库" && e.T_MODIFY < datt.AddMinutes(-20) && e.N_PRIORITY == 0 && e.S_Main_task == "子任务") .ToList(); if (!TaskList2.Any()) { //查询对应的立库任务是否完成 var TaskList3 = newDb2.Queryable().Where(e => e.S_NOTE == "立库任务" && e.S_B_STATE == "完成" && e.S_TYPE == "出库" && e.S_Main_task == "子任务" && TaskList2.Select(c => c.S_SRC_NO).ToList().Contains(e.S_SRC_NO)) .ToList(); if (!TaskList3.Any()) { TaskList2 = TaskList2.FindAll(e => TaskList3.Select(c => c.S_SRC_NO).ToList().Contains(e.S_SRC_NO)).ToList(); //调整优先级 foreach (var task in TaskList2) { //查询这个任务的立库任务是否完成了 LogHelper.Info("处理自管任务", $" 出库 任务提高优先级 {JsonConvert.SerializeObject(task)}"); var ddd = newDb2.Queryable().Where(e => e.S_SRC_NO == task.S_SRC_NO).ToList(); var fff = ddd.Select(e => e.S_ID).ToList(); try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = 20, T_MODIFY = DateTime.Now }).Where(x => fff.Contains(x.S_ID)).ExecuteCommand(); var Agvstr = NDCHelper.ChangeParamPri(task.S_TASK_NO, 20); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } } } //调整优先级 var State = new List { "未执行", "已推送", "执行中" }; List Arealist = new List() { "LBJT", "TCYYXB", "NCYYXB", "TCXB", "TTXB", "NCXB", "DSXB", "TMXB", "TQXB", "DSCKJBW", "DSCXK", "TMJT" }; List TTArea = new List() { "TCXB", "TTXB", "NCXB", "DSXB", "TMXB", "TQXB" }; var TaskList4 = newDb2.Queryable().Where(e => e.S_NOTE == "agv任务" && State.Contains(e.S_B_STATE) && Arealist.Contains(e.S_START_LAREA) && e.T_MODIFY < datt.AddMinutes(-2)).ToList(); if (TaskList4.Any()) { var Lbjt = TaskList4.FindAll(e => e.S_START_LAREA == "LBJT" && e.T_MODIFY < datt.AddMinutes(-5)).ToList(); if (Lbjt.Any()) { foreach (var item in Lbjt) { if (item.S_B_STATE == "未执行") { try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = item.N_PRIORITY + 1, T_MODIFY = DateTime.Now }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } else { try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = item.N_PRIORITY + 1, T_MODIFY = DateTime.Now }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); var Agvstr = NDCHelper.ChangeParamPri(item.S_TASK_NO, item.N_PRIORITY + 1); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } } } var TCYYXB = TaskList4.FindAll(e => e.S_START_LAREA == "TCYYXB" && e.T_MODIFY < datt.AddMinutes(-2)).ToList(); if (TCYYXB.Any()) { foreach (var item in TCYYXB) { if (item.S_B_STATE == "未执行") { try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = item.N_PRIORITY + 1, T_MODIFY = DateTime.Now }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } else { try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = item.N_PRIORITY + 1, T_MODIFY = DateTime.Now }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); var Agvstr = NDCHelper.ChangeParamPri(item.S_TASK_NO, item.N_PRIORITY + 1); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } } } var NCYYXB = TaskList4.FindAll(e => e.S_START_LAREA == "NCYYXB" && e.T_MODIFY < datt.AddMinutes(-4)).ToList(); if (NCYYXB.Any()) { foreach (var item in NCYYXB) { if (item.S_B_STATE == "未执行") { try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = item.N_PRIORITY + 1, T_MODIFY = DateTime.Now }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } else { try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = item.N_PRIORITY + 1, T_MODIFY = DateTime.Now }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); var Agvstr = NDCHelper.ChangeParamPri(item.S_TASK_NO, item.N_PRIORITY + 1); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } } } var TCXB = TaskList4.FindAll(e => TTArea.Contains(e.S_START_LAREA) && e.T_MODIFY < datt.AddMinutes(-20)).ToList(); if (TCXB.Any()) { foreach (var item in TCXB) { if (item.S_B_STATE == "未执行") { try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = item.N_PRIORITY + 1, T_MODIFY = DateTime.Now }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } else { try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = item.N_PRIORITY + 1, T_MODIFY = DateTime.Now }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); var Agvstr = NDCHelper.ChangeParamPri(item.S_TASK_NO, item.N_PRIORITY + 1); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } } } var DSCKJBW = TaskList4.FindAll(e => e.S_START_LAREA == "DSCKJBW" && e.T_MODIFY < datt.AddMinutes(-2) && e.S_B_STATE != "未执行").ToList(); if (DSCKJBW.Any()) { foreach (var item in DSCKJBW) { try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = item.N_PRIORITY + 1, T_MODIFY = DateTime.Now }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); var Agvstr = NDCHelper.ChangeParamPri(item.S_TASK_NO, item.N_PRIORITY + 1); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } } var DSCXK = TaskList4.FindAll(e => e.S_START_LAREA == "DSCXK" && e.T_MODIFY < datt.AddMinutes(-5)).ToList(); if (DSCXK.Any()) { foreach (var item in DSCXK) { if (item.S_B_STATE == "未执行") { try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = item.N_PRIORITY + 1, T_MODIFY = DateTime.Now }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } else { try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = item.N_PRIORITY + 1, T_MODIFY = DateTime.Now }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); var Agvstr = NDCHelper.ChangeParamPri(item.S_TASK_NO, item.N_PRIORITY + 1); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } } } var TMJT = TaskList4.FindAll(e => e.S_START_LAREA == "TMJT" && e.T_MODIFY < datt.AddMinutes(-3)).ToList(); if (TMJT.Any()) { foreach (var item in TMJT) { if (item.S_B_STATE != "未执行") { try { newDb2.BeginTran(); var I = newDb2.Updateable().SetColumns(it => new WMSTask() { N_PRIORITY = item.N_PRIORITY + 1, T_MODIFY = DateTime.Now }).Where(x => x.S_ID == item.S_ID).ExecuteCommand(); var Agvstr = NDCHelper.ChangeParamPri(item.S_TASK_NO, item.N_PRIORITY + 1); newDb2.CommitTran(); } catch (Exception) { newDb2.RollbackTran(); } } } } } // } } catch (System.Exception ex) { LogHelper.Info("处理自管任务", ex.Message + ex.StackTrace); } } } }