From 48d66a079c307356997fb400d27907ff6d363b7b Mon Sep 17 00:00:00 2001
From: liudl <673013083@qq.com>
Date: 星期一, 20 一月 2025 08:35:37 +0800
Subject: [PATCH] 修改2楼分拣和1楼拆垛时获取拆垛信息接口

---
 Admin.NET/WCS.Application/PLC/PLCCommon.cs |  353 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 247 insertions(+), 106 deletions(-)

diff --git a/Admin.NET/WCS.Application/PLC/PLCCommon.cs b/Admin.NET/WCS.Application/PLC/PLCCommon.cs
index 6aca413..b1be205 100644
--- a/Admin.NET/WCS.Application/PLC/PLCCommon.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCCommon.cs
@@ -1,4 +1,6 @@
-锘縰sing Microsoft.AspNetCore.SignalR;
+锘縰sing Elastic.Clients.Elasticsearch.Tasks;
+using Furion.Logging;
+using Microsoft.AspNetCore.SignalR;
 using RazorEngine.Compilation.ImpromptuInterface.Dynamic;
 using System;
 using System.Collections.Generic;
@@ -22,7 +24,7 @@
     public static PlcTaskInfo GetCTaskInfo(string endLocat,string taskType,string roadWay,string endRoadWay) 
     {
         // 鍚勫眰杈撻�佺嚎璺烘満鏀捐揣宸ヤ綅闆嗗悎
-        var conveyList1 = new List<string>() { "033", "039", "044", "051", "059" };
+        var conveyList1 = new List<string>() { "033", "039", "044", "051", "059","009" };
         var conveyList2 = new List<string>() { "205", "234" };
         var conveyList3 = new List<string>() { "440", "443" };
 
@@ -30,13 +32,14 @@
         taskInfo.EndCeng = "3";
         taskInfo.EndLie = "65";
         taskInfo.EndPai = int.Parse(roadWay.Substring(1,2)).ToString();
+        
 
         // 绉诲簱浠诲姟
         if (taskType == "2") 
         {
             if (roadWay == endRoadWay)                                              // 鍚屽贩閬撶Щ搴�,鑾峰彇鐩爣鍦板潃
             {
-                taskInfo = GetEndPai(endLocat.Substring(1, 2), endLocat.Substring(0, 2), endLocat.Substring(4, 2), endLocat.Substring(6, 2));
+                taskInfo = GetEndPai(endRoadWay.Substring(1, 2),endLocat.Substring(2, 2), endLocat.Substring(0, 2), endLocat.Substring(4, 2), endLocat.Substring(6, 2));
             }
             else                                                                    // 璺ㄥ贩閬撶Щ搴擄紝鑾峰彇涓夋ゼ鍑哄簱鍙�
             {
@@ -206,6 +209,114 @@
             }
 
         }
+        //鏍规嵁宸烽亾鍙e拰灞傛暟纭鍑哄簱宸ヤ綅鎺�
+
+
+        switch (roadWay)
+        {
+            case "R01":
+
+                if (taskInfo.EndCeng == "1")
+                {
+                    taskInfo.EndPai = "2";
+                }
+                if (taskInfo.EndCeng == "2" || taskInfo.EndCeng == "3")
+                {
+                    taskInfo.EndPai = "3";
+                }
+                break;
+            case "R02":
+
+                if (taskInfo.EndCeng == "1")
+                {
+                    taskInfo.EndPai = "2";
+                }
+                if (taskInfo.EndCeng == "2" || taskInfo.EndCeng == "3")
+                {
+                    taskInfo.EndPai = "3";
+                }
+                break;
+            case "R03":
+                if (taskInfo.EndCeng == "1")
+                {
+                    taskInfo.EndPai = "2";
+                }
+                if (taskInfo.EndCeng == "2" || taskInfo.EndCeng == "3")
+                {
+                    taskInfo.EndPai = "3";
+                }
+                break;
+            case "R04":
+                if (taskInfo.EndCeng == "1")
+                {
+                    taskInfo.EndPai = "2";
+                }
+                if (taskInfo.EndCeng == "2" || taskInfo.EndCeng == "3")
+                {
+                    taskInfo.EndPai = "3";
+                }
+                break;
+            case "R05":
+                if (taskInfo.EndCeng == "1")
+                {
+                    taskInfo.EndPai = "2";
+                }
+                if (taskInfo.EndCeng == "2" || taskInfo.EndCeng == "3")
+                {
+                    taskInfo.EndPai = "3";
+                }
+                break;
+            case "R06":
+                if (taskInfo.EndCeng == "1" || taskInfo.EndCeng == "2" )
+                {
+                    taskInfo.EndPai = "2";
+                }
+                if ( taskInfo.EndCeng == "3")
+                {
+                    taskInfo.EndPai = "3";
+                }
+                break;
+            case "R07":
+                if (taskInfo.EndCeng == "1" )
+                {
+                    taskInfo.EndPai = "2";
+                }
+                if ( taskInfo.EndCeng == "2" || taskInfo.EndCeng == "3")
+                {
+                    taskInfo.EndPai = "3";
+                }
+                break;
+            case "R08":
+                if (taskInfo.EndCeng == "1")
+                {
+                    taskInfo.EndPai = "2";
+                }
+                if (taskInfo.EndCeng == "2" || taskInfo.EndCeng == "3")
+                {
+                    taskInfo.EndPai = "3";
+                }
+                break;
+            case "R09":
+                if (taskInfo.EndCeng == "1")
+                {
+                    taskInfo.EndPai = "2";
+                }
+                if (taskInfo.EndCeng == "2" || taskInfo.EndCeng == "3")
+                {
+                    taskInfo.EndPai = "3";
+                }
+                break;
+            case "R10":
+                if (taskInfo.EndCeng == "1" || taskInfo.EndCeng == "2")
+                {
+                    taskInfo.EndPai = "2";
+                }
+                if (taskInfo.EndCeng == "3")
+                {
+                    taskInfo.EndPai = "3";
+                }
+                break;
+        }
 
         return taskInfo;
     }
