1
yanjinhui
6 天以前 4d2b6fea8d08c95bd6bb2b8c2b1228383110457e
´úÂë¹ÜÀí/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/TestJob.cs
@@ -11,6 +11,7 @@
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core.Helper;
@@ -21,6 +22,7 @@
using WIDESEAWCS_QuartzJob.DeviceBase;
using WIDESEAWCS_QuartzJob.DTO;
using WIDESEAWCS_QuartzJob.StackerCrane.Enum;
using WIDESEAWCS_TaskInfoService;
namespace WIDESEAWCS_Tasks
{
@@ -48,25 +50,15 @@
                // _taskService.Repository ä»“储层,进行数据库访问-
                try
                {
                    List<Dt_Task> Uptasks = new List<Dt_Task>();
                    var taskList = _taskService.Repository.QueryData(x => x.TaskType == TaskTypeEnum.CPInbound.ObjToInt() && x.TaskState == TaskStatusEnum.CheckShapeing.ObjToInt());
                    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 task in taskList)
                    {
                        ////找到对于站台的管理信息,看看这个站台有没有货,如果有货的话,就进行质检,如果没有货的话,就不进行质检
                        //var  stationMangers = _stationMangerService.Repository.QueryFirst(x => x.StationCode == task.SourceAddress);
                        //device.SetValue(QualityInspectionCommandEnum.StartqualityInspection,true,task.SourceAddress);
                        //如果有货的话,才进行质检,把站台状态该为占用
                        var R_StockAvailableSymbol = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, task.SourceAddress);
                        if (R_StockAvailableSymbol == true)
                        if (device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_QualityInspection, task.SourceAddress))
                        {
                            //stationMangers.IsOccupied=1;//改为占用
                            //开启质检
                            device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, true, task.SourceAddress);
                            //如果读到质检执行中为true的话,就关闭质检
                            if (device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_QualityInspection, task.SourceAddress))
                            {
                                device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, false, task.SourceAddress);
                            }
                            device.SetValue(QualityInspectionCommandEnum.StartqualityInspection, false, task.SourceAddress);
                            //再读取质检结果
                            var qualityResult = device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_QualityInspectionInProgress, task.SourceAddress);
                            //左超宽警告
@@ -79,31 +71,71 @@
                            {
                                //如果质检通过了,就把任务状态改为质检完成
                                task.TaskState = TaskStatusEnum.CheckShapeingOk.ObjToInt();
                                task.ExceptionMessage = "";
                                Uptasks.Add(task);
                            }
                            else if (R_LeftOverWidthWarning)
                            else
                            {
                                task.ExceptionMessage += "质检失败,左超宽";
                                task.TaskState = TaskStatusEnum.CheckShapeingNG.ObjToInt();
                            }
                            else if (R_RightWideWarning)
                            {
                                task.ExceptionMessage += "质检失败,右超宽";
                            }
                            else if (R_ExtremeWarning)
                            {
                                task.ExceptionMessage += "质检失败,超高";
                            }
                            else if (qualityResult == false) //如果质检失败,就复位
                            {
                                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.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);
                        }
                    }
                    foreach (var item in AGVtaskList)
                    {
                        if (device.GetValue<QualityInspectionCommandEnum, bool>(QualityInspectionCommandEnum.R_StockAvailableSymbol, item.SourceAddress))
                        {
                            item.ExceptionMessage = $"{item.SourceAddress}站台有货,无法进入";
                            continue;
                        }
                        //into进入一楼位置的时候,写入进入信号
                        device.SetValue(QualityInspectionCommandEnum.RequestToEnter, true, item.SourceAddress);
                        if (!device.GetValue<QualityInspectionCommandEnum,bool>(QualityInspectionCommandEnum.Blocking)==true)
                        {
                            item.ExceptionMessage = $"{item.TargetAddress}站台光栅不为true(1)!";
                        }
                        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);
                    }
                    _taskService.UpdateData(Uptasks);
                    WriteInfo(device.DeviceName, "infoLog");
                    WriteDebug(device.DeviceName, "debugLog");