using HH.WCS.Hexafluo.util;
|
using HH.WCS.Hexafluo.wms;
|
using HH.WCS.ZCQTJ.Entitys;
|
using Newtonsoft.Json;
|
using SqlSugar;
|
using System;
|
using System.Linq;
|
|
namespace HH.WCS.Hexafluo.core
|
{
|
/// <summary>
|
/// 定时轮询任务
|
/// </summary>
|
public class MonitorAgvDate
|
{
|
private static object locko4 = new object();
|
/// <summary>
|
/// 统计前一天agv完成时间
|
/// </summary>
|
public static void CheckCamera(int T = 1)
|
{
|
try
|
{
|
//lock (locko4)
|
//{
|
DateTime now = DateTime.Now;
|
var chi = new SqlHelper<object>().GetInstance();
|
var newDb2 = chi.CopyNew();
|
DateTime datt = DateTime.Now;
|
DateTime yesterdayStart = new DateTime(now.Year, now.Month, now.Day).AddDays(-1);
|
DateTime yesterdayEnd = new DateTime(now.Year, now.Month, now.Day);
|
var yesday = new DateTime(now.Year, now.Month, now.Day).AddDays(-1).ToString("yyyy-MM-dd");
|
if (T > 1)
|
{
|
yesterdayStart = new DateTime(now.Year, now.Month, now.Day).AddDays(-T);
|
yesterdayEnd = new DateTime(now.Year, now.Month, now.Day).AddDays(-(T - 1)); ;
|
yesday = new DateTime(now.Year, now.Month, now.Day).AddDays(-T).ToString("yyyy-MM-dd");
|
}
|
LogHelper.DanInfo("计算AGV时间", $"开始时间{JsonConvert.SerializeObject(yesterdayStart)} 结束时间{JsonConvert.SerializeObject(yesterdayEnd)} ");
|
var AgvTaskDone = newDb2.Queryable<AgvTaskDoneTimeEntitys>().Where(e => e.D_DATE == yesday)?.First();
|
LogHelper.DanInfo("计算AGV时间", $"查询 AGV任务每天完成时间统计表 是否有数据 {JsonConvert.SerializeObject(AgvTaskDone)}");
|
if (AgvTaskDone == null)
|
{
|
//计算agv完成时间
|
var TaskList1 = newDb2.Queryable<WMSTask>().Where(e => e.S_NOTE == "agv任务" && e.S_B_STATE == "完成" && yesterdayStart <= e.T_CREATE && e.T_CREATE <= yesterdayEnd).ToList();
|
LogHelper.DanInfo("计算AGV时间", $"查询 符合条件的任务数 类型agv任务 状态完成 创建时间在{JsonConvert.SerializeObject(yesterdayStart)} 与 {JsonConvert.SerializeObject(yesterdayEnd)} 之间 查询的任务数量为{TaskList1.Count()}");
|
if (TaskList1.Any())
|
{
|
double minutesDifference = 0;
|
|
//计算agv完成时间
|
foreach (var task in TaskList1)
|
{
|
if (task.T_END_TIME != null && task.T_START_TIME != null)
|
{
|
TimeSpan timeDifference = (TimeSpan)(task.T_END_TIME - task.T_START_TIME);
|
minutesDifference += timeDifference.Minutes;
|
LogHelper.DanInfo("计算AGV时间", $"相差分钟数{timeDifference.Minutes} 总时间{minutesDifference}");
|
}
|
}
|
if (minutesDifference != 0)
|
{
|
AgvTaskDoneTimeEntitys agvTaskDoneTimeEntitys = new AgvTaskDoneTimeEntitys();
|
agvTaskDoneTimeEntitys.N_AGV_DONE1 = minutesDifference / (73 * 24 * 60);
|
agvTaskDoneTimeEntitys.N_AGV_DONE2 = minutesDifference / (19 * 24 * 60);
|
agvTaskDoneTimeEntitys.D_DATE = yesday;
|
try
|
{
|
newDb2.BeginTran();
|
var B = newDb2.Insertable(agvTaskDoneTimeEntitys).ExecuteCommand();
|
newDb2.CommitTran();
|
}
|
catch (Exception ex)
|
{
|
LogHelper.DanInfo("计算AGV时间", ex.Message);
|
newDb2.RollbackTran();
|
}
|
}
|
}
|
}
|
|
}
|
catch (System.Exception ex)
|
{
|
LogHelper.DanInfo("计算AGV时间", ex.Message);
|
}
|
}
|
}
|
}
|