From 790eb4d466531a0a727fbc617eb6447167c1da54 Mon Sep 17 00:00:00 2001
From: lss <Lss@HanInfo>
Date: 星期五, 16 五月 2025 14:20:14 +0800
Subject: [PATCH] 天津艾默生agv

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.Emerson/wms/WMSHelper.cs |  199 ++++++++++++++++++++++++++-----------------------
 1 files changed, 105 insertions(+), 94 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.EmersonWCS/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.Emerson/wms/WMSHelper.cs
similarity index 91%
rename from HH.WCS.Mobox3/HH.WCS.Mobox3.EmersonWCS/wms/WMSHelper.cs
rename to HH.WCS.Mobox3/HH.WCS.Mobox3.Emerson/wms/WMSHelper.cs
index 3097655..dcfc7b3 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.EmersonWCS/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.Emerson/wms/WMSHelper.cs
@@ -1,7 +1,7 @@
-锘縰sing HH.WCS.EmersonWcs.api;
-using HH.WCS.EmersonWcs.LISTA.models;
-using HH.WCS.EmersonWcs.models.other;
-using HH.WCS.EmersonWcs.util;
+锘縰sing HH.WCS.Emerson.api;
+using HH.WCS.Emerson.LISTA.models;
+using HH.WCS.Emerson.models.other;
+using HH.WCS.Emerson.util;
 using Newtonsoft.Json;
 using Opc.Ua;
 using System;
@@ -13,9 +13,9 @@
 using System.Security.Cryptography;
 using System.Text;
 using System.Threading.Tasks;
-using static HH.WCS.EmersonWcs.api.ApiModel;
+using static HH.WCS.Emerson.api.ApiModel;
 
