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);
}
}
}
}