wangxinhui
2025-12-29 d0cc37c3c11859cc55f30624692dca55be2b8a32
ÏîÄ¿´úÂë/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;
@@ -277,6 +278,10 @@
                                _taskService.UpdateTask(task, TaskStatusEnum.AGV_Finish);
                                PutFinish(oldAddress, task.TaskNum);
                            }
                            else if (task.TaskType == TaskTypeEnum.WFBLMYLBackInbound.ObjToInt() || task.TaskType == TaskTypeEnum.WFBYLInbound.ObjToInt())
                            {
                                _taskService.TaskCompleted(task.TaskNum);
                            }
                            else
                            {
                                task.CurrentAddress = dt_Station.StationCode;
@@ -510,7 +515,7 @@
        /// <summary>
        /// èŽ·å–æ¡æž¶æ”¾æ–™ä¿¡å·
        /// </summary>
        public W_TrussCartonDB GetCartonPut(string StationCode)
        private W_TrussCartonDB GetCartonPut(string StationCode)
        {
            switch (StationCode)
            {
@@ -533,7 +538,7 @@
        /// <summary>
        /// èŽ·å–æ¡æž¶è¯·æ±‚ä¿¡å·
        /// </summary>
        public W_TrussCartonDB GetCartonRequest(string StationCode)
        private W_TrussCartonDB GetCartonRequest(string StationCode)
        {
            switch (StationCode)
            {
@@ -557,7 +562,7 @@
        /// <summary>
        /// èŽ·å–æ¡æž¶è¿›å…¥ä¿¡å·
        /// </summary>
        public R_TrussCartonDB GetCarton(string StationCode)
        private R_TrussCartonDB GetCarton(string StationCode)
        {
            switch (StationCode)
            {
@@ -713,5 +718,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);
            }
        }
    }
}