gkj 2 년 전
부모
커밋
ad9e45d23c
2개의 변경된 파일99개의 추가작업 그리고 19개의 파일을 삭제
  1. 1 1
      WCS.WorkEngineering/WebApi/Controllers/AgvController.cs
  2. 98 18
      WCS.WorkEngineering/WebApi/Controllers/WcsController.cs

+ 1 - 1
WCS.WorkEngineering/WebApi/Controllers/AgvController.cs

@@ -237,7 +237,7 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                 break;
 
                             case "cancel": //取消任务
-                                agvTask.AgvStatus = AGVTaskStatus.Cancel;
+                                //agvTask.AgvStatus = AGVTaskStatus.Cancel;
                                 break;
 
                             default:

+ 98 - 18
WCS.WorkEngineering/WebApi/Controllers/WcsController.cs

@@ -217,14 +217,103 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                         var task = db.Default.Queryable<WCS_TaskInfo>().Where(t => t.ID == item).First();
                         if (task != null)
                         {
-                            if (task.Type == TaskType.OutDepot && task.Floor == 1)
+                            if (task.Type == TaskType.OutDepot)
                             {
-                                task.Status = Entity.TaskStatus.Finish;
-                                task.EditWho = req.User;
-                                task.ManualRemarks = req.ManualRemarks;
-                                task.AddWCS_TASK_DTL(db, "未知", "手动完成任务");
-                                task.CompleteOrCancelTasks(db);
-                                db.Default.Updateable(task).ExecuteCommand();
+                                SRes res = new SRes();
+                                //验证wms是否能完成
+                                try
+                                {
+                                    res = WmsApi.HandleTaskVerify(new List<int>() { task.ID }, 99);
+                                }
+                                catch (Exception ex)
+                                {
+                                    response.ResDataList.Add(new HandleTaskResponse()
+                                    {
+                                        IsSuccess = false,
+                                        TaskNo = item,
+                                        Message = ex.Message,
+                                    });
+                                    return;
+                                }
+                                if (res.ResCode == Models.WMS.Response.ResponseStatusCodeEnum.Sucess)
+                                {
+                                    switch (task.Type)
+                                    {
+                                        case TaskType.OutDepot:
+                                            if (task.Status >= Entity.TaskStatus.Finish)
+                                            {
+                                                response.ResDataList.Add(new HandleTaskResponse()
+                                                {
+                                                    IsSuccess = false,
+                                                    TaskNo = item,
+                                                    Message = $"只能完成未完成状态的任务",
+                                                });
+                                                return;
+                                            }
+                                            break;
+                                    }
+
+                                    SRes finishRes = new SRes();
+                                    //完成任务
+                                    try
+                                    {
+                                        finishRes = WmsApi.CarryTaskInfo(new List<int>() { task.ID }, 99);
+                                    }
+                                    catch (Exception ex)
+                                    {
+                                        response.ResDataList.Add(new HandleTaskResponse()
+                                        {
+                                            IsSuccess = false,
+                                            TaskNo = item,
+                                            Message = ex.Message,
+                                        });
+                                        return;
+                                    }
+
+                                    if (finishRes.ResCode == Models.WMS.Response.ResponseStatusCodeEnum.Sucess)
+                                    {
+                                        //找到对应的AGV任务
+                                        var agv = db.Default.Queryable<WCS_AgvTaskInfo>().Where(v => v.ID == task.AgvTaskID).SplitTable(v => v.Take(2)).First();
+                                        if (agv != null)
+                                        {
+                                            agv.Status = AGVTaskStatus.MissionCompleted;
+                                            agv.AgvStatus = AGVTaskStatus.MissionCompleted;
+                                            db.Default.Updateable(agv).SplitTable().ExecuteCommand();
+                                        }
+                                        //更新任务状态
+                                        task.Status = Entity.TaskStatus.Finish;
+                                        task.EditTime = DateTime.Now;
+                                        task.EditWho = req.User;
+                                        task.ManualRemarks = req.ManualRemarks;
+                                        task.AddWCS_TASK_DTL(db, "未知", "任务完成");
+                                        db.Default.Updateable(task).ExecuteCommand();
+                                        task.CompleteOrCancelTasks(db);
+                                        response.ResDataList.Add(new HandleTaskResponse()
+                                        {
+                                            IsSuccess = true,
+                                            TaskNo = item,
+                                            Message = $"完成",
+                                        });
+                                    }
+                                    else
+                                    {
+                                        response.ResDataList.Add(new HandleTaskResponse()
+                                        {
+                                            IsSuccess = false,
+                                            TaskNo = item,
+                                            Message = $"完成任务失败,{finishRes.ResMsg}",
+                                        });
+                                    }                                   
+                                }
+                                else
+                                {
+                                    response.ResDataList.Add(new HandleTaskResponse()
+                                    {
+                                        IsSuccess = false,
+                                        TaskNo = item,
+                                        Message = $"完成任务失败"
+                                    });
+                                }
                             }
                             else
                             {
@@ -232,21 +321,12 @@ namespace WCS.WorkEngineering.WebApi.Controllers
                                 {
                                     IsSuccess = false,
                                     TaskNo = item,
-                                    Message = $"未实现当前任务的完成功能"
+                                    Message = $"未找到对应任务{item}"
                                 });
                             }
                         }
-                        else
-                        {
-                            response.ResDataList.Add(new HandleTaskResponse()
-                            {
-                                IsSuccess = false,
-                                TaskNo = item,
-                                Message = $"未找到对应任务{item}"
-                            });
-                        }
                     }
-                });
+                }); 
             }
             else if (req.Type == HandleTaskTypeEnum.重新下发AGV任务)
             {