From d75d3b7cf6ba68c9e9e69bced4552a554ca76e93 Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期六, 21 六月 2025 15:12:29 +0800 Subject: [PATCH] 出库口问题修改;标签打印优化 --- Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 788 +++++++++++++++++++++++++++---------------------------- 1 files changed, 387 insertions(+), 401 deletions(-) diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index e0f4851..361b515 100644 --- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs +++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs @@ -29,6 +29,7 @@ using System.Diagnostics; using System.Drawing.Drawing2D; using Model.ModelDto.LogDto; +using AutoMapper.Internal; namespace WMS.BLL.BllSoServer { @@ -1013,10 +1014,11 @@ skuList = skuList.Where(m => m.SkuNo == "100088").ToList(); } skuStrList = skuList.Select(m => m.SkuNo).ToList(); + var areaStr = new List<string>() { "B06", "B07", "B09" }; var stockRst = new StockServer(); var stockDetailRst = new StockDetailServer(); Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>() - .And(it => it.WareHouseNo == house) + .And(it => it.WareHouseNo == house || string.IsNullOrWhiteSpace(it.LocatNo) || (it.WareHouseNo == "W04" && !areaStr.Contains(it.AreaNo))) .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), it => inspectStatus.Contains(it.InspectStatus)) .And(m => skuStrList.Contains(m.SkuNo)) .AndIF(type == "6", m => m.OwnerNo == ownerNo)//浠e偍鍑哄簱闇�瑕佸叧鑱旇揣涓� @@ -1249,7 +1251,7 @@ IsWave = "0", WaveNo = "", IsDespatch = "0", - + WareHouseNo = model.WareHouseNo, CreateUser = userId, }; @@ -2199,17 +2201,17 @@ var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") ////瑙f瀽杩斿洖鏁版嵁 - var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); - if (wcsModel.StatusCode == 0) + var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); + if (wcsModel.code == 200) { //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// new TaskServer().EditTaskIssueOk(list2, time1, time2); str += "涓嬪彂鎴愬姛"; } - if (wcsModel.StatusCode == -1) + else { - new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); - throw new Exception(wcsModel.Msg); + new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message); + throw new Exception(wcsModel.message); } } catch (Exception ex) @@ -3025,9 +3027,44 @@ try { List<LogTask> logTaskList = new List<LogTask>();//姝ゆ鍑哄簱浠诲姟闆嗗悎锛屼负搴斿鍚屾墭鐩樹笉鍚岀墿鏂欏嚭搴� + var i = 0; + var outLocatelist1 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.AreaNo == "B02" && m.Flag == "0").ToList(); + var outLocatelist2 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.AreaNo == "B05" && m.Flag == "0").ToList(); //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔� foreach (var item in list) { + var outModeLocate = ""; + if (outMode == "17") + { + if (i < outLocatelist1.Count) + { + outModeLocate = outLocatelist1[i].LocatNo; + } + else + { + var j = i % outLocatelist1.Count; + + outModeLocate = outLocatelist1[j].LocatNo; + } + } + else if (outMode == "18") + { + if (i < outLocatelist1.Count) + { + outModeLocate = outLocatelist2[i].LocatNo; + } + else + { + var j = i % outLocatelist1.Count; + + outModeLocate = outLocatelist2[j].LocatNo; + } + } + else + { + throw new Exception("鍑哄簱鍙e伐浣嶅紓甯�"); + } + var taskNoStr = ""; // 鍌ㄤ綅鍙� @@ -3050,7 +3087,7 @@ { //濡傛灉涓嶅湪浠撳簱鍐咃紝褰撳墠鍒嗛厤淇℃伅鐩存帴鏇存柊鍑哄簱瀹屾垚 item.Status = "2";//鐘舵�� - item.OutMode = outMode;//鍑哄簱鍙� + item.OutMode = outModeLocate;//鍑哄簱鍙� Db.Updateable(item).ExecuteCommand(); var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo); if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲� @@ -3072,6 +3109,7 @@ } flagList.Add(0); continue; + } var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo && m.IsDel == "0");//褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭� @@ -3102,7 +3140,7 @@ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 StartLocat = locate.LocatNo,//璧峰浣嶇疆 - EndLocat = outMode,//鐩爣浣嶇疆 + EndLocat = outModeLocate,//鐩爣浣嶇疆 PalletNo = item.PalletNo,//鎵樼洏鐮� IsSend = 1,//鏄惁鍙啀娆′笅鍙� IsCancel = 1,//鏄惁鍙彇娑� @@ -3110,25 +3148,24 @@ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� - Msg = "浠�" + locate.LocatNo + "鍒�" + outMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 + Msg = "浠�" + locate.LocatNo + "鍒�" + outModeLocate + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 }; Db.Insertable(exTask).ExecuteCommand(); logTaskList.Add(exTask); outDto1.Add(new OutCommandDto() { + TaskNo = exTask.TaskNo, // 浠诲姟鍙� + TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� + PalletNo = item.PalletNo,//鎵樼洏鍙� StartLocate = locate.LocatNo, // 璧峰浣嶇疆 StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾 - EndLocate = outMode, // 鐩爣浣嶇疆 - TaskNo = exTask.TaskNo, // 浠诲姟鍙� - TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� - OutMode = outMode, //鍑哄簱鍙� - Order = 1, - - //UnstackingMode = "unstackingMode2",//鎷h揣鏂瑰紡 0鏈哄櫒鎷嗘墭鍑� 1 浜哄伐鎷h揣鍑� - //CompleteQty = outCount2, //鎷嗙殑浠舵暟 - //BoxexQty = outCount, //鎬讳欢鏁� + EndLocate = outModeLocate, // 鐩爣浣嶇疆 + + Order = 999, + Type = PLCTypeEnum.AGV + }); taskNoStr = exTask.TaskNo; @@ -3157,17 +3194,21 @@ } locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱 Db.Updateable(locate).ExecuteCommand(); + var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == outModeLocate && m.IsDel == "0");//褰撳墠鍑哄簱鐨勭洰鏍囧偍浣嶄俊鎭� + locate2.Status = "4"; + Db.Updateable(locate2).ExecuteCommand(); item.TaskNo = taskNoStr; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿 item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� //item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡 - item.OutMode = outMode;//鍑哄簱鍙� + item.OutMode = outModeLocate;//鍑哄簱鍙� //item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//瑁呰溅鍙� Db.Updateable(item).ExecuteCommand(); #endregion flagList.Add(0); + i++; } else if (locate.Status == "3") //鍑哄簱涓� { @@ -3310,7 +3351,8 @@ #endregion var com = new Common(); - + var allot = new AllotLocation(); + var notice = Db.Queryable<BllExportNotice>().First(m => m.SONo == soNo && m.IsDel == "0"); if (notice == null) { @@ -3338,11 +3380,12 @@ try { List<LogTask> logTaskList = new List<LogTask>();//姝ゆ鍑哄簱浠诲姟闆嗗悎锛屼负搴斿鍚屾墭鐩樹笉鍚岀墿鏂欏嚭搴� + + //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔� foreach (var item in list) { var taskNoStr = ""; - string toLocation = string.Empty;//鐩爣浣嶇疆 // 鍌ㄤ綅鍙� var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo; @@ -3352,11 +3395,11 @@ //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐� if (string.IsNullOrWhiteSpace(locateNo)) //搴撳 { - if (notice.Type == "0") - { - flagList.Add(5); - continue; - } + //if (notice.Type == "0") + //{ + // flagList.Add(5); + // continue; + //} //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ叆搴撲腑 var imBl = com.GetImTask(item.PalletNo); if (imBl != null) @@ -3408,8 +3451,6 @@ } #endregion - - if (locate.Status == "1") //鏈夌墿鍝� { @@ -3477,7 +3518,7 @@ Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� - Msg = "浠�" + locate.LocatNo + "鍒�" + toLocation + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 + Msg = "浠�" + locate.LocatNo + "鍒�" + moveAddress + "鐨勭Щ搴撲换鍔�", //鍏抽敭淇℃伅 }; Db.Insertable(ykTask).ExecuteCommand(); logTaskList.Add(ykTask); @@ -3487,10 +3528,11 @@ PalletNo = item.PalletNo,//鎵樼洏鍙� StartLocate = locate.LocatNo, // 璧峰浣嶇疆 StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾 - EndLocate = toLocation,//outMode, // 鐩爣浣嶇疆 + EndLocate = moveAddress,//outMode, // 鐩爣浣嶇疆 TaskNo = ykTaskNo, // 浠诲姟鍙� - TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� + TaskType = "2",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� Order = Math.Abs(row2 - rows), + Type = PLCTypeEnum.ShuttleCar }); var slotChange = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == s); @@ -3524,7 +3566,7 @@ IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 StartLocat = locate.LocatNo,//璧峰浣嶇疆 - EndLocat = toLocation,//outMode,//鐩爣浣嶇疆 + EndLocat = outMode,//outMode,//鐩爣浣嶇疆 PalletNo = item.PalletNo,//鎵樼洏鐮� IsSend = 1,//鏄惁鍙啀娆′笅鍙� IsCancel = 1,//鏄惁鍙彇娑� @@ -3532,21 +3574,23 @@ Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� - Msg = "浠�" + locate.LocatNo + "鍒�" + toLocation + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 + Msg = "浠�" + locate.LocatNo + "鍒�" + outMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 }; Db.Insertable(exTask).ExecuteCommand(); logTaskList.Add(exTask); - + var endroad = allot.RoadwayToStationNum(locate.RoadwayNo, outMode); outDto1.Add(new OutCommandDto() { PalletNo = item.PalletNo,//鎵樼洏鍙� StartLocate = locate.LocatNo, // 璧峰浣嶇疆 - StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾 - EndLocate = toLocation,//outMode, // 鐩爣浣嶇疆 + StartRoadway = locate.RoadwayNo,//璧峰宸烽亾 + EndLocate = outMode,//, // 鐩爣浣嶇疆 + EndRoadway = endroad, TaskNo = exTask.TaskNo, // 浠诲姟鍙� TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� - OutMode = toLocation, //鍑哄簱鍙� + OutMode = outMode, //鍑哄簱鍙� Order = Math.Abs(row2 - row1), + Type = PLCTypeEnum.ShuttleCar }); taskNoStr = exTask.TaskNo; @@ -3674,23 +3718,23 @@ 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") + 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") - //////瑙f瀽杩斿洖鏁版嵁 - //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); - //if (wcsModel.StatusCode == 0) - //{ - // //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// - // new TaskServer().EditTaskIssueOk(list2, time1, time2); - // str += "涓嬪彂鎴愬姛"; - //} - //if (wcsModel.StatusCode == -1) - //{ - // new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); - // throw new Exception(wcsModel.Msg); - //} + ////瑙f瀽杩斿洖鏁版嵁 + var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); + if (wcsModel.code == 200) + { + //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// + new TaskServer().EditTaskIssueOk(list2, time1, time2); + str += "涓嬪彂鎴愬姛"; + } + else + { + new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message); + throw new Exception(wcsModel.message); + } } catch (Exception ex) { @@ -4100,7 +4144,6 @@ return bl; } - private class addreClass { public string slotCode { get; set; } @@ -4113,6 +4156,289 @@ public string AisleOne { get; set; } } + + /// <summary> + /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙鍑哄簱鎴愬姛锛� + /// </summary> + /// <param name="taskNo"></param> + /// <param name="userId"></param> + /// <exception cref="Exception"></exception> + public void ExportSuccess(string taskNo, int userId) + { + try + { + //褰撳墠浠诲姟淇℃伅 + var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0"); + if (task == null) + { + throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅"); + } + if (task.Status == "2") + { + throw new Exception("褰撳墠浠诲姟宸插畬鎴�"); + } + Db.BeginTran(); + //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); + var locateNo = stockDetail.Select(m => m.LocatNo).Distinct().FirstOrDefault(); + //褰撳墠浠诲姟涓殑鍌ㄤ綅淇℃伅 + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo); + try + { + task.Status = "2";//浠诲姟鐘舵�� + task.IsSend = 0; + task.IsCancel = 0; + task.IsFinish = 0; + task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿 + Db.Updateable(task).ExecuteCommand(); + if (locate != null) + { + locate.Status = "0"; // 鏇存敼褰撳墠浠诲姟涓殑鍌ㄤ綅鐘舵�侊紙鏀逛负0绌哄偍浣嶏級 + Db.Updateable(locate).ExecuteCommand(); + } + foreach (var item in stockDetail) + { + if (item.SkuNo == "100099")//鍒ゆ柇鏄惁鏄┖鎵樺嚭搴� + { + //鍒ゆ柇鎬诲簱瀛樻槸鍚︿负0锛屽鏋滀负0鍒犻櫎 鍚﹀垯鍑忓幓鏁伴噺 + var stock = Db.Queryable<DataStock>().First(m => m.SkuNo == "100099"); + + if (stock != null) + { + if (item.LockQty != null) + { + stock.Qty -= item.LockQty.Value; + stock.LockQty -= item.LockQty.Value; + Db.Updateable(stock).ExecuteCommand(); + } + + if (stock.Qty == 0) + { + Db.Deleteable(stock).ExecuteCommand(); + } + } + + //鎵樼洏鐘舵�佹敼涓烘湭浣跨敤 + var sCode = Db.Queryable<SysPallets>().First(m => m.PalletNo == item.PalletNo); + if (sCode != null) + { + sCode.Status = "0"; + Db.Updateable(sCode).ExecuteCommand(); + } + Db.Deleteable(item).ExecuteCommand(); + + continue; + } + item.LocatNo = "";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛� + item.WareHouseNo = "";//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級 + item.RoadwayNo = "";//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級 + item.AreaNo = "";//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級 + + } + //鍑哄簱娴佹按锛堟洿鏀圭姸鎬侊級 + var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.TaskNo == taskNo || (m.Status == "1" && m.PalletNo == task.PalletNo))).ToList(); + var PalletType = "0"; //0锛氱墿鏂欐墭 1锛氱┖鎵樼洏鎵� + + foreach (var item in allot) + { + if (item.SkuNo == "100099") + { + item.Status = "5"; + item.CompleteQty += stockDetail[0].Qty; + PalletType = "1"; + } + else + { + item.Status = "2"; + } + + } + + var endLocateList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && (m.AreaNo == "B02" || m.AreaNo == "B05")).Select(m=>m.LocatNo).ToList(); + //鍒ゆ柇鏄惁鏄師杈呮枡鍑哄簱浠诲姟 璐ф灦鍌ㄤ綅=銆嬪钩搴撳偍浣� + if ( endLocateList.Contains(task.EndLocat) && PalletType == "0") + { + //淇敼鐩爣鍦板潃鐘舵�� + var endLocat = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.LocatNo == task.EndLocat); + endLocat.Status = "1"; + Db.Updateable(endLocat).ExecuteCommand(); + foreach (var item in stockDetail) + { + item.LocatNo = endLocat.LocatNo;//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛� + item.WareHouseNo = endLocat.WareHouseNo;//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級 + item.RoadwayNo = endLocat.RoadwayNo;//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級 + item.AreaNo = endLocat.AreaNo;//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級 + } + } + Db.Updateable(stockDetail).ExecuteCommand(); + Db.Updateable(allot).ExecuteCommand(); + + if (userId != 0) + { + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId); + } + + Db.CommitTran(); + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } + catch (Exception ex) + { + throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message); + } + } + + /// <summary> + /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙绉诲簱鎴愬姛锛� + /// </summary> + /// <param name="taskNo">浠诲姟鍙�</param> + /// <param name="userId">鎿嶄綔浜�</param> + /// <exception cref="Exception"></exception> + public void RelocationSuccess(string taskNo, int userId) + { + try + { + //褰撳墠浠诲姟淇℃伅 + var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0"); + if (task == null) + { + throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅"); + } + if (task.Status == "2") + { + throw new Exception("褰撳墠浠诲姟宸插畬鎴�"); + } + Db.BeginTran(); + //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); + //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅 + //褰撳墠浠诲姟涓殑鍘熷偍浣� + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat); + if (locate == null) + { + throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�"); + } + var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat); + if (locate2 == null) + { + throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�"); + } + //骞冲簱涓偍浣嶉泦鍚� + var pingKuLocate = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == "W04" && m.IsDel == "0").ToList(); + var pingKuList = pingKuLocate.Select(m => m.LocatNo).ToList(); + try + { + + //task.Status = "5";//浠诲姟鐘舵�� + ////鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱 + //if (pingKuList.Contains(task.StartLocat) && pingKuList.Contains(task.EndLocat)) + //{ + task.Status = "2"; + //} + + task.IsSend = 0; + task.IsCancel = 0; + task.IsFinish = 0; + task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿 + Db.Updateable(task).ExecuteCommand(); + + #region 淇敼鍌ㄤ綅鐘舵�� + + if (!pingKuList.Contains(task.StartLocat)) + { + //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0 + locate.Status = "0"; + Db.Updateable(locate).ExecuteCommand(); + } + + + //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1 + locate2.Status = "1"; + Db.Updateable(locate2).ExecuteCommand(); + //鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱 + if ( pingKuList.Contains(task.EndLocat)) + { + foreach (var item in stockDetail) + { + item.WareHouseNo = locate2.WareHouseNo; + item.AreaNo = locate2.AreaNo; + item.RoadwayNo = locate2.RoadwayNo; + item.LocatNo = locate2.LocatNo; + } + Db.Updateable(stockDetail).ExecuteCommand(); + } + + + #endregion + + Db.CommitTran(); + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } + catch (Exception ex) + { + throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message); + } + } + + /// <summary> + /// AGV浠诲姟鍙栬揣瀹屾垚鍙嶉 + /// </summary> + /// <param name="taskNo"></param> + public void AGVQuHuoSuccess(string taskNo) + { + try + { + Db.BeginTran(); + var task = Db.Queryable<LogTask>().First(m=>m.IsDel =="0" && m.TaskNo == taskNo); + if (task == null) + { + throw new Exception("娌℃湁鏌ヨ鍒颁换鍔′俊鎭�"); + } + if (task.Status!="1") + { + throw new Exception("浠诲姟鐘舵�佷笉鏄鍦ㄦ墽琛岋紝璇锋牳瀹�"); + } + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat && m.IsDel == "0"); + if (locate == null) + { + throw new Exception("娌℃湁鏌ヨ鍒拌捣濮嬪偍浣嶄俊鎭�"); + } + if (locate.WareHouseNo!="W04") + { + throw new Exception("璧峰鍌ㄤ綅涓嶆槸骞冲簱鍌ㄤ綅锛岃鏍稿疄"); + } + locate.Status = "0"; //鏇存敼鍌ㄤ綅鐘舵�佷负绌哄偍浣� + Db.Updateable(locate).ExecuteCommand(); + //鏌ヨ鍑烘墭鐩樹俊鎭� 鏇存敼搴撳瓨鍌ㄤ綅淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == task.PalletNo).ToList(); + foreach (var item in stockDetail) + { + item.WareHouseNo = ""; + item.AreaNo = ""; + item.RoadwayNo = ""; + item.LocatNo = ""; + } + Db.Updateable(stockDetail).ExecuteCommand(); + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + #endregion #endregion @@ -5251,9 +5577,6 @@ OutMode = toLocation, //鍑哄簱鍙� Order = 1, - UnstackingMode=unstackingMode2,//鎷h揣鏂瑰紡 0鏈哄櫒鎷嗘墭鍑� 1 浜哄伐鎷h揣鍑� - CompleteQty= outCount2, //鎷嗙殑浠舵暟 - BoxexQty = outCount, //鎬讳欢鏁� }); taskNoStr = exTask.TaskNo; } @@ -5368,9 +5691,7 @@ OutMode = toLocation, //鐩爣鍦板潃 Order = 1, - UnstackingMode = "1",//鎷h揣鏂瑰紡 0鏈哄櫒鎷嗘墭鍑� 1 浜哄伐鎷h揣鍑� - CompleteQty = 0, //鎷嗙殑浠舵暟 - BoxexQty = 0, //鎬讳欢鏁� + }); #endregion @@ -5426,9 +5747,6 @@ OutMode = toLocation, //鐩爣鍦板潃 Order = 1, - UnstackingMode = unstackingMode2,//鎷h揣鏂瑰紡 0鏈哄櫒鎷嗘墭鍑� 1 浜哄伐鎷h揣鍑� - CompleteQty = outCount2, //鎷嗙殑浠舵暟 - BoxexQty = outCount, //鎬讳欢鏁� }); taskNoStr = exTask1.TaskNo; #endregion @@ -5599,338 +5917,6 @@ } } - //wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙鍑哄簱鎴愬姛锛� - public void ExportSuccess(string taskNo, int userId) - { - try - { - //褰撳墠浠诲姟淇℃伅 - var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0"); - if (task == null) - { - throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅"); - } - if (task.Status == "2") - { - throw new Exception("褰撳墠浠诲姟宸插畬鎴�"); - } - Db.BeginTran(); - //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅 - var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); - var locateNo = stockDetail.Select(m => m.LocatNo).Distinct().FirstOrDefault(); - //褰撳墠浠诲姟涓殑鍌ㄤ綅淇℃伅 - var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo); - try - { - task.Status = "2";//浠诲姟鐘舵�� - task.IsSend = 0; - task.IsCancel = 0; - task.IsFinish = 0; - task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿 - Db.Updateable(task).ExecuteCommand(); - if (locate != null) - { - locate.Status = "0"; // 鏇存敼褰撳墠浠诲姟涓殑鍌ㄤ綅鐘舵�侊紙鏀逛负0绌哄偍浣嶏級 - Db.Updateable(locate).ExecuteCommand(); - } - foreach (var item in stockDetail) - { - if (item.SkuNo == "100099")//鍒ゆ柇鏄惁鏄┖鎵樺嚭搴� - { - //鍒ゆ柇鎬诲簱瀛樻槸鍚︿负0锛屽鏋滀负0鍒犻櫎 鍚﹀垯鍑忓幓鏁伴噺 - var stock = Db.Queryable<DataStock>().First(m => m.SkuNo == "100099"); - - if (stock != null) - { - if (item.LockQty != null) - { - stock.Qty -= item.LockQty.Value; - stock.LockQty -= item.LockQty.Value; - Db.Updateable(stock).ExecuteCommand(); - } - - if (stock.Qty == 0) - { - Db.Deleteable(stock).ExecuteCommand(); - } - } - - //鎵樼洏鐘舵�佹敼涓烘湭浣跨敤 - var sCode = Db.Queryable<SysPallets>().First(m => m.PalletNo == item.PalletNo); - if (sCode != null) - { - sCode.Status = "0"; - Db.Updateable(sCode).ExecuteCommand(); - } - Db.Deleteable(item).ExecuteCommand(); - - #region 鎷h揣淇℃伅 - - //var pickQty = 0;//鎷h揣鐨勬暟閲� - //var comList = new List<BllCompleteDetail>(); - // //娣诲姞鎷h揣鏄庣粏 - // var completeDetail = new BllCompleteDetail() - // { - // SONo = "", - // SODetailNo = 0, - // ExportAllotId = 0, - // StockId = exportAllot.StockId, - // BoxNo = item.BoxNo, - // BoxNo2 = item.BoxNo2, - // BoxNo3 = item.BoxNo3, - - // LotNo = exportAllot.LotNo, - // LotText = exportAllot.LotText, - // SupplierLot = exportAllot.SupplierLot, - // SkuNo = exportAllot.SkuNo, - // SkuName = exportAllot.SkuName, - // Standard = exportAllot.Standard, - // PalletNo = palletNo, - // CompleteQty = item.Qty, - - // CreateUser = userId - // }; - // comList.Add(completeDetail); - - // //鍒犻櫎搴撳瓨绠辩爜鏄庣粏 - // Db.Deleteable(item).ExecuteCommand(); - // pickQty += item.Qty; - - // exportAllot.Status = "5"; //寰呭洖搴� : 宸插畬鎴� - // exportAllot.CompleteQty += item.Qty; //鎷h揣鏁伴噺 - // exportAllot.UpdateUser = userId; //淇敼浜� - // exportAllot.UpdateTime = serverTime; //淇敼鏃堕棿 - - // Db.Updateable(exportAllot).ExecuteCommand(); - - // //楠岃瘉鎷h揣淇℃伅鏄惁涓哄凡瀹屾垚 - // if (exportAllot.Status == "5") - // { - // break; - // } - - - //Db.Insertable(comList).ExecuteCommand(); - - - #endregion - - continue; - } - item.LocatNo = "";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛� - item.WareHouseNo = "";//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級 - item.RoadwayNo = "";//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級 - item.AreaNo = "";//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級 - 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 PalletType = "0"; //0锛氱墿鏂欐墭 1锛氱┖鎵樼洏鎵� - var soNo = ""; - var sku = ""; - foreach (var item in allot) - { - if (item.SkuNo == "100099") - { - item.Status = "5"; - item.CompleteQty += stockDetail[0].Qty; - PalletType = "1"; - } - else - { - item.Status = "2"; - soNo = item.SONo; - sku = item.SkuNo; - } - - } - //涓嬪彂鍥涙ゼ璋冨害AGV鐨勪换鍔� - if ((task.EndLocat == "outMode" || task.EndLocat == "outMode") && PalletType == "0") - { - foreach (var item in allot) - { - var detail = Db.Queryable<DataStockDetail>().First(m => m.Id == item.StockId); - detail.SONo = item.SONo; - Db.Updateable(detail).ExecuteCommand(); - } - - var locatePing = new AllotLocation().GetPingLocate(soNo, sku); - if (locatePing == null) - { - throw new Exception("骞冲簱鏈煡璇㈠埌绌轰綅缃�"); - } - var exTask = new LogTask //鍑哄簱浠诲姟 - { - TaskNo = new Common().GetMaxNo("TK"), - Sender = "WMS", - Receiver = "AGV", - IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 - - StartLocat = task.EndLocat,//璧峰浣嶇疆 - EndLocat = locatePing.LocatNo,//outMode,//鐩爣浣嶇疆 - PalletNo = task.PalletNo,//鎵樼洏鐮� - IsSend = 1,//鏄惁鍙啀娆′笅鍙� - IsCancel = 1,//鏄惁鍙彇娑� - IsFinish = 1,//鏄惁鍙畬鎴� - Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 - Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 - OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� - Msg = "浠�" + task.EndLocat + "鍒�" + locatePing.LocatNo + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 - }; - Db.Insertable(exTask).ExecuteCommand(); - - var outDto = new List<OutCommandDto> - { - new OutCommandDto() - { - PalletNo = task.PalletNo,//鎵樼洏鍙� - StartLocate = task.EndLocat, // 璧峰浣嶇疆 - StartRoadway = "",//鍏跺疄宸烽亾 - EndLocate = locatePing.LocatNo,//outMode, // 鐩爣浣嶇疆 - TaskNo = exTask.TaskNo, // 浠诲姟鍙� - TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� - OutMode = "", //鍑哄簱鍙� - Order = 1, - - //UnstackingMode = unstackingMode2,//鎷h揣鏂瑰紡 0鏈哄櫒鎷嗘墭鍑� 1 浜哄伐鎷h揣鍑� - //CompleteQty = outCount2, //鎷嗙殑浠舵暟 - //BoxexQty = outCount, //鎬讳欢鏁� - } - }; - // 姝e紡杩愯绋嬪簭鏀惧紑 - var list2 = outDto.Select(m => m.TaskNo).ToList(); - var jsonData = JsonConvert.SerializeObject(outDto); - string response = ""; - - 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") - - //////瑙f瀽杩斿洖鏁版嵁 - //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); - //if (wcsModel.StatusCode == 0) - //{ - //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// - new TaskServer().EditTaskIssueOk(list2, time1, time2); - //} - //if (wcsModel.StatusCode == -1) - //{ - // new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); - // throw new Exception(wcsModel.Msg); - //} - } - catch (Exception ex) - { - throw new Exception(ex.Message); - } - } - - Db.Updateable(allot).ExecuteCommand(); - - if (userId != 0) - { - //娣诲姞鎿嶄綔鏃ュ織璁板綍 - var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId); - } - - - - Db.CommitTran(); - } - catch (Exception ex) - { - Db.RollbackTran(); - throw new Exception(ex.Message); - } - } - catch (Exception ex) - { - throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message); - } - } - - /// <summary> - /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙绉诲簱鎴愬姛锛� - /// </summary> - /// <param name="taskNo">浠诲姟鍙�</param> - /// <param name="userId">鎿嶄綔浜�</param> - /// <exception cref="Exception"></exception> - public void RelocationSuccess(string taskNo, int userId) - { - try - { - //褰撳墠浠诲姟淇℃伅 - var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0"); - if (task == null) - { - throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅"); - } - if (task.Status == "2") - { - throw new Exception("褰撳墠浠诲姟宸插畬鎴�"); - } - Db.BeginTran(); - //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅 - var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); - //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅 - //褰撳墠浠诲姟涓殑鍘熷偍浣� - var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat); - if (locate == null) - { - throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�"); - } - var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat); - if (locate2 == null) - { - throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�"); - } - - try - { - task.Status = "2";//浠诲姟鐘舵�� - task.IsSend = 0; - task.IsCancel = 0; - task.IsFinish = 0; - task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿 - Db.Updateable(task).ExecuteCommand(); - - #region 淇敼鍌ㄤ綅鐘舵�� - - //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0 - locate.Status = "0"; - Db.Updateable(locate).ExecuteCommand(); - - //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1 - locate2.Status = "1"; - Db.Updateable(locate2).ExecuteCommand(); - foreach (var item in stockDetail) - { - item.WareHouseNo = locate2.WareHouseNo; - item.AreaNo = locate2.AreaNo; - item.RoadwayNo = locate2.RoadwayNo; - item.LocatNo = locate2.LocatNo; - } - Db.Updateable(stockDetail).ExecuteCommand(); - - #endregion - - Db.CommitTran(); - } - catch (Exception ex) - { - Db.RollbackTran(); - throw new Exception(ex.Message); - } - } - catch (Exception ex) - { - throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message); - } - } - - //閲嶆柊涓嬪彂鍑哄簱浠诲姟 public OutCommandDto AgainSendSoTask(string taskNo, int userId, string url) { @@ -5987,17 +5973,17 @@ var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") ////瑙f瀽杩斿洖鏁版嵁 - var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); - if (wcsModel.StatusCode == 0) + var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); + if (wcsModel.code == 200) { //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// new TaskServer().EditTaskIssueOk(list, time1, time2); } - if (wcsModel.StatusCode == -1) + else { - new TaskServer().EditTaskIssueNo(list, time1, time2, wcsModel.Msg); - throw new Exception($"wcs杩斿洖鐘舵�佸紓甯革細{wcsModel.Msg}"); + new TaskServer().EditTaskIssueNo(list, time1, time2, wcsModel.message); + throw new Exception($"wcs杩斿洖鐘舵�佸紓甯革細{wcsModel.message}"); } } catch (Exception ex) -- Gitblit v1.8.0