From d09a1552e45e6cfc8f83c0249cd296b8706c0dc2 Mon Sep 17 00:00:00 2001 From: zhaowc <526854230@qq.com> Date: 星期二, 20 五月 2025 09:33:27 +0800 Subject: [PATCH] 修改下发AGV任务接口,修改条码增加功能 --- Wms/WMS.BLL/BllTransServer/RcsServer.cs | 6 Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs | 285 +++++++++++++------- HTML/views/HouseWithinSetting/HopperTransport.html | 6 Wms/Wms/Tools/ApiUrlConfig.cs | 11 Wms/Model/InterFaceModel/AgvModel.cs | 24 + HTML/views/WareHouseSetting/PalletsPrintFrom.html | 4 Wms/Wms/DailyTaskService.cs | 6 Wms/Utility/Tools/RcsHelper.cs | 105 +++++++ Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs | 1 Wms/WMS.BLL/BllQualityServer/InspectionRequestServer.cs | 2 Wms/Wms/Startup.cs | 4 Wms/Wms/Properties/launchSettings.json | 18 Wms/Wms/appsettings.json | 14 Wms/Wms/Controllers/SysController.cs | 2 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | 1 Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs | 8 Wms/Model/InterFaceModel/HttpModel.cs | 167 +++++------ Wms/WMS.BLL/SysServer/PalletsServer.cs | 69 +++- Wms/WMS.IBLL/ISysServer/IPalletsServer.cs | 2 Wms/Wms/Controllers/DownApiController.cs | 67 +++- 20 files changed, 531 insertions(+), 271 deletions(-) diff --git a/HTML/views/HouseWithinSetting/HopperTransport.html b/HTML/views/HouseWithinSetting/HopperTransport.html index 9ad2288..6c075df 100644 --- a/HTML/views/HouseWithinSetting/HopperTransport.html +++ b/HTML/views/HouseWithinSetting/HopperTransport.html @@ -100,9 +100,9 @@ <label class="layui-form-label" style="width: 80px;">瑙勬牸</label> <div class="layui-input-block"> <select name="Standard" lay-filter="Standard" lay-search> - <option value="400">400L</option> - <option value="800">800L</option> - <option value="1000">1000L</option> + <option value="400L">400L</option> + <option value="800L">800L</option> + <option value="1000L">1000L</option> </select> </div> </div> diff --git a/HTML/views/WareHouseSetting/PalletsPrintFrom.html b/HTML/views/WareHouseSetting/PalletsPrintFrom.html index 0b9a541..a0c4fce 100644 --- a/HTML/views/WareHouseSetting/PalletsPrintFrom.html +++ b/HTML/views/WareHouseSetting/PalletsPrintFrom.html @@ -24,9 +24,9 @@ </div> </div> <div class="layui-form-item"> - <label class="layui-form-label">鎵�灞炴帴鏂欒澶�</label> + <label class="layui-form-label">妗惰鏍�(L)</label> <div class="layui-input-block"> - <input type="text" name="DeviceCode" placeholder="璇疯緭鍏ユ墍灞炴帴鏂欒澶�" lay-verify="" autocomplete="off" class="layui-input"> + <input type="text" name="DeviceCode" placeholder="璇疯緭鍏ユ《瑙勬牸" lay-verify="required" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item layui-hide"> diff --git a/Wms/Model/InterFaceModel/AgvModel.cs b/Wms/Model/InterFaceModel/AgvModel.cs index 876dd22..a875472 100644 --- a/Wms/Model/InterFaceModel/AgvModel.cs +++ b/Wms/Model/InterFaceModel/AgvModel.cs @@ -146,18 +146,32 @@ } public class carrierInfo { - /// <summary> - /// 杞藉叿绫诲瀷 - /// </summary> - public string carrierType { get; set; } + ///// <summary> + ///// 杞藉叿绫诲瀷 + ///// </summary> + //public string carrierType { get; set; } /// <summary> /// 杞藉叿缂栧彿 /// </summary> public string carrierCode { get; set; } + + /// <summary> + /// 绔欑偣缂栧彿 + /// </summary> + public string siteCode { get; set; } /// <summary> /// 灞傚彿锛� 浠� 0 寮�濮嬨�佷粠涓嬪線涓婄紪鍙� /// </summary> - public int layer { get; set; } + //public int layer { get; set; } + /// <summary> + /// 绔欑偣缂栧彿 + /// </summary> + public int? carrierDir { get; set; } + + /// <summary> + /// 绔欑偣缂栧彿 + /// </summary> + public object extra { get; set; } } /// <summary> diff --git a/Wms/Model/InterFaceModel/HttpModel.cs b/Wms/Model/InterFaceModel/HttpModel.cs index a2e2dc4..2cb35e1 100644 --- a/Wms/Model/InterFaceModel/HttpModel.cs +++ b/Wms/Model/InterFaceModel/HttpModel.cs @@ -655,154 +655,122 @@ public class AgvTaskDto { /// <summary> - /// 璇锋眰缂栧彿锛屾瘡涓姹傞兘瑕佷竴涓敮涓�缂栧彿 - /// 鍚屼竴涓姹傞噸澶嶆彁浜� 浣跨敤鍚屼竴缂栧彿 - /// 鏄惁蹇呭~锛氭槸 + /// 浠诲姟鍙� /// </summary> - public string reqCode { get; set; } + public string robotTaskCode { get; set; } /// <summary> - /// 璇锋眰鏃堕棿鎴� - /// 鏍煎紡: 鈥測yyy-MM-ddHH:mm:ss鈥� - /// 鏄惁蹇呭~锛氭槸 + /// 褰撳墠鎵ц浠诲姟鐨勬満鍣ㄤ汉鍞竴鏍囪瘑 /// </summary> - public string reqTime { get; set; } + public string singleRobotCode { get; set; } + + public int currentSeq { get; set; } /// <summary> - /// 鍦扮爜 X 鍧愭爣(mm)锛氫换鍔″畬鎴愭椂鏈夊�� - /// 鏄惁蹇呭~锛氬惁 + /// 鑷畾涔夋墿灞曞瓧娈� /// </summary> - public double cooX { get; set; } + public ExtraModel extra { get; set; } + } + + + public class ExtraModel + { + public string async { get; set; } = "0"; /// <summary> - /// 鍦扮爜 Y 鍧愭爣(mm)锛氫换鍔″畬鎴愭椂鏈夊�� - /// 鏄惁蹇呭~锛氬惁 + /// 鍥炶皟鏁版嵁瀵硅薄 /// </summary> - public double cooY { get; set; } + public ExtraModelView values { get; set; } - /// <summary> - /// 褰撳墠浣嶇疆缂栧彿 - /// 浠诲姟寮�濮嬶細璇ヤ綅缃负浠诲姟璧风偣 - /// 璧板嚭鍌ㄤ綅锛氳浣嶇疆涓轰换鍔¤捣鐐� - /// 浠诲姟鍗曞彇娑堬細璇ヤ綅缃负宸ヤ綔浣嶇紪鍙� - /// 浠诲姟缁撴潫锛氳浣嶇疆涓轰换鍔$粓鐐� - /// 鍙栨斁鐢宠锛氬彇鏀炬枡绠辩殑鐐� - /// 鏄惁蹇呭~锛氭槸 - /// </summary> - public string currentPositionCode { get; set; } + } - /// <summary> - /// 鑷畾涔夊瓧娈碉紝涓嶈秴杩� 2000 涓瓧绗� - /// 鏄惁蹇呭~锛氬惁 - /// </summary> - public string data { get; set; } + /// <summary> + /// 鍥炶皟鍙傛暟 + /// </summary> + public class ExtraModelView + { /// <summary> /// 鍦板浘缂栧彿 - /// 鏄惁蹇呭~锛氬惁 /// </summary> public string mapCode { get; set; } /// <summary> - /// 鍦扮爜缂栧彿锛氫换鍔″畬鎴愭椂鏈夊�� - /// 鏄惁蹇呭~锛氬惁 - /// </summary> - public string mapDataCode { get; set; } - - /// <summary> - /// 浠撲綅缂栧彿锛氬弶杞︿笌 CTU 浠诲姟鏃舵湁鍊� - /// 鏄惁蹇呭~锛氬惁 - /// </summary> - public string stgBinCode { get; set; } - - /// <summary> - /// 鏂规硶鍚�, 鍙娇鐢ㄤ换鍔$被鍨嬪仛涓烘柟娉曞悕 - /// 鐢� RCS-2000 浠诲姟妯℃澘閰嶇疆鍚庡苟鍛婄煡涓婂眰绯荤粺 - /// 榛樿浣跨敤鏂瑰紡: - /// start : 浠诲姟寮�濮� - /// outbin : 璧板嚭鍌ㄤ綅 - /// end : 浠诲姟缁撴潫 - /// cancel : 浠诲姟鍗曞彇娑� - /// apply锛欳TU 鏂欑鍙栨斁鐢宠 - /// 鏄惁蹇呭~锛氭槸 + /// 鍥炶皟浠诲姟 + /// <para> start:浠诲姟寮�濮�,outbin:璧板嚭鍌ㄤ綅,end:浠诲姟瀹屾垚</para> /// </summary> public string method { get; set; } /// <summary> - /// 璐ф灦缂栧彿锛氳儗璐ф灦鏃舵湁鍊� - /// 鏄惁蹇呭~锛氬惁 + /// 杞藉叿缂栧彿 /// </summary> - public string podCode { get; set; } + public string carrierCode { get; set; } /// <summary> - /// 鍒搴斿湴鍥剧殑浠诲姟瀹屾垚鏃舵湁鍊� - /// 宸�: 180 - /// 鍙�: 0 - /// 涓�: 90 - /// 涓�: -90 - /// 鏄惁蹇呭~锛氬惁 + /// 杞藉叿鍚嶇О /// </summary> - public string podDir { get; set; } + public string carrierName { get; set; } /// <summary> - /// 鐗╂枡缂栧彿 - /// 鏄惁蹇呭~锛氬惁 + /// 杞藉叿绫诲瀷 /// </summary> - public string materialLot { get; set; } + public string carrierType { get; set; } /// <summary> - /// AGV 缂栧彿锛堝悓 agvCode 锛� - /// 鏄惁蹇呭~锛氬惁 + /// 杞藉叿绉嶇被 /// </summary> - public string robotCode { get; set; } + public string carrierCategory { get; set; } + /// <summary> - /// 褰撳墠浠诲姟鍗曞彿 - /// 鏄惁蹇呭~锛氭槸 + /// 褰撳墠绔欑偣缂栧彿 /// </summary> - public string taskCode { get; set; } + public string slotCode { get; set; } /// <summary> - /// 宸ヤ綔浣嶏紝涓� RCS-2000 绔厤缃殑浣嶇疆鍚嶇О涓�鑷淬�備换鍔″畬鎴愭椂鏈夊�硷紝涓庣敓鎴愪换鍔″崟鎺ュ彛涓殑 wbCode 涓�鑷� - /// 鏄惁蹇呭~锛氬惁 + /// 绔欑偣鍒悕 + /// <para>1.璧板嚭鍌ㄤ綅:璧风偣銆�2.浠诲姟瀹屾垚:鐩爣鐐�</para> /// </summary> - public string wbCode { get; set; } + public string slotName { get; set; } /// <summary> - /// 瀹瑰櫒缂栧彿 - /// 鏄惁蹇呭~锛氬惁 + /// 瀛樺偍绫诲瀷(BIN:浠撲綅,SITE:绔欑偣) /// </summary> - public string ctnrCode { get; set; } + public string slotCategory { get; set; } /// <summary> - /// 瀹瑰櫒绫诲瀷 - /// 鏄惁蹇呭~锛氬惁 + /// x鍧愭爣 /// </summary> - public string ctnrType { get; set; } + public decimal? x { get; set; } /// <summary> - /// 宸烽亾缂栧彿 - /// 鏄惁蹇呭~锛氬惁 + /// y鍧愭爣 /// </summary> - public string roadWayCode { get; set; } + public decimal? y { get; set; } /// <summary> - /// 宸烽亾鍐呴『搴忓彿 - /// 宸烽亾灏炬槸 0锛屽埌宸烽亾澶翠緷娆¢�掑 1 - /// 鏄惁蹇呭~锛氬惁 + /// 鏈哄櫒浜虹绫� /// </summary> - public string seq { get; set; } + public string amrCategory { get; set; } /// <summary> - /// 璁惧缂栧彿锛屽姊抽娇寮忓伐浣滅珯銆佽緭閫佺嚎绛夛紝涓�鑸娇鐢ㄤ簬 CTU 鍦烘櫙銆傜郴缁熸牴鎹粨浣嶅畾浣嶅埌鍏宠仈鐨勮澶囩紪鍙枫�� - /// 鏄惁蹇呭~锛氬惁 + /// 鏈哄櫒浜虹被鍨� /// </summary> - public string eqpCode { get; set; } + public string amrType { get; set; } + + + public int? pileCount { get; set; } + public int? layerNo { get; set; } + public string amrCode { get; set; } + } - /// <summary> - /// WMS鍥炲簲AGV淇℃伅 - /// </summary> - public class OutCommanAgvDto +} + + +/// <summary> +/// WMS鍥炲簲AGV淇℃伅 +/// </summary> +public class OutCommanAgvDto { /// <summary> /// 杩斿洖鐮� @@ -853,5 +821,18 @@ public string data { get; set; } public string reqCode { get; set; } } + +/// <summary> +/// agv璇锋眰鎺ュ彛搴旂瓟 +/// </summary> +public class AgvResultModel2 +{ + public string code { get; set; } + public string message { get; set; } + public Data da { get; set; } +} +public class Data +{ + public string robotTaskCode { get; set; } #endregion } diff --git a/Wms/Utility/Tools/RcsHelper.cs b/Wms/Utility/Tools/RcsHelper.cs index 0cd9b43..568bfda 100644 --- a/Wms/Utility/Tools/RcsHelper.cs +++ b/Wms/Utility/Tools/RcsHelper.cs @@ -1,15 +1,19 @@ 锘縰sing Model.InterFaceModel; +using SqlSugar; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Text; using ZXing; using static Model.InterFaceModel.RCSModel; +using WMS.Entity.Context; +using WMS.Entity.SysEntity; namespace Utility.Tools { public static class RcsHelper { + private static readonly SqlSugarScope Db = DataContext.Db; /// <summary> /// 涓嬪彂浠诲姟 /// </summary> @@ -21,12 +25,16 @@ public static bool CreateTaskForAgv(TaskDetial taskDetial, string url, out string agvMsg, string priority = null) { bool result = false; + var tasktype = "F12"; + + //璺ㄦゼ灞備换鍔asktype鍊艰祴鍊尖�︹�� + //tasktype = ""; List<targetRoute> pahtList = new List<targetRoute>(); //璧峰浣嶇疆 targetRoute royte1 = new targetRoute(); royte1.seq = 0; - royte1.type = "ZONE"; + royte1.type = "SITE"; royte1.code = taskDetial.Startport; pahtList.Add(royte1); @@ -34,18 +42,23 @@ //鐩爣浣嶇疆 targetRoute royte2 = new targetRoute(); royte2.seq = 0; - royte2.type = "ZONE"; + royte2.type = "SITE"; royte2.code = taskDetial.Endport; pahtList.Add(royte2); AgvCreateTaskModel taskModel = new AgvCreateTaskModel(); - taskModel.taskType = "PF-LMR-COMMON"; + taskModel.taskType = tasktype; taskModel.targetRoute = pahtList; + + //AGV浠诲姟涓嬪彂鏃跺鍔爃earder:X-LR-REQUEST-ID,鍊间负闅忔満鏁� + long ran = DateTime.Now.Ticks; + Dictionary<string, string> key = new Dictionary<string, string>(); + key.Add("X-LR-REQUEST-ID", ran.ToString()); // 姝e紡杩愯绋嬪簭鏀惧紑 var jsonData = JsonConvert.SerializeObject(taskModel); - string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV"); + string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV", key); //瑙f瀽杩斿洖鏁版嵁 var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); if (agvModel.Code == "0") @@ -64,5 +77,89 @@ return result; } + /// <summary> + /// 涓嬪彂AGV缁戝畾杞藉叿鍜岀珯鐐� + /// </summary> + /// <param name="palletNo">妗跺彿L</param> + /// <param name="url">璇锋眰鍦板潃</param> + /// <param name="agvMsg">杩斿洖淇℃伅</param> + /// <param name="locateNo">杩斿洖淇℃伅</param> + /// <returns></returns> + public static bool BindPalletAndSite(string palletNo,string locateNo,string url,out string agvMsg) + { + + bool result = false; + carrierInfo carrierInfo = new carrierInfo(); + carrierInfo.carrierCode = palletNo; + carrierInfo.siteCode = locateNo; + + //AGV浠诲姟涓嬪彂鏃跺鍔爃earder:X-LR-REQUEST-ID,鍊间负闅忔満鏁� + long ran = DateTime.Now.Ticks; + Dictionary<string, string> key = new Dictionary<string, string>(); + key.Add("X-LR-REQUEST-ID", ran.ToString()); + + // 姝e紡杩愯绋嬪簭鏀惧紑 + var jsonData = JsonConvert.SerializeObject(carrierInfo); + string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护", "AGV", key); + //瑙f瀽杩斿洖鏁版嵁 + var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); + if (agvModel.Code == "0") + { + result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔� + + agvMsg = ""; + } + else + { + var logStr = $@".\log\AGV\涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; + LogFile.SaveLogToFile($"涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护寮傚父锛�( {agvModel.Message} ),", logStr); + + agvMsg = agvModel.Message; + } + + return result; + } + + /// <summary> + /// 涓嬪彂AGV瑙g粦杞藉叿鍜岀珯鐐� + /// </summary> + /// <param name="palletType">瀹瑰櫒绫诲瀷1锛�400L锛�2锛�800/1000L</param> + /// <param name="url">璇锋眰鍦板潃</param> + /// <param name="agvMsg">杩斿洖淇℃伅</param> + /// <param name="locateNo">杩斿洖淇℃伅</param> + /// <returns></returns> + public static bool UnBindPalletAndSite(string palletType, string locateNo,string url, out string agvMsg) + { + bool result = false; + carrierInfo carrierInfo = new carrierInfo(); + carrierInfo.carrierCode = palletType; + carrierInfo.siteCode = locateNo; + + //AGV浠诲姟涓嬪彂鏃跺鍔爃earder:X-LR-REQUEST-ID,鍊间负闅忔満鏁� + long ran = DateTime.Now.Ticks; + Dictionary<string, string> key = new Dictionary<string, string>(); + key.Add("X-LR-REQUEST-ID", ran.ToString()); + + // 姝e紡杩愯绋嬪簭鏀惧紑 + var jsonData = JsonConvert.SerializeObject(carrierInfo); + string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV缁戝畾杞藉叿鍛戒护", "AGV", key); + //瑙f瀽杩斿洖鏁版嵁 + var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); + if (agvModel.Code == "0") + { + result = true;//缁欎笅杞︿笅鍙戜换鍔℃垚鍔� + + agvMsg = ""; + } + else + { + var logStr = $@".\log\AGV\涓嬪彂缁橝GV瑙g粦杞藉叿鍛戒护" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; + LogFile.SaveLogToFile($"涓嬪彂缁橝GV瑙g粦杞藉叿鍛戒护寮傚父锛�( {agvModel.Message} ),", logStr); + + agvMsg = agvModel.Message; + } + + return result; + } } } diff --git a/Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs b/Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs index 24196ca..c7e5489 100644 --- a/Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs +++ b/Wms/WMS.BLL/BllCheckServer/StockCheckServer.cs @@ -1435,6 +1435,7 @@ try { + //绋嬪簭姝e紡鍙戝竷鍚庢斁寮� var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") var response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS"); diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs index 6526b6b..dca0979 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs @@ -1177,6 +1177,7 @@ try { + var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS"); var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") diff --git a/Wms/WMS.BLL/BllQualityServer/InspectionRequestServer.cs b/Wms/WMS.BLL/BllQualityServer/InspectionRequestServer.cs index 19db4a1..874db24 100644 --- a/Wms/WMS.BLL/BllQualityServer/InspectionRequestServer.cs +++ b/Wms/WMS.BLL/BllQualityServer/InspectionRequestServer.cs @@ -209,6 +209,7 @@ string response = ""; try { + var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") response = HttpHelper.DoPost(url, jsonData, "涓婁紶ERP鍙栨牱娑堣�楅噺杩囪处", "ERP"); var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") @@ -480,6 +481,7 @@ try { + var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS"); var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") diff --git a/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs b/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs index 1c4763c..f497068 100644 --- a/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs +++ b/Wms/WMS.BLL/BllTransServer/HopperTransportServer.cs @@ -217,7 +217,7 @@ /// <param name="lotNo">鎵规</param> /// <param name="userId">鎿嶄綔浜�</param> /// <exception cref="Exception"></exception> - public void jiaoLiaoHopper(string areaNo,string endLocate,string plnStatus,string standard,string skuNo,string lotNo,string url,int userId) + public void jiaoLiaoHopper(string areaNo,string endLocate,string plnStatus,string standard,string skuNo,string lotNo,string url, string bindUrl, int userId) { try { @@ -306,7 +306,7 @@ { throw new Exception("鏈壘鍒板搴旀《淇℃伅"); } - resultYi = YikuTask(palletModel.PalletNo, taskNo, url); + resultYi = YikuTask(palletModel.PalletNo, taskNo, url,bindUrl); } #endregion //璧峰鍌ㄤ綅鍦板潃淇℃伅 @@ -358,29 +358,41 @@ string agvMsg = string.Empty; //缁欎笅杞︿笅鍙戜换鍔� logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg); - if (agvResult)//鎴愬姛 + //涓嬪彂杞藉叿绫诲瀷 + var bind = RcsHelper.BindPalletAndSite(palletModel.PalletNo, palletModel.LocatNo, url, out string agvBindMsg); + if (bind) { - //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� - logTaskEntry.IsSuccess = 1; - logTaskEntry.IsSend = 0; - //logTaskEntry.IsCancel = 0; - logTaskEntry.BackDate = DateTime.Now; - logTaskEntry.Status = "1";//姝e湪鎵ц - Db.Insertable(logTaskEntry).ExecuteCommand(); + var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg); + if (agvResult)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry.IsSuccess = 1; + logTaskEntry.IsSend = 0; + //logTaskEntry.IsCancel = 0; + logTaskEntry.BackDate = DateTime.Now; + logTaskEntry.Status = "1";//姝e湪鎵ц + Db.Insertable(logTaskEntry).ExecuteCommand(); - startLoction.Status = "3";//鍑哄簱涓� - Db.Updateable(startLoction).ExecuteCommand(); + startLoction.Status = "3";//鍑哄簱涓� + Db.Updateable(startLoction).ExecuteCommand(); - endLocateInfo.Status = "2";//鍏ュ簱涓� - Db.Updateable(endLocateInfo).ExecuteCommand(); + endLocateInfo.Status = "2";//鍏ュ簱涓� + Db.Updateable(endLocateInfo).ExecuteCommand(); + } + else//澶辫触 + { + logTaskEntry.IsSuccess = 0; + logTaskEntry.Information = agvMsg; + Db.Insertable(logTaskEntry).ExecuteCommand(); + } } - else//澶辫触 + else { logTaskEntry.IsSuccess = 0; - logTaskEntry.Information = agvMsg; + logTaskEntry.Information = "璐ф灦涓庤揣浣嶇粦瀹氬け璐ワ紝鍘熷洜锛�"+agvBindMsg; Db.Insertable(logTaskEntry).ExecuteCommand(); } + } //鎻愪氦浜嬪姟 Db.CommitTran(); @@ -405,7 +417,7 @@ /// <param name="lotNo">鎵规</param> /// <param name="userId">鎿嶄綔浜�</param> /// <exception cref="Exception"></exception> - public void jiaoCheHopper(string areaNo, string StartLocate, string plnNo, string plnStatus, decimal weight, string skuNo, string lotNo, string url,int userId) + public void jiaoCheHopper(string areaNo, string StartLocate, string plnNo, string plnStatus, decimal weight, string skuNo, string lotNo, string url,string bindUrl,int userId) { try { @@ -550,29 +562,42 @@ string agvMsg = string.Empty; //缁欎笅杞︿笅鍙戜换鍔� logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg); - if (agvResult)//鎴愬姛 + //涓嬪彂杞藉叿涓庤揣浣嶇粦瀹� + var bind = RcsHelper.BindPalletAndSite(plnNo, StartLocate, bindUrl, out string agvBindMsg); + if (bind) { - //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� - logTaskEntry.IsSuccess = 1; - logTaskEntry.IsSend = 0; - //logTaskEntry.IsCancel = 0; - logTaskEntry.BackDate = DateTime.Now; - logTaskEntry.Status = "1";//姝e湪鎵ц - Db.Insertable(logTaskEntry).ExecuteCommand(); + var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg); + if (agvResult)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry.IsSuccess = 1; + logTaskEntry.IsSend = 0; + //logTaskEntry.IsCancel = 0; + logTaskEntry.BackDate = DateTime.Now; + logTaskEntry.Status = "1";//姝e湪鎵ц + Db.Insertable(logTaskEntry).ExecuteCommand(); - startLoction.Status = "3";//鍑哄簱涓� - Db.Updateable(startLoction).ExecuteCommand(); + startLoction.Status = "3";//鍑哄簱涓� + Db.Updateable(startLoction).ExecuteCommand(); - endLocatInfo.Status = "2";//鍏ュ簱涓� - Db.Updateable(endLocatInfo).ExecuteCommand(); + endLocatInfo.Status = "2";//鍏ュ簱涓� + Db.Updateable(endLocatInfo).ExecuteCommand(); + } + else//澶辫触 + { + logTaskEntry.IsSuccess = 0; + logTaskEntry.Information = agvMsg; + Db.Insertable(logTaskEntry).ExecuteCommand(); + } + } - else//澶辫触 + else { logTaskEntry.IsSuccess = 0; - logTaskEntry.Information = agvMsg; + logTaskEntry.Information = "璐ф灦涓庤揣浣嶇粦瀹氬け璐ワ紝鍘熷洜锛�"+agvBindMsg; Db.Insertable(logTaskEntry).ExecuteCommand(); } + //鎻愪氦浜嬪姟 Db.CommitTran(); @@ -727,7 +752,7 @@ /// <param name="deviceStation">鍙枡鐐逛綅锛氣�漣nput鈥�-鍏ュ彛锛堝彨鑴忔《锛夛紝鈥漮utput鈥�-鍑哄彛锛堝噣妗剁敵璇峰偍浣嶏級</param> /// <param name="status"></param> /// <exception cref="Exception"></exception> - public void RCSCleanRequest(string deviceID,string deviceStation,string status,string url) + public void RCSCleanRequest(string deviceID,string deviceStation,string status,string url,string bindUrl) { try { @@ -859,29 +884,41 @@ string agvMsg = string.Empty; //缁欎笅杞︿笅鍙戜换鍔� logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg); - if (agvResult)//鎴愬姛 + //涓嬪彂杞藉叿涓庤揣浣嶇粦瀹� + var bind = RcsHelper.BindPalletAndSite(palletModel.PalletNo, palletModel.LocatNo, bindUrl, out string agvBindMsg); + if (bind) { - //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� - logTaskEntry.IsSuccess = 1; - logTaskEntry.IsSend = 0; - //logTaskEntry.IsCancel = 0; - logTaskEntry.BackDate = DateTime.Now; - logTaskEntry.Status = "1";//姝e湪鎵ц - Db.Insertable(logTaskEntry).ExecuteCommand(); + var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg); + if (agvResult)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry.IsSuccess = 1; + logTaskEntry.IsSend = 0; + //logTaskEntry.IsCancel = 0; + logTaskEntry.BackDate = DateTime.Now; + logTaskEntry.Status = "1";//姝e湪鎵ц + Db.Insertable(logTaskEntry).ExecuteCommand(); - startLoction.Status = "3";//鍑哄簱涓� - Db.Updateable(startLoction).ExecuteCommand(); + startLoction.Status = "3";//鍑哄簱涓� + Db.Updateable(startLoction).ExecuteCommand(); - endLoction.Status = "2";//鍏ュ簱涓� - Db.Updateable(endLoction).ExecuteCommand(); + endLoction.Status = "2";//鍏ュ簱涓� + Db.Updateable(endLoction).ExecuteCommand(); + } + else//澶辫触 + { + logTaskEntry.IsSuccess = 0; + logTaskEntry.Information = agvMsg; + Db.Insertable(logTaskEntry).ExecuteCommand(); + } } - else//澶辫触 + else { logTaskEntry.IsSuccess = 0; - logTaskEntry.Information = agvMsg; + logTaskEntry.Information = agvBindMsg; Db.Insertable(logTaskEntry).ExecuteCommand(); } + //鎻愪氦浜嬪姟 Db.CommitTran(); } @@ -893,7 +930,7 @@ } } - private bool YikuTask(string palletNo, string taskNo, string url) + private bool YikuTask(string palletNo, string taskNo, string url,string bindUrl) { try { @@ -985,33 +1022,47 @@ string agvMsg = string.Empty; //缁欎笅杞︿笅鍙戜换鍔� logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg, "70"); - if (agvResult)//鎴愬姛 + //涓嬪彂杞藉叿涓庤揣浣嶇粦瀹� + var bind = RcsHelper.BindPalletAndSite(palletInfoYi.LocatNo, palletInfoYi.PalletNo, bindUrl, out string agvBindMsg); + if (bind) { - //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� - logTaskEntry.IsSuccess = 1; - logTaskEntry.IsSend = 0; - //logTaskEntry.IsCancel = 0; - logTaskEntry.BackDate = DateTime.Now; - logTaskEntry.Status = "1";//姝e湪鎵ц - Db.Insertable(logTaskEntry).ExecuteCommand(); + var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg, "70"); + if (agvResult)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry.IsSuccess = 1; + logTaskEntry.IsSend = 0; + //logTaskEntry.IsCancel = 0; + logTaskEntry.BackDate = DateTime.Now; + logTaskEntry.Status = "1";//姝e湪鎵ц + Db.Insertable(logTaskEntry).ExecuteCommand(); - //淇敼绉诲嚭鍌ㄤ綅鐘舵�� - locatInfo.Status = "5";//绉诲嚭涓� - Db.Updateable(locatInfo).ExecuteCommand(); + //淇敼绉诲嚭鍌ㄤ綅鐘舵�� + locatInfo.Status = "5";//绉诲嚭涓� + Db.Updateable(locatInfo).ExecuteCommand(); - //淇敼绉诲叆鍌ㄤ綅鐘舵�� - transferLocat.Status = "4";//绉诲叆涓� - Db.Updateable(transferLocat).ExecuteCommand(); + //淇敼绉诲叆鍌ㄤ綅鐘舵�� + transferLocat.Status = "4";//绉诲叆涓� + Db.Updateable(transferLocat).ExecuteCommand(); + } + else//澶辫触 + { + logTaskEntry.IsSuccess = 0; + logTaskEntry.Information = agvMsg; + Db.Insertable(logTaskEntry).ExecuteCommand(); + + throw new Exception($"缁欏皬杞︿笅鍙戠Щ搴撲换鍔″け璐ワ紝妗跺彿锛歿palletInfoYi.PalletNo}"); + } } - else//澶辫触 + else { logTaskEntry.IsSuccess = 0; - logTaskEntry.Information = agvMsg; + logTaskEntry.Information = agvBindMsg; Db.Insertable(logTaskEntry).ExecuteCommand(); throw new Exception($"缁欏皬杞︿笅鍙戠Щ搴撲换鍔″け璐ワ紝妗跺彿锛歿palletInfoYi.PalletNo}"); } + } } return true; @@ -1027,7 +1078,7 @@ /// <param name="taskNo"></param> /// <param name="url"></param> /// <exception cref="Exception"></exception> - public void OutBinAgv(string taskNo,string url) + public void OutBinAgv(string taskNo,string url, string bindUrl) { try { @@ -1080,33 +1131,47 @@ string agvMsg = string.Empty; //缁欎笅杞︿笅鍙戜换鍔� logTaskInfoZ.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg, "70"); - if (agvResult)//鎴愬姛 + //涓嬪彂杞藉叿涓庤揣浠粦瀹� + var bind = RcsHelper.BindPalletAndSite(logTaskInfoZ.PalletNo, logTaskInfoZ.StartLocat, bindUrl, out string agvBindMsg); + if (bind) { - //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� - logTaskInfoZ.IsSuccess = 1; - logTaskInfoZ.IsSend = 0; - //logTaskEntry.IsCancel = 0; - logTaskInfoZ.BackDate = DateTime.Now; - logTaskInfoZ.Status = "1";//姝e湪鎵ц - Db.Insertable(logTaskInfoZ).ExecuteCommand(); + var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg, "70"); + if (agvResult)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskInfoZ.IsSuccess = 1; + logTaskInfoZ.IsSend = 0; + //logTaskEntry.IsCancel = 0; + logTaskInfoZ.BackDate = DateTime.Now; + logTaskInfoZ.Status = "1";//姝e湪鎵ц + Db.Insertable(logTaskInfoZ).ExecuteCommand(); - //淇敼绉诲嚭鍌ㄤ綅鐘舵�� - startLocatInfoZ.Status = "5";//绉诲嚭涓� - Db.Updateable(startLocatInfoZ).ExecuteCommand(); + //淇敼绉诲嚭鍌ㄤ綅鐘舵�� + startLocatInfoZ.Status = "5";//绉诲嚭涓� + Db.Updateable(startLocatInfoZ).ExecuteCommand(); - //淇敼绉诲叆鍌ㄤ綅鐘舵�� - endLocatInfoZ.Status = "4";//绉诲叆涓� - Db.Updateable(endLocatInfoZ).ExecuteCommand(); + //淇敼绉诲叆鍌ㄤ綅鐘舵�� + endLocatInfoZ.Status = "4";//绉诲叆涓� + Db.Updateable(endLocatInfoZ).ExecuteCommand(); + } + else//澶辫触 + { + logTaskInfoZ.IsSuccess = 0; + logTaskInfoZ.Information = agvMsg; + Db.Insertable(logTaskInfoZ).ExecuteCommand(); + + throw new Exception($"缁欏皬杞︿笅鍙戠Щ搴撲换鍔″け璐ワ紝妗跺彿锛歿logTaskInfoZ.PalletNo}"); + } } - else//澶辫触 + else { logTaskInfoZ.IsSuccess = 0; - logTaskInfoZ.Information = agvMsg; + logTaskInfoZ.Information = agvBindMsg; Db.Insertable(logTaskInfoZ).ExecuteCommand(); throw new Exception($"缁欏皬杞︿笅鍙戠Щ搴撲换鍔″け璐ワ紝妗跺彿锛歿logTaskInfoZ.PalletNo}"); } + } } catch (Exception e) @@ -1122,7 +1187,7 @@ /// </summary> /// <param name="url"></param> /// <exception cref="Exception"></exception> - public void TransferBackTimer(string url) + public void TransferBackTimer(string url,string bindUrl) { try { @@ -1197,33 +1262,47 @@ string agvMsg = string.Empty; //缁欎笅杞︿笅鍙戜换鍔� logTaskEntry.SendDate = DateTime.Now;//鍙戦�佹椂闂� - var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg); - if (agvResult)//鎴愬姛 + //涓嬪彂杞藉叿涓庤揣浣嶇粦瀹� + var bind = RcsHelper.BindPalletAndSite(detailInfo.PalletNo, detailInfo.LocatNo, bindUrl, out string agvBindMsg); + if (bind) { - //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� - logTaskEntry.IsSuccess = 1; - logTaskEntry.IsSend = 0; - //logTaskEntry.IsCancel = 0; - logTaskEntry.BackDate = DateTime.Now; - logTaskEntry.Status = "1";//姝e湪鎵ц - Db.Insertable(logTaskEntry).ExecuteCommand(); + var agvResult = RcsHelper.CreateTaskForAgv(task, url, out agvMsg); + if (agvResult)//鎴愬姛 + { + //璇锋眰鎴愬姛淇敼浠诲姟琛ㄧ浉搴斿瓧娈电姸鎬� + logTaskEntry.IsSuccess = 1; + logTaskEntry.IsSend = 0; + //logTaskEntry.IsCancel = 0; + logTaskEntry.BackDate = DateTime.Now; + logTaskEntry.Status = "1";//姝e湪鎵ц + Db.Insertable(logTaskEntry).ExecuteCommand(); - //淇敼绉诲嚭鍌ㄤ綅鐘舵�� - locatModel.Status = "5";//绉诲嚭涓� - Db.Updateable(locatModel).ExecuteCommand(); + //淇敼绉诲嚭鍌ㄤ綅鐘舵�� + locatModel.Status = "5";//绉诲嚭涓� + Db.Updateable(locatModel).ExecuteCommand(); - //淇敼绉诲叆鍌ㄤ綅鐘舵�� - endLocatInfo.Status = "4";//绉诲叆涓� - Db.Updateable(endLocatInfo).ExecuteCommand(); + //淇敼绉诲叆鍌ㄤ綅鐘舵�� + endLocatInfo.Status = "4";//绉诲叆涓� + Db.Updateable(endLocatInfo).ExecuteCommand(); + } + else//澶辫触 + { + logTaskEntry.IsSuccess = 0; + logTaskEntry.Information = agvMsg; + Db.Insertable(logTaskEntry).ExecuteCommand(); + + throw new Exception($"缁欏皬杞︿笅鍙戠Щ搴撲换鍔″け璐ワ紝妗跺彿锛歿detailInfo.PalletNo}"); + } } - else//澶辫触 + else { logTaskEntry.IsSuccess = 0; - logTaskEntry.Information = agvMsg; + logTaskEntry.Information = agvBindMsg; Db.Insertable(logTaskEntry).ExecuteCommand(); throw new Exception($"缁欏皬杞︿笅鍙戠Щ搴撲换鍔″け璐ワ紝妗跺彿锛歿detailInfo.PalletNo}"); } + } } //鎻愪氦浜嬪姟 diff --git a/Wms/WMS.BLL/BllTransServer/RcsServer.cs b/Wms/WMS.BLL/BllTransServer/RcsServer.cs index 08815b0..0417f22 100644 --- a/Wms/WMS.BLL/BllTransServer/RcsServer.cs +++ b/Wms/WMS.BLL/BllTransServer/RcsServer.cs @@ -1294,8 +1294,12 @@ } // 姝e紡杩愯绋嬪簭鏀惧紑 + //AGV浠诲姟涓嬪彂鏃跺鍔爃earder:X-LR-REQUEST-ID,鍊间负闅忔満鏁� + long ran = DateTime.Now.Ticks; + Dictionary<string, string> key = new Dictionary<string, string>(); + key.Add("X-LR-REQUEST-ID", ran.ToString()); var jsonData = JsonConvert.SerializeObject(agvTask); - string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV"); + string response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV",key); //瑙f瀽杩斿洖鏁版嵁 var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); if (agvModel.Code == "0") diff --git a/Wms/WMS.BLL/SysServer/PalletsServer.cs b/Wms/WMS.BLL/SysServer/PalletsServer.cs index d43f570..dc5f08f 100644 --- a/Wms/WMS.BLL/SysServer/PalletsServer.cs +++ b/Wms/WMS.BLL/SysServer/PalletsServer.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; +using System.Security.Policy; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -9,6 +10,7 @@ using Model.ModelDto.LogDto; using Model.ModelDto.SysDto; using SqlSugar; +using Utility.Tools; using WMS.BLL.LogServer; using WMS.Entity.Context; using WMS.Entity.DataEntity; @@ -121,7 +123,7 @@ /// <param name="locatNo"></param> /// <param name="userId"></param> /// <exception cref="Exception"></exception> - public void AddPallets(string palletNo,string locatNo, string deviceCode, int userId) + public void AddPallets(string palletNo,string locatNo, string deviceCode, string url, int userId) { var db = DataContext.Db; try @@ -157,31 +159,50 @@ { throw new Exception("鏂版坊鍔犵殑妗跺彧鑳界粦瀹氬噣妗跺尯"); } + //if (!string.IsNullOrEmpty(deviceCode)) + //{ + // var areaInfo = db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode.Contains(deviceCode)); + // if (areaInfo == null) + // { + // throw new Exception("鏈煡鍒拌澶囨墍灞炲尯鍩熶俊鎭�"); + // } + // //125璁惧鏄帴鏂欏拰娣锋枡涓�浣撴満 + // if (deviceCode != "125") + // { + // if (!areaInfo.AreaName.Contains("鎺ユ枡璁惧")) + // { + // throw new Exception("鍙兘缁戝畾鎺ユ枡璁惧"); + // } + // if (areaInfo.WareHouseNo != "M03") + // { + // throw new Exception("鍙湁澶у崟浣撹溅闂存墠鑳界粦瀹氳澶�"); + // } + // } + //} if (!string.IsNullOrEmpty(deviceCode)) { - var areaInfo = db.Queryable<SysStorageArea>().First(w => w.IsDel == "0" && w.DeviceCode.Contains(deviceCode)); - if (areaInfo == null) + switch (deviceCode) { - throw new Exception("鏈煡鍒拌澶囨墍灞炲尯鍩熶俊鎭�"); + case "400": + deviceCode = "400L"; + break; + case "800": + deviceCode = "800L"; + break; + case "1000": + deviceCode = "1000L"; + break; + default: + throw new Exception("涓嶈兘褰曞叆400锛�800锛�1000浠ュ鐨勫��"); } - //125璁惧鏄帴鏂欏拰娣锋枡涓�浣撴満 - if (deviceCode != "125") - { - if (!areaInfo.AreaName.Contains("鎺ユ枡璁惧")) - { - throw new Exception("鍙兘缁戝畾鎺ユ枡璁惧"); - } - if (areaInfo.WareHouseNo != "M03") - { - throw new Exception("鍙湁澶у崟浣撹溅闂存墠鑳界粦瀹氳澶�"); - } - } + } //寮�鍚簨鍔� db.BeginTran(); palletModel = new SysPallets(); palletModel.PalletNo = palletNo; + palletModel.Standard = deviceCode; palletModel.Type = "0"; palletModel.Status = "0"; palletModel.CreateUser = userId; @@ -221,7 +242,7 @@ PalletStatus = "0",//鍑�妗� - UDF1 = deviceCode, + Standard = deviceCode, //瑙勬牸 IsDel = "0", CreateUser = userId, @@ -235,6 +256,20 @@ locatModel.Status = "1";//鏈夌墿鍝� db.Updateable(locatModel).ExecuteCommand(); + //涓嬪彂AGV缁戝畾杞藉叿鎺ュ彛 + //璋冪敤AGV鎺ュ彛涓嬪彂浠诲姟 + //string agvMsg = string.Empty; + ////缁欎笅杞︿笅鍙戜换鍔� + //var agvResult = RcsHelper.BindPalletAndSite(palletNo, locatNo,url, out agvMsg); + //if (agvResult)//鎴愬姛 + //{ + // //澧炲姞鏃ュ織 + //} + //else//澶辫触 + //{ + // throw new Exception("灏忚溅杞藉叿鍜屽簱浣嶅叧绯荤粦瀹氬け璐ワ紝鍘熷洜锛�"+agvMsg); + //} + //鎻愪氦浜嬪姟 db.CommitTran(); } diff --git a/Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs b/Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs index cdda1bb..aa4329b 100644 --- a/Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs +++ b/Wms/WMS.IBLL/IBllTransServer/IHopperTransportServer.cs @@ -16,8 +16,8 @@ List<string> GetLotNoBySku(string skuNo); List<string> GetSku(); - void jiaoLiaoHopper(string areaNo, string endLocate, string plnStatus, string standard, string skuNo, string lotNo, string url, int userId); - void jiaoCheHopper(string areaNo, string StartLocate, string plnNo, string plnStatus, decimal weight, string skuNo, string lotNo, string url, int userId); + void jiaoLiaoHopper(string areaNo, string endLocate, string plnStatus, string standard, string skuNo, string lotNo, string url,string bindUrl, int userId); + void jiaoCheHopper(string areaNo, string StartLocate, string plnNo, string plnStatus, decimal weight, string skuNo, string lotNo, string url, string bindUrl, int userId); /// <summary> /// 灏忚溅璧板嚭鍌ㄤ綅鍥炰紶浜嬩欢 @@ -25,7 +25,7 @@ /// <param name="taskNo"></param> /// <param name="url"></param> /// <exception cref="Exception"></exception> - void OutBinAgv(string taskNo, string url); + void OutBinAgv(string taskNo, string url,string bindUrl); /// <summary> /// 灏忚溅鍙嶉浠诲姟瀹屾垚 @@ -44,6 +44,6 @@ /// <param name="deviceStation">鍙枡鐐逛綅锛氣�漣nput鈥�-鍏ュ彛锛堝彨鑴忔《锛夛紝鈥漮utput鈥�-鍑哄彛锛堝噣妗剁敵璇峰偍浣嶏級</param> /// <param name="status"></param> /// <exception cref="Exception"></exception> - void RCSCleanRequest(string deviceID, string deviceStation, string status, string url); + void RCSCleanRequest(string deviceID, string deviceStation, string status, string url,string bindUrl); } } diff --git a/Wms/WMS.IBLL/ISysServer/IPalletsServer.cs b/Wms/WMS.IBLL/ISysServer/IPalletsServer.cs index cfb445e..c9982c9 100644 --- a/Wms/WMS.IBLL/ISysServer/IPalletsServer.cs +++ b/Wms/WMS.IBLL/ISysServer/IPalletsServer.cs @@ -33,6 +33,6 @@ /// <param name="groupCount">缁勬暟</param> /// <param name="userId">鎿嶄綔浜�</param> /// <returns></returns> - void AddPallets(string palletNo, string locatNo,string deviceCode, int userId); + void AddPallets(string palletNo, string locatNo,string deviceCode,string url, int userId); } } diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs index 4656c21..5b12903 100644 --- a/Wms/Wms/Controllers/DownApiController.cs +++ b/Wms/Wms/Controllers/DownApiController.cs @@ -858,7 +858,7 @@ { //璁板綍log var logStr = $@".\log\AGV\浠诲姟鎵ц閫氱煡" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; - AgvResultModel resultModel = null;//杩斿洖淇℃伅 + AgvResultModel2 resultModel = null;//杩斿洖淇℃伅 try { var jsonData = JsonConvert.SerializeObject(model); @@ -868,7 +868,9 @@ - resultModel = new AgvResultModel { code = "0", message = "鎴愬姛", reqCode = model.reqCode }; + resultModel.code = "0"; + resultModel.message = "鎴愬姛"; + resultModel.da.robotTaskCode = model.robotTaskCode; var jsonData2 = JsonConvert.SerializeObject(resultModel); LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟寮�濮�-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr); return Ok(resultModel); @@ -877,7 +879,9 @@ { LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟寮�濮�-寮傚父锛�( {ex.Message} ),", logStr); - resultModel = new AgvResultModel { code = "1", message = ex.Message, reqCode = model.reqCode }; + resultModel.code = "1"; + resultModel.message = ex.Message; + resultModel.da.robotTaskCode = model.robotTaskCode; var jsonData2 = JsonConvert.SerializeObject(resultModel); LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟寮�濮�-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr); return Ok(resultModel); @@ -893,17 +897,24 @@ { //璁板綍log var logStr = $@".\log\AGV\浠诲姟鎵ц閫氱煡" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; - AgvResultModel resultModel = null;//杩斿洖淇℃伅 + AgvResultModel2 resultModel = null;//杩斿洖淇℃伅 try { + var extraValue = new ExtraModel(); + extraValue = model.extra; + if (!(extraValue.values.method == "outbin")) + { + throw new Exception("灏忚溅璋冪敤鏂规硶閿欒"); + } var jsonData = JsonConvert.SerializeObject(model); LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-璧板嚭鍌ㄤ綅-璇锋眰鎶ユ枃锛�( {jsonData} ),", logStr); //鍏蜂綋澶勭悊鏂规硶 - _hopper.OutBinAgv(model.taskCode, _config.AgvHost + _config.GenAgvSchedulingTask); + _hopper.OutBinAgv(model.robotTaskCode, _config.AgvHost + _config.GenAgvSchedulingTask,_config.AgvHost+_config.AGVBindPallets); - - resultModel = new AgvResultModel { code = "0", message = "鎴愬姛", reqCode = model.reqCode }; + resultModel.code = "0"; + resultModel.message = "鎴愬姛"; + resultModel.da.robotTaskCode = model.robotTaskCode; var jsonData2 = JsonConvert.SerializeObject(resultModel); LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-璧板嚭鍌ㄤ綅-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr); return Ok(resultModel); @@ -912,7 +923,10 @@ { LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-璧板嚭鍌ㄤ綅-寮傚父锛�( {ex.Message} ),", logStr); - resultModel = new AgvResultModel { code = "1", message = ex.Message, reqCode = model.reqCode }; + + resultModel.code = "1"; + resultModel.message = ex.Message; + resultModel.da.robotTaskCode = model.robotTaskCode; var jsonData2 = JsonConvert.SerializeObject(resultModel); LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-璧板嚭鍌ㄤ綅-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr); return Ok(resultModel); @@ -928,16 +942,25 @@ { //璁板綍log var logStr = $@".\log\AGV\浠诲姟鎵ц閫氱煡" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; - AgvResultModel resultModel = null;//杩斿洖淇℃伅 + AgvResultModel2 resultModel = null;//杩斿洖淇℃伅 try { + var extraValue = new ExtraModel(); + extraValue = model.extra; + if (!(extraValue.values.method == "end")) + { + throw new Exception("灏忚溅璋冪敤鏂规硶閿欒"); + } var jsonData = JsonConvert.SerializeObject(model); LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟缁撴潫-璇锋眰鎶ユ枃锛�( {jsonData} ),", logStr); - + //鍏蜂綋澶勭悊鏂规硶 - _hopper.RCSFinishTask(model.taskCode, "1", "AGV"); + _hopper.RCSFinishTask(model.robotTaskCode, "1", "AGV"); - resultModel = new AgvResultModel { code = "0", message = "鎴愬姛", reqCode = model.reqCode }; + resultModel.code = "0"; + resultModel.message = "鎴愬姛"; + resultModel.da.robotTaskCode = model.robotTaskCode; + var jsonData2 = JsonConvert.SerializeObject(resultModel); LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟缁撴潫-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr); return Ok(resultModel); @@ -946,7 +969,9 @@ { LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟缁撴潫-寮傚父锛�( {ex.Message} ),", logStr); - resultModel = new AgvResultModel { code = "1", message = ex.Message, reqCode = model.reqCode }; + resultModel.code = "1"; + resultModel.message = ex.Message; + resultModel.da.robotTaskCode = model.robotTaskCode; var jsonData2 = JsonConvert.SerializeObject(resultModel); LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟缁撴潫-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr); return Ok(resultModel); @@ -962,7 +987,7 @@ { //璁板綍log var logStr = $@".\log\AGV\浠诲姟鎵ц閫氱煡" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; - AgvResultModel resultModel = null;//杩斿洖淇℃伅 + AgvResultModel2 resultModel = null;//杩斿洖淇℃伅 try { var jsonData = JsonConvert.SerializeObject(model); @@ -972,7 +997,9 @@ - resultModel = new AgvResultModel { code = "0", message = "鎴愬姛", reqCode = model.reqCode }; + resultModel.code = "0"; + resultModel.message = "鎴愬姛"; + resultModel.da.robotTaskCode = model.robotTaskCode; var jsonData2 = JsonConvert.SerializeObject(resultModel); LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟鍗曞彇娑�-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr); return Ok(resultModel); @@ -981,7 +1008,9 @@ { LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟鍗曞彇娑�-寮傚父锛�( {ex.Message} ),", logStr); - resultModel = new AgvResultModel { code = "1", message = ex.Message, reqCode = model.reqCode }; + resultModel.code = "1"; + resultModel.message = ex.Message; + resultModel.da.robotTaskCode = model.robotTaskCode; var jsonData2 = JsonConvert.SerializeObject(resultModel); LogFile.SaveLogToFile($"AGV浠诲姟鎵ц閫氱煡-浠诲姟鍗曞彇娑�-杩斿洖鎶ユ枃锛�( {jsonData2} ),", logStr); return Ok(resultModel); @@ -1271,7 +1300,7 @@ { return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" }); } - _hopper.jiaoLiaoHopper(model.AreaNo,model.LocateNo,model.PlnStatus,model.Standard,model.SkuNo,model.LotNo,"", int.Parse(userId)); + _hopper.jiaoLiaoHopper(model.AreaNo,model.LocateNo,model.PlnStatus,model.Standard,model.SkuNo,model.LotNo,_config.AgvHost+_config.GenAgvSchedulingTask,_config.AgvHost+_config.AGVBindPallets, int.Parse(userId)); return Ok(new { data = model, code = 0, msg = "" }); } @@ -1302,7 +1331,7 @@ { return Ok(new { code = 1, msg = "鏈幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" }); } - _hopper.jiaoCheHopper(model.AreaNo, model.LocateNo,model.PlnNo, model.PlnStatus, model.Weight , model.SkuNo, model.LotNo,"", int.Parse(userId)); + _hopper.jiaoCheHopper(model.AreaNo, model.LocateNo,model.PlnNo, model.PlnStatus, model.Weight , model.SkuNo, model.LotNo, _config.AgvHost + _config.GenAgvSchedulingTask,_config.AgvHost+_config.AGVBindPallets, int.Parse(userId)); return Ok(new { data = model, code = 0, msg = "" }); } @@ -1327,7 +1356,7 @@ LogFile.SaveLogToFile($"娓呮礂鏈哄彨鏂�-璇锋眰鎶ユ枃锛�( {jsonData} ),", logStr); //鍏蜂綋澶勭悊鏂规硶 - _hopper.RCSCleanRequest(model.deviceID,model.deviceStation,model.status, _config.AgvHost + _config.GenAgvSchedulingTask); + _hopper.RCSCleanRequest(model.deviceID,model.deviceStation,model.status, _config.AgvHost + _config.GenAgvSchedulingTask,_config.AgvHost+_config.AGVBindPallets); resultModel = new AgvResultModel { code = "0", message = "璇锋眰鎴愬姛!"}; var jsonData2 = JsonConvert.SerializeObject(resultModel); diff --git a/Wms/Wms/Controllers/SysController.cs b/Wms/Wms/Controllers/SysController.cs index cbf1f6a..594879f 100644 --- a/Wms/Wms/Controllers/SysController.cs +++ b/Wms/Wms/Controllers/SysController.cs @@ -1327,7 +1327,7 @@ { return Ok(new { code = 1, msg = "涓鸿幏鍙栧埌褰撳墠鎿嶄綔浜轰俊鎭�" }); } - _palletSvc.AddPallets(model.PalletNo, model.LocatNo, model.DeviceCode, int.Parse(userId)); + _palletSvc.AddPallets(model.PalletNo, model.LocatNo, model.DeviceCode,_config.AgvHost+_config.AGVBindPallets, int.Parse(userId)); return Ok(new { code = 0, msg = "娣诲姞鎴愬姛", data = "" }); diff --git a/Wms/Wms/DailyTaskService.cs b/Wms/Wms/DailyTaskService.cs index 70c64b9..7df1213 100644 --- a/Wms/Wms/DailyTaskService.cs +++ b/Wms/Wms/DailyTaskService.cs @@ -21,11 +21,13 @@ private Timer _timer3; private string _wcsUrl; private string _agvUrl; + private string _agvBindUrl; private Timer _periodicReport; - public DailyTaskService(string wcsUrl,string agvUrl) + public DailyTaskService(string wcsUrl,string agvUrl,string agvBindUrl) { _wcsUrl = wcsUrl; _agvUrl = agvUrl; + _agvBindUrl = agvBindUrl; } //鍒涘缓瀹氭椂浠诲姟 @@ -60,7 +62,7 @@ { HopperTransportServer _stockDetail = new HopperTransportServer(); //浠诲姟閫昏緫 - _stockDetail.TransferBackTimer(_agvUrl); + _stockDetail.TransferBackTimer(_agvUrl,_agvBindUrl); } catch (Exception ex) { diff --git a/Wms/Wms/Properties/launchSettings.json b/Wms/Wms/Properties/launchSettings.json index 5db9873..93e8fe8 100644 --- a/Wms/Wms/Properties/launchSettings.json +++ b/Wms/Wms/Properties/launchSettings.json @@ -1,13 +1,4 @@ { - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:50515/", - "sslPort": 44363 - } - }, - "$schema": "http://json.schemastore.org/launchsettings.json", "profiles": { "IIS Express": { "commandName": "IISExpress", @@ -24,5 +15,14 @@ }, "applicationUrl": "https://localhost:5001;http://localhost:5000" } + }, + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://192.168.10.201", + "sslPort": 44363 + } } } \ No newline at end of file diff --git a/Wms/Wms/Startup.cs b/Wms/Wms/Startup.cs index 93f1405..8b470a4 100644 --- a/Wms/Wms/Startup.cs +++ b/Wms/Wms/Startup.cs @@ -33,9 +33,11 @@ var url = Configuration.GetSection("ApiUrlConfig:WcsHost").Value + Configuration.GetSection("ApiUrlConfig:IssueComApiUrl").Value; //下发AGV路径Str var url2 = Configuration.GetSection("ApiUrlConfig:AgvHost").Value + Configuration.GetSection("ApiUrlConfig:IssueComApiUrl").Value; + //下发AGV路径Str + var url3 = Configuration.GetSection("ApiUrlConfig:AgvHost").Value + Configuration.GetSection("ApiUrlConfig:AGVBindPallets").Value; //调用定时任务 services.AddHostedService<DailyTaskService>(provider => - new DailyTaskService(url,url2)); + new DailyTaskService(url,url2,url3)); services.AddControllers() .AddJsonOptions(options => diff --git a/Wms/Wms/Tools/ApiUrlConfig.cs b/Wms/Wms/Tools/ApiUrlConfig.cs index fe5f1ff..dcb129a 100644 --- a/Wms/Wms/Tools/ApiUrlConfig.cs +++ b/Wms/Wms/Tools/ApiUrlConfig.cs @@ -86,6 +86,17 @@ /// </summary> public string GenPreScheduleTask { get; set; } + + /// <summary> + /// 杞藉叿涓庡簱浣嶇粦瀹氭帴鍙� + /// </summary> + public string AGVBindPallets { get; set; } + + /// <summary> + /// 杞藉叿涓庡簱浣嶈В缁戞帴鍙� + /// </summary> + public string AGVUnBindPallets { get; set; } + #endregion #endregion diff --git a/Wms/Wms/appsettings.json b/Wms/Wms/appsettings.json index 2d3d5f6..37d4dc2 100644 --- a/Wms/Wms/appsettings.json +++ b/Wms/Wms/appsettings.json @@ -11,8 +11,8 @@ //"ConnectionString": "Server=47.95.120.93;Database=WMS_JC09;User ID=sa;password=boxline!@#; Integrated Security=True;", //"ConnectionString": "Server=47.95.120.53;Database=WMS_JC09;User ID=sa;Password=boxline!@#;Integrated Security=False;", //"ConnectionString": "Server=192.168.62.106;Database=WMS_JC24;User ID=sa;Password=sql2019;Integrated Security=False;", - "ConnectionString": "Server=192.168.62.200;Database=WMS_JC37;User ID=sa;Password=sql2019;Integrated Security=False;" - //"ConnectionString": "Server=.;Database=WMS_JC09;User ID=sa;Password=sql2019;Integrated Security=False;" + //"ConnectionString": "Server=192.168.62.200;Database=WMS_JC37;User ID=sa;Password=sql2019;Integrated Security=False;" + "ConnectionString": "Server=.;Database=WMS_JC37;User ID=sa;Password=sa@123456;Integrated Security=False;" //"ConnectionString": "Data Source=DESKTOP-0EJDG95\\MSSQLSERVER1;Initial Catalog=WMS_V01;Integrated Security=True;" //"ConnectionString": "Server=.\\MSSQLSERVER2019;Database=WMS_JC23-2;User Id=sa;Password=admin2023@;" // SqlServer 搴撹繛鎺ュ瓧绗︿覆 //"ConnectionString": "Server=172.16.105.10;Database=WMS_JC23-2;User ID=sa;Password=sql2019;Integrated Security=False;" @@ -29,7 +29,7 @@ "ErpHost": "http://10.110.24.30:8081", //erpIP "WcsHost": "http://localhost:57061", //wcsIPhttp://localhost:57061/ "BoxHost": "http://10.110.24.30:8081", //boxIP - "AgvHost": "http://172.15.1.74:8182", //agvIP + "AgvHost": "http://192.168.10.22", //agvIP "IssueComApiUrl": "/api/WCSApi/AddTasks", //涓嬪彂鍛戒护(鍑哄簱銆佺Щ搴�) "IssueComApiUrl2": "/api/WCSApi/AddTask", //閲嶆柊涓嬪彂鍛戒护(鍑哄簱銆佺Щ搴�) @@ -43,8 +43,10 @@ // AGV - "GenAgvSchedulingTask": "/rcms/services/rest/hikRpcService/genAgvSchedulingTask", //鐢熸垚浠诲姟鍗曟帴鍙� - "ContinueTask": "/rcms/services/rest/hikRpcService/continueTask", //缁х画鎵ц浠诲姟鎺ュ彛 - "GenPreScheduleTask": "/rcms/services/rest/hikRpcService/genPreScheduleTask" // 棰勮皟搴﹀澶栨帴鍙� + "GenAgvSchedulingTask": "/rcs/rtas/api/robot/controller/task/submit", //鐢熸垚浠诲姟鍗曟帴鍙� + "ContinueTask": "/rcs/rtas/api/robot/controller/task/extend/continue", //缁х画鎵ц浠诲姟鎺ュ彛 + "GenPreScheduleTask": "/rcms/services/rest/hikRpcService/genPreScheduleTask", // 棰勮皟搴﹀澶栨帴鍙� + "AGVBindPallets": "/rcs/rtas/api/robot/controller/carrier/bind", //杞藉叿涓庡簱浣嶇粦瀹氭帴鍙� + "AGVUnBindPallets": "/rcs/rtas/api/robot/controller/carrier/bind" //杞藉叿涓庡簱浣嶈В缁戞帴鍙� } } -- Gitblit v1.8.0