using HslCommunication;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEAWCS_Common.ShuttleCarEnum;
|
using WIDESEAWCS_Common.TaskEnum;
|
using WIDESEAWCS_Model.Models;
|
using WIDESEAWCS_QuartzJob.DTO;
|
using WIDESEAWCS_QuartzJob;
|
using WIDESEAWCS_Core;
|
|
namespace WIDESEAWCS_Tasks
|
{
|
partial class CommonShuttleCarJob
|
{
|
/// <summary>
|
/// 根据任务状态、类型获取任务
|
/// </summary>
|
/// <param name="TaskState"></param>
|
/// <param name="TaskType"></param>
|
/// <returns></returns>
|
private Dt_Task GetTask(int TaskState, int TaskType)
|
{
|
return _taskService.GetTaskState(TaskState, TaskType);
|
}
|
/// <summary>
|
/// 根据穿梭车编号获取穿梭车信息
|
/// </summary>
|
/// <param name="ShuttleCarCode"></param>
|
/// <returns></returns>
|
public Dt_ShuttleCar QueryCode(string ShuttleCarCode)
|
{
|
return _shuttleCarService.QueryCode(ShuttleCarCode);
|
}
|
|
ShuttleCarTaskType GetCarTaskType(string remark) => remark switch
|
{
|
"Charging" => ShuttleCarTaskType.Charging,
|
"ExitCharge" => ShuttleCarTaskType.ExitCharge,
|
};
|
|
ShuttleCarTaskType GetCarTaskType(int TaskType, short Direction)
|
{
|
ShuttleCarTaskType taskType = new ShuttleCarTaskType();
|
switch (TaskType)
|
{
|
case (int)TaskInboundTypeEnum.Inbound:
|
taskType = ShuttleCarTaskType.In;
|
break;
|
case (int)TaskOutboundTypeEnum.Outbound:
|
taskType = ShuttleCarTaskType.Out;
|
break;
|
case (int)TaskOtherTypeEnum.RelocationCar:
|
taskType = Direction == 1 ? ShuttleCarTaskType.ZeroA : ShuttleCarTaskType.ZeroB;
|
break;
|
default:
|
break;
|
}
|
return taskType;
|
}
|
/// <summary>
|
/// 获取任务状态
|
/// </summary>
|
/// <param name="TaskType"></param>
|
/// <returns></returns>
|
int GetTaskState(int TaskType)
|
{
|
int state = 0;
|
switch (TaskType)
|
{
|
case (int)TaskInboundTypeEnum.Inbound:
|
state = (int)TaskInStatusEnum.Car_InExecuting;
|
break;
|
case (int)TaskOutboundTypeEnum.Outbound:
|
state = (int)TaskOutStatusEnum.Car_OutExecuting;
|
break;
|
case (int)TaskOtherTypeEnum.RelocationCar:
|
state = (int)TaskCarStatusEnum.ShuttleCar_Executing;
|
break;
|
default:
|
break;
|
}
|
return state;
|
}
|
/// <summary>
|
/// 读取穿梭车信息
|
/// </summary>
|
/// <typeparam name="T"></typeparam>
|
/// <param name="shuttleCar"></param>
|
/// <param name="deviceChildCode"></param>
|
/// <returns></returns>
|
/// <exception cref="Exception"></exception>
|
public T ReadCustomer<T>(ShuttleCar shuttleCar, string deviceChildCode) where T : IDataTransfer, new()
|
{
|
string deviceChildCode2 = deviceChildCode;
|
if (!shuttleCar.IsConnected)
|
{
|
throw new Exception("通讯连接错误,请检查网络");
|
}
|
|
DeviceProDTO? deviceProDTO = (from x in shuttleCar.DeviceProDTOs
|
where x.DeviceProParamType == "ReadDeviceCommand" && x.DeviceChildCode == deviceChildCode2
|
orderby x.DeviceProOffset
|
select x).FirstOrDefault();
|
if (deviceProDTO == null)
|
{
|
throw new Exception("未找到协议信息");
|
}
|
|
return shuttleCar.Communicator.ReadCustomer<T>(deviceProDTO.DeviceProAddress);
|
}
|
}
|
}
|