From b928a2f0011fc867d7d219cfff4b764250f5b778 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期三, 09 七月 2025 17:03:08 +0800 Subject: [PATCH] 修复查交互表更新终点的流程,添加绑定货位写入物料明细表 --- device/SnapManager.cs | 12 + models/TN_CG_Detail.cs | 4 device/SnapDevice.cs | 3 wms/LocationHelper.cs | 6 dispatch/GZRobot.cs | 30 +++ api/AgvController.cs | 2 api/ApiHelper.cs | 123 +++++++++++++-- api/ImageController.cs | 200 +++++++++++++------------ process/TaskProcess.cs | 12 core/WCSCore.cs | 46 +++-- App_Start/Startup.cs | 2 11 files changed, 297 insertions(+), 143 deletions(-) diff --git a/App_Start/Startup.cs b/App_Start/Startup.cs index 6c76727..12b726d 100644 --- a/App_Start/Startup.cs +++ b/App_Start/Startup.cs @@ -41,7 +41,7 @@ }); config.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); config.Formatters.Add(new JsonMediaTypeFormatter()); - + app.UseWebApi(config); } } diff --git a/api/AgvController.cs b/api/AgvController.cs index 653838f..8ea7831 100644 --- a/api/AgvController.cs +++ b/api/AgvController.cs @@ -45,6 +45,8 @@ return WCSCore.SafetyInteraction(model); } + // 鎼佺疆涓嶄娇鐢紝瀛樺湪bug锛欻ttpContext.Current.Request璧嬪�鍓嶅紩鐢紝搴旇鏄疌urrent涓簄ull瀵艰嚧鐨�+ private void LogRequestHeaders() { var request = HttpContext.Current.Request; var logMessage = new StringBuilder(); diff --git a/api/ApiHelper.cs b/api/ApiHelper.cs index dd1f197..285284f 100644 --- a/api/ApiHelper.cs +++ b/api/ApiHelper.cs @@ -68,6 +68,7 @@ var cgDetail = new TN_CG_Detail() { S_ITEM_CODE = cgId, S_CNTR_CODE = cntId, + S_LOC_CODE = startLoc.S_CODE, // ADD锛氳ˉ鍏呴拡瀵筆DA鍒嗘嫞 }; startLoc.N_CURRENT_NUM = 1; @@ -189,6 +190,7 @@ S_ITEM_CODE = cgId, S_CNTR_CODE = cntId, //S_ITEM_NAME = model.ItemName, + S_LOC_CODE = startLoc.S_CODE, // ADD锛氳ˉ鍏呴拡瀵筆DA鍒嗘嫞 }; startLoc.N_CURRENT_NUM = 1; @@ -422,17 +424,25 @@ var endLoc = new TN_Location(); if (cgDetail.F_QTY > 2000) { // 閲嶉噺瓒呰繃2t锛屾姤閿�- if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo { - type_name = "GET_DST", - interaction_info_id = int.Parse(task.S_EQ_TASK_CODE), - info_status = "error", - })) { - LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅鎴愬姛", "HosttoagvTask"); + if (GZRobot.TryGetInteractionInfoId(task.S_CODE, out var id1)) { + if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo { + type_name = "GET_DST", + interaction_info_id = id1, + info_status = "error", + })) { + LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅鎴愬姛", "HosttoagvTask"); + } + else { + LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅澶辫触", "HosttoagvTask"); + //return BuildSimpleResult(7, $"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触"); + } } else { - LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅澶辫触", "HosttoagvTask"); + //return BuildSimpleResult(7, $"鑾峰彇浠诲姟{task.S_CODE}鐨刟gv interaction_info_id澶辫触锛�); + LogHelper.Info($"AGV锛氳幏鍙栦换鍔task.S_CODE}鐨刬nteraction_info_id澶辫触锛�, "HosttoagvTask"); + //return BuildSimpleResult(8, $"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触"); } - + return BuildSimpleResult(8, $"鐗╂枡閲嶉噺{cgDetail.F_QTY}瓒呰繃2t"); } else if (cgDetail.F_QTY > 1500) { @@ -468,16 +478,23 @@ task.S_END_LOC = endLoc.S_CODE; LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� - if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo { - type_name = "GET_DST", - interaction_info_id = int.Parse(task.S_EQ_TASK_CODE), - info_status = "invalid", - return_value = LocationHelper.GetAgvSite(task.S_END_LOC), // 鐩墠浣跨敤agvsite - })) { - LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅鎴愬姛", "HosttoagvTask"); + if (GZRobot.TryGetInteractionInfoId(task.S_CODE, out var id2)) { + if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo { + type_name = "GET_DST", + interaction_info_id = id2, + info_status = "invalid", + return_value = LocationHelper.GetAgvSite(task.S_END_LOC), // 鐩墠浣跨敤agvsite + })) { + LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅鎴愬姛", "HosttoagvTask"); + } + else { + LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触", "HosttoagvTask"); + return BuildSimpleResult(7, $"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触"); + } } else { - LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触", "HosttoagvTask"); + LogHelper.Info($"AGV锛氳幏鍙栦换鍔task.S_CODE}鐨刬nteraction_info_id澶辫触锛�, "HosttoagvTask"); + return BuildSimpleResult(8, $"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触"); } using (var tran = db.Ado.UseTran()) { @@ -646,6 +663,80 @@ } } + /// <summary> + /// 浜у搧閮ㄥ垎鍥炲簱锛堜笉鎸囧畾缁堢偣锛屽鐢級 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + internal static SimpleResult PartInboundAuto(PartInboundInfo model) { + var taskName = TaskName.浜у搧閮ㄥ垎鍥炲簱; + var db = new SqlHelper<object>().GetInstance(); + + var startAreas = Settings.Areas[AreaIndex.X鍗歌揣鍖篯; + var endAreas = Settings.Areas[AreaIndex.H璐ф灦鍖篯; + + try { + // 璧风偣浣嶇疆锛氬彇鏀捐揣鍖猴紙鏈夎揣鐗┿�娌℃湁閿併�宸插惎鐢級 + var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && startAreas.Contains(a.S_AREA_CODE)); + if (startLoc == null) { + return BuildSimpleResult(2, $"璧风偣浣嶇疆 {model.startLoc} 涓嶇鍚堝洖搴撴潯浠�); + } + + var locCntrRel = db.Queryable<TN_Loc_Container>().First(a => a.S_LOC_CODE == model.startLoc); + if (locCntrRel == null) { + return BuildSimpleResult(3, $"璧风偣浣嶇疆 {model.startLoc} 娌℃湁缁戝畾瀹瑰櫒锛屾棤鍙洖搴撶殑鐗╂枡"); + } + + // 缁堢偣浣嶇疆锛氳揣鏋讹紙娌℃湁璐х墿锛屾病鏈夐攣锛�+ var endLoc = db.Queryable<TN_Location>().First(a => a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y" && endAreas.Contains(a.S_AREA_CODE)); + if (endLoc == null) { + return BuildSimpleResult(4, $"娌℃湁鎵惧埌鍚堥�鐨勭粓鐐硅揣浣�); + } + + var cntId = locCntrRel.S_CNTR_CODE; + var task = WCSHelper.BuildTask(startLoc, endLoc, cntId, taskName); + LocationHelper.LockLoc(ref startLoc, 2); // 璧风偣鍑哄簱閿�+ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿�+ + using (var tran = db.Ado.UseTran()) { + 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) { + tran.RollbackTran(); + return BuildSimpleResult(500, + $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣浣�{endLoc.S_CODE}"); + } + + 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(); + return BuildSimpleResult(500, + $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + } + + if (db.Insertable<TN_Task>(task).ExecuteCommand() <= 0) { + tran.RollbackTran(); + return BuildSimpleResult(500, + $"鐢熸垚 {taskName} 澶辫触锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + } + + tran.CommitTran(); + return BuildSimpleResult(0, + $"鐢熸垚 {taskName} 鎴愬姛锛屽鍣ㄥ彿 {cntId} 锛岃捣鐐�{startLoc.S_CODE} 锛岀粓鐐硅揣鏋�{endLoc.S_CODE}"); + } + } + catch (Exception ex) { + return BuildSimpleResult(1, $"鍙戠敓浜嗗紓甯革細{ex.Message}"); + } + } + public static SimpleResult CancelTask(CancelTaskInfo model) { var db = new SqlHelper<object>().GetInstance(); var info = ""; diff --git a/api/ImageController.cs b/api/ImageController.cs index 41b034f..984dd64 100644 --- a/api/ImageController.cs +++ b/api/ImageController.cs @@ -5,105 +5,113 @@ using System.Web; using System.Web.Http; -public class ImageController : ApiController { - private readonly string _baseStoragePath = HttpContext.Current.Server.MapPath("~/StaticStorage"); - private readonly string[] _allowedExtensions = { ".jpg", ".jpeg", ".png", ".gif", ".bmp" }; +namespace HH.WCS.Mobox3.AnGang.api { - // 涓婁紶鍥剧墖鎺ュ彛 - [HttpPost] - [Route("api/image/upload")] - public HttpResponseMessage UploadImage() { - try { - if (!Request.Content.IsMimeMultipartContent()) { - return Request.CreateErrorResponse(HttpStatusCode.UnsupportedMediaType, "璇锋眰蹇呴』鍖呭惈澶氶儴鍒嗗唴瀹�); + //[RoutePrefix("api/image")] + public class ImageController : ApiController { + //private readonly string _baseStoragePath = HttpContext.Current.Server.MapPath("~/StaticStorage"); + private readonly string _baseStoragePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "StaticStorage"); + private readonly string[] _allowedExtensions = { ".jpg", ".jpeg", ".png", ".gif", ".bmp" }; + + // 涓婁紶鍥剧墖鎺ュ彛 + [HttpPost] + //[ActionName("Upload")] + //[Route("api/image/upload")] + [Route("UploadImage")] + public HttpResponseMessage UploadImage() { + try { + if (!Request.Content.IsMimeMultipartContent()) { + return Request.CreateErrorResponse(HttpStatusCode.UnsupportedMediaType, "璇锋眰蹇呴』鍖呭惈澶氶儴鍒嗗唴瀹�); + } + + var provider = new MultipartFormDataStreamProvider(Path.GetTempPath()); + var result = Request.Content.ReadAsMultipartAsync(provider).Result; + + if (result.FileData.Count == 0) { + return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "鏈帴鏀跺埌鏂囦欢"); + } + + var fileData = result.FileData[0]; + var fileName = fileData.Headers.ContentDisposition.FileName.Trim('"'); + var fileExt = Path.GetExtension(fileName).ToLower(); + + if (Array.IndexOf(_allowedExtensions, fileExt) == -1) { + return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "涓嶆敮鎸佺殑鏂囦欢绫诲瀷"); + } + + // 鐢熸垚鏃ユ湡璺緞 + var now = DateTime.Now; + var year = now.ToString("yyyy"); + var month = now.ToString("MM"); + var day = now.ToString("dd"); + + // 鐢熸垚鍞竴鏂囦欢鍚�+ var newFileName = $"{now:yyyy-MM-dd-HHmmssfff}{fileExt}"; + + // 鐩爣璺緞 + var targetPath = Path.Combine(_baseStoragePath, "image", year, month, day); + + // 纭繚鐩綍瀛樺湪 + Directory.CreateDirectory(targetPath); + + // 瀹屾暣鏂囦欢璺緞 + var fullPath = Path.Combine(targetPath, newFileName); + + // 绉诲姩鏂囦欢鍒扮洰鏍囦綅缃�+ File.Move(fileData.LocalFileName, fullPath); + + // 杩斿洖璁块棶URL + var url = $"{Request.RequestUri.Scheme}://{Request.RequestUri.Authority}/static/image/{year}/{month}/{day}/{newFileName}"; + + return Request.CreateResponse(HttpStatusCode.OK, new { Url = url }); } - - var provider = new MultipartFormDataStreamProvider(Path.GetTempPath()); - var result = Request.Content.ReadAsMultipartAsync(provider).Result; - - if (result.FileData.Count == 0) { - return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "鏈帴鏀跺埌鏂囦欢"); + catch (Exception ex) { + return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message); } - - var fileData = result.FileData[0]; - var fileName = fileData.Headers.ContentDisposition.FileName.Trim('"'); - var fileExt = Path.GetExtension(fileName).ToLower(); - - if (Array.IndexOf(_allowedExtensions, fileExt) == -1) { - return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "涓嶆敮鎸佺殑鏂囦欢绫诲瀷"); - } - - // 鐢熸垚鏃ユ湡璺緞 - var now = DateTime.Now; - var year = now.ToString("yyyy"); - var month = now.ToString("MM"); - var day = now.ToString("dd"); - - // 鐢熸垚鍞竴鏂囦欢鍚�- var newFileName = $"{now:yyyy-MM-dd-HHmmssfff}{fileExt}"; - - // 鐩爣璺緞 - var targetPath = Path.Combine(_baseStoragePath, "image", year, month, day); - - // 纭繚鐩綍瀛樺湪 - Directory.CreateDirectory(targetPath); - - // 瀹屾暣鏂囦欢璺緞 - var fullPath = Path.Combine(targetPath, newFileName); - - // 绉诲姩鏂囦欢鍒扮洰鏍囦綅缃�- File.Move(fileData.LocalFileName, fullPath); - - // 杩斿洖璁块棶URL - var url = $"{Request.RequestUri.Scheme}://{Request.RequestUri.Authority}/static/image/{year}/{month}/{day}/{newFileName}"; - - return Request.CreateResponse(HttpStatusCode.OK, new { Url = url }); } - catch (Exception ex) { - return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message); + + // 鑾峰彇鍥剧墖鎺ュ彛 - 瀹為檯鐢遍潤鎬佹枃浠跺鐞嗭紝杩欓噷鍙槸绀轰緥 + [HttpGet] + //[ActionName("Get")] + [Route("static/image/{year}/{month}/{day}/{filename}")] + public HttpResponseMessage GetImage(string year, string month, string day, string filename) { + try { + var filePath = Path.Combine(_baseStoragePath, "image", year, month, day, filename); + + if (!File.Exists(filePath)) { + return Request.CreateErrorResponse(HttpStatusCode.NotFound, "鏂囦欢涓嶅瓨鍦�); + } + + var response = new HttpResponseMessage(HttpStatusCode.OK); + var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read); + response.Content = new StreamContent(stream); + + // 鏍规嵁鏂囦欢鎵╁睍鍚嶈缃瓹ontentType + var ext = Path.GetExtension(filename).ToLower(); + switch (ext) { + case ".jpg": + case ".jpeg": + response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg"); + break; + case ".png": + response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/png"); + break; + case ".gif": + response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/gif"); + break; + case ".bmp": + response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/bmp"); + break; + default: + response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream"); + break; + } + + return response; + } + catch (Exception ex) { + return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message); + } } } - - // 鑾峰彇鍥剧墖鎺ュ彛 - 瀹為檯鐢遍潤鎬佹枃浠跺鐞嗭紝杩欓噷鍙槸绀轰緥 - [HttpGet] - [Route("static/image/{year}/{month}/{day}/{filename}")] - public HttpResponseMessage GetImage(string year, string month, string day, string filename) { - try { - var filePath = Path.Combine(_baseStoragePath, "image", year, month, day, filename); - - if (!File.Exists(filePath)) { - return Request.CreateErrorResponse(HttpStatusCode.NotFound, "鏂囦欢涓嶅瓨鍦�); - } - - var response = new HttpResponseMessage(HttpStatusCode.OK); - var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read); - response.Content = new StreamContent(stream); - - // 鏍规嵁鏂囦欢鎵╁睍鍚嶈缃瓹ontentType - var ext = Path.GetExtension(filename).ToLower(); - switch (ext) { - case ".jpg": - case ".jpeg": - response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/jpeg"); - break; - case ".png": - response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/png"); - break; - case ".gif": - response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/gif"); - break; - case ".bmp": - response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/bmp"); - break; - default: - response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream"); - break; - } - - return response; - } - catch (Exception ex) { - return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message); - } - } -} \ No newline at end of file +} diff --git a/core/WCSCore.cs b/core/WCSCore.cs index ea81f71..6363369 100644 --- a/core/WCSCore.cs +++ b/core/WCSCore.cs @@ -206,7 +206,7 @@ return; } - //row -= 100; // 118-1 + //row -= 100; // 111-118 => 1-8 // 鍙綋涔嬪墠鎸囧畾缁堢偣璐ф灦鍚庯紝鎵嶅皾璇曡绠楃粓鐐硅揣浣� if (cgDetail.F_QTY > 2000) { @@ -215,18 +215,23 @@ LogHelper.Info("閲嶉噺瓒呰繃2t锛屼笉鍏佽鍏ュ簱"); // 浼犻�缁欏浗鑷狝GV - if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo { - type_name = "GET_DST", - interaction_info_id = int.Parse(tn_task.S_EQ_TASK_CODE), - info_status = "error", - })) { - LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅鎴愬姛", "HosttoagvTask"); + if (GZRobot.TryGetInteractionInfoId(tn_task.S_CODE, out var id1)) { + if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo { + type_name = "GET_DST", + interaction_info_id = id1, + info_status = "error", + })) { + LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅鎴愬姛", "HosttoagvTask"); + } + else { + LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅澶辫触", "HosttoagvTask"); + } } else { - LogHelper.Info($"鍥借嚜AGV鎺ュ彈瓒呴噸鍙栨秷淇℃伅澶辫触", "HosttoagvTask"); + LogHelper.Info($"AGV锛氳幏鍙栦换鍔tn_task.S_CODE}鐨刬nteraction_info_id澶辫触锛�, "HosttoagvTask"); } - return; + return; // 瓒呴噸浼氳嚜宸眗eturn锛屽鏋滃浗鑷猘gv娌℃帴鍙楀埌涔熶笉闇�鎻愬墠return } else if (cgDetail.F_QTY > 1500) { // 閲嶉噺瓒呰繃1.5t锛岄渶瑕侀�鎷�-2灞傝揣鏋�@@ -276,16 +281,23 @@ LocationHelper.LockLoc(ref endLoc, 1); // 缁堢偣鍏ュ簱閿� // 浼犻�缁欏浗鑷狝GV - if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo { - type_name = "GET_DST", - interaction_info_id = int.Parse(tn_task.S_EQ_TASK_CODE), - info_status = "invalid", - return_value = LocationHelper.GetAgvSite(tn_task.S_END_LOC), // 鐩墠浣跨敤agvsite - })) { - LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅鎴愬姛", "HosttoagvTask"); + if (GZRobot.TryGetInteractionInfoId(tn_task.S_CODE, out var id2)) { + if (GZRobot.UpdateInteractInfo(new UpdateInteractInfo { + type_name = "GET_DST", + interaction_info_id = id2, + info_status = "invalid", + return_value = LocationHelper.GetAgvSite(tn_task.S_END_LOC), // 鐩墠浣跨敤agvsite + })) { + LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅鎴愬姛", "HosttoagvTask"); + } + else { + LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触", "HosttoagvTask"); + return; + } } else { - LogHelper.Info($"鍥借嚜AGV鎺ュ彈缁堢偣淇℃伅澶辫触", "HosttoagvTask"); + LogHelper.Info($"AGV锛氳幏鍙栦换鍔tn_task.S_CODE}鐨刬nteraction_info_id澶辫触锛�, "HosttoagvTask"); + return; } using (var tran = db.Ado.UseTran()) { diff --git a/device/SnapDevice.cs b/device/SnapDevice.cs index f163af8..afabdfe 100644 --- a/device/SnapDevice.cs +++ b/device/SnapDevice.cs @@ -108,6 +108,9 @@ if (!ret) { LogHelper.Info("鎶撳浘澶辫触"); } + else { + LogHelper.Info("鎶撳浘鎴愬姛"); + } return ret; } diff --git a/device/SnapManager.cs b/device/SnapManager.cs index 4b48790..5dee262 100644 --- a/device/SnapManager.cs +++ b/device/SnapManager.cs @@ -22,10 +22,11 @@ // SNAP DateTime now = DateTime.Now; - string path = Settings.CaptureUrl; - string fileName = string.Format("{0}{1}{2}{3}{4}{5}", now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second) + ".jpg"; + //string path = Settings.CaptureUrl; + string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"StaticStorage/image/{now.Year}/{now.Month}/{now.Day}"); + string fileName = string.Format("{0}-{1}-{2}-{3}{4}{5}", now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second) + ".jpg"; string filePath = path + "\\" + fileName; - + string url = Path.Combine(Settings.WebApiUrl, $"static/image/{now.Year}/{now.Month}/{now.Day}", fileName); //// 鑾峰彇褰撳墠鏃堕棿 //DateTime now = DateTime.Now; @@ -42,13 +43,16 @@ //string filePath = Path.Combine(directoryPath, fileName); if (_snapDevice.SnapPictureToFileOK(ref filePath)) { - return filePath; + //return filePath; + return url; } else { return string.Empty; } } + // 澶ф鐜囩敤涓嶅埌锛屽簲璇ヤ笉鏄湰鍦版姄鍥撅紝鍙彲鑳芥槸缃戠粶鎶撳浘锛屽浘鐗囦繚瀛樺埌鍚庡彴 + public static string GetCapturePictureLocal() { return _snapDevice.GetCapturePictureLocalPath(); } diff --git a/dispatch/GZRobot.cs b/dispatch/GZRobot.cs index f4a519f..4fffff2 100644 --- a/dispatch/GZRobot.cs +++ b/dispatch/GZRobot.cs @@ -1,6 +1,7 @@ 锘縰sing System; using System.Collections.Generic; using System.IdentityModel.Protocols.WSTrust; +using System.Linq; using System.Security.Policy; using System.Threading.Tasks; @@ -146,6 +147,10 @@ case "waiting": agv.state = 1; break; + case "dispatched": + //璋冨害娲捐溅锛堝紑濮嬪彇璐э級NEW ADDED + agv.state = 3; + break; case "source_finish": //鍙栬揣瀹屾垚 agv.state = 4; @@ -252,6 +257,31 @@ return list; } + /// <summary> + /// 鏍规嵁娌℃湁interaction_info_name锛坱ask.S_CODE锛夎幏鍙杋nteraction_info_id + /// </summary> + /// <param name="taskCode"></param> + /// <param name="infoId"></param> + /// <returns></returns> + public static bool TryGetInteractionInfoId(string taskCode, out int infoId) { + var list = QueryInteractInfo(3); + if (list.Count == 0) { + LogHelper.Info($"鏌ヤ氦浜掕〃澶辫触锛佹病鏈夎鍙栧埌浜や簰琛紒"); + infoId = 0; + return false; + } + + var data = list.Where(i => i.interaction_info_name == taskCode).FirstOrDefault(); + if (data == null) { + LogHelper.Info($"鏌ヤ氦浜掕〃澶辫触锛佹病鏈塱nteraction_info_name='{taskCode}'鐨勫�锛� + JsonConvert.SerializeObject(list)); + infoId = 0; + return false; + } + + infoId = data.interaction_info_id; + return true; + } + // DOC 6. 浜や簰琛ㄦ煡璇紙鏇存柊缁堢偣璐т綅锛� public static bool UpdateInteractInfo(UpdateInteractInfo interactInfo) { string msg = ""; diff --git a/models/TN_CG_Detail.cs b/models/TN_CG_Detail.cs index e09a2a9..eb02d7a 100644 --- a/models/TN_CG_Detail.cs +++ b/models/TN_CG_Detail.cs @@ -14,7 +14,7 @@ /// 璐у搧 ID /// </summary> public string S_CG_ID { get; set; } = ""; - + public string S_CNTR_CODE { get; set; } = "";//瀹瑰櫒缂栫爜 public string S_ITEM_CODE { get; set; } = "";//璐у搧缂栫爜 @@ -40,7 +40,7 @@ /// </summary> public float F_QTY { get; set; } = 0f; - + public string S_LOC_CODE { get; set; } } } diff --git a/process/TaskProcess.cs b/process/TaskProcess.cs index bd092bd..ad383c5 100644 --- a/process/TaskProcess.cs +++ b/process/TaskProcess.cs @@ -114,16 +114,18 @@ var startSite = LocationHelper.GetAgvSite(mst.S_START_LOC); var endSite = LocationHelper.GetAgvSite(mst.S_END_LOC); // 濡傛灉鎵句笉鍒颁細杩斿洖0锛屽氨鏄亣缁堢偣 - var code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = startSite, order_name = $"tet" }), "p2pdst2", "pgapi"); - + //var code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = startSite, order_name = $"tet" }), "p2pdst2", "pgapi"); + //var code = -1; + var code = 0; if (taskType == TaskName.浜у搧鍏ュ簱) { - code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = startSite, order_name = $"{mst.S_CODE}" }), "p2pdst", "pgapi"); + //code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = startSite, order_name = $"{mst.S_CODE}" }), "p2pdst", "pgapi"); + code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = startSite, order_name = $"{mst.S_CODE}" }), "p2pdst2", "pgapi"); } else { - code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = startSite, dst = endSite }), "p2p", "pgapi"); + code = GZRobot.CreateOrder(mst.S_CODE, mst.N_PRIORITY, JsonConvert.SerializeObject(new { src = startSite, dst = endSite }), "p2pcm", "pgapi"); } - LogHelper.Info($"eq_task_code={code}"); + //LogHelper.Info($"eq_task_code={code}"); // car_type 榛樿涓� // src_ort 璐ф灦鎺掑彿 // dst_orc 璐ф灦灞傛暟锛堝悗涓や釜淇℃伅搴旇涓哄浗鑷狝GV鍐呴儴缁存姢锛屼互鍚庨潰鏇存敼鐨勭粨鏋滀负鍑嗭級 diff --git a/wms/LocationHelper.cs b/wms/LocationHelper.cs index 82ff08c..f6db6c6 100644 --- a/wms/LocationHelper.cs +++ b/wms/LocationHelper.cs @@ -221,7 +221,8 @@ 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) + if (db.Deleteable<TN_Loc_Container>().Where(it => cntrs.Contains(it.S_CNTR_CODE) && it.S_LOC_CODE == loc).ExecuteCommand() > 0 && + db.Updateable<TN_CG_Detail>().SetColumns(d => d.S_LOC_CODE == null).Where(d => cntrs.Contains(d.S_CNTR_CODE)).ExecuteCommand() > 0) // ADD锛氳ˉ鍏呴拡瀵筆DA鍒嗘嫞 { LogHelper.Info($"鍒犻櫎璐т綅瀹瑰櫒鍏崇郴琛ㄦ垚鍔燂紝{log}"); } @@ -294,7 +295,8 @@ using (var tran = db.Ado.UseTran()) { - if (db.Insertable<TN_Loc_Container>(bindLocCntList).ExecuteCommand() > 0) + if (db.Insertable<TN_Loc_Container>(bindLocCntList).ExecuteCommand() > 0 && + db.Updateable<TN_CG_Detail>().SetColumns(d => d.S_LOC_CODE == loc).Where(d => cntrs.Contains(d.S_CNTR_CODE)).ExecuteCommand() > 0) // ADD锛氳ˉ鍏呴拡瀵筆DA鍒嗘嫞 { LogHelper.Info($"鎻掑叆璐т綅瀹瑰櫒鍏崇郴琛ㄦ垚鍔燂紝{log}"); } -- Gitblit v1.9.1