kazelee
2 天以前 6d2faa6e299bdfe545ee339269e64f2900229147
添加AGV实时状态反馈接口、看板获取AGV状态接口
4个文件已修改
150 ■■■■ 已修改文件
api/AgvController.cs 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/ApiModel.cs 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/WmsController.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
core/WCSCore.cs 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/AgvController.cs
@@ -1,18 +1,23 @@
using 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;
using 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:RCS国自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>
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; }
        }
    }
}
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:GetKanbanAgvState:看板获取AGV状态", "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 };
        }
    }
}
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;
        }
    }
}