From 63e94e068622d4ef843cee0d19d4f2d231316304 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期五, 25 七月 2025 17:20:38 +0800 Subject: [PATCH] 完善查询语句, 日志记录的封装 --- wms/DbExpr.cs | 152 +-------- /dev/null | 139 --------- wms/LocationHelper.cs | 177 ----------- wms/WMSHelper.cs | 2 api/ApiHelper.cs | 104 +++--- wms/LogMsg.cs | 118 +++++++ process/TaskProcess.cs | 168 ++++++++++ HH.WCS.Mobox3.DSZSH.csproj | 2 8 files changed, 358 insertions(+), 504 deletions(-) diff --git a/HH.WCS.Mobox3.DSZSH.csproj b/HH.WCS.Mobox3.DSZSH.csproj index 11e8adb..adf462c 100644 --- a/HH.WCS.Mobox3.DSZSH.csproj +++ b/HH.WCS.Mobox3.DSZSH.csproj @@ -273,7 +273,7 @@ <Compile Include="util\WebHelper.cs" /> <Compile Include="wms\DbTran.cs" /> <Compile Include="wms\LocationHelper.cs" /> - <Compile Include="wms\LogBox.cs" /> + <Compile Include="wms\LogMsg.cs" /> <Compile Include="wms\DbExpr.cs" /> <Compile Include="wms\SYSHelper.cs" /> <Compile Include="Program.cs" /> diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index 05a8a79..7328525 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -39,16 +39,17 @@ // 妫�煡璐у搧瀹瑰櫒琛�鏄惁宸茬粡瀛樺湪璐存爣鏈轰紶閫掔殑寰呭叆搴撶墿鏂欎俊鎭� // 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(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First(); if (startLoc == null) { - return NewSimpleResult(2, preLog + LogBox.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); + return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); } // 鍜屾弧鎵樹笅绾垮叆搴撶殑閫昏緫涓�嚧,鐢变簬瀹瑰櫒绉诲姩涓嶄細鏇存敼缁戝畾淇℃伅,鎵�互蹇呴』鍒犻櫎鏃ф暟鎹�@@ -57,11 +58,10 @@ var locCntrRel = WCSHelper.BindLocCntr(startLoc, cgDetail.S_CNTR_CODE); locCntrRel.S_CNTR_TYPE = cntrType; - // 鏌ヨ缁堢偣璐т綅 - // Order:鎸夎揣浣嶅眰鏁�浠庡皬鍒板ぇ鎺掑垪 - var endLoc = db.Queryable<TN_Location>().Where(DbExpr.EndLoc(areas: taskInfo.EndAreas)).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 + LogBox.EndLocNotFound(null, taskInfo.EndAreas)); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); } var task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); @@ -98,7 +98,7 @@ // 鏌ヨ璧风偣璐т綅:鏁伴噺=0 var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First(); if (startLoc == null) { - return NewSimpleResult(2, preLog + LogBox.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); + return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); } // 鏌ヨ瀹瑰櫒琛�瀹瑰櫒绫诲瀷瀛楁 @@ -119,7 +119,7 @@ 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 + LogBox.EndLocNotFound(null, taskInfo.EndAreas)); + return NewSimpleResult(3, preLog + LogMsg.EndLocNotFound(areas: taskInfo.EndAreas)); } // 璧风偣缁堢偣涓婇攣,鍒涘缓浠诲姟 @@ -152,10 +152,9 @@ const string cntrType = "濂借繍绠�; try { - // 鏌ヨ璧风偣璐т綅:鏁伴噺=0 var startLoc = db.Queryable<TN_Location>().Where(DbExpr.StartLocUnbind(model.StartLoc, taskInfo.StartAreas)).First(); if (startLoc == null) { - return NewSimpleResult(2, preLog + LogBox.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); + return NewSimpleResult(2, preLog + LogMsg.StartLocUnbindNotFound(model.StartLoc, taskInfo.StartAreas)); } // 鏌ヨ瀹瑰櫒琛�瀹瑰櫒绫诲瀷瀛楁 @@ -167,16 +166,13 @@ // 绌虹鍏ュ簱鏃�濡傛灉瀛樺湪鏃х殑缁戝畾鏁版嵁,鍒犻櫎 var old = WCSHelper.GetLocCntrCg(model.CntrCode); - // 缁戝畾璐т綅瀹瑰櫒,璧风偣璐т綅褰撳墠鏁伴噺=1 var locCntrRel = WCSHelper.BindLocCntr(startLoc, model.CntrCode); locCntrRel.S_CNTR_TYPE = cntrType; - // 鏌ヨ缁堢偣璐т綅 - // Order:灞傛暟浠庝綆鍒伴珮,琛�鍒� 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); @@ -228,15 +224,17 @@ 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); @@ -282,15 +280,18 @@ 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); @@ -323,31 +324,30 @@ 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); (ok, msg) = DbTran.CreateTask(new CreateTaskObj { CgDetailToUpdate = cgDetail, @@ -382,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; @@ -432,20 +431,20 @@ 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 task = WCSHelper.BuildTaskWithLocLock(startLoc, endLoc, locCntrRel.S_CNTR_CODE, taskInfo.TaskName); @@ -672,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 = "濂借繍绠�; @@ -689,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琛ㄤ腑 (姝ゆ椂鎵樼洏娌℃湁涓庝骇绾垮鐨勮揣浣嶇粦瀹� diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs index 4151c3f..314d728 100644 --- a/process/TaskProcess.cs +++ b/process/TaskProcess.cs @@ -23,12 +23,12 @@ if (load) { Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚,璧风偣瑙g粦瀹瑰櫒{mst.S_CNTR_CODE}"); LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_START_LOC}鍙栬揣瀹屾垚,璧风偣瑙g粦瀹瑰櫒{mst.S_CNTR_CODE}"); - LocationHelper.UnbindLocCntr(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList()); + UnbindLocCntr(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList()); } else { Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚,缁堢偣缁戝畾瀹瑰櫒{mst.S_CNTR_CODE}"); LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚,缁堢偣缁戝畾瀹瑰櫒{mst.S_CNTR_CODE}"); - LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList()); + BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList()); } } @@ -42,13 +42,13 @@ //鏍规嵁瀹㈡埛鐜板満瑕佹眰,濡傛灉鍙栬揣瀹屾垚浠诲姟澶辫触浜哄伐鎷夊埌缁堢偣,鎴戜滑灏卞綋鍗歌揣瀹屾垚澶勭悊;濡傛灉鏄汉宸ユ媺璧板埌鍏跺畠鍖哄煙,鎴戜滑灏辫В閿佺粓鐐�鍒犻櫎鎵樼洏銆� //缁堢偣缁戝畾 BufferLocUpdate(mst, false); - LocationHelper.UnLockLoc(mst.S_END_LOC); + UnLockLoc(mst.S_END_LOC); } else { //璧风偣缁堢偣瑙i攣 - LocationHelper.UnLockLoc(mst.S_START_LOC); - LocationHelper.UnLockLoc(mst.S_END_LOC); + UnLockLoc(mst.S_START_LOC); + UnLockLoc(mst.S_END_LOC); } @@ -99,6 +99,164 @@ } } + /// <summary> + /// 鍙栬揣瀹岃В閿佽捣鐐�鍗歌揣瀹岃В閿佺粓鐐�鍙楠岄攣鐨勬潵婧�涔熷彲浠ヤ笉鏍¢獙 + /// </summary> + /// <param name="loc"></param> + /// <returns></returns> + public static bool UnLockLoc(string loc) { + LogHelper.Info("UnLockLoc:" + loc); + var res = false; + var db = new SqlHelper<object>().GetInstance(); + var model = db.Queryable<TN_Location>().Where(a => a.S_CODE == loc).First(); + if (model != null) { + model.S_LOCK_STATE = "鏃�; + model.N_LOCK_STATE = 0; + model.S_LOCK_OP = ""; + model.T_MODIFY = System.DateTime.Now; + res = db.Updateable(model).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() > 0; + LogHelper.Info("UnLockLoc:瑙i攣缁撴灉" + res); + } + else { + LogHelper.Info("UnLockLoc 澶辫触" + loc); + } + return res; + } + + /// <summary> + /// 璐т綅瑙g粦瀹瑰櫒 + /// </summary> + /// <param name="loc"></param> + /// <param name="cntrs"></param> + /// <returns></returns> + public static string UnbindLocCntr(string loc, List<string> cntrs) { + var db = new SqlHelper<object>().GetInstance(); + var logs = $"璐т綅:{loc},瀹瑰櫒:{JsonConvert.SerializeObject(cntrs)}"; + try { + var lcrList = db.Queryable<TN_Loc_Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE) && a.S_LOC_CODE == loc).ToList(); + if (lcrList.Count == 0) { + LogHelper.Info($"璐т綅鏃犻渶瑙g粦瀹瑰櫒,鍦ㄦ暟鎹簱涓湭鎵惧埌{JsonConvert.SerializeObject(cntrs)}鐩稿叧鐨勮揣浣嶅鍣ㄥ叧绯昏〃淇℃伅"); + } + cntrs = lcrList.Select(a => a.S_CNTR_CODE).ToList(); + + var log = JsonConvert.SerializeObject(cntrs); + var location = db.Queryable<TN_Location>().First(a => a.S_CODE == loc); + if (location != null) { + location.N_CURRENT_NUM = 0; + location.S_LOCK_STATE = "鏃�; + location.N_LOCK_STATE = 0; + + using (var tran = db.Ado.UseTran()) { + if (db.Deleteable<TN_Loc_Container>().Where(it => cntrs.Contains(it.S_CNTR_CODE) && it.S_LOC_CODE == loc).ExecuteCommand() > 0) { + LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒鍏崇郴琛ㄦ垚鍔�{log}"); + } + else { + tran.RollbackTran(); + + LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�{log}"); + + return "璐т綅瑙g粦瀹瑰櫒澶辫触," + logs; + } + + log = JsonConvert.SerializeObject(location); + if (db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand() > 0) { + tran.CommitTran(); + + LogHelper.Info($"鏇存柊璐т綅琛ㄦ垚鍔�{log}"); + } + else { + tran.RollbackTran(); + + LogHelper.Info($"鏇存柊璐т綅琛ㄥけ璐�{log}"); + + return "璐т綅瑙g粦瀹瑰櫒澶辫触," + logs; + } + } + } + else { + LogHelper.Info($"鍦ㄦ暟鎹簱涓湭鎵惧埌璇ヨ揣浣�鏃犻渶鏇存柊,璐т綅:{loc}"); + } + return "璐т綅瑙g粦瀹瑰櫒鎴愬姛," + logs; + } + catch (Exception ex) { + LogHelper.Info($"鍙戠敓浜嗗紓甯�璐т綅瑙g粦瀹瑰櫒澶辫触,{ex.Message}"); + return "璐т綅缁戝畾瀹瑰櫒澶辫触," + logs; + } + } + + /// <summary> + /// 璐т綅缁戝畾瀹瑰櫒 + /// </summary> + /// <param name="loc"></param> + /// <param name="cntrs"></param> + /// <returns></returns> + public static string BindingLoc(string loc, List<string> cntrs) { + var db = new SqlHelper<object>().GetInstance(); + var logs = $"璐т綅:{loc},瀹瑰櫒:{JsonConvert.SerializeObject(cntrs)}"; + try { + // 鍒犻櫎宸茬粡缁戝畾杩囩殑瀹瑰櫒璁板綍 + var lcrList = db.Queryable<TN_Loc_Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE) && a.S_LOC_CODE == loc).ToList(); + if (lcrList.Count > 0) { + cntrs = cntrs.Except(lcrList.Select(a => a.S_CNTR_CODE).ToList()).ToList(); + } + + var bindLocCntList = new List<TN_Loc_Container>(); + foreach (var item in cntrs) { + // 閽堝瀹瑰櫒绫诲瀷娣诲姞鐨勬柊閫昏緫 + var cntr = db.Queryable<TN_Container>().Where(c => c.S_CODE == item).First(); + + if (cntr == null) { + LogHelper.Info($"璐т綅瑙g粦鏃�瀹瑰櫒{item}娌℃湁鍦ㄥ鍣ㄤ俊鎭〃涓煡鍒�涓嶈褰曞鍣ㄧ被鍨�); + bindLocCntList.Add(new TN_Loc_Container() { S_LOC_CODE = loc, S_CNTR_CODE = item }); + } + else { + bindLocCntList.Add(new TN_Loc_Container() { S_LOC_CODE = loc, S_CNTR_CODE = item, S_CNTR_TYPE = cntr.S_TYPE }); + } + } + + var log = JsonConvert.SerializeObject(bindLocCntList); + + using (var tran = db.Ado.UseTran()) { + if (db.Insertable(bindLocCntList).ExecuteCommand() <= 0) { + db.RollbackTran(); + LogHelper.Info($"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�{log}"); + return "璐т綅缁戝畾瀹瑰櫒澶辫触," + logs; + } + LogHelper.Info($"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄦ垚鍔�{log}"); + + var location = db.Queryable<TN_Location>().First(a => a.S_CODE == loc); + if (location != null) { + location.N_CURRENT_NUM += cntrs.Count; + location.S_LOCK_STATE = "鏃�; + location.N_LOCK_STATE = 0; + log = JsonConvert.SerializeObject(location); + + if (db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand() > 0) { + db.CommitTran(); + + LogHelper.Info($"鏇存柊璐т綅琛ㄦ垚鍔�{log}"); + } + else { + db.RollbackTran(); + + LogHelper.Info($"鏇存柊璐т綅琛ㄥけ璐�{log}"); + + return "璐т綅缁戝畾瀹瑰櫒澶辫触," + logs; + } + } + else { + db.RollbackTran(); + LogHelper.Info($"鏈壘鍒拌璐т綅{loc},鎴栬�宸查攣瀹�{log}"); + } + } + return "璐т綅缁戝畾瀹瑰櫒鎴愬姛," + logs; + } + catch (Exception ex) { + LogHelper.Info($"鍙戠敓浜嗗紓甯�璐т綅缁戝畾瀹瑰櫒澶辫触,"); + return "璐т綅缁戝畾瀹瑰櫒澶辫触," + ex.Message; + } + } + private static object locLocker = new object(); diff --git a/wms/DbExpr.cs b/wms/DbExpr.cs index 096401d..2d1a631 100644 --- a/wms/DbExpr.cs +++ b/wms/DbExpr.cs @@ -15,7 +15,7 @@ /// </summary> public class DbExpr { /// <summary> - /// 閫氱敤璐т綅绛涢�琛ㄨ揪寮�+ /// 閫氱敤 [ 璐т綅 ] 绛涢� /// </summary> /// <remarks><code><![CDATA[ /// l => l.C_ENABLE == "Y" @@ -29,18 +29,19 @@ /// <param name="areas"></param> /// <param name="curNum"></param> /// <returns></returns> - public static Expression<Func<TN_Location, bool>> LocFilter(int @lock = 0, string name = "", List<string> areas = null, int curNum = 0) { + public static Expression<Func<TN_Location, bool>> LocFilter(int @lock, string name, List<string> areas, int curNum) { Expression<Func<TN_Location, bool>> expr = l => l.C_ENABLE == "Y"; // 宸插惎鐢� if (@lock >= 0) { - Expression<Func<TN_Location, bool>> newExpr = l => l.N_LOCK_STATE == @lock && l.S_LOCK_STATE == TN_Location.GetLockStateStr(@lock); + Expression<Func<TN_Location, bool>> newExpr = + l => l.N_LOCK_STATE == @lock && l.S_LOCK_STATE == TN_Location.GetLockStateStr(@lock); expr = Expression.Lambda<Func<TN_Location, bool>>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]); } if (!string.IsNullOrEmpty(name)) { Expression<Func<TN_Location, bool>> newExpr = l => l.S_CODE == name; expr = Expression.Lambda<Func<TN_Location, bool>>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]); } - if (areas != null && areas.Count == 0) { + if (areas != null && areas.Count > 0) { Expression<Func<TN_Location, bool>> newExpr = l => areas.Contains(l.S_AREA_CODE); expr = Expression.Lambda<Func<TN_Location, bool>>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]); } @@ -66,23 +67,28 @@ /// <param name="areas"></param> /// <returns></returns> public static Expression<Func<TN_Location, bool>> StartLocUnbind(string name = "", List<string> areas = null) { - Expression<Func<TN_Location, bool>> expr = - l => l.C_ENABLE == "Y" && l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.N_CURRENT_NUM == 0; - - if (!string.IsNullOrEmpty(name)) { - Expression<Func<TN_Location, bool>> newExpr = l => l.S_CODE == name; - expr = Expression.Lambda<Func<TN_Location, bool>>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]); - } - if (areas != null && areas.Count > 0) { - Expression<Func<TN_Location, bool>> newExpr = l => areas.Contains(l.S_AREA_CODE); - expr = Expression.Lambda<Func<TN_Location, bool>>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]); - } - - return expr; + return LocFilter(0, name, areas, 0); } /// <summary> - /// + /// 璧风偣璐т綅 ( 宸茬粦瀹�) + /// </summary> + /// <remarks><code><![CDATA[ + /// l => l.C_ENABLE == "Y" + /// && l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� + /// && l.S_CODE == name + /// && areas.Contains(l.S_AREA_CODE) + /// && l.N_CURRENT_NUM == 1 + /// ]]></code></remarks> + /// <param name="name"></param> + /// <param name="areas"></param> + /// <returns></returns> + public static Expression<Func<TN_Location, bool>> StartLoc(string name = "", List<string> areas = null) { + return LocFilter(0, name, areas, 1); + } + + /// <summary> + /// 缁堢偣璐т綅 /// </summary> /// <remarks><code><![CDATA[ /// l => l.C_ENABLE == "Y" @@ -95,115 +101,7 @@ /// <param name="areas"></param> /// <returns></returns> public static Expression<Func<TN_Location, bool>> EndLoc(string name = "", List<string> areas = null) { - Expression<Func<TN_Location, bool>> expr = - l => l.C_ENABLE == "Y" && l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.N_CURRENT_NUM == 0; - - if (!string.IsNullOrEmpty(name)) { - Expression<Func<TN_Location, bool>> newExpr = l => l.S_CODE == name; - expr = Expression.Lambda<Func<TN_Location, bool>>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]); - } - if (areas != null && areas.Count > 0) { - Expression<Func<TN_Location, bool>> newExpr = l => areas.Contains(l.S_AREA_CODE); - expr = Expression.Lambda<Func<TN_Location, bool>>(Expression.AndAlso(expr.Body, newExpr.Body), expr.Parameters[0]); - } - - return expr; + return LocFilter(0, name, areas, 0); } } - - #region 鏃ф煡璇㈢被 ( 鎼佺疆 ) - /// <summary> - /// [ 鏁版嵁搴撴煡璇�] 甯姪绫�- /// </summary> - /// <remarks><b>[ 鎼佺疆 ]</b> 绫讳笌鏂规硶鏆傛椂璁句负绉佹湁<br/><b>[ 鐞嗙敱 ]</b> 寮曠敤澶栭儴 db 瀛樺湪椋庨櫓 ; 涓嶉�鐢ㄤ簬鑱旇〃鏌ヨ鍦烘櫙 , 涓嶅鐏垫椿</remarks> - class DbQuery { - /// <summary> - /// 鏋勫缓 [ 璐т綅 ] 鏌ヨ琛ㄨ揪寮�: 绛涢�鏉′欢 : 閿佺姸鎬�/ 鍚嶇О / 璐у尯 / 褰撳墠瀹瑰櫒鏁伴噺 ( 榛樿绛涢�宸插惎鐢ㄨ揣浣�) - /// </summary> - /// <param name="db">璋冪敤鍖哄煙鐨�SqlSugarClient</param> - /// <param name="lock">閿佺姸鎬�( 灏忎簬 0 鏃跺拷鐣�)</param> - /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> - /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> - /// <param name="curNum">褰撳墠鏁伴噺 ( 灏忎簬 0 鏃跺拷鐣�)</param> - /// <returns></returns> - static ISugarQueryable<TN_Location> Loc(SqlSugarClient db, int @lock, string name, List<string> areas, int curNum) { - var query = db.Queryable<TN_Location>().Where(l => l.C_ENABLE == "Y"); // 宸插惎鐢�- - if (@lock >= 0) { - query = query.Where(l => l.N_LOCK_STATE == @lock && l.S_LOCK_STATE == TN_Location.GetLockStateStr(@lock)); - } - if (!string.IsNullOrEmpty(name)) { - query = query.Where(l => l.S_CODE == name); - } - if (areas != null && areas.Count != 0) { - query = query.Where(l => areas.Contains(l.S_AREA_CODE)); - } - if (curNum >= 0) { - query = query.Where(l => l.N_CURRENT_NUM == curNum); - } - - return query; - } - - /// <summary> - /// 鏋勫缓 [ 璧风偣璐т綅 ( 缁戝畾鍓�) ] 鏌ヨ琛ㄨ揪寮�: 绛涢�鏉′欢 : 鍚嶇О / 璐у尯 ( 榛樿绛涢� : 宸插惎鐢�/ 鏈笂閿�/ 褰撳墠瀹瑰櫒鏁伴噺 = 0 ) - /// </summary> - /// <param name="db">璋冪敤鍖哄煙鐨�SqlSugarClient</param> - /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> - /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> - /// <returns></returns> - static ISugarQueryable<TN_Location> StartLocUnbind(SqlSugarClient db, string name, List<string> areas) { - var query = db.Queryable<TN_Location>().Where(l => l.C_ENABLE == "Y" && l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == TN_Location.GetLockStateStr(0) && l.N_CURRENT_NUM == 0); // 宸插惎鐢�鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0(鍒濆鏈粦瀹氬鍣� - - if (!string.IsNullOrEmpty(name)) { - query = query.Where(l => l.S_CODE == name); - } - if (areas != null && areas.Count != 0) { - query = query.Where(l => areas.Contains(l.S_AREA_CODE)); - } - - return query; - } - - /// <summary> - /// 鏋勫缓 [ 璧风偣璐т綅 ( 缁戝畾鍚�) ] 鏌ヨ琛ㄨ揪寮�: 绛涢�鏉′欢 : 鍚嶇О / 璐у尯 ( 榛樿绛涢� : 宸插惎鐢�/ 鏈笂閿�/ 褰撳墠瀹瑰櫒鏁伴噺 = 1 ) - /// </summary> - /// <param name="db">璋冪敤鍖哄煙鐨�SqlSugarClient</param> - /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> - /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> - /// <returns></returns> - static ISugarQueryable<TN_Location> StartLoc(SqlSugarClient db, string name, List<string> areas) { - var query = db.Queryable<TN_Location>().Where(l => l.C_ENABLE == "Y" && l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == TN_Location.GetLockStateStr(0) && l.N_CURRENT_NUM == 1); // 宸插惎鐢�鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=1(宸茬粦瀹氬鍣� - - if (!string.IsNullOrEmpty(name)) { - query = query.Where(l => l.S_CODE == name); - } - if (areas != null && areas.Count != 0) { - query = query.Where(l => areas.Contains(l.S_AREA_CODE)); - } - - return query; - } - - /// <summary> - /// 鏋勫缓 [ 缁堢偣璐т綅 ] 鏌ヨ琛ㄨ揪寮�: 绛涢�鏉′欢 : 鍚嶇О / 璐у尯 ( 榛樿绛涢� : 宸插惎鐢�/ 鏈笂閿�/ 褰撳墠瀹瑰櫒鏁伴噺 = 0 ) - /// </summary> - /// <param name="db">璋冪敤鍖哄煙鐨�SqlSugarClient</param> - /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> - /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> - /// <returns></returns> - static ISugarQueryable<TN_Location> EndLoc(SqlSugarClient db, string name, List<string> areas) { - var query = db.Queryable<TN_Location>().Where(l => l.C_ENABLE == "Y" && l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == TN_Location.GetLockStateStr(0) && l.N_CURRENT_NUM == 0); // 宸插惎鐢�鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0(鏈粦瀹氬鍣� - - if (!string.IsNullOrEmpty(name)) { - query = query.Where(l => l.S_CODE == name); - } - if (areas != null && areas.Count != 0) { - query = query.Where(l => areas.Contains(l.S_AREA_CODE)); - } - - return query; - } - } - #endregion } diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs index 78d0a21..e8d318e 100644 --- a/wms/LocationHelper.cs +++ b/wms/LocationHelper.cs @@ -103,181 +103,6 @@ return db.Queryable<TN_Location>().Where(a => a.S_CODE.Trim() == code).First(); } - /// <summary> - /// 鍙栬揣瀹岃В閿佽捣鐐�鍗歌揣瀹岃В閿佺粓鐐�鍙楠岄攣鐨勬潵婧�涔熷彲浠ヤ笉鏍¢獙 - /// </summary> - /// <param name="loc"></param> - /// <returns></returns> - public static bool UnLockLoc(string loc) - { - LogHelper.Info("UnLockLoc:" + loc); - var res = false; - var db = new SqlHelper<object>().GetInstance(); - var model = db.Queryable<TN_Location>().Where(a => a.S_CODE == loc).First(); - if (model != null) - { - model.S_LOCK_STATE = "鏃�; - model.N_LOCK_STATE = 0; - model.S_LOCK_OP = ""; - model.T_MODIFY = System.DateTime.Now; - res = db.Updateable(model).UpdateColumns(it => new { it.N_LOCK_STATE, it.S_LOCK_STATE, it.S_LOCK_OP, it.T_MODIFY }).ExecuteCommand() > 0; - LogHelper.Info("UnLockLoc:瑙i攣缁撴灉" + res); - } - else - { - LogHelper.Info("UnLockLoc 澶辫触" + loc); - } - return res; - } - - /// <summary> - /// 璐т綅瑙g粦瀹瑰櫒 - /// </summary> - /// <param name="loc"></param> - /// <param name="cntrs"></param> - /// <returns></returns> - public static string UnbindLocCntr(string loc, List<string> cntrs) - { - var db = new SqlHelper<object>().GetInstance(); - var logs = $"璐т綅:{loc},瀹瑰櫒:{JsonConvert.SerializeObject(cntrs)}"; - try - { - var lcrList = db.Queryable<TN_Loc_Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE) && a.S_LOC_CODE == loc).ToList(); - if (lcrList.Count == 0) { - LogHelper.Info($"璐т綅鏃犻渶瑙g粦瀹瑰櫒,鍦ㄦ暟鎹簱涓湭鎵惧埌{JsonConvert.SerializeObject(cntrs)}鐩稿叧鐨勮揣浣嶅鍣ㄥ叧绯昏〃淇℃伅"); - } - cntrs = lcrList.Select(a => a.S_CNTR_CODE).ToList(); - - var log = JsonConvert.SerializeObject(cntrs); - var location = db.Queryable<TN_Location>().First(a => a.S_CODE == loc); - if (location != null) - { - location.N_CURRENT_NUM = 0; - location.S_LOCK_STATE = "鏃�; - location.N_LOCK_STATE = 0; - - using (var tran = db.Ado.UseTran()) - { - if (db.Deleteable<TN_Loc_Container>().Where(it => cntrs.Contains(it.S_CNTR_CODE) && it.S_LOC_CODE == loc).ExecuteCommand() > 0) - { - LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒鍏崇郴琛ㄦ垚鍔�{log}"); - } - else - { - tran.RollbackTran(); - - LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�{log}"); - - return "璐т綅瑙g粦瀹瑰櫒澶辫触," + logs; - } - - log = JsonConvert.SerializeObject(location); - if (db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand() > 0) { - tran.CommitTran(); - - LogHelper.Info($"鏇存柊璐т綅琛ㄦ垚鍔�{log}"); - } - else { - tran.RollbackTran(); - - LogHelper.Info($"鏇存柊璐т綅琛ㄥけ璐�{log}"); - - return "璐т綅瑙g粦瀹瑰櫒澶辫触," + logs; - } - } - } - else - { - LogHelper.Info($"鍦ㄦ暟鎹簱涓湭鎵惧埌璇ヨ揣浣�鏃犻渶鏇存柊,璐т綅:{loc}"); - } - return "璐т綅瑙g粦瀹瑰櫒鎴愬姛," + logs; - } - catch (Exception ex) - { - LogHelper.Info($"鍙戠敓浜嗗紓甯�璐т綅瑙g粦瀹瑰櫒澶辫触,{ex.Message}"); - return "璐т綅缁戝畾瀹瑰櫒澶辫触," + logs; - } - } - - /// <summary> - /// 璐т綅缁戝畾瀹瑰櫒 - /// </summary> - /// <param name="loc"></param> - /// <param name="cntrs"></param> - /// <returns></returns> - public static string BindingLoc(string loc, List<string> cntrs) - { - var db = new SqlHelper<object>().GetInstance(); - var logs = $"璐т綅:{loc},瀹瑰櫒:{JsonConvert.SerializeObject(cntrs)}"; - try - { - // 鍒犻櫎宸茬粡缁戝畾杩囩殑瀹瑰櫒璁板綍 - var lcrList = db.Queryable<TN_Loc_Container>().Where(a => cntrs.Contains(a.S_CNTR_CODE) && a.S_LOC_CODE == loc).ToList(); - if (lcrList.Count > 0) { - cntrs = cntrs.Except(lcrList.Select(a => a.S_CNTR_CODE).ToList()).ToList(); - } - - var bindLocCntList = new List<TN_Loc_Container>(); - foreach (var item in cntrs) { - // 閽堝瀹瑰櫒绫诲瀷娣诲姞鐨勬柊閫昏緫 - var cntr = db.Queryable<TN_Container>().Where(c => c.S_CODE == item).First(); - - if (cntr == null) { - LogHelper.Info($"璐т綅瑙g粦鏃�瀹瑰櫒{item}娌℃湁鍦ㄥ鍣ㄤ俊鎭〃涓煡鍒�涓嶈褰曞鍣ㄧ被鍨�); - bindLocCntList.Add(new TN_Loc_Container() { S_LOC_CODE = loc, S_CNTR_CODE = item }); - } - else { - bindLocCntList.Add(new TN_Loc_Container() { S_LOC_CODE = loc, S_CNTR_CODE = item, S_CNTR_TYPE = cntr.S_TYPE }); - } - } - - var log = JsonConvert.SerializeObject(bindLocCntList); - - using (var tran = db.Ado.UseTran()) - { - if (db.Insertable(bindLocCntList).ExecuteCommand() <= 0) { - db.RollbackTran(); - LogHelper.Info($"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�{log}"); - return "璐т綅缁戝畾瀹瑰櫒澶辫触," + logs; - } - LogHelper.Info($"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄦ垚鍔�{log}"); - - var location = db.Queryable<TN_Location>().First(a => a.S_CODE == loc); - if (location != null) - { - location.N_CURRENT_NUM += cntrs.Count; - location.S_LOCK_STATE = "鏃�; - location.N_LOCK_STATE = 0; - log = JsonConvert.SerializeObject(location); - - if (db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand() > 0) - { - db.CommitTran(); - - LogHelper.Info($"鏇存柊璐т綅琛ㄦ垚鍔�{log}"); - } - else - { - db.RollbackTran(); - - LogHelper.Info($"鏇存柊璐т綅琛ㄥけ璐�{log}"); - - return "璐т綅缁戝畾瀹瑰櫒澶辫触," + logs; - } - } - else - { - db.RollbackTran(); - LogHelper.Info($"鏈壘鍒拌璐т綅{loc},鎴栬�宸查攣瀹�{log}"); - } - } - return "璐т綅缁戝畾瀹瑰櫒鎴愬姛," + logs; - } - catch (Exception ex) - { - LogHelper.Info($"鍙戠敓浜嗗紓甯�璐т綅缁戝畾瀹瑰櫒澶辫触,"); - return "璐т綅缁戝畾瀹瑰櫒澶辫触," + ex.Message; - } - } + } } diff --git a/wms/LogBox.cs b/wms/LogBox.cs deleted file mode 100644 index b92fd69..0000000 --- a/wms/LogBox.cs +++ /dev/null @@ -1,139 +0,0 @@ -锘縰sing System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using System.Text; -using System.Threading.Tasks; - -using HH.WCS.Mobox3.DSZSH.models; - -using Newtonsoft.Json; - -namespace HH.WCS.Mobox3.DSZSH.util { - /// <summary> - /// [ 鏃ュ織淇℃伅 ] 鏋勯�绫�- /// </summary> - public static class LogBox { - /// <summary> - /// <c>"娌℃湁鎵惧埌璧风偣璐т綅!!瑕佹眰:閿佺姸鎬�'@lock';璐т綅鍚嶇О='name';鎵�湪搴撳尯=[areas];褰撳墠瀹瑰櫒鏁伴噺=curNum;"</c> - /// </summary> - /// <remarks><b>[ 娉ㄦ剰 ]</b> 鍘熷垯涓婅嚦灏戞湁 1 涓檺鍒舵潯浠�/remarks> - /// <param name="lock">閿佺姸鎬�( 灏忎簬 0 鏃跺拷鐣�)</param> - /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> - /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> - /// <param name="curNum">褰撳墠鏁伴噺 ( 灏忎簬 0 鏃跺拷鐣�)</param> - /// <returns></returns> - public static string StartLocNotFound(int @lock, string name, List<string> areas, int curNum) { - var res = "娌℃湁鎵惧埌璧风偣璐т綅!!瑕佹眰:"; - - if (@lock >= 0) { - res += $"閿佺姸鎬�'{TN_Location.GetLockStateStr(@lock)}';"; - } - if (!string.IsNullOrEmpty(name)) { - res += $"璐т綅鍚嶇О='{name}';"; - } - if (areas != null && areas.Count != 0) { - res += $"鎵�湪搴撳尯={JsonConvert.SerializeObject(areas)};"; - } - if (curNum >= 0) { - res += $"褰撳墠瀹瑰櫒鏁伴噺={curNum};"; - } - - return res; - } - - /// <summary> - /// <c>"娌℃湁鎵惧埌璧风偣璐т綅!!瑕佹眰:閿佺姸鎬�'鏃�;璐т綅鍚嶇О='name';鎵�湪搴撳尯=[areas];褰撳墠瀹瑰櫒鏁伴噺={bind?1:0};"</c> - /// </summary> - /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> - /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> - /// <param name="bind">璐т綅鏄惁宸茬粦瀹�, 榛樿涓�true , 姝ゆ椂璁剧疆 [ 褰撳墠瀹瑰櫒鏁伴噺 ] = 1 , 鍚﹀垯璁剧疆涓�0</param> - /// <returns></returns> - public static string StartLocNotFound(string name, List<string> areas, bool bind = true) { - var res = "娌℃湁鎵惧埌璧风偣璐т綅!!瑕佹眰:閿佺姸鎬�'鏃�"; - - if (!string.IsNullOrEmpty(name)) { - res += $"璐т綅鍚嶇О='{name}';"; - } - if (areas != null && areas.Count != 0) { - res += $"鎵�湪搴撳尯={JsonConvert.SerializeObject(areas)};"; - } - - res += $"褰撳墠瀹瑰櫒鏁伴噺={(bind ? 1 : 0)};"; - - return res; - } - - /// <summary> - /// <c>"娌℃湁鎵惧埌璧风偣璐т綅!!瑕佹眰:閿佺姸鎬�'鏃�;璐т綅鍚嶇О='name';鎵�湪搴撳尯=[areas];褰撳墠瀹瑰櫒鏁伴噺=0;"</c> - /// </summary> - /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> - /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> - /// <returns></returns> - public static string StartLocUnbindNotFound(string name, List<string> areas) { - var res = "娌℃湁鎵惧埌璧风偣璐т綅!!瑕佹眰:閿佺姸鎬�'鏃�"; - - if (!string.IsNullOrEmpty(name)) { - res += $"璐т綅鍚嶇О='{name}';"; - } - if (areas != null && areas.Count != 0) { - res += $"鎵�湪搴撳尯={JsonConvert.SerializeObject(areas)};"; - } - - res += $"褰撳墠瀹瑰櫒鏁伴噺=0;"; - - return res; - } - - /// <summary> - /// <c>"娌℃湁鎵惧埌缁堢偣璐т綅!!瑕佹眰:閿佺姸鎬�'@lock';璐т綅鍚嶇О='name';鎵�湪搴撳尯=[areas];褰撳墠瀹瑰櫒鏁伴噺=curNum;"</c> - /// </summary> - /// <remarks><b>[ 娉ㄦ剰 ]</b> 鍘熷垯涓婅嚦灏戞湁 1 涓檺鍒舵潯浠�/remarks> - /// <param name="lock">閿佺姸鎬�( 灏忎簬 0 鏃跺拷鐣�)</param> - /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> - /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> - /// <param name="curNum">褰撳墠鏁伴噺 ( 灏忎簬 0 鏃跺拷鐣�)</param> - /// <returns></returns> - public static string EndLocNotFound(int @lock, string name, List<string> areas, int curNum) { - var res = "娌℃湁鎵惧埌缁堢偣璐т綅!!瑕佹眰:"; - - if (@lock >= 0) { - res += $"閿佺姸鎬�'{TN_Location.GetLockStateStr(@lock)}';"; - } - if (!string.IsNullOrEmpty(name)) { - res += $"璐т綅鍚嶇О='{name}';"; - } - if (areas != null && areas.Count != 0) { - res += $"鎵�湪搴撳尯={JsonConvert.SerializeObject(areas)};"; - } - if (curNum >= 0) { - res += $"褰撳墠瀹瑰櫒鏁伴噺={curNum};"; - } - - return res; - } - - /// <summary> - /// <c>"娌℃湁鎵惧埌缁堢偣璐т綅!!瑕佹眰:閿佺姸鎬�'鏃�;璐т綅鍚嶇О='name';鎵�湪搴撳尯=[areas];褰撳墠瀹瑰櫒鏁伴噺=curNum;"</c> - /// </summary> - /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> - /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> - /// <param name="curNum">褰撳墠鏁伴噺 ( 灏忎簬 0 鏃跺拷鐣�)</param> - /// <returns></returns> - public static string EndLocNotFound(string name = "", List<string> areas = null, int curNum = 0) { - var res = "娌℃湁鎵惧埌缁堢偣璐т綅!!瑕佹眰:閿佺姸鎬�'鏃�;"; - - if (!string.IsNullOrEmpty(name)) { - res += $"璐т綅鍚嶇О='{name}';"; - } - if (areas != null && areas.Count != 0) { - res += $"鎵�湪搴撳尯={JsonConvert.SerializeObject(areas)};"; - } - if (curNum >= 0) { - res += $"褰撳墠瀹瑰櫒鏁伴噺={curNum};"; - } - - return res; - } - } -} \ No newline at end of file diff --git a/wms/LogMsg.cs b/wms/LogMsg.cs new file mode 100644 index 0000000..11848f4 --- /dev/null +++ b/wms/LogMsg.cs @@ -0,0 +1,118 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; + +using HH.WCS.Mobox3.DSZSH.models; + +using Newtonsoft.Json; + +namespace HH.WCS.Mobox3.DSZSH.util { + /// <summary> + /// [ 鏃ュ織淇℃伅 ] 鏋勯�绫�+ /// </summary> + public static class LogMsg { + /// <summary> + /// <c>"娌℃湁鎵惧埌{desc}璐т綅!!瑕佹眰:閿佺姸鎬�'@lock';璐т綅鍚嶇О='name';鎵�湪搴撳尯=[areas];褰撳墠瀹瑰櫒鏁伴噺=curNum;"</c> + /// </summary> + /// <remarks><b>[ 娉ㄦ剰 ]</b> 鍘熷垯涓婅嚦灏戞湁 1 涓檺鍒舵潯浠�/remarks> + /// <param name="desc">璐т綅鎻忚堪 ( 璧风偣 / 缁堢偣 )</param> + /// <param name="lock">閿佺姸鎬�( 灏忎簬 0 鏃跺拷鐣�)</param> + /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> + /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> + /// <param name="curNum">褰撳墠鏁伴噺 ( 灏忎簬 0 鏃跺拷鐣�)</param> + /// <returns></returns> + public static string LocNotFound(string desc, int @lock, string name, List<string> areas, int curNum) { + var res = $"娌℃湁鎵惧埌{desc}璐т綅!!瑕佹眰:"; + + if (@lock >= 0) { + res += $"閿佺姸鎬�'{TN_Location.GetLockStateStr(@lock)}';"; + } + if (!string.IsNullOrEmpty(name)) { + res += $"璐т綅鍚嶇О='{name}';"; + } + if (areas != null && areas.Count != 0) { + res += $"鎵�湪搴撳尯={JsonConvert.SerializeObject(areas)};"; + } + if (curNum >= 0) { + res += $"褰撳墠瀹瑰櫒鏁伴噺={curNum};"; + } + + return res; + } + + /// <summary> + /// <c>"娌℃湁鎵惧埌璧风偣璐т綅!!瑕佹眰:閿佺姸鎬�'鏃�;璐т綅鍚嶇О='name';鎵�湪搴撳尯=[areas];褰撳墠瀹瑰櫒鏁伴噺=curNum;"</c> + /// </summary> + /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> + /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> + /// <param name="curNum">褰撳墠鏁伴噺 ( 灏忎簬 0 鏃跺拷鐣�)</param> + /// <returns></returns> + public static string StartLocNotFound(string name = "", List<string> areas = null, int curNum = 1) { + return LocNotFound("璧风偣", 0, name, areas, curNum); + } + + /// <summary> + /// <c>"娌℃湁鎵惧埌璧风偣璐т綅!!瑕佹眰:閿佺姸鎬�'鏃�;璐т綅鍚嶇О='name';鎵�湪搴撳尯=[areas];褰撳墠瀹瑰櫒鏁伴噺=0;"</c> + /// </summary> + /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> + /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> + /// <returns></returns> + public static string StartLocUnbindNotFound(string name = "", List<string> areas = null) { + return LocNotFound("璧风偣", 0, name, areas, 0); + } + + /// <summary> + /// <c>"娌℃湁鎵惧埌缁堢偣璐т綅!!瑕佹眰:閿佺姸鎬�'鏃�;璐т綅鍚嶇О='name';鎵�湪搴撳尯=[areas];褰撳墠瀹瑰櫒鏁伴噺=curNum;"</c> + /// </summary> + /// <param name="name">璐т綅鍚嶇О ( 涓�null 鎴�"" 鏃跺拷鐣�)</param> + /// <param name="areas">鎵�湪搴撳尯鍒楄〃 ( 涓�null 鎴�[] 鏃跺拷鐣�)</param> + /// <param name="curNum">褰撳墠鏁伴噺 ( 灏忎簬 0 鏃跺拷鐣�)</param> + /// <returns></returns> + public static string EndLocNotFound(string name = "", List<string> areas = null, int curNum = 0) { + return LocNotFound("缁堢偣", 0, name, areas, curNum); + } + + /// <summary> + /// <c>"娌℃湁鎵惧埌[璐т綅瀹瑰櫒缁戝畾]淇℃伅!!瑕佹眰:璐т綅='loc';瀹瑰櫒='cntr';"</c> + /// </summary> + /// <remarks><b>[ 娉ㄦ剰 ]</b> 鍘熷垯涓婅嚦灏戞湁 1 涓檺鍒舵潯浠�/remarks> + /// <param name="loc"></param> + /// <param name="cntr"></param> + /// <returns></returns> + public static string LocCntrRelNotFound(string loc = "", string cntr = "") { + var res = $"娌℃湁鎵惧埌[璐т綅瀹瑰櫒缁戝畾]淇℃伅!!瑕佹眰:"; + + if (!string.IsNullOrEmpty(loc)) { + res += $"璐т綅='{loc}';"; + } + if (!string.IsNullOrEmpty(cntr)) { + res += $"瀹瑰櫒='{cntr}';"; + } + + return res; + } + + /// <summary> + /// <c>"娌℃湁鎵惧埌[瀹瑰櫒璐у搧鏄庣粏]淇℃伅!!瑕佹眰:瀹瑰櫒='cntr';鐗╂枡='item';"</c> + /// </summary> + /// <remarks><b>[ 娉ㄦ剰 ]</b> 鍘熷垯涓婅嚦灏戞湁 1 涓檺鍒舵潯浠�/remarks> + /// <param name="cntr"></param> + /// <param name="item"></param> + /// <returns></returns> + public static string CgDetailNotFound(string cntr = "", string item = "") { + var res = $"娌℃湁鎵惧埌[瀹瑰櫒璐у搧鏄庣粏]淇℃伅!!瑕佹眰:"; + + if (!string.IsNullOrEmpty(cntr)) { + res += $"瀹瑰櫒='{cntr}';"; + } + if (!string.IsNullOrEmpty(item)) { + res += $"鐗╂枡='{item}';"; + } + + return res; + } + } +} \ No newline at end of file diff --git a/wms/WMSHelper.cs b/wms/WMSHelper.cs index 471fb10..7f9bb6e 100644 --- a/wms/WMSHelper.cs +++ b/wms/WMSHelper.cs @@ -32,7 +32,7 @@ return (false, $"瀹瑰櫒'{cntrCode}'鍦╗瀹瑰櫒琛╙涓笉瀛樺湪,璇峰湪鍓嶅彴椤甸潰涓淮鎶�!"); } if (cntr.S_TYPE != cntrType) { - return (false, $"瀹瑰櫒'{cntrCode}'鍦╗瀹瑰櫒琛╙涓殑绫诲瀷涓�{cntr.S_TYPE}',涓庤緭鍏ョ殑瀹瑰櫒绫诲瀷'{cntrType}'涓嶅悓!!"); + return (false, $"瀹瑰櫒'{cntrCode}'鍦╗瀹瑰櫒琛╙涓殑绫诲瀷涓�{cntr.S_TYPE}',涓庡綋鍓嶆祦绋嬫墍闇�鍣ㄧ被鍨�{cntrType}'涓嶅悓!!"); } return (true, "妫�煡瀹瑰櫒绫诲瀷鎴愬姛!!"); } -- Gitblit v1.9.1