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<object>().GetInstance();
|
var newDb2 = chi.CopyNew();
|
//任务超时通知
|
DateTime datt = DateTime.Now;
|
var Area = new List<string> { "LCCKJBW" };
|
var ShyArea = new List<string> { "LC11T" };
|
var State = new List<string> { "执行中", "已推送" };
|
|
var StateFa = new List<string> { "完成", "取消" };
|
|
var TaskList2 = newDb2.Queryable<WMSTask>().Where(e => Area.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<OutAreaTaskAnyEntitys>().Where(e => ShyArea.Contains(e.S_AreaCode))?.First();
|
if (tTaskNum != null && tTaskNum.N_TaskQuantity <= ZTaskList.Count())
|
{
|
var agvTask = TaskList2.FindAll(e => e.S_NOTE == "agv任务" && State.Contains(e.S_B_STATE) && e.T_MODIFY < datt.AddMinutes(-1));
|
if (TaskList2.Any())
|
{
|
//调整优先级
|
foreach (var task in TaskList2)
|
{
|
//查询这个任务的立库任务是否完成了
|
LogHelper.Info("调整优先级", $" Agv每超过1分钟优先级+1 任务提高优先级 {task.S_TASK_NO}");
|
try
|
{
|
newDb2.BeginTran();
|
int pri = task.N_PRIORITY + 1;
|
var I = newDb2.Updateable<WMSTask>().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 = TaskList2.FindAll(e => e.S_NOTE == "agv任务" && State.Contains(e.S_B_STATE) && e.T_MODIFY < datt.AddMinutes(-2));
|
if (TaskList2.Any())
|
{
|
//调整优先级
|
foreach (var task in TaskList2)
|
{
|
//查询这个任务的立库任务是否完成了
|
LogHelper.Info("调整优先级", $" Agv每超过2分钟优先级+1 任务提高优先级 {task.S_TASK_NO}");
|
try
|
{
|
newDb2.BeginTran();
|
int pri = task.N_PRIORITY + 1;
|
var I = newDb2.Updateable<WMSTask>().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<WMSTask>().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<WMSTask>().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<string> { "LBJT", "NCYYXB", "TCYYXB" };
|
//var State = new List<string> { "执行中", "已推送" };
|
var TaskList3 = newDb2.Queryable<WMSTask>().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<WMSTask>().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<string> { "TQCKJBW", "DSCKJBW", "TMCKJBW", "XWCKJBW", "GSCKJBW" };
|
var TaskList4 = newDb2.Queryable<WMSTask>().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<WMSTask>().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);
|
}
|
}
|
}
|
}
|