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, 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 status = new List(); 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 = GetOutStationStatus(stationOut); List 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 GetOutStationStatus(StationStatus stationOut) { List outStationStatus = new List(); 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 GetInStationStatus(StationStatus stationIn) { List inStationStatus = new List(); 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>(new { ctrlName = "B001" }.ToJson())).Result; return JsonConvert.DeserializeObject(result.ToString()); } public class StationStatusPair { public List 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; } } } }