From a8627a98b82d2364cbe849ca746e72fbab9916e5 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期三, 21 五月 2025 17:31:14 +0800 Subject: [PATCH] 重构代码修复事务问题,测试完善后台盘点功能 --- core/WCSCore.cs | 160 ++++++++++++++++++++++++++-------------------------- 1 files changed, 80 insertions(+), 80 deletions(-) diff --git a/Services/AgvService.cs b/core/WCSCore.cs similarity index 67% rename from Services/AgvService.cs rename to core/WCSCore.cs index 5a2cd96..c7fe69d 100644 --- a/Services/AgvService.cs +++ b/core/WCSCore.cs @@ -1,47 +1,34 @@ -锘縰sing HH.WCS.Mobox3.AnGang.Helpers; -using HH.WCS.Mobox3.AnGang.Models; +锘縰sing HH.WCS.Mobox3.AnGang.device; +using HH.WCS.Mobox3.AnGang.dispatch; +using HH.WCS.Mobox3.AnGang.models; using HH.WCS.Mobox3.AnGang.process; using HH.WCS.Mobox3.AnGang.config; -using HH.WCS.Mobox3.AnGang.Helper; using Newtonsoft.Json; +using SqlSugar; using System; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading.Tasks; +using static HH.WCS.Mobox3.AnGang.api.ApiModel; +using HH.WCS.Mobox3.AnGang.wms; +using HH.WCS.Mobox3.AnGang.util; -using static HH.WCS.Mobox3.AnGang.Dtos.Request.AgvRequest; -using static HH.WCS.Mobox3.AnGang.Dtos.Response.AgvResponse; -using HH.WCS.Mobox3.AnGang.Consts; -using HH.WCS.Mobox3.AnGang.Dispatch; -using HH.WCS.Mobox3.AnGang.Devices; - -namespace HH.WCS.Mobox3.AnGang.Services { - public class AgvService { +namespace HH.WCS.Mobox3.AnGang.core +{ + internal class WCSCore + { public static ReturnResult OperateAgvTaskStatus(AgvTaskState model) { var result = new ReturnResult(); try { - switch (model.state) { - case 1023: - break; - case 1025: - break; - case 1012: - break; - case 1004: - break; - case 1103: - break; - default: - // AGV 鎵ц浠诲姟鐨勯�杈戝鐞�- if (!AgvTaskProcessOk(model)) { - // 鎵ц涓峅K锛岃鏄庢病鏈夋壘鍒颁换鍔�- result.ResultCode = 1; - result.ResultMsg = $"鏍规嵁Model.No鏈壘鍒板搴旂殑浠诲姟锛寋model.task_no}"; - LogHelper.Info(result.ResultMsg, "API"); - return result; - } - break; + if (model.state > 0 && model.state < 1000) { + // AGV 鎵ц浠诲姟鐨勯�杈戝鐞�+ if (!AgvTaskProcessOk(model)) { + // 鎵ц涓峅K锛岃鏄庢病鏈夋壘鍒颁换鍔�+ result.ResultCode = 1; + result.ResultMsg = $"鏍规嵁Model.No鏈壘鍒板搴旂殑浠诲姟锛寋model.task_no}"; + LogHelper.Info(result.ResultMsg, "API"); + return result; + } } result.ResultCode = 0; @@ -69,48 +56,48 @@ if (model.state > 7) { //瀹夊叏璇锋眰绛�- TaskHelper.OperateReq(model.task_no, model.state, model.forklift_no, model.ext_data); + TaskProcess.OperateReq(model.task_no, model.state, model.forklift_no, model.ext_data); return true; } // AGV 浠诲姟 134562(7) 鐘舵�澶勭悊 switch (model.state) { - case AgvStateCode.鎵ц: + case 1: // 鎵ц WCSHelper.Begin(TN_Task, model.forklift_no); // 宸叉帹閫佺殑浠诲姟鐨勭姸鎬佹敼鎴愭墽琛� break; - case AgvStateCode.寮�鍙栬揣: + case 3: // 寮�鍙栬揣 WCSHelper.UpdateStatus(TN_Task, "寮�鍙栬揣"); // 浠诲姟鐘舵�鏀规垚寮�鍙栬揣 break; - case AgvStateCode.鍙栬揣瀹屾垚: + case 4: // 鍙栬揣瀹屾垚 WCSHelper.UpdateStatus(TN_Task, "鍙栬揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍙栬揣瀹屾垚 - var captureTask = Task.Run(() => { - if (TN_Task.S_TYPE == TaskName.浜у搧鍏ュ簱 || TN_Task.S_TYPE == TaskName.浜у搧閮ㄥ垎鍥炲簱) { + if (TN_Task.S_TYPE == TaskName.浜у搧鍏ュ簱 || TN_Task.S_TYPE == TaskName.浜у搧閮ㄥ垎鍥炲簱) { + var captureTask = Task.Run(() => { CapturePic(TN_Task); - } - }); + }); + } - var setEndLocTask = Task.Run(() => { - // 鍙浠诲姟涓轰骇鍝佸叆搴�PDA)锛屽氨闇�閲嶆柊鎸囧畾缁堢偣锛堥粯璁ndLoc涓�"锛�- if (TN_Task.S_TYPE == TaskName.浜у搧鍏ュ簱) { + if (TN_Task.S_TYPE == TaskName.浜у搧鍏ュ簱) { + var setEndLocTask = Task.Run(() => { + // 鍙浠诲姟涓轰骇鍝佸叆搴�PDA)锛屽氨闇�閲嶆柊鎸囧畾缁堢偣锛堥粯璁ndLoc涓�"锛� SetEndLoc(TN_Task); - } - }); + }); + } - TaskHelper.OperateStatus(TN_Task, 4); // 璧风偣瀹瑰櫒璐т綅瑙g粦,瑙i攣璧风偣 + TaskProcess.OperateStatus(TN_Task, 4); // 璧风偣瀹瑰櫒璐т綅瑙g粦,瑙i攣璧风偣 break; - case AgvStateCode.寮�鍗歌揣: + case 5: // 寮�鍗歌揣 WCSHelper.UpdateStatus(TN_Task, "寮�鍗歌揣"); // 浠诲姟鐘舵�鏀规垚寮�鍗歌揣 break; - case AgvStateCode.鍗歌揣瀹屾垚: + case 6: // 鍗歌揣瀹屾垚 WCSHelper.UpdateStatus(TN_Task, "鍗歌揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍗歌揣瀹屾垚 - TaskHelper.OperateStatus(TN_Task, 6); // 缁堢偣瀹瑰櫒璐т綅缁戝畾,瑙i攣缁堢偣 + TaskProcess.OperateStatus(TN_Task, 6); // 缁堢偣瀹瑰櫒璐т綅缁戝畾,瑙i攣缁堢偣 break; - case AgvStateCode.瀹屾垚: + case 2: // 瀹屾垚 WCSHelper.End(TN_Task); // 浠诲姟鐘舵�鏀规垚缁撴潫 break; - case AgvStateCode.寮傚父: - TaskHelper.OperateStatus(TN_Task, 7); // 寮傚父澶勭悊 + case 7: // 寮傚父 + TaskProcess.OperateStatus(TN_Task, 7); // 寮傚父澶勭悊 WCSHelper.Fail(TN_Task); // 浠诲姟鐘舵�鏀规垚閿欒 break; } @@ -122,7 +109,7 @@ } public static void CapturePic(TN_Task model) { - var db = DbHelper.GetDbClient(); + var db = new SqlHelper<object>().GetInstance(); var filepath = SnapManager.GetCapturePicturePath(); if (string.IsNullOrEmpty(filepath)) { @@ -140,7 +127,7 @@ } public static void SetEndLoc(TN_Task tn_task) { - var db = DbHelper.GetDbClient(); + var db = new SqlHelper<object>().GetInstance(); var endLoc = db.Queryable<TN_Location>() .First(a => a.S_CODE == tn_task.S_END_LOC); @@ -218,45 +205,58 @@ //}; //GZRobot.UpdateInteractInfo(request); - - using (var trans = db.Ado.UseTran()) { - if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC }) + if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC }) .ExecuteCommand() > 0) { - //LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�- - trans.CommitTran(); - LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼鎴愬姛锛屼慨鏀圭粓鐐硅揣浣嶄负 0绌�); - } - else { - trans.RollbackTran(); - LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼澶辫触锛屼慨鏀圭粓鐐硅揣浣嶄负 0绌�); - } + //LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�+ LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼鎴愬姛锛屼慨鏀圭粓鐐硅揣浣嶄负 0绌�); + } + else { + LogHelper.Info($"閲嶆柊璁$畻鍚庢病鏈夊悎閫傝揣浣嶏紝浠诲姟 {tn_task.S_CODE} 淇敼澶辫触锛屼慨鏀圭粓鐐硅揣浣嶄负 0绌�); } } else { // 鎵惧埌鍚堥�鐨勮揣浣嶏紝鎺ㄩ� tn_task.S_END_LOC = endLoc.S_CODE; - using (var trans = db.Ado.UseTran()) { - if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC }) + if (db.Updateable<TN_Task>(tn_task).UpdateColumns(it => new { it.S_END_LOC }) .ExecuteCommand() > 0) { - LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�- - trans.CommitTran(); - LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE} 淇敼鎴愬姛锛岀粓鐐硅揣鏋朵负 {endLoc.N_ROW}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}"); - } - else { - trans.RollbackTran(); - - LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE} 淇敼澶辫触锛岀粓鐐硅揣鏋朵负 {endLoc.N_ROW}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}"); - } + LocationHelper.LockLoc(endLoc.S_CODE, 1);//缁堢偣鍏ュ簱閿�+ LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE} 淇敼鎴愬姛锛岀粓鐐硅揣鏋朵负 {endLoc.N_ROW}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}"); } + else { + LogHelper.Info($"璁$畻璐т綅鎴愬姛锛屼换鍔�{tn_task.S_CODE} 淇敼澶辫触锛岀粓鐐硅揣鏋朵负 {endLoc.N_ROW}锛屼慨鏀圭粓鐐逛綅缃负 {endLoc.S_CODE}"); + } + } + } + + /// <summary> + /// 浠诲姟鍒嗗彂锛屾牴鎹皟搴︾被鍨嬪彂缁欎笉鍚岀殑璋冨害绯荤粺 + /// </summary> + internal static void Dispatch() + { + //鏌ヨ浠诲姟 + //鑾峰彇鎵�湁绛夊緟鐨勪换鍔�+ var list = WCSHelper.GetWaitingTaskList(); + LogHelper.Info("绛夊緟浠诲姟淇℃伅" + JsonConvert.SerializeObject(list), "API"); + if (list.Count > 0) + { + list.ForEach(task => + { + //浣跨敤鑷畾涔変换鍔℃帹閫�+ TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧 + //TaskProcess.SendGZTask(task);///璋冨害鍥借嚜璁惧 + + }); + } + else + { + LogHelper.Info("鏆傛棤浠诲姟"); } } public static ReturnResult SafetyInteraction(SafetyInteractionInfo model) { var gzResult = new ReturnResult(); - //var db = DbHelper.GetDbClient(); + //var db = new SqlHelper<object>().GetInstance(); //ModbusHelper.Relink(); //var productionLineInfo = Settings.ProductionLines[0]; -- Gitblit v1.9.1