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
|
{
|
/// <summary>
|
/// 定时轮询任务
|
/// </summary>
|
public class MonitorAgvPriy
|
{
|
private static object locko4 = new object();
|
/// <summary>
|
/// 调整优先级
|
/// </summary>
|
public static void CheckCamera()
|
{
|
try
|
{
|
//lock (locko4)
|
//{
|
var chi = new SqlHelper<object>().GetInstance();
|
var newDb2 = chi.CopyNew();
|
DateTime datt = DateTime.Now;
|
//提高优先级
|
var TaskList1 = newDb2.Queryable<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<string> { "未执行", "已推送", "执行中" };
|
List<string> Arealist = new List<string>() { "LBJT", "TCYYXB", "NCYYXB", "TCXB", "TTXB", "NCXB", "DSXB", "TMXB", "TQXB", "DSCKJBW", "DSCXK", "TMJT" };
|
List<string> TTArea = new List<string>() { "TCXB", "TTXB", "NCXB", "DSXB", "TMXB", "TQXB" };
|
var TaskList4 = newDb2.Queryable<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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<WMSTask>().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);
|
}
|
}
|
}
|
}
|