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