-namespace HH.WCS.EmersonWcs.wms
+namespace HH.WCS.Emerson.wms
 {
     /// <summary>
     /// wms绠″埌浣滀笟
@@ -614,107 +614,118 @@
             var distribution = db.Queryable<TN_Distribution_CNTR>().Where(a => a.N_B_STATE == 1).ToList();
             if (distribution.Count > 0)
             {
-
-                foreach (var item in distribution)
+                try
                 {
-                    LogHelper.Info($"鎵樼洏{item.S_CNTR_CODE}寮�鍑哄簱");
-                    Location endloc = new Location();
-                    Location startloc = new Location();
-                    string endZone = "CKFJQ";
-
-
-                    //鏍规嵁鎵樼洏缂栫爜鎵炬墭鐩樿揣浣嶈〃
-                    var LocCntr = ContainerHelper.GetLocCntrByCntr(item.S_CNTR_CODE);
-                    if (LocCntr != null)
+                    foreach (var item in distribution)
                     {
-                        startloc = LocationHelper.GetLocListbyloc(LocCntr.S_LOC_CODE).First();
-                        if (startloc == null)
+                        LogHelper.Info($"鎵樼洏{item.S_CNTR_CODE}寮�鍑哄簱");
+                        Location endloc = new Location();
+                        Location startloc = new Location();
+                        string endZone = "CKFJQ";
+
+
+                        //鏍规嵁鎵樼洏缂栫爜鎵炬墭鐩樿揣浣嶈〃
+                        var LocCntr = ContainerHelper.GetLocCntrByCntr(item.S_CNTR_CODE);
+                        if (LocCntr != null)
                         {
-                            LogHelper.Info($"鏍规嵁鎵樼洏璐т綅缁戝畾鍏崇郴-璐т綅:{LocCntr.S_LOC_CODE}鏈壘鍒拌揣浣嶄俊鎭�);
-                        }
-                        else
-                        {
-                            if (string.IsNullOrEmpty(item.S_EXIT_LOC_CODE))
+                            startloc = LocationHelper.GetLocListbyloc(LocCntr.S_LOC_CODE).First();
+                            if (startloc == null)
                             {
-                                //鏍规嵁缁堢偣搴撳尯璐т綅鍜岀墿鏂欒绠楄揣浣�  
-                                var endlocations = LocationHelper.GetLocListAny(endZone).OrderBy(a => a.N_ROW).ToList();
-                                endloc = ApiHelper.FindEndcolByLocList(endlocations);
+                                LogHelper.Info($"鏍规嵁鎵樼洏璐т綅缁戝畾鍏崇郴-璐т綅:{LocCntr.S_LOC_CODE}鏈壘鍒拌揣浣嶄俊鎭�);
                             }
                             else
                             {
-                                endloc = LocationHelper.GetLoc(item.S_EXIT_LOC_CODE);
-
-                            }
-
-                            if (endloc == null && endloc.N_LOCK_STATE == 0 && endloc.N_CURRENT_NUM == 0)
-                            {
-                                LogHelper.Info($"缁堢偣璐т綅:{item.S_EXIT_LOC_CODE}涓嶅彲鐢�);
-                            }
-                        }
-                    }
-                    else
-                    {
-                        LogHelper.Info($"鏍规嵁鎵樼洏缂栫爜:{item.S_CNTR_CODE}鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�);
-                    }
-                    if (startloc != null && endloc != null)
-                    {
-                        //鍒涘缓wcs浠诲姟
-                        var wcsTask = new WCSTask
-                        {
-                            S_CODE = WCSHelper.GenerateTaskNo(),
-                            S_TYPE = "鍑哄簱",
-                            S_START_LOC = startloc.S_CODE,
-                            S_END_LOC = endloc.S_CODE,
-                            N_CNTR_COUNT = 1,
-                            N_SCHEDULE_TYPE = 1,
-                            S_CNTR_CODE = item.S_CNTR_CODE,
-                            N_START_LAYER = startloc.N_LAYER,
-                            N_END_LAYER = endloc.N_LAYER,
-                            S_START_WH = startloc.S_WH_CODE,
-                            S_END_WH = endloc.S_WH_CODE,
-                            S_START_AREA = startloc.S_AREA_CODE,
-                            S_END_AREA = endloc.S_AREA_CODE,
-                            S_EQ_NO = item.S_BS_NO,
-                        };
-                        LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
-                        if (WCSHelper.CreateTask(wcsTask))
-                        {
-                            LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
-                            //  LocationHelper.LockLoc(startloc.S_CODE, 2);
-                         //   LocationHelper.LockCntr(item.S_CNTR_CODE, 2);
-                            LocationHelper.LockLoc(endloc.S_CODE, 1);
-                            item.N_B_STATE = 2;
-                            db.Updateable(item).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand();
-
-                            //淇敼鍑哄簱鍗曠姸鎬�-                            var distributions = db.Queryable<TN_Distribution_CNTR>().Where(a => a.N_B_STATE == 1 && a.S_BS_NO == item.S_BS_NO).ToList();
-                            if (distributions.Count > 0)
-                            {
-
-                                LogHelper.Info($"鎵樼洏{item.S_CNTR_CODE}鍒涘缓浠诲姟瀹屾垚锛屽嚭搴撳崟{item.S_BS_NO}瀛樺湪鏈畬鎴愮殑鍑哄簱浠诲姟锛屼笉鍏佽淇敼鍑哄簱鍗曠姸鎬�);
-
-                            }
-                            else
-                            {
-                                var outbound = db.Queryable<TN_Outbound_Order>().Where(a => a.S_NO == item.S_BS_NO).First();
-                                if (outbound != null && outbound.N_B_STATE != 3)
+                                if (string.IsNullOrEmpty(item.S_EXIT_LOC_CODE))
                                 {
-                                    outbound.N_B_STATE = 3;
-                                    db.Updateable(outbound).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand();
-                                    LogHelper.Info($"鍑哄簱鍗晎item.S_BS_NO}鍒涘缓浠诲姟瀹屾垚锛屼慨鏀瑰嚭搴撳崟鐘舵�");
+                                    //鏍规嵁缁堢偣搴撳尯璐т綅鍜岀墿鏂欒绠楄揣浣�  
+                                    var endlocations = LocationHelper.GetLocListAny(endZone).OrderBy(a => a.N_ROW).ToList();
+                                    endloc = ApiHelper.FindEndcolByLocList(endlocations);
+                                }
+                                else
+                                {
+                                    endloc = LocationHelper.GetLoc(item.S_EXIT_LOC_CODE);
+
+                                }
+                                if (endloc == null)
+                                {
+                                    LogHelper.Info($"缁堢偣璐т綅:{item.S_EXIT_LOC_CODE}涓嶅彲鐢�);
+                                    return;
+                                }
+                                if (endloc.N_LOCK_STATE != 0 || endloc.N_CURRENT_NUM != 0)
+                                {
+                                    LogHelper.Info($"缁堢偣璐т綅:{item.S_EXIT_LOC_CODE}涓嶅彲鐢�);
+                                    return;
                                 }
                             }
                         }
                         else
                         {
-                            LogHelper.Info("鍒涘缓浠诲姟澶辫触");
+                            LogHelper.Info($"鏍规嵁鎵樼洏缂栫爜:{item.S_CNTR_CODE}鏈壘鍒版墭鐩樿揣浣嶇粦瀹氬叧绯�);
+                        }
+                        if (startloc != null && endloc != null)
+                        {
+                            //鍒涘缓wcs浠诲姟
+                            var wcsTask = new WCSTask
+                            {
+                                S_CODE = WCSHelper.GenerateTaskNo(),
+                                S_TYPE = "鍑哄簱",
+                                S_START_LOC = startloc.S_CODE,
+                                S_END_LOC = endloc.S_CODE,
+                                N_CNTR_COUNT = 1,
+                                N_SCHEDULE_TYPE = 1,
+                                S_CNTR_CODE = item.S_CNTR_CODE,
+                                N_START_LAYER = startloc.N_LAYER,
+                                N_END_LAYER = endloc.N_LAYER,
+                                S_START_WH = startloc.S_WH_CODE,
+                                S_END_WH = endloc.S_WH_CODE,
+                                S_START_AREA = startloc.S_AREA_CODE,
+                                S_END_AREA = endloc.S_AREA_CODE,
+                                S_EQ_NO = item.S_BS_NO,
+                            };
+                            LogHelper.Info("鍒涘缓浠诲姟锛� + JsonConvert.SerializeObject(wcsTask), "CreateTask");
+                            if (WCSHelper.CreateTask(wcsTask))
+                            {
+                                LogHelper.Info("鍒涘缓浠诲姟鎴愬姛");
+                                //  LocationHelper.LockLoc(startloc.S_CODE, 2);
+                                //   LocationHelper.LockCntr(item.S_CNTR_CODE, 2);
+                                LocationHelper.LockLoc(endloc.S_CODE, 1);
+                                item.N_B_STATE = 2;
+                                db.Updateable(item).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand();
+
+                                //淇敼鍑哄簱鍗曠姸鎬�+                                var distributions = db.Queryable<TN_Distribution_CNTR>().Where(a => a.N_B_STATE == 1 && a.S_BS_NO == item.S_BS_NO).ToList();
+                                if (distributions.Count > 0)
+                                {
+                                    LogHelper.Info($"鎵樼洏{item.S_CNTR_CODE}鍒涘缓浠诲姟瀹屾垚锛屽嚭搴撳崟{item.S_BS_NO}瀛樺湪鏈畬鎴愮殑鍑哄簱浠诲姟锛屼笉鍏佽淇敼鍑哄簱鍗曠姸鎬�);
+                                }
+                                else
+                                {
+                                    var outbound = db.Queryable<TN_Outbound_Order>().Where(a => a.S_NO == item.S_BS_NO).First();
+                                    if (outbound != null && outbound.N_B_STATE != 3)
+                                    {
+                                        outbound.N_B_STATE = 3;
+                                        db.Updateable(outbound).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand();
+                                        LogHelper.Info($"鍑哄簱鍗晎item.S_BS_NO}鍒涘缓浠诲姟瀹屾垚锛屼慨鏀瑰嚭搴撳崟鐘舵�");
+                                    }
+                                }
+                            }
+                            else
+                            {
+                                LogHelper.Info("鍒涘缓浠诲姟澶辫触");
+                            }
+                        }
+                        else
+                        {
+                            Console.WriteLine("璧风偣缁堢偣璐т綅涓虹┖锛岃妫�煡鏃ュ織");
                         }
                     }
-                    else
-                    {
-                        Console.WriteLine("璧风偣缁堢偣璐т綅涓虹┖锛岃妫�煡鏃ュ織");
-                    }
                 }
+                catch (Exception ex)
+                {
+                    LogHelper.Info($"CreateOutTask Error :{ex}");
+                    throw;
+                }
+
 
             }
 
@@ -750,7 +761,7 @@
             var result = true;
             try
             {
-               
+
                 var itemlist = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE).ToList();
                 if (itemlist.Count > 0)
                 {
@@ -1195,8 +1206,8 @@
                         }
                     }
                 }
-                else 
-                { 
+                else
+                {
                     LogHelper.Info($"鏍规嵁鎵樼洏:{task.S_CNTR_CODE}鏈壘鍒版墭鐩樼墿鏂欐槑缁嗘暟鎹�);
                 }
             }

--
Gitblit v1.9.1