From 8ae6fce575bd8b29e858724df186535abe5b6e52 Mon Sep 17 00:00:00 2001
From: hwh <332078369@qq.com>
Date: 星期四, 19 九月 2024 16:45:42 +0800
Subject: [PATCH] 堆垛机不空跑

---
 Admin.NET/WCS.Application/PLC/PLCService.cs |   76 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 76 insertions(+), 0 deletions(-)

diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs
index 87b4c3c..da065a4 100644
--- a/Admin.NET/WCS.Application/PLC/PLCService.cs
+++ b/Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -643,6 +643,82 @@
         }
     }
     /// <summary>
+    /// 鍫嗗灈鏈轰笉绌鸿窇
+    /// </summary>
+    /// <param name="modTask">鎿嶄綔瀹屾垚鐨勪换鍔�</param>
+    /// <param name="plcConn">plc杩炴帴</param>
+    private static void ContinuousOperation(WcsTask modTask, PLCUtil plcConn)
+    {
+        //鍒� todo:涓婇潰浠g爜鎷挎潵鐨勶紝杩欓噷涓嶇悊瑙d负鍟ユ槸1,2 涓嶆槸2,2锛�
+        int col = modTask.EndLocate.Substring(1, 2).ToInt();
+        int row = modTask.EndLocate.Substring(0, 2).ToInt();
+        int storey = modTask.EndLocate.Substring(4, 2).ToInt();
+        int deep = modTask.EndLocate.Substring(6, 2).ToInt();
+        // 鏌ヨ鎵�鏈夊緟鎵ц鐨勪换鍔�
+        var listTask = _db.Queryable<WcsTask>().Where(s => s.Status == TaskStatusEnum.Wait).ToList();
+        switch (modTask.TaskType)
+        {
+            case TaskTypeEnum.In:
+                {
+                    // 鍏堟壘鍑哄搴旀帓鍒楀眰鐨勫叆搴撲换鍔�
+                    var listInTask = listTask.Where(s => s.TaskType == TaskTypeEnum.In)
+                                             .Select(s => s.EndLocate.Substring(0, 6))
+                                             .ToHashSet();
+
+                    // 鎵惧嚭搴撲换鍔★紝瀵瑰簲宸烽亾鐨勪换鍔�
+                    var listNextTask = listTask.Where(s => s.TaskType == TaskTypeEnum.Out && s.StartRoadway == modTask.EndRoadway).ToList();
+
+                    foreach (var modNext in listNextTask)
+                    {
+                        // 濡傛灉鏈夊搴旀帓鍒楀眰鐨勫叆搴撲换鍔★紝閭e氨涓嶈兘浼樺厛鎵ц
+                        if (listInTask.Contains(modNext.EndLocate.Substring(0, 6)))
+                        {
+                            continue;
+                        }
+
+                        // todo: 鍐欏叆modNext浠诲姟淇℃伅缁檖lc
+                        Console.WriteLine($"鍏ュ簱浠诲姟{modTask.TaskNo}鎵ц瀹屾垚鍚庯紝涓嶇┖璺戦�昏緫妫�娴嬩笅涓�浠诲姟涓簕modNext.TaskNo}");
+                        break;
+                    }
+                }
+                break;
+            case TaskTypeEnum.Out:
+                {
+                    // 鍏堟壘鍑哄搴旀帓鍒楀眰鐨勫嚭搴撲换鍔�
+                    var listInTask = listTask.Where(s => s.TaskType == TaskTypeEnum.Out)
+                                             .Select(s => s.EndLocate.Substring(0, 6))
+                                             .ToHashSet();
+
+                    // 鎵惧叆搴撲换鍔★紝瀵瑰簲宸烽亾鐨勪换鍔�
+                    var listNextTask = listTask.Where(s => s.TaskType == TaskTypeEnum.In && s.StartRoadway == modTask.EndRoadway).ToList();
+
+                    foreach (var modNext in listNextTask)
+                    {
+                        // 濡傛灉鏈夊搴旀帓鍒楀眰鐨勫嚭搴撲换鍔★紝閭e氨涓嶈兘浼樺厛鎵ц
+                        if (listInTask.Contains(modNext.EndLocate.Substring(0, 6)))
+                        {
+                            continue;
+                        }
+
+                        // todo: 鍐欏叆modNext浠诲姟淇℃伅缁檖lc
+                        Console.WriteLine($"鍑哄簱浠诲姟{modTask.TaskNo}鎵ц瀹屾垚鍚庯紝涓嶇┖璺戦�昏緫妫�娴嬩笅涓�浠诲姟涓簕modNext.TaskNo}");
+                        break;
+                    }
+                }
+                break;
+            case TaskTypeEnum.Move:
+                {
+                    var modDevice = _db.Queryable<WcsDevice>().Where(s => s.PlcId == plcConn.PlcId && s.DeviceType == DeviceTypeEnum.Show).First();
+                    var (result, value) = plcConn.GetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos);
+                    //褰撳墠鍫嗗灈鏈烘墍鍦ㄤ綅缃�
+                    var height = Math.Round(value / 790000d * 200).ToInt();
+                    //todo:杩欓噷鐪嬭兘涓嶈兘鎵惧埌鍫嗗灈鏈烘墍鍦ㄤ綅缃湪鍝釜鎺掑垪灞傦紝浼樺厛瀵绘壘闄勮繎鐨勪换鍔★紵
+                }
+                break;
+        }
+    }
+
+    /// <summary>
     /// 杈撻�佺嚎涓氬姟澶勭悊
     /// </summary>
     /// <param name="modDevice"></param>

--
Gitblit v1.8.0