From 17e3ef45fe0a6b6f8a147b50740834ac734f9317 Mon Sep 17 00:00:00 2001
From: lss <2538410689@qq.com>
Date: 星期二, 15 七月 2025 17:30:13 +0800
Subject: [PATCH] 1111

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.DaYang/core/WMSCore.cs |  231 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 208 insertions(+), 23 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.DaYang/core/WMSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.DaYang/core/WMSCore.cs
index d5a4833..f802096 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.DaYang/core/WMSCore.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.DaYang/core/WMSCore.cs
@@ -1,4 +1,6 @@
-锘縰sing HH.WCS.DaYang.wms;
+锘縰sing HH.WCS.DaYang.util;
+using HH.WCS.DaYang.wms;
+using Opc.Ua;
 using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -6,12 +8,15 @@
 using System.Text;
 using System.Threading.Tasks;
 
-namespace HH.WCS.DaYang.core {
-    internal class WMSCore {
+namespace HH.WCS.DaYang.core
+{
+    internal class WMSCore
+    {
         /// <summary>
         /// 閬嶅巻瀹氱増鐨勫彂璐у崟锛岀敓浜у垎鎷e崟涓昏〃鍜屽瓙琛紙涔熷彲浠ユ墜鍔ㄨ皟鎺ュ彛瑙﹀彂锛�         /// </summary>
-        internal static void CheckShippingOrder() {
+        internal static void CheckShippingOrder()
+        {
             //1.0銆佽幏鍙栧凡缁忓畾鐗堢殑鍙戣揣鍗曪紝鐢熶骇鍒嗘嫞鍗曞瓙琛ㄥ拰涓昏〃锛岃缃�鍙戣揣鍗曘�鐨勪笟鍔$姸鎬�N_B_STATE = 1锛堝緟鍒嗘嫞锛�             //2.0銆佸鏋滃彂璐у崟C_AUTO_SORTING=Y锛屽垯鑷姩灏嗗垎鎷e崟鐘舵�璁剧疆涓哄紑濮嬮厤璐� 
@@ -19,7 +24,8 @@
         /// <summary>
         /// 寮�閰嶈揣鍒涘缓鍒嗘嫞鍗曟槑缁�鏀规垚璋冩帴鍙hЕ鍙�
         /// </summary>
-        internal static void CheckSortingOrder() {
+        internal static void CheckSortingOrder()
+        {
             //new SortingOrder().N_B_STATE
             //1.0銆佽幏鍙�N_B_STATE = 1 (寮�閰嶈揣)鐘舵�鐨勫垎鎷e崟
             //2.0銆侀亶鍘嗗垎鎷e崟瀛愯〃锛屽垱寤哄垎鎷e崟鏄庣粏锛屾洿鏂板垎鎷e崟瀛愯〃鐨勬槑缁嗘眹鎬籉_ACC_S_QTY
@@ -29,35 +35,52 @@
 
         }
 
-    
-        
+
+
 
         /// <summary>
         /// 浣滀笟鍚姩锛屽垱寤哄瓙浠诲姟
         /// </summary>
-        internal static void Start() {
+        internal static void Start()
+        {
 
             List<WMSTask> list = WMSHelper.GetWaitingOperationList();
-            if (list.Count > 0) {
+            if (list.Count > 0)
+            {
+                var db = new SqlHelper<WCSTask>().GetInstance();
                 //绌烘墭鍥炲簱浠诲姟鍒涘缓
-                list.ForEach(a => {
-                    if (a.N_TYPE == 1) {
-                        if (!string.IsNullOrEmpty(a.S_END_LOC)) 
+                list.ForEach(a =>
+                {
+                    var startLoc = LocationHelper.GetLoc(a.S_START_LOC);
+                    var endLoc = LocationHelper.GetLoc(a.S_END_LOC);
+                    //绌烘墭鍥炲簱
+                    if (a.N_TYPE == 1)
+                    {
+                        if (!string.IsNullOrEmpty(a.S_END_LOC))
                         {
-                            string JbwLoc = "";
+                            var jbwloc = LocationHelper.GetLoc("XTGKW-1-1");
+                            if (jbwloc == null)
+                            {
+                                LogHelper.Info("鍒涘缓鍑哄簱浠诲姟鏈壘鍒版帴椹充綅璐т綅缂栫爜锛岃鍋囨煡鎺ラ┏浣嶇疆璐т綅");
+                            }
+                       
                             //鍒涘缓agv鎼繍浠诲姟
                             var wcsTask1 = new WCSTask
                             {
                                 S_OP_CODE = a.S_CODE,
                                 S_OP_NAME = "鍏ュ簱",
                                 S_CODE = WCSHelper.GenerateTaskNo(),
-                                S_TYPE = "绌烘墭鍥炲簱",
+                                S_TYPE = "AGV绌烘墭鍥炲簱",
                                 S_START_LOC = a.S_START_LOC,
-                                S_END_LOC = JbwLoc,
-                                S_SCHEDULE_TYPE = "1",
+                                S_START_AREA = a.S_START_AREA,
+                                N_START_LANE= startLoc.N_ROADWAY,
+                                N_END_LANE = endLoc.N_ROADWAY,
+                                S_END_LOC = jbwloc.S_CODE,
+                                S_END_AREA = jbwloc.S_AREA_CODE,                               
+                                N_SCHEDULE_TYPE = 1,
                                 N_CNTR_COUNT = 1,
                                 S_CNTR_CODE = a.S_CNTR_CODE,
-
+                                N_PRIORITY=1,
                             };
                             //鍒涘缓wcs鍥炲簱浠诲姟
                             var wcsTask2 = new WCSTask
@@ -65,24 +88,186 @@
                                 S_OP_CODE = a.S_CODE,
                                 S_OP_NAME = "鍏ュ簱",
                                 S_CODE = WCSHelper.GenerateTaskNo(),
-                                S_TYPE = "绌烘墭鍥炲簱",
-                                S_START_LOC = JbwLoc,
+                                S_TYPE = "WCS绌烘墭鍥炲簱",
+                                S_START_LOC = jbwloc.S_CODE,
+                                S_START_AREA = jbwloc.S_AREA_CODE,
                                 S_END_LOC = a.S_END_LOC,
-                                S_SCHEDULE_TYPE = "2",
+                                S_END_AREA = a.S_END_AREA,
+                                N_START_LANE = startLoc.N_ROADWAY,
+                                N_END_LANE = endLoc.N_ROADWAY,
+                                N_SCHEDULE_TYPE = 2,
                                 N_CNTR_COUNT = 1,
                                 S_CNTR_CODE = a.S_CNTR_CODE,
-
+                                N_PRIORITY = 1,
                             };
-                            if (WCSHelper.CreateTask(wcsTask1)&& WCSHelper.CreateTask(wcsTask2)) 
+
+                            if (WCSHelper.CreateTask(wcsTask1) && WCSHelper.CreateTask(wcsTask2))
                             {
                                 //鏇存柊浣滀笟鐘舵�涓烘墽琛�                                 a.N_B_STATE = 1;
                                 a.S_B_STATE = "鎵ц";
+                                LocationHelper.LockLoc(a.S_START_LOC, 2);
+                                LocationHelper.LockLoc(a.S_END_LOC, 1);
                                 WMSHelper.UpdateTaskState(a);
                             }
                         }
                     }
-                
+                    else if (a.N_TYPE == 2) //鐗╂枡鍑哄簱
+                    {
+                        #region MyRegion
+                        //鍒ゆ柇澶栦晶鏈夋病鏈夋墭鐩橈紝闇�笉闇�绉诲簱
+                        var StartLoc = db.Queryable<Location>().Where(b => b.S_CODE == a.S_START_LOC).First();
+                        if (StartLoc.N_POS == 1)
+                        {
+                            int row = 0;
+                            //鍒ゆ柇澶栦晶鎺�+                            switch (StartLoc.N_ROW)
+                            {
+                                case 1:
+                                    row = 2;
+                                    break;
+                                case 4:
+                                    row = 3;
+                                    break;
+                                case 5:
+                                    row = 6;
+                                    break;
+                                case 8:
+                                    row = 7;
+                                    break;
+                            }
+                            var OutLoc = db.Queryable<Location>().Where(b => b.S_AREA_CODE == StartLoc.S_AREA_CODE && b.N_LAYER == StartLoc.N_LAYER && b.N_ROW == row && b.N_CURRENT_NUM == 1 && b.N_LOCK_STATE == 0).First();
+                            if (OutLoc != null)
+                            {
+                                //鏍规嵁璧风偣鑾峰彇鎵樼洏鍜屾墭鐩樼墿鏂欑粦瀹氬叧绯�+                                string itemCode = "";
+                                var cntrLoc = LocationHelper.GetLocCntr(OutLoc.S_CODE).FirstOrDefault();
+                                if (cntrLoc != null)
+                                {
+                                    //鑾峰彇鎵樼洏鐗╂枡缁戝畾鍏崇郴
+                                    var cntrItem = db.Queryable<CntrItemDetail>().Where(b => b.S_CNTR_CODE == cntrLoc.S_CNTR_CODE).First();
+                                    if (cntrItem != null)
+                                    {
+                                        itemCode = cntrItem.S_ITEM_CODE;
+                                    }
+                                }
+
+                                var YiKuLoc = LocationHelper.InStorage(itemCode);
+                                if (YiKuLoc != null)
+                                {
+                                    var wcsTask = new WCSTask
+                                    {
+                                        S_OP_CODE = a.S_CODE,
+                                        S_OP_NAME = "鍑哄簱",
+                                        S_CODE = WCSHelper.GenerateTaskNo(),
+                                        S_TYPE = "鍫嗗灈鏈虹Щ搴�,
+                                        S_START_LOC = OutLoc.S_CODE,
+                                        S_END_LOC = YiKuLoc.S_CODE,
+                                        N_SCHEDULE_TYPE = 2,
+                                        N_CNTR_COUNT = 1,
+                                        S_CNTR_CODE = a.S_CNTR_CODE,
+                                        N_PRIORITY = 1,
+                                    };
+                                    if (WCSHelper.CreateTask(wcsTask))
+                                    {                      
+                                        LocationHelper.LockLoc(OutLoc.S_CODE, 2);
+                                        LocationHelper.LockLoc(YiKuLoc.S_CODE, 1);
+                                    }
+                                }
+                                else
+                                {
+                                    LogHelper.Info($"浣滀笟锛歿a.S_CODE}澶栦晶璐т綅{OutLoc.S_CODE}锛屾湭璁$畻鍒扮Щ搴撹揣浣�浣滀笟涓嶅惎鍔�);
+                                    return;
+                                }
+
+                            }
+                        }
+                        #endregion
+
+                       // string JbwLoc = "XTGKW-1-1";
+                        var jbwloc= db.Queryable<Location>().Where(b => b.S_CODE == "XTGKW-1-1").First();
+                        if (jbwloc == null)
+                        {
+                            LogHelper.Info("鍒涘缓鍑哄簱浠诲姟鏈壘鍒版帴椹充綅璐т綅缂栫爜锛岃鍋囨煡鎺ラ┏浣嶇疆璐т綅");
+                        }
+                        //鍒涘缓wcs浠诲姟
+                        var wcsTask1 = new WCSTask
+                        {
+                            S_OP_CODE = a.S_CODE,
+                            S_OP_NAME = "鍑哄簱",
+                            S_CODE = WCSHelper.GenerateTaskNo(),
+                            S_TYPE = "WCS鍑哄簱",
+                            S_START_LOC = a.S_START_LOC,
+                            S_START_AREA = a.S_START_AREA,
+                            S_END_LOC = jbwloc.S_CODE,
+                            S_END_AREA = jbwloc.S_AREA_CODE,
+                            N_START_LANE = startLoc.N_ROADWAY,
+                            N_END_LANE = endLoc.N_ROADWAY,
+                            N_SCHEDULE_TYPE = 2,
+                            N_CNTR_COUNT = 1,
+                            S_CNTR_CODE = a.S_CNTR_CODE,
+                            N_PRIORITY = 1,
+                        };
+                        //鍒涘缓agv鍑哄簱浠诲姟
+                        var wcsTask2 = new WCSTask
+                        {
+                            S_OP_CODE = a.S_CODE,
+                            S_OP_NAME = "鍑哄簱",
+                            S_CODE = WCSHelper.GenerateTaskNo(),
+                            S_TYPE = "AGV鍑哄簱",
+                            S_START_LOC = jbwloc.S_CODE,
+                            S_START_AREA = jbwloc.S_AREA_CODE,
+                            S_END_LOC = a.S_END_LOC,
+                            S_END_AREA = a.S_END_AREA,
+                            N_START_LANE = startLoc.N_ROADWAY,
+                            N_END_LANE = endLoc.N_ROADWAY,
+                            N_SCHEDULE_TYPE = 1,
+                            N_CNTR_COUNT = 1,
+                            S_CNTR_CODE = a.S_CNTR_CODE,
+                            N_PRIORITY = 1,
+                        };
+
+                        if (WCSHelper.CreateTask(wcsTask1) && WCSHelper.CreateTask(wcsTask2))
+                        {
+                            //鏇存柊浣滀笟鐘舵�涓烘墽琛�+                            a.N_B_STATE = 1;
+                            a.S_B_STATE = "鎵ц";
+                            LocationHelper.LockLoc(a.S_START_LOC, 2);
+                            LocationHelper.LockLoc(a.S_END_LOC, 1);
+                            WMSHelper.UpdateTaskState(a);
+                        }
+                    }
+                    else if (a.N_TYPE == 3) //鏍规嵁浣滀笟璧风偣缁堢偣鐢熸垚wcs浠诲姟
+                    {                   
+                        //鍒涘缓wcs浠诲姟
+                        var wcsTask = new WCSTask
+                        {
+                            S_OP_CODE = a.S_CODE,
+                            S_OP_NAME = a.S_TYPE,
+                            S_CODE = WCSHelper.GenerateTaskNo(),
+                            S_TYPE = a.S_TYPE,
+                            S_START_LOC = a.S_START_LOC,
+                            S_START_AREA = a.S_START_AREA,
+                            S_END_LOC = a.S_END_LOC,
+                            S_END_AREA = a.S_END_AREA,
+                            N_START_LANE = startLoc.N_ROADWAY,
+                            N_END_LANE = endLoc.N_ROADWAY,
+                            N_SCHEDULE_TYPE = 2,
+                            N_CNTR_COUNT = 1,
+                            S_CNTR_CODE = a.S_CNTR_CODE,
+                            N_PRIORITY = 1,
+                        };
+                      
+                        if (WCSHelper.CreateTask(wcsTask))
+                        {
+                            //鏇存柊浣滀笟鐘舵�涓烘墽琛�+                            a.N_B_STATE = 1;
+                            a.S_B_STATE = "鎵ц";
+                           // LocationHelper.LockLoc(a.S_START_LOC, 2);
+                           // LocationHelper.LockLoc(a.S_END_LOC, 1);
+                            WMSHelper.UpdateTaskState(a);
+                        }
+                    }
                 });
 
             }

--
Gitblit v1.9.1