wangxinhui
10 天以前 834294889ab62bafaf034b1b87c2ead961c33476
ÏîÄ¿´úÂë/WCS/WCSServices/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs
@@ -5,6 +5,7 @@
using System.Text.RegularExpressions;
using WIDESEA_DTO.Agv;
using WIDESEA_External.Model;
using WIDESEAWCS_Common.APIEnum;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.Enums;
@@ -713,5 +714,79 @@
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
        /// <summary>
        /// AGV确认完成接口(取放)
        /// </summary>
        /// <param name="code"></param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("AGVFinish"), AllowAnonymous]
        public WebResponseContent AGVFinish(string address,int taskNum)
        {
            try
            {
                Dt_Task task = _taskRepository.QueryFirst(x=>x.TaskNum==taskNum && x.DeviceCode=="AGV");
                if (task==null)
                {
                    return WebResponseContent.Instance.Error($"{taskNum}AGV任务不存在");
                }
                //获取对应的坐标点
                Dt_StationManger stationManger = _stationMangerRepository.QueryFirst(x=>x.AGVStationCode== address);
                if (stationManger==null)
                {
                    return WebResponseContent.Instance.Error($"{address}AGV地址编号不存在");
                }
                if (task.TaskState == TaskStatusEnum.AGV_Executing.ObjToInt())//取货
                {
                    if (task.CurrentAddress != stationManger.StationCode)
                    {
                        return WebResponseContent.Instance.Error($"{taskNum}AGV任务取货地址编号不是{address}");
                    }
                    AgvFinishDTO agvFinishDTO = new AgvFinishDTO()
                    {
                        ReceiveTaskID = task.TaskNum.ToString(),
                        Variables = new List<PointDetail>()
                        {
                            new PointDetail()
                            {
                                Code="isPick",
                                Value="true"
                            }
                        }
                    };
                    //发送AGV完成通知
                    WebResponseContent content = _taskService.AGVFinish(agvFinishDTO);
                    if (!content.Status)
                        throw new Exception(content.Message);
                }
                else//放货
                {
                    if (task.NextAddress != stationManger.StationCode)
                    {
                        return WebResponseContent.Instance.Error($"{taskNum}AGV任务放货地址编号不是{address}");
                    }
                    AgvFinishDTO agvFinishDTO = new AgvFinishDTO()
                    {
                        ReceiveTaskID = task.TaskNum.ToString(),
                        Variables = new List<PointDetail>()
                        {
                            new PointDetail()
                            {
                                Code="isDown",
                                Value="true"
                            }
                        }
                    };
                    //发送AGV完成通知
                    WebResponseContent content = _taskService.AGVFinish(agvFinishDTO);
                    if (!content.Status)
                        throw new Exception(content.Message);
                }
                return WebResponseContent.Instance.OK();
            }
            catch (Exception ex)
            {
                return WebResponseContent.Instance.Error(ex.Message);
            }
        }
    }
}