From 0acd18b6bebdcfc24a0d7c27edb0f8ef1fc7f9aa Mon Sep 17 00:00:00 2001 From: Administrator <Administrator@DESKTOP-5BIMHQ3> Date: 星期一, 04 三月 2024 10:29:34 +0800 Subject: [PATCH] 出库单复核功能修改 --- Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 153 +++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 111 insertions(+), 42 deletions(-) diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index ab76a7d..81e5525 100644 --- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs +++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs @@ -204,10 +204,18 @@ { throw new Exception("鏈煡璇㈠埌鍗曟嵁淇℃伅"); } + if (notice.Status != "5") + { + throw new Exception("澶嶆牳澶辫触锛屽崟鎹潪鍏抽棴鐘舵��"); + } var detail = Db.Queryable<BllExportNoticeDetail>().Where(m => m.SONo == notice.SONo && m.IsDel == "0").ToList(); if (detail.Count == 0) { throw new Exception("鏈煡璇㈠埌鍗曟嵁鏄庣粏淇℃伅"); + } + if (userId == notice.UpdateUser) + { + throw new Exception("澶嶆牳澶辫触锛屽鏍镐汉鍛樺拰鍏抽棴璁㈠崟浜哄憳涓嶈兘鐩稿悓锛�"); } var list = new List<SoDetail>(); foreach (var d in detail) @@ -225,21 +233,25 @@ OrderCode = notice.OrderCode, SoDetails = list }; - // 閫氳繃鎺ュ彛鍙戦�佽嚦erp - var jsonData = JsonConvert.SerializeObject(soInfo); + #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp + //绯荤粺瀵规帴鍚庢斁寮� + /*var jsonData = JsonConvert.SerializeObject(soInfo); var response = HttpHelper.DoPost(url, jsonData, "鍑哄簱鍗曞畬鎴愪笂浼�", "ERP"); - - //瑙f瀽杩斿洖鏁版嵁 - var obj = JsonConvert.DeserializeObject<ErpModel>(response); + + var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁 if (obj.Success != 0) { throw new Exception("涓婁紶澶辫触" + obj.Message); - } + }*/ + #endregion + notice.Status = "6"; notice.UpdateTime = DateTime.Now; notice.UpdateUser = userId; Db.Updateable(notice).ExecuteCommand(); + + new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "澶嶆牳", $"澶嶆牳浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId); return true; } catch (Exception e) @@ -278,7 +290,8 @@ .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id) .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id) .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id) - .Select((a, b, c, d) => new ExportNoticeDto() + .LeftJoin<SysUserInfor>((a, b, c, d,e) => a.CheckUser == e.Id) + .Select((a, b, c, d,e) => new ExportNoticeDto() { Id = a.Id, SONo = a.SONo, @@ -300,7 +313,10 @@ CreateUserName = c.RealName, UpdateUserName = c.RealName, CreateTime = a.CreateTime, - UpdateTime = a.UpdateTime + UpdateTime = a.UpdateTime, + + CheckUserName=e.RealName, + CheckTime=a.CheckTime }) .OrderByDescending(a => a.CreateTime) .ToOffsetPage(page, limit, ref total); @@ -321,38 +337,38 @@ var plnList = new List<string>() { "100099" }; var skuList = new List<string>(); var sku = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" && !plnList.Contains(m.SkuNo)); //鎺掗櫎绌烘墭鐩樼殑鐗╂枡闆嗗悎 - var inspectStatus = "1";//搴撳瓨鍐呯墿鏂欑殑璐ㄦ鐘舵�� - var skuTypeC = new List<string>() { "0" };//鏍囧噯 - var skuTypeY = new List<string>() { "1" };//闈炴爣 - if (type == "0" || type == "2") //鏍囧噯 + string skuType = string.Empty; + switch (type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧 { - inspectStatus = "0"; - //if (type == "0") //鎴愬搧 - //{ - skuList = sku.Where(m => inspectStatus==m.IsControlled).Select(m => m.SkuNo).ToList(); - //} - - //if (type == "1") //鍘熸枡 - //{ - // skuList = sku.Where(m => skuTypeY.Contains(m.Type)).Select(m => m.SkuNo).ToList(); - //} + case "0"://鎴愬搧鍏ュ簱 + skuType = "(2)"; + break; + case "1"://棰嗘枡鍑哄簱 + skuType = "(0,1,3)"; + break; + case "2"://鎶芥鍑哄簱 + skuType = "(2)"; + break; + case "3"://鐗╂枡鍙栨牱鍑哄簱 + skuType = "(0)"; + break; + case "4"://涓嶅悎鏍煎搧鍑哄簱 + skuType = "(2)"; + break; + case "5"://涓棿鍝佸嚭搴� + skuType = "(4)"; + break; + case "6"://浠e偍鍑哄簱 + skuType = "(2)"; + break; + default: //鍏跺畠鍑哄簱 + skuType = "(0,1,2,3,4)"; + break; } - else if (type == "1" || type == "3") //闈炴爣 + skuList = sku.Where(m => skuType.Contains(m.Type)).Select(m => m.SkuNo).ToList(); + if (skuList == null) { - inspectStatus = "1"; - //if (type == "2") //鎴愬搧 - //{ - skuList = sku.Where(m => inspectStatus==m.IsControlled).Select(m => m.SkuNo).ToList(); - //} - - //if (type == "3") //鍘熸枡 - //{ - // skuList = sku.Where(m => skuTypeY.Contains(m.Type)).Select(m => m.SkuNo).ToList(); - //} - } - else - { - throw new Exception("鍗曟嵁鐘舵�佹湁璇�"); + throw new Exception("鏈煡鍒板搴斿嚭搴撶被鍨嬬殑鐗╂枡"); } //skuList = sku.Select(m => m.SkuNo).ToList(); var stockRst = new StockServer(); @@ -608,7 +624,7 @@ s = stock.FirstOrDefault(m => m.SkuNo == d.SkuNo && m.LotNo == d.LotNo); } - var stockCount = 0; //st.StockQuantity.Value + var stockCount = 0.00m; //st.StockQuantity.Value if (s != null) { stockCount = s.Qty-s.FrozenQty-s.LockQty+d.Qty; @@ -2256,11 +2272,11 @@ } #endregion //鍙栧悎閫傚簱瀛樺晢鍝� - Dictionary<int, int> stockQtyDic = new Dictionary<int, int>();//鎵樺嚭搴撶墿鍝佹暟 + Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟 Dictionary<string, int> zxQtyDic = new Dictionary<string, int>();//鎵樺嚭鏁寸鏁� //鍒嗛厤璐х墿 //assign.AllocatePallets(stocks, pNum, bNum, needQty, stockQtyDic, zxQtyDic); - int qty = assign.AllotPallets(stockDetail, int.Parse(needQty.ToString()), pNum, bNum, stockQtyDic); + var qty = assign.AllotPallets(stockDetail, decimal.Parse(needQty.ToString()), pNum, bNum, stockQtyDic); foreach (var sc in stockQtyDic) { @@ -2678,8 +2694,8 @@ //淇敼鍑哄簱鍗曠姸鎬� if (notice.Status == "0" || notice.Status == "1") { - int totalQty = 0; - int totalAllotQty = 0; + decimal totalQty = 0; + decimal totalAllotQty = 0; foreach (var item in detailList) { totalQty += item.Qty; @@ -2711,5 +2727,58 @@ #endregion + /// <summary> + /// 鍒ゆ柇鍑哄簱鏄惁闇�瑕佹媶绠� + /// </summary> + /// <param name="soNo"></param> + /// <returns></returns> + public string IsNeedUnpack(string soNo) + { + string result = "0";//鏄惁闇�瑕佹媶绠憋紝0锛氬惁 1锛氭槸 + if (string.IsNullOrEmpty(soNo)) + { + throw new Exception("鏈壘鍒板搴斿嚭搴撳崟锛�"); + } + try + { + var notice = Db.Queryable<BllExportNotice>().First(w => w.IsDel == "0" && w.SONo == soNo); + if (notice == null) + { + throw new Exception("鏈壘鍒板搴斿嚭搴撳崟锛�"); + } + //鐗╂枡缂栫爜琛� + var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0"); + //鍖呰琛� + var packagList= Db.Queryable<SysPackag>().Where(w => w.IsDel == "0"); + //鍑哄簱鍒嗛厤淇℃伅 + var allotList = Db.Queryable<BllExportAllot>().Where(w => w.IsDel == "0" && w.SONo == soNo).ToList(); + foreach (var item in allotList) + { + var skuInfo = skuList.First(w => w.SkuNo == item.SkuNo); + if (skuInfo == null) + { + throw new Exception("鐗╂枡淇℃伅涓嶅瓨鍦紒"); + } + var packagInfo = packagList.First(w => w.PackagNo == skuInfo.PackagNo); + if (packagInfo == null) + { + throw new Exception("鍖呰淇℃伅涓嶅瓨鍦紒"); + } + if (packagInfo.L2Name == "绠�") + { + if (item.Qty % (decimal)packagInfo.L2Num != 0)//鑳芥暣闄よ鏄庝笉鐢ㄦ媶绠憋紝涓嶈兘鏁撮櫎璇存槑闇�瑕佹媶绠� + { + result = "1";//闇�瑕佹媶绠� + break; + } + } + } + return result; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } } } -- Gitblit v1.8.0