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; using WIDESEAWCS_QuartzJob.Service; namespace WIDESEAWCS_Tasks.StackerCraneJob { public class GetDeviceAddress { /// /// 传入设备,获取当前位置位置 /// /// 设备 /// public static int GetEquipmentlocation(string ChildPosiDeviceCode) { IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode); SpeStackerCrane speStackerCrane = (SpeStackerCrane)device; if (speStackerCrane == null) return 0; DeviceProDTO? deviceProDTO = speStackerCrane.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == ChildPosiDeviceCode && x.DeviceProParamName == "RGVCurrentlocation" && x.DeviceProParamType == "RGVCurrentlocation"); int MCGStatus = GetDeviceAddress.RGVGetLine(speStackerCrane, deviceProDTO.DeviceProAddress); return MCGStatus; } /// /// 传入设备,返回设备信息 /// /// 设备 /// public static GetStackerObject GetChildDeviceCode(string ChildPosiDeviceCode) { IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode); SpeStackerCrane speStackerCrane = (SpeStackerCrane)device; if (speStackerCrane == null) { Console.WriteLine($"读取到设备为空,设备编号:{ChildPosiDeviceCode},002"); return null; } GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane); return getStackerObject; } /// /// 传入设备,返回当前设备信息 /// /// 设备 /// public static int GetEquipmentInformation(string ChildPosiDeviceCode) { IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode); SpeStackerCrane speStackerCrane = (SpeStackerCrane)device; if (speStackerCrane == null) { Console.WriteLine($"读取到设备为空,设备编号:{ChildPosiDeviceCode},003"); return 0; } GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane); if (getStackerObject.RgvCraneAutoStatusValue == RgvCraneAutoStatus.Automatic && getStackerObject.StaclerkJobJobStatusValue == RGV_Rgvtaskstutas.Ready && getStackerObject.RgvCraneWorkStatusValue == RGVStepprocess.NoAction) { return getStackerObject.RGVCurrentlocation; } else { return 0; } } /// /// 传入设备,返回当前设备信息(入库母车,需要加入是否有货判断) /// /// 设备 /// public static int GetEquipmentInMuche(string ChildPosiDeviceCode) { IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode); SpeStackerCrane speStackerCrane = (SpeStackerCrane)device; if (speStackerCrane == null) { Console.WriteLine($"读取到设备为空,设备编号:{ChildPosiDeviceCode},004"); return 0; } GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane); if (getStackerObject.RgvCraneAutoStatusValue == RgvCraneAutoStatus.Automatic && getStackerObject.StaclerkJobJobStatusValue == RGV_Rgvtaskstutas.Ready && getStackerObject.RgvCraneWorkStatusValue == RGVStepprocess.NoAction && getStackerObject.RgvCraneStatusValue == RgvEquipmentStatus.NoCargo) { return getStackerObject.RGVCurrentlocation; } else { return 0; } } /// /// 传入设备编号,判断设备状态是否可进入 /// /// /// public static bool ReturnCurrentStatus(string ChildPosiDeviceCode) { IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == ChildPosiDeviceCode); SpeStackerCrane speStackerCrane = (SpeStackerCrane)device; if (speStackerCrane == null) { Console.WriteLine($"读取到设备为空,设备编号:{ChildPosiDeviceCode},005"); return false; } GetStackerObject getStackerObject = new GetStackerObject(speStackerCrane); if (getStackerObject.RgvCraneAutoStatusValue == RgvCraneAutoStatus.Automatic && getStackerObject.StaclerkJobJobStatusValue == RGV_Rgvtaskstutas.Ready && getStackerObject.RgvCraneWorkStatusValue == RGVStepprocess.NoAction) { return true; } else { return false; } } /// /// 查询HCJ站台设备 /// /// /// /// /// public static DeviceProDTO? GetDeviceProDTO(CommonConveyorLine Commonstacker, string SCAddress, string Interactivet) { return Commonstacker.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == SCAddress && x.DeviceProParamName == Interactivet && x.DeviceProParamType == "ReadDeviceCommand"); } /// /// 查询RGV设备 /// /// /// /// /// public static DeviceProDTO? GetRGVDeviceProDTO(SpeStackerCrane Commonstacker, string SCAddress, string Interactivet) { return Commonstacker.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == SCAddress && x.DeviceProParamName == Interactivet && x.DeviceProParamType == "RGV_Rgvtaskstutas"); } /// /// 读取设备信息 /// /// /// /// public static int GetLine(CommonConveyorLine Commonstacker, string DeviceProDataBlock) { return Commonstacker.Communicator.Read(DeviceProDataBlock); } public static int RGVGetLine(SpeStackerCrane Commonstacker, string DeviceProDataBlock) { return Commonstacker.Communicator.Read(DeviceProDataBlock); } /// /// 日志记录 /// /// 设备名称 /// 文件名称 /// 日志类型 /// 内容 public void wcsWriteLog(string SCLLinStack,string Filename, string Logtype, string Magessadd) { WriteLog.Write_Log(SCLLinStack, Filename, Logtype, new { 信息 = Magessadd }); } /// /// 传入站台编号,判断是否有货 /// /// 站台编号 public static bool HCJIsstock(string Platformnumber) { return true; //获取需要区分是否去入库与去不合格载货台任务 IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "HCJ2000"); CommonConveyorLine Commonstacker = (CommonConveyorLine)device; DeviceProDTO? deviceProDTO = GetDeviceProDTO(Commonstacker, Platformnumber.ToString(), "HCJ_GoodsStatus"); int HCJGStatus = GetLine(Commonstacker, deviceProDTO.DeviceProAddress); if (HCJGStatus == 0) //为无货 { return true; } else { return false; } } /// /// 判断设备是否有货 /// public static bool Mucheywhaddres(string DeviceCode) { IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == DeviceCode); SpeStackerCrane Commonstacker = (SpeStackerCrane)device; DeviceProDTO? deviceProDTO = Commonstacker.DeviceProDTOs.FirstOrDefault(x => x.DeviceChildCode == DeviceCode && x.DeviceProParamName == "RgvEquipmentStatus" && x.DeviceProParamType == "RgvEquipmentStatus"); int MCGStatus = GetDeviceAddress.RGVGetLine(Commonstacker, deviceProDTO.DeviceProAddress); if(MCGStatus== (int)RgvEquipmentStatus.NoCargo) { return true; } return false; } /// /// 判断3个安全门状态 /// public static bool AQMStatus(List aGVStatList) { try { IDevice? device = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "HCJ2000"); CommonConveyorLine Commonstacker = (CommonConveyorLine)device; foreach (var item in aGVStatList) { DeviceProDTO? deviceProDTO = GetDeviceProDTO(Commonstacker, item.Station_code.ToString(), "HCJ_GoodsStatus"); int HCJGStatus = GetLine(Commonstacker, deviceProDTO.DeviceProAddress); if (HCJGStatus != 0) //为无货 { return false; } } return true; } catch (Exception ex) { return false; throw; } } public static List StationareaList = new List() { "RGV111", "RGV116", "RGV110", "RGV112", "RGV114", "RGV115" }; public static bool OutbounMotherChildCartbool(string DeviceChildCode) { if (StationareaList.Contains(DeviceChildCode)) { return true; } else { return false; } } public static bool OutbounMotherChildCartbool2(string DeviceChildCode) { if (DeviceChildCode=="RGV104" || DeviceChildCode == "RGV107") { return true; } else { return false; } } } }