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);
}
}
}
}
}