From ef839d119eec2c28fac5f5ba175d71f926afae44 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期二, 20 五月 2025 11:49:22 +0800 Subject: [PATCH] 修复数据库表字段不匹配、读取重量错误处理等逻辑 --- Services/MoboxService.cs | 86 ++++++++++++++++++++++++------------------ 1 files changed, 49 insertions(+), 37 deletions(-) diff --git a/Services/MoboxService.cs b/Services/MoboxService.cs index 297c577..e74bb71 100644 --- a/Services/MoboxService.cs +++ b/Services/MoboxService.cs @@ -24,22 +24,17 @@ LogHelper.Info("瑙﹀彂API锛氫骇鍝佸叆搴�PDA)" + JsonConvert.SerializeObject(model), "API"); var db = DbHelper.GetDbClient(); var startLoc = new TN_Location(); - //var endLoc = new TN_Location(); try { // 璧风偣浣嶇疆蹇呴』锛氫负绌恒�鏃犻攣銆佸惎鐢ㄣ�灞炰簬鏀跺彂鍖哄煙 startLoc = db.Queryable<TN_Location>(). - First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.S_SHELF_CODE == AreaCode.鏀跺彂璐т綅鍖�; + First(a => a.S_CODE == model.StartLoc + && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" + && a.S_AREA_CODE == AreaCode.鏀跺彂鍖�; if (startLoc == null) { - return BuildSimpleResult(1, $"璧风偣浣嶇疆{model.startLoc}涓嶅瓨鍦紒"); + return BuildSimpleResult(1, $"璧风偣浣嶇疆{model.StartLoc}涓嶅瓨鍦紒"); } - - //if (!LocationHelper.IsStartLocationTransferOk(model.startLoc, - // a => a.S_SHELF_CODE == Settings.Areas[0], - // out startLoc)) { - // return BuildSimpleResult(1, $"璧风偣浣嶇疆{model.startLoc}涓嶅瓨鍦紒"); - //} // 瀹瑰櫒 ID 鍜�鐗╂枡 ID 鏈寚瀹氾紝鐢辩郴缁熺洿鎺ョ敓鎴� var cntID = Guid.NewGuid().ToString("D"); @@ -55,14 +50,17 @@ S_CNTR_CODE = cntID, }; - var endArea = ""; // 榛樿缁堢偣鍖哄煙涓虹┖ + var endLoc = "0"; // 鍋囩殑榛樿缁堢偣鍦板潃 // 鎸囧畾璐т綅鎺掑彿锛堜笉鑳戒负绌恒�绌哄瓧绗︿覆鎴栫┖鏍硷級 - if (model.endShelf != null && model.endShelf.Trim() != "") { - endArea = model.endShelf; - // 娌℃湁鍦ㄩ厤缃枃浠舵壘鍒拌繖涓揣鏋跺彿 - if (!Settings.AreaMap[AreaName.璐ф灦鍖篯.Contains(endArea)) { - return BuildSimpleResult(2, $"璐ф灦鍙�{model.endShelf} 涓嶅瓨鍦�); + if (model.Row != null && model.Row.Trim() != "") { + endLoc = model.Row; // 鐢ㄦ帓鍙峰瓧绗︿覆褰撳仛鍋囧湴鍧�+ if (!int.TryParse(model.Row.Trim(), out int row)) { + return BuildSimpleResult(2, $"{model.Row} 涓嶅悎娉曪細鏃犳硶杞垚鏁存暟绫诲瀷"); + } + // 璐ф灦鎺掑彿鍙兘鏄�0 - 8 + if (row <= 0 || row > 8) { + return BuildSimpleResult(2, $"璐ф灦鍙�{model.Row} 蹇呴』鏄�-8涔嬮棿鐨勬暣鏁�); } } @@ -71,19 +69,19 @@ if (db.Insertable<TN_Loc_Container>(cntLoc).ExecuteCommand() > 0 && db.Insertable<TN_CG_Detail>(cgCnt).ExecuteCommand() > 0) { //鍒涘缓浜у搧鍏ュ簱浠诲姟锛氬垱寤烘惉閫佷换鍔★紝璧风偣缁堢偣瀹瑰櫒 - if (WCSHelper.CreateTaskWithArea(startLoc.S_CODE, endArea, "浜у搧鍏ュ簱(PDA)", 3, cntID)) { + if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc, TaskName.浜у搧鍏ュ簱, 3, cntID)) { //濡傛灉鎿嶄綔TN_Location浼氶�鎴愭閿� LocationHelper.LockLoc(startLoc.S_CODE, 2);//璧风偣鍑哄簱閿侊紝 //LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿� trans.CommitTran(); - return BuildSimpleResult(0, $"鐢熸垚 浜у搧鍏ュ簱(PDA) 鎴愬姛锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endArea} 锛岀粓鐐硅揣浣嶆湭鎸囧畾"); + return BuildSimpleResult(0, $"鐢熸垚 浜у搧鍏ュ簱 鎴愬姛锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc} 锛岀粓鐐硅揣浣嶆湭鎸囧畾"); } else { trans.RollbackTran(); - return BuildSimpleResult(5, $"鐢熸垚 浜у搧鍏ュ簱(PDA) 澶辫触锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endArea} 锛岀粓鐐硅揣浣嶆湭鎸囧畾"); + return BuildSimpleResult(5, $"鐢熸垚 浜у搧鍏ュ簱 澶辫触锛屽鍣ㄥ彿 {cntID} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc} 锛岀粓鐐硅揣浣嶆湭鎸囧畾"); } } else { @@ -107,36 +105,50 @@ try { // 浠诲姟鍙峰瓨鍦細缁堢偣璐ф灦鍜岀粓鐐逛綅缃负绌猴紝涓斾换鍔′负浜у搧鍏ュ簱(PDA) - //var task = db.Queryable<TN_Task>().First(a => a.S_CODE == model.taskNo && a.S_END_AREA == "" && a.S_END_LOC == "" && a.S_TYPE == "浜у搧鍏ュ簱(PDA)"); - var task = db.Queryable<TN_Task>().First(a => a.S_EQ_NO == model.forklift_no && a.S_END_AREA == "" && a.S_END_LOC == "" && a.S_TYPE == "浜у搧鍏ュ簱(PDA)"); + //var task = db.Queryable<TN_Task>().First(a => a.S_EQ_NO == model.forklift_no && a.S_END_AREA == "HJQ" && a.S_END_LOC == "0" && a.S_TYPE == "浜у搧鍏ュ簱(PDA)"); + var task = db.Queryable<TN_Task>() + .Where(a => a.S_B_STATE == "鍙栬揣瀹屾垚" && a.S_TYPE == TaskName.浜у搧鍏ュ簱) + .OrderBy(a => a.T_CREATE, SqlSugar.OrderByType.Desc).First(); if (task == null) { - //return BuildSimpleResult(2, $"浠诲姟鍙�{model.taskNo} 涓嶅瓨鍦紝鎴栦笉婊¤冻缁堢偣璐ф灦涓虹┖銆佺粓鐐逛綅缃负绌轰笖涓�浜у搧鍏ュ簱(PDA) 浠诲姟"); - return BuildSimpleResult(2, $"灏忚溅 '{model.forklift_no}' 褰撳墠涓嶅瓨鍦ㄤ换鍔★紝鎴栦笉婊¤冻缁堢偣璐ф灦涓虹┖銆佺粓鐐逛綅缃负绌轰笖涓�浜у搧鍏ュ簱(PDA) 浠诲姟"); + return BuildSimpleResult(2, $"褰撳墠涓嶅瓨鍦ㄧ姸鎬佷负 鍙栬揣瀹屾垚 鐨�浜у搧鍏ュ簱 浠诲姟"); + } + + if (task.S_END_LOC != null && task.S_END_LOC != "0") { + return BuildSimpleResult(3, $"璇ヤ换鍔″凡鏈夌粓鐐�); + } + + var cgDetail = db.Queryable<TN_CG_Detail>() + .Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE).First(); + + if (cgDetail == null) { + return BuildSimpleResult(4, $"鎵樼洏鐗╂枡涓嶅瓨鍦�); } var endLoc = new TN_Location(); - if (task.F_WEIGHT > 1500) { + if (cgDetail.F_QTY > 1500) { // 閲嶉噺瓒呰繃1.5t锛岄渶瑕侀�鎷�-3灞傝揣鏋� endLoc = db.Queryable<TN_Location>().First( - a => a.S_CODE == model.endLoc && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0 && a.N_HEIGHT <= 3); + a => a.S_CODE == model.endLoc && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0 && a.N_LAYER <= 3 && a.S_AREA_CODE == AreaCode.璐ф灦鍖�; + } + else if (cgDetail.F_QTY > 0) { + endLoc = db.Queryable<TN_Location>().First( + a => a.S_CODE == model.endLoc && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0 && a.S_AREA_CODE == AreaCode.璐ф灦鍖�; } else { - endLoc = db.Queryable<TN_Location>().First( - a => a.S_CODE == model.endLoc && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.N_CURRENT_NUM == 0); + return BuildSimpleResult(5, $"鐗╂枡閲嶉噺淇℃伅涓嶅悎娉曪細{cgDetail.F_QTY}"); } // 娌℃湁绗﹀悎鏉′欢鐨勮揣浣� if (endLoc == null) { - return BuildSimpleResult(3, $"璐т綅{model.endLoc}涓嶆弧瓒宠姹傦細涓嶅瓨鍦ㄦ垨涓嶆弧瓒崇О閲嶆斁缃姹�); + return BuildSimpleResult(6, $"璐т綅{model.endLoc}涓嶅瓨鍦紝鎴栦笉婊¤冻绉伴噸鏀剧疆瑕佹眰"); } // 淇敼浠诲姟缁堢偣涓篜DA鎸囧畾缁堢偣 task.S_END_LOC = endLoc.S_CODE; - task.S_END_AREA = endLoc.S_SHELF_CODE; using (var trans = db.Ado.UseTran()) { - if (db.Updateable<TN_Task>(task).ExecuteCommand() > 0) { + if (db.Updateable<TN_Task>(task).UpdateColumns(a => a.S_END_LOC).ExecuteCommand() > 0) { LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿� trans.CommitTran(); @@ -145,7 +157,7 @@ else { trans.RollbackTran(); - return BuildSimpleResult(4, $"浠诲姟{task.S_CODE}淇敼澶辫触锛屼慨鏀圭粓鐐逛綅缃负{endLoc.S_CODE}"); + return BuildSimpleResult(7, $"浠诲姟{task.S_CODE}淇敼澶辫触锛屼慨鏀圭粓鐐逛綅缃负{endLoc.S_CODE}"); } } } @@ -177,7 +189,7 @@ return BuildSimpleResult(3, $"璧风偣浣嶇疆 {model.startLoc} 娌℃湁缁戝畾瀹瑰櫒锛屾棤鍙嚭搴撶殑鐗╂枡"); } - var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.S_AREA_CODE == AreaCode.鏀跺彂璐т綅鍖�; + var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.S_AREA_CODE == AreaCode.鏀跺彂鍖�; if (endLoc == null) { return BuildSimpleResult(4, $"缁堢偣浣嶇疆 {model.endLoc} 涓嶅叿澶囨斁璐ф潯浠�); @@ -185,17 +197,17 @@ using (var trans = db.Ado.UseTran()) { // 瑙g粦锛氳捣鐐硅揣浣嶄笌寰呮惉杩愬鍣紙涓嶉渶瑕佹墜鍔╠eleteable鎿嶄綔锛屽唴閮ㄤ細鑷姩鎿嶄綔鐨勶級 - if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, "浜у搧閮ㄥ垎鍑哄簱(WMS)", 3, locCtnrRel.S_CNTR_CODE))//鍒涘缓鎼�浠诲姟锛岃捣鐐圭粓鐐瑰鍣�+ if (WCSHelper.CreateTask(startLoc.S_CODE, endLoc.S_CODE, TaskName.浜у搧閮ㄥ垎鍑哄簱, 3, locCtnrRel.S_CNTR_CODE))//鍒涘缓鎼�浠诲姟锛岃捣鐐圭粓鐐瑰鍣� {//濡傛灉鎿嶄綔TN_Location浼氶�鎴愭閿� LocationHelper.LockLoc(startLoc.S_CODE, 2);//璧风偣鍑哄簱閿侊紝 LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿� trans.CommitTran(); - return BuildSimpleResult(0, $"鐢熸垚 浜у搧鍑哄簱(WMS) 鎴愬姛锛屽鍣ㄥ彿{locCtnrRel.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}"); + return BuildSimpleResult(0, $"鐢熸垚 浜у搧閮ㄥ垎鍑哄簱 鎴愬姛锛屽鍣ㄥ彿{locCtnrRel.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}"); } else { trans.RollbackTran(); - return BuildSimpleResult(5, $"鐢熸垚 浜у搧鍑哄簱(WMS) 澶辫触锛屽鍣ㄥ彿{locCtnrRel.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}"); + return BuildSimpleResult(5, $"鐢熸垚 浜у搧閮ㄥ垎鍑哄簱 澶辫触锛屽鍣ㄥ彿{locCtnrRel.S_CNTR_CODE}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐箋endLoc.S_CODE}"); } } } @@ -215,7 +227,7 @@ try { // 璧风偣浣嶇疆锛氬彇鏀捐揣鍖猴紙鏈夎揣鐗┿�娌℃湁閿併�宸插惎鐢級 - var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.S_AREA_CODE == AreaCode.鏀跺彂璐т綅鍖�; + var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.S_AREA_CODE == AreaCode.鏀跺彂鍖�; if (startLoc == null) { return BuildSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶇鍚堝洖搴撴潯浠�); } @@ -263,7 +275,7 @@ try { // 璧风偣浣嶇疆锛氬彇鏀捐揣鍖猴紙鏈夎揣鐗┿�娌℃湁閿併�宸插惎鐢級 - var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.S_AREA_CODE == AreaCode.鏀跺彂璐т綅鍖�; + var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.S_AREA_CODE == AreaCode.鏀跺彂鍖�; if (startLoc == null) { return BuildSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶇鍚堝嚭搴撴潯浠�); } @@ -311,7 +323,7 @@ try { // 璧风偣浣嶇疆锛氬彇鏀捐揣鍖猴紙鏈夎揣鐗┿�娌℃湁閿併�宸插惎鐢級 - var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.S_AREA_CODE == AreaCode.鏀跺彂璐т綅鍖�; + var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && a.S_AREA_CODE == AreaCode.鏀跺彂鍖�; if (startLoc == null) { return BuildSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶇鍚堝洖搴撴潯浠�); } -- Gitblit v1.9.1