杨前锦
2025-07-01 a93b0e99036c24b9bd58c79bf5e7364b1ba28bae
HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/process/TaskProcess.cs
@@ -9,6 +9,7 @@
using System.Linq;
using System.Reflection;
using System.Security.Cryptography;
using static HH.WCS.Mobox3.YNJT_PT.dispatch.WCSDispatch;
namespace HH.WCS.Mobox3.YNJT_PT.process {
    internal class TaskProcess {
@@ -20,7 +21,6 @@
        /// <param name="mst"></param>
        /// <param name="v"></param>
        internal static void CacheBitUpdate(WCSTask mst, bool load) {
            var trayCarryCount = mst.N_CNTR_COUNT > 0 ? mst.N_CNTR_COUNT : 1;
            if (load) {
                Console.WriteLine($"任务{mst.S_CODE} 货位{mst.S_START_LOC}取货完成,起点解绑容器{mst.S_CNTR_CODE}");
                LogHelper.Info($"任务{mst.S_CODE} 货位{mst.S_START_LOC}取货完成,起点解绑容器{mst.S_CNTR_CODE}");
@@ -244,94 +244,67 @@
                var startLoc = LocationHelper.GetLocation(mst.S_START_LOC);
                var endLoc = LocationHelper.GetLocation(mst.S_END_LOC);
                if (mst.S_SCHEDULE_TYPE == "NDC") {
                    Console.WriteLine($"SendTask {mst.S_CODE}");
                    var dic = new Dictionary<string, string>();
                    dic.Add("No", mst.S_CODE);
                    dic.Add("Pri", mst.N_PRIORITY.ToString());
                    dic.Add("From", startLoc.S_AGV_SITE);
                    dic.Add("To", endLoc.S_AGV_SITE);
                    if (mst.S_TYPE == "移库")
                if (mst.S_SCHEDULE_TYPE == "AGV")
                {
                    AddOrderNewModel model = new AddOrderNewModel()
                    {
                        dic.Add("FUNC", "32");
                        ts_no = 1,
                        pri = 1,
                        task_no = mst.S_CODE
                    };
                    List<Param> paramList = new List<Param>();
                    var dic = new Dictionary<string, string>();
                    dic.Add("IKey", mst.S_CODE);
                    dic.Add("From", startLoc.S_CODE);
                    dic.Add("To", endLoc.S_CODE);
                    dic.Add("FUNC", "0");
                    if (mst.S_TYPE.Contains("入库"))
                    {
                        dic.Add("DATA", "300");
                    }
                    else
                    {
                        dic.Add("FUNC", "0");
                        dic.Add("DATA", "0");
                    }
                    var data = mst.N_END_LAYER + 16 * mst.N_START_LAYER;
                    // 参数4
                    dic.Add("DATA", data.ToString());
                    //物料信息中获取
                    //先获取托盘信息
                    var itemInfo = LocationHelper.GetCntrItem(mst.S_CNTR_CODE);
                    if (itemInfo != null) {
                        // 参数5
                        dic.Add("ItemHeight", itemInfo.N_TS_HEIGHT);
                        //参数6 默认值
                        string[] parts = itemInfo.Item_Spec.Split('*');
                        if (parts.Length > 1)
                    dic.Add("Ctype", "0");
                    foreach (var item in dic)
                    {
                        Param param = new Param
                        {
                            if (parts[1].Equals("1200"))
                            {
                                dic.Add("TrayType", "1");
                            }
                            else if (parts[1].Equals("1210"))
                            {
                                dic.Add("TrayType", "2");
                            }
                        }
                            name = item.Key,
                            value = item.Value,
                        };
                        paramList.Add(param);
                    }
                    //获取参数7和8
                    dic.Add("FromCol", "0");
                    dic.Add("ToCol", "0");
                    //改起点
                    var flb1 = GetFreeLineBit(startLoc.S_AREA_CODE, startLoc.N_ROW, startLoc.N_COL);
                    if (flb1 != null) {
                        dic["FromCol"] = (startLoc.N_COL - flb1.minCol).ToString();
                        if (mst.N_START_LAYER == 1) {
                            dic["From"] = flb1.bit1.ToString();
                        }
                        else {
                            dic["From"] = flb1.bit2.ToString();
                        }
                    }
                    //改终点
                    var flb = GetFreeLineBit(endLoc.S_AREA_CODE, endLoc.N_ROW, endLoc.N_COL);
                    if (flb != null) {
                        dic["ToCol"] = (endLoc.N_COL - flb.minCol).ToString();
                        if (mst.N_END_LAYER == 1) {
                            dic["To"] = flb.bit1.ToString();
                        }
                        else {
                            dic["To"] = flb.bit2.ToString();
                        }
                    }
                    var res = NDC.AddNewOrderNew(5, mst.N_PRIORITY, mst.S_CODE, dic);
                    if (res != null && (res.Res.ErrCode == 0 || res.Res.ErrCode == 50009)) {
                    model.param = paramList;
                    LogHelper.Info($"向AGV下发任务,任务参数:{model}", "WMS");
                    var res = NDCApi.AddOrderNew(model);
                    if (res != null && res.err_code == 0 || true)
                    {
                        //推送成功,修改任务优先级
                        mst.N_B_STATE = 1;
                        WCSHelper.UpdateStatus(mst);
                        result = true;
                    }
                }
                else if (mst.S_SCHEDULE_TYPE == "杭奥") {
                    //调第三方接口
                    var model = new HanAo.TaskInfoModel
                else if (mst.S_SCHEDULE_TYPE == "WCS")
                {
                    SendTaskModel sendTask = new SendTaskModel()
                    {
                        requestPk = mst.S_CODE,
                        frmPos = mst.S_START_LOC,
                        toPos = mst.S_END_LOC,
                        trkType = mst.S_OP_NAME == "入库" ? "1" : "2",
                        contNo = mst.S_CNTR_CODE
                        taskNo = mst.S_CODE,
                        taskType = mst.S_TYPE.Contains("入库") ? "1" : "2",
                        from = mst.S_START_LOC,
                        to = mst.S_END_LOC,
                        cntrNo = mst.S_CNTR_CODE,
                    };
                    if (HanAo.CreateOrder(model)) {
                    LogHelper.Info($"向WCS下发任务,任务参数:{sendTask}", "WMS");
                    var bo = WCSDispatch.sendTask(sendTask);
                    if (true || bo)
                    {
                        //推送成功,修改任务优先级
                        mst.N_B_STATE = 1;
                        WCSHelper.UpdateStatus(mst);
                        result = true;
                    }
                }
            }