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 { /// /// 定时轮询任务 /// public class MonitorAgvDate { private static object locko4 = new object(); /// /// 统计前一天agv完成时间 /// public static void CheckCamera(int T = 1) { try { //lock (locko4) //{ DateTime now = DateTime.Now; var chi = new SqlHelper().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().Where(e => e.D_DATE == yesday)?.First(); LogHelper.DanInfo("计算AGV时间", $"查询 AGV任务每天完成时间统计表 是否有数据 {JsonConvert.SerializeObject(AgvTaskDone)}"); if (AgvTaskDone == null) { //计算agv完成时间 var TaskList1 = newDb2.Queryable().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); } } } }