lss
2025-06-18 64ec1a7fb55389d8db371d112e49f741de866796
HH.WCS.Mobox3/HH.WCS.Mobox3.DaYang/process/TaskProcess.cs
@@ -8,10 +8,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Emit;
using System.Security.Cryptography;
using System.Text;
using static HH.WCS.DaYang.api.ApiModel;
using static HH.WCS.DaYang.util.Settings;
using static System.Net.WebRequestMethods;
namespace HH.WCS.DaYang.process
{
@@ -109,33 +111,70 @@
        internal static bool Intercept(WCSTask mst)
        {
            var result = false;
            #region 空托回库任务需要判断有没有执行中的出库任务,接驳位有无托盘,如果有先不推送任务
            if (mst.S_TYPE == "空托回库" && mst.S_SCHEDULE_TYPE == "1")
            #region 空托回库任务需要判断有没有执行中的出库任务,接驳位有无托盘,如果有先不推送任务,任务任务需要agv任务完成再推
            if (mst.S_TYPE == "空托回库")
            {
                //判断有无出库中的任务
                var task = WCSHelper.GetTaskbyType("出库");
                if (task.Count == 0)
                {   //获取接驳位设备状态
                    HttpHelper httpHelper = new HttpHelper();
                    TableUrl tableUrl = Settings.tableUrls.Find(a => a.id == 3);
                    if (tableUrl != null)
                    {
                        Result<DeviceStatusModel> DeviceStatu = httpHelper.GetDeviceStatus(new string[] { mst.S_END_LOC }, tableUrl.url);
                        //设备状态空则允许推送
                        if (DeviceStatu != null && DeviceStatu.Data[0].PhotoStatus == 0)
                if (mst.N_SCHEDULE_TYPE == 1)
                {
                    //判断有无出库中的任务
                    var task = WCSHelper.GetTaskbyType("出库");
                    if (task.Count == 0)
                    {   //获取接驳位设备状态
                        HttpHelper httpHelper = new HttpHelper();
                        TableUrl tableUrl = Settings.tableUrls.Find(a => a.id == 3);
                        if (tableUrl != null)
                        {
                            result = true;
                            Result<DeviceStatusModel> DeviceStatu = httpHelper.GetDeviceStatus(new string[] { mst.S_END_LOC }, tableUrl.url);
                            //设备状态空则允许推送
                            if (DeviceStatu != null && DeviceStatu.Data.PhotoStatus == 0)
                            {
                                result = true;
                            }
                            else
                            {
                                LogHelper.Info($"Intercept:设备状态不允许推送");
                            }
                        }
                        else
                        {
                            LogHelper.Info($"Intercept:设备状态不允许推送");
                            LogHelper.Info($"Intercept:获取接口url失败");
                        }
                    }
                    else
                }
                if (mst.N_SCHEDULE_TYPE == 2)
                {
                    var task = WCSHelper.GetTaskByOpName(mst.S_OP_CODE, 3);
                    if (task != null)
                    {
                        LogHelper.Info($"Intercept:获取接口url失败");
                        result = true;
                    }
                }
            }
            if (mst.S_TYPE == "出库")
            {
                //推送agv任务,判断设备任务是否完成
                if (mst.N_SCHEDULE_TYPE == 1)
                {
                    var task = WCSHelper.GetTaskByOpName(mst.S_OP_CODE, 3);
                    if (task != null)
                    {
                        result = true;
                    }
                }
                else
                {
                    //如果当前任务不是移库任务,需要判断移库任务是否完成
                    if (mst.S_TYPE != "移库")
                    {
                        var db = new SqlHelper<object>().GetInstance();
                        var ykmst = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == mst.S_OP_NAME && a.N_B_STATE == 3 && a.S_TYPE == "移库").First();
                        if (ykmst != null)
                        {
                            result = true;
                        }
                    }
                }
            }
            #endregion
@@ -317,8 +356,8 @@
            var result = false;
            var start = "0"; var end = "0";
            var taskType = mst.S_TYPE.Trim();
            // if (mst.N_B_STATE == 0) {
            if (mst.N_SCHEDULE_TYPE == 1)
            if (mst.N_SCHEDULE_TYPE == 1)//agv任务
            {
                start = LocationHelper.GetAgvSite(mst.S_START_LOC);
                end = LocationHelper.GetAgvSite(mst.S_END_LOC);
@@ -352,34 +391,21 @@
                    result = true;
                }
            }
            //else if (mst.N_SCHEDULE_TYPE == 5) {
            //    //调第三方接口
            //    var model = new HanAo.TaskInfoModel
            //    {
            //        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
            //    };
            //    if (HanAo.CreateOrder(model)) {
            //        mst.N_B_STATE = 1;
            //        WCSHelper.UpdateStatus(mst);
            //    }
            //}
            //else if (mst.N_SCHEDULE_TYPE == 3) {
            //    var code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = mst.S_START_LOC, dst = mst.S_END_LOC }), "p2p");
            //    if (code > 0) {
            //        //更新任务状态
            //        mst.N_B_STATE = 1;
            //        mst.S_EQ_TASK_CODE = code.ToString();
            //        WCSHelper.UpdateStatus(mst);
            //        WCSHelper.UpdateEQNo(mst);
            //    }
            //}
            //  }
            else if (mst.N_SCHEDULE_TYPE == 2)//输送线任务
            {
                HttpHelper http = new HttpHelper();
                TableUrl tableUrl = Settings.tableUrls.Find(a => a.id == 3);
                if (tableUrl != null)
                {
                    var Wcsrsult = http.TaskAssignment(mst, tableUrl.url);
                    if (Wcsrsult.Code == 200)
                    {
                        mst.N_B_STATE = 1;
                        WCSHelper.UpdateStatus(mst);
                        result = true;
                    }
                }
            }
            return result;
        }