using Org.BouncyCastle.Bcpg.OpenPgp;
|
using WIDESEA_Common;
|
using WIDESEA_DTO.AGV;
|
using WIDESEA_IServices;
|
using WIDESEA_StorageSocketServices;
|
using WIDESEAWCS_BasicInfoRepository;
|
using WIDESEAWCS_Model.Models;
|
|
namespace WIDESEAWCS_BasicInfoService
|
{
|
public partial class Dt_StationManagerService : ServiceBase<Dt_StationManager, IDt_StationManagerRepository>, IDt_StationManagerService
|
{
|
private readonly ISys_ConfigService _sys_ConfigService;
|
private readonly IDt_TaskRepository _taskRepository;
|
|
string url = AppSettings.Configuration["AGVIP"];
|
public Dt_StationManagerService(IDt_StationManagerRepository BaseDal, ISys_ConfigService sys_ConfigService, IDt_TaskRepository taskRepository) : base(BaseDal)
|
{
|
_sys_ConfigService = sys_ConfigService;
|
_taskRepository = taskRepository;
|
}
|
public WebResponseContent GetStationStatus()
|
{
|
List<Station> status = new List<Station>();
|
|
StationStatus stationIn = GetStationStatus("B002");
|
StationStatus stationOut = GetStationStatus("B001");
|
//StationStatus stationIn = new StationStatus()
|
//{
|
// WorkstationT="0",
|
// WorkstationO="0"
|
//};
|
//StationStatus stationOut = new StationStatus()
|
//{
|
// WorkstationT = "0",
|
// WorkstationO = "0"
|
//};
|
List<OutStationStatus> outStationStatus = GetOutStationStatus(stationOut);
|
List<InStationStatus> inStationStatus = GetInStationStatus(stationIn);
|
|
if(outStationStatus != null && outStationStatus.Count > 0)
|
{
|
foreach(OutStationStatus item in outStationStatus)
|
{
|
var station = BaseDal.QueryFirst(x => x.stationHasTask == "抽检出库"&&x.HostName==item.StationName);
|
if(station != null)
|
{
|
status.Add(new Station()
|
{
|
Name = item.StationName,
|
Status = station.stationHasTask,
|
StationType = "出库"
|
});
|
}
|
else if (item.IsDistributionTask == "")
|
{
|
status.Add(new Station()
|
{
|
Name=item.StationName,
|
Status=item.StationEnable,
|
StationType = "出库"
|
});
|
}
|
else
|
{
|
status.Add(new Station()
|
{
|
Name = item.StationName,
|
Status = item.IsDistributionTask,
|
StationType = "出库"
|
});
|
}
|
}
|
}
|
|
if (outStationStatus != null && outStationStatus.Count > 0)
|
{
|
foreach (InStationStatus item in inStationStatus)
|
{
|
var station = BaseDal.QueryFirst(x => x.stationHasTask == "抽检出库" && x.HostName == item.StationName);
|
if (station != null)
|
{
|
status.Add(new Station()
|
{
|
Name = item.StationName,
|
Status = station.stationHasTask,
|
StationType="入库"
|
});
|
}
|
else if (item.IsDistributionTask == "")
|
{
|
status.Add(new Station()
|
{
|
Name = item.StationName,
|
Status = item.StationEnable,
|
StationType = "入库"
|
});
|
}
|
else
|
{
|
status.Add(new Station()
|
{
|
Name = item.StationName,
|
Status = item.IsDistributionTask,
|
StationType = "入库"
|
});
|
}
|
}
|
}
|
foreach (var item in status)
|
{
|
switch (item.Status)
|
{
|
case "出库":
|
item.Color = "#80dfdf";
|
break;
|
case "入库":
|
item.Color = "#80bcfe";
|
break;
|
case "空闲":
|
item.Color = "#959595";
|
break;
|
case "有料":
|
item.Color = "#83b833";
|
break;
|
case "抽检出库":
|
item.Color = "#f59a23";
|
break;
|
default:
|
break;
|
}
|
}
|
var obj = new StationStatusPair
|
{
|
Station = status,
|
};
|
return WebResponseContent.Instance.OK(data:obj);
|
}
|
public List<OutStationStatus> GetOutStationStatus(StationStatus stationOut)
|
{
|
List<OutStationStatus> outStationStatus = new List<OutStationStatus>();
|
var taskOutStationO = _taskRepository.QueryFirst(x => x.SourceAddress == "B001::1" || x.TargetAddress == "B001::1");
|
var taskOutStationT = _taskRepository.QueryFirst(x => x.SourceAddress == "B001::2" || x.TargetAddress == "B001::2");
|
outStationStatus.Add(new OutStationStatus()
|
{
|
StationName = "04",
|
StationEnable = stationOut.WorkstationO == "0" ? "空闲" : "有料",
|
IsDistributionTask = taskOutStationO == null ? "" : taskType(taskOutStationO),
|
});
|
outStationStatus.Add(new OutStationStatus()
|
{
|
StationName = "03",
|
StationEnable = stationOut.WorkstationT == "0" ? "空闲" : "有料",
|
IsDistributionTask = taskOutStationT == null ? "" : taskType(taskOutStationT),
|
});
|
return outStationStatus;
|
}
|
|
public List<InStationStatus> GetInStationStatus(StationStatus stationIn)
|
{
|
List<InStationStatus> inStationStatus = new List<InStationStatus>();
|
var taskOutStationO = _taskRepository.QueryFirst(x => x.SourceAddress == "B002::1" || x.TargetAddress == "B002::1");
|
var taskOutStationT = _taskRepository.QueryFirst(x => x.SourceAddress == "B002::2" || x.TargetAddress == "B002::2");
|
inStationStatus.Add(new InStationStatus()
|
{
|
StationName = "02",
|
StationEnable = stationIn.WorkstationO == "0" ? "空闲" : "有料",
|
IsDistributionTask = taskOutStationO == null ? "" : taskType(taskOutStationO),
|
});
|
inStationStatus.Add(new InStationStatus()
|
{
|
StationName = "01",
|
StationEnable = stationIn.WorkstationT == "0" ? "空闲" : "有料",
|
IsDistributionTask = taskOutStationT == null ? "" : taskType(taskOutStationT),
|
});
|
return inStationStatus;
|
}
|
public string taskType(Dt_Task task)
|
{
|
string TaskType = String.Empty;
|
if (task != null)
|
{
|
switch (task.TaskType)
|
{
|
case (int)TaskInboundTypeEnum.Inbound:
|
//入库
|
TaskType = "入库";
|
break;
|
case (int)TaskOutboundTypeEnum.Outbound:
|
//出库
|
TaskType = "出库";
|
break;
|
case (int)TaskRelocationTypeEnum.Relocation:
|
TaskType = "移库";
|
break;
|
case (int)TaskStationTypeEnum.StationToStation:
|
TaskType = "站台出库";
|
break;
|
default: break;
|
}
|
|
}
|
return TaskType;
|
}
|
public StationStatus GetStationStatus(string stationName)
|
{
|
string urlnew = url + "/ilns/ctrl/getState";
|
var result = HttpsClient.PostAsync(urlnew, JsonConvert.DeserializeObject<Dictionary<string, object>>(new { ctrlName = stationName }.ToJson())).Result;
|
return JsonConvert.DeserializeObject<StationStatus>(result.ToString());
|
}
|
public class StationStatusPair
|
{
|
public List<Station> Station { get; set; }
|
}
|
public class Station
|
{
|
public string Name { get; set; }
|
|
public string Status { get; set; }
|
public string StationType { get; set; }
|
public string Color { get; set; }
|
}
|
}
|
}
|