From ff48949f706e899725c1ef7d0426c12c2b3e674f Mon Sep 17 00:00:00 2001 From: cjs <2216046164@qq.com> Date: 星期四, 17 七月 2025 17:18:16 +0800 Subject: [PATCH] 1 --- ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs | 534 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 399 insertions(+), 135 deletions(-) diff --git a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs index d0ac375..7199b41 100644 --- a/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs +++ b/ams/Hanhe.iWCS.JingmenGEMTwoProtocol/ProcessHelper.cs @@ -9,16 +9,20 @@ using MongoDB.Driver.Builders; using MySql.Data.MySqlClient; using Newtonsoft.Json; +using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Net.Configuration; using System.Text; +using System.Threading; using System.Web.UI.WebControls.WebParts; +using static Hanhe.iWCS.JingmenGEMTwoProtocol.ApiHelper; using static Hanhe.iWCS.JingmenGEMTwoProtocol.EnentListen; using static Hanhe.iWCS.JingmenGEMTwoProtocol.MESHelper; using static Hanhe.iWCS.JingmenGEMTwoProtocol.PLCControl; using static Hanhe.iWCS.JingmenGEMTwoProtocol.ProtocolAnalysis; +using static System.Runtime.CompilerServices.RuntimeHelpers; namespace Hanhe.iWCS.JingmenGEMTwoProtocol { @@ -128,22 +132,6 @@ if(mst.CN_S_STATUS=="鏈墽琛� || mst.CN_S_STATUS == "寰呮帹閫�) { mst = MongoDBSingleton.Instance.FindOne<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", mst.CN_S_TASK_NO), "TN_I_TASK_MST"); - if (mst.CN_S_BUSS_TYPE == "杈呮潗鍥炲簱") - { - var CBTableList = MongoDBSingleton.Instance.FindAll<ConnectingBits>("ConnectingBits"); - foreach (var a in CBTableList) - { - if (string.IsNullOrEmpty(a.trayCode)) - { - string cntrType = mst.transportInfo[0].trayCode; - MongoDBSingleton.Instance.Update<ConnectingBits>(Query.EQ("Bit", a.Bit), Update.Set("trayCode", cntrType).Set("END_LOC", mst.CN_S_END_BIT), UpdateFlags.None); - - MongoDBSingleton.Instance.Update<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", mst.CN_S_TASK_NO), Update.Set("CN_S_END_BIT", a.Bit), UpdateFlags.None); - - new SqlHelper<object>().ExecuteSql($"update dbo.tn_am_task_mst set CN_S_END_BIT='{a.Bit}',CN_S_END_AGVBIT = '{StockInstance.Instance.GetAGVCodeForBitCode(a.Bit)}' where CN_S_TASK_NO = '{mst.CN_S_TASK_NO}'"); - } - } - } StringBuilder sbMsg = new StringBuilder(); var start = StockInstance.Instance.GetLocationInfoTwo(mst.CN_S_START_BIT); @@ -155,11 +143,27 @@ //涓や釜鎺ラ┏骞冲彴 if (mst.CN_S_START_BIT == conn[0].locCode || mst.CN_S_START_BIT == conn[1].locCode) { - start.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_START_BIT).First().agvSite[1]; + if(mst.CN_S_BUSS_TYPE == "杈呮潗鍑哄簱锛堜簩娈碉級") + { + start.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_START_BIT).First().agvSite[0]; + } + else + { + start.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_START_BIT).First().agvSite[1]; + } + } if (mst.CN_S_END_BIT == conn[0].locCode || mst.CN_S_END_BIT == conn[1].locCode) { - end.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_END_BIT).First().agvSite[0]; + if(mst.CN_S_BUSS_TYPE == "杈呮潗鍑哄簱锛堜簩娈碉級") + { + end.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_END_BIT).First().agvSite[1]; + } + else + { + end.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_END_BIT).First().agvSite[0]; + } + } } if (conn.Count == 1) @@ -172,6 +176,63 @@ if (mst.CN_S_END_BIT == conn[0].locCode) { end.CN_N_AGV_LOCATION = Settings.GetConnectingbitsList().Where(a => a.locCode == mst.CN_S_END_BIT).First().agvSite[0]; + } + } + + var conn1 = Settings.GetDGConnectingbitsList().Where(a => a.enable == 1).ToList(); + if (conn1.Count == 2) + { + //涓や釜鎺ラ┏骞冲彴 + if (mst.CN_S_START_BIT == conn1[0].locCode || mst.CN_S_START_BIT == conn1[1].locCode) + { + if (mst.CN_S_BUSS_TYPE == "鐢甸挻鐢熶骇閫�簱(浜屾)") + { + start.CN_N_AGV_LOCATION = Settings.GetDGConnectingbitsList().Where(a => a.locCode == mst.CN_S_START_BIT).First().agvSite[0]; + } + else + { + start.CN_N_AGV_LOCATION = Settings.GetDGConnectingbitsList().Where(a => a.locCode == mst.CN_S_START_BIT).First().agvSite[1]; + } + + } + if (mst.CN_S_END_BIT == conn1[0].locCode || mst.CN_S_END_BIT == conn1[1].locCode) + { + if (mst.CN_S_BUSS_TYPE == "鐢甸挻鐢熶骇閫�簱") + { + end.CN_N_AGV_LOCATION = Settings.GetDGConnectingbitsList().Where(a => a.locCode == mst.CN_S_END_BIT).First().agvSite[1]; + } + else + { + end.CN_N_AGV_LOCATION = Settings.GetDGConnectingbitsList().Where(a => a.locCode == mst.CN_S_END_BIT).First().agvSite[0]; + } + + } + } + if (conn1.Count == 1) + { + //涓�釜鎺ラ┏骞冲彴 + if (mst.CN_S_START_BIT == conn1[0].locCode) + { + if(mst.CN_S_BUSS_TYPE == "鐢甸挻鐢熶骇閫�簱(浜屾)") + { + start.CN_N_AGV_LOCATION = Settings.GetDGConnectingbitsList().Where(a => a.locCode == mst.CN_S_START_BIT).First().agvSite[0]; + } + else + { + start.CN_N_AGV_LOCATION = Settings.GetDGConnectingbitsList().Where(a => a.locCode == mst.CN_S_START_BIT).First().agvSite[1]; + } + + } + if (mst.CN_S_END_BIT == conn1[0].locCode) + { + if(mst.CN_S_BUSS_TYPE == "鐢甸挻鐢熶骇閫�簱") + { + end.CN_N_AGV_LOCATION = Settings.GetDGConnectingbitsList().Where(a => a.locCode == mst.CN_S_END_BIT).First().agvSite[1]; + } + else + { + end.CN_N_AGV_LOCATION = Settings.GetDGConnectingbitsList().Where(a => a.locCode == mst.CN_S_END_BIT).First().agvSite[0]; + } } } #endregion @@ -207,7 +268,7 @@ } } } - if (mst.CN_S_BUSS_TYPE == "缂撳瓨鏋跺叆绔嬪簱") + if (mst.CN_S_BUSS_TYPE == "缂撳瓨鏋跺叆绔嬪簱" || mst.CN_S_BUSS_TYPE == "鐢甸挻缂撳瓨鏋跺叆绔嬪簱" || mst.CN_S_BUSS_TYPE == "鐢甸挻鐢熶骇閫�簱") { TRow = "1"; } @@ -220,7 +281,7 @@ var endLoc = MongoDBSingleton.Instance.FindOne<MongoTN_AB_STOCK_LOCATION>(Query.EQ("CN_S_LOCATION_CODE", mst.CN_S_END_BIT), "MongoTN_AB_STOCK_LOCATION"); if(startLoc != null && endLoc != null) { - if(startLoc.CN_S_AREA_CODE == "CKHJ" || endLoc.CN_S_AREA_CODE == "CKHJ") + if(startLoc.CN_S_AREA_CODE == "CKHJ" || endLoc.CN_S_AREA_CODE == "CKHJ" || endLoc.CN_S_AREA_CODE == "CPTPFCHJ" || startLoc.CN_S_AREA_CODE == "CPTPFCHJ") { TRow = "1"; } @@ -303,8 +364,9 @@ if (mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵�) PLCControl.CacheStackingMouth1013(plc.deviceType, mst.CN_S_TASK_NO, mst.CN_S_END_BIT); if (mst.CN_S_BUSS_TYPE == "3妤兼媶鐩樿ˉ绌�) PLCControl.DiscRemoverReqUnload(plc.deviceType, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "鍖呰绾胯ˉ绌�) PLCControl.PackingLine(plc.ip, mst.CN_S_TASK_NO); - if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.outWare(mst.CN_S_TASK_NO, true); + if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾� || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎") PLCControl.outWare(mst.CN_S_TASK_NO, true); if (mst.CN_S_BUSS_TYPE == "3妤兼垚鍝佸嚭搴�) PLCControl.productOutWare(mst.CN_S_END_BIT, mst.CN_S_TASK_NO, true); + if (mst.CN_S_BUSS_TYPE == "鐑樺共鏈虹┖鎵樹笂绾� || mst.CN_S_BUSS_TYPE == "鍓垏鏈烘弧鎵樹笂绾�) PLCControl.DGMachineTwo(plc, mst.CN_S_TASK_NO, true); } if (code == 6) { @@ -315,9 +377,10 @@ if (mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵�) PLCControl.writeStackingMouth6(mst.CN_S_END_BIT, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "3妤兼媶鐩樿ˉ绌�) PLCControl.DiscRemoverUnloadComplete(plc.deviceType, mst.CN_S_TASK_NO); - if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.outWare(mst.CN_S_TASK_NO, false); + if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾� || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎") PLCControl.outWare(mst.CN_S_TASK_NO, false); if (mst.CN_S_BUSS_TYPE == "鍖呰绾胯ˉ绌�) PLCControl.PackingLineComplete(plc.ip); if (mst.CN_S_BUSS_TYPE == "3妤兼垚鍝佸嚭搴�) PLCControl.productOutWare(mst.CN_S_END_BIT, mst.CN_S_TASK_NO, false); + if (mst.CN_S_BUSS_TYPE == "鐑樺共鏈虹┖鎵樹笂绾� || mst.CN_S_BUSS_TYPE == "鍓垏鏈烘弧鎵樹笂绾�) PLCControl.DGMachineTwo(plc, mst.CN_S_TASK_NO, true); } } else CMMLog.Info($"PlcInfo涓湭鎵惧埌璇ョ偣浣嶏紝鐐逛綅锛歿mst.CN_S_END_BIT}"); @@ -362,22 +425,26 @@ if (code == 1012) { //鍗歌揣鐢宠锛屽厛鍒ゆ柇璁惧鏄惁鍏佽杩涙枡锛屽鏋滄槸鐩存帴鏀瑰弬鏁帮紝骞堕�鐭ヨ澶�- if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂�) PLCControl.PickUpFullDoorUnload(plc.ip, mst.CN_S_TASK_NO);//杩涘叆3妤煎寘瑁呭彇鏂欐祦绋�012,ip:{plc.ip},task:{mst.CN_S_TASK_NO} + if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂� || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎") PLCControl.PickUpFullDoorUnload(plc.ip, mst.CN_S_TASK_NO, mst.CN_S_BUSS_TYPE);//杩涘叆3妤煎寘瑁呭彇鏂欐祦绋�012,ip:{plc.ip},task:{mst.CN_S_TASK_NO} if (mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋� || mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋禢G") PLCControl.SecondWeightInCache1012(plc.ip, mst.CN_S_TASK_NO);//浜屾湡锛氱洿鎺ユ敼鍙傛暟 if (mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵�) TSHelper.GoToAGV(mst.CN_S_TASK_NO, 10, 1); if (mst.CN_S_BUSS_TYPE == "3妤煎彔鐩樹笅绾�) PLCControl.StackingReqUnload(plc.deviceType, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.PackingLineUnload1012(plc.ip, mst.CN_S_TASK_NO); + if (mst.CN_S_BUSS_TYPE == "杈呮潗鍏ュ簱") PLCControl.fcrk(plc, true, mst.CN_S_TASK_NO); + if (mst.CN_S_BUSS_TYPE == "鐑樺共鏈烘弧鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍓垏鏈虹┖鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍖呰鏈烘弧鎵樹笅绾�) PLCControl.DGMachine(plc,mst.CN_S_TASK_NO,true); } if (code == 4) { //鍗歌揣瀹屾垚鐢宠锛屽垽鏂澶囬偅杈硅繘鏂欏畬鎴愶紝鏀瑰弬鏁伴�鐭gv绂诲紑 - if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂�) PLCControl.PickUpFullDoorComplete(plc.ip, mst.CN_S_TASK_NO); + if (mst.CN_S_BUSS_TYPE == "3妤煎寘瑁呭彇鏂� || mst.CN_S_BUSS_TYPE == "PDA鎵撳寘涓嬬嚎") PLCControl.PickUpFullDoorComplete(plc.ip, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋� || mst.CN_S_BUSS_TYPE == "3妤煎绉板叆缂撳瓨鏋禢G") PLCControl.SecondWeightInCache4(plc.deviceType, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "3妤煎彔鐩樹笅绾�) PLCControl.StackingComplete(plc.deviceType, mst.CN_S_TASK_NO); if (mst.CN_S_BUSS_TYPE == "3妤兼墦鍖呬笅绾�) PLCControl.PackingLineComplete4(plc.ip, mst.CN_S_SOURCE_NO); if (mst.CN_S_BUSS_TYPE != "3妤煎寘瑁呭彇鏂�) WMSHelper.ExecuteState(mst.CN_S_SOURCE_NO, 4); if (mst.CN_S_BUSS_TYPE == "3妤肩紦瀛樻灦鍏ュ彔鎵楴G") PLCControl.CacheStackingMouth6(plc); - if (mst.CN_S_BUSS_TYPE == "杈呮潗鍏ュ簱") PLCControl.fcrk(plc); + if (mst.CN_S_BUSS_TYPE == "杈呮潗鍏ュ簱") PLCControl.fcrk(plc, false); + if (mst.CN_S_BUSS_TYPE == "鐑樺共鏈烘弧鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍓垏鏈虹┖鎵樹笅绾� || mst.CN_S_BUSS_TYPE == "鍖呰鏈烘弧鎵樹笅绾�) PLCControl.DGMachine(plc, mst.CN_S_TASK_NO, false); + } } else CMMLog.Info($"鐐逛綅{mst.CN_S_START_BIT}鏈厤缃�); @@ -481,7 +548,7 @@ // } //} } - if (mst.CN_S_BUSS_TYPE == "3妤兼垚鍝佸嚭搴� || mst.CN_S_BUSS_TYPE == "杈呮潗鍑哄簱") + if (mst.CN_S_BUSS_TYPE == "3妤兼垚鍝佸嚭搴�) { //3妤兼垚鍝佸嚭搴撲换鍔℃嫤鎴� if (!OutWareTask(mst)) @@ -496,6 +563,14 @@ { result = true; } + } + if (mst.CN_S_BUSS_TYPE == "杈呮潗鍑哄簱") + { + FCOutTask(mst); + } + if (mst.CN_S_BUSS_TYPE == "鐢甸挻鐢熶骇閫�簱") + { + SGTK(mst); } var bussTypeInfo = Settings.GetHouWeiCodeo().Where(a => a.location == mst.Ext1).FirstOrDefault(); if (bussTypeInfo != null) @@ -560,6 +635,99 @@ } /// <summary> + /// 杈呮潗鍑哄簱 + /// </summary> + /// <param name="mst"></param> + private static void FCOutTask(TN_I_TASK_MST mst) + { + var CBInfo = Settings.GetConnectingbitsList().Where(a => a.enable == 1).ToList(); + if (CBInfo != null) + { + foreach (var a in CBInfo) + { + if (!string.IsNullOrEmpty(a.locCode)) + { + //鍦ㄤ腑闂磋〃涓煡鎵剧偣浣�+ var CBTable = MongoDBSingleton.Instance.FindOne<ConnectingBits>(Query.EQ("Bit", a.locCode), "ConnectingBits"); + if (CBTable != null) + { + if (string.IsNullOrEmpty(CBTable.trayCode)) + { + //淇敼浠诲姟缁堢偣锛屽苟涓斿皢鐐逛綅鍐欏叆涓棿琛�+ MongoDBSingleton.Instance.Update<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", mst.CN_S_TASK_NO), Update.Set("CN_S_END_BIT", a.locCode), UpdateFlags.None); + + new SqlHelper<object>().ExecuteSql($"update dbo.tn_am_task_mst set CN_S_END_BIT='{a.locCode}',CN_S_END_AGVBIT = '{StockInstance.Instance.GetAGVCodeForBitCode(a.locCode)}' where CN_S_TASK_NO = '{mst.CN_S_TASK_NO}'"); + + MongoDBSingleton.Instance.Update<ConnectingBits>(Query.EQ("Bit", a.locCode), Update.Set("trayCode", mst.CN_S_BATCH_NO).Set("END_LOC", a.locCode), UpdateFlags.None); + } + } + else + { + //淇敼浠诲姟缁堢偣锛屽苟涓斿皢鐐逛綅鍐欏叆涓棿琛�+ MongoDBSingleton.Instance.Update<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", mst.CN_S_TASK_NO), Update.Set("CN_S_END_BIT", a.locCode), UpdateFlags.None); + + new SqlHelper<object>().ExecuteSql($"update dbo.tn_am_task_mst set CN_S_END_BIT='{a.locCode}',CN_S_END_AGVBIT = '{StockInstance.Instance.GetAGVCodeForBitCode(a.locCode)}' where CN_S_TASK_NO = '{mst.CN_S_TASK_NO}'"); + + MongoDBSingleton.Instance.Insert<ConnectingBits>(new ConnectingBits { Bit = a.locCode, trayCode = mst.CN_S_BATCH_NO, state = "0", END_LOC = a.locCode }); + } + } + else CMMLog.Debug("鎺ラ┏浣嶇偣浣嶆湭閰嶇疆"); + } + } + } + + /// <summary> + /// 鍥涢挻鐢熶骇閫�簱 + /// 灏嗕换鍔℃媶鍒嗘垚涓ゆ浠诲姟锛岀涓�浠诲姟缁堢偣鏀逛负鎺ラ┏骞冲彴 + /// 浜屾浠诲姟浠庢帴椹冲钩鍙板叆搴�+ /// </summary> + /// <param name="mst"></param> + private static void SGTK(TN_I_TASK_MST mst) + { + var CBInfo = Settings.GetDGConnectingbitsList().Where(a => a.enable == 1).ToList(); + if (CBInfo != null) + { + foreach (var a in CBInfo) + { + if (!string.IsNullOrEmpty(a.locCode)) + { + //鍦ㄤ腑闂磋〃涓煡鎵剧偣浣�+ var CBTable = MongoDBSingleton.Instance.FindOne<DGConnectingBits>(Query.EQ("Bit", a.locCode), "DGConnectingBits"); + if (CBTable != null) + { + if (string.IsNullOrEmpty(CBTable.trayCode)) + { + //鏀逛换鍔$殑缁堢偣 + MongoDBSingleton.Instance.Update<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", mst.CN_S_TASK_NO), Update.Set("CN_S_END_BIT", a.locCode), UpdateFlags.None); + + new SqlHelper<object>().ExecuteSql($"update dbo.tn_am_task_mst set CN_S_END_BIT='{a.locCode}',CN_S_END_AGVBIT = '{StockInstance.Instance.GetAGVCodeForBitCode(a.locCode)}' where CN_S_TASK_NO = '{mst.CN_S_TASK_NO}'"); + + CMMLog.Debug($"鐢熶骇閫�簱锛氭洿鏀圭粓鐐规垚鍔燂紒"); + MongoDBSingleton.Instance.Update<DGConnectingBits>(Query.EQ("Bit", a.locCode), Update.Set("trayCode", mst.CN_S_BATCH_NO).Set("END_LOC",mst.CN_S_END_BIT), UpdateFlags.None); + break; + } + } + else + { + //鏀逛换鍔$殑缁堢偣 + MongoDBSingleton.Instance.Update<TN_I_TASK_MST>(Query.EQ("CN_S_TASK_NO", mst.CN_S_TASK_NO), Update.Set("CN_S_END_BIT", a.locCode), UpdateFlags.None); + + new SqlHelper<object>().ExecuteSql($"update dbo.tn_am_task_mst set CN_S_END_BIT='{a.locCode}',CN_S_END_AGVBIT = '{StockInstance.Instance.GetAGVCodeForBitCode(a.locCode)}' where CN_S_TASK_NO = '{mst.CN_S_TASK_NO}'"); + + CMMLog.Debug($"鐢熶骇閫�簱锛氭洿鏀圭粓鐐规垚鍔燂紒"); + //鎵撳寘涓嬬嚎浠诲姟鐢熸垚鎴愬姛锛屽悜涓棿琛ㄦ彃鍏ユ暟鎹�+ + MongoDBSingleton.Instance.Insert<DGConnectingBits>(new DGConnectingBits { Bit = a.locCode, trayCode = mst.CN_S_BATCH_NO,END_LOC = mst.CN_S_END_BIT, state = "0" }); + break; + } + } + else CMMLog.Debug("鐢熶骇閫�簱鎺ラ┏浣嶇偣浣嶆湭閰嶇疆"); + } + } + else CMMLog.Debug("鐢熶骇閫�簱鎺ラ┏浣嶆湭閰嶇疆"); + } + + /// <summary> /// 杈呮潗鍏ュ簱娴佺▼ /// </summary> /// <param name="mst"></param> @@ -568,90 +736,77 @@ { //1銆佸垽鏂緟鏉愬叆搴撶粓鐐规槸鍚︽湁浠诲姟 //2銆佸垽鏂緭閫佺嚎妯″紡鍜屼腑闂磋〃妯″紡閮芥槸鍏ュ簱妯″紡 - bool action = true; - var plc = Settings.GetPlcInfo().Where(a => a.deviceType == "18" && a.enable == 1).ToList(); - if (plc.Count > 0) + CMMLog.Debug("杈呮潗鍏ュ簱娴佺▼ 寮�"); + + bool action = false; + var plc = Settings.GetPlcInfo().Where(a => a.location == mst.CN_S_START_BIT && a.enable == 1).First(); + if (plc != null) { - foreach(var a in plc) + var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel { - if(CheckStartFree(a.location) && CheckEndFree(a.location)) + dataNum = 1, + addr = plc.readAddr + 3, + host = plc.ip, + port = plc.port + }); + if (result != null && result.errCode == 0) + { + CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼锛氳鍙栨粴绛掓満{plc.ip}閫氶亾鍙蜂负锛歿plc.readAddr + 3}鐨勫�涓猴細{result.result[0]}"); + if (result.result[0] == 1) { - var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼:杈撻�绾夸负 鍑哄簱妯″紡锛岃緭閫佺嚎鐐逛綅锛歿plc.location}"); + return action; + } + if (result.result[0] == 2) + { + //璇诲彇涓棿琛ㄦā寮�+ var modelInfo = MongoDBSingleton.Instance.FindOne<ModeList>("ModeList"); + if (modelInfo != null) { - dataNum = 1, - addr = a.readAddr + 3, - host = a.ip, - port = a.port - }); - if (result != null && result.errCode == 0) - { - CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼锛氳鍙栨粴绛掓満{a.ip}閫氶亾鍙蜂负锛歿a.readAddr + 3}鐨勫�涓猴細{result.result[0]}"); - if (result.result[0] == 1) + if (modelInfo.Mode == "鍑哄簱妯″紡") { - action = false; - CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼:杈撻�绾夸负 鍑哄簱妯″紡锛岃緭閫佺嚎鐐逛綅锛歿a.location}"); - break; + CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼:涓棿琛�ModeList涓�鍑哄簱妯″紡"); + return action; } else { - //璇诲彇涓棿琛ㄦā寮�- var modelInfo = MongoDBSingleton.Instance.FindOne<ModeList>("ModeList"); - if(modelInfo != null) - { - if(modelInfo.Mode == "鍑哄簱妯″紡") - { - action = false; - CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼:涓棿琛�ModeList涓�鍑哄簱妯″紡"); - break; - } - } - else - { - action = false; - CMMLog.Debug("杈呮潗鍏ュ簱娴佺▼:涓棿琛�ModeList 涓虹┖"); - break; - } + action = true; } } + else + { + CMMLog.Debug("杈呮潗鍏ュ簱娴佺▼:涓棿琛�ModeList 涓虹┖"); + return action; + } } - else - { - action = false; - CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼:褰撳墠鐐逛綅鏈変换鍔★紝鐐逛綅锛歿a.location}"); - break; - } - }; + } if (action) { //鍏ュ簱妯″紡鏍搁獙姝g‘ 鍒ゆ柇璐х墿鏄惁鍒颁綅 - var startPlc = plc.Where(a => a.location == mst.CN_S_START_BIT).First(); - if(startPlc != null) + result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel { - var result = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel - { - dataNum = 1, - addr = startPlc.readAddr + 1, - host = startPlc.ip, - port = startPlc.port - }); + dataNum = 1, + addr = plc.readAddr + 1, + host = plc.ip, + port = plc.port + }); - if (result != null && result.errCode == 0) + if (result != null && result.errCode == 0) + { + CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼锛氳鍙栨粴绛掓満{plc.ip}閫氶亾鍙蜂负锛歿plc.readAddr + 1}鐨勫�涓猴細{result.result[0]}"); + if (result.result[0] == 2) { - CMMLog.Debug($"杈呮潗鍏ュ簱娴佺▼锛氳鍙栨粴绛掓満{startPlc.ip}閫氶亾鍙蜂负锛歿startPlc.readAddr + 3}鐨勫�涓猴細{result.result[0]}"); - if (result.result[0] == 2) + int[] num = new int[2] { 2, 1 }; + var wirteal = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti { - int[] num = new int[2] { 2, 1 }; - var wirteal = OITcpHelper.RegisterWriteOutPutMulti(new OITcpHelper.RegisterWriteOutPutModelMulti - { - addr = startPlc.writeAddr + 1, - host = startPlc.ip, - data = num, - port = startPlc.port - }); + addr = plc.writeAddr + 1, + host = plc.ip, + data = num, + port = plc.port + }); - return true; - } + return true; } } } @@ -692,51 +847,52 @@ if (plc.Count > 0) { #region 鍒ゆ柇杈撻�绾挎ā寮�鍙樻洿娉ㄩ噴 - //bool action = true; - //foreach(var a in plc) - //{ - // var modeResult = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel - // { - // dataNum = 1, - // addr = a.readAddr + 3, - // host = a.ip, - // port = a.port - // }); - // if (modeResult != null && modeResult.errCode == 0) - // { - // CMMLog.Debug($"OutWareTask锛氳鍙栨粴绛掓満{a.ip}閫氶亾鍙蜂负锛歿a.readAddr + 3}鐨勫�涓猴細{modeResult.result[0]}"); - // if (modeResult.result[0] == 2) - // { - // action = false; - // CMMLog.Debug($"OutWareTask:杈撻�绾夸负 鍏ュ簱妯″紡锛岃緭閫佺嚎鐐逛綅锛歿a.location}"); - // break; - // } - // else - // { - // //璇诲彇涓棿琛ㄦā寮�- // var modelInfo = MongoDBSingleton.Instance.FindOne<ModeList>("ModeList"); - // if (modelInfo != null) - // { - // if (modelInfo.Mode == "鍏ュ簱妯″紡") - // { - // action = false; - // CMMLog.Debug($"OutWareTask:涓棿琛�ModeList涓�鍏ュ簱妯″紡"); - // break; - // } - // } - // else - // { - // action = false; - // CMMLog.Debug("OutWareTask:涓棿琛�ModeList 涓虹┖"); - // break; - // } - // } - // } - //}; - //if (!action) - //{ - // return false; - //} + + foreach(var a in plc) + { + bool action = false; + var modeResult = OITcpHelper.RegisterReadOutPut(new OITcpHelper.RegisterReadOutPutModel + { + dataNum = 1, + addr = a.readAddr + 3, + host = a.ip, + port = a.port + }); + if (modeResult != null && modeResult.errCode == 0) + { + CMMLog.Debug($"OutWareTask锛氳鍙栨粴绛掓満{a.ip}閫氶亾鍙蜂负锛歿a.readAddr + 3}鐨勫�涓猴細{modeResult.result[0]}"); + if (modeResult.result[0] == 2) + { + CMMLog.Debug($"OutWareTask:杈撻�绾夸负 鍏ュ簱妯″紡锛岃緭閫佺嚎鐐逛綅锛歿a.location}"); + break; + } + else + { + //璇诲彇涓棿琛ㄦā寮�+ var modelInfo = MongoDBSingleton.Instance.FindOne<ModeList>("ModeList"); + if (modelInfo != null) + { + if (modelInfo.Mode == "鍏ュ簱妯″紡") + { + CMMLog.Debug($"OutWareTask:涓棿琛�ModeList涓�鍏ュ簱妯″紡"); + } + else + { + action = true; + } + } + else + { + CMMLog.Debug("OutWareTask:涓棿琛�ModeList 涓虹┖"); + } + } + } + if (!action) + { + return false; + } + }; + #endregion @@ -1113,6 +1269,53 @@ } CMMLog.Info("杩涘叆鍏呯數浠诲姟娴佺▼鍒ゆ柇锛氭墽琛岀粨鏉燂紒"); } + + internal static void AGVBatteryTimeTwo() + { + var cpsInfo = MongoDBSingleton.Instance.FindAll<TN_B_CHARGE_PLAN_SET>("TN_B_CHARGE_PLAN_SET"); + if (cpsInfo.Count > 0) + { + foreach (var a in cpsInfo) + { + int agvNo = int.Parse(a.CN_S_NAME); + if(agvNo != 0) + { + //鍒ゆ柇涓棿琛�MarginAGV 鏄惁鏈夎AGV鐨勬暟鎹�+ var maInfo = MongoDBSingleton.Instance.FindOne<MarginAGV>(Query.EQ("agvNo", int.Parse(a.CN_S_NAME)), "MarginAGV"); + if (maInfo == null) + { + if (DateTime.Parse(a.CN_DT_START).AddMinutes(10) > DateTime.Now) + { + //褰撳墠鏃堕棿鍦ㄦ寚瀹氬厖鐢垫椂闂寸殑10鍒嗛挓涔嬪唴 + var pileInfo = Settings.GetChargingPile().Where(b => b.agvNo == a.CN_S_NAME && b.enable == "1").FirstOrDefault(); + if(pileInfo != null) + { + int marginGroup = int.Parse(pileInfo.charginGroup); + TSHelper.SendChargeTask(a.CN_S_NAME, true); + //澧炲姞鏃堕棿 + MongoDBSingleton.Instance.Insert<MarginAGV>(new MarginAGV { agvNo = agvNo, marginGroup = marginGroup, dateTime = DateTime.Now }); + } + else + { + CMMLog.Info($"鍏呯數浠诲姟锛屾湭閰嶇疆褰撳墠杞﹀彿锛岃溅鍙凤細{a.CN_S_NAME}"); + } + } + } + else + { + if (maInfo.dateTime.AddMinutes(10) < DateTime.Now) + { + MongoDBSingleton.Instance.Remove<MarginAGV>(Query.EQ("id", maInfo.id), RemoveFlags.None); + } + } + } + else + { + CMMLog.Info("鍏呯數浠诲姟娴佺▼寮傚父锛屽綋鍓嶈溅鍙蜂负0"); + } + } + } + } #endregion /// <summary> @@ -1316,5 +1519,66 @@ return WeekNumInMonth; } + internal static bool UpdateTaskState(string taskNo, int state) + { + var result = false; + try + { + string taskState = state == 3 ? "寮�鍙栬揣" : state == 4 ? "鍙栬揣瀹屾垚" : state == 5 ? "寮�鍗歌揣" : state == 6 ? "鍗歌揣瀹屾垚" : state == 2 ? "瀹屾垚" : ""; + CMMLog.Info($"SQLServer 鏇存柊浠诲姟鐘舵�锛氫换鍔″彿锛歿taskNo},鏇存敼鐘舵�锛歿taskState}"); + if (!string.IsNullOrEmpty(taskState)) result = new SqlHelper<SQL_TN_I_TASK_MST>().ExecuteSql($"update dbo.tn_am_task_mst set CN_S_STATUS='{taskState}' where CN_S_TASK_NO='{taskNo}'"); + } + catch (Exception ex) + { + CMMLog.Error($"SQLServer 鏇存柊浠诲姟鐘舵�寮傚父锛歿ex.Message}"); + } + + return result; + } + + + + /// <summary> + /// SQL-AMS浠诲姟涓昏〃 + /// </summary> + [SugarTable("dbo.tn_am_task_mst")] + public class SQL_TN_I_TASK_MST + { + public string CN_S_BATCH_NO { get; set; } + public int CN_S_ORDER_NO { get; set; } + public string CN_S_TASK_NO { get; set; } + public string CN_S_SOURCE_SYS { get; set; } + public string CN_S_SOURCE_NO { get; set; } + public string CN_S_PROCESS_CODE { get; set; } + public string CN_S_TASK_TYPE { get; set; } + public string CN_S_START_AREA { get; set; } + public string CN_S_START_AREA_NAME { get; set; } + public string CN_S_START_BIT { get; set; } + public int CN_N_START_AGVBIT { get; set; } + public string CN_S_END_AREA { get; set; } + public string CN_S_END_AREA_NAME { get; set; } + public string CN_S_END_BIT { get; set; } + public int CN_N_END_AGVBIT { get; set; } + public string CN_S_STATUS { get; set; } + public string CN_S_BEF_STATUS { get; set; } + public string CN_S_BEFORE_NO { get; set; } + public string CN_S_AFTER_NO { get; set; } + public string CN_T_START_WORKING { get; set; } + public string CN_T_END_WORKING { get; set; } + public int CN_N_PRIORITY { get; set; } + public int CN_N_CUR_STEP { get; set; } + public string CN_S_CREATOR { get; set; } + public string CN_S_CREATOR_NAME { get; set; } + public string CN_T_CREATE { get; set; } + public string CN_S_MENDER { get; set; } + public string CN_S_MODIFY_NAME { get; set; } + public string CN_T_MODIFY { get; set; } + public string CN_S_TASK_MODEL { get; set; } + public string CN_S_EXT1 { get; set; } + public string CN_S_EXT2 { get; set; } + public string CN_S_EXT3 { get; set; } + public string CN_N_AGV_NO { get; set; } + public string CN_S_TRANSPORT_INFO { get; set; } + } } } -- Gitblit v1.9.1