From 2920728d7908da2ee196f3af8b3d1c635696e9a1 Mon Sep 17 00:00:00 2001 From: zwc <526854230@qq.com> Date: 星期三, 15 一月 2025 15:47:15 +0800 Subject: [PATCH] 修改问题 --- Wms/Wms/Controllers/UpApiController.cs | 59 ++ Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs | 2 Wms/Wms/Controllers/PdaCrController.cs | 4 Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs | 79 +++ Wms/Wms/Tools/ApiUrlConfig.cs | 5 Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs | 10 Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs | 15 Wms/WMS.BLL/DataServer/StockServer.cs | 140 ++++++ Wms/Wms/Properties/launchSettings.json | 22 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 388 +++++++++++++++++ Wms/Wms/appsettings.json | 9 Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs | 327 ++++++++++++- Wms/Wms/Controllers/BllSoController.cs | 2 Wms/Model/InterFaceModel/AsnModels.cs | 47 ++ Wms/Model/InterFaceModel/HttpModel.cs | 82 +++ Wms/WMS.IBLL/IDataServer/IStockServer.cs | 24 + Wms/Wms/Controllers/DownApiController.cs | 51 ++ Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs | 7 18 files changed, 1,181 insertions(+), 92 deletions(-) diff --git a/Wms/Model/InterFaceModel/AsnModels.cs b/Wms/Model/InterFaceModel/AsnModels.cs index c5a3f3a..a856d63 100644 --- a/Wms/Model/InterFaceModel/AsnModels.cs +++ b/Wms/Model/InterFaceModel/AsnModels.cs @@ -98,4 +98,51 @@ public string PalletNo { get; set; } } + public class BoxInfoCheck + { + public string PalletNo { get; set; } + public string TaskNo { get; set; } + } + + public class RequestBoxInfoCheck + { + /// <summary> + /// 鎵樼洏鍙� + /// </summary> + public string PalletNo { get; set; } + /// <summary> + /// 浠诲姟鍙� + /// </summary> + public string TaskNo { get; set; } + /// <summary> + /// 璁㈠崟鍙� + /// </summary> + public string OrderNo { get; set; } + /// <summary> + /// 鐗╂枡缂栫爜 + /// </summary> + public string SkuNo { get; set; } + /// <summary> + /// 鐗╂枡鍚嶇О + /// </summary> + public string SkuName { get; set; } + /// <summary> + /// 鎵规 + /// </summary> + public string LotNo { get; set; } + /// <summary> + /// 瑙勬牸 + /// </summary> + public string Standard { get; set; } + /// <summary> + /// 鎷嗙鏁伴噺 + /// </summary> + public int? Qty { get; set; } + /// <summary> + /// 鎵樼洏涓婃�荤鏁� + /// </summary> + public int? QtyCount { get; set; } + } + + } diff --git a/Wms/Model/InterFaceModel/HttpModel.cs b/Wms/Model/InterFaceModel/HttpModel.cs index 8e220c6..c4b9322 100644 --- a/Wms/Model/InterFaceModel/HttpModel.cs +++ b/Wms/Model/InterFaceModel/HttpModel.cs @@ -379,7 +379,7 @@ /// 鏍煎紡: 鈥測yyy-MM-ddHH:mm:ss鈥� /// 鏄惁蹇呭~锛氬惁 /// </summary> - public string EeqTime { get; set; } + public string ReqTime { get; set; } /// <summary> /// 瀹㈡埛绔紪鍙凤紝濡� PDA锛孒CWMS 绛夈�� @@ -422,6 +422,13 @@ /// 鏄惁蹇呭~锛氬惁 /// </summary> public string CtnrTyp { get; set; } + + /// <summary> + /// 瀹瑰櫒鏁伴噺锛堝弶杞�/CTU 涓撶敤锛� + /// 鍙夎溅椤圭洰蹇呬紶 + /// 鏄惁蹇呭~锛氬惁 + /// </summary> + public string CtnrNum { get; set; } /// <summary> /// 瀹瑰櫒缂栧彿锛堝弶杞�/CTU 涓撶敤锛� @@ -665,6 +672,7 @@ /// </summary> public class AgvTaskDto { + /// <summary> /// 璇锋眰缂栧彿锛屾瘡涓姹傞兘瑕佷竴涓敮涓�缂栧彿 /// 鍚屼竴涓姹傞噸澶嶆彁浜� 浣跨敤鍚屼竴缂栧彿 @@ -683,13 +691,13 @@ /// 鍦扮爜 X 鍧愭爣(mm)锛氫换鍔″畬鎴愭椂鏈夊�� /// 鏄惁蹇呭~锛氬惁 /// </summary> - public int CooX { get; set; } + public decimal CooX { get; set; } /// <summary> /// 鍦扮爜 Y 鍧愭爣(mm)锛氫换鍔″畬鎴愭椂鏈夊�� /// 鏄惁蹇呭~锛氬惁 /// </summary> - public int CooY { get; set; } + public decimal CooY { get; set; } /// <summary> /// 褰撳墠浣嶇疆缂栧彿 @@ -785,11 +793,6 @@ /// </summary> public string CtnrCode { get; set; } - /// <summary> - /// 瀹瑰櫒绫诲瀷 - /// 鏄惁蹇呭~锛氬惁 - /// </summary> - public string CtnrType { get; set; } /// <summary> /// 宸烽亾缂栧彿 @@ -809,6 +812,40 @@ /// 鏄惁蹇呭~锛氬惁 /// </summary> public string EqpCode { get; set; } + public string DstBinCode { get; set; } + public string IndBind { get; set; } + public string Layer { get; set; } + public string MapShortName { get; set; } + public string MaterialType { get; set; } + + public string Action { get; set; } + public string AreaCode { get; set; } + + public string BerthCode { get; set; } + + + + public string CallCode { get; set; } + + public string CallTyp { get; set; } + public string ClientCode { get; set; } + public string OrgCode { get; set; } + public string CtnrTyp { get; set; } + public string CurrentCallCode { get; set; } + + public string PodCode { get; set; } + + public string PodTyp { get; set; } + public string PodNum { get; set; } + public string RelatedArea { get; set; } + public string ReqTime { get; set; } + public string SubTaskNum { get; set; } + + public string TaskTyp { get; set; } + + public string TokenCode { get; set; } + public string Username { get; set; } + public string WhCode { get; set; } } /// <summary> @@ -845,6 +882,35 @@ /// </summary> public string Data { get; set; } } + + /// <summary> + /// WMS涓嬪彂AGV鍙栨秷浠诲姟鍥炰紶鍙傛暟 + /// </summary> + public class cancelTaskModel + { + /// <summary> + /// 杩斿洖鐮� + /// 0锛氭垚鍔� + /// 1锛氬弬鏁扮浉鍏崇殑閿欒 + /// 6锛氶噸澶嶅彂閫侊紝涓婂眰绯荤粺涓嶉渶瑕侀噸鍙� + /// 99锛氬叾浠栨湭鐭ラ敊璇紝璋冪敤澶辫触鍚庯紝鍙互閲嶈瘯 + /// 100锛� 璇ヤ换鍔′笉瀛樺湪锛屼笂灞傜郴缁熶笉闇�閲嶅彂锛岄渶瑕佷汉宸ヤ粙鍏ュ鐞� + /// 鏄惁蹇呭~锛氭槸 + /// </summary> + public string Code { get; set; } + + /// <summary> + /// 杩斿洖娑堟伅 + /// 鏄惁蹇呭~锛氭槸 + /// </summary> + public string Message { get; set; } + + /// <summary> + /// 璇锋眰缂栧彿 + /// 鏄惁蹇呭~锛氭槸 + /// </summary> + public string ReqCode { get; set; } + } #endregion #region FuMa-Model diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs index 0391053..90d2952 100644 --- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs +++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs @@ -410,6 +410,20 @@ if (model.Type == "0")//鎴愬搧鍏ュ簱鍗曚笅鍙慦CS淇℃伅 { + //璁$畻鍑烘�荤鏁� + var packmodel = Db.Queryable<SysPackag>().First(w=>w.PackagNo == detailModel.SkuNo); + int xqty = 0; + if (packmodel.L1Name == "绠�") { + xqty = (int)detailModel.Qty; + } + if (packmodel.L2Name == "绠�") + { + xqty = (int)(detailModel.Qty / packmodel.L2Num); + } + if (packmodel.L3Name == "绠�") + { + xqty = (int)(detailModel.Qty/ packmodel.L2Num / packmodel.L3Num); + } addOder.Add(new ResponseOrderTaskModel() { OrderNo = model.ASNNo, @@ -417,7 +431,7 @@ SkuNo = detailModel.SkuNo, SkuName = detailModel.SkuName, BoxType = detailModel.Standard, - Qty = (int)detailModel.Qty, + Qty = xqty, TaskType = 0 }); } @@ -1009,10 +1023,11 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - public HttpReturnModel HttpCreateAsn(AsnInfo model) + public HttpReturnModel HttpCreateAsn(AsnInfo model, string url) { try { + var addOder = new List<ResponseOrderTaskModel>(); var resultModel = new HttpReturnModel() { Success = "-1", Message = "" }; if (string.IsNullOrEmpty(model.AsnType)) { @@ -1105,7 +1120,37 @@ }; detailModels.Add(detailModel); + + if (model.AsnType == "0")//鎴愬搧鍏ュ簱鍗曚笅鍙慦CS淇℃伅 + { + //璁$畻鍑烘�荤鏁� + var packmodel = Db.Queryable<SysPackag>().First(w => w.PackagNo == detailModel.SkuNo); + int xqty = 0; + if (packmodel.L1Name == "绠�") + { + xqty = (int)detailModel.Qty; + } + if (packmodel.L2Name == "绠�") + { + xqty = (int)(detailModel.Qty / packmodel.L2Num); + } + if (packmodel.L3Name == "绠�") + { + xqty = (int)(detailModel.Qty / packmodel.L2Num / packmodel.L3Num); + } + addOder.Add(new ResponseOrderTaskModel() + { + OrderNo = asnNo, + LotNo = asnDetailModel.LotNo, + SkuNo = asnDetailModel.SkuNo, + SkuName = skuModel.SkuName, + BoxType = skuModel.Standard, + Qty = (int)asnDetailModel.Qty, + TaskType = 0 + }); + } } + Db.BeginTran(); // 鎻掑叆鍏ュ簱鍗曟�昏〃 @@ -1115,6 +1160,36 @@ Db.Insertable(detailModels).ExecuteCommand(); Db.CommitTran(); + + if (addOder.Count > 0) + { + // 姝e紡杩愯绋嬪簭鏀惧紑 + var jsonData = JsonConvert.SerializeObject(addOder); + string response = ""; + + try + { + var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") + //缁橶CS涓嬪彂鍏ュ簱鍗曚俊鎭� + response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍏ュ簱鍛戒护", "WCS"); + + //瑙f瀽杩斿洖鏁版嵁 + var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); + if (wcsModel.StatusCode == 0) + { + + } + if (wcsModel.StatusCode == -1) + { + throw new Exception($"涓嬪彂WCS澶辫触锛歿wcsModel.Msg}"); + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } + resultModel.Success = "0"; resultModel.Message = "鎴愬姛"; return resultModel; diff --git a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs index f1f7215..50a3dd7 100644 --- a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs +++ b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs @@ -3226,9 +3226,9 @@ throw new Exception("鏈壘鍒拌鎵樼洏鏉$爜锛�" + palletNo); } var palletBindList = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.LocatNo.Substring(0,1) != "B").First(); - if (palletBindList.IsBelt == "1") + if (palletBindList.IsBale == "2") { - palletBindList.IsBelt = "0"; + palletBindList.IsBale = "0"; Db.Updateable(palletBindList).ExecuteCommand(); t = 1; } @@ -3256,8 +3256,9 @@ var palletBindList = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.Status == "1").OrderByDescending(m => m.CreateTime).First(); if (palletBindList.IsBale == "1") { - palletBindList.IsBelt = "1"; + palletBindList.IsBale = "2"; Db.Updateable(palletBindList).ExecuteCommand(); + t = 1; } return t; diff --git a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs index b4bb031..b146a20 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs @@ -1,4 +1,5 @@ 锘縰sing System; +using System.Collections; using System.Collections.Generic; using System.Linq; using System.Security.Policy; @@ -6,6 +7,7 @@ using System.Threading.Tasks; using Model.InterFaceModel; using Model.ModelDto.BllCheckDto; +using Model.ModelDto.LogDto; using Model.ModelDto.PdaDto; using Model.ModelDto.SysDto; using Model.ModelVm; @@ -904,7 +906,8 @@ } try { - string EndLocat = string.Empty;//鐩爣浣嶇疆 + string EndLocat = string.Empty,OrderTy = "";//鐩爣浣嶇疆 + var log = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && (w.Status == "0" || w.Status == "1")); if (log != null) @@ -924,10 +927,14 @@ throw new Exception("鎵�閫夊尯鍩熶俊鎭笉瀛樺湪,璇锋鏌�!"); } EndLocat = GetLocat(areaNo, stockDetail.SkuNo, stockDetail.LotNo, palletNo); + OrderTy = "3";//绉诲簱 } else { EndLocat = ruku; + OrderTy = "0";//鍏ュ簱 + + } var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == stockDetail.SkuNo && w.LotNo == stockDetail.LotNo); if (stock == null) @@ -980,7 +987,7 @@ IsFinish = 1,//鏄惁鍙畬鎴� Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 - OrderType = "3",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + OrderType = OrderTy,//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� CreateTime = DateTime.Now }; @@ -1009,53 +1016,105 @@ #region 鍛煎彨灏忚溅浠g爜 + var endlono = EndLocat; + var tasktype = "D00"; //榛樿涓虹偣鍒扮偣浠诲姟 + //鏍规嵁鐩殑鍦板潃搴撳尯鑾峰彇灏忚溅浠诲姟绫诲瀷 + switch (storageLocatEnd.AreaNo) + { + case "B13" : + tasktype = "D02"; // 鍙犳墭浠诲姟锛堢洰鐨勫湴鍧�涓虹┖鎵樼洏鏀堕泦鍖猴級 + break; + case "B15": + tasktype = "D01"; // 鎷嗘墭浠诲姟锛堢洰鐨勫湴鍧�涓烘嫞璐у尯锛� + break; + } + + //缂撳瓨搴撲綅杞崲 3妤煎師杈呮枡Y003_001锛孻003_002锛孻003_003 1妤糦138_001鍒癥138_021澶栧寘缂撳瓨鍖� 1妤糦128_001鍒癥128_015鍐呭寘缂撳瓨鍖� + if (storageLocatEnd.AreaNo == "B12") + { + switch (EndLocat.ToString().Substring(4, 1)) + { + case "1": + endlono = "Y003_00" + EndLocat.ToString().Substring(6, 1); + tasktype = "D00"; //鐐瑰埌鐐逛换鍔� + break; + case "2": + endlono = "Y138_0" + EndLocat.ToString().Substring(5, 2); + tasktype = "F20"; //鐢垫浠诲姟 + break; + case "3": + endlono = "Y128_0" + EndLocat.ToString().Substring(5, 2); + tasktype = "F20"; //鐢垫浠诲姟 + break; + default: + break; + } + } + + //鐐瑰埌鐐规寚浠ら泦鍚� + object[] position = new object[2]; + position[0] = new + { + positionCode = stockDetail.LocatNo, + type = "00" + }; + position[1] = new + { + positionCode = endlono, + type = "00" + }; List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>(); + Random r = new Random(); + long ran =DateTime.Now.Ticks; AgvSchedulingTask agvTask = new AgvSchedulingTask(); - agvTask.ReqCode = taskNo; - agvTask.TaskTyp = "F01"; - agvTask.WbCode = ""; - agvTask.PositionCodePath = null; - agvTask.PodCode = "-1"; + agvTask.TaskCode = taskNo; + agvTask.ReqCode = ran.ToString(); + agvTask.TaskTyp = tasktype; + agvTask.PositionCodePath = position; + agvTask.CtnrTyp = "1"; + if (tasktype == "D02") + { + agvTask.CtnrNum = "10"; //鍙犳墭浠诲姟闇�瑕佷笅鍙戠┖鎵樼洏鏁伴噺 + } agvTaskList.Add(agvTask); - var IsTrue = false; - while (IsTrue == true) + + // 姝e紡杩愯绋嬪簭鏀惧紑 + string str = ""; + var list2 = agvTaskList.Select(m => m.ReqCode).ToList(); + var jsonData = JsonConvert.SerializeObject(agvTaskList); + jsonData = jsonData.Substring(1, jsonData.Length - 1); + jsonData = jsonData.Substring(0, jsonData.Length - 1); + string response = ""; + + try { - // 姝e紡杩愯绋嬪簭鏀惧紑 - string str = ""; - var list2 = agvTaskList.Select(m => m.ReqCode).ToList(); - var jsonData = JsonConvert.SerializeObject(agvTaskList); - string response = ""; + var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") + response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV"); + var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") - try + //////瑙f瀽杩斿洖鏁版嵁 + var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); + if (agvModel.Code == "0") { - var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") - response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV"); - var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") - - //////瑙f瀽杩斿洖鏁版嵁 - var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); - if (agvModel.Code == "0") - { - //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// - new TaskServer().EditTaskIssueOk(list2, time1, time2); - str += "涓嬪彂鎴愬姛"; - IsTrue = true; - } - if (agvModel.Code == "1") - { - new TaskServer().EditTaskIssueNo(list2, time1, time2, agvModel.Message); - throw new Exception(agvModel.Message); - } + //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// + new TaskServer().EditTaskIssueOk(list2, time1, time2); + str += "涓嬪彂鎴愬姛"; } - catch (Exception ex) + if (agvModel.Code == "1") { - throw new Exception(ex.Message); + new TaskServer().EditTaskIssueNo(list2, time1, time2, agvModel.Message); + throw new Exception(agvModel.Message); } } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + #endregion //鎻愪氦浜嬪姟 @@ -1074,7 +1133,7 @@ /// <param name="palletNo"></param> /// <param name="areaNo"></param> /// <param name="userId"></param> - public List<string> AgvTransport2(string soNo, string palletNo, string areaNo, int userId, string url) + public List<string> AgvTransport2(string soNo, string palletNo, string areaNo,string ruku, int userId, string url) { if (string.IsNullOrEmpty(soNo)) { @@ -1196,12 +1255,58 @@ }; Db.Insertable(exTask).ExecuteCommand(); + var endlono = EndLocat; + var tasktype = "D00"; + + //鏍规嵁鐩殑鍦板潃搴撳尯鑾峰彇灏忚溅浠诲姟绫诲瀷 + switch (storageLocatEnd.AreaNo) + { + case "B13": + tasktype = "D02"; // 鍙犳墭浠诲姟锛堢洰鐨勫湴鍧�涓虹┖鎵樼洏鏀堕泦鍖猴級 + break; + case "B15": + tasktype = "D01"; // 鎷嗘墭浠诲姟锛堢洰鐨勫湴鍧�涓烘嫞璐у尯锛� + break; + } + + //缂撳瓨搴撲綅杞崲 3妤煎師杈呮枡Y003_001锛孻003_002锛孻003_003 1妤糦138_001鍒癥138_021澶栧寘缂撳瓨鍖� 1妤糦128_001鍒癥128_015鍐呭寘缂撳瓨鍖� + if (storageLocatEnd.AreaNo == "B12") + { + switch (EndLocat.ToString().Substring(4, 1)) + { + case "1": + endlono = "Y003_00" + EndLocat.ToString().Substring(6, 1); + break; + case "2": + endlono = "Y138_0" + EndLocat.ToString().Substring(5, 2); + tasktype = "F20"; //鐢垫浠诲姟 + break; + case "3": + endlono = "Y128_0" + EndLocat.ToString().Substring(5, 2); + tasktype = "F20"; //鐢垫浠诲姟 + break; + default: + break; + } + } + + //鐐瑰埌鐐规寚浠ら泦鍚� + object[] position = new object[2]; + position[0] = new + { + positionCode = item.LocatNo, + type = "00" + }; + position[1] = new + { + positionCode = endlono, + type = "00" + }; + AgvSchedulingTask agvTask = new AgvSchedulingTask(); agvTask.ReqCode = taskNo; - agvTask.TaskTyp = "F01"; - agvTask.WbCode = ""; - agvTask.PositionCodePath = null; - agvTask.PodCode = "-1"; + agvTask.TaskTyp = tasktype; + agvTask.PositionCodePath = position; agvTaskList.Add(agvTask); @@ -1249,6 +1354,8 @@ string str = ""; var list2 = agvTaskList.Select(m => m.ReqCode).ToList(); var jsonData = JsonConvert.SerializeObject(agvTaskList); + jsonData = jsonData.Substring(1, jsonData.Length - 1); + jsonData = jsonData.Substring(0, jsonData.Length - 1); string response = ""; try @@ -1290,6 +1397,126 @@ throw new Exception(ex.Message); } } + + /// <summary> + /// agv璋冨害浠诲姟涓嬪彂 + /// </summary> + /// <param name="type">鎼繍绫诲瀷</param> + /// <param name="taskno">浠诲姟鍙�</param> + /// <param name="positionStart">璧峰鍦板潃</param> + /// <param name="positionEnd">鐩殑鍦板潃</param> 2 + /// <param name="url">鎺ュ彛URL</param> + public OutCommanAgvDto AGVTask(string type, string taskno, string positionStart, string positionEnd ,string url) + { + + var endlono = positionEnd; + var tasktype = type; + var storageLocatEnd = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == endlono && w.Flag == "0" && w.Status == "0"); + if (storageLocatEnd == null) + { + throw new Exception("鐢熸垚鐨凙GV浠诲姟鐩殑鍦板潃涓嶆纭�"); + } + //鏍规嵁鐩殑鍦板潃搴撳尯鑾峰彇灏忚溅浠诲姟绫诲瀷 + switch (storageLocatEnd.AreaNo) + { + case "B13": + tasktype = "D02"; // 鍙犳墭浠诲姟锛堢洰鐨勫湴鍧�涓虹┖鎵樼洏鏀堕泦鍖猴級 + break; + case "B15": + tasktype = "D01"; // 鎷嗘墭浠诲姟锛堢洰鐨勫湴鍧�涓烘嫞璐у尯锛� + break; + } + + // MES鐢宠澶囨枡锛屽鏂欏尯搴撲綅闇�瑕佽浆鎹� 杞﹂棿澶囨枡缂撳瓨浣嶅悕绉帮細3妤煎師杈呮枡Y003_001-->Y003_003 1妤煎鍖呯紦瀛樺尯Y138_001-->Y138_021 1妤煎唴鍖呯紦瀛樺尯Y128_001-->Y128_015 + if (storageLocatEnd.AreaNo == "B12") + { + switch (endlono.ToString().Substring(4, 1)) + { + case "1": + endlono = "Y003_00" + endlono.Substring(6, 1); + break; + case "2": + endlono = "Y138_0" + endlono.Substring(5, 2); + tasktype = "F20"; //鐢垫浠诲姟 + break; + case "3": + endlono = "Y128_0" + endlono.Substring(5, 2); + tasktype = "F20"; //鐢垫浠诲姟 + break; + default: + break; + } + } + List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>(); + + object[] position = new object[2]; + position[0] = new + { + positionCode = positionStart, + type = "00" + }; + position[1] = new + { + positionCode = endlono, + type = "00" + }; + + AgvSchedulingTask agvTask = new AgvSchedulingTask(); + agvTask.ReqCode = taskno; //agv璇锋眰缂栧彿锛岄渶瑕侀殢鏈虹敓鎴� 锛堟渶澶�32浣嶏級 + agvTask.TaskCode = taskno; //浠诲姟鍙� + agvTask.TaskTyp = tasktype; //鎼繍绫诲瀷 + agvTask.PositionCodePath = position; //璧峰鍜岀洰鐨勪綅闆嗗悎 + agvTask.CtnrTyp = "1"; //瀹瑰櫒绫诲瀷锛屽�间负1 + if (tasktype == "D02") + { + agvTask.CtnrNum = "10"; //鍙犳墭浠诲姟闇�瑕佷笅鍙戠┖鎵樼洏鏁伴噺 + } + + agvTaskList.Add(agvTask); + + string str = ""; + var list2 = agvTaskList.Select(m => m.ReqCode).ToList(); + var jsonData = JsonConvert.SerializeObject(agvTaskList); + jsonData = jsonData.Substring(1, jsonData.Length-1); + jsonData = jsonData.Substring(0, jsonData.Length - 1); + var response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV"); + var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); + + return agvModel; + } + + /// <summary> + /// agv浠诲姟鍙栨秷 + /// </summary> + /// <param name="taskno">鍙栨秷浠诲姟缂栧彿</param> + /// <param name="url">鎺ュ彛URL</param> + public void cancelTask(string taskno,string url) + { + try + { + AgvCancelTask agvTaskList = new AgvCancelTask(); + agvTaskList.ReqCode = "006"; //闅忔満鐢熸垚 + agvTaskList.TaskCode = taskno.ToString(); + //agvTaskList.ReqTime = DateTime.Now.ToString(); + + var jsonData = JsonConvert.SerializeObject(agvTaskList); + var response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV"); + var agvModel = JsonConvert.DeserializeObject<cancelTaskModel>(response); + + if (agvModel.Code != "0") + { + throw new Exception("涓嬪彂AGV鍙栨秷浠诲姟澶辫触"); + } + + } + catch (Exception ex) + { + + throw ex; + } + + } + /// <summary> /// 鏍规嵁鍖哄煙鍒嗛厤鍌ㄤ綅 /// </summary> @@ -1478,12 +1705,28 @@ { {"Authorization",token } }; + var endlono = EndLocat.LocatNo; + //缂撳瓨搴撲綅杞崲 + switch (EndLocat.LocatNo.ToString().Substring(4, 1)) + { + case "1": + endlono = "Y003_00" + EndLocat.LocatNo.ToString().Substring(6, 1); + break; + case "2": + endlono = "Y138_0" + EndLocat.LocatNo.ToString().Substring(5, 2); + break; + case"3": + endlono = "Y128_0" + EndLocat.LocatNo.ToString().Substring(5, 2); + break; + default: + break; + } var mescode = Db.Queryable<BllExportNotice>().Where(w => w.SONo == stockDetail.First().SONo).First(); var mesData = new RequertBeiliaoModel() { morder_no = mescode.OrderCode, pallet = stockDetail.First().PalletNo, - layer_no = EndLocat.LocatNo, + layer_no = endlono, items = data }; var jsonData = JsonConvert.SerializeObject(mesData); @@ -1501,7 +1744,7 @@ //娣诲姞鎿嶄綔鏃ュ織璁板綍 - var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "AGV杞繍", palletNo, "绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId); + var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "浜哄伐杞繍", palletNo, "绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId); //鎻愪氦浜嬪姟 Db.CommitTran(); diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index c732892..01368fc 100644 --- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs +++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs @@ -24,6 +24,12 @@ using WMS.IBLL.IBllSoServer; using Model.ModelVm; using System.Runtime.Intrinsics.X86; +using WMS.Entity.BllAsnEntity; +using Model.ModelDto; +using WMS.BLL.BllPdaServer; +using WMS.IBLL.IPdaServer; +using System.DirectoryServices.Protocols; +using Model.ModelDto.SysDto; namespace WMS.BLL.BllSoServer { @@ -2235,16 +2241,24 @@ } } - //wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙鍑哄簱鎴愬姛锛� - public void ExportSuccess(string taskNo, int userId) + //wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙鍑哄簱鎴愬姛锛� + public void ExportSuccess(string taskNo, int userId,string url) { try { + //鍑哄簱浠诲姟鍙锋洿鏀癸紝濡傛灉鐢盤LC鍑哄簱锛屽垯PLC鍥炰紶浠诲姟鍙蜂负锛氫换鍔″彿+瀹為檯鍑哄簱鍙� + var TtaskNo = taskNo; + var outLine = ""; + if (userId == 0) + { + TtaskNo = taskNo.Substring(0, taskNo.Length - 4); + outLine = taskNo.Substring(taskNo.Length - 4, 3); + } //褰撳墠浠诲姟淇℃伅 - var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0"); + var task = Db.Queryable<LogTask>().First(m => m.TaskNo == TtaskNo && m.IsDel == "0"); if (task == null) { - throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅"); + throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹TtaskNo}鈥欑殑浠诲姟淇℃伅"); } if (task.Status == "2") { @@ -2360,7 +2374,7 @@ Db.Updateable(item).ExecuteCommand(); } //鍑哄簱娴佹按锛堟洿鏀圭姸鎬侊級 - var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.TaskNo == taskNo || (m.Status == "1" && m.PalletNo == task.PalletNo))).ToList(); + var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.TaskNo == TtaskNo || (m.Status == "1" && m.PalletNo == task.PalletNo))).ToList(); foreach (var item in allot) { @@ -2379,7 +2393,106 @@ if (userId != 0) { //娣诲姞鎿嶄綔鏃ュ織璁板綍 - var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId); + var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", TtaskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{TtaskNo}鐨勪换鍔�", userId); + } + if (outLine != "") + { + #region 鍒嗛厤鍑哄簱鐩殑浣� + string positionStart = outLine, positionEnd = "" ,type ="D00"; + var type1 = Db.Queryable<BllExportNotice>().Where(m => m.SONo == allot.First().SONo && m.IsDel == "0" && m.Status == "3").First(); + if (type1 == null) + { + var locateno = Db.Queryable<SysStorageLocat>().Where(m => m.AreaNo == "B13").ToList(); + type = "D02" ; //绌烘墭鐩樺灈鍑哄簱 + if (outLine == "443")//瑗夸晶鍑哄簱 + { + positionEnd = locateno.First(m => m.LocatNo.Substring(3, 2) == "01" && m.LocatNo.Substring(3, 2) == "02" && m.LocatNo.Substring(3, 2) == "03" && + m.Status == "0" && m.Flag == "0").LocatNo; + } + else if (outLine == "440") //涓滀晶鍑哄簱 + { + positionEnd = locateno.First(m => m.LocatNo.Substring(4, 2) == "04" && m.LocatNo.Substring(4, 2) == "05" && m.LocatNo.Substring(4, 2) == "06" && + m.Status == "0" && m.Flag == "0").LocatNo; //涓滀晶鎴块棿搴撲綅 + } + + } + if (type1.Type == "1" && (type1.Type == "5" || (positionStart == "440" && positionStart == "440"))) //3妤奸鏂欏嚭搴� /3L涓棿鍝佸嚭搴� + { + var locateno = Db.Queryable<SysStorageLocat>().Where(m => m.AreaNo == "B11").ToList(); + if (outLine == "443")//瑗夸晶鍑哄簱 + { + positionEnd = locateno.First(m => m.LocatNo.Substring(3, 2) == "01"&& m.LocatNo.Substring(4, 2) == "02" && m.Status == "0" && m.Flag == "0").LocatNo; //瑗夸晶鎴块棿搴撲綅 + } + else if(outLine == "440") //涓滀晶鍑哄簱 + { + positionEnd = locateno.First(m => m.LocatNo.Substring(3, 2) == "03" && m.LocatNo.Substring(4, 2) == "04" && m.LocatNo.Substring(4, 2) == "05" && + m.LocatNo.Substring(4, 2) == "06" && m.LocatNo.Substring(3, 2) == "07" && m.Status == "0" && m.Flag == "0").LocatNo; //涓滀晶鎴块棿搴撲綅 + } + } + else if (type1.Type == "2" && type1.Type == "3") //鎶芥鍑哄簱 /鍙栨牱鍑哄簱 + { + positionEnd = Db.Queryable<SysStorageLocat>().First(m => m.AreaNo == "B04" && m.Status == "0" && m.Flag == "0").LocatNo; + } + else if (type1.Type == "4")//涓嶅悎鏍煎搧鍑哄簱 + { + + positionEnd = Db.Queryable<SysStorageLocat>().First(m => m.AreaNo == "B03" && m.Status == "0" && m.Flag == "0").LocatNo; + } + else //鍏朵粬鍗曟嵁绫诲瀷閮藉瓨鏀惧彂璐х紦瀛樺尯 + { + positionEnd = Db.Queryable<SysStorageLocat>().First(m => m.AreaNo == "B02" && m.Status == "0" && m.Flag == "0").LocatNo; + } + #endregion + + #region AGV璋冪敤 + var storageLocatEnd = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == positionEnd && w.Flag == "0" && w.Status == "0"); + if (storageLocatEnd == null) + { + throw new Exception("鐢熸垚鐨凙GV浠诲姟鐩殑鍦板潃涓嶆纭�"); + } + List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>(); + + object[] position = new object[2]; + position[0] = new + { + positionCode = positionStart, + type = "00" + }; + position[1] = new + { + positionCode = positionEnd, + type = "00" + }; + + AgvSchedulingTask agvTask = new AgvSchedulingTask(); + agvTask.ReqCode = TtaskNo; //agv璇锋眰缂栧彿锛岄渶瑕侀殢鏈虹敓鎴� 锛堟渶澶�32浣嶏級 + agvTask.TaskCode = TtaskNo; //浠诲姟鍙� + agvTask.TaskTyp = type; //鎼繍绫诲瀷 + agvTask.PositionCodePath = position; //璧峰鍜岀洰鐨勪綅闆嗗悎 + agvTask.CtnrTyp = "1"; //瀹瑰櫒绫诲瀷锛屽�间负1 + if (type == "D02") + { + agvTask.CtnrNum = "10"; //鍙犳墭浠诲姟闇�瑕佷笅鍙戠┖鎵樼洏鏁伴噺 + } + + agvTaskList.Add(agvTask); + + string str = ""; + var list2 = agvTaskList.Select(m => m.ReqCode).ToList(); + var jsonData = JsonConvert.SerializeObject(agvTaskList); + jsonData = jsonData.Substring(1, jsonData.Length - 1); + jsonData = jsonData.Substring(0, jsonData.Length - 1); + var response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV"); + var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); + if (agvModel.Code != "0") + { + //璁板綍log + var logStr = $@".\log\AGV\浠诲姟鍙嶉" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; + jsonData = JsonConvert.SerializeObject(agvModel); + LogFile.SaveLogToFile($"AGV浠诲姟鍙嶉鎵ц閫氱煡锛�( {jsonData} ),", logStr); + } + + #endregion } Db.CommitTran(); } @@ -2400,7 +2513,7 @@ /// </summary> /// <param name="taskNo">浠诲姟鍙�</param> /// <param name="userId">鎿嶄綔浜�</param> - /// <exception cref="Exception"></exception> + /// <exception cref="Exception"></exception> public void RelocationSuccess(string taskNo, int userId) { try @@ -3621,5 +3734,266 @@ return nowAddress; } + + /// <summary> + /// 鑾峰彇鎷嗗灈鎵樼洏鎷嗗灈淇℃伅 + /// </summary> + /// <param name="model">鎷嗗灈鎵樼洏鍙峰拰WCS浠诲姟鍙�</param> + /// <returns>鎷嗗灈鎵樼洏淇℃伅</returns> + public RequestBoxInfoCheck BoxInfoCheckWcs (BoxInfoCheck model) + { + try + { + // 鍒ゆ柇褰撳墠浠诲姟鐘舵�� Status 1:姝e湪鎵ц 3:寮傚父缁撴潫 + var taskModel = Db.Queryable<LogTask>().First(m => m.TaskNo == model.TaskNo && m.IsDel == "0" && m.Status == "1"); + if (taskModel == null) + { + throw new Exception("姝や换鍔′笉瀛樺湪鎴栦换鍔$姸鎬佸凡鍙樻洿!"); + } + // 楠岃瘉鎵樼洏鍒嗛厤淇℃伅 + var palletBindModel = Db.Queryable<BllExportAllot>().First(m => m.PalletNo == model.PalletNo && m.TaskNo == model.TaskNo && m.IsDel == "0" && m.Status == "1"); + if (palletBindModel != null) + { + throw new Exception("鏈壘鍒板綋鍓嶆墭鐩樺垎閰嶄换鍔′俊鎭�!"); + } + //璁$畻褰撳墠褰撳墠鎵樼洏涓婄鏁板拰鎷嗗灈绠辨暟 + var storcklist = Db.Queryable<DataStockDetail>().First(m => m.PalletNo == palletBindModel.PalletNo && m.SkuNo == palletBindModel.SkuNo && m.LotNo == palletBindModel.LotNo); + + string level = "1"; + int qty = 0, qtycount = 0; + var packlist = Db.Queryable<SysPackag>().First(m => m.PackagNo == palletBindModel.SkuNo && m.IsDel == "0"); + if (packlist.L2Name == "绠�") + { + level = "2"; + } + switch (level) + { + case "1": + qty = (int)(palletBindModel.Qty / packlist.L1Num); + qtycount = (int)(storcklist.Qty / packlist.L1Num); + break; + case "2": + qty = (int)(palletBindModel.Qty / packlist.L2Num); + qtycount = (int)(storcklist.Qty / packlist.L2Num); + break; + + } + + var list = new RequestBoxInfoCheck + { + PalletNo = model.PalletNo, + TaskNo = model.TaskNo, + SkuNo = palletBindModel.SkuNo, + SkuName = palletBindModel.SkuName, + LotNo = palletBindModel.LotNo, + OrderNo = palletBindModel.SONo, + Standard = palletBindModel.Standard, + Qty = qty,//鎷嗗灈绠辨暟 + QtyCount = qtycount //鎵樼洏涓婄鏁� + }; + return list; + } + catch (Exception e) + { + + throw new Exception(e.Message); + } + } + + /// <summary> + /// 鑾峰彇鎷嗗灈鍒嗘嫞涓绘壂绠辩爜鍑哄簱 + /// </summary> + /// <param name="model">鎷嗗灈鎵樼洏鍙峰拰WCS浠诲姟鍙�</param> + /// <returns>鎷嗗灈鎵樼洏淇℃伅</returns> + public string BoxInfoExportWcs(string boxno) + { + try + { + if (string.IsNullOrWhiteSpace(boxno)) + { + throw new Exception("涓绘壂鍒嗘嫞绠辩爜涓虹┖"); + } + //绠辩爜鎵�鍦ㄦ媶鍨涙嫞璐т俊鎭� + var boxModel = Db.Queryable<DataBoxInfo>().First(m=>m.BoxNo == boxno); + if (boxModel == null) + { + throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅"); + } + //鍑哄簱鍒嗛厤淇℃伅 + var allot = Db.Queryable<BllExportAllot>().First(m => + m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == boxModel.PalletNo); + if (allot == null) + { + throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅"); + } + //鍑哄簱鍗� + var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == allot.SONo); + if (notice == null) + { + throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�"); + } + //鍑哄簱鍗曟槑缁� + var noticeDetail = Db.Queryable<BllExportNoticeDetail>() + .First(m => m.IsDel == "0" && m.Id == allot.SODetailNo); + if (noticeDetail == null) + { + throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�"); + } + + //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級 + var needQty = allot.Qty - allot.CompleteQty; + + //搴撳瓨鏄庣粏 + var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId); + if (stockDetail == null) + { + throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�"); + } + //搴撳瓨鎬昏〃 + var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo); + if (stock == null) + { + throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�"); + } + + List<DataBoxInfo> boxInfos; + var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxno && m.StockDetailId == stockDetail.Id); + if (boxInfo.Count() == 0) + { + throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅"); + } + boxInfos = boxInfo.ToList(); + + var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == boxModel.PalletNo).ToList(); + if (boxInfo.Count() == 0) + { + throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅"); + } + if (boxInfo.Any(m => m.PalletNo != boxModel.PalletNo)) + { + throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴"); + } + var boxQty = boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList(); + if (boxQty[0] > needQty) + { + throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺"); + } + decimal pickQty = 0;//鎷h揣鐨勬暟閲� + + var comList = new List<BllCompleteDetail>(); + foreach (var item in boxInfos) + { + //娣诲姞鎷h揣鏄庣粏 + var completeDetail = new BllCompleteDetail() + { + SONo = allot.SONo, + SODetailNo = allot.SODetailNo, + ExportAllotId = allot.Id, + StockId = allot.StockId, + BoxNo = item.BoxNo, + BoxNo2 = item.BoxNo2, + BoxNo3 = item.BoxNo3, + + LotNo = allot.LotNo, + LotText = allot.LotText, + SupplierLot = allot.SupplierLot, + SkuNo = allot.SkuNo, + SkuName = allot.SkuName, + Standard = allot.Standard, + PalletNo = boxModel.PalletNo, + CompleteQty = item.Qty, + + }; + comList.Add(completeDetail); + + + pickQty += item.Qty; + //鍒犻櫎搴撳瓨绠辩爜鏄庣粏 + Db.Deleteable(item).ExecuteCommand(); + } + + Db.Insertable(comList).ExecuteCommand(); + //淇敼鍑哄簱鍒嗛厤淇℃伅 + allot.CompleteQty += pickQty; + allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3"; + allot.UpdateTime = DateTime.Now; + if (allot.Status == "5") + { + //鍒ゆ柇璇ユ墭鐩樻槸鍚﹁繕瀛樺湪鐗╂枡 瀛樺湪鏀逛负寰呭洖搴� 寰呭洖搴撳畬鎴愬悗鏀逛负宸插畬鎴� + } + Db.Updateable(allot).ExecuteCommand(); + + //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁� + stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇� + stockDetail.Qty -= pickQty; + stockDetail.LockQty -= pickQty; + if (stockDetail.Qty == stockDetail.LockQty) + { + stockDetail.Status = "2"; + } + else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0) + { + stockDetail.Status = "1"; + } + else + { + stockDetail.Status = "0"; + } + + if (stockDetail.Qty <= 0) + { + Db.Deleteable(stockDetail).ExecuteCommand(); + } + else + { + Db.Updateable(stockDetail).ExecuteCommand(); + } + stock.Qty -= pickQty; + stock.LockQty -= pickQty; + if (stock.Qty <= 0) + { + Db.Deleteable(stock).ExecuteCommand(); + } + else + { + Db.Updateable(stock).ExecuteCommand(); + } + var num2 = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == boxModel.PalletNo); + if (num2 <= 0) + { + //鏀瑰彉鎵樼洏鐘舵�� + var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == boxModel.PalletNo && m.IsDel == "0"); + if (pallet == null) + { + throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�"); + } + pallet.Status = "0"; + Db.Updateable(pallet).ExecuteCommand(); + } + //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲� + noticeDetail.CompleteQty += pickQty; + noticeDetail.Status = "2"; + Db.Updateable(noticeDetail).ExecuteCommand(); + + var num = Db.Queryable<BllExportNoticeDetail>() + .Count(m => m.IsDel == "0" && m.SONo == allot.SONo && m.CompleteQty < m.Qty); + if (num <= 0) + { + notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴� + + noticeDetail.Status = "3"; + Db.Updateable(noticeDetail).ExecuteCommand(); + } + //淇敼鍑哄簱鍗曚俊鎭� + Db.Updateable(notice).ExecuteCommand(); + + return ""; + } + catch (Exception e) + { + + throw new Exception(e.Message); + } + } } } diff --git a/Wms/WMS.BLL/DataServer/StockServer.cs b/Wms/WMS.BLL/DataServer/StockServer.cs index 265e972..83d3b68 100644 --- a/Wms/WMS.BLL/DataServer/StockServer.cs +++ b/Wms/WMS.BLL/DataServer/StockServer.cs @@ -11,8 +11,10 @@ using Model.ModelVm.DataVm; using SqlSugar; using WMS.DAL; +using WMS.Entity.BllSoEntity; using WMS.Entity.Context; using WMS.Entity.DataEntity; +using WMS.Entity.LogEntity; using WMS.Entity.SysEntity; using WMS.IBLL.IDataServer; @@ -1021,5 +1023,143 @@ return stockDetailsList; } #endregion + + #region AGV灏忚溅浠诲姟瀹屾垚 + + /// <summary> + /// AGV鍏ュ簱瀹屾垚 + /// </summary> + /// <param name="TaskCode">浠诲姟鍙�</param> + /// <returns></returns> + public void ArriveFinish(string TaskCode) + { + try + { + var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.OrderType == "0");//鑾峰彇浠诲姟淇℃伅 + var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇搴撲綅淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo); + //寮�鍚簨鍔� + Db.BeginTran(); + + //淇敼璧峰搴撲綅鐘舵�� + storageLocat.Status = "0";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 + Db.Updateable(storageLocat).ExecuteCommand(); + + //淇敼浠诲姟鐘舵�� + palletNo.Status = "2"; //宸插畬鎴� + Db.Updateable(palletNo).ExecuteCommand(); + + //淇敼搴撳瓨鏄庣粏 + stockDetail.Status = "0";//寰呭垎閰� + stockDetail.LocatNo = ""; + stockDetail.AreaNo = ""; + stockDetail.RoadwayNo = ""; + stockDetail.WareHouseNo = ""; + Db.Updateable(stockDetail).ExecuteCommand(); + + //涓嬪彂WCS鐢宠鍏ュ簱 + + + Db.CommitTran(); + + } + catch (Exception ex) + { + + throw new Exception("AGV杩斿洖鍏ュ簱瀹屾垚淇″彿澶勭悊閿欒锛岄敊璇俊鎭細" + ex); + } + } + + /// <summary> + /// AGV鍑哄簱瀹屾垚 + /// </summary> + /// <param name="TaskCode">浠诲姟鍙�</param> + /// <returns></returns> + public void SoFinish(string TaskCode) + { + try + { + var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.OrderType == "1");//鑾峰彇浠诲姟淇℃伅 + var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.EndLocat); //鑾峰彇搴撲綅淇℃伅 + var storageStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇搴撲綅淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo); //鑾峰彇搴撳瓨淇℃伅 + + //寮�鍚簨鍔� + Db.BeginTran(); + //淇敼鐩殑搴撲綅鐘舵�� + storageLocat.Status = "1";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 + Db.Updateable(storageLocat).ExecuteCommand(); + + //淇敼浠诲姟鐘舵�� + palletNo.Status = "2"; //宸插畬鎴� + Db.Updateable(palletNo).ExecuteCommand(); + + //淇敼搴撳瓨鏄庣粏 + stockDetail.Status = "2";// 0:寰呭垎閰� 1:閮ㄥ垎鍒嗛厤 2锛氬凡鍒嗛厤 3锛氱洏鐐归攣瀹氾細 4绉诲簱閿佸畾 + stockDetail.LocatNo = storageLocat.LocatNo; + stockDetail.AreaNo = storageLocat.AreaNo; + stockDetail.RoadwayNo = storageLocat.RoadwayNo; + stockDetail.WareHouseNo = storageLocat.WareHouseNo; + Db.Updateable(stockDetail).ExecuteCommand(); + + + Db.CommitTran(); + + } + catch (Exception ex ) + { + + throw new Exception("AGV杩斿洖鍑哄簱瀹屾垚淇″彿澶勭悊閿欒锛岄敊璇俊鎭細" + ex); + } + } + + /// <summary> + /// AGV绉诲簱瀹屾垚 + /// </summary> + /// <param name="TaskCode">浠诲姟鍙�</param> + /// <returns></returns> + public void MoveFinish(string TaskCode) + { + try + { + var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.OrderType == "3");//鑾峰彇浠诲姟淇℃伅 + var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.EndLocat); //鑾峰彇搴撲綅淇℃伅 + var storageStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇搴撲綅淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo); //鑾峰彇搴撳瓨淇℃伅 + //var soAllot = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.PalletNo == palletNo.PalletNo);//鑾峰彇鍒嗛厤淇℃伅 + + + //寮�鍚簨鍔� + Db.BeginTran(); + //淇敼璧峰搴撲綅鐘舵�� + storageLocat.Status = "0";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 + Db.Updateable(storageLocat).ExecuteCommand(); + + //淇敼鐩殑搴撲綅鐘舵�� + storageLocat.Status = "1";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 + Db.Updateable(storageLocat).ExecuteCommand(); + + //淇敼浠诲姟鐘舵�� + palletNo.Status = "2"; //宸插畬鎴� + Db.Updateable(palletNo).ExecuteCommand(); + + //淇敼搴撳瓨鏄庣粏 + stockDetail.Status = "2";// 0:寰呭垎閰� 1:閮ㄥ垎鍒嗛厤 2锛氬凡鍒嗛厤 3锛氱洏鐐归攣瀹氾細 4绉诲簱閿佸畾 + stockDetail.LocatNo = storageLocat.LocatNo; + stockDetail.AreaNo = storageLocat.AreaNo; + stockDetail.RoadwayNo = storageLocat.RoadwayNo; + stockDetail.WareHouseNo = storageLocat.WareHouseNo; + Db.Updateable(stockDetail).ExecuteCommand(); + + + Db.CommitTran(); + } + catch (Exception ex) + { + + throw new Exception("AGV杩斿洖绉诲簱瀹屾垚淇″彿澶勭悊閿欒锛岄敊璇俊鎭細"+ex); + } + } + #endregion } } diff --git a/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs b/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs index e8a088d..092b795 100644 --- a/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs +++ b/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs @@ -93,7 +93,7 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - HttpReturnModel HttpCreateAsn(AsnInfo model); + HttpReturnModel HttpCreateAsn(AsnInfo model,string url); /// <summary> /// 璁㈠崟鍥炰紶涓婃父绯荤粺 /// </summary> diff --git a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs index ee5de99..e6f2d61 100644 --- a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs +++ b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs @@ -133,7 +133,7 @@ /// <param name="taskNo">浠诲姟鍙�</param> /// <param name="userId">鎿嶄綔浜�</param> /// <returns></returns> - void ExportSuccess(string taskNo,int userId); + void ExportSuccess(string taskNo,int userId,string url); /// <summary> /// wcs杩斿洖鐨勬垚鍔熶俊鍙锋垨鎵嬪姩瀹屾垚锛堢Щ搴撴垚鍔燂級 @@ -215,5 +215,13 @@ /// <param name="soNo"></param> /// <returns></returns> string IsNeedUnpack(string soNo); + + /// <summary> + /// 鑾峰彇鎷嗗灈鎵樼洏鎷嗗灈淇℃伅 + /// </summary> + /// <param name="model">鎷嗗灈鎵樼洏鍙峰拰WCS浠诲姟鍙�</param> + /// <returns>鎷嗗灈鎵樼洏淇℃伅</returns> + + public RequestBoxInfoCheck BoxInfoCheckWcs(BoxInfoCheck model); } } diff --git a/Wms/WMS.IBLL/IDataServer/IStockServer.cs b/Wms/WMS.IBLL/IDataServer/IStockServer.cs index 506e689..f3733db 100644 --- a/Wms/WMS.IBLL/IDataServer/IStockServer.cs +++ b/Wms/WMS.IBLL/IDataServer/IStockServer.cs @@ -119,5 +119,29 @@ /// <returns></returns> List<StockDetailDto> GetInventoryList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus); #endregion + + #region AGV灏忚溅浠诲姟瀹屾垚 + /// <summary> + /// 鍏ュ簱浠诲姟瀹屾垚 + /// </summary> + /// <param name="skuNo">鐗╂枡缂栫爜</param> + /// <param name="skuName">鐗╂枡鍚嶇О</param> + /// <returns></returns> + public void ArriveFinish(string TaskCode); + /// <summary> + /// 鍑哄簱浠诲姟瀹屾垚 + /// </summary> + /// <param name="skuNo">鐗╂枡缂栫爜</param> + /// <param name="skuName">鐗╂枡鍚嶇О</param> + /// <returns></returns> + public void SoFinish(string TaskCode); + /// <summary> + /// 绉诲簱浠诲姟瀹屾垚 + /// </summary> + /// <param name="skuNo">鐗╂枡缂栫爜</param> + /// <param name="skuName">鐗╂枡鍚嶇О</param> + /// <returns></returns> + public void MoveFinish(string TaskCode); + #endregion } } diff --git a/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs b/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs index 9c14ecc..55e32dc 100644 --- a/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs +++ b/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs @@ -1,6 +1,7 @@ 锘縰sing System; using System.Collections.Generic; using System.Text; +using Model.InterFaceModel; using Model.ModelDto.BllCheckDto; using Model.ModelDto.PdaDto; using WMS.Entity.DataEntity; @@ -137,7 +138,19 @@ /// <param name="palletNo"></param> /// <param name="areaNo"></param> /// <param name="userId"></param> - List<string> AgvTransport2(string soNo, string palletNo, string areaNo, int userId, string url); + List<string> AgvTransport2(string soNo, string palletNo, string areaNo,string ruku, int userId, string url); + + /// <summary> + /// agv浠诲姟涓嬪彂 + /// </summary> + /// <param name="model"></param> + public OutCommanAgvDto AGVTask(string type, string taskno, string positionStart, string positionEnd, string url); + + /// <summary> + /// agv浠诲姟鍙栨秷 + /// </summary> + /// <param name="model"></param> + public void cancelTask(string taskno, string url); #endregion #region 浜哄伐杞繍 diff --git a/Wms/Wms/Controllers/BllSoController.cs b/Wms/Wms/Controllers/BllSoController.cs index f64a0bd..dfc5272 100644 --- a/Wms/Wms/Controllers/BllSoController.cs +++ b/Wms/Wms/Controllers/BllSoController.cs @@ -700,7 +700,7 @@ var type = _taskSvc.GetTaskType(taskNo); if (type == "1")//鍑哄簱瀹屾垚 { - _exNoticeSvc.ExportSuccess(taskNo, int.Parse(userId)); + _exNoticeSvc.ExportSuccess(taskNo, int.Parse(userId), ""); } else if (type == "2")//鍑哄簱鏃朵骇鐢熺殑绉诲簱浠诲姟瀹屾垚 { diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs index 09af858..a578558 100644 --- a/Wms/Wms/Controllers/DownApiController.cs +++ b/Wms/Wms/Controllers/DownApiController.cs @@ -17,6 +17,7 @@ using Model.ModelVm.PdaVm; using WMS.IBLL.IPdaServer; using Model.ModelVm; +using WMS.IBLL.IDataServer; namespace Wms.Controllers { @@ -34,8 +35,9 @@ private readonly ITaskServer _taskSvc;//浠诲姟Svc private readonly IPdaSoServer _pdaSoSvc;//绌烘墭鍑哄簱Svc private readonly IPdaAsnServer _paAsnSvc;//绌烘墭璺虹粦瀹� + private readonly IStockServer _stockSvc;//AGV浠诲姟瀹屾垚绠� - public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IPdaSoServer pdaSoSvc,IPdaAsnServer paAsnSvc) + public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IPdaSoServer pdaSoSvc,IPdaAsnServer paAsnSvc,IStockServer stockSvc) { _config = setting.Value; _exNoticeSvc = exNoticeSvc; @@ -44,6 +46,7 @@ _taskSvc = taskSvc; _pdaSoSvc = pdaSoSvc; _paAsnSvc = paAsnSvc; + _stockSvc = stockSvc; } #region WMS鎺ュ彛 璋冪敤涓嬫父绯荤粺鎺ュ彛 @@ -374,7 +377,7 @@ case "1"://鍑哄簱瀹屾垚浠诲姟 if (model.TaskType == "1")//0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴� { - _exNoticeSvc.ExportSuccess(model.TaskNo, 0); + _exNoticeSvc.ExportSuccess(model.TaskNo, 0, _config.AgvHost + _config.GenAgvSchedulingTask); return Ok(new WcsModel { StatusCode = 0, Msg = "鍑哄簱瀹屾垚" }); } else if (model.TaskType == "2") @@ -696,6 +699,31 @@ //杞﹂棿鍙枡 + //WCS鐢宠鎷嗗灈淇℃伅 + /// <summary> + /// 鎴愬搧绠辩爜鎷嗗灈鎷h揣 + /// </summary> + /// <param name="model">鍏ュ簱鍗曚俊鎭�</param> + /// <returns></returns> + [AllowAnonymous] + [HttpPost] + public IActionResult ResultBoxInfoCheckWcs(BoxInfoCheck model) + { + var logStr = $@".\log\WCS\WCS鐢宠鎷嗗灈鎵樼洏淇℃伅" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; + try + { + RequestBoxInfoCheck list = _exNoticeSvc.BoxInfoCheckWcs(model); + return Ok(new { Success = 1,Message = "鎷嗗灈淇℃伅鑾峰彇鎴愬姛",data = list}); + } + catch (Exception e) + { + LogFile.SaveLogToFile($"WCS鐢宠鎵樼洏鎷嗗灈寮傚父杩斿洖锛�( {e.Message} ),", logStr); + + return Ok(new ErpModel { Success = -1, Message = e.Message}); + } + + } + #region AGV @@ -704,10 +732,10 @@ /// AGV 鎵ц鍥炶皟鐨勬柟娉曪紝鍖呭惈浠诲姟寮�濮嬶紝璧板嚭鍌ㄤ綅锛屼换鍔″畬鎴愬強浠诲姟鍙栨秷銆� /// 鍙栨秷閫氱煡涓轰换鍔″崟锛屽叾浠栭�氱煡涓哄崟涓换鍔$粍鎴栧瓙浠诲姟銆傛敞鎰忥細鏄惁閫氱煡闇�瑕佸湪浠诲姟妯℃澘閰嶇疆 /// </summary> + /// <param name="model">鍏ュ簱鍗曚俊鎭�</param> /// <returns></returns> - /// <exception cref="Exception"></exception> [HttpPost] - public IActionResult AgvCallback(AgvContinueTask model) + public IActionResult AgvCallback(AgvTaskDto model) { try { @@ -718,21 +746,32 @@ //鎺ユ敹鏃堕棿 var time1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + + //娴嬭瘯鎺ュ彛鐢� var orderType = _taskSvc.GetTaskOrderType(model.TaskCode);// 鍒ゆ柇鍗曟嵁绫诲瀷鍏ュ嚭绉� var taskType = _taskSvc.GetTaskType(model.TaskCode);//鏍规嵁浠诲姟鍙疯幏鍙栦换鍔$被鍨� switch (orderType) { case "0"://鍏ュ簱浠诲姟鎵ц + _stockSvc.ArriveFinish(model.TaskCode); + break; case "1"://鍑哄簱浠诲姟鎵ц + _stockSvc.SoFinish(model.TaskCode); + break; + case "2"://鐩樺簱浠诲姟鎵ц + case "3"://绉诲簱浠诲姟鎵ц - return Ok(new OutCommanAgvDto { Code = "0", Message = "鎴愬姛", ReqCode = model.ReqCode }); + _stockSvc.MoveFinish(model.TaskCode); + break; + // return Ok(new OutCommanAgvDto { Code = "0", Message = "鎴愬姛", ReqCode = model.ReqCode }); default: return Ok(new OutCommanAgvDto { Code = "1", Message = "澶辫触", ReqCode = model.ReqCode }); } + return Ok(new OutCommanAgvDto { Code = "0", Message = "鎴愬姛", ReqCode = model.ReqCode }); } catch (Exception ex) @@ -745,7 +784,7 @@ } } - + #endregion diff --git a/Wms/Wms/Controllers/PdaCrController.cs b/Wms/Wms/Controllers/PdaCrController.cs index a668121..cf4cc6b 100644 --- a/Wms/Wms/Controllers/PdaCrController.cs +++ b/Wms/Wms/Controllers/PdaCrController.cs @@ -363,7 +363,7 @@ } var uId = int.Parse(userId); - _pdaCrSvc.AgvTransport(model.PalletNo, model.AreaNo, model.Ruku, uId, _config.WcsHost + _config.GenAgvSchedulingTask); + _pdaCrSvc.AgvTransport(model.PalletNo, model.AreaNo, model.Ruku, uId, _config.AgvHost + _config.GenAgvSchedulingTask); return Ok(new { data = "", code = 0, msg = "鎴愬姛" }); } @@ -395,7 +395,7 @@ } var uId = int.Parse(userId); - var str = _pdaCrSvc.AgvTransport2(model.SoNo,model.PalletNo, model.AreaNo, uId, _config.WcsHost + _config.GenAgvSchedulingTask); + var str = _pdaCrSvc.AgvTransport2(model.SoNo,model.PalletNo, model.AreaNo,model.Ruku, uId, _config.WcsHost + _config.GenAgvSchedulingTask); var msgStr = ""; if (str.Contains("0")) { diff --git a/Wms/Wms/Controllers/UpApiController.cs b/Wms/Wms/Controllers/UpApiController.cs index e215e71..8f6894a 100644 --- a/Wms/Wms/Controllers/UpApiController.cs +++ b/Wms/Wms/Controllers/UpApiController.cs @@ -13,6 +13,7 @@ using WMS.IBLL.IBllCheckServer; using Model.ModelVm.BllCheckVm; using Microsoft.Extensions.Logging; +using WMS.IBLL.IPdaServer; namespace Wms.Controllers { @@ -28,12 +29,14 @@ private readonly IExportNoticeServer _exNoticeSvc;//鍑哄簱鍗昐vc private readonly IArrivalNoticeServer _arrivalNoticeSvc; private readonly IStockCheckServer _stockCheckSvc;//鐩樼偣鍗昐vc - public UpApiController(IOptions<ApiUrlConfig> setting,IExportNoticeServer exNoticeSvc,IArrivalNoticeServer arrivalNoticeServer,IStockCheckServer stockCheckSvc) + private readonly IPdaCrServer _daCrSvc;//PDA + public UpApiController(IOptions<ApiUrlConfig> setting,IExportNoticeServer exNoticeSvc,IArrivalNoticeServer arrivalNoticeServer,IStockCheckServer stockCheckSvc,IPdaCrServer daCrSvc) { _config = setting.Value; _exNoticeSvc = exNoticeSvc; _arrivalNoticeSvc = arrivalNoticeServer; _stockCheckSvc = stockCheckSvc; + _daCrSvc = daCrSvc; } #endregion @@ -134,7 +137,7 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - [HttpPost] + [HttpPost] public IActionResult FinishExportNotice(FinshVm model) { try @@ -209,8 +212,56 @@ } } - //绠辩爜淇℃伅 鎵嬫寔缁勬墭鐢� (鎵鐮佸悜杩芥函瑕佷俊鎭�) + //绠辩爜淇℃伅 鎵嬫寔缁勬墭鐢� (鎵鐮佸悜杩芥函瑕佷俊鎭�) + // + + /// <summary> + /// 涓嬪彂AGV璋冨害浠诲姟 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + [HttpPost] + public IActionResult AGVTask(string type, string taskno, string positionStart, string positionEnd) + { + try + { + + OutCommanAgvDto agvRequest = _daCrSvc.AGVTask(type,taskno,positionStart,positionEnd, _config.AgvHost + _config.GenAgvSchedulingTask); + if (agvRequest.Code != "0") + { + return Ok(new { code = 1, msg = "灏忚溅浠诲姟鎵ц澶辫触" }); + } + + return Ok(new { code = 1, msg = "AGV浠诲姟涓嬪彂鎴愬姛" }); + + } + catch (Exception e) + { + return Ok(new { code = 1, msg = e.Message }); + } + } + + /// <summary> + /// 涓嬪彂AGV鍙栨秷浠诲姟 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + [HttpPost] + public IActionResult cancelTask(string taskno) + { + try + { + + _daCrSvc.cancelTask(taskno, _config.AgvHost + _config.CancelTask); + return Ok(new { code = 1, msg = "AGV浠诲姟鍙栨秷鎴愬姛" }); + + } + catch (Exception e) + { + return Ok(new { code = 1, msg = e.Message }); + } + } #endregion @@ -244,7 +295,7 @@ LogFile.SaveLogToFile($"鍏ュ簱鍗曚笅鍙戯細( {jsonData} ),", logStr); } - result = _arrivalNoticeSvc.HttpCreateAsn(model); + result = _arrivalNoticeSvc.HttpCreateAsn(model, _config.WcsHost + _config.AddOrderTaskUrl); if (logStr != "") { var jsonData = JsonConvert.SerializeObject(result); diff --git a/Wms/Wms/Properties/launchSettings.json b/Wms/Wms/Properties/launchSettings.json index 5db9873..cad583c 100644 --- a/Wms/Wms/Properties/launchSettings.json +++ b/Wms/Wms/Properties/launchSettings.json @@ -1,20 +1,13 @@ { - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:50515/", - "sslPort": 44363 - } - }, - "$schema": "http://json.schemastore.org/launchsettings.json", "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" - } + }, + "sqlDebugging": false, + "nativeDebugging": true }, "Wms": { "commandName": "Project", @@ -24,5 +17,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.137.94:8081/", + "sslPort": 44363 + } } } \ No newline at end of file diff --git a/Wms/Wms/Tools/ApiUrlConfig.cs b/Wms/Wms/Tools/ApiUrlConfig.cs index 28203b5..2488b98 100644 --- a/Wms/Wms/Tools/ApiUrlConfig.cs +++ b/Wms/Wms/Tools/ApiUrlConfig.cs @@ -109,6 +109,11 @@ public string GenAgvSchedulingTask { get; set; } /// <summary> + /// 鍙栨秷浠诲姟鎺ュ彛 + /// </summary> + public string CancelTask { get; set; } + + /// <summary> /// 缁х画鎵ц浠诲姟鎺ュ彛 /// </summary> public string ContinueTask { get; set; } diff --git a/Wms/Wms/appsettings.json b/Wms/Wms/appsettings.json index 5c09e14..92bb1cf 100644 --- a/Wms/Wms/appsettings.json +++ b/Wms/Wms/appsettings.json @@ -27,7 +27,7 @@ "MesHost": "http://10.18.99.67:3000", //mesIP "WcsHost": "http://10.60.16.10:5005", // "http://localhost:57061", //wcsIPhttp://localhost:57061/ "BoxHost": "http://10.110.24.30:8081", //boxIP - "AgvHost": "http://10.110.24.30:8081", //agvIP + "AgvHost": "http://10.18.99.66:8181", //agvIP // WCS "IssueComApiUrl": "/api/demo/wcsTasks", //涓嬪彂鍛戒护(鍑哄簱銆佺Щ搴�) @@ -49,9 +49,10 @@ "FuMaGetTokenUrl": "/port/mes/service/system/sign_login", //鑾峰彇浠ょ墝 // AGV - "GenAgvSchedulingTask": "http://IP:PORT/rcms/services/rest/hikRpcService/genAgvSchedulingTask", //鐢熸垚浠诲姟鍗曟帴鍙� - "ContinueTask": "http://IP:PORT/rcms/services/rest/hikRpcService/continueTask", //缁х画鎵ц浠诲姟鎺ュ彛 - "GenPreScheduleTask": "http://IP:PORT/rcms/services/rest/hikRpcService/genPreScheduleTask" // 棰勮皟搴﹀澶栨帴鍙� + "GenAgvSchedulingTask": "/rcms/services/rest/hikRpcService/genAgvSchedulingTask", //鐢熸垚浠诲姟鍗曟帴鍙� + "CancelTask": "/rcms/services/rest/hikRpcService/cancelTask",//鍙栨秷浠诲姟鎺ュ彛 + "ContinueTask": "/rcms/services/rest/hikRpcService/continueTask", //缁х画鎵ц浠诲姟鎺ュ彛 + "GenPreScheduleTask": "/rcms/services/rest/hikRpcService/genPreScheduleTask" // 棰勮皟搴﹀澶栨帴鍙� }, "MesConfig": { "MesUser": "wms", -- Gitblit v1.8.0