From 64ec1a7fb55389d8db371d112e49f741de866796 Mon Sep 17 00:00:00 2001
From: lss <Lss@HanInfo>
Date: 星期三, 18 六月 2025 16:41:26 +0800
Subject: [PATCH] 业务开发与优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.DaYang/core/WMSCore.cs |  137 +++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 123 insertions(+), 14 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 440caf0..ce24ddd 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,20 +35,26 @@
 
         }
 
-    
-        
+
+
 
         /// <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 =>
+                {
+                    //绌烘墭鍥炲簱
+                    if (a.N_TYPE == 1)
+                    {
+                        if (!string.IsNullOrEmpty(a.S_END_LOC))
                         {
                             string JbwLoc = "";
                             //鍒涘缓agv鎼繍浠诲姟
@@ -73,16 +85,113 @@
                                 S_CNTR_CODE = a.S_CNTR_CODE,
 
                             };
-                            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_AREA_CODE == a.S_START_AREA && b.S_CODE == a.S_START_LOC).First();
+                        var OutLoc = db.Queryable<Location>().Where(b => b.S_AREA_CODE == StartLoc.S_AREA_CODE && b.N_LAYER == StartLoc.N_LAYER && b.N_POS == 1 && 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,
+
+                                };
+                                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 = "";
+
+                        //鍒涘缓wcs浠诲姟
+                        var wcsTask1 = new WCSTask
+                        {
+                            S_OP_CODE = a.S_CODE,
+                            S_OP_NAME = "鍑哄簱",
+                            S_CODE = WCSHelper.GenerateTaskNo(),
+                            S_TYPE = "鍑哄簱",
+                            S_START_LOC = a.S_START_LOC,
+                            S_END_LOC = JbwLoc,
+                            N_SCHEDULE_TYPE = 2,
+                            N_CNTR_COUNT = 1,
+                            S_CNTR_CODE = a.S_CNTR_CODE,
+
+                        };
+                        //鍒涘缓wcs鍥炲簱浠诲姟
+                        var wcsTask2 = new WCSTask
+                        {
+                            S_OP_CODE = a.S_CODE,
+                            S_OP_NAME = "鍑哄簱",
+                            S_CODE = WCSHelper.GenerateTaskNo(),
+                            S_TYPE = "鍑哄簱",
+                            S_START_LOC = JbwLoc,
+                            S_END_LOC = a.S_END_LOC,
+                            N_SCHEDULE_TYPE = 1,
+                            N_CNTR_COUNT = 1,
+                            S_CNTR_CODE = a.S_CNTR_CODE,
+
+                        };
+
+                        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);
+                        }
+                    }
+
                 });
 
             }

--
Gitblit v1.9.1