From f8d23dcf8d6501482db1a5180325194232afe96c Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期五, 18 七月 2025 17:30:09 +0800 Subject: [PATCH] 封装部分业务代码,继续优化日志打印流程 --- core/Monitor.cs | 430 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 268 insertions(+), 162 deletions(-) diff --git a/core/Monitor.cs b/core/Monitor.cs index 728acbe..65bcc53 100644 --- a/core/Monitor.cs +++ b/core/Monitor.cs @@ -4,37 +4,64 @@ using System.Text; using System.Threading.Tasks; +using HH.WCS.Mobox3.DSZSH.api; +using HH.WCS.Mobox3.DSZSH.device; using HH.WCS.Mobox3.DSZSH.models; using HH.WCS.Mobox3.DSZSH.util; using HH.WCS.Mobox3.DSZSH.wms; + using Newtonsoft.Json; namespace HH.WCS.Mobox3.DSZSH.core { public class Monitor { - public static void CheckInbound() { - var taskName = TaskName.鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱; + public class ItemData { + public string item_code { get; set; } + public string batch_no { get; set;} + public string cntr_code { get; set; } + } + + public static void CheckInbound() { var db = new SqlHelper<object>().GetInstance(); var info = ""; + try { // 鏌ヤ骇绾挎槸鍚︽湁鐗╂枡淇℃伅 + foreach (var prod in Settings.ProductionLines) { + if (int.Parse(prod.Id) > 1) break; // TEST - var itemCode = ""; - var batchNo = ""; - var cntrCode = ""; - var startLocCode = ""; + //var prodDevice = new ProductionLineDevice(prod); // TODO 寰呴渶姹傜‘瀹氬悗鍐嶅鐞�+ //TcpClientHelper.Link("127.0.0.1", 8550); // 鐢ㄤ簬娴嬭瘯 + TcpClientHelper.Link(prod.PlcIp, prod.PlcPort); - var cgDetail = new TN_CG_Detail { - S_ITEM_CODE = itemCode, - S_BATCH_NO = batchNo, - S_CNTR_CODE = cntrCode, - }; + // TCPClient浼犻�淇℃伅鐨勬椂鍊�涓嶈鐢ㄦ柇鐐归樆濉炵▼搴�+ // {"item_code":"CG1001","batch_no":"BN1001","cntr_code":"CN2505111"} + if (!TcpClientHelper.TryReadProductionLine(out byte[] read)) { + info = $"娴嬭瘯{prod.Id}鍙蜂骇绾縶prod.PlcIp}:{prod.PlcPort}:璇诲彇浜х嚎淇℃伅澶辫触"; + LogHelper.Info(info); + continue; + } - var startLoc = db.Queryable<TN_Location>() - .Where(l => l.S_CODE == startLocCode) // 鎸囧畾锛氳捣鐐硅揣浣嶅彿 - .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 - .First(); + // 3. 灏嗗瘎瀛樺櫒鍊艰浆鎹负瀛楄妭鏁扮粍 + //byte[] bytes = TcpClientHelper.ConvertRegistersToBytes(registers); - + // 4. 灏嗗瓧鑺傛暟缁勮浆鎹负瀛楃涓�+ string result = TcpClientHelper.ConvertBytesToString(read); + + //var itemData = BitConverter.ToString(read); + LogHelper.Info($"璇诲彇鐨勪骇绾夸俊鎭瘂result}"); + var data = JsonConvert.DeserializeObject<ItemData>(result); + + LogHelper.Info(JsonConvert.SerializeObject(data)); + + //var itemCode = data.item_code; + //var batchNo = data.batch_no; + var cntrCode = data.cntr_code; + + var startLocCode = prod.OffLoc[0]; // 鐢ㄤ簬娴嬭瘯 + //var startLocCode = "CX01"; // 鐢ㄤ簬娴嬭瘯 + + WCSCore.CreateInboundTask(startLocCode, cntrCode); + } } catch (Exception ex) { @@ -44,44 +71,38 @@ } public static void CheckOutboundOrder() { - var taskName = TaskName.鎴愬搧鑳跺嚭搴� var db = new SqlHelper<object>().GetInstance(); - var info = $"杞--{taskName}--"; + var taskInfo = Settings.GetTaskInfo(ETask.C鎴愬搧鑳跺嚭搴�; + var taskName = "鍑哄簱"; + const string preLog = "杞:鍑哄簱:"; try { - var orderList = db.Queryable<TN_Outbound_Order>() - .Where(c => c.N_B_STATE == 1) - .OrderBy(c => c.T_CREATE, SqlSugar.OrderByType.Asc) - .ToList(); - + var orderList = db.Queryable<TN_Outbound_Order>().Where(c => c.N_B_STATE == 1).OrderBy(c => c.T_CREATE).ToList(); if (orderList.Count == 0) { - info += $"鏆傛棤寰呮墽琛岀殑{taskName}鍗�; - LogHelper.Info(info); + LogHelper.Debug(preLog + $"鏆傛棤寰呮墽琛岀殑{taskName}鍗�); return; } + Console.WriteLine(JsonConvert.SerializeObject(orderList)); // TEST + var detailList = new List<TN_Outbound_Detail>(); foreach (var order in orderList) { - var doingCount = db.Queryable<TN_Outbound_Detail>() - .Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); // 鎵ц涓�- var allCount = db.Queryable<TN_Outbound_Detail>() - .Count(d => d.S_OO_NO == order.S_NO); - info += $"缁熻{taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}"; - LogHelper.Info(info); + var doingCount = db.Queryable<TN_Outbound_Detail>().Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); + var allCount = db.Queryable<TN_Outbound_Detail>().Count(d => d.S_OO_NO == order.S_NO); + LogHelper.Info(preLog + $"缁熻{taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙�{doingCount}/{allCount}"); if (doingCount == allCount) { order.N_B_STATE = 2; // 鎵�湁浠诲姟閮藉凡鎵ц - db.Updateable<TN_Outbound_Order>(order).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + db.Updateable(order).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); continue; } var lastDetail = db.Queryable<TN_Outbound_Detail>() - .Where(d => d.S_OO_NO == order.S_NO && d.N_B_STATE == 2) // TODO 鎴栬�鏀规垚鏌ask + .Where(d => d.S_OO_NO == order.S_NO && d.N_B_STATE == 2) // [NOTE] 鎴栬�鏀规垚鏌ask .First(); if (lastDetail != null) { - info += $"{taskName}鍗�{order.S_NO}'涓婁竴涓换鍔′粛鍦ㄨ繘琛屼腑锛� + JsonConvert.SerializeObject(lastDetail); - LogHelper.Info(info); + LogHelper.Info(preLog + $"{taskName}鍗�{order.S_NO}'涓婁竴涓换鍔′粛鍦ㄨ繘琛屼腑:" + JsonConvert.SerializeObject(lastDetail)); continue; } @@ -90,8 +111,7 @@ .First(); if (outboundDetail == null) { - info += $"浠嶆湁浠诲姟鏈墽琛屽畬鎴愶紝浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�; - LogHelper.Info(info); + LogHelper.Info(preLog + $"浠嶆湁浠诲姟鏈墽琛屽畬鎴�浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�"); continue; } @@ -104,13 +124,10 @@ } foreach (var detail in detailList) { - var startLoc = db.Queryable<TN_Location>() - .LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) - .Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE) - .First(); + var startLoc = db.Queryable<TN_Location>().LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE).Where((l, c) => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y" && l.N_CURRENT_NUM == 1 && c.S_CNTR_CODE == detail.S_CNTR_CODE).First(); if (startLoc == null) { - LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�); + LogHelper.Info(preLog + $"娌℃湁鎵惧埌鍚堥�鐨勮捣鐐硅揣浣�"); continue; } @@ -120,106 +137,99 @@ .Where(a => a.N_CURRENT_NUM == 0).First(); if (endLoc == null) { - LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛佸崟鍙�{detail.S_OO_NO}'瑕佹眰缁堢偣搴撳尯涓�{detail.S_END_AREA}'"); + LogHelper.Info(preLog + $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�鍗曞彿'{detail.S_OO_NO}'瑕佹眰缁堢偣搴撳尯涓�{detail.S_END_AREA}'"); continue; } - + detail.N_B_STATE = 2; var cntId = detail.S_CNTR_CODE; - var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); - LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+ var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); + task.S_OP_CODE = detail.S_OO_NO; + if (string.IsNullOrEmpty(detail.S_BS_NO)) { + task.S_BS_NO = detail.S_BS_NO; + task.S_BS_TYPE = "ERP"; + } + + WCSHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�+ WCSHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { - 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(); - info += $"淇敼鏄庣粏琛ㄧ姸鎬佷负瀹屾垚--澶辫触锛�; - LogHelper.Info(info); + LogHelper.Info($"杞:{taskName}:淇敼鏄庣粏琛ㄧ姸鎬佷负瀹屾垚--澶辫触!"); continue; } - if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { - it.N_LOCK_STATE, - it.S_LOCK_STATE, - it.S_LOCK_OP, - it.T_MODIFY - }).ExecuteCommand() <= 0) { + // 鏇存柊[璧风偣/缁堢偣]閿佺姸鎬�鍒涘缓浠诲姟 + 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(); - info += $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; - LogHelper.Info(info); - continue; + LogHelper.Info(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(); + LogHelper.Info(preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); + } + if (db.Insertable(task).ExecuteCommand() <= 0) { + tran.RollbackTran(); + LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'澶辫触!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); } - if (db.Updateable<TN_Location>(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}閿佺姸鎬佸け璐�; - LogHelper.Info(info); - continue; - } - - if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { - tran.RollbackTran(); - info += $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; - LogHelper.Info(info); - continue; - } - + // 鎻愪氦鏁版嵁搴撴洿鏀� tran.CommitTran(); - info += $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; - LogHelper.Info(info); - continue; + LogHelper.Info(preLog + $"鐢熸垚浠诲姟'{task.S_TYPE}'鎴愬姛!浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{task.S_CNTR_CODE},璧风偣={task.S_START_LOC},缁堢偣={task.S_END_LOC}"); } + + // 濡傛灉褰撳墠鍑哄簱鍗曟槑缁嗘槸ERP涓嬪彂鐨�浠诲姟鍒涘缓瀹屾垚鍙嶉璐т綅淇℃伅 + if (detail.S_BS_TYPE == "ERP") { + //var createTaskReturnErpTask = Task.Run(() => { + // CreateTaskReturnErp(task); + //}); + CreateTaskReturnErp(task); + } + } + } catch (Exception ex) { - info += $"鍙戠敓浜嗗紓甯革細{ex.Message}"; - LogHelper.InfoEx(ex); + LogHelper.InfoEx(ex, preLog); } } public static void CheckCheckOrder() { - var taskName = TaskName.鎶芥_鍑哄簱; var db = new SqlHelper<object>().GetInstance(); var info = ""; - try { - var orderList = db.Queryable<TN_Check_Order>() - .Where(c => c.N_B_STATE == 1) - .OrderBy(c => c.T_CREATE, SqlSugar.OrderByType.Asc) - .ToList(); + var taskInfo = Settings.GetTaskInfo(ETask.C鎶芥鍑哄簱); + var taskName = taskInfo.TaskName; + const string preLog = "杞:鎶芥:"; + try { + var orderList = db.Queryable<TN_Spot_Check>().Where(c => c.N_B_STATE == 1).OrderBy(c => c.T_CREATE).ToList(); if (orderList.Count == 0) { - LogHelper.Info($"杞--{taskName}--鏆傛棤寰呮墽琛岀殑{taskName}鍗�); + LogHelper.Debug($"杞:{taskName}:鏆傛棤寰呮墽琛岀殑{taskName}鍗�); return; } - var detailList = new List<TN_Check_Detail>(); + var detailList = new List<TN_SpotCheck_Detail>(); foreach (var order in orderList) { - var doingCount = db.Queryable<TN_Check_Detail>() - .Count(d => d.S_NO == order.S_NO && d.N_B_STATE >= 2); // 鎵ц涓�- var allCount = db.Queryable<TN_Check_Detail>() - .Count(d => d.S_NO == order.S_NO); - LogHelper.Info($"杞--{taskName}--缁熻{taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}"); + var doingCount = db.Queryable<TN_SpotCheck_Detail>().Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); + var allCount = db.Queryable<TN_SpotCheck_Detail>().Count(d => d.S_OO_NO == order.S_NO); + LogHelper.Info(preLog + $"缁熻{taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙�{doingCount}/{allCount}"); if (doingCount == allCount) { order.N_B_STATE = 2; // 鎵�湁浠诲姟閮藉凡鎵ц - db.Updateable<TN_Check_Order>(order).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + db.Updateable(order).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); continue; } - var checkDetailList = db.Queryable<TN_Check_Detail>() - .Where(a => a.S_NO == order.S_NO && a.N_B_STATE == 1) // 宸蹭笅鍙�+ var checkDetailList = db.Queryable<TN_SpotCheck_Detail>() + .Where(a => a.S_OO_NO == order.S_NO && a.N_B_STATE == 1) // 宸蹭笅鍙� .ToList(); if (checkDetailList.Count == 0) { - LogHelper.Info($"杞--{taskName}--浠嶆湁浠诲姟鏈墽琛屽畬鎴愶紝浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�); + LogHelper.Info($"杞:{taskName}:浠嶆湁浠诲姟鏈墽琛屽畬鎴�浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�); continue; } @@ -229,23 +239,21 @@ } foreach (var detail in detailList) { - var startLoc = db.Queryable<TN_Location>() - .LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) - .Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE) - .First(); + var startLoc = db.Queryable<TN_Location>() .LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) + .Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE).First(); if (startLoc == null) { - LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�); + LogHelper.Info($"杞:{taskName}:娌℃湁鎵惧埌鍚堥�鐨勮捣鐐硅揣浣�"); continue; } var endLoc = db.Queryable<TN_Location>() .Where(l => l.S_AREA_CODE == detail.S_END_AREA) - .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 + .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�:鏈笂閿� .Where(a => a.N_CURRENT_NUM == 0).First(); if (endLoc == null) { - LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛�); + LogHelper.Info($"杞:{taskName}:娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�"); continue; } @@ -253,95 +261,88 @@ var cntId = detail.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); + task.S_OP_CODE = detail.S_OO_NO; - LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+ WCSHelper.LockStartLoc(ref startLoc); + WCSHelper.LockEndLoc(ref endLoc); using (var tran = db.Ado.UseTran()) { - if (db.Updateable<TN_Check_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}锛氫慨鏀箋taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�); + LogHelper.Info($"杞:{taskName}:淇敼{taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触!"); continue; } - if (db.Updateable<TN_Location>(startLoc).UpdateColumns(it => new { - it.N_LOCK_STATE, - it.S_LOCK_STATE, - it.S_LOCK_OP, - it.T_MODIFY - }).ExecuteCommand() <= 0) { + 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(); - info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; - LogHelper.Info(info); + LogHelper.Info(preLog + $"鏇存柊[璧风偣璐т綅閿佺姸鎬乚澶辫触!璧风偣='{startLoc.S_CODE}',閿佺姸鎬�>'鍑哄簱閿�"); continue; } - if (db.Updateable<TN_Location>(endLoc).UpdateColumns(it => new { - it.N_LOCK_STATE, - it.S_LOCK_STATE, - it.S_LOCK_OP, - it.T_MODIFY - }).ExecuteCommand() <= 0) { + 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}閿佺姸鎬佸け璐�; - LogHelper.Info(info); + LogHelper.Info(preLog + $"鏇存柊[缁堢偣璐т綅閿佺姸鎬乚澶辫触!缁堢偣='{endLoc.S_CODE}',閿佺姸鎬�>'鍏ュ簱閿�"); continue; } - if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { + if (db.Insertable(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"; LogHelper.Info(info); continue; } tran.CommitTran(); - info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"; LogHelper.Info(info); continue; } } } catch (Exception ex) { - LogHelper.InfoEx(ex); + LogHelper.InfoEx(ex, preLog); } } - public static void CheckShiftOrder() { - var taskName = TaskName.绉诲簱; + public static void CheckShiftOrder() { var db = new SqlHelper<object>().GetInstance(); var info = ""; + + var taskInfo = Settings.GetTaskInfo(ETask.Y绉诲簱); + var taskName = taskInfo.TaskName; + const string preLog = "杞:绉诲簱:"; + try { - var orderList = db.Queryable<TN_Shift_Order>() + var orderList = db.Queryable<TN_Relocation_List>() .Where(c => c.N_B_STATE == 1) .OrderBy(c => c.T_CREATE, SqlSugar.OrderByType.Asc) .ToList(); if (orderList.Count == 0) { - LogHelper.Info($"杞--{taskName}--鏆傛棤寰呮墽琛岀殑{taskName}鍗�); + LogHelper.Debug($"杞:{taskName}:鏆傛棤寰呮墽琛岀殑{taskName}鍗�); return; } - var detailList = new List<TN_Shift_Detail>(); + var detailList = new List<TN_RelocationList_Detail>(); foreach (var order in orderList) { - var doingCount = db.Queryable<TN_Shift_Detail>() - .Count(d => d.S_NO == order.S_NO && d.N_B_STATE >= 2); // 鎵ц涓�- var allCount = db.Queryable<TN_Shift_Detail>() - .Count(d => d.S_NO == order.S_NO); - LogHelper.Info($"杞--{taskName}--缁熻{taskName}鍗�{order.S_NO}'浠诲姟宸蹭笅鍙戯細{doingCount}/{allCount}"); + var doingCount = db.Queryable<TN_RelocationList_Detail>() + .Count(d => d.S_OO_NO == order.S_NO && d.N_B_STATE >= 2); // 鎵ц涓�+ var allCount = db.Queryable<TN_RelocationList_Detail>() + .Count(d => d.S_OO_NO == order.S_NO); + LogHelper.Info($"杞:{taskName}:缁熻{taskName}鍗�{order.S_NO}浠诲姟宸蹭笅鍙�{doingCount}/{allCount}"); if (doingCount == allCount) { order.N_B_STATE = 2; // 鎵�湁浠诲姟閮藉凡鎵ц - db.Updateable<TN_Shift_Order>(order).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); + db.Updateable(order).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); continue; } - var checkDetailList = db.Queryable<TN_Shift_Detail>() - .Where(a => a.S_NO == order.S_NO && a.N_B_STATE == 1) // 宸蹭笅鍙�+ var checkDetailList = db.Queryable<TN_RelocationList_Detail>() + .Where(a => a.S_OO_NO == order.S_NO && a.N_B_STATE == 1) // 宸蹭笅鍙� .ToList(); if (checkDetailList.Count == 0) { - LogHelper.Info($"杞--{taskName}--浠嶆湁浠诲姟鏈墽琛屽畬鎴愶紝浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�); + LogHelper.Info($"杞:{taskName}:浠嶆湁浠诲姟鏈墽琛屽畬鎴�浣嗗綋鍓嶆病鏈夊凡涓嬪彂鐨勪换鍔�); continue; } @@ -354,20 +355,24 @@ var startLoc = db.Queryable<TN_Location>() .LeftJoin<TN_Loc_Container>((l, c) => l.S_CODE == c.S_LOC_CODE) .Where((l, c) => c.S_CNTR_CODE == detail.S_CNTR_CODE) + .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y") // 绛涢�:鏈笂閿�+ .Where(l => l.N_CURRENT_NUM == 1) .First(); if (startLoc == null) { - LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑璧风偣璐т綅锛�); + info = $"杞:{taskName}:娌℃湁鎵惧埌瀹瑰櫒鍙�{detail.S_CNTR_CODE}鐨勮捣鐐硅揣浣�闇�婊¤冻:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=1"; + LogHelper.Info(info); continue; } var endLoc = db.Queryable<TN_Location>() .Where(l => l.S_AREA_CODE == detail.S_END_AREA) - .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣 + .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�:鏈笂閿� .Where(a => a.N_CURRENT_NUM == 0).First(); if (endLoc == null) { - LogHelper.Info($"杞--{taskName}锛氭病鏈夋壘鍒板悎閫傜殑缁堢偣璐т綅锛�); + info = $"杞:{taskName}:娌℃湁鎵惧埌缁堢偣璐т綅={detail.S_END_AREA}鐨勭粓鐐硅揣浣�闇�婊¤冻:鏈笂閿�褰撳墠瀹瑰櫒鏁伴噺=0"; + LogHelper.Info(info); continue; } @@ -375,56 +380,157 @@ var cntId = detail.S_CNTR_CODE; var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); + task.S_OP_CODE = detail.S_OO_NO; - LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�- LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+ WCSHelper.LockStartLoc(ref startLoc); // 璧风偣鍑哄簱閿�+ WCSHelper.LockEndLoc(ref endLoc); // 缁堢偣鍏ュ簱閿� using (var tran = db.Ado.UseTran()) { - if (db.Updateable<TN_Shift_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}锛氫慨鏀箋taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触锛�); + LogHelper.Info($"杞:{taskName}:淇敼{taskName}鍗曟槑缁嗚〃鐘舵�涓哄畬鎴�-澶辫触!"); continue; } - 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.T_MODIFY, + it.N_CURRENT_NUM, // 璧风偣璐т綅缁戝畾鍚�灏嗚揣浣嶇姸鎬佹洿鏂� }).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂拌捣鐐硅揣浣峽startLoc.S_CODE}閿佺姸鎬佸け璐�; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊璧风偣璐т綅{startLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); continue; } - 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 + it.T_MODIFY, }).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛氭洿鏂扮粓鐐硅揣浣峽endLoc.S_CODE}閿佺姸鎬佸け璐�; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触:鏇存柊缁堢偣璐т綅{endLoc.S_CODE}閿佺姸鎬佸け璐�; LogHelper.Info(info); continue; } - if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { + if (db.Insertable(task).ExecuteCommand() <= 0) { tran.RollbackTran(); - info = $"鐢熸垚浠诲姟'{taskName}'澶辫触锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'澶辫触,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"; LogHelper.Info(info); continue; - } + } tran.CommitTran(); - info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛锛屽鍣ㄥ彿{cntId}锛岃捣鐐箋startLoc.S_CODE}锛岀粓鐐硅揣鏋秢endLoc.S_CODE}"; + info = $"鐢熸垚浠诲姟'{taskName}'鎴愬姛,浠诲姟鍙�{task.S_CODE},瀹瑰櫒鍙�{cntId},璧风偣={startLoc.S_CODE},缁堢偣={endLoc.S_CODE}"; LogHelper.Info(info); continue; } } } catch (Exception ex) { + LogHelper.InfoEx(ex, preLog); + } + } + + public static void CreateTaskReturnErp(TN_Task task) { + var db = new SqlHelper<object>().GetInstance(); + var info = ""; + var httpH = new HttpHelper(); + + try { + var plan = db.Queryable<TN_Outbound_Plan>() + .Where(p => p.JHDH == task.S_BS_NO) + .First(); + + if (plan == null) { + info = $"璁″垝鍗曞彿{task.S_BS_NO}涓嶅瓨鍦�"; + LogHelper.Info(info); + } + + var cgDetail = db.Queryable<TN_CG_Detail>() + .Where(d => d.S_CNTR_CODE == task.S_CNTR_CODE) + .First(); + + if (cgDetail == null) { + info = $"鐗╂枡缂栫爜涓嶅瓨鍦�"; + LogHelper.Info(info); + } + + var model = new OtherModel.CreateTaskReturnErpInfo { + jhdh = plan.JHDH , // 璁″垝鍗曞彿 (鍞竴鏍囪瘑) + ckzt = plan.CKZT , // 鍑哄簱鐘舵� (闇�杩斿洖) + jhlb = plan.JHLB , // 璁″垝绫诲埆 + ckdh = plan.CKDH , // 鍙傝�鍗曞彿 + cph = plan.CPH , // 杞︾墝鍙�+ ysfs = plan.YSFS , // 杩愯緭鏂瑰紡 + cpzt = plan.CPZT , // 浜у搧鐘舵� + mddw = plan.MDDW , // 涔版柇鍗曚綅 + cpdm = plan.CPDM , // 浜у搧浠g爜 + cplb = plan.CPLB , // 浜у搧绫诲埆 + cplbmx = plan.CPLBMX , // 浜у搧绫诲埆鏄庣粏 + pp = plan.PP , // 鍝佺墝 + dj = plan.DJ , // 绛夌骇 (闇�杩斿洖) + gh = plan.GH , // 缃愬彿 + ph = plan.PH , // 鎵瑰彿 (闇�杩斿洖) + bzlx = plan.BZLX , // 鍖呰绫诲瀷 + pzdh = plan.PZDH , // 娲捐鍗曞彿 + pzd_dw = plan.PZD_DW , // 娲捐鍗曞崟浣�+ pzd_dybh = plan.PZD_DYBH , // 娲捐鍗曡皟杩愮紪鍙�+ pzjs = plan.PZJS , // 娲捐浠舵暟 + pzsl = plan.PZSL , // 娲捐鏁伴噺 + pz_rq = plan.PZ_RQ , // 娲捐鏃ユ湡(yyyy-mm-dd) + pz_czrq = plan.PZ_CZRQ , // 娲捐鎿嶄綔鏃ユ湡 + pz_zfbj = plan.PZ_ZFBJ , // 娲捐浣滃簾鏍囪 + 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 , // 鎿嶄綔鍛�(闇�杩斿洖) + shr_username = plan.SHR_USERNAME , // 瀹℃牳浜�+ shrq = plan.SHRQ , // 瀹℃牳鏃ユ湡 + zfbj = plan.ZFBJ , // 浣滃簾鏍囪 + zfrq = plan.ZFRQ , // 浣滃簾鏃ユ湡 + jsdw = plan.JSDW , // 缁撶畻鍗曚綅 + shdw = plan.SHDW , // 鏀惰揣鍗曚綅 + ysdw = plan.YSDW , // 杩愯緭鍗曚綅 + lxr = plan.LXR , // 鑱旂郴浜�+ //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 // 璐т綅鐘舵� (闇�杩斿洖) + }; + model.hw = task.S_START_LOC; + model.hwzt = "寰呭嚭搴�; + model.ph = cgDetail.S_BATCH_NO; + + var jsonInfo = JsonConvert.SerializeObject(model); + var result = httpH.WebPost(Settings.ErpApiUrl + Settings.ErpRoute.CreateTaskReturn, jsonInfo); + + LogHelper.InfoApi($"鍒涘缓浠诲姟瀹屾垚鍙嶉ERP鎺ュ彛,缁撴灉={result},璋冪敤鍙傛暟:", model); + + plan.HW = model.hw; + plan.HWZT = model.hwzt; + plan.PH = model.ph; + var success = db.Updateable(plan).UpdateColumns(p => new { p.HW, p.HWZT, p.PH }).ExecuteCommand() > 0; + info = "鏇存柊鍑哄簱璁″垝鍗曡褰曡〃" + (success ? "鎴愬姛" : "澶辫触"); + LogHelper.Info(info); + } + catch (Exception ex) { LogHelper.InfoEx(ex); } } -- Gitblit v1.9.1