1
z8018
2025-04-05 f94288b728f81b20c29e626526c584c11a7894a3
项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Gantry/GantryJob.cs
@@ -4,6 +4,9 @@
using System.Text;
using System.Threading.Tasks;
using Quartz;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
@@ -19,10 +22,12 @@
    {
        private readonly ITaskRepository _taskRepository;
        private readonly ITaskService _taskService;
        public GantryJob(ITaskRepository taskRepository, ITaskService taskService)
        private readonly IContainerItemRepository _containerItemRepository;
        public GantryJob(ITaskRepository taskRepository, ITaskService taskService, IContainerItemRepository containerItemRepository)
        {
            _taskRepository = taskRepository;
            _taskService = taskService;
            _containerItemRepository = containerItemRepository;
        }
        public Task Execute(IJobExecutionContext context)
@@ -48,36 +53,47 @@
                        if(task != null)
                        {
                            string[] takePositions = task.CurrentAddress.Split("-");
                            if(takePositions.Length != 4)
                            if(takePositions.Length != 5)
                            {
                                //WriteError
                                return Task.CompletedTask;
                            }
                            string[] putPositions = task.NextAddress.Split("-");
                            if (putPositions.Length != 4)
                            if (putPositions.Length != 5)
                            {
                                //WriteError
                                return Task.CompletedTask;
                            }
                            otherDevice.SetValue(GantryDBName.TwoHand, task.TaskNum);
                            Dt_ContainerItem containerItem = _containerItemRepository.QueryFirst(x => x.ItemCode == task.PalletCode);
                            if (containerItem == null)
                            {
                                //WriteError
                                return Task.CompletedTask;
                            }
                            otherDevice.SetValue(GantryDBName.TwoHand, true);
                            otherDevice.SetValue(GantryDBName.TaskNum, task.TaskNum);
                            otherDevice.SetValue(GantryDBName.TakePosition, Convert.ToInt32(takePositions[0]));
                            //otherDevice.SetValue(GantryDBName.TakePosition, Convert.ToInt32(takePositions[0]));
                            otherDevice.SetValue(GantryDBName.TakePositionX, Convert.ToInt32(takePositions[1]));
                            otherDevice.SetValue(GantryDBName.TakePositionY, Convert.ToInt32(takePositions[2]));
                            otherDevice.SetValue(GantryDBName.TakePositionZ, Convert.ToInt32(takePositions[3]));
                            otherDevice.SetValue(GantryDBName.TakePositionR, 0);
                            otherDevice.SetValue(GantryDBName.PutPosition, Convert.ToInt32(putPositions[0]));
                            otherDevice.SetValue(GantryDBName.TakePositionR, Convert.ToInt32(takePositions[4]));
                            //otherDevice.SetValue(GantryDBName.PutPosition, Convert.ToInt32(putPositions[0]));
                            otherDevice.SetValue(GantryDBName.PutPositionX, Convert.ToInt32(putPositions[1]));
                            otherDevice.SetValue(GantryDBName.PutPositionY, Convert.ToInt32(putPositions[2]));
                            otherDevice.SetValue(GantryDBName.PutPositionZ, Convert.ToInt32(putPositions[3]));
                            otherDevice.SetValue(GantryDBName.PutPositionR, 0);
                            otherDevice.SetValue(GantryDBName.Length, task.TaskNum);
                            otherDevice.SetValue(GantryDBName.Width, task.TaskNum);
                            otherDevice.SetValue(GantryDBName.Height, task.TaskNum);
                            otherDevice.SetValue(GantryDBName.WorkType, task.TaskNum);
                            otherDevice.SetValue(GantryDBName.StartCommand, task.TaskNum);
                            otherDevice.SetValue(GantryDBName.PutPositionR, Convert.ToInt32(putPositions[4]));
                            otherDevice.SetValue(GantryDBName.Length, containerItem.ItemLength);
                            otherDevice.SetValue(GantryDBName.Width, containerItem.ItemWidth);
                            otherDevice.SetValue(GantryDBName.Height, containerItem.ItemHeight);
                            otherDevice.SetValue(GantryDBName.WorkType, 1);
                            otherDevice.SetValue(GantryDBName.StartCommand, 1);
                            task.TaskState = TaskStatusEnum.Gantry_Executing.ObjToInt();
                            _taskRepository.UpdateData(task);
                        }
                    }
                    else if(gantryWorkStatus == 5)