using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Common.LocationEnum; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Common; using WIDESEAWCS_Model.Models; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_QuartzJob; namespace WIDESEAWCS_Tasks { public partial class TestJob { /// /// 四向车质检任务 /// /// public void SXCTasks(OtherDevice device) { #region 四向车任务 List Uptasks = new List(); var taskList = _taskService.Repository.QueryData(x => x.TaskType == TaskTypeEnum.CPInbound.ObjToInt() && x.TaskState == TaskStatusEnum.CheckShapeing.ObjToInt()); //任务的目标地址对于站台号; foreach (var task in taskList) { if (device.GetValue(QualityInspectionCommandEnum.R_QualityInspection, task.SourceAddress)) { device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, false, task.SourceAddress); //再读取质检结果 var qualityResult = device.GetValue(QualityInspectionCommandEnum.R_QualityInspectionInProgress, task.SourceAddress); //左超宽警告 var R_LeftOverWidthWarning = device.GetValue(QualityInspectionCommandEnum.R_LeftOverWidthWarning, task.SourceAddress); //右超宽警告 var R_RightWideWarning = device.GetValue(QualityInspectionCommandEnum.R_RightWideWarning, task.SourceAddress); //超高警告 var R_ExtremeWarning = device.GetValue(QualityInspectionCommandEnum.R_ExtremeWarning, task.SourceAddress); if (qualityResult) { //如果质检通过了,就把任务状态改为质检完成 task.TaskState = TaskStatusEnum.CheckShapeingOk.ObjToInt(); task.ExceptionMessage = ""; Uptasks.Add(task); } else { task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt(); task.ExceptionMessage = "外检失败"; if (R_LeftOverWidthWarning) task.ExceptionMessage += ",左超宽"; if (R_RightWideWarning) task.ExceptionMessage += ",右超宽"; if (R_ExtremeWarning) task.ExceptionMessage += ",超高"; Uptasks.Add(task); //写入复位信号 //device.SetValue(QualityInspectionCommandEnum.FaultReset, true, task.SourceAddress); } //写入停止质检信号 device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, true, task.SourceAddress); Thread.Sleep(500); device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress); } //else //{ // //写入停止质检信号 // device.SetValue(QualityInspectionCommandEnum.StopqualityInspection, false, task.SourceAddress); // device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress); //} else { task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt(); task.ExceptionMessage = "未检测到质检完成信号"; Uptasks.Add(task); } } if (Uptasks.Count > 0) { _taskService.UpdateData(Uptasks); } #endregion } /// /// 海康AGV1-6楼任务 /// /// public void KHTasks(OtherDevice device) { List Uptasks = new List(); var AGVtaskList = _taskService.Repository.QueryData(x => x.TaskState == TaskStatusEnum.AGV_WaitToExecute.ObjToInt() && (x.TaskType == TaskTypeEnum.Q3RK.ObjToInt() || x.TaskType == TaskTypeEnum.Q3CK.ObjToInt()));//1-6和6-1楼任务 foreach (var item in AGVtaskList) { var address = item.TaskType == TaskTypeEnum.Q3RK.ObjToInt() ? item.TargetAddress : item.SourceAddress; var stationManger = _stationMangerService.Repository.QueryFirst(x => x.StationCode == address); if (stationManger == null) { item.ExceptionMessage = $"未找到【{address}】站台信息"; Uptasks.Add(item); continue; } var StockAvailableSymbol = device.GetValue(QualityInspectionCommandEnum.R_StockAvailableSymbol, address); if (item.TaskType == TaskTypeEnum.Q3RK.ObjToInt()) { if (StockAvailableSymbol) { item.ExceptionMessage = $"{address}站台光电检测有货!"; Uptasks.Add(item); continue; } if (stationManger.IsOccupied == (int)LocationStatusEnum.Lock) { item.ExceptionMessage = $"站台有货!"; Uptasks.Add(item); continue; } } else { if (!StockAvailableSymbol) { item.ExceptionMessage = $"{address}站台光电检测无货!"; Uptasks.Add(item); continue; } if (stationManger.IsOccupied == (int)LocationStatusEnum.Free) { item.ExceptionMessage = $"站台无货!"; Uptasks.Add(item); continue; } } //into进入一楼位置的时候,写入进入信号 device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, address); if (!device.GetValue(QualityInspectionCommandEnum.Blocking, address)) { item.ExceptionMessage = $"{address}站台光栅不为true(1)!"; Uptasks.Add(item); continue; } var result = _taskService.Hikvisiontaskscontinue(item.WMSTaskNum); if (result.Status == false) { if (item.ExceptionMessage != result.Message) { item.ExceptionMessage = result.Message; Uptasks.Add(item); } continue; } item.TaskState = (int)TaskStatusEnum.AGV_ToExecute; item.ExceptionMessage = ""; Uptasks.Add(item); } if (Uptasks.Count > 0) { _taskService.UpdateData(Uptasks); } } } }