@@ -215,80 +326,83 @@
     /// </summary>
     /// <param name="startStation"></param>
     /// <returns></returns>
-    public static PlcTaskInfo GetPlcIp(string startStation) 
+    public static PLCUtil GetPlcIp(string startStation) 
     {
-        PlcTaskInfo taskInfo = new PlcTaskInfo();
-
-        var conveyList1 = new List<string>() { "147", "145", "139", "137", "129", "127", "121", "119", "111", "109", "103", "101", "093", "091", "085", "083", "075", "073", "067", "065" };
-        var conveyList2 = new List<string>() { "252", "254", "260", "262", "272", "272", "278", "280", "288", "290", "294", "301", "307", "309", "315", "317", "325", "327", "331", "337" };
-        var conveyList3 = new List<string>() { "401", "402", "405", "406", "409", "410", "413", "414", "417", "418", "421", "422", "425", "426", "429", "430", "433", "434", "437", "438" };
+        startStation = startStation.PadLeft(3, '0');
+        string strIp = "";
+        var conveyList1 = new List<string>() { "147", "145", "139", "137", "129", "127", "121", "119", "111", "109", "103", "101", "093", "091", "085", "083", "075", "073", "067", "065","033","039","044" ,"051","059","009"};
+        var conveyList2 = new List<string>() { "205", "234", "252", "254", "260", "262", "270", "272", "278", "280", "288", "290", "294", "301", "307", "309", "315", "317", "325", "327", "331", "337" };
+        var conveyList3 = new List<string>() { "401", "402", "405", "406", "409", "410", "413", "414", "417", "418", "421", "422", "425", "426", "429", "430", "433", "434", "437", "438", "440", "443" };
         if (conveyList1.Contains(startStation))
         {
-            taskInfo.Ip = "10.18.51.110";
+            strIp = "10.18.51.110";
         }
         else if (conveyList2.Contains(startStation))
         {
 
-            taskInfo.Ip = "10.18.51.120";
+            strIp = "10.18.51.120";
         }
         else if (conveyList3.Contains(startStation))
         {
 
-            taskInfo.Ip = "10.18.51.130";
+            strIp = "10.18.51.130";
         }
         else
         {
-            throw new Exception("宸ヤ綅鏈煡璇㈠埌");
+            throw Oops.Bah("宸ヤ綅鏈煡璇㈠埌");
         }
-
-        return taskInfo;
+        var plcConveyorConn = PLCTaskAction.listPlcConn.First(m => m.PlcIP == strIp);
+        return plcConveyorConn;
     }
 
     /// <summary>
-    /// 鏍规嵁wms鐩爣鍦板潃杞崲涓篜lc鐩爣鍦板潃
+    /// 鏍规嵁wms鐩爣鍦板潃杞崲涓篜lc鐩爣鍦板潃	03010301
     /// </summary>
-    /// <param name="lie">鍒�</param>
-    /// <param name="pai">鎺�</param>
+    /// <param name="road">宸烽亾02</param>
+    /// <param name="lie">鍒�01</param>
+    /// <param name="pai">鎺�03</param>
     /// <param name="ceng">灞�</param>
-    /// <param name="dept">娣卞害</param>
+    /// <param name="dept">娣卞害01</param>
     /// <returns></returns>
