From 63e94e068622d4ef843cee0d19d4f2d231316304 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期五, 25 七月 2025 17:20:38 +0800 Subject: [PATCH] 完善查询语句, 日志记录的封装 --- api/ApiHelper.cs | 478 +++++++++++++++++++--------------------------------------- 1 files changed, 159 insertions(+), 319 deletions(-) diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index 8708fea..7328525 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -26,6 +26,8 @@ /// <returns></returns> public static SimpleResult GoodpackOffline(GoodpackOfflineInfo model) { var db = new SqlHelper<object>().GetInstance(); + var (ok, msg) = (false, string.Empty); + var taskInfo = ETask.M婊$涓嬬嚎鍏ュ簱.Info(); const string preLog = "API:婊$涓嬬嚎鍏ュ簱:"; const string cntrType = "濂借繍绠�; @@ -37,72 +39,45 @@ // 妫�煡璐у搧瀹瑰櫒琛�鏄惁宸茬粡瀛樺湪璐存爣鏈轰紶閫掔殑寰呭叆搴撶墿鏂欎俊鎭� // TODO:鏁伴噺,瑙勬牸鏄惁涔熷弬涓庢瘮瀵癸紵 - var cgDetail = db.Queryable<TN_CG_Detail>().Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo && d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮").First(); + var cgDetail = db.Queryable<TN_CG_Detail>() + .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_BATCH_NO == model.BatchNo + && d.N_ITEM_STATE == 1 && d.S_ITEM_STATE == "寰呮").First(); if (cgDetail == null) { - return NewSimpleResult(1, preLog + $"娌℃湁鍦╗璐у搧鏄庣粏琛╙涓壘鍒癧鐗╂枡缂栫爜='{model.ItemCode}',鎵规鍙�'{model.BatchNo}']鐨勭墿鏂�璇锋鏌�PDA鎵爜鐗╂枡淇℃伅涓庤创鏍囨満浼犻�鐨勪俊鎭槸鍚︿竴鑷�瑕佹眰:鐗╂枡鐘舵�='寰呮'"); + return NewSimpleResult(1, preLog + LogMsg.CgDetailNotFound(item: model.ItemCode) + $"鐗╂枡鐘舵�='寰呮';" + + $"璇锋鏌�PDA鎵爜鐗╂枡淇℃伅涓庤创鏍囨満浼犻�鐨勪俊鎭槸鍚︿竴鑷�!"); } - // 鏌ヨ璧风偣璐т綅:鏁伴噺=0 - var startLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y" && l.S_CODE == model.StartLoc && taskInfo.StartAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).First(); + var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First(); if (startLoc == null) { - return NewSimpleResult(2, preLog + $"娌℃湁鎵惧埌璧风偣璐т綅'{model.StartLoc}'!瑕佹眰:閿佺姸鎬�'鏃�,褰撳墠瀹瑰櫒鏁伴噺=0,鎵�湪搴撳尯={LogObject(taskInfo.StartAreas)}"); + return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); } // 鍜屾弧鎵樹笅绾垮叆搴撶殑閫昏緫涓�嚧,鐢变簬瀹瑰櫒绉诲姩涓嶄細鏇存敼缁戝畾淇℃伅,鎵�互蹇呴』鍒犻櫎鏃ф暟鎹� var old = WCSHelper.GetLocCntrCg(cgDetail.S_CNTR_CODE, skipCgDetail: true); - // 缁戝畾璐т綅瀹瑰櫒,璧风偣璐т綅褰撳墠鏁伴噺=1 - var locCntrRel = WCSHelper.BindLocCntr(ref startLoc, cgDetail.S_CNTR_CODE); + var locCntrRel = WCSHelper.BindLocCntr(startLoc, cgDetail.S_CNTR_CODE); locCntrRel.S_CNTR_TYPE = cntrType; - // 鏌ヨ缁堢偣璐т綅 - // Order:鎸夎揣浣嶅眰鏁�浠庡皬鍒板ぇ鎺掑垪 - var endLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y" && taskInfo.EndAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).OrderBy(l => new { l.N_LAYER }).First(); + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas)) + .OrderBy(l => new { l.N_LAYER }).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�,褰撳墠瀹瑰櫒鏁伴噺=0,鎵�湪搴撳尯={LogObject(taskInfo.EndAreas)}"); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); } - // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟 var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); - using (var tran = db.Ado.UseTran()) { - // 鍒犻櫎/鏇存柊鏃璐т綅/瀹瑰櫒/鐗╂枡]淇℃伅 - if (old.LocCntrRel != null && db.Deleteable(old.LocCntrRel).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鍒犻櫎[鏃ц揣浣嶅鍣ㄥ叧绯籡澶辫触!鏁版嵁:{LogObject(old.LocCntrRel)}"); - } - if (old.Location != null && db.Updateable(old.Location).UpdateColumns(l => new { l.N_CURRENT_NUM, l.T_MODIFY }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[鏃ц揣浣峾褰撳墠瀹瑰櫒鏁伴噺]澶辫触!璐т綅='{old.Location.S_CODE}',鏁伴噺=>{old.Location.N_CURRENT_NUM}"); - } - - // 鎻掑叆鏂扮粦瀹氱殑[璐т綅-瀹瑰櫒]琛�- if (db.Insertable(locCntrRel).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鎻掑叆[瀹瑰櫒璐т綅缁戝畾琛╙澶辫触!鏁版嵁:{LogObject(locCntrRel)}"); - } - - // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟 - if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�"); - } - if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); - } - if (db.Insertable(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } - - // 鎻愪氦鏁版嵁搴撴洿鏀�- tran.CommitTran(); - return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } + (ok, msg) = DbTran.CreateTask(new CreateTaskObj { + Old = old, + New = new LocCntrCg { LocCntrRel = locCntrRel }, + StartLocToUpdate = startLoc, + EndLocToUpdate = endLoc, + TaskToInsert = task, + }); + return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { return NewSimpleResult(ex, preLog); + } } @@ -113,82 +88,51 @@ /// <returns></returns> public static SimpleResult EmptyInboundPallet(EmptyInboundInfo model) { var db = new SqlHelper<object>().GetInstance(); + var (ok, msg) = (false, string.Empty); + var taskInfo = ETask.K绌烘墭鍏ュ簱.Info(); const string preLog = "API:绌烘墭鍏ュ簱:"; const string cntrType = "鎵樼洏"; try { // 鏌ヨ璧风偣璐т綅:鏁伴噺=0 - var startLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y" && l.S_CODE == model.StartLoc && taskInfo.StartAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).First(); + var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First(); if (startLoc == null) { - return NewSimpleResult(1, preLog + $"娌℃湁鎵惧埌璧风偣璐т綅'{model.StartLoc}'!瑕佹眰:閿佺姸鎬�'鏃�;褰撳墠瀹瑰櫒鏁伴噺=0;鎵�湪搴撳尯={LogObject(taskInfo.StartAreas)}"); + return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); } // 鏌ヨ瀹瑰櫒琛�瀹瑰櫒绫诲瀷瀛楁 - var cntr = db.Queryable<TN_Container>().Where(c => c.S_CODE == model.CntrCode).First(); - if (cntr == null) { - return NewSimpleResult(2, preLog + $"瀹瑰櫒'{model.CntrCode}'鍦╗瀹瑰櫒琛╙涓笉瀛樺湪,璇峰湪鍓嶅彴椤甸潰涓淮鎶�"); - } - if (cntr.S_TYPE != cntrType) { - return NewSimpleResult(3, preLog + $"瀹瑰櫒'{model.CntrCode}'鍦╗瀹瑰櫒琛╙涓殑绫诲瀷涓�{cntr.S_TYPE}',涓庤緭鍏ョ殑瀹瑰櫒绫诲瀷'{cntrType}'涓嶅悓!"); + (ok, msg) = WMSHelper.CheckCntrType(model.CntrCode, cntrType, out var cntr); + if (!ok) { + return NewSimpleResult(3, preLog + msg); } // 绌虹鍏ュ簱鏃�濡傛灉瀛樺湪鏃х殑缁戝畾鏁版嵁,鍒犻櫎 var old = WCSHelper.GetLocCntrCg(model.CntrCode); - // 缁戝畾璐т綅瀹瑰櫒,璧风偣璐т綅褰撳墠鏁伴噺=1 - var locCntrRel = WCSHelper.BindLocCntr(ref startLoc, cntr.S_CODE); + // 缁戝畾璐т綅瀹瑰櫒 + var locCntrRel = WCSHelper.BindLocCntr(startLoc, cntr.S_CODE); locCntrRel.S_CNTR_TYPE = cntrType; // 鏌ヨ缁堢偣璐т綅 // Order:灞傛暟浠庝綆鍒伴珮,琛�鍒�- var endLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y" && taskInfo.EndAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).OrderBy(l => new { l.N_LAYER, l.N_ROW, l.N_COL }).First(); + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas)) + .OrderBy(l => new { l.N_LAYER, l.N_ROW, l.N_COL }).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�;褰撳墠瀹瑰櫒鏁伴噺=0;鎵�湪搴撳尯={LogObject(taskInfo.EndAreas)}"); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); } // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟 var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); - using (var tran = db.Ado.UseTran()) { - if (old.CgDetail != null && db.Deleteable(old.CgDetail).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鍒犻櫎[鏃х墿鏂欎俊鎭痌澶辫触!鏁版嵁:{LogObject(old.CgDetail)}"); - } - - if (old.LocCntrRel != null && db.Deleteable(old.LocCntrRel).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鍒犻櫎[鏃ц揣浣嶅鍣ㄥ叧绯籡澶辫触!鏁版嵁:{LogObject(old.LocCntrRel)}"); - } - - if (old.Location != null && db.Updateable(old.Location).UpdateColumns(l => new { l.N_CURRENT_NUM, l.T_MODIFY }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[鏃ц揣浣峾褰撳墠瀹瑰櫒鏁伴噺]澶辫触!璐т綅='{old.Location.S_CODE}',鏁伴噺=>{old.Location.N_CURRENT_NUM}"); - } - - if (db.Insertable(locCntrRel).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鎻掑叆[璐т綅瀹瑰櫒缁戝畾琛╙澶辫触!鏁版嵁:{LogObject(locCntrRel)}"); - } - - // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟 - if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�"); - } - if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); - } - if (db.Insertable(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } - - // 鎻愪氦鏁版嵁搴撴洿鏀�- tran.CommitTran(); - return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } + (ok, msg) = DbTran.CreateTask(new CreateTaskObj { + Old = old, + New = new LocCntrCg { LocCntrRel = locCntrRel }, + StartLocToUpdate = startLoc, + EndLocToUpdate = endLoc, + TaskToInsert = task, + }); + return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { return NewSimpleResult(ex, preLog); @@ -201,79 +145,46 @@ /// <returns></returns> public static SimpleResult EmptyInboundGoodpack(EmptyInboundInfo model) { var db = new SqlHelper<object>().GetInstance(); + var (ok, msg) = (false, string.Empty); + var taskInfo = ETask.K绌虹鍏ュ簱.Info(); const string preLog = "API:绌虹鍏ュ簱:"; const string cntrType = "濂借繍绠�; try { - // 鏌ヨ璧风偣璐т綅:鏁伴噺=0 - var startLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y").Where(l => l.S_CODE == model.StartLoc && taskInfo.StartAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).First(); + var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First(); if (startLoc == null) { - return NewSimpleResult(1, preLog + $"娌℃湁鎵惧埌璧风偣璐т綅'{model.StartLoc}'!瑕佹眰:閿佺姸鎬�'鏃�;褰撳墠瀹瑰櫒鏁伴噺=0;鎵�湪搴撳尯={LogObject(taskInfo.StartAreas)}"); + return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); } // 鏌ヨ瀹瑰櫒琛�瀹瑰櫒绫诲瀷瀛楁 - var cntr = db.Queryable<TN_Container>().Where(c => c.S_CODE == model.CntrCode).First(); - if (cntr == null) { - return NewSimpleResult(1, $"瀹瑰櫒'{model.CntrCode}'鍦╗瀹瑰櫒琛╙涓笉瀛樺湪,璇峰湪鍓嶅彴椤甸潰涓淮鎶�"); - } - if (cntr.S_TYPE != cntrType) { - return NewSimpleResult(2, preLog + $"瀹瑰櫒'{model.CntrCode}'鍦╗瀹瑰櫒琛╙涓殑绫诲瀷鏄�{cntr.S_TYPE},涓嶆槸'{cntrType}'!"); + (ok, msg) = WMSHelper.CheckCntrType(model.CntrCode, cntrType, out var cntr); + if (!ok) { + return NewSimpleResult(3, preLog + msg); } // 绌虹鍏ュ簱鏃�濡傛灉瀛樺湪鏃х殑缁戝畾鏁版嵁,鍒犻櫎 var old = WCSHelper.GetLocCntrCg(model.CntrCode); - // 缁戝畾璐т綅瀹瑰櫒,璧风偣璐т綅褰撳墠鏁伴噺=1 - var locCntrRel = WCSHelper.BindLocCntr(ref startLoc, model.CntrCode); + var locCntrRel = WCSHelper.BindLocCntr(startLoc, model.CntrCode); locCntrRel.S_CNTR_TYPE = cntrType; - // 鏌ヨ缁堢偣璐т綅 - // Order:灞傛暟浠庝綆鍒伴珮,琛�鍒�- var endLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y").Where(l => taskInfo.EndAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).OrderBy(l => new { l.N_LAYER, l.N_ROW, l.N_COL }).First(); + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas)) + .OrderBy(l => new { l.N_LAYER, l.N_ROW, l.N_COL }).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�;褰撳墠瀹瑰櫒鏁伴噺=0;鎵�湪搴撳尯={LogObject(taskInfo.EndAreas)}"); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); } var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); - using (var tran = db.Ado.UseTran()) { - if (old.CgDetail != null && db.Deleteable(old.CgDetail).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鍒犻櫎[鏃х墿鏂欎俊鎭痌澶辫触!鏁版嵁:{LogObject(old.CgDetail)}"); - } - if (old.LocCntrRel != null && db.Deleteable(old.LocCntrRel).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鍒犻櫎[鏃ц揣浣嶅鍣ㄥ叧绯籡澶辫触!鏁版嵁:{LogObject(old.LocCntrRel)}"); - } - if (old.Location != null && db.Updateable(old.Location).UpdateColumns(l => new { l.N_CURRENT_NUM, l.T_MODIFY }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[鏃ц揣浣峾褰撳墠瀹瑰櫒鏁伴噺]澶辫触!璐т綅='{old.Location.S_CODE}',鏁伴噺=>{old.Location.N_CURRENT_NUM}"); - } - - if (db.Insertable(locCntrRel).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鎻掑叆[璐т綅瀹瑰櫒鍏崇郴]澶辫触:" + LogObject(locCntrRel)); - } - - // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟 - if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�"); - } - if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); - } - if (db.Insertable(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } - - // 鎻愪氦鏁版嵁搴撴洿鏀�- tran.CommitTran(); - return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } + (ok, msg) = DbTran.CreateTask(new CreateTaskObj { + Old = old, + New = new LocCntrCg { LocCntrRel = locCntrRel }, + StartLocToUpdate = startLoc, + EndLocToUpdate = endLoc, + TaskToInsert = task, + }); + return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { return NewSimpleResult(ex, preLog); @@ -287,18 +198,17 @@ /// <returns></returns> public static SimpleResult EmptyOnlinePallet(EmptyOnlinePalletInfo model) { var db = new SqlHelper<object>().GetInstance(); + var (ok, msg) = (false, string.Empty); + var taskInfo = ETask.K绌烘墭涓婄嚎鍑哄簱.Info(); const string preLog = "API:绌烘墭涓婄嚎鍑哄簱:"; const string cntrType = "鎵樼洏"; try { // 鏌ヨ瀹瑰櫒琛�瀹瑰櫒绫诲瀷瀛楁 - var cntr = db.Queryable<TN_Container>().Where(c => c.S_CODE == model.CntId).First(); - if (cntr == null) { - return NewSimpleResult(1, $"瀹瑰櫒'{model.CntId}'鍦╗瀹瑰櫒琛╙涓笉瀛樺湪,璇峰湪鍓嶅彴椤甸潰涓淮鎶�"); - } - if (cntr.S_TYPE != cntrType) { - return NewSimpleResult(2, preLog + $"瀹瑰櫒'{model.CntId}'鍦╗瀹瑰櫒琛╙涓殑绫诲瀷鏄�{cntr.S_TYPE},涓嶆槸'{cntrType}'!"); + (ok, msg) = WMSHelper.CheckCntrType(model.CntId, cntrType, out var cntr); + if (!ok) { + return NewSimpleResult(1, preLog + msg); } var needUpdateContainer = false; @@ -314,45 +224,36 @@ return NewSimpleResult(3, $"瀹瑰櫒'{model.CntId}'宸茬粡涓庣墿鏂欑被鍨�{cntr.S_SPEC}'缁戝畾,鏃犳硶鐢ㄤ簬瑁呰浇鐗╂枡'{model.ItemCode}'!"); } - var startLoc = db.Queryable<TN_Location>().LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE).Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y").Where((l, c) => taskInfo.StartAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 1 && c.S_CNTR_CODE == model.CntId && c.S_CNTR_TYPE == cntrType).First(); + var startLoc = db.Queryable<TN_Location>().LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) + .Where(DbExpr.StartLoc(areas: taskInfo.StartAreas)) + .Where((l, c) => c.S_CNTR_CODE == model.CntId && c.S_CNTR_TYPE == cntrType).First(); if (startLoc == null) { - return NewSimpleResult(3, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勮捣鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�;褰撳墠瀹瑰櫒鏁伴噺=1;鎵�湪搴撳尯={LogObject(taskInfo.StartAreas)},缁戝畾瀹瑰櫒缂栫爜='{model.CntId}',缁戝畾瀹瑰櫒绫诲瀷='{cntrType}'"); + return NewSimpleResult(3, preLog + LogMsg.StartLocNotFound(areas: taskInfo.StartAreas) + + $"缁戝畾瀹瑰櫒缂栫爜='{model.CntId}';缁戝畾瀹瑰櫒绫诲瀷='{cntrType}';"); } - // 鏌ヨ缁堢偣璐т綅 - var endLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y").Where(l => taskInfo.EndAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).First(); + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas)).First(); if (endLoc == null) { - return NewSimpleResult(5, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�;褰撳墠瀹瑰櫒鏁伴噺=0;鎵�湪搴撳尯={LogObject(taskInfo.EndAreas)}"); + return NewSimpleResult(5, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); } var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, model.CntId, taskInfo.TaskName); - cntr.S_SOURCE = task.S_CODE; // 鐢ㄤ换鍔″彿浣滀负瀹瑰櫒鏇存柊鐨勪緷鎹�- cntr.T_MODIFY = DateTime.Now; - - using (var tran = db.Ado.UseTran()) { - if (needUpdateContainer && db.Updateable(cntr).UpdateColumns(c => new { c.S_SPEC, c.S_SOURCE, c.T_MODIFY }).ExecuteCommand() <= 0) { - return NewSimpleResult(500, preLog + $"鏇存柊[瀹瑰櫒琛╙澶辫触!鏁版嵁:{LogObject(cntr)}"); - } - - // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟 - if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�"); - } - if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); - } - if (db.Insertable(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } - - // 鎻愪氦鏁版嵁搴撴洿鏀�- tran.CommitTran(); - return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); + if (needUpdateContainer) { + cntr.S_SOURCE = task.S_CODE; // 鐢ㄤ换鍔″彿浣滀负瀹瑰櫒鏇存柊鐨勪緷鎹�+ cntr.T_MODIFY = DateTime.Now; } + else { + cntr = null; + } + + (ok, msg) = DbTran.CreateTask(new CreateTaskObj { + ContainerToUpdate = cntr, + StartLocToUpdate = startLoc, + EndLocToUpdate = endLoc, + TaskToInsert = task, + }); + return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { return NewSimpleResult(ex, preLog); @@ -366,51 +267,41 @@ /// <returns></returns> public static SimpleResult EmptyOnlineGoodpack(EmptyOnlineGoodpackInfo model) { var db = new SqlHelper<object>().GetInstance(); + var (ok, msg) = (false, string.Empty); + var taskInfo = ETask.K绌虹涓婄嚎鍑哄簱.Info(); const string preLog = "API:绌虹涓婄嚎鍑哄簱:"; const string cntrType = "濂借繍绠�; try { - var cntr = db.Queryable<TN_Container>().Where(c => c.S_CODE == model.CntId).First(); - if (cntr == null) { - return NewSimpleResult(1, preLog + $"瀹瑰櫒'{model.CntId}'鍦╗瀹瑰櫒琛╙涓笉瀛樺湪,璇峰湪鍓嶅彴椤甸潰涓淮鎶�"); - } - if (cntr.S_TYPE != cntrType) { - return NewSimpleResult(2, preLog + $"瀹瑰櫒'{model.CntId}'鍦╗瀹瑰櫒琛╙涓殑绫诲瀷='{cntr.S_TYPE}',涓嶆槸'{cntrType}'!"); + // 鏌ヨ瀹瑰櫒琛�瀹瑰櫒绫诲瀷瀛楁 + (ok, msg) = WMSHelper.CheckCntrType(model.CntId, cntrType, out var cntr); + if (!ok) { + return NewSimpleResult(3, preLog + msg); } - var startLoc = db.Queryable<TN_Location>().LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE).Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y").Where((l, c) => taskInfo.StartAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 1 && c.S_CNTR_CODE == model.CntId && c.S_CNTR_TYPE == cntrType).First(); + var startLoc = db.Queryable<TN_Location>().LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) + .Where(DbExpr.StartLoc(areas: taskInfo.StartAreas)) + .Where((l, c) => c.S_CNTR_CODE == model.CntId && c.S_CNTR_TYPE == cntrType).First(); if (startLoc == null) { - return NewSimpleResult(2, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勮捣鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�,褰撳墠瀹瑰櫒鏁伴噺=1,鎵�湪搴撳尯={LogObject(taskInfo.StartAreas)},缁戝畾瀹瑰櫒缂栫爜='{model.CntId}',缁戝畾瀹瑰櫒绫诲瀷='{cntrType}'"); + return NewSimpleResult(2, preLog + preLog + LogMsg.StartLocNotFound(areas: taskInfo.StartAreas) + + $"缁戝畾瀹瑰櫒缂栫爜='{model.CntId}';缁戝畾瀹瑰櫒绫诲瀷='{cntrType}';"); } var endLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") .Where(l => taskInfo.EndAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�,褰撳墠瀹瑰櫒鏁伴噺=0,鎵�湪搴撳尯={LogObject(taskInfo.EndAreas)}"); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); } var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, model.CntId, taskInfo.TaskName); - using (var tran = db.Ado.UseTran()) { - // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟 - if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�"); - } - if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); - } - if (db.Insertable(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } - - // 鎻愪氦鏁版嵁搴撴洿鏀�- tran.CommitTran(); - return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } + (ok, msg) = DbTran.CreateTask(new CreateTaskObj { + StartLocToUpdate = startLoc, + EndLocToUpdate = endLoc, + TaskToInsert = task, + }); + return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { return NewSimpleResult(ex, preLog); @@ -424,6 +315,8 @@ /// <returns></returns> public static SimpleResult QualifiedBack(QualifiedBackInfo model) { var db = new SqlHelper<object>().GetInstance(); + var (ok, msg) = (false, string.Empty); + var taskInfo = ETask.C鎶芥鍚堟牸鍥炲簱.Info(); const string preLog = "API:鎶芥鍚堟牸鍥炲簱"; @@ -431,56 +324,38 @@ var cgDetail = db.Queryable<TN_CG_Detail>() .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_CNTR_CODE == model.CntrCode).First(); if (cgDetail == null) { - return NewSimpleResult(2, preLog + "娌℃湁鎵惧埌寰呭洖搴撶殑鎶芥鐗╂枡:" + LogObject(model)); + return NewSimpleResult(2, preLog + LogMsg.CgDetailNotFound(item: model.ItemCode, cntr: model.CntrCode)); } var locCntrRel = db.Queryable<TN_Loc_Container>().Where(c => c.S_CNTR_CODE == cgDetail.S_CNTR_CODE).First(); if (locCntrRel == null) { - return NewSimpleResult(3, preLog + $"瀹瑰櫒{model.CntrCode}鍦ㄨ揣浣嶅鍣ㄥ叧绯昏〃涓笉瀛樺湪"); + return NewSimpleResult(3, preLog + LogMsg.LocCntrRelNotFound(cntr: cgDetail.S_CNTR_CODE)); } - var startLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y" && l.S_CODE == locCntrRel.S_LOC_CODE && taskInfo.StartAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 1).First(); + var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLoc(locCntrRel.S_LOC_CODE, taskInfo.StartAreas)).First(); if (startLoc == null) { - return NewSimpleResult(4, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勮捣鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�,褰撳墠瀹瑰櫒鏁伴噺=1,鎵�湪搴撳尯={LogObject(taskInfo.StartAreas)}"); + return NewSimpleResult(4, preLog + LogMsg.StartLocNotFound(locCntrRel.S_LOC_CODE, taskInfo.StartAreas)); } var endAreas = locCntrRel.S_CNTR_CODE == "鎵樼洏" ? taskInfo.EndAreas_Pallet : taskInfo.EndAreas_Goodpack; - var endLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y" && endAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).First(); + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: endAreas)).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�,褰撳墠瀹瑰櫒鏁伴噺=0,鎵�湪搴撳尯={LogObject(endAreas)}"); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: endAreas)); } cgDetail.N_ITEM_STATE = 0; cgDetail.S_ITEM_STATE = "鍚堟牸"; cgDetail.T_MODIFY = DateTime.Now; - var cntId = locCntrRel.S_CNTR_CODE; - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskInfo.TaskName); + var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); - using (var tran = db.Ado.UseTran()) { - if (db.Updateable(cgDetail).UpdateColumns(it => new { it.N_ITEM_STATE, it.S_ITEM_STATE, it.T_MODIFY }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[鐗╂枡鏄庣粏琛╙澶辫触!鐗╂枡鍙�'{cgDetail.S_ITEM_CODE}',鐗╂枡鐘舵�=>'鍚堟牸'"); - } - - // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟 - if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�"); - } - if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); - } - if (db.Insertable(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } - - // 鎻愪氦鏁版嵁搴撴洿鏀�- tran.CommitTran(); - return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } + (ok, msg) = DbTran.CreateTask(new CreateTaskObj { + CgDetailToUpdate = cgDetail, + StartLocToUpdate = startLoc, + EndLocToUpdate = endLoc, + TaskToInsert = task, + }); + return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { return NewSimpleResult(ex, preLog); @@ -494,6 +369,8 @@ /// <returns></returns> public static SimpleResult UnqualifiedShift(UnqualifiedShiftInfo model) { var db = new SqlHelper<object>().GetInstance(); + var (ok, msg) = (false, string.Empty); + var taskInfo = ETask.C鎶芥涓嶅悎鏍肩Щ搴�Info(); const string preLog = "API:鎶芥涓嶅悎鏍肩Щ搴�"; @@ -505,23 +382,22 @@ var cgDetail = db.Queryable<TN_CG_Detail>() .Where(d => d.S_ITEM_CODE == model.ItemCode && d.S_CNTR_CODE == model.CntrCode).First(); if (cgDetail == null) { - return NewSimpleResult(2, preLog + $"娌℃湁鍦╗鐗╂枡鏄庣粏琛╙涓壘鍒扮墿鏂�瑕佹眰:鐗╂枡缂栫爜='{model.ItemCode}',瀹瑰櫒缂栫爜='{model.CntrCode}'"); + return NewSimpleResult(2, preLog + LogMsg.CgDetailNotFound(item: model.ItemCode, cntr: model.CntrCode)); } var locCntrRel = db.Queryable<TN_Loc_Container>().Where(c => c.S_CNTR_CODE == cgDetail.S_CNTR_CODE).First(); if (locCntrRel == null) { - return NewSimpleResult(3, preLog + $"鍦╗璐т綅瀹瑰櫒鍏崇郴琛╙涓病鏈夋壘鍒板鍣�{model.CntrCode}'!"); + return NewSimpleResult(3, preLog + LogMsg.LocCntrRelNotFound(cntr: cgDetail.S_CNTR_CODE)); } - // 鏌ヨ璧风偣璐т綅:鏁伴噺=1 - var startLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y" && l.S_CODE == locCntrRel.S_LOC_CODE && taskInfo.StartAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 1).First(); + var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLoc(locCntrRel.S_LOC_CODE, taskInfo.StartAreas)).First(); if (startLoc == null) { - return NewSimpleResult(1, preLog + $"娌℃湁鎵惧埌璧风偣璐т綅'{locCntrRel.S_LOC_CODE}'!瑕佹眰:閿佺姸鎬�'鏃�;褰撳墠瀹瑰櫒鏁伴噺=1;鎵�湪搴撳尯={LogObject(taskInfo.StartAreas)}"); + return NewSimpleResult(1, preLog + LogMsg.StartLocNotFound(locCntrRel.S_LOC_CODE, taskInfo.StartAreas)); } - var endLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y" && l.S_AREA_CODE == model.EndArea && l.N_CURRENT_NUM == 0).First(); + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: new List<string> { model.EndArea })).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�,褰撳墠瀹瑰櫒鏁伴噺=0,鎵�湪搴撳尯='{model.EndArea}'"); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: new List<string> { model.EndArea })); } cgDetail.N_ITEM_STATE = 2; @@ -529,30 +405,13 @@ var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); - using (var tran = db.Ado.UseTran()) { - if (db.Updateable(cgDetail).UpdateColumns(it => new { it.N_ITEM_STATE, it.S_ITEM_STATE }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[璐у搧鏄庣粏琛╙澶辫触!鐗╂枡鍙�'{cgDetail}',鐗╂枡鐘舵�=>'{cgDetail.S_ITEM_STATE}'"); - } - - // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟 - if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�"); - } - if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); - } - if (db.Insertable(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } - - // 鎻愪氦鏁版嵁搴撴洿鏀�- tran.CommitTran(); - return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } + (ok, msg) = DbTran.CreateTask(new CreateTaskObj { + CgDetailToUpdate = cgDetail, + StartLocToUpdate = startLoc, + EndLocToUpdate = endLoc, + TaskToInsert = task, + }); + return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { return NewSimpleResult(ex, preLog); @@ -566,54 +425,36 @@ /// <returns></returns> public static SimpleResult RestBack(RestBackInfo model) { var db = new SqlHelper<object>().GetInstance(); + var (ok, msg) = (false, string.Empty); + var taskInfo = ETask.W灏炬枡鍥炲簱.Info(); const string preLog = "API:灏炬枡鍥炲簱:"; try { - var startLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y" && l.S_CODE == model.StartLoc && l.N_CURRENT_NUM == 1).First(); + var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLoc(model.StartLoc)).First(); if (startLoc == null) { - return NewSimpleResult(2, $"娌℃湁鎵惧埌璧风偣璐т綅'{model.StartLoc}'!瑕佹眰:閿佺姸鎬�'鏃�;褰撳墠瀹瑰櫒鏁伴噺=1"); + return NewSimpleResult(2, LogMsg.StartLocNotFound(model.StartLoc)); } var locCntrRel = db.Queryable<TN_Loc_Container>().Where(c => c.S_LOC_CODE == model.StartLoc).First(); if (locCntrRel == null) { - return NewSimpleResult(3, preLog + $"娌℃湁鎵惧埌璧风偣璐т綅{model.StartLoc}鎵�粦瀹氱殑瀹瑰櫒"); + return NewSimpleResult(3, preLog + LogMsg.LocCntrRelNotFound(loc: model.StartLoc)); } var endAreas = locCntrRel.S_CNTR_CODE == "鎵樼洏" ? taskInfo.EndAreas_Pallet : taskInfo.EndAreas_Goodpack; - var endLoc = db.Queryable<TN_Location>().Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y" && endAreas.Contains(l.S_AREA_CODE) && l.N_CURRENT_NUM == 0).First(); + var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: endAreas)).First(); if (endLoc == null) { - return NewSimpleResult(3, preLog + $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�瑕佹眰:閿佺姸鎬�'鏃�,褰撳墠瀹瑰櫒鏁伴噺=0,鎵�湪搴撳尯={LogObject(endAreas)}"); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: endAreas)); } - var cntId = locCntrRel.S_CNTR_CODE; + var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); - var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, cntId, taskInfo.TaskName); - - using (var tran = db.Ado.UseTran()) { - //if (db.Insertable(locCntrRel).ExecuteCommand() <= 0) { - // tran.RollbackTran(); - // return NewSimpleResult(500, preLog + $"鎻掑叆[瀹瑰櫒璐т綅缁戝畾琛╙澶辫触!鏁版嵁:{LogObject(locCntrRel)}"); - //} - - // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟 - if (db.Updateable(startLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, it.N_CURRENT_NUM, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�"); - } - if (db.Updateable(endLoc).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY, }).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); - } - if (db.Insertable(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - return NewSimpleResult(500, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } - - // 鎻愪氦鏁版嵁搴撴洿鏀�- tran.CommitTran(); - return NewSimpleResult(0, preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); - } + (ok, msg) = DbTran.CreateTask(new CreateTaskObj { + StartLocToUpdate = startLoc, + EndLocToUpdate = endLoc, + TaskToInsert = task, + }); + return NewSimpleResult(ok ? 0 : 500, preLog + msg); } catch (Exception ex) { return NewSimpleResult(ex, preLog); @@ -627,6 +468,8 @@ /// <returns></returns> public static SimpleResult FinishedOutbound(FinishedOutboundInfo model) { var db = new SqlHelper<object>().GetInstance(); + var (ok, msg) = (false, string.Empty); + var taskInfo = ETask.C鎴愬搧鑳跺嚭搴�Info(); const string preLog = "API:鎴愬搧鑳跺嚭搴�"; @@ -687,6 +530,8 @@ /// <returns></returns> public static SimpleResult FinishedOutboundForce(FinishedOutboundInfo model) { var db = new SqlHelper<object>().GetInstance(); + var (ok, msg) = (false, string.Empty); + var taskInfo = ETask.C鎴愬搧鑳跺嚭搴�Info(); const string preLog = "API:鎴愬搧鑳跺嚭搴�"; @@ -826,6 +671,8 @@ /// <returns></returns> public static MesResult CgInfoSync(CgInfoSyncInfo model) { var db = new SqlHelper<object>().GetInstance(); + var (ok, msg) = (false, string.Empty); + const string preLog = "API:鍗氬疄涓嬪彂鐗╂枡淇℃伅:"; const string cntrType = "濂借繍绠�; @@ -843,16 +690,9 @@ return NewMesResult(400, preLog + $"鐗╂枡鏁伴噺'{model.ItemNum}'涓嶅悎娉�瑕佹眰:鐗╂枡鏁伴噺锛�"); } - // TEMP 鐩墠娴佺▼:瀵瑰崥瀹炰笅鍙戠殑淇℃伅涔熻繘琛屾鏌�鏈壘鍒板氨鎶ラ敊,鍚庨潰鏈夐渶姹傚啀鏇存敼 - var cntr = db.Queryable<TN_Container>() - .Where(c => c.S_CODE == model.CntrCode) // 瀵逛簬鍓嶅彴绋嬪簭鑰岃█,S_CODE灏辨槸涓婚敭,缁存姢鏃跺繀瀹氬敮涓�- .First(); - - if (cntr == null) { - return NewMesResult(1, preLog + $"瀹瑰櫒'{model.CntrCode}'鍦╗瀹瑰櫒琛╙涓笉瀛樺湪,璇峰湪鍓嶅彴椤甸潰涓淮鎶�"); - } - if (cntr.S_TYPE != cntrType) { - return NewMesResult(2, preLog + $"瀹瑰櫒'{model.CntrCode}'鍦╗瀹瑰櫒琛╙涓殑绫诲瀷涓�{cntr.S_TYPE}',涓庡綋鍓嶅鍣ㄧ被鍨�{cntrType}'涓嶅悓!"); + (ok, msg) = WMSHelper.CheckCntrType(model.CntrCode, cntrType, out var cntr); + if (!ok) { + return NewMesResult(1, preLog + msg); } // 灏嗕笅鍙戠殑淇℃伅鍏堝瓨鍌ㄥ埌CG琛ㄤ腑 (姝ゆ椂鎵樼洏娌℃湁涓庝骇绾垮鐨勮揣浣嶇粦瀹� -- Gitblit v1.9.1