using Masuit.Tools;
|
using Quartz;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Reflection.Metadata;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEAWCS_BasicInfoRepository;
|
using WIDESEAWCS_BasicInfoService;
|
using WIDESEAWCS_Common.TaskEnum;
|
using WIDESEAWCS_IBasicInfoRepository;
|
using WIDESEAWCS_ISystemServices;
|
using WIDESEAWCS_ITaskInfoRepository;
|
using WIDESEAWCS_ITaskInfoService;
|
using WIDESEAWCS_QuartzJob;
|
using WIDESEAWCS_QuartzJob.Repository;
|
using WIDESEAWCS_QuartzJob.Service;
|
using WIDESEAWCS_SignalR;
|
using WIDESEAWCS_Tasks.ConveyorLineJob;
|
using WIDESEAWCS_Tasks.ElevatorJob;
|
|
namespace WIDESEAWCS_Tasks
|
{
|
[DisallowConcurrentExecution]
|
public partial class CommonElevatorJob : JobBase, IJob
|
{
|
private readonly ITaskRepository _taskRepository;
|
private readonly ITask_HtyRepository _taskhtyRepository;
|
private readonly ITaskService _taskService;
|
private readonly IDt_StationManagerRepository _stationManagerRepository;
|
public CommonElevatorJob(ITaskRepository taskRepository, ITaskService taskService, IDt_StationManagerRepository stationManagerRepository, ITask_HtyRepository taskhtyRepository)
|
{
|
_taskRepository = taskRepository;
|
_taskService = taskService;
|
_stationManagerRepository = stationManagerRepository;
|
_taskhtyRepository = taskhtyRepository;
|
}
|
|
public Task Execute(IJobExecutionContext context)
|
{
|
try
|
{
|
CommonElevator elevator = (CommonElevator)context.JobDetail.JobDataMap.Get("JobParams");
|
if(elevator != null)
|
{
|
var elevatorNum = 0;
|
//获取提升机状态的显示 =0无状态;=1运行中;=2待机;=3报警
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.ElevatorStatus) == 2)
|
{
|
//获取提升机手动/自动切换开关状态
|
if(elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.ManualAutoSwitch) == 1)
|
{
|
//获取提升机是否能允许初始化
|
if(elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.AllowInitialization) == 1)
|
{
|
if(elevatorNum == 0)
|
{
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.InitializationFlag) == 0)
|
{
|
elevator.SetValue<ElevatorDBName, short>(ElevatorDBName.InitializationTrigger, 1);
|
Thread.Sleep(1000);
|
elevator.SetValue<ElevatorDBName, short>(ElevatorDBName.InitializationTrigger, 0);
|
}
|
elevatorNum++;
|
}
|
Thread.Sleep(1000);
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.InitializationFlag) == 1)
|
{
|
elevatorNum++;
|
}
|
if(elevatorNum == 2)
|
{
|
Thread.Sleep(5000);
|
var TaskDouble = _taskRepository.QueryData(x => x.TaskState > (int)TaskAcrossFloorStatusEnum.CarryNew && x.TaskState < (int)TaskAcrossFloorStatusEnum.EndAddressExecuting && x.DoubleTray == 1);
|
var task = _taskRepository.QueryFirst(x => x.TaskState > (int)TaskAcrossFloorStatusEnum.CarryNew && x.TaskState < (int)TaskAcrossFloorStatusEnum.EndAddressExecuting);
|
if(TaskDouble.Count() > 0)
|
{
|
if (TaskDouble.First().Floor == "2F")
|
{
|
elevator.SetValue(ElevatorDBName.TaskNum, Convert.ToInt16(TaskDouble.First().TaskNum));
|
elevator.SetValue(ElevatorDBName.FlagBit, Convert.ToInt16(2));
|
elevator.SetValue(ElevatorDBName.StartFloor, Convert.ToInt16(1));
|
elevator.SetValue(ElevatorDBName.EdnFloor, Convert.ToInt16(2));
|
Thread.Sleep(1000);
|
elevator.SetValue(ElevatorDBName.StartCommand, Convert.ToInt16(1));
|
|
_taskService.SendAgvTask("AAA", TaskDouble.First().TaskNum);
|
_taskService.UpdateTaskStatusToNext(TaskDouble.First().TaskNum);
|
}
|
else
|
{
|
elevator.SetValue(ElevatorDBName.TaskNum, Convert.ToInt16(TaskDouble.First().TaskNum));
|
elevator.SetValue(ElevatorDBName.FlagBit, Convert.ToInt16(2));
|
elevator.SetValue(ElevatorDBName.StartFloor, Convert.ToInt16(2));
|
elevator.SetValue(ElevatorDBName.EdnFloor, Convert.ToInt16(1));
|
Thread.Sleep(1000);
|
elevator.SetValue(ElevatorDBName.StartCommand, Convert.ToInt16(1));
|
|
_taskService.SendAgvTask("DDD", TaskDouble.First().TaskNum);
|
_taskService.UpdateTaskStatusToNext(TaskDouble.First().TaskNum);
|
}
|
}
|
if (task != null)
|
{
|
if (task.Floor == "2F")
|
{
|
elevator.SetValue(ElevatorDBName.TaskNum, Convert.ToInt16(task.TaskNum));
|
elevator.SetValue(ElevatorDBName.FlagBit, Convert.ToInt16(2));
|
elevator.SetValue(ElevatorDBName.StartFloor, Convert.ToInt16(1));
|
elevator.SetValue(ElevatorDBName.EdnFloor, Convert.ToInt16(2));
|
Thread.Sleep(1000);
|
elevator.SetValue(ElevatorDBName.StartCommand, Convert.ToInt16(1));
|
|
_taskService.SendAgvTask("AAA", task.TaskNum);
|
_taskService.UpdateTaskStatusToNext(task.TaskNum);
|
}
|
else
|
{
|
elevator.SetValue(ElevatorDBName.TaskNum, Convert.ToInt16(task.TaskNum));
|
elevator.SetValue(ElevatorDBName.FlagBit, Convert.ToInt16(2));
|
elevator.SetValue(ElevatorDBName.StartFloor, Convert.ToInt16(2));
|
elevator.SetValue(ElevatorDBName.EdnFloor, Convert.ToInt16(1));
|
Thread.Sleep(1000);
|
elevator.SetValue(ElevatorDBName.StartCommand, Convert.ToInt16(1));
|
|
_taskService.SendAgvTask("DDD", task.TaskNum);
|
_taskService.UpdateTaskStatusToNext(task.TaskNum);
|
}
|
}
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.InitializationFlag) == 0)
|
{
|
elevator.SetValue<ElevatorDBName, short>(ElevatorDBName.StartElevator, 1);
|
Thread.Sleep(2000);
|
elevator.SetValue<ElevatorDBName, short>(ElevatorDBName.StartElevator, 0);
|
elevatorNum = 0;
|
}
|
}
|
}
|
}
|
}
|
//获取提升机当前模式0-手动\故障、维护模式,1-自动模式
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.Model) == 1)
|
{
|
var task = _taskService.QueryRequestTSJSignalTask();
|
|
if (task != null && task.AGVSign == "RequestPickUp")
|
{
|
|
if (task.TaskState == (int)TaskAcrossFloorStatusEnum.SecondCarry)
|
{
|
if (task.Floor == "1F")
|
{
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.OneLayerAllowPickUp) == 1)
|
{
|
_taskService.ContinueAgvTask(task.AGVTaskNum);
|
task.AGVSign = "";
|
_taskRepository.UpdateData(task);
|
}
|
}
|
else
|
{
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.TwoLayerAllowPickUp) == 1)
|
{
|
_taskService.ContinueAgvTask(task.AGVTaskNum);
|
task.AGVSign = "";
|
_taskRepository.UpdateData(task);
|
}
|
}
|
}
|
|
}
|
|
if (task != null && task.AGVSign == "RequestPut")
|
{
|
if (task.TaskState == (int)TaskAcrossFloorStatusEnum.FirstCarry)
|
{
|
if (task.Floor == "1F")
|
{
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.OneLayerAllowPut) == 1)
|
{
|
_taskService.ContinueAgvTask(task.AGVTaskNum);
|
task.AGVSign = "";
|
_taskRepository.UpdateData(task);
|
}
|
}
|
else
|
{
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.TwoLayerAllowPut) == 1)
|
{
|
_taskService.ContinueAgvTask(task.AGVTaskNum);
|
task.AGVSign = "";
|
_taskRepository.UpdateData(task);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
return Task.CompletedTask;
|
}
|
catch (Exception)
|
{
|
|
throw;
|
}
|
}
|
}
|
}
|