kazelee
5 天以前 656f90b301ba307c909de4ee94b88af817adf0d8
dispatch/GZRobot.cs
@@ -1,11 +1,17 @@
using System;
using System.Collections.Generic;
using System.IdentityModel.Protocols.WSTrust;
using System.Linq;
using System.Security.Policy;
using System.Threading.Tasks;
using HH.WCS.Mobox3.AnGang.util;
using HH.WCS.Mobox3.AnGang.core;
using HH.WCS.Mobox3.AnGang.models;
using HH.WCS.Mobox3.AnGang.util;
using Newtonsoft.Json;
using static System.Net.WebRequestMethods;
using static HH.WCS.Mobox3.AnGang.api.ApiModel;
namespace HH.WCS.Mobox3.AnGang.dispatch {
@@ -26,7 +32,8 @@
            var result = apiHelper.Post(baseUrl + "api/engine/tasks/iostates/", JsonConvert.SerializeObject(data));
            var dataResult = JsonConvert.DeserializeObject<gzResult<IOStatesInfoResult>>(result);
        }
        // DOC 1.   创建订单 WMS->RCS
        public static int CreateOrder(string taskNo, int priority, string param, string ts = "churuku", string created_user = "hanhe") {
            LogHelper.Info($"CreateOrder参数信息:taskNo:{taskNo},priority:{priority},param:{param},ts:{ts},created_user:{created_user}", "API");
            var msg = "";
@@ -40,7 +47,14 @@
            if (response != "") {
                try {
                    var dataResult = JsonConvert.DeserializeObject<gzResult<OrderInfoResult>>(response);
                    if (dataResult.code == 0) {
                    // 原代码部分
                    //if (dataResult.code == 0) {
                    //    orderId = dataResult.data[0].in_order_id;
                    //}
                    // 尊重文档的版本
                    // 返回参数中,code目前不再使用,可通过msg字段判断是否成功,如果msg为”success”则表示成功,否则为报错信息或不存在。http code为422时候的报错为系统报错,其中的msg无法全部获取。
                    // SELFNOTE: 直接调用HttpHelper.Post方法,无法获取header,暂时不考虑
                    if (dataResult.msg == "success") {
                        orderId = dataResult.data[0].in_order_id;
                    }
                }
@@ -76,6 +90,7 @@
            return result;
        }
        // DOC 2.   取消订单 WMS->RCS
        public static bool CancelGZOrder(int orderId) {
            bool result = false;
            string msg = "";
@@ -86,12 +101,21 @@
            msg = $"[guozi-CancelOrder] request={requests};response={response}";
            if (response != "") {
                var dataResult = JsonConvert.DeserializeObject<CancelGZOrderResult>(response);
                if (dataResult.code == 0) {
                    msg = "[guozi-CancelOrder]取消订单成功";
                    Console.WriteLine(msg);
                // 原代码版本
                //if (dataResult.code == 0) {
                //    msg = "[guozi-CancelOrder]取消订单成功";
                //    Console.WriteLine(msg);
                //    result = true;
                //    return result;
                //}
                // 尊重文档的版本
                if (dataResult.msg == "success") { // 目前只取消一个任务,成功无需再检查success_list和error_list
                    Console.WriteLine("[guozi-CancelOrder]取消订单成功");
                    result = true;
                    return result;
                }
            }
            else {
                msg = "[guozi-CancelOrder]取消订单失败";
@@ -100,13 +124,13 @@
            return result;
        }
        // DOC 3.   订单状态推送 RCS->WMS
        /// <summary>
        /// 订单状态反馈
        /// </summary>
        /// <returns></returns>
        public static GzResult orderStatusReport(orderStatusReportParme model) {
            LogHelper.Info("RCS国自AGV任务状态回报:" + JsonConvert.SerializeObject(model), "HosttoagvTask");
            LogHelper.Info("orderStatusReport:RCS国自AGV任务状态回报:" + JsonConvert.SerializeObject(model), "HosttoagvTask");
            GzResult result = new GzResult();
            AgvTaskState agv = new AgvTaskState();
@@ -122,6 +146,10 @@
                    break;
                case "waiting":
                    agv.state = 1;
                    break;
                case "dispatched":
                    //调度派车(开始取货)NEW ADDED
                    agv.state = 3;
                    break;
                case "source_finish":
                    //取货完成
@@ -193,6 +221,7 @@
            return result;
        }
        // DOC 6.   交互表查询
        /// <summary>
        /// 获取交互信息
        /// </summary>
@@ -228,6 +257,32 @@
            return list;
        }
        /// <summary>
        /// 根据没有interaction_info_name(task.S_CODE)获取interaction_info_id
        /// </summary>
        /// <param name="taskCode"></param>
        /// <param name="infoId"></param>
        /// <returns></returns>
        public static bool TryGetInteractionInfoId(string taskCode, out int infoId) {
            var list = QueryInteractInfo(3);
            if (list.Count == 0) {
                LogHelper.Info($"查交互表失败!没有读取到交互表!");
                infoId = 0;
                return false;
            }
            var data = list.Where(i => i.interaction_info_name == taskCode).FirstOrDefault();
            if (data == null) {
                LogHelper.Info($"查交互表失败!没有interaction_info_name='{taskCode}'的值!" + JsonConvert.SerializeObject(list));
                infoId = 0;
                return false;
            }
            infoId = data.interaction_info_id;
            return true;
        }
        // DOC 6.   交互表查询(更新终点货位)
        public static bool UpdateInteractInfo(UpdateInteractInfo interactInfo) {
            string msg = "";
            var result = false;
@@ -240,20 +295,28 @@
            }
            else {
                msg = "[guozi-UpdateInteractInfo]更新交互信息失败";
                Console.WriteLine(msg);
                //Console.WriteLine(msg);
                LogHelper.Info(msg);
            }
            return result;
        }
        // DOC 5.   称重信息查询
        public static List<CustomData> CustomBuf() {
            var res = new List<CustomData>();
            string msg = "";
            var result = apiHelper.Get(baseUrl + $"/api/engine/agvs/custom-buf/");
            //var result = apiHelper.Get(baseUrl + $"/api/engine/agvs/custom-buf/", "application/json");
            LogHelper.Info($"正在请求GET: \"/api/engine/agvs/custom-buf/\"", "API");
            var result = apiHelper.GetNew(baseUrl + $"api/engine/agvs/custom-buf/");
            if (!string.IsNullOrEmpty(result)) {
                Console.WriteLine(result);
                
                try {
                    LogHelper.Info($"称重信息:" + result);
                    var data = JsonConvert.DeserializeObject<gzResult<CustomData>>(result);
                    if (data.data != null) {
                        res = data.data;
                    }
@@ -406,8 +469,9 @@
    public class UpdateInteractInfo
    {
        public int interaction_info_id { get; set; }
        public string type_name { get; set; } = "GET_DST";
        public string info_status { get; set; }
        public string return_value { get; set; }
        public string return_value { get; set; } = "";
    }
    public class interaction_state
    {