-    public static PlcTaskInfo GetEndPai(string lie, string pai,string ceng, string dept) 
+    public static PlcTaskInfo GetEndPai(string road,string lie, string pai,string ceng, string dept) 
     {
-        var roadNum = int.Parse(lie);
+        var roadNum = int.Parse(road);
+        var lieNum = int.Parse(lie);
         var paiNum = int.Parse(pai);
+        var cengNum = int.Parse(ceng);
         var deptNum = int.Parse(dept);
 
         var paiVal = 0;
         // 鍒ゆ柇宸烽亾濂囧伓鏁�
-        if (roadNum % 2 == 0)// 鍋舵暟
-        {
-            // 鍒ゆ柇鎺掑鍋舵暟
-            if (paiNum % 2 == 0)
-            {
-                if (deptNum == 1)
-                {
-                    paiVal = 3;
-                }
-                else
-                {
-                    paiVal = 4;
-                }
-            }
-            else
-            {
-                if (deptNum == 1)
-                {
-                    paiVal = 1;
-                }
-                else
-                {
-                    paiVal = 2;
-                }
-            }
+        //if (roadNum % 2 == 0)// 鍋舵暟
+        //{
+        //    // 鍒ゆ柇鎺掑鍋舵暟
+        //    if (paiNum % 2 == 0)
+        //    {
+        //        if (deptNum == 1)
+        //        {
+        //            paiVal = 3;
+        //        }
+        //        else
+        //        {
+        //            paiVal = 4;
+        //        }
+        //    }
+        //    else
+        //    {
+        //        if (deptNum == 1)
+        //        {
+        //            paiVal = 2;
+        //        }
+        //        else
+        //        {
+        //            paiVal = 1;
+        //        }
+        //    }
 
-        }
-        else   // 濂囨暟
-        {
+        //}
+        //else   // 濂囨暟
+        //{
             // 鍒ゆ柇鎺掑鍋舵暟
             if (paiNum % 2 == 0)
             {
@@ -314,13 +428,16 @@
 
                 }
             }
-        }
+        //}
 
         PlcTaskInfo taskInfo = new PlcTaskInfo();
-        taskInfo.EndPai = pai;
-        taskInfo.EndCeng = ceng;
-        taskInfo.EndLie = paiVal.ToString();
-
+        taskInfo.EndPai = paiVal.ToString();
+        taskInfo.EndCeng = cengNum.ToString();
+        taskInfo.EndLie = lieNum.ToString() ;
+        if (taskInfo.EndPai == "0" || taskInfo.EndCeng == "0" || taskInfo.EndLie == "0")
+        {
+            throw new Exception("鎺掑垪灞傝浆鎹㈠け璐�");
+        }
         return taskInfo;
     }
     
