using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEAWCS_Model.Models;
|
using WIDESEAWCS_QuartzJob.DTO;
|
using WIDESEAWCS_QuartzJob;
|
using WIDESEA_Common.Log;
|
using System.Xml.Linq;
|
using SixLabors.ImageSharp;
|
|
namespace WIDESEAWCS_Tasks.StackerCraneJob
|
{
|
|
|
public class GetDeviceAddress
|
{
|
/// <summary>
|
/// 传入设备,获取当前位置位置
|
/// </summary>
|
/// <param name="ChildPosiDeviceCode">设备</param>
|
/// <returns></returns>
|
public static int GetEquipmentlocation(string ChildPosiDeviceCode)
|
{
|
IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode);
|
SpeStackerCrane speStackerCrane = (SpeStackerCrane)device;
|
GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane);
|
return getStackerObject.RGVCurrentlocation;
|
}
|
|
/// <summary>
|
/// 传入设备,返回当前设备信息
|
/// </summary>
|
/// <param name="ChildPosiDeviceCode">设备</param>
|
/// <returns></returns>
|
public static int GetEquipmentInformation(string ChildPosiDeviceCode)
|
{
|
IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode);
|
SpeStackerCrane speStackerCrane = (SpeStackerCrane)device;
|
GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane);
|
if (getStackerObject.RgvCraneAutoStatusValue == RgvCraneAutoStatus.Automatic &&
|
getStackerObject.StaclerkJobJobStatusValue == RgvJobCraneStatus.Ready && getStackerObject.RgvCraneWorkStatusValue == RGVStepprocess.NoAction)
|
{
|
return getStackerObject.RGVCurrentlocation;
|
}
|
else
|
{
|
return 0;
|
}
|
|
}
|
|
/// <summary>
|
/// 传入设备,返回当前设备信息(入库母车,需要加入是否有货判断)
|
/// </summary>
|
/// <param name="ChildPosiDeviceCode">设备</param>
|
/// <returns></returns>
|
public static int GetEquipmentInMuche(string ChildPosiDeviceCode)
|
{
|
IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode);
|
SpeStackerCrane speStackerCrane = (SpeStackerCrane)device;
|
GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane);
|
if (getStackerObject.RgvCraneAutoStatusValue == RgvCraneAutoStatus.Automatic &&
|
getStackerObject.StaclerkJobJobStatusValue == RgvJobCraneStatus.Ready && getStackerObject.RgvCraneWorkStatusValue == RGVStepprocess.NoAction && getStackerObject.RgvCraneStatusValue == RgvEquipmentStatus.NoCargo)
|
{
|
return getStackerObject.RGVCurrentlocation;
|
}
|
else
|
{
|
return 0;
|
}
|
|
}
|
|
|
/// <summary>
|
/// 传入设备编号,判断设备状态是否可进入
|
/// </summary>
|
/// <param name="ChildPosiDeviceCode"></param>
|
/// <returns></returns>
|
public static bool ReturnCurrentStatus(string ChildPosiDeviceCode)
|
{
|
IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode);
|
SpeStackerCrane speStackerCrane = (SpeStackerCrane)device;
|
GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane);
|
if (getStackerObject.RgvCraneAutoStatusValue == RgvCraneAutoStatus.Automatic &&
|
getStackerObject.StaclerkJobJobStatusValue == RgvJobCraneStatus.Ready && getStackerObject.RgvCraneWorkStatusValue == RGVStepprocess.NoAction)
|
{
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
|
|
/// <summary>
|
/// 查询HCJ站台设备
|
/// </summary>
|
/// <param name="Commonstacker"></param>
|
/// <param name="SCAddress"></param>
|
/// <param name="Interactivet"></param>
|
/// <returns></returns>
|
public static DeviceProDTO? GetDeviceProDTO(CommonStackerCrane Commonstacker, string SCAddress, string Interactivet)
|
{
|
return Commonstacker.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == SCAddress && x.DeviceProParamName == Interactivet && x.DeviceProParamType == "ReadDeviceCommand");
|
}
|
|
/// <summary>
|
/// 查询RGV设备
|
/// </summary>
|
/// <param name="Commonstacker"></param>
|
/// <param name="SCAddress"></param>
|
/// <param name="Interactivet"></param>
|
/// <returns></returns>
|
public static DeviceProDTO? GetRGVDeviceProDTO(SpeStackerCrane Commonstacker, string SCAddress, string Interactivet)
|
{
|
return Commonstacker.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == SCAddress && x.DeviceProParamName == Interactivet && x.DeviceProParamType == "ReadDeviceCommand");
|
}
|
/// <summary>
|
/// 读取设备信息
|
/// </summary>
|
/// <param name="conveyorLine"></param>
|
/// <param name="DeviceProDataBlock"></param>
|
/// <returns></returns>
|
public static int GetLine(CommonStackerCrane Commonstacker, string DeviceProDataBlock)
|
{
|
return Commonstacker.Communicator.Read<short>(DeviceProDataBlock);
|
}
|
|
public static int RGVGetLine(SpeStackerCrane Commonstacker, string DeviceProDataBlock)
|
{
|
return Commonstacker.Communicator.Read<short>(DeviceProDataBlock);
|
}
|
|
|
/// <summary>
|
/// 日志记录
|
/// </summary>
|
/// <param name="SCLLinStack">设备名称</param>
|
/// <param name="Filename">文件名称</param>
|
/// <param name="Logtype">日志类型</param>
|
/// <param name="Magessadd">内容</param>
|
public void wcsWriteLog(string SCLLinStack,string Filename, string Logtype, string Magessadd)
|
{
|
WriteLog.Write_Log(SCLLinStack, Filename, Logtype, new { 信息 = Magessadd });
|
}
|
|
/// <summary>
|
/// 传入站台编号,判断是否有货
|
/// </summary>
|
/// <param name="Platformnumber">站台编号</param>
|
public static bool HCJIsstock(string Platformnumber)
|
{
|
//获取需要区分是否去入库与去不合格载货台任务
|
IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "HCJ2000");
|
CommonStackerCrane Commonstacker = (CommonStackerCrane)device;
|
DeviceProDTO? deviceProDTO = GetDeviceProDTO(Commonstacker, Platformnumber.ToString(), "HCJ_GoodsStatus");
|
int HCJGStatus = GetLine(Commonstacker, deviceProDTO.DeviceProAddress);
|
if (HCJGStatus == 0) //为无货
|
{
|
return true;
|
}
|
else
|
{
|
return false;
|
}
|
}
|
}
|
}
|