From f8d23dcf8d6501482db1a5180325194232afe96c Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期五, 18 七月 2025 17:30:09 +0800 Subject: [PATCH] 封装部分业务代码,继续优化日志打印流程 --- core/WCSCore.cs | 253 +++++++++++++++++++++++--------------------------- 1 files changed, 116 insertions(+), 137 deletions(-) diff --git a/core/WCSCore.cs b/core/WCSCore.cs index f0d8b90..5f1e56a 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -22,35 +22,26 @@ namespace HH.WCS.Mobox3.DSZSH.core { public class WCSCore { public static ReturnResult OperateAgvTaskStatus(AgvTaskState model) { - var result = new ReturnResult(); + const string preLog = "AGV:浠诲姟鐘舵�鍥炴姤:"; try { if (model.state > 0) { // AGV 鎵ц浠诲姟鐨勯�杈戝鐞� if (!AgvTaskProcessOk(model)) { - // 鎵ц涓峅K锛岃鏄庢病鏈夋壘鍒颁换鍔�- result.ResultCode = 1; - result.ResultMsg = $"鏍规嵁Model.No鏈壘鍒板搴旂殑浠诲姟锛寋model.task_no}"; - LogHelper.Info(result.ResultMsg, "API"); - return result; + // 鎵ц涓峅K,璇存槑娌℃湁鎵惧埌浠诲姟 + return NewReturnResult(1, preLog + $"鏍规嵁浠诲姟鍙�{model.task_no}'鏈壘鍒板搴旂殑浠诲姟!"); } } - result.ResultCode = 0; - result.ResultMsg = "success"; - LogHelper.Info(result.ResultMsg, "API"); - return result; + return NewReturnResult(0, "success"); // 涓嶈繑鍥炶缁嗘垚鍔熸棩蹇�閬垮厤NDC浠sg=success浣滀负鎴愬姛鍒ゅ畾 (鍙傝�鍥借嚜) } catch (Exception ex) { - result.ResultCode = -1; - result.ResultMsg = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; - LogHelper.Info(result.ResultMsg, "Error"); - return result; + return NewReturnResult(-1, $"鍙戠敓浜嗗紓甯�{ex.Message}\n\n{ex.StackTrace}\n"); } } /// <summary> - /// 鎵ц AGV 浠诲姟锛屾煡璇笉鍒颁换鍔¤繑鍥�<see langword="false"/> + /// 鎵ц AGV 浠诲姟,鏌ヨ涓嶅埌浠诲姟杩斿洖 <see langword="false"/> /// </summary> /// <param name="model"></param> /// <returns></returns> @@ -76,7 +67,7 @@ WCSHelper.UpdateStatus(TN_Task, "鍙栬揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍙栬揣瀹屾垚 TaskProcess.OperateStatus(TN_Task, 4); // 璧风偣瀹瑰櫒璐т綅瑙g粦,瑙i攣璧风偣 - if (TN_Task.S_TYPE == TaskName.C鎴愬搧鑳跺嚭搴� { + if (TN_Task.S_TYPE == ETask.C鎴愬搧鑳跺嚭搴�Name()) { var nextOutboundTask = Task.Run(() => { UpdateOutboundTaskState(3); }); @@ -113,9 +104,9 @@ break; } - // 灏咥GV鎵ц鐘舵�锛屽姞鍏N_Task_Action琛ㄤ腑 + // 灏咥GV鎵ц鐘舵�,鍔犲叆TN_Task_Action琛ㄤ腑 WCSHelper.AddActionRecord(model.task_no, model.state, model.forklift_no, model.ext_data); - //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus锛屾坊鍔犱换鍔″姩浣滃叧绯昏〃 + //璋冪敤绗笁鏂规帴鍙�(濡傛灉鏈� TaskProcess.ReportStatus,娣诲姞浠诲姟鍔ㄤ綔鍏崇郴琛� return true; } @@ -125,19 +116,19 @@ var info = ""; try { - var cgDetail = new TN_CG_Detail(); // 濡傛灉娌℃湁淇℃伅锛岄粯璁ゅ氨鏄┖鍊硷紝鍙互鐩存帴濉叆锛屼笉闇�鍒ゆ柇 + var cgDetail = new TN_CG_Detail(); // 濡傛灉娌℃湁淇℃伅,榛樿灏辨槸绌哄�,鍙互鐩存帴濉叆,涓嶉渶瑕佸垽鏂� //var emptyTask = false; // 绌烘墭/绌虹浠诲姟 - if (task.S_TYPE != TaskName.H濂借繍绠盻绌虹涓婄嚎 && task.S_TYPE != TaskName.H濂借繍绠盻绌虹鍏ュ簱 && - task.S_TYPE != TaskName.T鎵樼洏_绌烘墭涓婄嚎 && task.S_TYPE != TaskName.T鎵樼洏_绌烘墭鍏ュ簱) { - // 闈炵┖鎵�绌虹浠诲姟锛堢┖鎵�绌虹浠诲姟鏃犳硶鍦–GDetail鏌ュ埌鐗╂枡淇℃伅锛�+ if (task.S_TYPE != ETask.K绌烘墭涓婄嚎鍑哄簱.Name() && task.S_TYPE != ETask.K绌烘墭鍏ュ簱.Name() && + task.S_TYPE != ETask.K绌虹涓婄嚎鍑哄簱.Name() && task.S_TYPE != ETask.K绌虹鍏ュ簱.Name()) { + // 闈炵┖鎵�绌虹浠诲姟 (绌烘墭/绌虹浠诲姟鏃犳硶鍦–GDetail鏌ュ埌鐗╂枡淇℃伅) //emptyTask= true; cgDetail = db.Queryable<TN_CG_Detail>() .Where(d => d.S_CNTR_CODE == task.S_CNTR_CODE) .First(); if (cgDetail == null) { - info = $"浠诲姟{task.S_CODE}瀹屾垚锛岃褰曞嚭鍏ュ簱瀛樺湪闂锛氭棤娉曞湪瀹瑰櫒璐у搧鏄庣粏琛ㄤ腑鎵惧埌鎵樼洏{task.S_CNTR_CODE}瀵瑰簲鐨勭墿鏂�; + info = $"浠诲姟{task.S_CODE}瀹屾垚,璁板綍鍑哄叆搴撳瓨鍦ㄩ棶棰�鏃犳硶鍦ㄥ鍣ㄨ揣鍝佹槑缁嗚〃涓壘鍒版墭鐩榹task.S_CNTR_CODE}瀵瑰簲鐨勭墿鏂�; LogHelper.Info(info); //return; cgDetail = new TN_CG_Detail() ; @@ -145,10 +136,10 @@ } } - var isInbound = false; // 鍏ュ簱绫诲瀷鐨勪换鍔★紙鍖呮嫭绉诲簱绫讳换鍔★級 + var isInbound = false; // 鍏ュ簱绫诲瀷鐨勪换鍔�(鍖呮嫭绉诲簱绫讳换鍔� var inboundTasks = new List<string> { - TaskName.H濂借繍绠盻婊$涓嬬嚎鍏ュ簱, TaskName.H濂借繍绠盻绌虹鍏ュ簱, TaskName.T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱, TaskName.T鎵樼洏_绌烘墭鍏ュ簱, - TaskName.C鎶芥_鍚堟牸鍥炲簱, TaskName.C鎶芥_涓嶅悎鏍肩Щ搴� TaskName.Y绉诲簱 + ETask.M婊℃墭涓嬬嚎鍏ュ簱.Name(), ETask.M婊$涓嬬嚎鍏ュ簱.Name(), ETask.K绌烘墭鍏ュ簱.Name(), ETask.K绌虹鍏ュ簱.Name(), + ETask.C鎶芥鍚堟牸鍥炲簱.Name(), ETask.C鎶芥涓嶅悎鏍肩Щ搴�Name(), ETask.Y绉诲簱.Name() }; if (inboundTasks.Contains(task.S_TYPE)) { isInbound= true; @@ -168,7 +159,7 @@ S_ITEM_CODE = cgDetail.S_ITEM_CODE, S_BATCH_NO = cgDetail.S_BATCH_NO, S_ITEM_NAME = cgDetail.S_ITEM_NAME, - S_LOC_CODE = isInbound ? task.S_END_LOC : task.S_START_LOC, // 鍏ュ簱璁板綍缁堢偣璐т綅锛屽嚭搴撹褰曡捣鐐硅揣浣�+ S_LOC_CODE = isInbound ? task.S_END_LOC : task.S_START_LOC, // 鍏ュ簱璁板綍缁堢偣璐т綅,鍑哄簱璁板綍璧风偣璐т綅 S_CNTR_CODE = task.S_CNTR_CODE, S_ITEM_SPEC = cgDetail.S_ITEM_SPEC, S_NET_WEIGHT = cgDetail.S_NET_WEIGHT, @@ -177,14 +168,14 @@ S_TASK_NO = task.S_CODE, T_RECORD_TIME = DateTime.Now, S_TYPE = task.S_TYPE, - S_BS_CODE = task.S_BS_NO, // ERP鍗曞彿锛岄粯璁や负绌�+ S_BS_CODE = task.S_BS_NO, // ERP鍗曞彿,榛樿涓虹┖ N_QTY = cgDetail.N_ITEM_NUM, S_NO = task.S_OP_CODE, // 鍑哄簱/鎶芥/绉诲簱鍗� }; // 鏁版嵁搴撴搷浣�- if (db.Insertable<TN_Record_Table>(record).ExecuteCommand() <= 0) { - info = "鎻掑叆鍑哄叆搴撹褰曡〃澶辫触锛� + JsonConvert.SerializeObject(record); + if (db.Insertable(record).ExecuteCommand() <= 0) { + info = "鎻掑叆鍑哄叆搴撹褰曡〃澶辫触:" + JsonConvert.SerializeObject(record); LogHelper.Info(info); return; } @@ -204,28 +195,28 @@ /// <returns></returns> public static ReturnResult SafetyInteraction(SafetyInteractionInfo model) { var db = new SqlHelper<object>().GetInstance(); - var info = ""; + const string preLog = "AGV:浜х嚎瀹夊叏浜や簰:"; try { ModbusHelper.Relink(); - //var loc = db.Queryable<TN_Location>() - // .Where(l => l.S_AGV_SITE == model.station_name && Settings.AreaMap[AreaName.鍖呰鍖篯.Contains(l.S_AREA_CODE)) - // .First(); + var BZQ = Settings.GetTaskInfo(ETask.M婊℃墭涓嬬嚎鍏ュ簱).StartAreas; + var loc = db.Queryable<TN_Location>() + .Where(l => BZQ.Contains(l.S_AREA_CODE) && l.S_AGV_SITE == model.station_name).First(); - if (!Settings.AgvSite_ProdLineCodeMap.TryGetValue(model.station_name, out int prodIndex)) { - info = $"AGV 绔欑偣{model.station_name}涓嶆槸鍚堟硶鐨勪骇绾挎帴椹充綅绔欑偣"; - LogHelper.Info(info); - return NewReturnResult(1, info); + if (loc == null) { + return NewReturnResult(1, preLog + $"AGV 绔欑偣{model.station_name}涓嶆槸鍚堟硶鐨勪骇绾挎帴椹充綅绔欑偣"); + } + + if (!Settings.LocProdIdMap.TryGetValue(loc.S_CODE, out var prodIndex)) { + return NewReturnResult(1, preLog + $"AGV 绔欑偣{model.station_name}涓嶆槸鍚堟硶鐨勪骇绾挎帴椹充綅绔欑偣"); } var prodLineInfo = Settings.ProductionLines[prodIndex]; var prodLineDevice = new ProductionLineDevice(prodLineInfo); if (!prodLineDevice.LoadDeviceStateOk()) { - info = "涓庝骇绾胯澶囬�璁け璐�; - LogHelper.Info(info); - return NewReturnResult(2, info); + return NewReturnResult(2, preLog + "涓庝骇绾胯澶囬�璁け璐�); } //var tn_task = db.Queryable<TN_Task>().First(a => a.S_CODE == model.task_no); @@ -242,92 +233,76 @@ //} if (prodLineDevice.SystemState != 1) { - info = $"褰撳墠浜х嚎鏃犳硶涓嶢GV鑱斿姩锛氱姸鎬亄prodLineDevice.SystemState}"; - LogHelper.Info(info); - return NewReturnResult(3, info); + return NewReturnResult(3, preLog + $"褰撳墠浜х嚎鏃犳硶涓嶢GV鑱斿姩:鐘舵�{prodLineDevice.SystemState}"); } - if (model.apply_code == "5") { // 璇锋眰鍙栬揣 + // 璇锋眰鍙栬揣 + if (model.apply_code == "5") { if (prodLineDevice.FullOffline != 1) { - info = $"褰撳墠杈撻�绾挎弧鏂欎笅绾夸俊鍙蜂笉涓�锛屾棤娉曞彇璐�; - LogHelper.Info(info); - return NewReturnResult(4, info); + return NewReturnResult(4, preLog + $"褰撳墠杈撻�绾挎弧鏂欎笅绾夸俊鍙蜂笉涓�,鏃犳硶鍙栬揣"); } if (!prodLineDevice.SetAgvPicking(1)) { - info = $"鍚戣緭閫佺嚎鍐欏叆鍏佽鍙栬揣淇″彿澶辫触"; - LogHelper.Info(info); - return NewReturnResult(5, info); + return NewReturnResult(5, preLog + $"鍚戣緭閫佺嚎鍐欏叆鍏佽鍙栬揣淇″彿澶辫触"); } - info = $"鍚戣緭閫佺嚎鍐欏叆鍏佽鍙栬揣淇″彿鎴愬姛"; - LogHelper.Info(info); - return NewReturnResult(0, info); + return NewReturnResult(0, preLog + $"鍚戣緭閫佺嚎鍐欏叆鍏佽鍙栬揣淇″彿鎴愬姛"); } - else if (model.apply_code == "1") { // 璇锋眰鍗歌揣 + // 璇锋眰鍗歌揣 + else if (model.apply_code == "1") { if (prodLineDevice.AllowAgvPlacePallet != 1) { - info = $"褰撳墠杈撻�绾垮厑璁告斁鎵樼洏淇″彿涓嶄负1锛屾棤娉曟斁璐�; - LogHelper.Info(info); - return NewReturnResult(6, info); + return NewReturnResult(6, preLog + $"褰撳墠杈撻�绾垮厑璁告斁鎵樼洏淇″彿涓嶄负1,鏃犳硶鏀捐揣"); } if (!prodLineDevice.SetAgvPlacingPallet(1)) { - info = $"鍚戣緭閫佺嚎鍐欏叆鍏佽鏀捐揣淇″彿澶辫触"; - LogHelper.Info(info); - return NewReturnResult(7, info); + return NewReturnResult(7, preLog + $"鍚戣緭閫佺嚎鍐欏叆鍏佽鏀捐揣淇″彿澶辫触"); } - info = $"鍚戣緭閫佺嚎鍐欏叆鍏佽鏀捐揣淇″彿鎴愬姛"; - LogHelper.Info(info); - return NewReturnResult(0, info); + return NewReturnResult(0, preLog + $"鍚戣緭閫佺嚎鍐欏叆鍏佽鏀捐揣淇″彿鎴愬姛"); } else { - info = $"褰撳墠AGV璇锋眰鐮佷笉涓�5鍙栬揣 鎴�1鍗歌揣"; - LogHelper.Info(info); - return NewReturnResult(8, info); + return NewReturnResult(8, preLog + $"褰撳墠AGV璇锋眰鐮佷笉涓�5鍙栬揣 鎴�1鍗歌揣"); } } catch (Exception ex) { - info = $"鍙戠敓浜嗗紓甯革細{ex.Message}"; - LogHelper.InfoEx(ex); - return NewReturnResult(1, info); + return NewReturnResult(1, preLog + $"鍙戠敓浜嗗紓甯�{ex.Message}\n\n{ex.StackTrace}\n"); } } public static void UpdateOutboundTaskState(int spotStateCode) { - var taskName = TaskName.C鎴愬搧鑳跺嚭搴� + var taskName = ETask.C鎴愬搧鑳跺嚭搴�Name(); var db = new SqlHelper<object>().GetInstance(); var detail = db.Queryable<TN_Outbound_Detail>() .First(d => d.N_B_STATE == 2); if (detail == null) { - LogHelper.Info($"{taskName}锛欰GV鍙栬揣锛氭煡璇㈡槑缁嗗崟锛氬綋鍓嶆病鏈夋墽琛屼腑鐨勬槑缁嗗崟"); + LogHelper.Info($"{taskName}:AGV鍙栬揣:鏌ヨ鏄庣粏鍗�褰撳墠娌℃湁鎵ц涓殑鏄庣粏鍗�); return; } using (var tran = db.Ado.UseTran()) { detail.N_B_STATE = spotStateCode; - if (db.Updateable<TN_Outbound_Detail>(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { + if (db.Updateable(detail).UpdateColumns(it => it.N_B_STATE).ExecuteCommand() <= 0) { tran.RollbackTran(); - LogHelper.Info($"{taskName}锛欰GV鍙栬揣锛氫慨鏀规槑缁嗗崟鐘舵�涓恒�3浠诲姟鎵ц瀹屾垚銆戝け璐ワ紒"); + LogHelper.Info($"{taskName}:AGV鍙栬揣:淇敼鏄庣粏鍗曠姸鎬佷负銆�浠诲姟鎵ц瀹屾垚銆戝け璐�"); return; } var finishedCount = db.Queryable<TN_Outbound_Detail>().Count(d => d.S_OO_NO == detail.S_OO_NO && d.N_B_STATE == 3); var allCount = db.Queryable<TN_Outbound_Detail>().Count(d => d.S_OO_NO == detail.S_OO_NO); - LogHelper.Info($"{taskName}锛欰GV鍙栬揣锛氱粺璁′换鍔″凡瀹屾垚锛歿finishedCount}/{allCount}"); + LogHelper.Info($"{taskName}:AGV鍙栬揣:缁熻浠诲姟宸插畬鎴�{finishedCount}/{allCount}"); - if (finishedCount == allCount) { // 褰撳墠鍑哄簱鍗曚笅鐨勬墍鏈夋槑缁嗗崟锛屼换鍔¢兘宸茬粡瀹屾垚 + if (finishedCount == allCount) { // 褰撳墠鍑哄簱鍗曚笅鐨勬墍鏈夋槑缁嗗崟,浠诲姟閮藉凡缁忓畬鎴� if (db.Updateable<TN_Outbound_Order>().SetColumns(it => it.N_B_STATE == 3) .Where(it => it.S_NO == detail.S_OO_NO) .ExecuteCommand() <= 0) { tran.RollbackTran(); - LogHelper.Info($"{taskName}锛欰GV鍙栬揣锛氭墍鏈変换鍔″畬鎴愭椂锛氫慨鏀瑰崟鎹姸鎬佷负3浠诲姟鎵ц瀹屾垚--澶辫触锛�); + LogHelper.Info($"{taskName}:AGV鍙栬揣:鎵�湁浠诲姟瀹屾垚鏃�淇敼鍗曟嵁鐘舵�涓�浠诲姟鎵ц瀹屾垚--澶辫触!"); return; } } @@ -347,7 +322,7 @@ .First(); if (plan == null) { - info = $"璁″垝鍗曞彿{task.S_BS_NO}涓嶅瓨鍦紒"; + info = $"璁″垝鍗曞彿{task.S_BS_NO}涓嶅瓨鍦�"; LogHelper.Info(info); } @@ -356,13 +331,13 @@ .First(); if (cgDetail == null) { - info = $"鐗╂枡缂栫爜涓嶅瓨鍦紒"; + info = $"鐗╂枡缂栫爜涓嶅瓨鍦�"; LogHelper.Info(info); } var model = new OtherModel.PickUpReturnErpInfo { - jhdh = plan.JHDH, // 璁″垝鍗曞彿锛堝敮涓�爣璇嗭級 - ckzt = plan.CKZT, // 鍑哄簱鐘舵�锛堥渶瑕佽繑鍥烇級 + jhdh = plan.JHDH, // 璁″垝鍗曞彿 (鍞竴鏍囪瘑) + ckzt = plan.CKZT, // 鍑哄簱鐘舵� (闇�杩斿洖) jhlb = plan.JHLB, // 璁″垝绫诲埆 ckdh = plan.CKDH, // 鍙傝�鍗曞彿 cph = plan.CPH, // 杞︾墝鍙�@@ -373,9 +348,9 @@ cplb = plan.CPLB, // 浜у搧绫诲埆 cplbmx = plan.CPLBMX, // 浜у搧绫诲埆鏄庣粏 pp = plan.PP, // 鍝佺墝 - dj = plan.DJ, // 绛夌骇锛堥渶瑕佽繑鍥烇級 + dj = plan.DJ, // 绛夌骇 (闇�杩斿洖) gh = plan.GH, // 缃愬彿 - ph = plan.PH, // 鎵瑰彿锛堥渶瑕佽繑鍥烇級 + ph = plan.PH, // 鎵瑰彿 (闇�杩斿洖) bzlx = plan.BZLX, // 鍖呰绫诲瀷 pzdh = plan.PZDH, // 娲捐鍗曞彿 pzd_dw = plan.PZD_DW, // 娲捐鍗曞崟浣�@@ -388,15 +363,15 @@ pz_zfrq = plan.PZ_ZFRQ, // 娲捐浣滃簾鏃ユ湡 pz_bz = plan.PZ_BZ, // 娲捐澶囨敞 ckdbh = plan.CKDBH, // 鍑哄簱鍗曠紪鍙�- sfjs = plan.SFJS, // 瀹炲彂浠舵暟锛堥渶瑕佽繑鍥烇級--鏇存柊 - sfsl = plan.SFSL, // 瀹炲彂鏁伴噺锛堥渶瑕佽繑鍥烇級--鏇存柊 - //sfcs = plan.SFCS , // 瀹炲彂杞︽暟锛堥渶瑕佽繑鍥烇級 - //zcsj = plan.ZCSJ , // 瑁呰溅鏃堕棿锛堥渶瑕佽繑鍥烇級 - //jldw = plan.JLDW , // 璁¢噺鍗曚綅锛堥渶瑕佽繑鍥烇級 - //fhrq = plan.FHRQ , // 鍙戣揣鏃ユ湡锛堥渶瑕佽繑鍥烇級 - //ckdm = plan.CKDM , // 浠撳簱浠g爜锛堥渶瑕佽繑鍥烇級 - //fhr = plan.FHR , // 鍙戣揣浜猴紙闇�杩斿洖锛�- //czydm = plan.CZYDM , // 鎿嶄綔鍛橈紙闇�杩斿洖锛�+ sfjs = plan.SFJS, // 瀹炲彂浠舵暟 (闇�杩斿洖) --鏇存柊 + sfsl = plan.SFSL, // 瀹炲彂鏁伴噺 (闇�杩斿洖) --鏇存柊 + //sfcs = plan.SFCS , // 瀹炲彂杞︽暟 (闇�杩斿洖) + //zcsj = plan.ZCSJ , // 瑁呰溅鏃堕棿 (闇�杩斿洖) + //jldw = plan.JLDW , // 璁¢噺鍗曚綅 (闇�杩斿洖) + //fhrq = plan.FHRQ , // 鍙戣揣鏃ユ湡 (闇�杩斿洖) + //ckdm = plan.CKDM , // 浠撳簱浠g爜 (闇�杩斿洖) + //fhr = plan.FHR , // 鍙戣揣浜�(闇�杩斿洖) + //czydm = plan.CZYDM , // 鎿嶄綔鍛�(闇�杩斿洖) shr_username = plan.SHR_USERNAME, // 瀹℃牳浜� shrq = plan.SHRQ, // 瀹℃牳鏃ユ湡 zfbj = plan.ZFBJ, // 浣滃簾鏍囪 @@ -405,28 +380,28 @@ shdw = plan.SHDW, // 鏀惰揣鍗曚綅 ysdw = plan.YSDW, // 杩愯緭鍗曚綅 lxr = plan.LXR, // 鑱旂郴浜�- //ry_zxg = plan.RY_ZXG , // 瑁呭嵏宸ワ紙闇�杩斿洖锛�- //ry_ccsj = plan.RY_CCSJ , // 鍙夎溅鍙告満锛堥渶瑕佽繑鍥烇級 + //ry_zxg = plan.RY_ZXG , // 瑁呭嵏宸�(闇�杩斿洖) + //ry_ccsj = plan.RY_CCSJ , // 鍙夎溅鍙告満 (闇�杩斿洖) erphx_jhdh = plan.ERPHX_JHDH, // erp浜よ揣鍗曞彿 erphx_wlbm = plan.ERPHX_WLBM, // erp鐗╂枡缂栫爜 erphx_wlmc = plan.ERPHX_WLMC, // erp鐗╂枡鍚嶇О erphx_cjrq = plan.ERPHX_CJRQ, // erp鍒涘缓鏃ユ湡 - hw = plan.HW, // 璐т綅锛堥渶瑕佽繑鍥烇級 - hwzt = plan.HWZT // 璐т綅鐘舵�锛堥渶瑕佽繑鍥烇級 + hw = plan.HW, // 璐т綅 (闇�杩斿洖) + hwzt = plan.HWZT // 璐т綅鐘舵� (闇�杩斿洖) }; model.sfjs = cgDetail.N_ITEM_NUM; model.sfsl = (decimal) cgDetail.F_QTY; // TEMP model.hwzt = "宸插嚭搴�; var jsonInfo = JsonConvert.SerializeObject(model); - var result = httpH.WebPost(Settings.ErpApiUrl + "PickUpReturn", jsonInfo); + var result = httpH.WebPost(Settings.ErpApiUrl + Settings.ErpRoute.PickUpReturn, jsonInfo); - LogHelper.InfoApi($"鍙栬揣瀹屾垚鍙嶉ERP鎺ュ彛锛岀粨鏋�{result}锛岃皟鐢ㄥ弬鏁帮細", model); + LogHelper.InfoApi($"鍙栬揣瀹屾垚鍙嶉ERP鎺ュ彛,缁撴灉={result},璋冪敤鍙傛暟:", model); plan.SFJS = model.sfjs; plan.SFSL = model.sfsl; plan.HWZT = model.hwzt; - var success = db.Updateable<TN_Outbound_Plan>(plan).UpdateColumns(p => new { p.SFJS, p.SFSL, p.HWZT }).ExecuteCommand() > 0; + var success = db.Updateable(plan).UpdateColumns(p => new { p.SFJS, p.SFSL, p.HWZT }).ExecuteCommand() > 0; info = "鏇存柊鍑哄簱璁″垝鍗曡褰曡〃" + (success ? "鎴愬姛" : "澶辫触"); LogHelper.Info(info); } @@ -436,14 +411,13 @@ } /// <summary> - /// 浠诲姟鍒嗗彂锛屾牴鎹皟搴︾被鍨嬪彂缁欎笉鍚岀殑璋冨害绯荤粺 + /// 浠诲姟鍒嗗彂,鏍规嵁璋冨害绫诲瀷鍙戠粰涓嶅悓鐨勮皟搴︾郴缁� /// </summary> internal static void Dispatch() { - //鏌ヨ浠诲姟 //鑾峰彇鎵�湁绛夊緟鐨勪换鍔� var list = WCSHelper.GetWaitingTaskList(); - LogHelper.Info("绛夊緟浠诲姟淇℃伅" + JsonConvert.SerializeObject(list), "API"); if (list.Count > 0) { + LogHelper.Info($"杞:浠诲姟鍒嗗彂:绛夊緟浠诲姟淇℃伅\n\n{JsonConvert.SerializeObject(list)}\n"); list.ForEach(task => { //浣跨敤鑷畾涔変换鍔℃帹閫� //TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧 @@ -451,17 +425,17 @@ }); } else { - LogHelper.Info("鏆傛棤浠诲姟"); + LogHelper.Debug("杞:浠诲姟鍒嗗彂:鏆傛棤浠诲姟"); } } // TCP 闈炶疆璇㈡柟寮�妯℃嫙浜х嚎涓嬬嚎鐨勫皾璇� public static void StartServer() { - var ListenPort = 6000; + var ListenPort = Settings.TcpServerPort; TcpListener listener = new TcpListener(IPAddress.Any, ListenPort); listener.Start(); - Console.WriteLine($"鍚庡彴鏈嶅姟宸插惎鍔紝鐩戝惉绔彛 {ListenPort}..."); + Console.WriteLine($"鍚庡彴鏈嶅姟宸插惎鍔�鐩戝惉绔彛 {ListenPort}..."); while (true) { try { @@ -469,7 +443,7 @@ System.Net.Sockets.TcpClient client = listener.AcceptTcpClient(); Console.WriteLine($"浜х嚎瀹㈡埛绔凡杩炴帴: {client.Client.RemoteEndPoint}"); - // 澶勭悊瀹㈡埛绔姹傦紙浣跨敤Task閬垮厤闃诲涓荤嚎绋嬶級 + // 澶勭悊瀹㈡埛绔姹�(浣跨敤Task閬垮厤闃诲涓荤嚎绋� Task.Run(() => HandleClientRequest(client)); } catch (Exception ex) { @@ -490,15 +464,15 @@ // 瑙f瀽娑堟伅 var message = JsonConvert.DeserializeObject<ProductCompletedMessage>(jsonMessage); - //Console.WriteLine($"鏀跺埌浜у搧瀹屾垚閫氱煡 - 鐗╂枡锛歿message.ItemCode}锛涙壒娆″彿锛歿message.BatchNo}锛涘鍣ㄥ彿锛歿message.CntrCode}"); - LogHelper.Info($"鏀跺埌浜у搧涓嬬嚎閫氱煡锛�+message); + //Console.WriteLine($"鏀跺埌浜у搧瀹屾垚閫氱煡 - 鐗╂枡:{message.ItemCode};鎵规鍙�{message.BatchNo};瀹瑰櫒鍙�{message.CntrCode}"); + LogHelper.Info($"鏀跺埌浜у搧涓嬬嚎閫氱煡:"+message); string startLocCode = ""; - // A. 濡傛灉鏄崟涓骇绾縋LC锛岄�杩嘥CP浼犳挱锛岄渶瑕佷紶閫掍骇绾縄D锛屾牴鎹甀D璁$畻璧风偣璐т綅 - //startLocCode = Settings.ProductionLines[message.Id].OffLoc[0]; // 鐞嗚涓婂簲璇ュ彧鏈�涓狾ffLoc锛屽惁鍒欏簲璇ユ敞鏄庢槸鍝竴涓�+ // A. 濡傛灉鏄崟涓骇绾縋LC,閫氳繃TCP浼犳挱,闇�浼犻�浜х嚎ID,鏍规嵁ID璁$畻璧风偣璐т綅 + //startLocCode = Settings.ProductionLines[message.Id].OffLoc[0]; // 鐞嗚涓婂簲璇ュ彧鏈�涓狾ffLoc,鍚﹀垯搴旇娉ㄦ槑鏄摢涓�釜 - // B. 濡傛灉鏄瘡鏉′骇绾垮悇涓�釜瀹㈡埛绔紝鏇寸畝鍗曪紝鐩存帴鏍规嵁IP鍦板潃纭畾缁堢偣璐т綅 + // B. 濡傛灉鏄瘡鏉′骇绾垮悇涓�釜瀹㈡埛绔�鏇寸畝鍗�鐩存帴鏍规嵁IP鍦板潃纭畾缁堢偣璐т綅 // TODO 鍏蜂綋閫昏緫寰呭悗缁‘瀹氭椂琛ュ畬 var success = CreateInboundTask(startLocCode, message.CntrCode).Value; @@ -515,7 +489,7 @@ } /// <summary> - /// 鍏ュ簱浣滀笟鍒涘缓鍙帴鏀惰捣鐐硅揣浣嶅拰瀹瑰櫒鍙凤紙鐗╂枡淇℃伅寰呭畾銆侀�杩囦骇绾垮彿璁$畻璧风偣鐨勯�杈戞斁鍦ㄦ柟娉曞锛�+ /// 鍏ュ簱浣滀笟鍒涘缓鍙帴鏀惰捣鐐硅揣浣嶅拰瀹瑰櫒鍙�(鐗╂枡淇℃伅寰呭畾,閫氳繃浜х嚎鍙疯绠楄捣鐐圭殑閫昏緫鏀惧湪鏂规硶澶� /// </summary> /// <param name="startLocCode"></param> /// <param name="cntrCode"></param> @@ -524,21 +498,22 @@ var db = new SqlHelper<object>().GetInstance(); var info = ""; - const string taskName = TaskName.T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱; - const string startAreaName = AreaName.B鍖呰鍖� - const string endAreaName = AreaName.M婊℃墭璐ф灦鍖� + var taskInfo = Settings.GetTaskInfo(ETask.M婊℃墭涓嬬嚎鍏ュ簱); + var taskName = taskInfo.TaskName; + var startAreas = taskInfo.StartAreas; + var endAreas = taskInfo.EndAreas; const string cntrType = "鎵樼洏"; try { var startLoc = db.Queryable<TN_Location>() .Where(l => l.S_CODE == startLocCode) - .Where(l => Settings.AreaMap[startAreaName].Contains(l.S_AREA_CODE)) + .Where(l => startAreas.Contains(l.S_AREA_CODE)) .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") //.Where(l => l.N_CURRENT_NUM == 0) // 缁戝畾鍓� .First(); if (startLoc == null) { - info = $"鍦�{startAreaName}'涓病鏈夋壘鍒拌捣鐐硅揣浣�{startLocCode}'锛屾垨涓嶆弧瓒宠姹傦細鏈笂閿併�褰撳墠瀹瑰櫒鏁伴噺=0"; + info = $"娌℃湁鎵惧埌璧风偣璐т綅'{startLocCode}',鎴栦笉婊¤冻瑕佹眰:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0"; LogHelper.Info(info); return new Result<bool>(false, info); } @@ -556,14 +531,14 @@ startLoc.N_CURRENT_NUM = 1; // 缁戝畾鍚� var endLoc = db.Queryable<TN_Location>() - .Where(a => Settings.AreaMap[endAreaName].Contains(a.S_AREA_CODE)) - .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 - .Where(a => a.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅 + .Where(a => endAreas.Contains(a.S_AREA_CODE)) + .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�:鏈笂閿�+ .Where(a => a.N_CURRENT_NUM == 0) // 绛涢�:绌鸿揣浣� .OrderBy(l => l.N_LAYER) .First(); if (endLoc == null) { - info = $"鍦ㄧ粓鐐硅揣鍖�{endAreaName}'涓紝娌℃湁鎵惧埌鍚堥�鐨勩�缁堢偣璐т綅銆戯紝闇�婊¤冻瑕佹眰锛氭湭涓婇攣銆佸綋鍓嶅鍣ㄦ暟閲�0"; + info = $"娌℃湁鎵惧埌鍚堥�鐨勩�缁堢偣璐т綅銆�闇�婊¤冻瑕佹眰:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0"; LogHelper.Info(info); return new Result<bool>(false, info); } @@ -571,71 +546,75 @@ var cntId = locCntrRel.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�- LocationHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿�+ WCSHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�+ WCSHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { if (locCntrRelOld != null) { - if (db.Deleteable<TN_Loc_Container>(locCntrRelOld).ExecuteCommand() <= 0 && + if (db.Deleteable(locCntrRelOld).ExecuteCommand() <= 0 && db.Updateable<TN_Location>().SetColumns(l => l.N_CURRENT_NUM == 0).Where(l => l.S_CODE == locCntrRelOld.S_LOC_CODE).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鍒犻櫎鏃ц揣浣嶅鍣ㄥ叧绯昏〃澶辫触锛氳揣浣嶇紪鐮亄locCntrRelOld.S_LOC_CODE}锛屽鍣ㄧ紪鐮亄locCntrRelOld.S_CNTR_CODE}"; + info = $"鍒犻櫎鏃ц揣浣嶅鍣ㄥ叧绯昏〃澶辫触:璐т綅缂栫爜{locCntrRelOld.S_LOC_CODE},瀹瑰櫒缂栫爜{locCntrRelOld.S_CNTR_CODE}"; LogHelper.Info(info); return new Result<bool>(false, info); } } - if (db.Insertable<TN_Loc_Container>(locCntrRel).ExecuteCommand() <= 0) { + if (db.Insertable(locCntrRel).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐ワ細璐т綅缂栫爜{locCntrRel.S_LOC_CODE}锛屽鍣ㄧ紪鐮亄locCntrRel.S_CNTR_CODE}"; + info = $"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄥけ璐�璐т綅缂栫爜{locCntrRel.S_LOC_CODE},瀹瑰櫒缂栫爜{locCntrRel.S_CNTR_CODE}"; LogHelper.Info(info); return new Result<bool>(false, info); } - if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { + 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, // 璧风偣璐т綅缁戝畾鍚庯紝灏嗚揣浣嶇姸鎬佹洿鏂�+ it.N_CURRENT_NUM, // 璧风偣璐т綅缁戝畾鍚�灏嗚揣浣嶇姸鎬佹洿鏂� }).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊璧风偣璐т綅{startLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); return new Result<bool>(false, info); } - if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { + 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(); - info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊缁堢偣璐т綅{endLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); return new Result<bool>(false, info); } - if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { + if (db.Insertable(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"; LogHelper.Info(info); return new Result<bool>(false, info); } tran.CommitTran(); - info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屼换鍔″彿={task.S_CODE}锛屽鍣ㄥ彿={cntId}锛岃捣鐐�{startLoc.S_CODE}锛岀粓鐐�{endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"; LogHelper.Info(info); return new Result<bool>(true, info); } } catch (Exception ex) { - LogHelper.InfoEx(ex); - return new Result<bool>(false, ex.Message); + return NewResult(false, ex.Message); } } + private static Result<bool> NewResult(bool res, string msg, bool log = true) { + if (log) { LogHelper.Info(msg); } + return new Result<bool>(res, msg); + } + } public class ProductCompletedMessage { -- Gitblit v1.9.1