using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using Quartz;
|
using WIDESEAWCS_ITaskInfoRepository;
|
using WIDESEAWCS_ITaskInfoService;
|
using WIDESEAWCS_Model.Models;
|
using WIDESEAWCS_QuartzJob;
|
|
namespace WIDESEAWCS_Tasks
|
{
|
/// <summary>
|
/// 龙门架
|
/// </summary>
|
[DisallowConcurrentExecution]
|
public class GantryJob : JobBase, IJob
|
{
|
private readonly ITaskRepository _taskRepository;
|
private readonly ITaskService _taskService;
|
public GantryJob(ITaskRepository taskRepository, ITaskService taskService)
|
{
|
_taskRepository = taskRepository;
|
_taskService = taskService;
|
}
|
|
public Task Execute(IJobExecutionContext context)
|
{
|
try
|
{
|
bool flag = context.JobDetail.JobDataMap.TryGetValue("JobParams", out object? value);
|
if (flag && value != null && value is OtherDevice)
|
{
|
OtherDevice otherDevice = (OtherDevice)value;
|
|
byte gantryStatus = otherDevice.GetValue<GantryDBName, byte>(GantryDBName.GantryStatus);
|
byte gantryAutoStatus = otherDevice.GetValue<GantryDBName, byte>(GantryDBName.GantryAutoStatus);
|
byte gantryWorkStatus = otherDevice.GetValue<GantryDBName, byte>(GantryDBName.GantryWorkStatus);
|
|
if(gantryStatus == 1 && gantryAutoStatus == 3 && gantryWorkStatus == 0)
|
{
|
// 逻辑处理
|
// 1. 读取任务
|
// 2. 任务执行
|
// 3. 任务完成
|
Dt_Task? task = _taskService.QueryAGantryUnExecuteTask(otherDevice.DeviceCode);
|
if(task != null)
|
{
|
string[] takePositions = task.CurrentAddress.Split("-");
|
if(takePositions.Length != 4)
|
{
|
//WriteError
|
return Task.CompletedTask;
|
}
|
|
string[] putPositions = task.NextAddress.Split("-");
|
if (putPositions.Length != 4)
|
{
|
//WriteError
|
return Task.CompletedTask;
|
}
|
otherDevice.SetValue(GantryDBName.TwoHand, task.TaskNum);
|
|
otherDevice.SetValue(GantryDBName.TaskNum, task.TaskNum);
|
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.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);
|
}
|
}
|
else if(gantryWorkStatus == 5)
|
{
|
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
|
}
|
return Task.CompletedTask;
|
}
|
|
public Dt_Task GetTask()
|
{
|
return new Dt_Task();
|
}
|
}
|
}
|