From 157abc191c34e57c1b958ae74fc3de6518ca8a30 Mon Sep 17 00:00:00 2001 From: zhaowc <526854230@qq.com> Date: 星期五, 28 二月 2025 11:06:36 +0800 Subject: [PATCH] 修改客户需求 --- Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs | 353 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 288 insertions(+), 65 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs index 59aeddc..73bf387 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs @@ -799,10 +799,10 @@ { throw new Exception("鎵樼洏鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!"); } - if (models.WareHouseNo != "W02") - { - throw new Exception("璇ユ墭鐩樻湭鍦ㄥ钩搴撳唴,璇锋鏌�!"); - } + //if (models.WareHouseNo != "W02") + //{ + // throw new Exception("璇ユ墭鐩樻湭鍦ㄥ钩搴撳唴,璇锋鏌�!"); + //} var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == models.LocatNo); if (storageLocat == null) { @@ -890,7 +890,7 @@ /// <param name="palletNo"></param> /// <param name="areaNo"></param> /// <param name="ruku"></param> - public void AgvTransport(string palletNo, string areaNo, string ruku, int userId, string url) + public void AgvTransport(string palletNo, string areaNo, string ruku, int userId, string url, string wcsurl) { if (string.IsNullOrEmpty(palletNo)) { @@ -907,7 +907,7 @@ try { string EndLocat = string.Empty,OrderTy = "";//鐩爣浣嶇疆 - + var tasktype = "D00"; //灏忚溅浠诲姟绫诲瀷锛岄粯璁や负鐐瑰埌鐐逛换鍔� var log = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && (w.Status == "0" || w.Status == "1")); if (log != null) @@ -969,6 +969,33 @@ //寮�鍚簨鍔� Db.BeginTran(); + //璇锋眰WCS鍏ュ簱鍙f斁璐х‘璁� + if (!string.IsNullOrEmpty(ruku)) + { + try + { + var port = new + { + Port = EndLocat + }; + var json = JsonConvert.SerializeObject(port); + var res = HttpHelper.DoPost(wcsurl, json, "璇锋眰WCS鍏ュ簱鍙f槸鍚﹀彲鏀捐揣", "WCS"); + + //////瑙f瀽杩斿洖鏁版嵁 + var ret = JsonConvert.DeserializeObject<WcsModel>(res); + if (ret.StatusCode == -1) + { + throw new Exception(EndLocat + "鍙峰叆搴撳彛宸叉湁鍏朵粬浠诲姟鍗犵敤,璇烽�夋嫨鍏朵粬鍏ュ簱鍙�"); + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } + + + //娣诲姞鍑哄簱浠诲姟 var taskNo = new Common().GetMaxNo("TK"); var exTask = new LogTask @@ -985,7 +1012,7 @@ IsSend = 1,//鏄惁鍙啀娆′笅鍙� IsCancel = 1,//鏄惁鍙彇娑� IsFinish = 1,//鏄惁鍙畬鎴� - Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Type = OrderTy,//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 OrderType = OrderTy,//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� @@ -1012,39 +1039,24 @@ Db.Updateable(storageLocatEnd).ExecuteCommand(); } //娣诲姞鎿嶄綔鏃ュ織璁板綍 - var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "AGV杞繍", palletNo, "绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId); + var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "AGV杞繍", palletNo, OrderTy == "0" ?"鍏ュ簱":"绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId); #region 鍛煎彨灏忚溅浠g爜 var endlono = EndLocat; - var tasktype = "D00"; //榛樿涓虹偣鍒扮偣浠诲姟 - //鏍规嵁鐩殑鍦板潃搴撳尯鑾峰彇灏忚溅浠诲姟绫诲瀷 - switch (storageLocatEnd.AreaNo) + if (OrderTy == "0") { - case "B13" : - tasktype = "D02"; // 鍙犳墭浠诲姟锛堢洰鐨勫湴鍧�涓虹┖鎵樼洏鏀堕泦鍖猴級 - break; - case "B15": - tasktype = "D01"; // 鎷嗘墭浠诲姟锛堢洰鐨勫湴鍧�涓烘嫞璐у尯锛� - break; + tasktype = "RK0"; //鍏ュ簱浠诲姟 } - //缂撳瓨搴撲綅杞崲 3妤煎師杈呮枡Y003_001锛孻003_002锛孻003_003 1妤糦138_001鍒癥138_021澶栧寘缂撳瓨鍖� 1妤糦128_001鍒癥128_015鍐呭寘缂撳瓨鍖� + //缂撳瓨搴撲綅杞崲 3妤兼帴椹充綅Y003_001锛孻003_002锛孻003_003 if (storageLocatEnd.AreaNo == "B12") { switch (EndLocat.ToString().Substring(4, 1)) { case "1": - endlono = "Y003_00" + EndLocat.ToString().Substring(6, 1); + endlono = "Y003_0" + EndLocat.ToString().Substring(5, 2); 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; @@ -1270,21 +1282,13 @@ break; } - //缂撳瓨搴撲綅杞崲 3妤煎師杈呮枡Y003_001鍒癥003_009 1妤糦138_001鍒癥138_021澶栧寘缂撳瓨鍖� 1妤糦128_001鍒癥128_015鍐呭寘缂撳瓨鍖� + //缂撳瓨搴撲綅杞崲 3妤煎師杈呮枡Y003_001鍒癥003_011 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"; //鐢垫浠诲姟 + endlono = "Y003_0" + EndLocat.ToString().Substring(5, 2); break; default: break; @@ -1351,9 +1355,7 @@ - var IsTrue = false; - while (IsTrue == true) - { + // 姝e紡杩愯绋嬪簭鏀惧紑 string str = ""; var list2 = agvTaskList.Select(m => m.TaskCode).ToList(); @@ -1375,7 +1377,7 @@ //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// new TaskServer().EditTaskIssueOk(list2, time1, time2); str += "涓嬪彂鎴愬姛"; - IsTrue = true; + //IsTrue = true; } if (agvModel.Code == "1") { @@ -1387,7 +1389,7 @@ { throw new Exception(ex.Message); } - } + #endregion @@ -1402,8 +1404,203 @@ } } + /// <summary> + /// 绌烘墭鐩樺叆搴撳懠鍙皬杞� + /// </summary> + /// <param name="palletNo"></param> + /// <param name="areaNo"></param> + /// <param name="ruku"></param> + public void AgvTransport3(string palletNo, string LocatNo, string ruku, int userId, string url, string wcsurl) + { + if (string.IsNullOrEmpty(palletNo)) + { + throw new Exception("璇锋壂鎻忔墭鐩樻潯鐮侊紒"); + } + if (string.IsNullOrEmpty(ruku)) + { + throw new Exception("璇烽�夋嫨鍏ュ簱鍙o紒"); + } + try + { + if (ruku == "001") + { + var xlocate = Db.Queryable<SysStorageLocat>().First(w => w.Status == "0" && (w.LocatNo == "B13010101" || w.LocatNo == "B13020101" || w.LocatNo == "B13030101")); + if (xlocate == null) + { + throw new Exception("绌烘墭鐩樻敹闆嗗櫒宸叉弧"); + } + ruku = Db.Queryable<SysStorageLocat>().First(w => w.Status == "0" && (w.LocatNo == "B13010101" || w.LocatNo == "B13020101" || w.LocatNo == "B13030101")).LocatNo; + } + if (ruku == "002") + { + var dlocate = Db.Queryable<SysStorageLocat>().First(w => w.Status == "0" && (w.LocatNo == "B13040101" || w.LocatNo == "B13050101" || w.LocatNo == "B13060101")); + if (dlocate == null) + { + throw new Exception("绌烘墭鐩樻敹闆嗗櫒宸叉弧"); + } + ruku = Db.Queryable<SysStorageLocat>().First(w => w.Status == "0" && (w.LocatNo == "B13040101" || w.LocatNo == "B13050101" || w.LocatNo == "B13060101")).LocatNo; + } + if (ruku == null) + { + throw new Exception("褰撳墠鎵樼洏鏀堕泦鍣ㄥ伐浣嶆棤绌轰綑锛岃灏嗙┖鎵樼洏鍨涘叆绔嬩綋搴�"); + } + string EndLocat = ruku;//鐩爣浣嶇疆 + string OrderTy = ruku.Length ==3 ? "0":"2"; + var tasktype = "RK0"; //鍏ュ簱浠诲姟 + int palnoqty = 1; + var log = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && (w.Status == "0" || w.Status == "1")); + if (log != null) + { + throw new Exception("璇ユ墭鐩樺凡鏈夊皬杞︾瓑寰呮墽琛屾垨姝e湪鎵ц鐨勪换鍔�!"); + } + //璧峰鍌ㄤ綅淇℃伅 + var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == LocatNo); + if (storageLocat == null) + { + throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!"); + } + + //寮�鍚簨鍔� + Db.BeginTran(); + if (EndLocat.Length == 3) + { + //璇锋眰WCS鍏ュ簱鍙f斁璐х‘璁� + try + { + var port = new + { + Port = EndLocat + }; + var json = JsonConvert.SerializeObject(port); + var res = HttpHelper.DoPost(wcsurl, json, "璇锋眰WCS鍏ュ簱鍙f槸鍚﹀彲鏀捐揣", "WCS"); + + //////瑙f瀽杩斿洖鏁版嵁 + var ret = JsonConvert.DeserializeObject<WcsModel>(res); + if (ret.StatusCode == -1) + { + throw new Exception(EndLocat + "鍙峰叆搴撳彛宸叉湁鍏朵粬浠诲姟鍗犵敤,璇烽�夋嫨鍏朵粬鍏ュ簱鍙�"); + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } + else + { + tasktype = "D02"; + palnoqty = (int)Db.Queryable<BllPalletBind>().First(w => w.PalletNo == palletNo && w.Status == "1" && w.IsDel == "0").Qty; + + } + + //娣诲姞鍏ュ簱浠诲姟 + var taskNo = new Common().GetMaxNo("TK"); + var exTask = new LogTask + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "AGV", + IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + + StartLocat = LocatNo,//璧峰浣嶇疆 + EndLocat = EndLocat,//鐩爣浣嶇疆 + PalletNo = palletNo,//鎵樼洏鐮� + Msg = string.Format("杞繍浠诲姟锛歿0}=>>{1}", LocatNo, EndLocat), + IsSend = 0,//鏄惁鍙啀娆′笅鍙� + IsCancel = 0,//鏄惁鍙彇娑� + IsFinish = 0,//鏄惁鍙畬鎴� + Type = OrderTy,//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = OrderTy,//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + + CreateTime = DateTime.Now + }; + Db.Insertable(exTask).ExecuteCommand(); + + //淇敼璧峰鍌ㄤ綅鍦板潃鐘舵�� + storageLocat.Status = "5";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 + Db.Updateable(storageLocat).ExecuteCommand(); + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "绌烘墭鍏ュ簱", palletNo, OrderTy == "0" ? "鍏ュ簱" : "绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId); + + #region 鍛煎彨灏忚溅浠g爜 + + //鐐瑰埌鐐规寚浠ら泦鍚� + object[] position = new object[2]; + position[0] = new + { + positionCode = LocatNo, + type = "00" + }; + position[1] = new + { + positionCode = EndLocat, + type = "00" + }; + + List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>(); + + + AgvSchedulingTask agvTask = new AgvSchedulingTask(); + Random r = new Random(); + long ran = DateTime.Now.Ticks; + agvTask.ReqCode = ran.ToString(); + agvTask.TaskCode = taskNo; + agvTask.TaskTyp = tasktype; + agvTask.PositionCodePath = position; + agvTask.CtnrTyp = palnoqty.ToString(); + + agvTaskList.Add(agvTask); + + + // 姝e紡杩愯绋嬪簭鏀惧紑 + string str = ""; + var list2 = agvTaskList.Select(m => m.TaskCode).ToList(); + var jsonData = JsonConvert.SerializeObject(agvTaskList); + jsonData = jsonData.Substring(1, jsonData.Length - 1); + jsonData = jsonData.Substring(0, jsonData.Length - 1); + string response = ""; + + try + { + 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 += "涓嬪彂鎴愬姛"; + } + if (agvModel.Code == "1") + { + new TaskServer().EditTaskIssueNo(list2, time1, time2, agvModel.Message); + throw new Exception(agvModel.Message); + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + + #endregion + + //鎻愪氦浜嬪姟 + Db.CommitTran(); + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } + #region - + /// <summary> /// agv璋冨害浠诲姟涓嬪彂 /// </summary> @@ -1433,21 +1630,13 @@ break; } - // MES鐢宠澶囨枡锛屽鏂欏尯搴撲綅闇�瑕佽浆鎹� 杞﹂棿澶囨枡缂撳瓨浣嶅悕绉帮細3妤煎師杈呮枡Y003_001-->Y003_003 1妤煎鍖呯紦瀛樺尯Y138_001-->Y138_021 1妤煎唴鍖呯紦瀛樺尯Y128_001-->Y128_015 + // MES鐢宠澶囨枡锛屽鏂欏尯搴撲綅闇�瑕佽浆鎹� 杞﹂棿澶囨枡缂撳瓨浣嶅悕绉帮細Y003_001-->Y003_011 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"; //鐢垫浠诲姟 + endlono = "Y003_0" + endlono.Substring(5, 2); break; default: break; @@ -1593,7 +1782,43 @@ endLocat = locatInfo3.LocatNo; } } + return endLocat; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } + + /// <summary> + /// 涓嬪彂AGV浠诲姟缁х画鎵ц + /// </summary> + /// <param name="taskno"></param> + /// <param name="url"></param> + /// <returns></returns> + public void AgvContinue(string taskno,string url) + { + + Random r = new Random(); + long ran = DateTime.Now.Ticks; + var ReqCode = ran.ToString(); + var data = new + { + reqCode = ReqCode, + taskCode = taskno + }; + var jsonData = JsonConvert.SerializeObject(data); + try + { + var response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV缁х画鎵ц鍛戒护", "AGV"); + + //////瑙f瀽杩斿洖鏁版嵁 + var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response); + if (agvModel.Code == "1") + { + throw new Exception(agvModel.Message); + } } catch (Exception ex) { @@ -1693,15 +1918,19 @@ //var boxno = boxInfo.GroupBy(w => w.BoxNo).ToList(); var boxno = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == item.Id).GroupBy(m => new { - m.BoxNo + m.BoxNo, + m.ProductionTime, + m.ExpirationTime, }).Select(it => new DataBoxInfo() { - BoxNo = it.BoxNo + BoxNo = it.BoxNo, + ProductionTime = it.ProductionTime, + ExpirationTime = it.ExpirationTime, }).ToList(); //璁板綍鎵樼洏涓婁俊鎭粰MES foreach (var item2 in boxno) { - var a = item.ProductionTime.ToString(); + //var a = item.ProductionTime.ToString(); data.Add(new RequertBeiliaoInfoModel() { no = item2.BoxNo, @@ -1709,8 +1938,8 @@ materiel_name = item.SkuName, qty = item.Qty, batch = item.LotNo, - producttime = item.ProductionTime.ToString().Substring(0,10), - expiry = item.ExpirationTime.ToString().Substring(0, 10) + producttime = item2.ProductionTime.ToString().Substring(0,10), + expiry = item2.ExpirationTime.ToString().Substring(0, 10) }); } @@ -1748,13 +1977,7 @@ 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); + endlono = "Y003_0" + EndLocat.LocatNo.ToString().Substring(5, 2); break; default: break; -- Gitblit v1.8.0