using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Threading; using WIDESEA_Core.EFDbContext; using WIDESEA_Core.Utilities; using WIDESEA_Entity.DomainModels; using WIDESEA_Services.IRepositories; using WIDESEA_Services.Repositories; using WIDESEA_Services.Services; using WIDESEA_WCS.WCSClient; namespace WIDESEA_WCS { public partial class StackerExecutor { private static int _readRWSignalso = 0;//_readZTBUPSignalso /// /// 信号灯控制 /// /// public static void HCJ_XHD(PLCClient client) { if (Interlocked.Exchange(ref _readRWSignalso, 1) == 0) { try { VOLContext Context = new VOLContext(); WebResponseContent responseContent = new WebResponseContent(); Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context); List dt_Agvtasks = agvRepository.Find(d => true); WebResponseContent wificontent = new WebResponseContent(); if (dt_Agvtasks.Count != 0) { foreach (var item in dt_Agvtasks) { base_ware_location ware_Locations1 = locRepository.FindFirst(d => d.upper_code == item.agv_fromaddress); base_ware_location ware_Locations2 = locRepository.FindFirst(d => d.upper_code == item.agv_toaddress); if (ware_Locations1 != null && ware_Locations2 != null) { Dictionary loctionnum = new Dictionary(); loctionnum.Add("up_Location", ware_Locations1.upper_code.ToString()); loctionnum.Add("dw_Location", ware_Locations2.upper_code.ToString()); string wificont = WIFIAPIInvoke.Start_XHD1(loctionnum); wificontent = JsonConvert.DeserializeObject(wificont); } else if (ware_Locations1 != null) { Dictionary loctionnum = new Dictionary(); loctionnum.Add("up_Location", ware_Locations1.upper_code.ToString()); string wificont = WIFIAPIInvoke.Start_XHD2(loctionnum); wificontent = JsonConvert.DeserializeObject(wificont); } else if (ware_Locations2 != null) { Dictionary loctionnum = new Dictionary(); loctionnum.Add("up_Location", ware_Locations2.upper_code.ToString()); string wificont = WIFIAPIInvoke.Start_XHD2(loctionnum); wificontent = JsonConvert.DeserializeObject(wificont); } } } List base_Ware_Locations = locRepository.Find(d => d.location_state == "LocationState_Stored"); if (base_Ware_Locations != null) { foreach (var item in base_Ware_Locations) { if (item.logic_col == 1) { if (item.light_color != "green") { Dictionary loctionnum = new Dictionary(); loctionnum.Add("up_Location", item.upper_code.ToString()); string wificont = WIFIAPIInvoke.Start_XHD_LV(loctionnum); wificontent = JsonConvert.DeserializeObject(wificont); } } else if (item.logic_col == 0) { if (item.light_color != "yellow") { Dictionary loctionnum = new Dictionary(); loctionnum.Add("up_Location", item.upper_code.ToString()); string wificont = WIFIAPIInvoke.Start_XHD_Yellow(loctionnum); wificontent = JsonConvert.DeserializeObject(wificont); } } } } } catch (Exception) { throw; } finally { Interlocked.Exchange(ref _readRWSignalso, 0); } } } } }