1
wangxinhui
2025-07-19 334ecd210dbadba93c8ac7cf1c6255db999f226d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
using HslCommunication.WebSocket;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseController;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_Tasks;
 
namespace WIDESEAWCS_WCSServer.Controllers.Task
{
    [Route("api/Task")]
    [ApiController]
    public class TaskController : ApiBaseController<ITaskService, Dt_Task>
    {
        private readonly IHttpContextAccessor _httpContextAccessor;
        private readonly IRouterExtension _routerExtension;
        //private readonly WebSocketServer _webSocketServer;
 
        public TaskController(ITaskService service, IHttpContextAccessor httpContextAccessor, IRouterExtension routerExtension/*, WebSocketServer webSocketServer*/) : base(service)
        {
            _httpContextAccessor = httpContextAccessor;
            _routerExtension = routerExtension;
            //_webSocketServer = webSocketServer;
        }
 
        [HttpPost, Route("ReceiveTask"), AllowAnonymous]
        public WebResponseContent ReceiveWMSTask([FromBody] List<WMSTaskDTO> taskDTOs)
        {
            return Service.ReceiveWMSTask(taskDTOs);
        }
 
        [HttpPost, HttpGet, Route("RequestAssignLocation"), AllowAnonymous]
        public string? RequestAssignLocation(int taskNum, string roadwayNo)
        {
            return Service.RequestAssignLocation(taskNum, roadwayNo);
        }
 
        [HttpPost, HttpGet, Route("UpdateTaskExceptionMessage")]
        public WebResponseContent UpdateTaskExceptionMessage(int taskNum, string message)
        {
            return Service.UpdateTaskExceptionMessage(taskNum, message);
        }
 
        //[HttpPost, HttpGet, Route("UpdateTaskStatusToNext")]
        //public WebResponseContent UpdateTaskStatusToNext(int taskNum)
        //{
        //    return Service.UpdateTaskStatusToNext(taskNum);
        //}
 
        [HttpPost, HttpGet, Route("TaskStatusRecovery")]
        public WebResponseContent TaskStatusRecovery(int taskNum)
        {
            return Service.TaskStatusRecovery(taskNum);
        }
 
        [HttpPost, HttpGet, Route("RollbackTaskStatusToLast")]
        public WebResponseContent RollbackTaskStatusToLast(int taskNum)
        {
            return Service.RollbackTaskStatusToLast(taskNum);
        }
 
        /// <summary>
        /// 回复AGV安全信号
        /// </summary>
        /// <param name="taskNum"></param>
        /// <returns></returns>
        [HttpPost, HttpGet, Route("SendSecureReplyToAgv")]
        public WebResponseContent SendSecureReplyToAgv(int taskNum)
        {
            return Service.SendSecureReplyToAgv(taskNum);
        }
 
        [HttpPost, HttpGet, Route("GetRouteEndPoint"), AllowAnonymous]
        public WebResponseContent GetRouteEndPoint(string startPoint, int routeType)
        {
            return WebResponseContent.Instance.OK(data: _routerExtension.GetEndPoint(startPoint, routeType));
        }
        [HttpPost, HttpGet, Route("AgvCarrying"), AllowAnonymous]
        public WebResponseContent AgvCarrying(int row, int startColumn, int endColumn, int layer, int targetLayer)
        {
            return Service.AgvCarrying(row, startColumn, endColumn, layer, targetLayer);
        }
        /// <summary>
        /// 测试堆垛机出库
        /// </summary>
        [HttpPost, HttpGet, Route("SCOUT"), AllowAnonymous]
        public WebResponseContent SCCarrying(string sourceAddress, string roadWay, int taskType)
        {
            WMSTaskDTO taskDTO = new WMSTaskDTO()
            {
                Id = 1,
                SourceAddress = sourceAddress,
                TaskNum = DateTime.Now.ToString("mmss").ObjToInt(),
                PalletCode= roadWay+ DateTime.Now.ToString("mmss"),
                RoadWay = roadWay,
                TaskType = taskType,
                TaskStatus = TaskStatusEnum.New.ObjToInt(),
                TargetAddress = "",
                Grade = 0,
                WarehouseId = 1,
                PalletType = 1
            };
            return Service.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
        }
        /// <summary>
        /// 测试堆垛机入库
        /// </summary>
        [HttpPost, HttpGet, Route("SCIN"), AllowAnonymous]
        public WebResponseContent RequestWMSTaskSimple(string palletCode, string sourceAddress, string roadWay, int taskType = 0)
        {
            return Service.RequestWMSTaskSimple(palletCode,sourceAddress, roadWay, taskType);
        }
        //[HttpPost, HttpGet, Route("WebSocketPushMessage"), AllowAnonymous]
        //public WebResponseContent WebSocketPushMessage(string message)
        //{
        //    try
        //    {
        //         _webSocketServer.PublishAllClientPayload(message);
        //        return WebResponseContent.Instance.OK();
        //    }
        //    catch(Exception ex)
        //    {
        //        return WebResponseContent.Instance.Error(ex.Message);
        //    }
        //}
        [HttpPost, HttpGet, Route("RecWMSTaskCompleted"), AllowAnonymous]
        public WebResponseContent RecWMSTaskCompleted(int taskNum)
        {
            return Service.RecWMSTaskCompleted(taskNum);
        }
    }
}