using AutoMapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Communicator;
using WIDESEAWCS_Core;
using WIDESEAWCS_DTO.AGVInfo;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_QuartzJob.Service;
using WIDESEAWCS_Tasks.ConveyorLineJob.ConveyorLineExtend;
namespace WIDESEAWCS_Tasks
{
public partial class AGVsignal
{
///
/// AGV与输送线交互
///
///
///
public static WebResponseContent AGVRequestin(ConveyorLineDTO conveyor)
{
WebResponseContent content = new WebResponseContent();
try
{
if (conveyor == null) throw new Exception("请求数据为空");
if (string.IsNullOrEmpty(conveyor.Station)) throw new Exception("站点编号为空");
CommonConveyorLine conveyorLine = Storage.Devices.FirstOrDefault(x => x.DeviceName == "输送线") as CommonConveyorLine;
if (!conveyorLine.IsConnected) throw new Exception($"通讯连接错误,请检查网络");
switch (conveyor.Type)
{
case 1:
content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestPut, true, conveyor.Station);
if (content.Status) content.Status = conveyorLine.GetValue(ConveyorLine_AGV.ConveyorLinePermitPut, conveyor.Station);
break;
case 2:
content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, true, conveyor.Station);
break;
case 3:
content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestTake, true, conveyor.Station);
if (content.Status) content.Status = conveyorLine.GetValue(ConveyorLine_AGV.ConveyorLinePermitTake, conveyor.Station);
break;
case 4:
content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, true, conveyor.Station);
break;
default: throw new Exception($"类型有误[Type:{conveyor.Type}]");
}
content = content.Status ? content.OK() : content.Error();
}
catch (Exception ex)
{
content.Error(ex.Message);
}
return content;
}
public static WebResponseContent AGVRequestin(T conveyor) where T : ConveyorLineDTO, new()
{
WebResponseContent content = new WebResponseContent();
try
{
if (conveyor == null) throw new Exception("请求数据为空");
if (string.IsNullOrEmpty(conveyor.Station)) throw new Exception("站点编号为空");
CommonConveyorLine conveyorLine = Storage.Devices.FirstOrDefault(x => x.DeviceName == "输送线") as CommonConveyorLine;
if (!conveyorLine.IsConnected) throw new Exception($"通讯连接错误,请检查网络");
switch (conveyor.Type)
{
case 1:
content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestPut, true, conveyor.Station);
if (content.Status) content.Status = conveyorLine.GetValue(ConveyorLine_AGV.ConveyorLinePermitPut, conveyor.Station);
break;
case 2:
content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVPutComplete, true, conveyor.Station);
break;
case 3:
content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVRequestTake, true, conveyor.Station);
if (content.Status) content.Status = conveyorLine.GetValue(ConveyorLine_AGV.ConveyorLinePermitTake, conveyor.Station);
break;
case 4:
content.Status = conveyorLine.SetValue(ConveyorLine_AGV.WriteAGVTakeComplete, true, conveyor.Station);
break;
default: throw new Exception($"类型有误[Type:{conveyor.Type}]");
}
content = content.Status ? content.OK() : content.Error();
}
catch (Exception ex)
{
content.Error(ex.Message);
}
return content;
}
}
}