From 6d2faa6e299bdfe545ee339269e64f2900229147 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期三, 16 七月 2025 17:29:26 +0800 Subject: [PATCH] 添加AGV实时状态反馈接口、看板获取AGV状态接口 --- api/AgvController.cs | 54 +++++++++++++---- api/ApiModel.cs | 28 +++++++++ core/WCSCore.cs | 35 ++++++++--- api/WmsController.cs | 33 ++++++++++- 4 files changed, 124 insertions(+), 26 deletions(-) diff --git a/api/AgvController.cs b/api/AgvController.cs index 8ea7831..62bd5cd 100644 --- a/api/AgvController.cs +++ b/api/AgvController.cs @@ -1,18 +1,23 @@ -锘縰sing HH.WCS.Mobox3.AnGang.core; -using HH.WCS.Mobox3.AnGang.dispatch; -using HH.WCS.Mobox3.AnGang.process; -using HH.WCS.Mobox3.AnGang.wms; -using Newtonsoft.Json; -using System.Collections.Generic; -using System.Reflection; -using System.Web.Http; -using static HH.WCS.Mobox3.AnGang.dispatch.NDC; +锘縰sing System.Collections.Generic; using System.Linq; -using HH.WCS.Mobox3.AnGang.util; - -using static HH.WCS.Mobox3.AnGang.api.ApiModel; +using System.Net; +using System.Reflection; using System.Text; using System.Web; +using System.Web.Http; + +using HH.WCS.Mobox3.AnGang.core; +using HH.WCS.Mobox3.AnGang.dispatch; +using HH.WCS.Mobox3.AnGang.process; +using HH.WCS.Mobox3.AnGang.util; +using HH.WCS.Mobox3.AnGang.wms; + +using NetSDKCS; + +using Newtonsoft.Json; + +using static HH.WCS.Mobox3.AnGang.api.ApiModel; +using static HH.WCS.Mobox3.AnGang.dispatch.NDC; namespace HH.WCS.Mobox3.AnGang.api { @@ -33,7 +38,30 @@ //LogRequestHeaders(); return GZRobot.orderStatusReport(model); } - + + [HttpPost] + [Route("agvRealtimeStateReport")] + public IHttpActionResult agvRealtimeStateReport(agvRealtimeStateReportInfo model) { + LogHelper.Info("agvRealtimeStateReport锛歊CS鍥借嚜AGV瀹炴椂鐘舵�鍥炴姤锛� + JsonConvert.SerializeObject(model), "HosttoagvTask"); + + var res = WCSCore.agvRealtimeStateReport(model); + //if (res == "offline") { + // //return NotFound(new EmptyGzResult()); + // return NotFound(); + //} + //else { + // //return Ok(new EmptyGzResult()); + // return Ok(); + //} + if (model == null) return NotFound(); + if (string.IsNullOrEmpty(res)) { + return BadRequest(); + } + else { + return Ok(); + } + } + /// <summary> /// AGV 涓庝骇绾胯繘琛屽畨鍏ㄤ氦浜� /// </summary> diff --git a/api/ApiModel.cs b/api/ApiModel.cs index ec2f874..464de7c 100644 --- a/api/ApiModel.cs +++ b/api/ApiModel.cs @@ -139,6 +139,30 @@ public string msg { get; set; } public int orderID { get; set; } } + + public class EmptyGzResult { + + } + + public class agvRealtimeStateReportInfo { + public int agvID { get; set; } + public int agvStatusID { get; set; } + public bool netConnected { get; set; } + public string agv_speed { get; set; } + public object node_information_of_traffic { get; set; } + public int dispatchTaskActive { get; set; } + public double position_x { get; set; } + public double position_y { get; set; } + public double angle { get; set; } + public double battery_percentage { get; set; } + public double safetyTriggered { get; set; } + public bool isBlocked { get; set; } + public bool faultHappened { get; set; } + public bool isCharging { get; set; } + public bool hang_agv { get; set; } + public string extroInfo1 { get; set; } + public string extroInfo2 { get; set; } + } } public class OtherModel { @@ -520,5 +544,9 @@ /// </summary> public string ext5 { get; set; } } + + public class KanbanAgvState { + public string AgvState { get; set; } + } } } diff --git a/api/WmsController.cs b/api/WmsController.cs index f36005b..9b13ddf 100644 --- a/api/WmsController.cs +++ b/api/WmsController.cs @@ -1,9 +1,15 @@ 锘�-using HH.WCS.Mobox3.AnGang.util; -using Newtonsoft.Json; using System.Collections.Generic; using System.Web.Http; + +using HH.WCS.Mobox3.AnGang.core; +using HH.WCS.Mobox3.AnGang.util; + +using Newtonsoft.Json; + using static HH.WCS.Mobox3.AnGang.api.ApiModel; +using static HH.WCS.Mobox3.AnGang.api.OtherModel; +using static HH.WCS.Mobox3.AnGang.dispatch.NDC; namespace HH.WCS.Mobox3.AnGang.api { @@ -13,6 +19,27 @@ [RoutePrefix("api")] public class WmsController : System.Web.Http.ApiController { - + [HttpGet] + [Route("GetKanbanAgvState")] + public KanbanAgvState GetKanbanAgvState() { + LogHelper.Info("瑙﹀彂API锛欸etKanbanAgvState锛氱湅鏉胯幏鍙朅GV鐘舵�", "API"); + + var res = WCSCore.AgvState; + var resName = string.Empty; + switch (res) { + case "in_system": resName = "绯荤粺鍐�; break; + case "out_system": resName = "绯荤粺澶�; break; + case "online": resName = "鍦ㄧ嚎"; break; + case "offline": resName = "绂荤嚎"; break; + case "ready": resName = "灏辩华"; break; + case "not_ready": resName = "鏈氨缁�; break; + case "in_dispatc": resName = "璋冨害涓�; break; + case "out_dispatch": resName = "璋冨害澶�; break; + case "running": resName = "杩愯涓�; break; + case "not_running": resName = "鏈繍琛�; break; + default: resName = "鏈煡鐘舵�"; break; + } + return new KanbanAgvState { AgvState = resName }; + } } } diff --git a/core/WCSCore.cs b/core/WCSCore.cs index dbc691f..9ca3c44 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -14,8 +14,9 @@ namespace HH.WCS.Mobox3.AnGang.core { - internal class WCSCore - { + internal class WCSCore { + public static string AgvState = string.Empty; + public static ReturnResult OperateAgvTaskStatus(AgvTaskState model) { var result = new ReturnResult(); try { @@ -368,22 +369,18 @@ /// <summary> /// 浠诲姟鍒嗗彂锛屾牴鎹皟搴︾被鍨嬪彂缁欎笉鍚岀殑璋冨害绯荤粺 /// </summary> - internal static void Dispatch() - { + internal static void Dispatch() { //鏌ヨ浠诲姟 //鑾峰彇鎵�湁绛夊緟鐨勪换鍔� var list = WCSHelper.GetWaitingTaskList(); LogHelper.Info("绛夊緟浠诲姟淇℃伅" + JsonConvert.SerializeObject(list), "API"); - if (list.Count > 0) - { - list.ForEach(task => - { + if (list.Count > 0) { + list.ForEach(task => { //浣跨敤鑷畾涔変换鍔℃帹閫� TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧 }); } - else - { + else { LogHelper.Info("鏆傛棤浠诲姟"); } } @@ -397,5 +394,23 @@ // 鐩墠璇ラ」鐩病鏈夌珯鍙板畨鍏ㄤ氦浜掔殑鍔熻兘 return gzResult; } + + public static string agvRealtimeStateReport(agvRealtimeStateReportInfo model) { + var res = string.Empty; + switch (model.agvStatusID) { + case 1: res = "in_system"; break; + case 2: res = "out_system"; break; + case 3: res = "online"; break; + case 4: res = "offline"; break; + case 5: res = "ready"; break; + case 6: res = "not_ready"; break; + case 7: res = "in_dispatch"; break; + case 8: res = "out_dispatch"; break; + case 9: res = "running"; break; + case 10: res = "not_running"; break; + } + AgvState = res; + return res; + } } } -- Gitblit v1.9.1