diff --git a/WcsMain/ApiClient/AGV/AGVWebApiAction.cs b/WcsMain/ApiClient/AGV/AGVWebApiAction.cs index 3565fd6..34f44d9 100644 --- a/WcsMain/ApiClient/AGV/AGVWebApiAction.cs +++ b/WcsMain/ApiClient/AGV/AGVWebApiAction.cs @@ -4,6 +4,7 @@ using WcsMain.Constant; using WcsMain.DataBase.TableEntity; using WcsMain.Constant.WcsAttribute.AutoFacAttribute; using WcsMain.Constant.ExtendMethod; +using System.Collections.Generic; namespace WcsMain.ApiClient.AGV; @@ -21,52 +22,73 @@ public class AGVWebApiAction(AGVBaseWebApi webApiPost) /// public string Send_NO_VERIFY_BUCKET_MOVE(AppWmsTask wmsTask) { - AGVRequestLayout> request = new() + //AGVRequestLayout> request = new() + //{ + // Header = new() + // { + // AppKey = ApplicationBaseConfig.APP_KEY, + // AppSecret = ApplicationBaseConfig.APP_SECRET, + // RequestId = wmsTask.TaskId, + // TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + // version = "2.9" + // }, + // Body = new() + // { + // RobotJobId = wmsTask.TaskId, + // WareHouseId = 100, + // RobotJobGroupId = wmsTask.TaskId, + // Sequence = 1, + // RobotJobGroupNum = 1, + // JobPriority = 1, + // JobProorytyType = 0, + // JobType = "NO_VERIFY_BUCKET_MOVE", + // JobData = new() + // { + // StartPoint = wmsTask.Origin, + // StartPointName = null, + // WorkFaces = "0", + // EndArea = wmsTask.Destination, + // EndPoint = wmsTask.Destination, + // EndPointName = null, + // BucketTypeCode = "00", + // LetDownFlag = 2, + // } + // } + //}; + AGVTaskRequest request = new() { - Header = new() + RobotJobId = wmsTask.TaskId, + WareHouseId = 1, + RobotJobGroupNum = 1, + JobPriority = 1, + JobProorytyType = 0, + JobType = "NO_VERIFY_BUCKET_MOVE", + OrderSource = "BK", + JobData = new() { - AppKey = ApplicationBaseConfig.APP_KEY, - AppSecret = ApplicationBaseConfig.APP_SECRET, - RequestId = wmsTask.TaskId, - TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), - version = "2.9" - }, - Body = new() - { - RobotJobId = wmsTask.TaskId, - WareHouseId = 100, - RobotJobGroupId = wmsTask.TaskId, - Sequence = 1, - RobotJobGroupNum = 1, - JobPriority = 1, - JobProorytyType = 0, - JobType = "NO_VERIFY_BUCKET_MOVE", - JobData = new() - { - StartPoint = wmsTask.Origin, - StartPointName = null, - WorkFaces = "0", - EndArea = wmsTask.Destination, - EndPoint = wmsTask.Destination, - EndPointName = null, - BucketTypeCode = "00", - LetDownFlag = 2, - } + StartPoint = wmsTask.Origin, + StartPointName = null, + WorkFaces = "0", + EndArea = wmsTask.Destination, + EndPoint = wmsTask.Destination, + EndPointName = null, + BucketTypeCode = "TP", + LetDownFlag = 2, } }; - var response = webApiPost.HttpPost>, AGVResponseLayout>(request, CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? ""); + var response = webApiPost.HttpPost>, AGVResponseBody>> ([request], CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? ""); var responseData = response.ResponseEntity; if (!response.IsSend || responseData == null) { return "请求失败,网络故障"; } - if (responseData.Body!.Success == true && responseData.Body!.Code?.ToLower() == "success") + if (responseData.Success == true && responseData.Code?.ToLower() == "success") { // 发送成功 return string.Empty; } - return responseData.Body.Message ?? "请求失败,未知原因"; + return responseData.Message ?? "请求失败,未知原因"; } /// @@ -76,54 +98,76 @@ public class AGVWebApiAction(AGVBaseWebApi webApiPost) /// /// /// - public string Send_AGV_TASK(string? taskId, string? origin, string? destination) + public string Send_AGV_TASK(string? taskId, string? origin, string? destination, int needOut = 0) { - AGVRequestLayout> request = new() + //AGVRequestLayout> request = new() + //{ + // Header = new() + // { + // AppKey = ApplicationBaseConfig.APP_KEY, + // AppSecret = ApplicationBaseConfig.APP_SECRET, + // RequestId = taskId, + // TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), + // version = "2.9" + // }, + // Body = new() + // { + // RobotJobId = taskId, + // WareHouseId = 100, + // RobotJobGroupId = taskId, + // Sequence = 1, + // RobotJobGroupNum = 1, + // JobPriority = 1, + // JobProorytyType = 0, + // JobType = "NO_VERIFY_BUCKET_MOVE", + // JobData = new() + // { + // StartPoint = origin, + // StartPointName = null, + // WorkFaces = "0", + // EndArea = destination, + // EndPoint = destination, + // EndPointName = null, + // BucketTypeCode = "00", + // LetDownFlag = 2, + // } + // } + //}; + AGVTaskRequest request = new() { - Header = new() + RobotJobId = taskId, + WareHouseId = 1, + RobotJobGroupNum = 1, + JobPriority = 1, + JobProorytyType = 0, + JobType = "NO_VERIFY_BUCKET_MOVE", + OrderSource = "BK", + JobData = new() { - AppKey = ApplicationBaseConfig.APP_KEY, - AppSecret = ApplicationBaseConfig.APP_SECRET, - RequestId = taskId, - TimeStamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), - version = "2.9" - }, - Body = new() - { - RobotJobId = taskId, - WareHouseId = 100, - RobotJobGroupId = taskId, - Sequence = 1, - RobotJobGroupNum = 1, - JobPriority = 1, - JobProorytyType = 0, - JobType = "NO_VERIFY_BUCKET_MOVE", - JobData = new() - { - StartPoint = origin, - StartPointName = null, - WorkFaces = "0", - EndArea = destination, - EndPoint = destination, - EndPointName = null, - BucketTypeCode = "00", - LetDownFlag = 2, - } + StartPoint = origin, + StartPointName = null, + WorkFaces = "0", + EndPoint = destination, + EndPointName = null, + BucketTypeCode = "TP", + LetDownFlag = 2, + NeedOut = needOut } }; - var response = webApiPost.HttpPost>, AGVResponseLayout>(request, CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? ""); + + var response = webApiPost.HttpPost>, AGVResponseBody>>([request], CommonData.AppApiBaseInfos.GetAddress("AGV_NO_VERIFY_BUCKET_MOVE") ?? ""); var responseData = response.ResponseEntity; if (!response.IsSend || responseData == null) { return "请求失败,网络故障"; } - if (responseData.Body!.Success == true && responseData.Body!.Code?.ToLower() == "success") + if (responseData.Success == true && responseData.Code?.ToLower() == "success") { // 发送成功 return string.Empty; } - return responseData.Body.Message ?? "请求失败,未知原因"; + return responseData.Message ?? "请求失败,未知原因"; } diff --git a/WcsMain/ApiClient/AGV/Dto/AGVBucketMove.cs b/WcsMain/ApiClient/AGV/Dto/AGVBucketMove.cs index 98a81eb..627b379 100644 --- a/WcsMain/ApiClient/AGV/Dto/AGVBucketMove.cs +++ b/WcsMain/ApiClient/AGV/Dto/AGVBucketMove.cs @@ -46,7 +46,7 @@ public class AGVBucketMove /// /// 货架类型编码 /// - [JsonProperty("buckTypeCode")] + [JsonProperty("bucketTypeCode")] public string? BucketTypeCode { get; set; } /// diff --git a/WcsMain/ApiClient/AGV/Dto/AGVResponseLayout.cs b/WcsMain/ApiClient/AGV/Dto/AGVResponseLayout.cs index 262a43b..7c3cb0d 100644 --- a/WcsMain/ApiClient/AGV/Dto/AGVResponseLayout.cs +++ b/WcsMain/ApiClient/AGV/Dto/AGVResponseLayout.cs @@ -57,7 +57,7 @@ public class AGVResponseHeader } - +// {"code":"ERR_PARTIAL_FAILURE","message":"Partial failure","success":false,"data":[{"code":"ERR_ILLEGAL_WHI","message":"ERR_ILLEGAL_WHI","robotJobId":"1731831975323001000"}]} /// /// AGV 响应体 /// diff --git a/WcsMain/ApiClient/AGV/Dto/AGVTaskRequest.cs b/WcsMain/ApiClient/AGV/Dto/AGVTaskRequest.cs index 986364d..5516ba7 100644 --- a/WcsMain/ApiClient/AGV/Dto/AGVTaskRequest.cs +++ b/WcsMain/ApiClient/AGV/Dto/AGVTaskRequest.cs @@ -97,6 +97,12 @@ public class AGVTaskRequest where T : class, new() [JsonProperty("jobType")] public string? JobType { get; set; } + /// + /// 订单来源 + /// + [JsonProperty("orderSource")] + public string? OrderSource { get; set; } + /// /// 任务数据 /// diff --git a/WcsMain/ApiClient/AGV/Dto/AGVTaskResponse.cs b/WcsMain/ApiClient/AGV/Dto/AGVTaskResponse.cs index 4d7789c..8897374 100644 --- a/WcsMain/ApiClient/AGV/Dto/AGVTaskResponse.cs +++ b/WcsMain/ApiClient/AGV/Dto/AGVTaskResponse.cs @@ -25,5 +25,5 @@ public class AGVTaskResponse [JsonProperty("robotJobId")] public string? RobotJobId { get; set; } - + // {"code":"ERR_PARTIAL_FAILURE","message":"Partial failure","success":false,"data":[{"code":"ERR_ILLEGAL_WHI","message":"ERR_ILLEGAL_WHI","robotJobId":"1731831975323001000"}]} } diff --git a/WcsMain/ApiServe/Dto/AGV/AGVRequestBodyLayout.cs b/WcsMain/ApiServe/Dto/AGV/AGVRequestBodyLayout.cs index e0343be..66244e9 100644 --- a/WcsMain/ApiServe/Dto/AGV/AGVRequestBodyLayout.cs +++ b/WcsMain/ApiServe/Dto/AGV/AGVRequestBodyLayout.cs @@ -7,7 +7,20 @@ namespace WcsMain.ApiServe.Dto.AGV; /// public class AGVRequestBodyLayout { + + /// + /// 数据 + /// + [JsonPropertyName("event")] + public AGVRequestBodyDataLayout? Event { get; set; } + + +} + + +public class AGVRequestBodyDataLayout +{ /// /// 上游任务号 /// @@ -18,7 +31,7 @@ public class AGVRequestBodyLayout /// 仓库编号 /// [JsonPropertyName("warehouseId")] - public string? WarehouseId { get; set; } + public int? WarehouseId { get; set; } /// /// 快仓系统内部任务号 @@ -44,6 +57,4 @@ public class AGVRequestBodyLayout [JsonPropertyName("jobData")] public T? JobData { get; set; } - - } diff --git a/WcsMain/ApiServe/Service/AGVService/AGVService.cs b/WcsMain/ApiServe/Service/AGVService/AGVService.cs index 7e2b7cd..483ce98 100644 --- a/WcsMain/ApiServe/Service/AGVService/AGVService.cs +++ b/WcsMain/ApiServe/Service/AGVService/AGVService.cs @@ -26,8 +26,8 @@ public class AGVService(AppWmsTaskDao wmsTaskDao, WCSTaskExecuteEvent taskExecut Body = new() { Code = "ERROR", Success = false, Message = "Body 未能正确解析" } }; } - string? wmsTaskId = bodyData.RobotJobId; // 任务号 - string? status = bodyData.State; // 状态 + string? wmsTaskId = bodyData.Event?.RobotJobId; // 任务号 + string? status = bodyData.Event?.State; // 状态 if(status == default || wmsTaskId == default) { return new() diff --git a/WcsMain/CirculationJob/Stacker/ExecuteWmsTask.cs b/WcsMain/CirculationJob/Stacker/ExecuteWmsTask.cs index eb9908f..88a58fb 100644 --- a/WcsMain/CirculationJob/Stacker/ExecuteWmsTask.cs +++ b/WcsMain/CirculationJob/Stacker/ExecuteWmsTask.cs @@ -86,11 +86,15 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta /// private void ExecuteInTask(AppWmsTask wmsTask) { + string? midPoint = wmsTask.MidPoint; if (string.IsNullOrEmpty(wmsTask.Origin)) return; - string? midPoint = GetEmptyInLift(wmsTask.Destination); + if (string.IsNullOrEmpty(midPoint)) + { + midPoint = GetEmptyInLift(wmsTask.Destination); + } if (string.IsNullOrEmpty(midPoint)) return; // 没有可用的站台 /* 发送AGV 搬运任务 */ - string errText = agvAction.Send_AGV_TASK(wmsTask.TaskId, wmsTask.Origin, midPoint); + string errText = agvAction.Send_AGV_TASK(wmsTask.TaskId, wmsTask.Origin, midPoint, 1); if (!string.IsNullOrEmpty(errText)) { ConsoleLog.Warning($"【警告】入库请求AGV搬运失败,任务号:{wmsTask.TaskId},异常信息:{errText}"); @@ -161,7 +165,7 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta (string errText, short model, short allowAction, short errCode, string code) = stackerConveyOperation.GetLiftInfo(liftInfo.LiftId ?? ""); if (!string.IsNullOrEmpty(errText)) { - ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}"); + //ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}"); continue; } if (model != 2 || allowAction != (short)TrueFalseEnum.TRUE || errCode != 0) continue; // 不满足执行条件 @@ -171,7 +175,7 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta var task = tasks.First(); if (string.IsNullOrEmpty(task.Destination)) continue; /* 下发任务 */ - string agvErrText = agvAction.Send_AGV_TASK(task.TaskId, task.MidPoint, task.Destination); + string agvErrText = agvAction.Send_AGV_TASK(task.TaskId, GetAgvNo(task.MidPoint), task.Destination); if (!string.IsNullOrEmpty(agvErrText)) { ConsoleLog.Warning($"【警告】AGV出库任务请求AGV服务失败,任务号:{task.TaskId},异常信息:{agvErrText}"); @@ -201,7 +205,7 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta (string errText, short model, short allowAction, short errCode, string code) = stackerConveyOperation.GetLiftInfo(liftInfo.LiftId ?? ""); if (!string.IsNullOrEmpty(errText)) { - ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}"); + //ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}"); continue; } if (model != 1 || allowAction != (short)TrueFalseEnum.TRUE || errCode != 0) continue; @@ -239,7 +243,7 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta (string errText, short model, short allowAction, short errCode, string code) = stackerConveyOperation.GetLiftInfo(liftInfo.LiftId ?? ""); if (!string.IsNullOrEmpty(errText)) { - ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}"); + //ConsoleLog.Warning($"【警告】提升机站台信息获取失败,异常信息:{errText}"); continue; } if (model != 2 || allowAction != (short)TrueFalseEnum.FALSE || errCode != 0) continue; @@ -264,4 +268,15 @@ public class ExecuteWmsTask(AppWmsTaskDao wmsTaskDao, StackerConveyOperation sta } + + private string? GetAgvNo(string? lift) + { + List? liftInfos = liftInfoDao.Query(new() { Status = (int)TrueFalseEnum.TRUE }); + if (liftInfos == default || liftInfos.Count < 1) return default; + AppLiftInfo? appLiftInfo = liftInfos.Find(f => f.Tag!.Contains(lift!)); + if (appLiftInfo == null) return default; + return appLiftInfo.Tag?.Split(',')[1]; + } + + } diff --git a/WcsMain/Properties/PublishProfiles/FolderProfile2.pubxml.user b/WcsMain/Properties/PublishProfiles/FolderProfile2.pubxml.user index 120e1d3..66e4029 100644 --- a/WcsMain/Properties/PublishProfiles/FolderProfile2.pubxml.user +++ b/WcsMain/Properties/PublishProfiles/FolderProfile2.pubxml.user @@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121. <_PublishTargetUrl>F:\A开发项目\A菲达宝开项目\2024-08_上汽试制仓\应用程序\WcsService\WcsMain\bin\Release\net8.0\publish\ - True|2024-11-18T12:59:50.6846634Z||;True|2024-11-16T14:31:14.2653894+08:00||;True|2024-11-16T14:16:17.4271635+08:00||;True|2024-11-16T14:16:08.1284507+08:00||;True|2024-11-16T14:08:02.8639352+08:00||;True|2024-11-16T14:07:06.6785776+08:00||;True|2024-11-16T13:14:33.8282571+08:00||;True|2024-11-16T13:14:09.9233077+08:00||;True|2024-11-16T12:49:45.5891890+08:00||;True|2024-11-16T12:19:05.5997384+08:00||;True|2024-11-16T11:49:43.2660430+08:00||;True|2024-11-16T11:49:12.7318514+08:00||;True|2024-11-16T11:43:41.8128931+08:00||;True|2024-11-16T10:39:25.1387254+08:00||;True|2024-11-16T10:24:19.4879139+08:00||;True|2024-11-15T17:47:10.4630939+08:00||;True|2024-11-15T17:42:25.6985733+08:00||;True|2024-11-15T17:39:43.9409305+08:00||;True|2024-11-15T17:26:18.2886475+08:00||;True|2024-11-15T17:23:05.3112513+08:00||;True|2024-11-15T17:16:40.2960771+08:00||;True|2024-11-15T17:14:12.3416383+08:00||;True|2024-11-15T17:09:43.2642034+08:00||;True|2024-11-15T17:05:04.4694932+08:00||;False|2024-11-15T17:04:34.2335564+08:00||;False|2024-11-15T17:04:12.5281280+08:00||;True|2024-11-15T17:01:49.4325408+08:00||;False|2024-11-15T17:01:29.1872712+08:00||;True|2024-11-15T16:00:18.8617729+08:00||;True|2024-11-15T15:56:13.9285180+08:00||;True|2024-11-15T15:50:53.6121456+08:00||;True|2024-11-15T15:17:41.0508047+08:00||;True|2024-11-15T13:50:06.8021767+08:00||;True|2024-11-15T13:17:48.2695650+08:00||;True|2023-12-21T15:04:28.6290873+08:00||;True|2023-12-21T14:59:03.4454135+08:00||;True|2023-12-21T14:51:08.6690406+08:00||;True|2023-12-21T14:26:42.6801144+08:00||;False|2023-12-21T14:26:14.3256943+08:00||;True|2023-12-21T14:13:42.5511801+08:00||;True|2023-12-21T13:56:38.5871005+08:00||;True|2023-12-19T12:19:57.9900187+08:00||;True|2023-12-19T11:53:33.6930379+08:00||;True|2023-12-17T12:51:32.6510827+08:00||;False|2023-12-17T12:49:32.9022541+08:00||; + True|2024-11-20T09:08:23.7162943Z||;True|2024-11-20T16:54:01.3629057+08:00||;True|2024-11-20T16:40:49.6894280+08:00||;True|2024-11-20T16:37:47.3670812+08:00||;False|2024-11-20T16:37:04.0777763+08:00||;True|2024-11-20T16:25:26.3145915+08:00||;True|2024-11-20T16:10:13.7558526+08:00||;True|2024-11-20T16:07:37.8681228+08:00||;True|2024-11-20T15:55:28.7196074+08:00||;True|2024-11-20T15:52:40.6653904+08:00||;True|2024-11-20T15:30:21.5138564+08:00||;True|2024-11-20T15:24:40.6286995+08:00||;True|2024-11-18T21:16:47.1821173+08:00||;True|2024-11-18T21:14:40.1209255+08:00||;True|2024-11-18T21:11:32.0010536+08:00||;True|2024-11-18T21:10:56.2142485+08:00||;True|2024-11-18T20:59:50.6846634+08:00||;True|2024-11-16T14:31:14.2653894+08:00||;True|2024-11-16T14:16:17.4271635+08:00||;True|2024-11-16T14:16:08.1284507+08:00||;True|2024-11-16T14:08:02.8639352+08:00||;True|2024-11-16T14:07:06.6785776+08:00||;True|2024-11-16T13:14:33.8282571+08:00||;True|2024-11-16T13:14:09.9233077+08:00||;True|2024-11-16T12:49:45.5891890+08:00||;True|2024-11-16T12:19:05.5997384+08:00||;True|2024-11-16T11:49:43.2660430+08:00||;True|2024-11-16T11:49:12.7318514+08:00||;True|2024-11-16T11:43:41.8128931+08:00||;True|2024-11-16T10:39:25.1387254+08:00||;True|2024-11-16T10:24:19.4879139+08:00||;True|2024-11-15T17:47:10.4630939+08:00||;True|2024-11-15T17:42:25.6985733+08:00||;True|2024-11-15T17:39:43.9409305+08:00||;True|2024-11-15T17:26:18.2886475+08:00||;True|2024-11-15T17:23:05.3112513+08:00||;True|2024-11-15T17:16:40.2960771+08:00||;True|2024-11-15T17:14:12.3416383+08:00||;True|2024-11-15T17:09:43.2642034+08:00||;True|2024-11-15T17:05:04.4694932+08:00||;False|2024-11-15T17:04:34.2335564+08:00||;False|2024-11-15T17:04:12.5281280+08:00||;True|2024-11-15T17:01:49.4325408+08:00||;False|2024-11-15T17:01:29.1872712+08:00||;True|2024-11-15T16:00:18.8617729+08:00||;True|2024-11-15T15:56:13.9285180+08:00||;True|2024-11-15T15:50:53.6121456+08:00||;True|2024-11-15T15:17:41.0508047+08:00||;True|2024-11-15T13:50:06.8021767+08:00||;True|2024-11-15T13:17:48.2695650+08:00||;True|2023-12-21T15:04:28.6290873+08:00||;True|2023-12-21T14:59:03.4454135+08:00||;True|2023-12-21T14:51:08.6690406+08:00||;True|2023-12-21T14:26:42.6801144+08:00||;False|2023-12-21T14:26:14.3256943+08:00||;True|2023-12-21T14:13:42.5511801+08:00||;True|2023-12-21T13:56:38.5871005+08:00||;True|2023-12-19T12:19:57.9900187+08:00||;True|2023-12-19T11:53:33.6930379+08:00||;True|2023-12-17T12:51:32.6510827+08:00||;False|2023-12-17T12:49:32.9022541+08:00||; \ No newline at end of file