From 41702c7ce4c88ad70f52d83d153dd4c596ff69d5 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <1247017146@qq.com>
Date: 星期一, 26 五月 2025 15:29:36 +0800
Subject: [PATCH] 1

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_StationManagerService.cs |  212 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 210 insertions(+), 2 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_StationManagerService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_StationManagerService.cs"
index 78476c8..954ee64 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_StationManagerService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_StationManagerService.cs"
@@ -1,4 +1,8 @@
-锘縰sing WIDESEA_IServices;
+锘縰sing Org.BouncyCastle.Bcpg.OpenPgp;
+using WIDESEA_Common;
+using WIDESEA_DTO.AGV;
+using WIDESEA_IServices;
+using WIDESEA_StorageSocketServices;
 using WIDESEAWCS_BasicInfoRepository;
 using WIDESEAWCS_Model.Models;
 
@@ -7,10 +11,214 @@
     public partial class Dt_StationManagerService : ServiceBase<Dt_StationManager, IDt_StationManagerRepository>, IDt_StationManagerService
     {
         private readonly ISys_ConfigService _sys_ConfigService;
+        private readonly IDt_TaskRepository _taskRepository;
 
-        public Dt_StationManagerService(IDt_StationManagerRepository BaseDal, ISys_ConfigService sys_ConfigService) : base(BaseDal)
+        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 = "B001" }.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; }
         }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3