杨前锦
2025-07-01 a93b0e99036c24b9bd58c79bf5e7364b1ba28bae
HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs
@@ -9,6 +9,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using static HH.WCS.Mobox3.FJJT.dispatch.XcDispatch;
namespace HH.WCS.Mobox3.FJJT.process {
    internal class TaskProcess {
@@ -62,6 +63,8 @@
        internal static void OperateReq(string no, int state, string forkliftNo, string extData) {
            LogHelper.Info($"开始安全请求,任务号:{no},请求码:{state}", "HosttoagvTask");
            var cst = WCSHelper.GetTask(no);
            if (cst != null)
            {
            var taskAction = WCSHelper.getActionRecord(no, state);
            if (taskAction != null)
            {
@@ -78,19 +81,63 @@
                bool result = false;
                if (state == 1101)
                {
                        if (cst.S_START_AREA == "")
                        {
                            result = XcDispatch.CanOut(new SafetyRequest() { stnNo = cst.S_START_LOC, taskNo = cst.S_CODE });
                            if (result)
                            {
                                NDCApi.ChangeOrderParam(no, 8, "1");
                            }
                        }
                        else
                        {
                    result = WCSDispatch.safetyInteraction(cst.S_CODE ,cst.S_START_LOC, "1");  //请求取货,
                        }
                }
                if (state == 1102)
                {
                    result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "2");  //请求返货
                        if (cst.S_START_AREA == "")
                        {
                            result = XcDispatch.CanIn(new SafetyRequest() { stnNo = cst.S_END_LOC, taskNo = cst.S_CODE });
                            if (result)
                            {
                                NDCApi.ChangeOrderParam(no, 8, "1");
                            }
                        }
                        else
                        {
                            result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_END_LOC, "2");  //请求放货
                        }
                }
                if (state == 1103)
                {
                        if (cst.S_START_AREA == "")
                        {
                            result = XcDispatch.loadComplete(new SafetyRequest() { stnNo = cst.S_END_LOC, taskNo = cst.S_CODE });
                            if (result)
                            {
                                NDCApi.ChangeOrderParam(no, 8, "1");
                            }
                        }
                        else
                        {
                    result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "3");  //取货完成允许离开
                        }
                }
                if (state == 1104)
                {
                    result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "4");  //放货完成允许离开
                        if (cst.S_START_AREA == "")
                        {
                            result = XcDispatch.putComplete(new SafetyRequest() { stnNo = cst.S_END_LOC, taskNo = cst.S_CODE });
                            if (result)
                            {
                                NDCApi.ChangeOrderParam(no, 8, "1");
                            }
                        }
                        else
                        {
                            result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_END_LOC, "4");  //放货完成允许离开
                        }
                }
                // 安全请求发送成功,添加任务动作记录
@@ -98,6 +145,7 @@
                {
                    WCSHelper.AddActionRecord(no, state, forkliftNo, extData);
                    LogHelper.Info($"首次进行安全请求成功", "HosttoagvTask");
                    }
                }
            }
        }
@@ -143,26 +191,28 @@
        /// <param name="mst"></param>
        internal static bool SendTask(WCSTask mst) {
            var result = false;
            var start = "0"; var end = "0";
            if (mst.N_B_STATE == 0) {
                if (mst.S_SCHEDULE_TYPE == "NDC") 
                {
                    start = LocationHelper.GetAgvSite(mst.S_START_LOC);
                    end = LocationHelper.GetAgvSite(mst.S_END_LOC);
                    var startLoc = LocationHelper.GetLoc(mst.S_START_LOC);
                    var endLoc = LocationHelper.GetLoc(mst.S_END_LOC);
                    if (startLoc != null && endLoc != null)
                    {
                    var dic = new List<param>();
                    dic.Add( new param() { name = "No" , value = ""});
                    dic.Add( new param() { name = "From", value = ""});
                    dic.Add( new param() { name = "To", value = ""});
                        dic.Add(new param() { name = "No", value = mst.S_CODE });
                        dic.Add(new param() { name = "From", value = mst.S_START_LOC });
                        dic.Add(new param() { name = "To", value = mst.S_END_LOC });
                    dic.Add( new param() { name = "3" , value = "4"});
                    dic.Add( new param() { name = "4" , value = "512"});
                    dic.Add( new param() { name = "5" , value = "0"});
                    var res = NDCApi.AddOrderNew(1,mst.N_PRIORITY,mst.S_CODE,dic);
                    if (res != null && res.err_code == 0 ) {
                        if (res != null && res.err_code == 0)
                        {
                        //推送成功,修改任务优先级
                        mst.N_B_STATE = 1;
                        WCSHelper.UpdateStatus(mst);
                        result = true;
                        }
                    }
                }
                else if (mst.S_SCHEDULE_TYPE == "WCS") {
@@ -175,7 +225,6 @@
                    mst.N_B_STATE = 1;
                    WCSHelper.UpdateStatus(mst);
                }
            }
            return result;
        }