kazelee
2025-05-23 419c45d4ae0a1815208c101c3e09788ec1698dc2
Dispatch/GZRobot.cs
@@ -2,25 +2,19 @@
using System.Collections.Generic;
using System.IdentityModel.Protocols.WSTrust;
using System.Threading.Tasks;
using HH.WCS.Mobox3.AnGang.config;
using HH.WCS.Mobox3.AnGang.Helper;
using HH.WCS.Mobox3.AnGang.Helpers;
using HH.WCS.Mobox3.AnGang.Models;
using HH.WCS.Mobox3.AnGang.Services;
using HH.WCS.Mobox3.AnGang.core;
using HH.WCS.Mobox3.AnGang.models;
using Newtonsoft.Json;
using static HH.WCS.Mobox3.AnGang.api.ApiModel;
using static HH.WCS.Mobox3.AnGang.Controllers.ApiModel;
using static HH.WCS.Mobox3.AnGang.Dtos.Request.AgvRequest;
namespace HH.WCS.Mobox3.AnGang.Dispatch {
namespace HH.WCS.Mobox3.AnGang.dispatch {
    /// <summary>
    /// 国自调度辅助类
    /// </summary>
    public class GZRobot {
        private static readonly HttpHelper apiHelper = new HttpHelper();
        private static readonly string baseUrl = AppStart.Settings.Config.RCSApiUrl;//配置文件获取国自调度地址
        private static readonly string baseUrl = Settings.RCSApiUrl;//配置文件获取国自调度地址
        //private static readonly string logName = "guozi";
        public static List<IOState> GetIO() {
            var result = apiHelper.Get(baseUrl + "api/engine/view/iostates/");
@@ -32,7 +26,6 @@
            var result = apiHelper.Post(baseUrl + "api/engine/tasks/iostates/", JsonConvert.SerializeObject(data));
            var dataResult = JsonConvert.DeserializeObject<gzResult<IOStatesInfoResult>>(result);
        }
        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");
@@ -113,6 +106,7 @@
        /// </summary>
        /// <returns></returns>
        public static GzResult orderStatusReport(orderStatusReportParme model) {
            LogHelper.Info("RCS国自AGV任务状态回报:" + JsonConvert.SerializeObject(model), "HosttoagvTask");
            GzResult result = new GzResult();
            AgvTaskState agv = new AgvTaskState();
@@ -132,11 +126,6 @@
                case "source_finish":
                    //取货完成
                    agv.state = 4;
                    //var checkWeightTask = Task.Run(() => {
                    //    ChooseFinalEndLoc(model);
                    //});
                    break;
                case "dest_finish":
                    //卸货完成
@@ -161,7 +150,14 @@
            if (agv.state != 0) {
                agv.task_no = model.orderName;
                agv.forklift_no = model.agvIDList;
                AgvService.OperateAgvTaskStatus(agv);
                WCSCore.OperateAgvTaskStatus(agv);
            }
            else {
                result.resultCode = 2;
                result.orderID = model.orderID;
                result.msg = "反馈订单状态失败,orderStatus参数不正确";
                LogHelper.Info(result.msg, "API");
                return result;
            }
            result.resultCode = 0;
@@ -171,75 +167,9 @@
            return result;
        }
        //public static void ChooseFinalEndLoc(orderStatusReportParme model) {
        //    var db = DbHelper.GetDbClient();
        //    var tn_task = db.Queryable<TN_Task>().First(a => a.S_EQ_NO == model.agvIDList && a.S_END_AREA == "" && a.S_END_LOC == "" && a.S_TYPE == "产品入库(PDA)");
        //    // 只要任务为产品入库(PDA),就需要重新指定终点(默认endLoc为"")
        //    if (tn_task.S_TYPE == "产品入库(PDA)") {
        //        var endLoc = new TN_Location();
        //        // 只当之前指定终点货架后,才尝试计算终点货位,否则交给人工决定
        //        if (tn_task.S_END_AREA != "") {
        //            if (tn_task.F_WEIGHT > 1500) {
        //                // 重量超过1.5t,需要选择1-3层货架
        //                endLoc = db.Queryable<TN_Location>().First(a => a.S_SHELF_CODE == tn_task.S_END_AREA && LocationHelper.IsFree(a) && a.N_CURRENT_NUM == 0 && a.N_HEIGHT <= 3);
        //            }
        //            else if (tn_task.F_WEIGHT > 0) {
        //                // 重量未超过1.5t,在指定货架随便选择1个
        //                endLoc = db.Queryable<TN_Location>().First(a => a.S_SHELF_CODE == tn_task.S_END_AREA && LocationHelper.IsFree(a) && a.N_CURRENT_NUM == 0);
        //            }
        //            else {
        //                // 没有接收到重量,或重量出错
        //                endLoc = null;
        //                LogHelper.Info($"错误的重量信息:{tn_task.F_WEIGHT}");
        //            }
        //            // 如果没有符合条件的货位,置空,等待PDA重新确定
        //            if (endLoc == null) {
        //                tn_task.S_END_AREA = "";
        //                tn_task.S_END_LOC = "";
        //                if (db.Updateable<TN_Task>(tn_task).ExecuteCommand() > 0) {
        //                    //LocationHelper.LockLoc(endLoc.S_CODE, 1);//终点入库锁
        //                    LogHelper.Info($"重新计算后没有合适货位,任务 {tn_task.S_CODE} 修改成功,修改终点货架和货位为空");
        //                }
        //                else {
        //                    LogHelper.Info($"重新计算后没有合适货位,任务 {tn_task.S_CODE} 修改失败,修改终点货架和货位为空");
        //                }
        //            }
        //            else {
        //                // 找到合适的货位,推送
        //                tn_task.S_END_LOC = endLoc.S_CODE;
        //                using (var trans = db.Ado.UseTran()) {
        //                    if (db.Updateable<TN_Task>(tn_task).ExecuteCommand() > 0) {
        //                        LocationHelper.LockLoc(endLoc.S_CODE, 1);//终点入库锁
        //                        trans.CommitTran();
        //                        LogHelper.Info($"计算货位成功,任务 {tn_task.S_CODE} 修改成功,终点货架为 {endLoc.S_SHELF_CODE},修改终点位置为 {endLoc.S_CODE}");
        //                    }
        //                    else {
        //                        trans.RollbackTran();
        //                        LogHelper.Info($"计算货位成功,任务 {tn_task.S_CODE} 修改失败,终点货架为 {endLoc.S_SHELF_CODE},修改终点位置为 {endLoc.S_CODE}");
        //                    }
        //                }
        //            }
        //        }
        //    }
        //}
        public class CancelGZOrderInfo
        {
            public int order_id { get; set; }
            public int order_command_type_id { get; set; }
        }
@@ -327,7 +257,6 @@
                    if (data.data != null) {
                        res = data.data;
                    }
                }
                catch (Exception ex) {
                    Console.WriteLine(ex.Message);
@@ -343,14 +272,6 @@
        }
    }
    //public class CustomBufInfo {
    //    public string app_name { get; set; }
    //    public string version { get; set; }
    //    public int code { get; set; }
    //    public string msg { get; set; }
    //    public List<CustomData> data { get; set; }
    //}
    public class CustomData {
        public string agv_id { get; set; }