From e2ec31cc0062b3c1af621437554aa9a3505d2a56 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期五, 23 五月 2025 17:26:55 +0800 Subject: [PATCH] 优化产线安全交互的部分,优化AGV调试接口 --- device/TcpClientHelper.cs | 323 +++++++++++++++ Program.cs | 6 wms/LocationHelper.cs | 2 device/ProductionLineDevice.cs | 67 ++ core/Monitor.cs | 107 +++- /dev/null | 0 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/848a02bc-1e77-4a4d-8129-5fd396f4d138.vsidx | 0 util/LogHelper.cs | 14 api/ApiModel.cs | 42 - core/WCSCore.cs | 114 ++++- HH.WCS.Mobox3.DSZSH.csproj | 1 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/c30fdd47-6615-4811-b8bd-dfc4b98d2d2f.vsidx | 0 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/49ec3933-2a6b-4835-ab77-24f5cfc05e26.vsidx | 0 .vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/72178599-9865-468a-a3b6-7e0cf3fce2a8.vsidx | 0 api/DebugController.cs | 41 + util/Settings.cs | 15 api/ApiHelper.cs | 279 ++++++++----- Models/TN_CG_Detail.cs | 13 process/TaskProcess.cs | 173 +++++--- api/MoboxController.cs | 60 +- 20 files changed, 940 insertions(+), 317 deletions(-) diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/3f7a8a50-7623-4582-a788-1727f4b734e0.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/3f7a8a50-7623-4582-a788-1727f4b734e0.vsidx deleted file mode 100644 index c9bf307..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/3f7a8a50-7623-4582-a788-1727f4b734e0.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/49ec3933-2a6b-4835-ab77-24f5cfc05e26.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/49ec3933-2a6b-4835-ab77-24f5cfc05e26.vsidx new file mode 100644 index 0000000..c0d9b1a --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/49ec3933-2a6b-4835-ab77-24f5cfc05e26.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/72178599-9865-468a-a3b6-7e0cf3fce2a8.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/72178599-9865-468a-a3b6-7e0cf3fce2a8.vsidx new file mode 100644 index 0000000..d2fec1f --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/72178599-9865-468a-a3b6-7e0cf3fce2a8.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/74bd051a-76c6-4faf-9203-3846175eb944.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/74bd051a-76c6-4faf-9203-3846175eb944.vsidx deleted file mode 100644 index 5dae330..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/74bd051a-76c6-4faf-9203-3846175eb944.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/79fc4010-d1c2-42bb-9f8f-a7b972ec34f6.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/79fc4010-d1c2-42bb-9f8f-a7b972ec34f6.vsidx deleted file mode 100644 index 206014a..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/79fc4010-d1c2-42bb-9f8f-a7b972ec34f6.vsidx +++ /dev/null Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/848a02bc-1e77-4a4d-8129-5fd396f4d138.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/848a02bc-1e77-4a4d-8129-5fd396f4d138.vsidx new file mode 100644 index 0000000..1ab47db --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/848a02bc-1e77-4a4d-8129-5fd396f4d138.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/c30fdd47-6615-4811-b8bd-dfc4b98d2d2f.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/c30fdd47-6615-4811-b8bd-dfc4b98d2d2f.vsidx new file mode 100644 index 0000000..47a5694 --- /dev/null +++ b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/c30fdd47-6615-4811-b8bd-dfc4b98d2d2f.vsidx Binary files differ diff --git a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/cfeb14b9-8063-424f-8831-ddd93cd9c6f5.vsidx b/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/cfeb14b9-8063-424f-8831-ddd93cd9c6f5.vsidx deleted file mode 100644 index 6aaf23d..0000000 --- a/.vs/HH.WCS.Mobox3.DSZSH/FileContentIndex/cfeb14b9-8063-424f-8831-ddd93cd9c6f5.vsidx +++ /dev/null Binary files differ diff --git a/HH.WCS.Mobox3.DSZSH.csproj b/HH.WCS.Mobox3.DSZSH.csproj index 62b0e59..5b3a82c 100644 --- a/HH.WCS.Mobox3.DSZSH.csproj +++ b/HH.WCS.Mobox3.DSZSH.csproj @@ -235,6 +235,7 @@ <Compile Include="core\Monitor.cs" /> <Compile Include="core\WCSCore.cs" /> <Compile Include="core\WMSCore.cs" /> + <Compile Include="device\TcpClientHelper.cs" /> <Compile Include="process\TaskProcess.cs" /> <Compile Include="util\SqlHelper.cs" /> <Compile Include="models\TN_Container_Item.cs" /> diff --git a/Models/TN_CG_Detail.cs b/Models/TN_CG_Detail.cs index 047d09d..f705e15 100644 --- a/Models/TN_CG_Detail.cs +++ b/Models/TN_CG_Detail.cs @@ -69,9 +69,18 @@ /// </summary> public string S_QUALITY_GRADE { get; set; } = string.Empty; + /// <summary> + /// 浜х嚎鍙�+ /// </summary> + public int N_PRODUCT_LINE { get; set; } = 0; // NOTE 鍚庣画MES鍙兘浼氭彁渚涳紝鍏堝垱寤� + + // ---------------- + + // TODO + ///// <summary> - ///// 浜х嚎鍙�+ ///// 鐗╂枡鎵�湪鐨勫尯鍩� ///// </summary> - //public int N_PRODUCT_LINE { get; set; } = 0; // NOTE 鍚庣画MES鍙兘浼氭彁渚涳紝鍏堝垱寤� + //public string S_AREA_CODE { get; set; } = string.Empty; } } diff --git a/Program.cs b/Program.cs index 5f4e00f..e3e9b9b 100644 --- a/Program.cs +++ b/Program.cs @@ -22,9 +22,9 @@ // 2.0 寮�惎tcp StartTcp(); // 3.0 寮�惎S7 - StartS7(); + //StartS7(); // 4.0 寮�惎Modbus - StartModbus(); + //StartModbus(); // 5.0 寮�惎绾跨▼ var rc = HostFactory.Run(x => { @@ -113,6 +113,8 @@ { List<Task> tasks = new List<Task>(); + tasks.Add(GetTask(WCSCore.Dispatch)); + // 杞锛氬嚭搴撳崟鐘舵� tasks.Add(GetTask(Monitor.CheckOutboundOrder)); diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index 3c352ae..9c71a92 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -32,7 +32,7 @@ try { // 灏哖DA鎻愪緵鐨勭墿鏂欑紪鐮佷笌璐存爣鏈虹殑淇℃伅姣斿 var cgDetail = db.Queryable<TN_CG_Detail>() - .Where(d => d.S_ITEM_CODE == model.s_item_code && d.S_BATCH_NO == model.s_batch) // 鎸囧畾锛氱墿鏂欑紪鐮併�鎵规鍙�+ .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo) // 鎸囧畾锛氱墿鏂欑紪鐮併�鎵规鍙� .Where(d => d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮") // NOTE 鍐椾綑妫�煡锛氱墿鏂欑姸鎬佸簲璇ヤ负 1寰呮 .First(); @@ -43,19 +43,19 @@ } var startLoc = db.Queryable<TN_Location>() - .Where(a => a.S_CODE == model.s_start_loc) // 鎸囧畾锛氳捣鐐硅揣浣嶅彿 - .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 + .Where(l => l.S_CODE == model.StartLoc) // 鎸囧畾锛氳捣鐐硅揣浣嶅彿 + .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .First(); if (startLoc == null) { - info = $"璧风偣浣嶇疆 '{model.s_start_loc}' 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�; + info = $"璧风偣浣嶇疆 '{model.StartLoc}' 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�; LogHelper.Info(info); return NewSimpleResult(3, info); } // 缁戝畾璐т綅鍜屽鍣ㄥ彿 var locCntrRel = new TN_Loc_Container { - S_LOC_CODE = model.s_start_loc, + S_LOC_CODE = model.StartLoc, S_CNTR_CODE = cgDetail.S_CNTR_CODE, S_CNTR_TYPE = "濂借繍绠�, }; @@ -72,7 +72,7 @@ .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .Where(a => a.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅 .OrderBy(l => l.N_LAYER) - .OrderBy(l => l.S_AREA_CODE).First(); + .First(); if (endLoc == null) { info = "婊$鍏ュ簱鏆傛椂娌℃湁鍚堥�鐨勮揣浣嶅彲浠ュ叆搴�; @@ -83,8 +83,8 @@ var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { @@ -94,7 +94,7 @@ it.T_MODIFY }).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); return NewSimpleResult(4, info); } @@ -105,29 +105,28 @@ it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - info = $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); return NewSimpleResult(4, info); } if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; LogHelper.Info(info); return NewSimpleResult(4, info); } tran.CommitTran(); - info = $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; LogHelper.Info(info); return NewSimpleResult(0, info); } } catch (Exception ex) { info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; - LogHelper.Info(info); + LogHelper.InfoEx(ex); return NewSimpleResult(1, info); } } @@ -249,7 +248,9 @@ .First(); if (startLoc == null) { - return NewSimpleResult(2, $"璧风偣浣嶇疆 '{model.StartLoc}' 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�); + info = $"璧风偣浣嶇疆{model.StartLoc}涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�; + LogHelper.Info(info); + return NewSimpleResult(2, info); } // 鏌ョ湅瀹瑰櫒涓庤捣鐐硅揣浣嶆槸鍚︾粦瀹�@@ -258,55 +259,70 @@ .First(); if (locCntrRel == null) { - return NewSimpleResult(3, $"璧风偣浣嶇疆 '{model.StartLoc}' 娌℃湁缁戝畾瀹瑰櫒 '{model.CntrCode}'"); + info = $"璧风偣浣嶇疆{model.StartLoc}娌℃湁缁戝畾瀹瑰櫒{model.CntrCode}"; + LogHelper.Info(info); + return NewSimpleResult(3, info); } // TODO 鏆傚畾閫夋嫨鏈�綆灞傛寜鍖轰綅椤哄簭鍏ュ簱锛屽悗闈㈠緟淇敼 var endLoc = db.Queryable<TN_Location>() .Where(a => Settings.AreaMap[AreaName.绌烘墭瀛樻斁鍖篯.Contains(a.S_AREA_CODE)) .OrderBy(l => l.N_LAYER) - .OrderBy(l => l.S_AREA_CODE).First(); + .First(); if (endLoc == null) { - return NewSimpleResult(4, $"鏆傛椂娌℃湁绗﹀悎鏉′欢鐨勭粓鐐规斁璐т綅"); + info = $"鏆傛椂娌℃湁绗﹀悎鏉′欢鐨勭粓鐐规斁璐т綅"; + LogHelper.Info(info); + return NewSimpleResult(4, info); } var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { - it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() <= 0) { + it.N_LOCK_STATE, + it.S_LOCK_STATE, + it.S_LOCK_OP, + it.T_MODIFY + }).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; + LogHelper.Info(info); + return NewSimpleResult(4, info); } if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { - it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() <= 0) { - + it.N_LOCK_STATE, + it.S_LOCK_STATE, + it.S_LOCK_OP, + it.T_MODIFY + }).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�; + LogHelper.Info(info); + return NewSimpleResult(4, info); } if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + LogHelper.Info(info); + return NewSimpleResult(4, info); } tran.CommitTran(); - return NewSimpleResult(0, - $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + LogHelper.Info(info); + return NewSimpleResult(0, info); } } catch (Exception ex) { info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; - LogHelper.Info(info); + LogHelper.InfoEx(ex); return NewSimpleResult(1, info); } } @@ -327,7 +343,9 @@ .First(); if (startLoc == null) { - return NewSimpleResult(2, $"璧风偣浣嶇疆 '{model.StartLoc}' 涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�); + info = $"璧风偣浣嶇疆{model.StartLoc}涓嶅瓨鍦ㄦ垨涓嶅叿澶囧彇璐ц姹�; + LogHelper.Info(info); + return NewSimpleResult(2, info); } // 鏌ョ湅瀹瑰櫒涓庤捣鐐硅揣浣嶆槸鍚︾粦瀹�@@ -336,7 +354,9 @@ .First(); if (locCntrRel == null) { - return NewSimpleResult(3, $"璧风偣浣嶇疆 '{model.StartLoc}' 娌℃湁缁戝畾瀹瑰櫒 '{model.CntrCode}'"); + info = $"璧风偣浣嶇疆{model.StartLoc}娌℃湁缁戝畾瀹瑰櫒{model.CntrCode}"; + LogHelper.Info(info); + return NewSimpleResult(3, info); } // TODO 鏆傚畾閫夋嫨鏈�綆灞傛寜鍖轰綅椤哄簭鍏ュ簱锛屽悗闈㈠緟淇敼 @@ -352,38 +372,51 @@ var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { - it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() <= 0) { + it.N_LOCK_STATE, + it.S_LOCK_STATE, + it.S_LOCK_OP, + it.T_MODIFY + }).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; + LogHelper.Info(info); + return NewSimpleResult(4, info); } if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { - it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() <= 0) { - + it.N_LOCK_STATE, + it.S_LOCK_STATE, + it.S_LOCK_OP, + it.T_MODIFY + }).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�; + LogHelper.Info(info); + return NewSimpleResult(4, info); } if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + LogHelper.Info(info); + return NewSimpleResult(4, info); } tran.CommitTran(); - return NewSimpleResult(0, - $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + LogHelper.Info(info); + return NewSimpleResult(0, info); } } catch (Exception ex) { - return BuildSimpleEx(ex); + info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + LogHelper.InfoEx(ex); + return NewSimpleResult(1, info); } } @@ -431,8 +464,8 @@ var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { @@ -442,8 +475,9 @@ it.T_MODIFY }).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; + LogHelper.Info(info); + return NewSimpleResult(4, info); } if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { @@ -452,25 +486,29 @@ it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�; + LogHelper.Info(info); + return NewSimpleResult(4, info); } if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + LogHelper.Info(info); + return NewSimpleResult(4, info); } tran.CommitTran(); - return NewSimpleResult(0, - $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + LogHelper.Info(info); + return NewSimpleResult(0, info); } } catch (Exception ex) { - return BuildSimpleEx(ex); + info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + LogHelper.InfoEx(ex); + return NewSimpleResult(1, info); } } @@ -517,38 +555,51 @@ var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { - it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() <= 0) { + it.N_LOCK_STATE, + it.S_LOCK_STATE, + it.S_LOCK_OP, + it.T_MODIFY + }).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; + LogHelper.Info(info); + return NewSimpleResult(4, info); } if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { - it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() <= 0) { - + it.N_LOCK_STATE, + it.S_LOCK_STATE, + it.S_LOCK_OP, + it.T_MODIFY + }).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�; + LogHelper.Info(info); + return NewSimpleResult(4, info); } if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - return NewSimpleResult(500, - $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + LogHelper.Info(info); + return NewSimpleResult(4, info); } tran.CommitTran(); - return NewSimpleResult(0, - $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + LogHelper.Info(info); + return NewSimpleResult(0, info); } } catch (Exception ex) { - return BuildSimpleEx(ex); + info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + LogHelper.InfoEx(ex); + return NewSimpleResult(1, info); } } @@ -621,7 +672,9 @@ return NewSimpleResult(0, $"鍒涘缓 鎶芥鍗�鎴愬姛"); } catch (Exception ex) { - return BuildSimpleEx(ex); + info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + LogHelper.InfoEx(ex); + return NewSimpleResult(1, info); } } /// <summary> @@ -693,8 +746,8 @@ var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_CG_Detail>(cgDetail).UpdateColumns(it => @@ -744,7 +797,7 @@ } catch (Exception ex) { info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; - LogHelper.Info(info); + LogHelper.InfoEx(ex); return NewSimpleResult(1, info); } } @@ -798,8 +851,8 @@ var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_CG_Detail>(cgDetail).UpdateColumns(it => @@ -848,7 +901,9 @@ } } catch (Exception ex) { - return BuildSimpleEx(ex); + info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + LogHelper.InfoEx(ex); + return NewSimpleResult(1, info); } } @@ -859,6 +914,7 @@ try { var startLoc = db.Queryable<TN_Location>() .Where(l => l.S_CODE == model.StartLoc) + .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 .First(); var locCntrRel = db.Queryable<TN_Loc_Container>() @@ -879,8 +935,8 @@ var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { @@ -922,8 +978,9 @@ } } catch (Exception ex) { - - return BuildSimpleEx(ex); + info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + LogHelper.InfoEx(ex); + return NewSimpleResult(1, info); } } @@ -1047,7 +1104,9 @@ return NewSimpleResult(0, "鐢熸垚鍑哄簱鍗曟垚鍔�); } catch (Exception ex) { - return BuildSimpleEx(ex); + info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + LogHelper.InfoEx(ex); + return NewSimpleResult(1, info); } } @@ -1107,7 +1166,9 @@ return NewSimpleResult(0, "鐢熸垚鍑哄簱鍗曟垚鍔�); } catch (Exception ex) { - return BuildSimpleEx(ex); + info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + LogHelper.InfoEx(ex); + return NewSimpleResult(1, info); } } @@ -1172,7 +1233,7 @@ } catch (Exception ex) { info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; - LogHelper.Info(info); + LogHelper.InfoEx(ex); return result; } } @@ -1246,7 +1307,9 @@ return NewSimpleResult(0, $"鍒涘缓 鎶芥鍗�鎴愬姛"); } catch (Exception ex) { - return BuildSimpleEx(ex); + info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + LogHelper.InfoEx(ex); + return NewSimpleResult(1, info); } } @@ -1266,11 +1329,10 @@ } catch (Exception ex) { info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; - LogHelper.Info(info); + LogHelper.InfoEx(ex); return result; } } - private static string GenerateOrderNo(string snType, string prefix) { var id = SYSHelper.GetSerialNumber(snType, prefix); @@ -1286,12 +1348,13 @@ public static WmsResult CgInfoSync(CgInfoSyncInfo model) { var db = new SqlHelper<object>().GetInstance(); var random = new Random(); + var info = ""; try { var detail = new TN_CG_Detail { S_ITEM_CODE = model.ItemCode, S_ITEM_NAME = model.ItemName, - S_CNTR_CODE = Guid.NewGuid().ToString("D"), // NOTE 瀹瑰櫒鍙凤細鐩墠闅忔満锛堝悗鏈熷彲鑳戒細鎸囧畾锛屾垨鑰匬DA缁戝畾鏃跺啀濉叆锛�+ S_CNTR_CODE = GenerateOrderNo("瀹瑰櫒鍙�, "CN"), // NOTE 瀹瑰櫒鍙凤細鐩墠闅忔満锛堝悗鏈熷彲鑳戒細鎸囧畾锛屾垨鑰匬DA缁戝畾鏃跺啀濉叆锛� S_BATCH_NO = model.BatchNo, S_STANDARD = model.Standard, S_NET_WEIGHT = model.NetWeight, @@ -1299,31 +1362,35 @@ //N_PRODUCT_LINE = random.Next(0, 3), // NOTE 浜х嚎鍙凤細鐩墠闅忔満锛堝悗鏈熷彲鑳戒細鎸囧畾锛屾垨鑰匬DA缁戝畾鏃跺啀濉叆锛� }; - // 璐т綅瀹瑰櫒缁戝畾鐨勯�杈戯紝鍦ㄥソ杩愮涓嬬嚎PDA鐨勬祦绋嬩腑鎿嶄綔 - //var locCntrRel = new TN_Loc_Container { // //S_LOC_CODE = Settings.Config.ProductionLines[detail.N_PRODUCT_LINE].OffLoc[0], // 濂借繍绠辩殑浣嶇疆鏄搷浣滃尯锛屼笉鏄骇绾� // S_CNTR_CODE = detail.S_CNTR_CODE, // S_CNTR_TYPE = "濂借繍绠�, // 璐存爣鏈哄彧閽堝濂借繍绠� //}; - //using (var tran = db.Ado.UseTran()) { - // if (db.Insertable<TN_CG_Detail>(detail).ExecuteCommand() <= 0 - // && db.Insertable<TN_Loc_Container>(detail).ExecuteCommand() <= 0) { - // tran.RollbackTran(); - // return MesResultBuilder(2, "鎻掑叆鐗╂枡淇℃伅澶辫触锛� + JsonConvert.SerializeObject(detail)); - // } - // tran.CommitTran(); - //} + using (var tran = db.Ado.UseTran()) { + if (db.Insertable<TN_CG_Detail>(detail).ExecuteCommand() <= 0) { + tran.RollbackTran(); + info = "鎻掑叆鐗╂枡淇℃伅澶辫触锛� + JsonConvert.SerializeObject(detail); + return NewWmsResult(2, info); + } - if (db.Insertable<TN_CG_Detail>(detail).ExecuteCommand() <= 0) { - return MesResultBuilder(2, "鎻掑叆鐗╂枡淇℃伅澶辫触锛� + JsonConvert.SerializeObject(detail)); + //if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) { + // tran.RollbackTran(); + // info = "鎻掑叆鐗╂枡淇℃伅澶辫触锛� + JsonConvert.SerializeObject(detail); + // return NewWmsResult(2, info); + //} + + tran.CommitTran(); } - return MesResultBuilder(0, "鎻掑叆鐗╂枡淇℃伅鎴愬姛"); + info = "鎻掑叆鐗╂枡淇℃伅鎴愬姛"; + return NewWmsResult(0, info); } catch (Exception ex) { - return MesResultBuilder(1, ex.Message); + info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + LogHelper.InfoEx(ex); + return NewWmsResult(1, info); } } } diff --git a/api/ApiModel.cs b/api/ApiModel.cs index 9f65d18..5a5ac90 100644 --- a/api/ApiModel.cs +++ b/api/ApiModel.cs @@ -28,20 +28,6 @@ } /// <summary> - /// 鏋勫缓 <see cref="SimpleResult"/> 寮傚父杩斿洖鍊硷紝閫夋嫨鎵撳嵃寮傚父鏃ュ織淇℃伅锛堥粯璁ゆ墦鍗帮級 - /// </summary> - /// <param name="ex"></param> - /// <param name="exCode"></param> - /// <param name="pringLog"></param> - /// <returns></returns> - public static SimpleResult BuildSimpleEx(Exception ex, int exCode = 1, bool pringLog = true) { - if (pringLog) { - LogHelper.InfoEx(ex); - } - return new SimpleResult { resultCode = exCode, resultMsg = ex.Message }; - } - - /// <summary> /// HostToAGV 涓婃姤浠诲姟鐘舵� /// </summary> public class AgvTaskState { @@ -69,7 +55,7 @@ public class SafetyInteractionInfo { - public int station_id { get; set; } + //public int station_id { get; set; } /// <summary> /// 璇锋眰涓婄嚎/涓嬬嚎鐨勭殑绔欏彴搴撲綅鍚嶇О锛屼緥濡倃ork6銆亀ork8 @@ -80,7 +66,7 @@ /// 璇锋眰鐮� /// </summary> public string apply_code { get; set; } - public string task_no { set; get; } + //public string task_no { set; get; } } /// <summary> @@ -89,6 +75,10 @@ public class ReturnResult { public int ResultCode { get; set; } public string ResultMsg { get; set; } + } + + public static ReturnResult NewReturnResult(int code, string message) { + return new ReturnResult { ResultCode = code, ResultMsg = message }; } public class orderStatusReportParme { @@ -153,13 +143,10 @@ /// 杩斿洖缁橤Z /// </summary> public class GzResult { - public int resultCode { get; set; } public string msg { get; set; } public int orderID { get; set; } } - - } @@ -172,7 +159,8 @@ /// <summary> /// 鐗╂枡缂栫爜 /// </summary> - public string s_item_code { get; set; } + [JsonProperty("s_item_code")] + public string ItemCode { get; set; } ///// <summary> ///// 鐗╂枡鍚嶇О ///// </summary> @@ -181,20 +169,23 @@ /// <summary> /// 鎵规鍙� /// </summary> - public string s_batch { get; set; } + [JsonProperty("s_batch")] + public string BatchNo { get; set; } /// <summary> /// 鐗╂枡瑙勬牸 /// </summary> - + [JsonProperty("s_spec")] public string s_spec { get; set; } /// <summary> /// 鏁伴噺 /// </summary> + [JsonProperty("n_num")] public int n_num { get; set; } /// <summary> /// 璧风偣璐т綅淇℃伅 /// </summary> - public string s_start_loc { get; set; } + [JsonProperty("s_start_loc")] + public string StartLoc { get; set; } } /// <summary> /// 绌烘墭/绌虹鍏ュ簱缁戝畾(PDA)鏁版嵁绫�@@ -559,10 +550,7 @@ public string Data { get; set; } } - public static WmsResult MesResultBuilder(int code, string message = "", bool printLog = true) { - if (printLog && string.IsNullOrEmpty(message)) { - LogHelper.Info(message); - } + public static WmsResult NewWmsResult(int code, string message = "", bool printLog = true) { return new WmsResult { Result = code, Success = code == 0, // 浠呭綋code=0鏃讹紝success=true diff --git a/api/DebugController.cs b/api/DebugController.cs index 2a5c8bd..2ce3d54 100644 --- a/api/DebugController.cs +++ b/api/DebugController.cs @@ -3,6 +3,7 @@ using System.Runtime.ConstrainedExecution; using System.Web.Http; +using HH.WCS.Mobox3.DSZSH.core; using HH.WCS.Mobox3.DSZSH.models; using HH.WCS.Mobox3.DSZSH.util; @@ -18,15 +19,45 @@ public class DebugController : ApiController { /// <summary> - /// 妯℃嫙 AGV 澶氭鍥炴姤浠诲姟鐘舵� + /// AGV鐘舵�涓�敭鍥炴姤134562 /// </summary> /// <param name="model">瀹瑰櫒鍙�/param> /// <returns></returns> [HttpPost] - [Route("AgvSeriesReports")] - public ReturnResults AgvSeriesReports(UpdateTaskState model) - { - return new ReturnResults(); + [Route("AGVSeriesReports")] + public ReturnResults AGVSeriesReports(UpdateTaskState model) { + var agvTaskState = new AgvTaskState() { + task_no = model.TaskID, + forklift_no = model.ForkliftNo, + state = 1 + }; + ReturnResults returnResult = new ReturnResults(); + returnResult.ResultList = new List<ReturnResult>(); + + var temp1 = WCSCore.OperateAgvTaskStatus(agvTaskState); + returnResult.ResultList.Add(temp1); + + agvTaskState.state = 3; + var temp3 = WCSCore.OperateAgvTaskStatus(agvTaskState); + returnResult.ResultList.Add(temp3); + + agvTaskState.state = 4; + var temp4 = WCSCore.OperateAgvTaskStatus(agvTaskState); + returnResult.ResultList.Add(temp4); + + agvTaskState.state = 5; + var temp5 = WCSCore.OperateAgvTaskStatus(agvTaskState); + returnResult.ResultList.Add(temp5); + + agvTaskState.state = 6; + var temp6 = WCSCore.OperateAgvTaskStatus(agvTaskState); + returnResult.ResultList.Add(temp6); + + agvTaskState.state = 2; + var temp2 = WCSCore.OperateAgvTaskStatus(agvTaskState); + returnResult.ResultList.Add(temp2); + + return returnResult; } /// <summary> diff --git a/api/MoboxController.cs b/api/MoboxController.cs index a309518..36a11bf 100644 --- a/api/MoboxController.cs +++ b/api/MoboxController.cs @@ -21,7 +21,9 @@ [HttpPost] [Route("goodpack-offline")] public SimpleResult GoodpackOffline(GoodpackOfflineInfo model) { - LogHelper.InfoApi("濂借繍绠�婊℃墭涓嬬嚎鍏ュ簱(PDA)", model); + var apiName = "濂借繍绠�婊℃墭涓嬬嚎鍏ュ簱(PDA)"; + LogHelper.InfoApi(apiName, model); + return ApiHelper.GoodpackOffline(model); } @@ -54,7 +56,8 @@ [HttpPost] [Route("empty-inbound")] public SimpleResult EmptyInbound(EmptyInboundInfo model) { - LogHelper.InfoApi("绌烘墭/绌虹鍏ュ簱", model); + var apiName = "绌烘墭/绌虹鍏ュ簱"; + LogHelper.InfoApi(apiName, model); if (model.CntrType == "鎵樼洏") { return ApiHelper.EmptyInboundPallet(model); @@ -107,6 +110,8 @@ [HttpPost] [Route("empty-online-pallet")] public SimpleResult EmptyOnlinePallet(EmptyOnlinePalletInfo model) { + var apiName = "鎵樼洏-绌烘墭涓婄嚎(PDA)"; + LogHelper.InfoApi(apiName, model); return ApiHelper.EmptyOnlinePallet(model); } @@ -118,6 +123,8 @@ [HttpPost] [Route("empty-online-goodpack")] public SimpleResult EmptyOnlineGoodpack(EmptyOnlineGoodpackInfo model) { + var apiName = "濂借繍绠�绌虹涓婄嚎(PDA)"; + LogHelper.InfoApi(apiName, model); return ApiHelper.EmptyOnlineGoodpack(model); } @@ -146,6 +153,8 @@ [HttpPost] [Route("qualified-back")] public SimpleResult QualifiedBack(QualifiedBackInfo model) { + var apiName = "鍚堟牸鍥炲簱(PDA)"; + LogHelper.InfoApi(apiName, model); return ApiHelper.QualifiedBack(model); } @@ -156,6 +165,8 @@ [HttpPost] [Route("unqualified-shift")] public SimpleResult UnqualifiedShift(UnqualifiedShiftInfo model) { + var apiName = "涓嶅悎鏍肩Щ搴�PDA)"; + LogHelper.InfoApi(apiName, model); return ApiHelper.UnqualifiedShift(model); } @@ -167,6 +178,8 @@ [HttpPost] [Route("rest-back")] public SimpleResult RestBack(RestBackInfo model) { + var apiName = "浣欐枡灏剧鍥炲簱(PDA)"; + LogHelper.InfoApi(apiName, model); return ApiHelper.RestBack(model); } @@ -178,7 +191,8 @@ [HttpPost] [Route("finished-outbound")] public SimpleResult FinishedOutbound(FinishedOutboundInfo model) { - LogHelper.InfoApi("鎴愬搧鑳跺嚭搴�PDA)", model); + var apiName = "鎴愬搧鑳跺嚭搴�PDA)"; + LogHelper.InfoApi(apiName, model); if (model.ForcedOut) { return ApiHelper.FinishedOutboundForce(model); @@ -188,26 +202,26 @@ } } - /// <summary> - /// 鎶芥-鍒涘缓鎶芥鍗�WMS) - /// </summary> - /// <param name="model"></param> - /// <returns></returns> - [HttpPost] - [Route("create-check-order")] - public SimpleResult CreateCheckOrder(CreateCheckOrderInfo model) { - return ApiHelper.CreateCheckOrder(model); - } + ///// <summary> + ///// 鎶芥-鍒涘缓鎶芥鍗�WMS) + ///// </summary> + ///// <param name="model"></param> + ///// <returns></returns> + //[HttpPost] + //[Route("create-check-order")] + //public SimpleResult CreateCheckOrder(CreateCheckOrderInfo model) { + // return ApiHelper.CreateCheckOrder(model); + //} - /// <summary> - /// 绉诲簱-鍒涘缓绉诲簱浠诲姟(WMS) - /// </summary> - /// <param name="model"></param> - /// <returns></returns> - [HttpPost] - [Route("shift-storage")] - public SimpleResult CreateShiftOrder(CreateShiftOrderInfo model) { - return ApiHelper.CreateShiftOrder(model); - } + ///// <summary> + ///// 绉诲簱-鍒涘缓绉诲簱浠诲姟(WMS) + ///// </summary> + ///// <param name="model"></param> + ///// <returns></returns> + //[HttpPost] + //[Route("shift-storage")] + //public SimpleResult CreateShiftOrder(CreateShiftOrderInfo model) { + // return ApiHelper.CreateShiftOrder(model); + //} } } diff --git a/core/Monitor.cs b/core/Monitor.cs index 0dce8c5..728acbe 100644 --- a/core/Monitor.cs +++ b/core/Monitor.cs @@ -11,10 +11,42 @@ namespace HH.WCS.Mobox3.DSZSH.core { public class Monitor { + public static void CheckInbound() { + var taskName = TaskName.鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱; + var db = new SqlHelper<object>().GetInstance(); + var info = ""; + try { + // 鏌ヤ骇绾挎槸鍚︽湁鐗╂枡淇℃伅 + + var itemCode = ""; + var batchNo = ""; + var cntrCode = ""; + var startLocCode = ""; + + var cgDetail = new TN_CG_Detail { + S_ITEM_CODE = itemCode, + S_BATCH_NO = batchNo, + S_CNTR_CODE = cntrCode, + }; + + var startLoc = db.Queryable<TN_Location>() + .Where(l => l.S_CODE == startLocCode) // 鎸囧畾锛氳捣鐐硅揣浣嶅彿 + .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 + .First(); + + + + } + catch (Exception ex) { + LogHelper.InfoEx(ex); + } + + } + public static void CheckOutboundOrder() { var taskName = TaskName.鎴愬搧鑳跺嚭搴� var db = new SqlHelper<object>().GetInstance(); - var info = ""; + var info = $"杞--{taskName}--"; try { var orderList = db.Queryable<TN_Outbound_Order>() @@ -23,7 +55,8 @@ .ToList(); if (orderList.Count == 0) { - LogHelper.Info("杞--鍑哄簱--鏆傛棤寰呮墽琛岀殑Order"); + info += $"鏆傛棤寰呮墽琛岀殑{taskName}鍗�; + LogHelper.Info(info); return; } @@ -33,7 +66,8 @@ .Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); // 鎵ц涓� var allCount = db.Queryable<TN_Outbound_Detail>() .Count(d => d.S_OO_NO == order.S_NO); - LogHelper.Info($"杞--鍑哄簱--缁熻鍑哄簱鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}"); + info += $"缁熻{taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}"; + LogHelper.Info(info); if (doingCount == allCount) { order.N_B_STATE = 2; // 鎵�湁浠诲姟閮藉凡鎵ц @@ -44,16 +78,20 @@ var lastDetail = db.Queryable<TN_Outbound_Detail>() .Where(d => d.S_OO_NO == order.S_NO && d.N_B_STATE == 2) // TODO 鎴栬�鏀规垚鏌ask .First(); + if (lastDetail != null) { - LogHelper.Info($"杞--鍑哄簱--鍑哄簱鍗�{order.S_NO}'涓婁竴涓换鍔′粛鍦ㄨ繘琛屼腑锛� + JsonConvert.SerializeObject(lastDetail)); + info += $"{taskName}鍗�{order.S_NO}'涓婁竴涓换鍔′粛鍦ㄨ繘琛屼腑锛� + JsonConvert.SerializeObject(lastDetail); + LogHelper.Info(info); continue; } var outboundDetail = db.Queryable<TN_Outbound_Detail>() .Where(a => a.S_OO_NO == order.S_NO && a.N_B_STATE == 1) // 宸蹭笅鍙� .First(); - if (outboundDetail != null) { - LogHelper.Info($"杞--鍑哄簱--"); + + if (outboundDetail == null) { + info += $"浠嶆湁浠诲姟鏈墽琛屽畬鎴愶紝浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�; + LogHelper.Info(info); continue; } @@ -61,13 +99,9 @@ } if (detailList.Count == 0) { + // 涓婇潰娴佺▼宸茬粡鎵撳嵃杩囨棩蹇� return; } - - var startLocList = new List<TN_Location>(); - var endLocList = new List<TN_Location>(); - - var taskList = new List<TN_Task>(); foreach (var detail in detailList) { var startLoc = db.Queryable<TN_Location>() @@ -76,7 +110,7 @@ .First(); if (startLoc == null) { - LogHelper.Info($"杞--鍑哄簱锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�); + LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�); continue; } @@ -86,7 +120,7 @@ .Where(a => a.N_CURRENT_NUM == 0).First(); if (endLoc == null) { - LogHelper.Info($"杞--鍑哄簱锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛丼_NO涓�'{detail.S_OO_NO}'锛岃姹侫rea涓�'{detail.S_END_AREA}'"); + LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛佸崟鍙�{detail.S_OO_NO}'瑕佹眰缁堢偣搴撳尯涓�{detail.S_END_AREA}'"); continue; } @@ -95,13 +129,15 @@ var cntId = detail.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_Outbound_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { tran.RollbackTran(); - LogHelper.Info($"杞--鍑哄簱--淇敼鏄庣粏琛ㄧ姸鎬佷负瀹屾垚澶辫触锛�); + info += $"淇敼鏄庣粏琛ㄧ姸鎬佷负瀹屾垚--澶辫触锛�; + LogHelper.Info(info); + continue; } if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { @@ -111,7 +147,7 @@ it.T_MODIFY }).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info += $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); continue; } @@ -122,28 +158,28 @@ it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - info = $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info += $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); continue; } if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info += $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; LogHelper.Info(info); continue; } tran.CommitTran(); - info = $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info += $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; LogHelper.Info(info); continue; } } } catch (Exception ex) { + info += $"鍙戠敓浜嗗紓甯革細{ex.Message}"; LogHelper.InfoEx(ex); } } @@ -152,6 +188,7 @@ var taskName = TaskName.鎶芥_鍑哄簱; var db = new SqlHelper<object>().GetInstance(); var info = ""; + try { var orderList = db.Queryable<TN_Check_Order>() .Where(c => c.N_B_STATE == 1) @@ -182,7 +219,7 @@ .ToList(); if (checkDetailList.Count == 0) { - LogHelper.Info($"杞--"); + LogHelper.Info($"杞--{taskName}--浠嶆湁浠诲姟鏈墽琛屽畬鎴愶紝浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�); continue; } @@ -217,8 +254,8 @@ var cntId = detail.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_Check_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { @@ -234,7 +271,7 @@ it.T_MODIFY }).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); continue; } @@ -246,20 +283,20 @@ it.T_MODIFY }).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); continue; } if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; LogHelper.Info(info); continue; } tran.CommitTran(); - info = $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; LogHelper.Info(info); continue; } @@ -304,7 +341,7 @@ .ToList(); if (checkDetailList.Count == 0) { - LogHelper.Info($"杞--"); + LogHelper.Info($"杞--{taskName}--浠嶆湁浠诲姟鏈墽琛屽畬鎴愶紝浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�); continue; } @@ -339,8 +376,8 @@ var cntId = detail.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 1); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 2); // 缁堢偣鍏ュ簱閿�+ LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { if (db.Updateable<TN_Shift_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { @@ -356,7 +393,7 @@ it.T_MODIFY }).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); continue; } @@ -368,20 +405,20 @@ it.T_MODIFY }).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); continue; } if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; LogHelper.Info(info); continue; } tran.CommitTran(); - info = $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; LogHelper.Info(info); continue; } diff --git a/core/WCSCore.cs b/core/WCSCore.cs index 95eff3f..5fbf07f 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -5,7 +5,6 @@ using System.Threading.Tasks; using HH.WCS.Mobox3.DSZSH.device; - using HH.WCS.Mobox3.DSZSH.models; using HH.WCS.Mobox3.DSZSH.process; using HH.WCS.Mobox3.DSZSH.util; @@ -14,7 +13,6 @@ using Newtonsoft.Json; using static HH.WCS.Mobox3.DSZSH.api.ApiModel; - namespace HH.WCS.Mobox3.DSZSH.core { public class WCSCore { @@ -102,11 +100,11 @@ case 2: // 瀹屾垚 WCSHelper.End(TN_Task); // 浠诲姟鐘舵�鏀规垚缁撴潫 - if (TN_Task.S_TYPE == TaskName.鎶芥_鍑哄簱) { - var checkCompleteTask = Task.Run(() => { - UpdateCheckTaskState(3); - }); - } + //if (TN_Task.S_TYPE == TaskName.鎶芥_鍑哄簱) { + // var checkCompleteTask = Task.Run(() => { + // UpdateCheckTaskState(3); + // }); + //} break; case 7: // 寮傚父 @@ -123,45 +121,90 @@ } public static ReturnResult SafetyInteraction(SafetyInteractionInfo model) { - var gzResult = new ReturnResult(); var db = new SqlHelper<object>().GetInstance(); - ModbusHelper.Relink(); + var info = ""; try { - + ModbusHelper.Relink(); var prodLineInfo = Settings.ProductionLines[0]; + var prodLineDevice = new ProductionLineDevice(prodLineInfo.PlcIp, prodLineInfo.PlcPort); if (!prodLineDevice.LoadDeviceStateOk()) { - LogHelper.Info("鍔犺浇璁惧淇℃伅澶辫触"); + info = "涓庝骇绾胯澶囬�璁け璐�; + LogHelper.Info(info); + return NewReturnResult(2, info); } - var tn_task = db.Queryable<TN_Task>().First(a => a.S_CODE == model.task_no); - if (tn_task == null) { - LogHelper.Info($"浠诲姟鍙�'{model.task_no}' 涓嶅瓨鍦�); + //var tn_task = db.Queryable<TN_Task>().First(a => a.S_CODE == model.task_no); + //if (tn_task == null) { + // LogHelper.Info($"浠诲姟鍙�'{model.task_no}' 涓嶅瓨鍦�); + //} + //if (prodLineDevice.SystemState == 1) { + // if (prodLineDevice.FullOffline == 1 && tn_task.S_TYPE == TaskName.鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱) { + // prodLineDevice.AgvPicking = 1; + // } + // if (prodLineDevice.AllowAgvPlacePallet == 1 && tn_task.S_TYPE == TaskName.鎵樼洏_绌烘墭涓婄嚎) { + // prodLineDevice.AgvPlacingPallet = 1; + // } + //} + + if (prodLineDevice.SystemState != 1) { + info = $"褰撳墠浜х嚎鏃犳硶涓嶢GV鑱斿姩锛氱姸鎬亄prodLineDevice.SystemState}"; + LogHelper.Info(info); + return NewReturnResult(3, info); } - // 寰呬慨鏀癸細琛ュ厖涓嶅悓鍒嗘敮AGV鍒ゆ柇 - if (prodLineDevice.SystemState == 1) { - if (prodLineDevice.FullOffline == 1 && tn_task.S_TYPE == TaskName.鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱) { - prodLineDevice.AgvPicking = 1; + if (model.apply_code == "5") { + if (prodLineDevice.FullOffline != 1) { + info = $"褰撳墠杈撻�绾挎弧鏂欎笅绾夸俊鍙蜂笉涓�锛屾棤娉曞彇璐�; + LogHelper.Info(info); + return NewReturnResult(4, info); } - if (prodLineDevice.AllowAgvPlacePallet == 1 && tn_task.S_TYPE == TaskName.鎵樼洏_绌烘墭涓婄嚎) { - prodLineDevice.AgvPlacingPallet = 1; + + if (!prodLineDevice.SetAgvPicking(1)) { + info = $"鍚戣緭閫佺嚎鍐欏叆鍏佽鍙栬揣淇″彿澶辫触"; + LogHelper.Info(info); + return NewReturnResult(5, info); } + + info = $"鍚戣緭閫佺嚎鍐欏叆鍏佽鍙栬揣淇″彿鎴愬姛"; + LogHelper.Info(info); + return NewReturnResult(0, info); + + } + else if (model.apply_code == "1") { + if (prodLineDevice.AllowAgvPlacePallet != 1) { + info = $"褰撳墠杈撻�绾垮厑璁告斁鎵樼洏淇″彿涓嶄负1锛屾棤娉曟斁璐�; + LogHelper.Info(info); + return NewReturnResult(6, info); + } + + if (!prodLineDevice.SetAgvPlacingPallet(1)) { + info = $"鍚戣緭閫佺嚎鍐欏叆鍏佽鏀捐揣淇″彿澶辫触"; + LogHelper.Info(info); + return NewReturnResult(7, info); + } + + info = $"鍚戣緭閫佺嚎鍐欏叆鍏佽鏀捐揣淇″彿鎴愬姛"; + LogHelper.Info(info); + return NewReturnResult(0, info); + } + else { + info = $"褰撳墠杈撻�绾垮厑璁�; + LogHelper.Info(info); + return NewReturnResult(8, info); } - LogHelper.Info(JsonConvert.SerializeObject(prodLineDevice, Formatting.Indented)); - return gzResult; } catch (Exception ex) { - LogHelper.Info($"鍙戠敓浜嗗紓甯革細{ex.Message}"); - return gzResult; + info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; + LogHelper.InfoEx(ex); + return NewReturnResult(1, info); } } public static void UpdateOutboundTaskState(int spotStateCode) { - var db = new SqlHelper<object>().GetInstance(); var detail = db.Queryable<TN_Outbound_Detail>() @@ -280,5 +323,26 @@ tran.CommitTran(); } } + + /// <summary> + /// 浠诲姟鍒嗗彂锛屾牴鎹皟搴︾被鍨嬪彂缁欎笉鍚岀殑璋冨害绯荤粺 + /// </summary> + internal static void Dispatch() { + //鏌ヨ浠诲姟 + //鑾峰彇鎵�湁绛夊緟鐨勪换鍔�+ var list = WCSHelper.GetWaitingTaskList(); + LogHelper.Info("绛夊緟浠诲姟淇℃伅" + JsonConvert.SerializeObject(list), "API"); + if (list.Count > 0) { + list.ForEach(task => { + //浣跨敤鑷畾涔変换鍔℃帹閫�+ TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧 + //TaskProcess.SendGZTask(task);///璋冨害鍥借嚜璁惧 + + }); + } + else { + LogHelper.Info("鏆傛棤浠诲姟"); + } + } } } diff --git a/device/ProductionLineDevice.cs b/device/ProductionLineDevice.cs index d6d6b04..4eaf326 100644 --- a/device/ProductionLineDevice.cs +++ b/device/ProductionLineDevice.cs @@ -1,6 +1,7 @@ 锘縰sing System; using Newtonsoft.Json; +using Newtonsoft.Json.Linq; namespace HH.WCS.Mobox3.DSZSH.device { /// <summary> @@ -46,29 +47,65 @@ /// </summary> public int AllowAgvPlacePallet { get; set; } - private int _agvPicking; - private int _agvPlacingPallet; + //private int _agvPicking; + //private int _agvPlacingPallet; + + ///// <summary> + ///// AGV 姝e湪鍙栬揣锛氫笅绾緼GV鍐欏叆1锛屽彇璐у畬鎴愬悗鎭㈠0 + ///// </summary> + //public int AgvPicking { + // get => _agvPicking; + // set { + // var isOk = ModbusHelper.WriteSingleRegister(10, value, Ip, Port); + // _agvPicking = isOk ? value : throw new Exception($"淇敼 [AGV 姝e湪鍙栬揣] 涓�'{value}' 澶辫触"); + // } + //} /// <summary> /// AGV 姝e湪鍙栬揣锛氫笅绾緼GV鍐欏叆1锛屽彇璐у畬鎴愬悗鎭㈠0 /// </summary> - public int AgvPicking { - get => _agvPicking; - set { - var isOk = ModbusHelper.WriteSingleRegister(10, value, Ip, Port); - _agvPicking = isOk ? value : throw new Exception($"淇敼 [AGV 姝e湪鍙栬揣] 涓�'{value}' 澶辫触"); + public int AgvPicking { get; set; } + + /// <summary> + /// AGV 姝e湪鍙栬揣锛氫笅绾緼GV鍐欏叆1锛屽彇璐у畬鎴愬悗鎭㈠0 + /// </summary> + /// <param name="value"></param> + /// <returns></returns> + public bool SetAgvPicking(int value) { + if (!ModbusHelper.WriteSingleRegister(10, value, Ip, Port)) { + return false; } + + AgvPicking = value; + return true; } + + ///// <summary> + ///// AGV 姝e湪鏀炬墭鐩樺灈锛氫笂绾緼GV鍐欏叆1锛屾斁鎵樺畬鎴愬悗鎭㈠0 + ///// </summary> + //public int AgvPlacingPallet { + // get => _agvPlacingPallet; + // set { + // var isOk = ModbusHelper.WriteSingleRegister(11, value, Ip, Port); + // _agvPlacingPallet = isOk ? value : throw new Exception($"淇敼 [AGV 姝e湪鏀炬墭鐩樺灈] 涓�'{value}' 澶辫触"); + // } + //} /// <summary> /// AGV 姝e湪鏀炬墭鐩樺灈锛氫笂绾緼GV鍐欏叆1锛屾斁鎵樺畬鎴愬悗鎭㈠0 /// </summary> - public int AgvPlacingPallet { - get => _agvPlacingPallet; - set { - var isOk = ModbusHelper.WriteSingleRegister(11, value, Ip, Port); - _agvPlacingPallet = isOk ? value : throw new Exception($"淇敼 [AGV 姝e湪鏀炬墭鐩樺灈] 涓�'{value}' 澶辫触"); + public int AgvPlacingPallet { get; set; } + + /// <summary> + /// AGV 姝e湪鏀炬墭鐩樺灈锛氫笂绾緼GV鍐欏叆1锛屾斁鎵樺畬鎴愬悗鎭㈠0 + /// </summary> + public bool SetAgvPlacingPallet(int value) { + if (!ModbusHelper.WriteSingleRegister(11, value, Ip, Port)) { + return false; } + + AgvPlacingPallet = value; + return true; } public bool LoadDeviceStateOk() { @@ -83,8 +120,10 @@ CallPallet = readArray[2]; AllowAgvPlacePallet = readArray[3]; // 鍙啓鍦板潃鏁版嵁 - _agvPicking = readArray[10]; - _agvPlacingPallet = readArray[11]; + //_agvPicking = readArray[10]; + //_agvPlacingPallet = readArray[11]; + AgvPicking = readArray[10]; + AgvPlacingPallet = readArray[11]; var log = JsonConvert.SerializeObject(readArray); LogHelper.Info(log); diff --git a/device/TcpClientHelper.cs b/device/TcpClientHelper.cs new file mode 100644 index 0000000..740887e --- /dev/null +++ b/device/TcpClientHelper.cs @@ -0,0 +1,323 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Net; +using System.Net.Sockets; +using System.Text; + +using Newtonsoft.Json; + +namespace HH.WCS.Mobox3.DSZSH.device { + public class TcpClientHelper { + + private static Socket _clientSocket; + private static byte[] _buffer = new byte[1024]; + public static Dictionary<string, byte[]> _receivedDataQueue = new Dictionary<string, byte[]>(); + public static string _ip { get; set; } + public static int _port { get; set; } + + private static bool _isConnecting = false; // 鏍囪鏄惁姝e湪杩炴帴涓�+ private static readonly object _connectLock = new object(); // 杩炴帴鎿嶄綔鐨勫悓姝ラ攣 + + /// <summary> + /// 閲嶈繛鐨勮瘽璋冪敤鏂瑰啀瀹炰緥鍖栦竴涓氨琛屼簡 + /// </summary> + /// <param name="ip"></param> + /// <param name="port"></param> + public static bool Init(string ip, int port) { + lock (_connectLock) { + try { + // 鑻ユ鍦ㄨ繛鎺ヤ腑锛岀洿鎺ヨ繑鍥�+ if (_isConnecting) { + LogHelper.Info("宸叉湁杩炴帴姝e湪灏濊瘯涓紝绂佹閲嶅鎿嶄綔"); + return false; + } + + _isConnecting = true; // 鏍囪涓鸿繛鎺ヤ腑 + + // 閲婃斁鏃�Socket锛堜粎鍦ㄦ湭杩炴帴鏃讹級 + if (_clientSocket != null && !_clientSocket.Connected) { + SafeCloseSocket(); + } + + // 鍒涘缓鏂�Socket 骞惰繛鎺�+ _clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + IPAddress ipAdd = IPAddress.Parse(ip); + IPEndPoint endPoint = new IPEndPoint(ipAdd, port); + _clientSocket.BeginConnect(endPoint, ConnectCallback, null); + + // 鏇存柊 IP 鍜岀鍙�+ _ip = ip; + _port = port; + return true; + } + catch (SocketException ex) { + _isConnecting = false; + LogHelper.Error($"鍒濆鍖栬繛鎺ュけ璐� {ex.Message}", ex); + return false; + } + } + } + + private static readonly object _linkLock = new object(); + + public static bool Link(string ip, int port) { + lock (_linkLock) { + try { + + + // 鑻ocket瀛樺湪浣嗗疄闄呭凡鏂紑锛屽己鍒舵竻鐞�+ if (_clientSocket != null && (_clientSocket.Poll(0, SelectMode.SelectRead) && _clientSocket.Available == 0)) { + SafeCloseSocket(); + } + + // 鍘熸湁閫昏緫 + if (_clientSocket != null && _clientSocket.Connected) { + LogHelper.Info($"鐢垫宸茶繛鎺ワ紝鏃犻渶閲嶈繛锛孖P锛歿ip}锛岀鍙o細{port}"); + return false; + } + return Init(ip, port); + } + catch (Exception ex) { + LogHelper.Error($"鐢垫閲嶈繛澶辫触锛孖P锛歿ip}锛岀鍙o細{port}锛屽紓甯革細{ex.Message}", ex); + return false; + } + } + } + + + public static bool TcpClose() { + try { + _clientSocket?.Close(); + return true; + } + catch { + return false; + } + } + + public static void SendMsg(string ip, int port, string message) { + try { + if (_clientSocket?.Connected == true) { + byte[] data = Encoding.UTF8.GetBytes(message); + _clientSocket.BeginSend(data, 0, data.Length, SocketFlags.None, SendCallback, null); + } + else { + Link(ip, port); + } + } + catch { + /* 寮傚父澶勭悊 */ + } + } + private static void SendCallback(IAsyncResult ar) { + try { + _clientSocket.EndSend(ar); + } + catch { /* 鍙戦�寮傚父澶勭悊 */ } + } + + private static void ConnectCallback(IAsyncResult ar) { + try { + lock (_connectLock) { + // 妫�煡 Socket 鏄惁鏈夋晥 + if (_clientSocket == null || !ar.IsCompleted) { + LogHelper.Info("杩炴帴宸插彇娑堟垨Socket鏃犳晥"); + return; + } + + // 瀹屾垚杩炴帴 + _clientSocket.EndConnect(ar); + + // 浠呭湪杩炴帴鎴愬姛鏃跺惎鍔ㄦ帴鏀�+ if (_clientSocket.Connected) { + LogHelper.Info($"鎴愬姛杩炴帴鍒版湇鍔$锛歿_ip}:{_port}"); + _clientSocket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, ReceiveCallback, null); + } + else { + LogHelper.Info("杩炴帴鏈垚鍔燂紝鍏抽棴Socket"); + SafeCloseSocket(); + } + } + } + catch (ObjectDisposedException) { + LogHelper.Info("杩炴帴杩囩▼涓璖ocket琚噴鏀�); + } + catch (Exception ex) { + LogHelper.Error($"杩炴帴澶辫触锛歿ex.Message}", ex); + SafeCloseSocket(); + } + finally { + _isConnecting = false; // 閲嶇疆杩炴帴鐘舵� + } + } + + // 瀹夊叏鐨凷ocket鍏抽棴鏂规硶 + private static void SafeCloseSocket() { + try { + if (_clientSocket != null) { + // 閬垮厤閲嶅鍏抽棴 + if (_clientSocket.Connected) { + _clientSocket.Shutdown(SocketShutdown.Both); + } + _clientSocket.Close(); + _clientSocket.Dispose(); + + // 鏂紑鍚庯細娓呴櫎瀵瑰簲IP:Port鐨勬帴鏀舵暟鎹�+ string key = $"{_ip}:{_port}"; + if (_receivedDataQueue.ContainsKey(key)) { + _receivedDataQueue.Remove(key); + LogHelper.Info($"宸叉竻鐞嗛槦鍒楁暟鎹紝Key锛歿key}"); + } + } + } + catch (Exception ex) { + LogHelper.Error($"閲婃斁Socket璧勬簮寮傚父锛歿ex.Message}", ex); + } + finally { + _clientSocket = null; + _isConnecting = false; // 纭繚閲嶇疆杩炴帴鏍囪 + } + } + + private static void ReceiveCallback(IAsyncResult ar) { + try { + if (_clientSocket == null) { + return; + } + int bytesRead = _clientSocket.EndReceive(ar); + if (bytesRead > 0) { + // 澶嶅埗鏈夋晥鏁版嵁鍒版柊鏁扮粍 + byte[] receivedBytes = new byte[bytesRead]; + Array.Copy(_buffer, 0, receivedBytes, 0, bytesRead); + + // 瀛樺叆闃熷垪 + string key = $"{_ip}:{_port}"; + string receivedMessage = Encoding.UTF8.GetString(receivedBytes); + _receivedDataQueue[key] = receivedBytes; + + // 缁х画鎺ユ敹涓嬩竴鎵规暟鎹�+ _clientSocket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, ReceiveCallback, null); + } + else { + // 鏈嶅姟绔富鍔ㄥ叧闂繛鎺ワ紝瑙﹀彂娓呯悊 + LogHelper.Info("杩炴帴宸茶鏈嶅姟绔叧闂�); + SafeCloseSocket(); + } + } + catch (Exception ex) { + LogHelper.Error($"鎺ユ敹鏁版嵁寮傚父锛歿ex.Message}", ex); + SafeCloseSocket(); // 寮傚父鏃朵富鍔ㄥ叧闂�+ } + } + + + public static bool WriteElevatorDownOk(byte[] sends) { + try { + if (_clientSocket?.Connected == true) { + _clientSocket.BeginSend(sends, 0, sends.Length, SocketFlags.None, SendCallback, null); + return true; + } + else { + Link(_ip, _port); + LogHelper.Info($"鍐欑數姊叆璐ф暟鎹け璐ワ紙鏈繛鎺ワ級锛歿Encoding.UTF8.GetString(sends)}"); + return false; + } + } + catch (Exception ex) { + LogHelper.Error($"鍐欑數姊叆璐ф暟鎹け璐ワ紙鍙戦�浜嗗紓甯革級锛歿ex.Message}", ex); + return false; + } + } + + public static byte[] ReadElevatorOutOk() { + try { + if (_clientSocket != null && _clientSocket?.Connected == true) { + _receivedDataQueue.TryGetValue($"{_ip}:{_port}", out byte[] result); + LogHelper.Info($"璇荤數姊嚭璐ф暟鎹垚鍔燂細{BitConverter.ToString(result)}"); + return result; + } + else { + Link(_ip, _port); + LogHelper.Info($"璇荤數姊嚭璐ф暟鎹け璐ワ紙鏈繛鎺ワ級锛屽噯澶囬噸杩�); + return null; + } + } + catch (Exception ex) { + LogHelper.Error($"璇荤數姊嚭璐ф暟鎹け璐ワ紙鍙戠敓浜嗗紓甯革細{JsonConvert.SerializeObject(ex)}锛夛細{ex.Message}", ex); + return null; + /* 寮傚父澶勭悊 */ + } + } + + public static string ChekElevator() { + try { + var res = "璇诲彇鐢垫鏁版嵁鐨刴odel锛岀储寮曚粠1寮�锛屾弧瓒充互涓嬫潯浠舵墠鑳藉彂浠诲姟 \r\n " + + "瀛楁锛宨sNormal 锛屾槸鍚︽甯告ā寮忥紝1锛氭甯告ā寮忥紝绗�涓狟yte鍙充晶绗竴浣岯it \r\n" + + "瀛楁锛宨sValid锛屽綋鍓嶄綅缃槸鍚︽湁鏁堬紝1锛氭湁鏁堬紝0锛氫笉鐢ㄧ锛岀9涓狟yte鍙充晶绗竴浣岯it \r\n" + + "瀛楁锛宺unMode锛岀數姊繍琛屾ā寮忥紝9=绌洪棽娉婂仠锛�=鑷姩杩愯锛岀10涓狟yte\r\n" + + "瀛楁锛宨sLock_1_Out,涓�眰鍑哄彛鏄惁鍗犵敤锛� = 鍗犵敤锛岀14涓狟yte鍙充晶绗竴浣岯it\r\n" + + "瀛楁锛宨sLock_2_Out锛屼簩灞傚嚭鍙f槸鍚﹀崰鐢紝1 = 鍗犵敤锛岀14涓狟yte鍙充晶绗簩浣岯it\r\n" + + "瀛楁锛宼askNO锛屼换鍔″彿\r\n" + + "鍒ゆ柇鐢垫鏄惁绗﹀悎2妤煎埌1妤兼惉閫佹潯浠讹細isNormal 涓�(runMode == 9 鎴�runMode == 7) 涓�锛乮sLock_1_Out \r\n" + + "鍒ゆ柇鐢垫鏄惁绗﹀悎1妤煎埌鎴愬搧搴撳尯鏉′欢锛歩sNormal 涓�(runMode == 9 鎴�runMode == 7) 涓�isLock_1_Out\r\n"; + + + var isRead = ReadElevatorOutOk(); + var log = BitConverter.ToString(isRead); + res += "璇诲彇鍒扮殑鐢垫byte鏁扮粍锛� + log + "\r\n"; + //if (isRead != null && isRead.Length >= 14) { + // var elevatorReadInfo = new ElevatorReadInfo() { + // isNormal = (isRead[6] & 1) == 1, + // isValid = (isRead[8] & 1) == 1, + // runMode = isRead[9], + // isLock_1_Out = (isRead[13] & 1) == 1, + // isLock_2_Out = (isRead[13] & (1 << 1)) == 1, + // }; + // log = JsonConvert.SerializeObject(elevatorReadInfo); + // res += "瑙f瀽鍚庣殑鐢垫淇℃伅" + log + "\r\n"; + + // var res1 = elevatorReadInfo.is2To1Ok(); + + // res += "鍒ゆ柇鐢垫鏄惁绗﹀悎2妤煎埌1妤兼惉閫佹潯浠讹紝濡傛灉绗﹀悎鍒欒繑鍥瀟rue锛岀粨鏋� + res1 + "\r\n"; + + // var res2 = elevatorReadInfo.is1ToOk(); + + // res += "鍒ゆ柇鐢垫鏄惁绗﹀悎1妤煎埌鎴愬搧搴撳尯鏉′欢锛屽鏋滅鍚堝垯杩斿洖true锛岀粨鏋� + res2 + "\r\n"; + //} + //else { + // return "璇诲彇鐢垫鐘舵�澶辫触锛宐yte鏁扮粍瑕佹眰澶т簬绛変簬14涓笖涓嶄负绌�; + //} + return res; + } + catch (Exception ex) { + return ex.Message; + } + + } + + public static bool IsDuanDian() { + try { + var isRead = ReadElevatorOutOk(); + //if (isRead != null && isRead.Length >= 14) { + // var elevatorReadInfo = new ElevatorReadInfo() { + // isNormal = (isRead[6] & 1) == 1, + // isValid = (isRead[8] & 1) == 1, + // runMode = isRead[9], + // isLock_1_Out = (isRead[13] & 1) == 1, + // isLock_2_Out = (isRead[13] & (1 << 1)) == 1, + // }; + // if (elevatorReadInfo.runMode == 5)//5=鏂數閲嶈繛 + // { + // SafeCloseSocket(); + // return true; + // } + //} + return false; + } + catch (Exception ex) { + LogHelper.Error($"鍒ゆ柇鐢垫鏄惁鏂數锛堝彂鐢熶簡寮傚父锛歿JsonConvert.SerializeObject(ex)}锛夛細{ex.Message}", ex); + return false; + } + } + } +} diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs index 1bb20f5..a8a0c33 100644 --- a/process/TaskProcess.cs +++ b/process/TaskProcess.cs @@ -112,81 +112,120 @@ var start = "0"; var end = "0"; var taskType = mst.S_TYPE.Trim(); if (mst.N_B_STATE == 0) { - if (mst.N_SCHEDULE_TYPE == 1)//閫氳繃NDC锛宧osttoagv璋冨害璁惧 - { - start = LocationHelper.GetAgvSite(mst.S_START_LOC); - end = LocationHelper.GetAgvSite(mst.S_END_LOC); + start = LocationHelper.GetAgvSite(mst.S_START_LOC); + end = LocationHelper.GetAgvSite(mst.S_END_LOC); - //if (mst.S_TYPE == "绌烘墭涓嬬嚎鍫嗗彔") { - // end = LocationHelper.GetAgvSite(mst.S_END_LOC, true); - //} + //if (mst.S_TYPE == "绌烘墭涓嬬嚎鍫嗗彔") { + // end = LocationHelper.GetAgvSite(mst.S_END_LOC, true); + //} - LogHelper.Info($"NDC鎺ㄩ�浠诲姟 {mst.S_CODE};" + "start=" + start + "end= " + end); - var startLoc = LocationHelper.GetLoc(mst.S_START_LOC); - var endLoc = LocationHelper.GetLoc(mst.S_END_LOC); - var dic = new List<param>(); - dic.Add(new param() { name = "IKey", value = "IKey" }); - dic.Add(new param() { name = "From", value = start.ToString() }); - dic.Add(new param() { name = "To", value = end.ToString() }); - dic.Add(new param() { name = "FUNC", value = startLoc.N_LAYER.ToString() }); + LogHelper.Info($"NDC鎺ㄩ�浠诲姟 {mst.S_CODE};" + "start=" + start + "end= " + end); + var startLoc = LocationHelper.GetLoc(mst.S_START_LOC); + var endLoc = LocationHelper.GetLoc(mst.S_END_LOC); + var dic = new List<param>(); + dic.Add(new param() { name = "IKey", value = "IKey" }); + dic.Add(new param() { name = "From", value = start.ToString() }); + dic.Add(new param() { name = "To", value = end.ToString() }); + dic.Add(new param() { name = "FUNC", value = startLoc.N_LAYER.ToString() }); - dic.Add(new param() { name = "Ctype", value = "0" }); + dic.Add(new param() { name = "Ctype", value = "0" }); - //if (mst.S_TYPE == "浣欐枡涓嬬嚎鍏ュ簱" || mst.S_TYPE == "浜哄伐鎷嗙洏鍏ュ簱") { - // dic.Add(new param() { name = "DATA", value = "1024" }); - //} - //else { - // dic.Add(new param() { name = "DATA", value = "0" }); - //} + //if (mst.S_TYPE == "浣欐枡涓嬬嚎鍏ュ簱" || mst.S_TYPE == "浜哄伐鎷嗙洏鍏ュ簱") { + // dic.Add(new param() { name = "DATA", value = "1024" }); + //} + //else { + // dic.Add(new param() { name = "DATA", value = "0" }); + //} - var res = NDCApi.AddOrderNew(1, 1, mst.S_CODE, dic);//娣诲姞鏂板懡浠�- if (res != null && (res.err_code == 0 || res.err_code == 50009)) { - //鎺ㄩ�鎴愬姛锛屼慨鏀逛换鍔′紭鍏堢骇 - mst.N_B_STATE = 1; - mst.S_B_STATE = TN_Task.GetStateStr(1); - WCSHelper.UpdateStatus(mst);//鏇存柊浠诲姟鐘舵� - result = true; - LogHelper.Info($"NDC鎺ㄩ�浠诲姟鎴愬姛 {mst.S_CODE}start= {mst.S_START_LOC} + end = {mst.S_END_LOC}"); - } - else { - LogHelper.Info($"NDC鎺ㄩ�浠诲姟澶辫触 {mst.S_CODE};Res:" + JsonConvert.SerializeObject(res)); - } + var res = NDCApi.AddOrderNew(1, 1, mst.S_CODE, dic);//娣诲姞鏂板懡浠�+ if (res != null && (res.err_code == 0 || res.err_code == 50009)) { + //鎺ㄩ�鎴愬姛锛屼慨鏀逛换鍔′紭鍏堢骇 + mst.N_B_STATE = 1; + mst.S_B_STATE = TN_Task.GetStateStr(1); + WCSHelper.UpdateStatus(mst);//鏇存柊浠诲姟鐘舵� + result = true; + LogHelper.Info($"NDC鎺ㄩ�浠诲姟鎴愬姛 {mst.S_CODE}start= {mst.S_START_LOC} + end = {mst.S_END_LOC}"); } - else if (mst.N_SCHEDULE_TYPE == 5)//閫氳繃鏉ゥ璋冨害璁惧 - { - //璋冪涓夋柟鎺ュ彛 - var model = new HanAo.TaskInfoModel { - requestPk = mst.S_CODE, - frmPos = mst.S_START_LOC, - toPos = mst.S_END_LOC, - trkType = mst.S_OP_NAME == "鍏ュ簱" ? "1" : "2", - contNo = mst.S_CNTR_CODE - }; - if (HanAo.CreateOrder(model)) { - mst.N_B_STATE = 1; - WCSHelper.UpdateStatus(mst); - LogHelper.Info($"鏉ゥ鎺ㄩ�浠诲姟鎴愬姛 {mst.S_CODE};" + "start=" + model.frmPos + "end= " + model.toPos); - } - else { - LogHelper.Info($"鏉ゥ鎺ㄩ�浠诲姟澶辫触 {mst.S_CODE};" + JsonConvert.SerializeObject(model)); - } + else { + LogHelper.Info($"NDC鎺ㄩ�浠诲姟澶辫触 {mst.S_CODE};Res:" + JsonConvert.SerializeObject(res)); } - else if (mst.N_SCHEDULE_TYPE == 3) //閫氳繃鍥借嚜璋冨害璁惧 - { - var code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = mst.S_START_LOC, dst = mst.S_END_LOC }), "p2p"); - if (code > 0) { - //鏇存柊浠诲姟鐘舵� - mst.N_B_STATE = 1; - mst.S_EQ_TASK_CODE = code.ToString(); - WCSHelper.UpdateStatus(mst); - WCSHelper.UpdateEQNo(mst); - LogHelper.Info($"鍥借嚜鎺ㄩ�浠诲姟鎴愬姛 {mst.S_CODE};" + "start=" + mst.S_START_LOC + "end= " + mst.S_END_LOC); - } - else { - LogHelper.Info($"鍥借嚜鎺ㄩ�浠诲姟澶辫触 {mst.S_CODE};" + JsonConvert.SerializeObject(mst)); - } - } + + //if (mst.N_SCHEDULE_TYPE == 1)//閫氳繃NDC锛宧osttoagv璋冨害璁惧 + //{ + // start = LocationHelper.GetAgvSite(mst.S_START_LOC); + // end = LocationHelper.GetAgvSite(mst.S_END_LOC); + + // //if (mst.S_TYPE == "绌烘墭涓嬬嚎鍫嗗彔") { + // // end = LocationHelper.GetAgvSite(mst.S_END_LOC, true); + // //} + + // LogHelper.Info($"NDC鎺ㄩ�浠诲姟 {mst.S_CODE};" + "start=" + start + "end= " + end); + // var startLoc = LocationHelper.GetLoc(mst.S_START_LOC); + // var endLoc = LocationHelper.GetLoc(mst.S_END_LOC); + // var dic = new List<param>(); + // dic.Add(new param() { name = "IKey", value = "IKey" }); + // dic.Add(new param() { name = "From", value = start.ToString() }); + // dic.Add(new param() { name = "To", value = end.ToString() }); + // dic.Add(new param() { name = "FUNC", value = startLoc.N_LAYER.ToString() }); + + // dic.Add(new param() { name = "Ctype", value = "0" }); + + + // //if (mst.S_TYPE == "浣欐枡涓嬬嚎鍏ュ簱" || mst.S_TYPE == "浜哄伐鎷嗙洏鍏ュ簱") { + // // dic.Add(new param() { name = "DATA", value = "1024" }); + // //} + // //else { + // // dic.Add(new param() { name = "DATA", value = "0" }); + // //} + + // var res = NDCApi.AddOrderNew(1, 1, mst.S_CODE, dic);//娣诲姞鏂板懡浠�+ // if (res != null && (res.err_code == 0 || res.err_code == 50009)) { + // //鎺ㄩ�鎴愬姛锛屼慨鏀逛换鍔′紭鍏堢骇 + // mst.N_B_STATE = 1; + // mst.S_B_STATE = TN_Task.GetStateStr(1); + // WCSHelper.UpdateStatus(mst);//鏇存柊浠诲姟鐘舵� + // result = true; + // LogHelper.Info($"NDC鎺ㄩ�浠诲姟鎴愬姛 {mst.S_CODE}start= {mst.S_START_LOC} + end = {mst.S_END_LOC}"); + // } + // else { + // LogHelper.Info($"NDC鎺ㄩ�浠诲姟澶辫触 {mst.S_CODE};Res:" + JsonConvert.SerializeObject(res)); + // } + //} + //else if (mst.N_SCHEDULE_TYPE == 5)//閫氳繃鏉ゥ璋冨害璁惧 + //{ + // //璋冪涓夋柟鎺ュ彛 + // var model = new HanAo.TaskInfoModel { + // requestPk = mst.S_CODE, + // frmPos = mst.S_START_LOC, + // toPos = mst.S_END_LOC, + // trkType = mst.S_OP_NAME == "鍏ュ簱" ? "1" : "2", + // contNo = mst.S_CNTR_CODE + // }; + // if (HanAo.CreateOrder(model)) { + // mst.N_B_STATE = 1; + // WCSHelper.UpdateStatus(mst); + // LogHelper.Info($"鏉ゥ鎺ㄩ�浠诲姟鎴愬姛 {mst.S_CODE};" + "start=" + model.frmPos + "end= " + model.toPos); + // } + // else { + // LogHelper.Info($"鏉ゥ鎺ㄩ�浠诲姟澶辫触 {mst.S_CODE};" + JsonConvert.SerializeObject(model)); + // } + //} + //else if (mst.N_SCHEDULE_TYPE == 3) //閫氳繃鍥借嚜璋冨害璁惧 + //{ + // var code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = mst.S_START_LOC, dst = mst.S_END_LOC }), "p2p"); + // if (code > 0) { + // //鏇存柊浠诲姟鐘舵� + // mst.N_B_STATE = 1; + // mst.S_EQ_TASK_CODE = code.ToString(); + // WCSHelper.UpdateStatus(mst); + // WCSHelper.UpdateEQNo(mst); + // LogHelper.Info($"鍥借嚜鎺ㄩ�浠诲姟鎴愬姛 {mst.S_CODE};" + "start=" + mst.S_START_LOC + "end= " + mst.S_END_LOC); + // } + // else { + // LogHelper.Info($"鍥借嚜鎺ㄩ�浠诲姟澶辫触 {mst.S_CODE};" + JsonConvert.SerializeObject(mst)); + // } + //} } return result; diff --git a/util/LogHelper.cs b/util/LogHelper.cs index 7221e4e..0afe82a 100644 --- a/util/LogHelper.cs +++ b/util/LogHelper.cs @@ -70,15 +70,15 @@ } } - #region 鑷畾涔夋柟娉�- public static void InfoEx(Exception ex) { - Info($"寮傚父锛歿ex.Message}"); - } + // ------------ - public static void InfoApi(string taskType, object model) { - Info($"瑙﹀彂API锛歿taskType} " + JsonConvert.SerializeObject(model), "API"); + public static void InfoEx(Exception ex) { + Info($"鍙戠敓浜嗗紓甯革細{ex.Message}\n{ex.StackTrace}"); } - #endregion + + public static void InfoApi(string apiName, object model) { + Info($"瑙﹀彂API锛歿apiName} " + JsonConvert.SerializeObject(model), "API"); + } } diff --git a/util/Settings.cs b/util/Settings.cs index aee5018..70de35d 100644 --- a/util/Settings.cs +++ b/util/Settings.cs @@ -13,9 +13,9 @@ public static string SqlServer { get; set; } public static string TcpServerIp { get; set; } public static int TcpServerPort { get; set; } - public static List<Config.Area> Areas { get; set; } - public static List<Config.Task> Tasks { get; set; } - public static List<Config.ProductionLine> ProductionLines { get; set; } + public static List<Config.Area> Areas { get; set; } = new List<Config.Area>(); + public static List<Config.Task> Tasks { get; set; } = new List<Config.Task>(); + public static List<Config.ProductionLine> ProductionLines { get; set; } = new List<Config.ProductionLine>(); /// <summary> /// 搴撳尯瀛楀吀锛堝姞杞藉悗灏变笉鍙橈級 @@ -26,6 +26,8 @@ /// 浠诲姟瀛楀吀锛堝姞杞藉悗灏变笉鍙橈級 /// </summary> public static Dictionary<string, Config.Task> TaskMap { get; set; } = new Dictionary<string, Config.Task>(); + + public static Dictionary<string, int> AgvSite_ProdLineCodeMap { get; set; } = new Dictionary<string, int>(); public static void Init() { // 鍔犺浇閰嶇疆鏂囦欢 @@ -83,6 +85,13 @@ TaskMap.Add(task.Name, task); } } + + private static void LoadProdLines() { + foreach (var prod in ProductionLines) { + + } + } + } public class Config { diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs index ef584a3..db9d569 100644 --- a/wms/LocationHelper.cs +++ b/wms/LocationHelper.cs @@ -131,7 +131,7 @@ /// 浣犲垱寤轰换鍔¢攣瀹氳揣浣嶇殑鏃跺�锛屾妸閿佺殑鏉ユ簮灏辨槸浠诲姟鍙蜂篃鍐欎笂鍘伙紙鍔犻攣鐨勬柟娉曞姞涓弬鏁帮紝鍙┖鐨勫弬鏁帮級锛岃В閿佺殑鏃跺�鎶婃潵婧愮疆绌恒� /// </summary> /// <param name="loc"></param> - /// <param name="lockState">1:鍏ュ簱閿併�2:鍑哄簱閿併�2:鍏跺畠閿�/param> + /// <param name="lockState">1:鍏ュ簱閿併�2:鍑哄簱閿併�3:鍏跺畠閿�/param> /// <param name="lockSource">閿佺殑鏉ユ簮=浠诲姟鍙�/param> /// <returns></returns> public static bool LockLoc(ref TN_Location loc, int lockState, string lockSource = "") { -- Gitblit v1.9.1