Administrator
4 天以前 fa6dce9b9457126d7fcc94a297f88d7b7a2120bc
Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -8,6 +8,7 @@
using Elastic.Clients.Elasticsearch.Snapshot;
using Furion.Logging;
using IoTClient;
using MessagePack;
using NewLife.Reflection;
using Newtonsoft.Json;
using Org.BouncyCastle.Ocsp;
@@ -192,6 +193,30 @@
                            } 
                            if (carTask != null && carTask.Status != TaskStatusEnum.Complete)
                            {
                                //查找该任务的上一条子任务完成时间和当前时间间隔,如果间隔时间太短说明有问题,等3秒后再执行
                                var carTaskAfter = _db.Queryable<WcsCarTasks>().First(m => m.IsDelete == false && m.CarTaskNo == valueTaskStr - 1
                                && m.CarNo == modDevice.PlcIdIP && m.TaskNo == carTask.TaskNo);
                                if (carTaskAfter != null)
                                {
                                    if (carTaskAfter.UpdateTime == null)//carTaskAfter.Status != TaskStatusEnum.Complete ||
                                    {
                                        Log.Error($"四向车第二条子任务反馈完成时间异常:{carTaskAfter.TaskNo}");
                                        Thread.Sleep(3000);
                                        break;
                                    }
                                    else
                                    {
                                        TimeSpan difference = DateTime.Now - Convert.ToDateTime(carTaskAfter.UpdateTime);
                                        double seconds = difference.TotalSeconds;
                                        if (seconds < 3)
                                        {
                                            Log.Error($"四向车第二条子任务反馈完成时间异常:{carTaskAfter.TaskNo}");
                                            Thread.Sleep(3000);
                                            break;
                                        }
                                    }
                                }
                                carTask.Status = TaskStatusEnum.Complete;
                                carTask.UpdateTime = DateTime.Now;
                                _db.Updateable(carTask).ExecuteCommand();
@@ -209,18 +234,18 @@
                                HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>());
                            }
                            //获取路径2的任务 下发
                            //carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing).OrderBy(m => m.CreateTime).First();
                            carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing && m.CarTaskNo != valueTaskStr).OrderBy(m => m.CreateTime).First();
                            carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing).OrderBy(m => m.CreateTime).First();
                            //carTaskNext = _db.Queryable<WcsCarTasks>().Where(m => m.IsDelete == false && m.TaskNo == carTask.TaskNo && m.CarNo == modDevice.PlcIdIP && m.Status <= TaskStatusEnum.Doing && m.CarTaskNo != valueTaskStr).OrderBy(m => m.CreateTime).First();
                            if (carTaskNext != null)
                            {
                                if (carTaskNext.CarTaskNo < valueTaskStr)
                                if (carTaskNext.CarTaskNo != null && carTaskNext.CarTaskNo < valueTaskStr)
                                {
                                    carTaskNext.Status = TaskStatusEnum.Complete;
                                    carTaskNext.UpdateTime = DateTime.Now;
                                    _db.Updateable(carTaskNext).ExecuteCommand();
                                    carTaskNext = null;
                                    Log.Error($"四向车第一条子任务没自动完成:{carTaskNext.TaskNo}");
                                    carTaskNext = null;
                                }
                            }
                            //总任务下没有其他未执行小车的任务 变更总任务信息
@@ -1425,11 +1450,11 @@
        {
            return;
        }
        if (_db.Queryable<WcsTask>().Any(s => s.EndLocate == modTask.EndLocate && s.IsDelete == false && s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.AGV ))
        var conveyList1 = new List<string>() { "B100101", "B030101" };//空托收集区储位
        if (_db.Queryable<WcsTask>().Any(s => s.EndLocate == modTask.EndLocate && s.IsDelete == false && s.Status == TaskStatusEnum.Doing && s.Type == PLCTypeEnum.AGV && !conveyList1.Contains(s.EndLocate)))
        {
            return; // 有目的位置一致且正在执行的任务
            return; // 有目的位置一致且正在执行的任务(不包含空托收集)
        }
        //下发AGV任务