@@ -488,6 +605,8 @@
     /// <returns>璺烘満鑱旀満</returns>
     public static string GetRoadwayByStation(string StationNum)
     {
+        StationNum = StationNum.PadLeft(3, '0');
+
         string value = "";
         var conveyList1 = new List<string>() { "147", "145", "252", "254", "401", "402", };
         var conveyList2 = new List<string>() { "139", "137", "260", "262", "405", "406", };
@@ -552,28 +671,46 @@
     public static string GetRoadwayByStationNew(string StationNum)
     {
         string value = "";
-        var conveyList1 = new List<string>() { "147", "145", "139", "137", "129", "127", "121", "119", "111", "109", "103", "101", "093", "091", "085", "083", "075", "073", "067", "065" };
-        var conveyList2 = new List<string>() { "252", "254", "260", "262", "272", "270", "278", "280", "288", "290", "294", "301", "307", "309", "315", "317", "325", "327", "331", "337" };
-        var conveyList3 = new List<string>() { "401", "402", "405", "406", "409", "410", "413", "414", "417", "418", "421", "422", "425", "426", "429", "430", "433", "434", "437", "438" };
+        //var conveyList1 = new List<string>() { "147", "145", "139", "137", "129", "127", "121", "119", "111", "109", "103", "101", "093", "091", "085", "083", "075", "073", "067", "065" };
+        //var conveyList2 = new List<string>() { "252", "254", "260", "262", "272", "270", "278", "280", "288", "290", "294", "301", "307", "309", "315", "317", "325", "327", "331", "337" };
+        //var conveyList3 = new List<string>() { "401", "402", "405", "406", "409", "410", "413", "414", "417", "418", "421", "422", "425", "426", "429", "430", "433", "434", "437", "438" };
 
-        if (conveyList1.Contains(StationNum))
+       var ipInfo = _db.Queryable<WcsPlc>().Where(s =>  s.Type == PLCTypeEnum.ConveyorLine && s.IsDelete == false).ToList();  //s.Type == PLCTypeEnum.StackingMachine ||
+        var ip1 = ipInfo.First(m => m.Text == "1灞傛墭鐩樿緭閫佺嚎");
+        var ip2 = ipInfo.First(m => m.Text == "2灞傛墭鐩樿緭閫佺嚎");
+        var ip3 = ipInfo.First(m => m.Text == "3灞傛墭鐩樿緭閫佺嚎");
+
+        if (ip1 != null) 
         {
-            value = "1";
-        }
-        else if (conveyList2.Contains(StationNum))
-        {
-            value = "2";
-        }
-        else if (conveyList3.Contains(StationNum))
-        {
-            value = "3";
-        }
-        else
-        {
-            throw new Exception("宸ヤ綅鏈煡璇㈠埌");
+            var dev1 = PLCTaskAction.plcDevices.Where(m => m.IsDelete == false && m.PlcId == ip1.Id).Select(m => m.StationNum).ToList();
+            if (dev1.Contains(StationNum))
+            {
+                value = "1";
+                return value;
+            }
         }
 
-        return value;
+        if (ip2 != null)
+        {
+            var dev2 = PLCTaskAction.plcDevices.Where(m => m.IsDelete == false && m.PlcId == ip2.Id).Select(m => m.StationNum).ToList();
+            if (dev2.Contains(StationNum))
+            {
+                value = "2";
+                return value;
+            }
+        }
+
+        if (ip3 != null)
+        {
+            var dev3 = PLCTaskAction.plcDevices.Where(m => m.IsDelete == false && m.PlcId == ip3.Id).Select(m => m.StationNum).ToList();
+            if (dev3.Contains(StationNum))
+            {
+                value = "3";
+                return value;
+            }
+        }
+
+        return "";
     }
 
     /// <summary>
@@ -679,11 +816,11 @@
 
 
     /// <summary>
-    /// 鏍规嵁鍌ㄤ綅鎺掕幏鍙栬泛鏈哄搴旂殑鍦板潃鎺�
+    /// 鏍规嵁鍌ㄤ綅鎺掕幏鍙栬泛鏈哄搴旂殑鍦板潃鎺�03010302
     /// </summary>
-    /// <param name="road">鎺�</param>
-    /// <param name="pai">鎺�</param>
-    /// <param name="dept">娣卞害</param>
+    /// <param name="road">鎺�02</param>
+    /// <param name="pai">鎺�03</param>
+    /// <param name="dept">娣卞害02</param>
     /// <returns></returns>
     public static int GetDjAdress(string road, string pai, string dept)
     {
@@ -692,36 +829,36 @@
         var deptNum = int.Parse(dept);
 
         var paiVal = 0;
-        // 鍒ゆ柇宸烽亾濂囧伓鏁�
-        if (roadNum % 2 == 0)// 鍋舵暟
-        {
-            // 鍒ゆ柇鎺掑鍋舵暟
-            if (paiNum % 2 == 0)
-            {
-                if (deptNum == 1)
-                {
-                    paiVal = 3;
-                }
-                else
-                {
-                    paiVal = 4;
-                }
-            }
-            else
-            {
-                if (deptNum == 1)
-                {
-                    paiVal = 1;
-                }
-                else
-                {
-                    paiVal = 2;
-                }
-            }
+        //// 鍒ゆ柇宸烽亾濂囧伓鏁�
+        //if (roadNum % 2 == 0)// 鍋舵暟
+        //{
+        //    // 鍒ゆ柇鎺掑鍋舵暟
+        //    if (paiNum % 2 == 0)
+        //    {
+        //        if (deptNum == 1)
+        //        {
+        //            paiVal = 3;
+        //        }
+        //        else
+        //        {
+        //            paiVal = 4;
+        //        }
+        //    }
+        //    else
+        //    {
+        //        if (deptNum == 1)
+        //        {
+        //            paiVal = 2;
+        //        }
+        //        else
+        //        {
+        //            paiVal = 1;
+        //        }
+        //    }
 
-        }
-        else   // 濂囨暟
-        {
+        //}
+        //else   // 濂囨暟
+        //{
             // 鍒ゆ柇鎺掑鍋舵暟
             if (paiNum % 2 == 0)
             {
@@ -747,8 +884,12 @@
 
                 }
             }
+        //}
+        if (paiVal == 0)
+        {
+            Log.Error("鎺掕浆鎹㈠け璐�!");
+            throw new Exception("鎺掕浆鎹㈠け璐�");
         }
-
         return paiVal;
 
     }

--
Gitblit v1.8.0