IPC-610
2024-10-15 79ad6097cbe4b4d6cee66dd8ad9c3c1c8f2b5243
Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -64,12 +64,17 @@
                // 跺机空闲,获取出库任务、移库任务
                {
                    // 获取任务信息
                    var modTask = _db.Queryable<WcsTask>().OrderBy(m => m.CreateTime).OrderBy(m => m.Levels, OrderByType.Desc)
                    var modTask = _db.Queryable<WcsTask>().OrderBy(m => m.CreateTime).OrderBy(m => m.Levels, OrderByType.Asc)
                        .First(s => s.Status == TaskStatusEnum.Wait && (s.TaskType == TaskTypeEnum.Out || s.TaskType == TaskTypeEnum.Move)
                        && s.StartRoadway == modDevice.StationNum);
                    if (modTask == null)
                    {
                        break;
                    }
                    //判断出库锁定是否打开
                    if (PLCTaskAction.boOutLock)
                    {
                        break;//出库锁定打开则不执行出库任务
                    }
                    PlcTaskInfo taskInfo = new PlcTaskInfo();
@@ -498,7 +503,7 @@
                                                    // 根据任务号获取起始工位地址,根据起始工位地址获取LEDIP 推送到LED屏幕。
                                                    var taskModel = _db.Queryable<WcsTask>().First(w => w.TaskNo == modTask.TaskNo);
                                                    modDevice.LedIP = _db.Queryable<WcsDevice>().Where(w => w.StationNum == taskModel.StartLocate).Select(s => s.LedIP).First();
                                                    modDevice.LedIP = _db.Queryable<WcsDevice>().Where(w => w.StationNum == taskModel.EndLocate).Select(s => s.LedIP).First();
                                                    // led显示内容
                                                    LedDisplay(modDevice.LedIP, "工位:" + modDevice.StationNum, "出库中 ", "托盘号:" + modTask.PalletNo);
@@ -529,6 +534,7 @@
                                    // 改变任务状态
                                    modTask.Status = TaskStatusEnum.Complete;
                                    modTask.FinishDate = DateTime.Now;
                                    modTask.Levels = 999;
                                    _db.Updateable(modTask).ExecuteCommand();
                                    //下发任务日志
                                    HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
@@ -950,7 +956,6 @@
                break;
            case "330":
                {
                    // 写入任务 托盘移动 340
                    // 获取工位托盘码信息
@@ -967,6 +972,11 @@
                    {
                        // 此托盘没有对应的转移任务 led显示
                        break;
                    }
                    //判断入库锁定是否打开
                    if (PLCTaskAction.boEnterLock)
                    {
                        break;//入库锁定打开则不执行入库任务
                    }
                    // 获取巷道口入库工位
@@ -1279,7 +1289,7 @@
                        // 根据任务号获取起始工位地址,根据起始工位地址获取LEDIP 推送到LED屏幕。
                        var taskInfo = _db.Queryable<WcsTask>().First(w => w.TaskNo == modInsertTaskMonitor.TaskNo);
                        modDevice.LedIP = _db.Queryable<WcsDevice>().Where(w => w.StationNum == taskInfo.StartLocate).Select(s => s.LedIP).First();
                        modDevice.LedIP = _db.Queryable<WcsDevice>().Where(w => w.StationNum == taskInfo.EndLocate).Select(s => s.LedIP).First();
                        // led显示内容
                        LedDisplay(modDevice.LedIP, "到达工位:" + modDevice.StationNum, "出库完成 " + $"储位地址:{modInsertTaskMonitor.StartLocat}", "托盘号:" + palletVal);
@@ -1317,6 +1327,7 @@
                        // 改变任务状态
                        modTask.Status = TaskStatusEnum.Complete;
                        modTask.FinishDate = DateTime.Now;
                        modTask.Levels = 999;
                        _db.Updateable(modTask).ExecuteCommand();
                        HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
                        // 插入任务明细 
@@ -1359,7 +1370,7 @@
                        // 通知任务界面任务已存在更新 请更新界面
                        HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
                        // led显示内容
                        modDevice.LedIP = _db.Queryable<WcsDevice>().Where(w => w.StationNum == modTask.StartLocate).Select(s => s.LedIP).First();
                        modDevice.LedIP = _db.Queryable<WcsDevice>().Where(w => w.StationNum == modTask.EndLocate).Select(s => s.LedIP).First();
                        LedDisplay(modDevice.LedIP, "工位:" + modTask.StartLocate, $"拣选完成,托盘离开工位", "托盘号:" + modTask.PalletNo);
                    }
                    #endregion
@@ -1419,6 +1430,7 @@
                            // 改变任务状态
                            modTask.Status = TaskStatusEnum.Complete;
                            modTask.FinishDate = DateTime.Now;
                            modTask.Levels = 999;
                            _db.Updateable(modTask).ExecuteCommand();
                            HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>());
@@ -1793,6 +1805,23 @@
                                            // 将入库任务由正在执行改为正在执行
                                            taskModel.Status = TaskStatusEnum.Doing;
                                            _db.Updateable(taskModel).ExecuteCommand();
                                            // 插入任务明细
                                            var modInsertTaskMonitor = new WcsTaskMonitor()
                                            {
                                                TaskNo = TaskNo,
                                                PlcId = modDevice.Id,
                                                PlcName = modDevice.Text,
                                                InteractiveMsg = $"写入指令50:申请巷道成功",
                                                PalletNo = palletNo,
                                                Status = TaskStatusEnum.Complete,
                                                StartLocat = modDevice.StationNum,
                                                EndLocat = strMsg,
                                            };
                                            // 插入交互日志
                                            _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
                                            // 通知任务界面任务已存在更新 请更新界面
                                            HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
                                        }
                                    }
@@ -1871,6 +1900,23 @@
                                            // 将入库任务由正在执行改为正在执行
                                            taskModel.Status = TaskStatusEnum.Doing;
                                            _db.Updateable(taskModel).ExecuteCommand();
                                            // 插入任务明细
                                            var modInsertTaskMonitor = new WcsTaskMonitor()
                                            {
                                                TaskNo = TaskNo,
                                                PlcId = modDevice.Id,
                                                PlcName = modDevice.Text,
                                                InteractiveMsg = $"写入指令50:申请巷道成功",
                                                PalletNo = palletNo,
                                                Status = TaskStatusEnum.Complete,
                                                StartLocat = modDevice.StationNum,
                                                EndLocat = strMsg,
                                            };
                                            // 插入交互日志
                                            _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
                                            // 通知任务界面任务已存在更新 请更新界面
                                            HubUtil.PublicTaskMonitor(modInsertTaskMonitor.Adapt<WcsTaskMonitorOutput>());
                                        }
                                    }
                                }