From b9f7560cbe0e562a40e9515a0559a3e951f0fee6 Mon Sep 17 00:00:00 2001 From: zhaowc <526854230@qq.com> Date: 星期一, 07 四月 2025 09:16:01 +0800 Subject: [PATCH] 问题修改 --- Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 771 +++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 642 insertions(+), 129 deletions(-) diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index 2aab36e..3cc81a2 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 { @@ -49,11 +55,11 @@ { throw new Exception("鍗曟嵁绫诲瀷涓嶅彲涓虹┖!"); } - if (string.IsNullOrEmpty(model.Customer)) - { - throw new Exception("瀹㈡埛涓嶅彲涓虹┖!"); - } - if (string.IsNullOrEmpty(model.OrderCode)) + //if (string.IsNullOrEmpty(model.Customer)) + //{ + // throw new Exception("瀹㈡埛涓嶅彲涓虹┖!"); + //} + if (string.IsNullOrEmpty(model.OrderNo)) { throw new Exception("绯荤粺鍗曞彿涓嶅彲涓虹┖!"); } @@ -68,10 +74,10 @@ //瀹㈡埛淇℃伅 var customer = Db.Queryable<SysCustomer>().First(m => m.IsDel == "0" && m.CustomerNo == model.Customer); - if (customer == null) - { - throw new Exception("瀹㈡埛涓嶅彲涓虹┖!"); - } + //if (customer == null) + //{ + // throw new Exception("瀹㈡埛涓嶅彲涓虹┖!"); + //} var logistics = Db.Queryable<SysLogisticsInfo>().First(m => m.IsDel == "0" && m.CarrierName == model.LogisticsNo); int? logisticsId = null; if (logistics != null) @@ -127,8 +133,9 @@ } if (qty > d.Qty - q1) { - q1 += d.Qty - q1; dic.Add(stocks.First().Id, d.Qty - q1); + + q1 += d.Qty - q1; } else { @@ -149,10 +156,11 @@ } var q2 = demo.Qty - demo.LockQty - demo.FrozenQty; - if (q2 > d.Qty - q1) + if (q2 >= d.Qty - q1) { - q1 += d.Qty - q1; dic.Add(demo.Id, d.Qty - q1); + + q1 += d.Qty - q1; } else { @@ -161,7 +169,7 @@ } } - if (d.Qty >= q1) + if (d.Qty > q1) { stocks = stockList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); if (stocks.Count == 0) @@ -169,10 +177,11 @@ throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}搴撳瓨鏁伴噺涓嶈冻"); } var q2 = stocks.First().Qty - stocks.First().LockQty - stocks.First().FrozenQty; - if (q2 > d.Qty - q1) + if (q2 >= d.Qty - q1) { - q1 += d.Qty - q1; dic.Add(stocks.First().Id, d.Qty - q1); + + q1 += d.Qty - q1; } else { @@ -227,8 +236,9 @@ Type = model.SoType, Status = "0", Origin = model.Origin, - CustomerNo = model.Customer, - CustomerName = customer.CustomerName, + OrderCode = model.OrderNo, + //CustomerNo = model.Customer, + //CustomerName = customer.CustomerName, LogisticsId = logisticsId, IsWave = "0", WaveNo = "", @@ -262,10 +272,22 @@ } //鍥炰紶鍑哄簱鍗� - public bool FinishSo(int id, string url, int userId) + public bool FinishSo(int id, string url, string userNo, string pwd, int userId) { try { + var loginPwd = Md5Tools.CalcMd5(pwd); + var date = Db.Queryable<SysUserInfor>().First(m => m.IsDel == "0" && m.UserName == userNo && m.PassWord == loginPwd); + + if (date == null) //璐﹀彿瀵嗙爜鏄惁姝g‘ + { + throw new Exception("璐﹀彿瀵嗙爜涓嶆纭垨娌℃湁姝よ处鍙�"); + } + if (date.Status != "0") //褰撳墠璐﹀彿鏄惁姝e父鍚敤 + { + throw new Exception("褰撳墠璐﹀彿闈炲惎鐢ㄧ姸鎬�"); + } + var notice = Db.Queryable<BllExportNotice>().First(m => m.Id == id && m.IsDel == "0"); if (notice == null) { @@ -280,9 +302,13 @@ { throw new Exception("鏈煡璇㈠埌鍗曟嵁鏄庣粏淇℃伅"); } - if (userId == notice.UpdateUser) + if (date.Id == notice.UpdateUser) { throw new Exception("澶嶆牳澶辫触锛屽鏍镐汉鍛樺拰鍏抽棴璁㈠崟浜哄憳涓嶈兘鐩稿悓锛�"); + } + if (date.Id == notice.CreateUser) + { + throw new Exception("澶嶆牳澶辫触锛屽鏍镐汉鍛樺拰鍒涘缓璁㈠崟浜哄憳涓嶈兘鐩稿悓锛�"); } var list = new List<SoDetail>(); foreach (var d in detail) @@ -297,7 +323,7 @@ } var soInfo = new SoInfo() { - OrderCode = notice.OrderCode, + OrderNo = notice.OrderCode, SoDetails = list }; #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp @@ -315,10 +341,10 @@ notice.Status = "6"; notice.CheckTime = DateTime.Now; - notice.CheckUser = userId; + notice.CheckUser = date.Id; Db.Updateable(notice).ExecuteCommand(); - new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "澶嶆牳", $"澶嶆牳浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId); + new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "澶嶆牳", $"{date.RealName}澶嶆牳浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId); return true; } catch (Exception e) @@ -433,7 +459,7 @@ inspectStatus = "0"; break; case "4"://涓嶅悎鏍煎搧鍑哄簱 - skuType = "(0,1,2,3)"; + skuType = "(0,1,2,3,4)"; inspectStatus = "2"; break; case "5"://涓棿鍝佸嚭搴� @@ -441,8 +467,8 @@ inspectStatus = "0,1"; break; case "6"://浠e偍鍑哄簱 - skuType = "(0,1,2,3)"; - inspectStatus = "0,1"; + skuType = "(0,1,2,3,4)"; + inspectStatus = "0,1,2"; break; case "8"://瀵勫瓨鍑哄簱 skuType = "(0,1,2,3)"; @@ -475,7 +501,7 @@ .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), it => inspectStatus.Contains(it.InspectStatus)) .And(m => skuList.Contains(m.SkuNo)) .AndIF(type == "6", m => m.OwnerNo == ownerNo)//浠e偍鍑哄簱闇�瑕佸叧鑱旇揣涓� - .AndIF(type == "2", m=> string.IsNullOrWhiteSpace(m.OwnerNo)) + .AndIF(type != "6", m=> string.IsNullOrWhiteSpace(m.OwnerNo)) .AndIF(!string.IsNullOrWhiteSpace(msg), it => (it.SkuNo.Contains(msg) || it.SkuName.Contains(msg) || it.LotNo.Contains(msg))) .And(it => (it.Qty - it.LockQty - it.FrozenQty) > 0) .And(it => (it.Status == "0" || it.Status == "1")) @@ -579,7 +605,7 @@ //娣诲姞鍑哄簱鍗� foreach (var d in model.Detail) { - if (d.Qty < 1) + if (d.Qty <=0) { throw new Exception("鍑哄簱鏁伴噺蹇呴』澶т簬0"); } @@ -1231,9 +1257,9 @@ { throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曟嵁淇℃伅"); } - if (notice.Status != "4") + if (notice.Status != "4" && notice.Status != "3") { - throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负鎵ц瀹屾垚鎴栬鍗曞叧闂�"); + throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负姝e湪鎵ц鎴栨墽琛屽畬鎴�"); } //鎬诲簱瀛樹俊鎭� var stockList = Db.Queryable<DataStock>().ToList(); @@ -1254,64 +1280,66 @@ foreach (var d in noticeDetail) { - //鏇存敼搴撳瓨鏄庣粏閿佸畾鏁伴噺 - //var orders = dataContext.WmsExportOrder.Where(o => o.ExportDetailId == d.Id - // && o.ExportExecuteFlag != "4" && o.ExportExecuteFlag == "3" && o.pickingType == 0).ToList(); - //foreach (var o in orders) - //{ - // if (o.ExportQuantity > o.PickedNum) //鍒ゆ柇鎷h揣鏄惁宸叉嫞瀹� - // { - // var pq = dataContext.WmsStockTray.Where(t => t.StockGoodId == o.ExportGoodsCode && t.StockStockCode == o.ExportStockCode); - - // if (string.IsNullOrWhiteSpace(o.ExportLotNo)) - // { - // pq = pq.Where(t => t.StockLotNo == null || t.StockLotNo == ""); - // } - // else - // { - // pq = pq.Where(t => t.StockLotNo == o.ExportLotNo); - // } - // var pallet = pq.FirstOrDefault(); - // //搴撳瓨鎵樼洏淇℃伅閿佸畾鏁伴噺杩樺師涓烘湭閿佸畾 - // if (pq != null) - // { - // pallet.LockQuantity -= o.ExportQuantity.Value - o.PickedNum; - // pallet.StockQuantity += o.ExportQuantity.Value - o.PickedNum; - // } - // } - //} - - if (d.Qty != d.CompleteQty) + if (notice.Type == "0")//鎴愬搧鍑哄簱 { - throw new Exception("褰撳墠鍗曟嵁鏄庣粏涓鍒掓暟閲忎笌鎷h揣鏁伴噺涓嶇锛岃鏍稿疄"); - } - #region 搴撳瓨琛ㄥ噺鍘婚攣瀹氭暟閲忎笌鎬绘暟閲�(PDA鎷h揣鐨勬椂鍊欏凡缁忓噺鍘绘暟閲忎簡) - /*var sq = stocks.Where(s => s.SkuNo == d.SkuNo); - if (!string.IsNullOrWhiteSpace(d.LotNo)) - { - sq = sq.Where(s => s.LotNo == d.LotNo); - } - else - { - sq = sq.Where(s => string.IsNullOrWhiteSpace(s.LotNo)); - } - var st = sq.FirstOrDefault(); - if (st != null) - { - if (d.CompleteQty <= d.Qty) + if (d.Qty != d.CompleteQty) { - st.Qty += d.Qty - d.CompleteQty.Value; + throw new Exception("褰撳墠鍗曟嵁鏄庣粏涓鍒掓暟閲忎笌鎷h揣鏁伴噺涓嶇锛岃鏍稿疄"); + } + } + + //鏇存敼搴撳瓨鏄庣粏閿佸畾鏁伴噺 + var allotList = Db.Queryable<BllExportAllot>().Where(o => o.SODetailNo == d.Id && o.Status == "3" && o.IsDel == "0").ToList(); + foreach (var o in allotList) + { + if (o.Qty > o.CompleteQty) //鍒ゆ柇鎷h揣鏄惁宸叉嫞瀹� + { + var pq = Db.Queryable<DataStockDetail>().Where(t => t.IsDel == "0" && t.Id == o.StockId && t.SkuNo == o.SkuNo); + + if (string.IsNullOrWhiteSpace(o.LotNo)) + { + pq = pq.Where(t => string.IsNullOrWhiteSpace(t.LotNo)); + } + else + { + pq = pq.Where(t => t.LotNo == o.LotNo); + } + var pallet = pq.First(); + //搴撳瓨鎵樼洏淇℃伅閿佸畾鏁伴噺杩樺師涓烘湭閿佸畾 + if (pq != null) + { + //pallet.Qty -= o.CompleteQty.Value - o.Qty; + pallet.LockQty -= o.Qty - o.CompleteQty.Value; + Db.Updateable(pallet).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); + } + } + } + + + #region 搴撳瓨琛ㄥ噺鍘婚攣瀹氭暟閲忎笌鎬绘暟閲�(PDA鎷h揣鐨勬椂鍊欏凡缁忓噺鍘绘暟閲忎簡) + var sq = stocks.Where(s => s.SkuNo == d.SkuNo); + if (!string.IsNullOrWhiteSpace(d.LotNo)) + { + sq = sq.Where(s => s.LotNo == d.LotNo); } else { - st.Qty -= d.CompleteQty.Value - d.Qty; + sq = sq.Where(s => string.IsNullOrWhiteSpace(s.LotNo)); } - st.LockQty -= d.Qty; - st.Qty -= d.Qty; - //淇敼鎬诲簱瀛樿〃 - Db.Updateable(st).UpdateColumns(it => new { it.Qty, it.LockQty }).ExecuteCommand(); - }*/ - #endregion + if (notice.Type == "6")//浠e偍 + { + sq = sq.Where(s => s.OwnerNo == notice.CustomerNo); + } + var st = sq.FirstOrDefault(); + if (st != null) + { + st.LockQty -= d.Qty - d.CompleteQty.Value; + //淇敼鎬诲簱瀛樿〃 + Db.Updateable(st).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); + } + #endregion + + } //娣诲姞鎿嶄綔鏃ュ織璁板綍 var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "鍏冲崟", $"鍏抽棴浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId); @@ -1662,7 +1690,7 @@ #region 涓嬪彂鍑哄簱銆佸嚭搴撳畬鎴愩�侀噸鏂颁笅鍙戜换鍔°�佸彇娑堜换鍔°�佸紓甯稿鐞� // 涓嬪彂鍑哄簱锛堣皟鐢╟s鎺ュ彛缁欎粬搴撲綅鍦板潃锛� - public List<OutCommandDto> IssueOutHouse(string soNo, string unstackingMode, string outMode, string loadingAddre, int userId, string url, out string str) + public List<OutCommandDto> IssueOutHouse(string soNo, string unstackingMode, string outMode,string checkmode, string loadingAddre, int userId, string url, out string str) { try { @@ -1682,8 +1710,11 @@ { throw new Exception($"鏈壘鍒皗soNo}鍑哄簱鍗曚俊鎭�"); } - //鎵�鏈夎鍑哄簱鐨勫嚭搴撳垎閰嶄俊鎭�(鏈笅鍙戠殑淇℃伅鍜屽緟鎷h揣鐨勪俊鎭�) - var list = Db.Queryable<BllExportAllot>().Where(a => a.IsDel == "0" && a.SONo == soNo && a.Status == "0").ToList(); + //鏇存柊鍑哄簱鍗曟嫞閫夋柟寮� + notice.UDF1 = checkmode; + Db.Updateable(notice).ExecuteCommand(); + //鎵�鏈夎鍑哄簱鐨勫嚭搴撳垎閰嶄俊鎭�(鏈笅鍙戠殑淇℃伅鍜屽緟鎷h揣鐨勪俊鎭拰閮ㄥ垎鎷h揣鍚庡洖娴佸叆搴撶殑鎵樼洏) + var list = Db.Queryable<BllExportAllot>().Where(a => a.IsDel == "0" && a.SONo == soNo && (a.Status == "0" || a.Status == "3")).ToList(); if (list.Count == 0) //鍒ゆ柇鏄惁鏈夐渶瑕佷笅鍙戠殑鍑哄簱娴佹按 { throw new Exception("褰撳墠鍑哄簱鍗曟嵁鏃犻渶瑕佷笅鍙戠殑鎵樼洏"); @@ -1733,7 +1764,7 @@ if (isChai == "0") { var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList(); - if (boxInfo != null)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠� + if (boxInfo.Count>0)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠� { isChai = "1"; unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈 @@ -1742,7 +1773,7 @@ if (unstackingMode2 == "0")//鏈哄櫒浜烘媶鍨� { - toLocation = loadingAddre;//瑁呰溅鍙� + toLocation = "009";//鏈哄櫒浜烘媶鍨涚粺涓�鍙戦�佸埌009宸ヤ綅锛岀敱PLC鑷姩鍒嗛厤鎷嗗灈浣� } else //PDA鎷嗗灈 { @@ -2161,6 +2192,10 @@ { str += "3.瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱銆�"; } + if (string.IsNullOrWhiteSpace(str)) + { + str += "鎵樼洏鍙墽琛岋紝鏃犻渶涓嬪彂鍑哄簱浠诲姟"; + } if (outDto1.Count > 0) { // 姝e紡杩愯绋嬪簭鏀惧紑 @@ -2212,16 +2247,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 (taskNo.Length == 18) + { + TtaskNo = taskNo.Substring(0, taskNo.Length - 3); + outLine = taskNo.Substring(taskNo.Length - 3, 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") { @@ -2337,7 +2380,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) { @@ -2356,7 +2399,162 @@ if (userId != 0) { //娣诲姞鎿嶄綔鏃ュ織璁板綍 - var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId); + var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", TtaskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{TtaskNo}鐨勪换鍔�", userId); + } + if (outLine != "" && outLine != "009" && outLine != "013" && outLine != "018" && outLine != "022") + { + #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.Row == 1 && m.Status == "0" && m.Flag == "0").LocatNo; + } + else if (outLine == "440") //涓滀晶鍑哄簱 + { + positionEnd = locateno.First(m => m.Row == 2 && m.Status == "0" && m.Flag == "0").LocatNo; //涓滀晶鎴块棿搴撲綅 + } + else //1妤肩┖鎵樼洏鍑哄簱涓嶈皟鐢ˋGV + { + Db.CommitTran(); + return; + } + + } + else + { + if (type1.Type == "1" || (type1.Type == "5" && (positionStart == "440" || positionStart == "443"))) //3妤奸鏂欏嚭搴� /3L涓棿鍝佸嚭搴� + { + var locateno = Db.Queryable<SysStorageLocat>().Where(m => m.AreaNo == "B11").ToList(); + if (outLine == "443")//瑗夸晶鍑哄簱 + { + + positionEnd = locateno.OrderBy(m => m.LocatNo).First(m => m.Row == 1 && m.Status == "0" && m.Flag == "0").LocatNo; //瑗夸晶鎴块棿搴撲綅 + } + else if (outLine == "440") //涓滀晶鍑哄簱 + { + positionEnd = locateno.OrderBy(m => m.LocatNo).First(m => m.Row == 3 && m.Status == "0" && m.Flag == "0").LocatNo; //涓滀晶鎴块棿搴撲綅鍜屽闈㈡埧闂� + } + } + else if (type1.Type == "2" || type1.Type == "3") //鎶芥鍑哄簱 /鍙栨牱鍑哄簱 + { + positionEnd = Db.Queryable<SysStorageLocat>().OrderBy(m=>m.LocatNo).First(m => m.AreaNo == "B04" && m.Status == "0" && m.Flag == "0").LocatNo; + } + else if (type1.Type == "4")//涓嶅悎鏍煎搧鍑哄簱 + { + + positionEnd = Db.Queryable<SysStorageLocat>().OrderBy(m => m.LocatNo).First(m => (m.AreaNo == "B01"|| m.AreaNo == "B02"||m.AreaNo == "B04") && m.Status == "0" && m.Flag == "0").LocatNo; + } + else if (type1.Type == "0")//鎴愬搧鍑哄簱 + { + if (type1.UDF1 == "0") //鍑哄簱鍒版殏瀛樺尯 + { + positionEnd = Db.Queryable<SysStorageLocat>().OrderBy(m => m.LocatNo).First(m => m.AreaNo == "B02" && m.Status == "0" && m.Flag == "0").LocatNo; + } + else + { + return; + } + } + else //鍏朵粬鍗曟嵁绫诲瀷閮藉瓨鏀惧彂璐х紦瀛樺尯 + { + positionEnd = Db.Queryable<SysStorageLocat>().OrderBy(m => m.LocatNo).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(); + Random r = new Random(); + long ran = DateTime.Now.Ticks; + agvTask.ReqCode = ran.ToString(); + //agvTask.ReqCode = TtaskNo; //agv璇锋眰缂栧彿锛岄渶瑕侀殢鏈虹敓鎴� 锛堟渶澶�32浣嶏級 + agvTask.TaskCode = TtaskNo; //浠诲姟鍙� + agvTask.TaskTyp = type; //鎼繍绫诲瀷 + agvTask.PositionCodePath = position; //璧峰鍜岀洰鐨勪綅闆嗗悎 + agvTask.CtnrTyp = "1"; //瀹瑰櫒绫诲瀷锛屽�间负1 + if (type == "D02") + { + var palnoNum = Db.Queryable<BllPalletBind>().OrderByDescending(w=>w.Id).First(w => w.IsDel == "0" && w.PalletNo == task.PalletNo); + agvTask.CtnrNum = palnoNum.Qty.ToString(); //鍙犳墭浠诲姟闇�瑕佷笅鍙戠┖鎵樼洏鏁伴噺 + } + + agvTaskList.Add(agvTask); + + 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); + 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 + + #region 娣诲姞鍑哄簱浠诲姟淇℃伅 + + var taskNonew = new Common().GetMaxNo("TK"); + var exTask = new LogTask //灏忚溅绉诲簱浠诲姟 + { + TaskNo = TtaskNo, + Sender = "WMS", + Receiver = "AGV", + IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + + StartLocat = positionStart,//璧峰浣嶇疆 + EndLocat = positionEnd,//鐩爣浣嶇疆 + PalletNo = task.PalletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "3",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + CreateTime = DateTime.Now, //鍒涘缓鏃堕棿 + CreateUser = userId, //鍒涘缓浜� + Msg = "灏忚溅浠�" + positionStart + "鍒�" + positionEnd + "鐨勭Щ搴撲换鍔�", //鍏抽敭淇℃伅 + //FinishDate = serverTime, //瀹屾垚鏃堕棿 + }; + Db.Insertable(exTask).ExecuteCommand(); + + #endregion + + #region 鍌ㄤ綅鐘舵�佸彉鏇� + //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓� + var locat = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == positionEnd); + locat.Status = "4"; //4 绉诲叆涓� + Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅 + #endregion } Db.CommitTran(); } @@ -2377,7 +2575,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 @@ -2488,8 +2686,9 @@ StartLocate = locateNo, // 璧峰浣嶇疆 StartRoadway = locate.RoadwayNo, EndLocate = task.EndLocat, // 鐩爣浣嶇疆 + EndRoadway = task.EndRoadway, TaskNo = task.TaskNo, // 浠诲姟鍙� - TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱) + TaskType = task.Type,// 浠诲姟绫诲瀷 (鍑哄簱) OutMode = "", //鐩爣鍦板潃 Order = 1 }; //鍑哄簱鏁版嵁 @@ -2743,7 +2942,15 @@ // 鍑哄簱鎬昏〃 鐘舵�佹敼涓洪儴鍒嗗垎閰� var noticeModel = Db.Queryable<BllExportNotice>().First(m => m.SONo == noticeDetailModel.SONo && m.IsDel == "0"); - noticeModel.Status = "1"; + if (noticeDetailModel.AllotQty<=0) + { + noticeModel.Status = "0"; + } + else + { + noticeModel.Status = "1"; + } + Db.Updateable(noticeModel).ExecuteCommand(); // 搴撳瓨鏄庣粏琛� 鐘舵�佷慨鏀逛负寮傚父閿佸畾 閿佸畾鏁伴噺淇敼涓烘墭鐩樹笂鏁伴噺 @@ -2757,7 +2964,7 @@ // 搴撳瓨鎬昏〃 閿佸畾鏁伴噺=褰撳墠閿佸畾鏁伴噺 + (搴撳瓨鏄庣粏鎵樼洏涓婃暟閲�-搴撳瓨鏄庣粏鎵樼洏涓婂凡閿佸畾鐨勬暟閲�) var stockModel = Db.Queryable<DataStock>().First(m => m.LotNo == stockDetailModel.LotNo && m.SkuNo == stockDetailModel.SkuNo && m.IsDel == "0"); - stockModel.LockQty = stockModel.LockQty + (int)(stockDetailModel.Qty - lockQty); + stockModel.LockQty = stockModel.LockQty + (decimal)(stockDetailModel.Qty - lockQty); Db.Updateable(stockModel).ExecuteCommand(); // 鎷h揣鏄庣粏琛� 鍒犻櫎 @@ -3213,26 +3420,63 @@ { throw new Exception("鑾峰彇澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曪紒"); } - if (detail.Status != "0" && detail.Status != "1" && detail.AllotQty >= detail.Qty) - { - throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鏄瓑寰呮墽琛屾垨鍒嗛厤涓紒"); - } - if (detail.AllotQty >= detail.Qty) - { - throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴�!"); - } + var notice = Db.Queryable<BllExportNotice>().First(a => a.SONo == detail.SONo); if (notice == null) { throw new Exception("鑾峰彇澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗�!"); } - if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5") + if (notice.Type != "1" && notice.Type != "2" && notice.Type != "3") { - throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鍏佽!"); + if (detail.Status != "0" && detail.Status != "1" && detail.AllotQty >= detail.Qty) + { + throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鏄瓑寰呮墽琛屾垨鍒嗛厤涓紒"); + } + if (detail.AllotQty >= detail.Qty) + { + throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴�!"); + } + + if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5") + { + throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鍏佽!"); + } + } + string inspectStatus = string.Empty; + switch (notice.Type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧 + { + case "0"://鎴愬搧鍑哄簱 + inspectStatus = "1"; + break; + case "1"://棰嗘枡鍑哄簱 + inspectStatus = "1"; + break; + case "2"://鎶芥鍑哄簱 + inspectStatus = "0,1,2"; + break; + case "3"://鐗╂枡鍙栨牱鍑哄簱 + inspectStatus = "0"; + break; + case "4"://涓嶅悎鏍煎搧鍑哄簱 + inspectStatus = "2"; + break; + case "5"://涓棿鍝佸嚭搴� + inspectStatus = "1"; + break; + case "6"://浠e偍鍑哄簱 + inspectStatus = "0,1,2"; + break; + case "8"://瀵勫瓨鍑哄簱 + inspectStatus = "0,1"; + break; + default: //鍏跺畠鍑哄簱 + inspectStatus = "0,1"; + break; } #endregion Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>() + .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), m => inspectStatus.Contains(m.InspectStatus)) .AndIF(!string.IsNullOrWhiteSpace(houseNo), m => m.WareHouseNo == houseNo) .AndIF(!string.IsNullOrWhiteSpace(roadwayNo), m => m.RoadwayNo == roadwayNo) .AndIF(!string.IsNullOrWhiteSpace(locateNo), m => m.LocatNo == locateNo) @@ -3280,29 +3524,36 @@ { throw new Exception("鎿嶄綔澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曡鎯咃紒"); } - if (detail.AllotQty >= detail.Qty || (detail.Status != "0" && detail.Status != "1")) - { - throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒"); - } var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == detail.SONo); if (notice == null) { throw new Exception("鎿嶄綔澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曪紒"); } - if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5") + if (notice.Type != "1" && notice.Type != "2" && notice.Type !="3") { - throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒"); + if (detail.AllotQty >= detail.Qty || (detail.Status != "0" && detail.Status != "1")) + { + throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒"); + } + + if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5") + { + throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒"); + } + + //鍗曟嵁鏄庣粏闇�瑕佺殑鍑哄簱鏁伴噺 + var needQty = detail.Qty - detail.AllotQty; + //鍒嗛厤鐨勫嚭搴撴暟閲� + var outQty = model.StockList.Select(s => s.Qty).ToList().Sum(); + if (outQty < needQty) + { + throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忎笉鑳藉ぇ浜庤鍒掓暟閲忥紒"); + } } + #endregion - //鍗曟嵁鏄庣粏闇�瑕佺殑鍑哄簱鏁伴噺 - var needQty = detail.Qty - detail.AllotQty; - //鍒嗛厤鐨勫嚭搴撴暟閲� - var outQty = model.StockList.Select(s => s.Qty).ToList().Sum(); - if (outQty != needQty) - { - throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忎笌璁″垝鏁伴噺涓嶄竴鑷达紒"); - } + var stockIds = model.StockList.Select(a => a.StockId).ToList(); //搴撳瓨鏄庣粏 var stockList = Db.Queryable<DataStockDetail>().Where(a => stockIds.Contains(a.Id)).ToList(); @@ -3311,7 +3562,7 @@ var allots = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == detail.Id && m.Status == "0").ToList(); //搴撳瓨鎬昏〃 - //var stockz = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo); + var stockz = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo); var allotList = new List<BllExportAllot>(); decimal outQtys = 0; @@ -3348,7 +3599,7 @@ IsBelt = stock.IsBelt, Qty = st.Qty, CompleteQty = 0, - Status = "0", + Status = notice.Status == "4"? "2":"0", LogisticsId = notice.LogisticsId, IsAdvance = "0", OutMode = "",//鍑哄簱鍙� @@ -3367,11 +3618,12 @@ //搴撳瓨鏄庣粏 stock.LockQty += st.Qty; stock.Status = stock.LockQty == stock.Qty ? "2" : "1"; - - //搴撳瓨鎬昏〃 - //stockz.LockQty += st.Qty; - //Db.Updateable(stockz).ExecuteCommand(); - + if (detail.AllotQty+ st.Qty > detail.Qty) + { + //搴撳瓨鎬昏〃 + stockz.LockQty += (decimal)detail.AllotQty + st.Qty - detail.Qty; + Db.Updateable(stockz).ExecuteCommand(); + } Db.Updateable(stock).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand(); outQtys += st.Qty; @@ -3397,7 +3649,7 @@ foreach (var item in detailList) { totalQty += item.Qty; - totalAllotQty += Convert.ToInt32(item.AllotQty); + totalAllotQty += Convert.ToDecimal(item.AllotQty); } if (totalAllotQty >= totalQty) @@ -3471,7 +3723,7 @@ } } var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList(); - if (boxInfo != null)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠� + if (boxInfo.Count>0)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠� { result = "1";//闇�瑕佹媶绠� break; @@ -3553,5 +3805,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" ); + 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 == "2"); + 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">绠卞彿</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揣鐨勬暟閲� + Db.BeginTran(); + 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(); + Db.CommitTran(); + return allot.LoadingAddre; + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } } } -- Gitblit v1.8.0