using HanHe.Message;
|
using HH.WCS.Hexafluo;
|
using HH.WCS.Hexafluo.util;
|
using HH.WCS.Hexafluo.wms;
|
using HH.WCS.SJML.Bll;
|
using HH.WCS.SJML.Entitys;
|
using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
|
namespace HH.WCS.ZCQTJ.core
|
{
|
public class TaskOver
|
{
|
|
private static object locko7 = new object();
|
private static object locko8 = new object();
|
public static void CheckCameraTask()
|
{
|
try
|
{
|
lock (locko7)
|
{
|
//任务超时通知
|
var chi = new SqlHelper<object>().GetInstance();
|
var newDb = chi.CopyNew();
|
DateTime currentTime = DateTime.Now;
|
TimeSpan tenMinutes = TimeSpan.FromMinutes(20);
|
DateTime newTime = currentTime - tenMinutes;
|
try
|
{
|
var State = new List<string> { "完成", "取消" };
|
var TaskList = newDb.Queryable<WMSTask>().Where(e => !State.Contains(e.S_B_STATE) && e.T_CREATE < newTime)
|
.OrderBy(st => st.N_PRIORITY, OrderByType.Desc)
|
.OrderBy(st => st.T_CREATE)
|
.ToList();
|
if (TaskList.Any())
|
{
|
var loList = newDb.Queryable<Location>().Where(a => TaskList.Select(e => e.S_START_LAREA).Contains(a.S_LOC_CODE.Trim()) || TaskList.Select(e => e.S_END_LAREA).Contains(a.S_LOC_CODE.Trim())).ToList();
|
foreach (var item in TaskList)
|
{
|
|
if (item.S_TYPE == "入库")
|
{
|
var ghh = "";
|
ghh = $" 任务号:{item.S_TASK_NO.Substring(item.S_TASK_NO.Length - 4)} 库区:{item.S_END_LAREA} 巷道:{loList.Find(e => e.S_LOC_CODE == item.S_END_LOC).N_ROADWAY} 超时时间(创建至今):{(DateTime.Now - item.T_CREATE).TotalMinutes}分钟 任务目的地:{item.S_END_LOC}";
|
BLLCreator.CreateSingleton<DingDingHelper>().button1_Click(ghh);
|
}
|
if (item.S_TYPE == "出库")
|
{
|
var ghh = "";
|
ghh = $" 任务号:{item.S_TASK_NO.Substring(item.S_TASK_NO.Length - 4)} 库区:{item.S_START_LAREA} 巷道:{loList.Find(e => e.S_LOC_CODE == item.S_START_LOC).N_ROADWAY} 超时时间(创建至今):{(DateTime.Now - item.T_CREATE).TotalMinutes}分钟 任务目的地:{item.S_END_LOC}";
|
BLLCreator.CreateSingleton<DingDingHelper>().button1_Click(ghh);
|
}
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
|
LogHelper.DanInfo("钉钉通知", ex.Message + ex.StackTrace);
|
}
|
|
|
//try
|
//{
|
// MonitorAgvDate.CheckCamera();
|
//}
|
//catch (System.Exception)
|
//{
|
|
// throw;
|
//}
|
|
//Agv任务五分钟没车号发送到钉钉
|
//try
|
//{
|
// DateTime datt = DateTime.Now;
|
// var State1 = new List<string> { "已推送", "执行中" };
|
// var TaskList1 = newDb.Queryable<WMSTask>().Where(e => e.S_NOTE == "agv任务" && State1.Contains(e.S_B_STATE) && datt.AddMinutes(-5) <= e.T_MODIFY && e.T_MODIFY <= datt)
|
// .ToList();
|
|
// foreach (var item in TaskList1)
|
// {
|
// if (string.IsNullOrEmpty(item.S_EQ_NO) && item.S_EQ_NO == "0")
|
// {
|
// var Val = $"任务号:{item.S_TASK_NO.Substring(item.S_TASK_NO.Length - 4)} \n\n 创建时间:{item.T_CREATE.ToString()} \n\n 开始时间:{item.T_START_TIME?.ToString()} \n\n 业务类型:{item.S_TYPE} \n\n 容器号:{item.S_CNTRS} \n\n 起点:{item.S_START_LOC} \n\n 终点:{item.S_END_LOC} ";
|
// BLLCreator.CreateSingleton<DingDingHelper>().button1_Click(Val);
|
// }
|
// }
|
// //agv任务十五分钟未完成
|
// var State2 = new List<string> { "完成", "取消" };
|
// var TaskList2 = newDb.Queryable<WMSTask>().Where(e => e.S_NOTE == "agv任务" && !State2.Contains(e.S_B_STATE) && datt.AddMinutes(-15) <= e.T_MODIFY && e.T_MODIFY <= datt)
|
// .ToList();
|
// foreach (var item in TaskList2)
|
// {
|
// var Val = $"任务号:{item.S_TASK_NO.Substring(item.S_TASK_NO.Length - 4)} \n\n 创建时间:{item.T_CREATE.ToString()} \n\n 开始时间:{item.T_START_TIME?.ToString()} \n\n 业务类型:{item.S_TYPE} \n\n 容器号:{item.S_CNTRS} \n\n 起点:{item.S_START_LOC} \n\n 终点:{item.S_END_LOC} ";
|
// BLLCreator.CreateSingleton<DingDingHelper>().button1_Click(Val);
|
// }
|
//}
|
//catch (Exception ex)
|
//{
|
|
// LogHelper.DanInfo("钉钉通知", ex.Message + ex.StackTrace);
|
//}
|
try
|
{
|
//每个库区的未完成的任务数量大于?(大于多少可不可以让现场管理人员自动调节)就推送钉钉(当前未完成的任务数量多少)
|
var transportTask = chi.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "钉钉未完成任务推送数")?.First();
|
var TaryJb = string.IsNullOrEmpty(transportTask.TypeJson) ? 0 : int.Parse(transportTask.TypeJson);
|
var State3 = new List<string> { "完成", "取消" };
|
var TaskList3 = newDb.Queryable<WMSTask>().Where(e => !State3.Contains(e.S_B_STATE) && e.S_Main_task == "主任务")
|
.ToList();
|
var ck = TaskList3.FindAll(e => e.S_TYPE == "出库").ToList();
|
var Rk = TaskList3.FindAll(e => e.S_TYPE == "入库").ToList();
|
if (ck.Count > 0)
|
{
|
var gghf = TaskList3.GroupBy(e => e.S_START_LAREA).Select(e => e.Key).ToList();
|
foreach (var item in gghf)
|
{
|
var cks = ck.FindAll(e => e.S_START_LAREA == item).ToList();
|
if (cks.Count() >= TaryJb)
|
{
|
var Val = $"出库:起点库区为 {item} 未完成任务数为:{cks.Count()}";
|
BLLCreator.CreateSingleton<DingDingHelper>().button1_Click(Val);
|
}
|
}
|
}
|
if (Rk.Count > 0)
|
{
|
var gghf = TaskList3.GroupBy(e => e.S_END_LAREA).Select(e => e.Key).ToList();
|
foreach (var item in gghf)
|
{
|
var Rks = Rk.FindAll(e => e.S_END_LAREA == item).ToList();
|
if (Rks.Count() >= TaryJb)
|
{
|
var Val = $"入库:终点库区为 {item} 未完成任务数为:{Rks.Count()}";
|
BLLCreator.CreateSingleton<DingDingHelper>().button1_Click(Val);
|
}
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
|
LogHelper.DanInfo("钉钉通知", ex.Message + ex.StackTrace);
|
}
|
}
|
}
|
catch (System.Exception ex)
|
{
|
LogHelper.DanInfo("钉钉通知", ex.Message + ex.StackTrace);
|
}
|
}
|
|
public static void CheckCameraTask2()
|
{
|
try
|
{
|
lock (locko8)
|
{
|
//任务超时通知
|
var chi = new SqlHelper<object>().GetInstance();
|
var newDb = chi.CopyNew();
|
DateTime datt = DateTime.Now;
|
var Val = "";
|
//出库,入库的总任务数量(半个小时之内完成跟未完成的任务综合)
|
var TaskList4 = newDb.Queryable<WMSTask>().Where(e => e.S_Main_task == "主任务" && datt.AddMinutes(-30) <= e.T_CREATE && e.T_CREATE <= datt)
|
.ToList();
|
|
var ck = TaskList4.FindAll(e => e.S_TYPE == "出库").ToList();
|
var Rk = TaskList4.FindAll(e => e.S_TYPE == "入库").ToList();
|
|
if (ck.Count > 0)
|
{
|
var gghf = TaskList4.GroupBy(e => e.S_START_LAREA).Select(e => e.Key).ToList();
|
foreach (var item in gghf)
|
{
|
var cks = ck.FindAll(e => e.S_START_LAREA == item).ToList();
|
|
Val += $"半小时内库区: {item} 出库数为:{cks.Count()} \n\n ";
|
}
|
}
|
if (Rk.Count > 0)
|
{
|
var gghf = TaskList4.GroupBy(e => e.S_END_LAREA).Select(e => e.Key).ToList();
|
foreach (var item in gghf)
|
{
|
var Rks = Rk.FindAll(e => e.S_END_LAREA == item).ToList();
|
Val = $"半小时内库区: {item} 入库数为:{Rks.Count()} \n\n ";
|
}
|
}
|
|
BLLCreator.CreateSingleton<DingDingHelper>().button1_Click(Val);
|
}
|
}
|
catch (System.Exception ex)
|
{
|
LogHelper.Info("处理自管任务", ex.Message + ex.StackTrace);
|
}
|
}
|
}
|
}
|