zhanghonglin
2026-04-06 cfb3f2c7e9cde8cc2eb2a19263d0802c0c5410a3
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Job/StackerCraneJob.cs
@@ -23,7 +23,7 @@
namespace WIDESEAWCS_Tasks
{
    [DisallowConcurrentExecution]
    public class StackerCraneJob : JobBase, IJob
    public class StackerCraneJob : JobBase, IJob
    {
        public static int R_HeartBeat = 0;
        public static string InorOut = "In";
@@ -84,22 +84,19 @@
                                {
                                    //发送物料编号
                                    CL.SetValue(ConveyorLineName.W_NumberAD, result.MaterialCode1);
                                    if (result.MaterialCode2 != null)
                                        CL.SetValue(ConveyorLineName.W_NumberBD, result.MaterialCode2);
                                    if (result.MaterialCode3 != null)
                                        CL.SetValue(ConveyorLineName.W_NumberCD, result.MaterialCode3);
                                    if (result.MaterialCode4 != null)
                                        CL.SetValue(ConveyorLineName.W_NumberDD, result.MaterialCode4);
                                    CL.SetValue(ConveyorLineName.W_NumberBD, result.MaterialCode2);
                                    CL.SetValue(ConveyorLineName.W_NumberCD, result.MaterialCode3);
                                    CL.SetValue(ConveyorLineName.W_NumberDD, result.MaterialCode4);
                                }
                                //commonStackerCrane.SetValue(StackerCraneDBName.W_Accomplish, true);
                            }
                        }
                    }
                    //修改任务状态
                    else if(R_TaskPhases == 1 || R_TaskPhases == 2 || R_TaskPhases == 4)
                    else if (R_TaskPhases == 1 || R_TaskPhases == 2 || R_TaskPhases == 4)
                    {
                        Dt_Task tasks = _TaskService.UpdateTaskStatus(R_OrderNo, R_TaskPhases);
                        if (tasks!=null)
                        if (tasks != null)
                        {
                            //同步WMS
                            string address = AppSettings.Get("WMSApiAddress");
@@ -115,19 +112,20 @@
                    }
                    //判断是否为自动模式
                    if (R_ControlMode == 2 && R_TaskStatus == 2 && R_LoadStatus != 2)
                    if (R_ControlMode == 2 && R_TaskStatus == 2 && R_LoadStatus != 2 && (R_TaskPhases == 0 || R_TaskPhases == 5))
                    {
                        Thread.Sleep(3000);
                        //判断是否有执行中的任务
                        Dt_Task tasking = _taskRepository.QueryFirst(x=> x.TaskState !=(int) TaskStatusEnum.InNew && x.TaskState != (int)TaskStatusEnum.OutNew && x.TaskState != (int)TaskStatusEnum.Task_Put && x.TaskState != (int)TaskStatusEnum.Task_fetch);
                        Dt_Task tasking = _taskRepository.QueryFirst(x => (x.TaskState == (int)TaskStatusEnum.InNew && x.TaskState == (int)TaskStatusEnum.OutNew) || x.TaskState == (int)TaskStatusEnum.Task_Put || x.TaskState == (int)TaskStatusEnum.Task_fetch);
                        if (tasking == null)
                        {
                            //获取任务
                            Dt_Task? task = GetTask(InorOut);
                            if(task != null)
                            if (task != null)
                            {
                                //任务实体转命令Model
                                StackerCraneCommand? StackerCommand = ConvertToStackerCommand(task);
                                if(StackerCommand != null)
                                if (StackerCommand != null)
                                {
                                    //发送命令
                                    commonStackerCrane.SetValue(StackerCraneDBName.W_SourceRow, StackerCommand.W_SourceRow);
@@ -141,6 +139,7 @@
                                    commonStackerCrane.SetValue(StackerCraneDBName.W_DataCheckSum, StackerCommand.W_DataCheckSum);
                                    commonStackerCrane.SetValue(StackerCraneDBName.W_OrderNo, StackerCommand.W_OrderNo);
                                    commonStackerCrane.SetValue(StackerCraneDBName.W_Start, StackerCommand.W_Start);
                                    WriteInfo("堆垛机执行任务:", $"{StackerCommand.W_OrderNo}");
                                }
                            }
                        }
@@ -178,6 +177,22 @@
        {
            Dt_Task task;
            task = _TaskService.TaskInorOut(InorOuts);
            //满桶出库
            if (task != null)
            {
                if (task.TaskType == (int)TaskTypeEnum.Outfull)
                {
                    int pick = comm.GETR_PickD();
                    int status = comm.GETR_StatusD();
                    if (pick != 1 || status != 1)
                    {
                        WriteInfo("堆垛机执行满桶出库任务:", $"{"输送线出库信号异常" + pick + "//" + status}");
                        return null;
                    }
                    WriteInfo("堆垛机执行满桶出库任务:", $"{"输送线出库信号正常" + pick + "//" + status}");
                }
            }
            //一入一出
            if (task != null && (task.TaskState == (int)TaskStatusEnum.InNew || task.TaskState == (int)TaskStatusEnum.OutNew))
            {
@@ -205,7 +220,7 @@
        }
        //任务实体转命令Model
        public StackerCraneCommand? ConvertToStackerCommand(Dt_Task task)
        public StackerCraneCommand? ConvertToStackerCommand(Dt_Task task)
        {
            StackerCraneCommand stackerCraneCommand = new StackerCraneCommand();
            string[] TargetAddress = task.TargetAddress.Split('-');