Ver Fonte

入库任务完成;同步货位到历史表

gkj há 2 anos atrás
pai
commit
76671dea12

+ 5 - 0
WCS.WorkEngineering/Systems/SrmSystems.cs

@@ -287,6 +287,8 @@ namespace WCS.WorkEngineering.Systems
                                                                               && arrIn.Select(p => p.Data.TaskNumber).Contains(v.ID));
                     //按条件先后排序获取一条排序后第一条结果1.优先级2.所在楼层与本次优先执行楼层 TODO:待验证排序结果
                     var task = tasks.OrderByDescending(v => v.Priority).OrderByDescending(v => v.Floor == floor ? 1 : 0).First() ?? throw new KnownException($"{obj.Entity.Code}未找到入库任务", LogLevelEnum.High);
+                    WCS_TaskOld taskOld = db.Default.Queryable<WCS_TaskOld>().SplitTable(tabs => tabs.Take(2)).Where(v => v.ID == task.ID).OrderByDescending(v => v.AddTime).First();
+
                     //获取任务所有设备
                     station = arrIn.First(v => v.Data.TaskNumber == task.ID);
                     //获取当前货物巷道
@@ -298,6 +300,9 @@ namespace WCS.WorkEngineering.Systems
                     task.EditWho = "WCS";
                     db.Default.Updateable(task).ExecuteCommand();
                     task.AddWCS_TASK_DTL(db, station.Entity.Code, task.AddrTo, "任务下发堆垛机执行");
+                    //货位更新到历史表
+                    taskOld.AddrTo = $"{loc[0]}-{loc[1]}-{loc[2]}";
+                    db.Default.Updateable(taskOld).ExecuteCommand();
                     taskInfo = task;
                 });
 

+ 56 - 0
WCS.WorkEngineering/WebApi/Controllers/WcsController.cs

@@ -219,6 +219,62 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                 db.Default.Updateable(task).ExecuteCommand();
                                 task.CompleteOrCancelTasks(db);
                             }
+                            else if (task.Type == TaskType.EnterDepot)
+                            {
+                                SRes res = HandleTaskVerify(response, item, 99);
+                                if (res == null) continue;
+
+                                switch (task.Type)
+                                {
+                                    case TaskType.EnterDepot:
+                                        if (task.Status >= Entity.TaskStatus.Finish)
+                                        {
+                                            response.ResDataList.Add(new HandleTaskResponse()
+                                            {
+                                                IsSuccess = false,
+                                                TaskNo = item,
+                                                Message = $"只能完成未完成状态的任务",
+                                            });
+                                            continue;
+                                        }
+                                        if (task.AddrTo.Length < 6)
+                                        {
+                                            response.ResDataList.Add(new HandleTaskResponse()
+                                            {
+                                                IsSuccess = false,
+                                                TaskNo = item,
+                                                Message = $"只能完成已分配货位的任务",
+                                            });
+                                            continue;
+                                        }
+                                        break;                                                                            
+                                }
+
+                                SRes cancelRes = CarryTaskInfo(response, item, 99);
+                                if (cancelRes == null) continue;
+
+                                //找到对应的AGV任务
+                                var agv = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.ID == task.AgvTaskID && v.AgvStatus < AGVTaskStatus.MissionCompleted).SplitTable(v => v.Take(2)).First();
+                                if (agv != null)
+                                {
+                                    //if (!agv.AgvID.IsNullOrEmpty())
+                                    //{
+                                    //    var cancelTaskUpdateRes = CancelAgvTask(response, item, agv.AgvID);
+                                    //    if (cancelTaskUpdateRes == null) continue;
+                                    //}
+                                    agv.Status = AGVTaskStatus.MissionCompleted;
+                                    agv.AgvStatus = AGVTaskStatus.MissionCompleted;
+                                    db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                }
+                                //更新任务状态
+                                task.Status = Entity.TaskStatus.Finish;
+                                task.EedTime = DateTime.Now;
+                                task.EditWho = req.User;
+                                task.ManualRemarks = req.ManualRemarks;
+                                task.AddWCS_TASK_DTL(db, "未知", "任务完成");
+                                db.Default.Updateable(task).ExecuteCommand();
+                                task.CompleteOrCancelTasks(db);
+                            }
                             else
                             {
                                 response.ResDataList.Add(new HandleTaskResponse()