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