From 6167bf4c8fe617d9f9861585042149d48ad15dbb Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期二, 13 五月 2025 17:54:50 +0800 Subject: [PATCH] 修改问题,添加PDA下发出库页面 --- Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | 393 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 369 insertions(+), 24 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs index b0f88b6..2027c39 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs @@ -22,6 +22,9 @@ using System.Xml.Schema; using ZXing.OneD; using System.Threading.Tasks; +using System.Security.Policy; +using Newtonsoft.Json; +using Utility.Tools; namespace WMS.BLL.BllPdaServer { @@ -1720,7 +1723,7 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model) + public List<BoxInfoDto> GetBindBoxInfos(BoxInfoVm model,string url) { try { @@ -1728,27 +1731,307 @@ { throw new Exception("璇锋壂鎻忓绠辨潯鐮�!"); } - string sqlString = $@"SELECT - ASNNo, - BoxNo, - SkuNo, - SkuName, - LotNo, - BitBoxMark, - SUM(Qty) as Qty - FROM BllBoxInfo - WHERE IsDel = '0' - AND Status='0' - AND BoxNo = '{model.BoxNo}' - GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; - var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); - - if (models.Count == 0) + if (string.IsNullOrWhiteSpace(model.ASNNo)) { - throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); + throw new Exception("璇烽�夋嫨鍏ュ簱鍗曞彿!"); } + var noticeList = Db.Queryable<BllArrivalNotice>().Where(m => m.IsDel == "0" && m.ASNNo == model.ASNNo).ToList(); + if (noticeList.Count != 1) + { + throw new Exception("鍏ュ簱鍗曞彿閲嶅!"); + } + var notice = noticeList.First(); + if (notice.Type == "0") //鎴愬搧鍏ュ簱 + { + string sqlString = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); - return models; + if (models.Count != 0) + { + return models; + } + else + { + var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).ToList(); + + if (boxInfo.Count == 0) + { + models = GetFMBindBoxInfos(model.BoxNo, url); + return models; + } + else + { + if (boxInfo.Count(m => m.Status != "0") > 0) + { + throw new Exception("绠辩爜淇℃伅鐘舵�佷笉鏄瓑寰呮墽琛�"); + } + return models; + } + + + + } + } + else if (notice.Type == "1" || notice.Type == "4") //閲囪喘鍏ュ簱 + { + string sqlString = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); + + if (models.Count != 0) + { + return models; + } + else + { + throw new Exception("娌℃湁鏌ヨ鍒扮鐮佷俊鎭�"); + } + } + else if (notice.Type == "3") //閫�璐у叆搴� + { + string sqlString = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); + + if (models.Count != 0) + { + return models; + } + else + { + sqlString = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo2 = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); + if (models.Count != 0) + { + return models; + } + else + { + sqlString = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo3 = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); + if (models.Count != 0) + { + return models; + } + } + } + + #region 鑾峰彇鏈�鍚庝竴娆″嚭搴撴嫞璐т腑鐨勭鐮佷俊鎭� + + var comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList(); + if (comBox.Count == 0) + { + comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo2 == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList(); + if (comBox.Count == 0) + { + comBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.BoxNo3 == model.BoxNo).GroupBy(m => m.ExportAllotId).Select(m => m.ExportAllotId).ToList(); + } + } + var i = 0;//寰幆娆℃暟 + DateTime time = DateTime.Now; + var allotId = 0; + foreach (var item in comBox) + { + var comBoxList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == item).OrderByDescending(m => m.CreateTime).First(); + if (i == 0) + { + time = comBoxList.CreateTime; + allotId = comBoxList.ExportAllotId; + } + else if (comBoxList.CreateTime > time) + { + time = comBoxList.CreateTime; + allotId = comBoxList.ExportAllotId; + } + i++; + } + if (allotId != 0) + { + var addComBox = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allotId).ToList(); + var addComList = addComBox.GroupBy(m => m.BoxNo).ToList(); + var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == addComBox.First().SkuNo); + var pNum = 0; + var bNum = 0; + new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum); + var boxList = new List<BllBoxInfo>(); + foreach (var com in addComList) + { + //绠卞唴鎬绘暟鍜� + var qtySum = addComBox.Where(m => m.BoxNo == com.Key).Sum(m => m.CompleteQty); + var bitBox = "1"; + if (qtySum == bNum) + { + bitBox = "0"; + } + foreach (var item in com) + { + if (item.BoxNo != model.BoxNo) + { + if (item.BoxNo2 != model.BoxNo) + { + if (item.BoxNo3 != model.BoxNo) + { + continue; + } + } + } + var boxInfo = new BllBoxInfo() + { + BoxNo = item.BoxNo, + BoxNo2 = item.BoxNo2, + BoxNo3 = item.BoxNo3, + SkuNo = item.SkuNo, + SkuName = item.SkuName, + LotNo = item.LotNo, + LotText = item.LotText, + Qty = (decimal)item.CompleteQty, + FullQty = bNum, + //ProductionTime = , + //ExpirationTime = , + InspectMark = "0", + InspectStatus = "0", + BitBoxMark = bitBox, + Origin = "WMS", + Status = "0", + CreateUser = 0 + }; + boxList.Add(boxInfo); + } + + } + Db.Insertable(boxList).ExecuteCommand(); + + string sqlString2 = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + var models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2); + + if (models2.Count != 0) + { + return models2; + } + else + { + sqlString2 = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo2 = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2); + if (models2.Count != 0) + { + return models2; + } + else + { + sqlString2 = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo3 = '{model.BoxNo}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + models2 = Db.Ado.SqlQuery<BoxInfoDto>(sqlString2); + if (models2.Count != 0) + { + return models2; + } + } + } + + + } + + throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); + #endregion + + } + else + { + throw new Exception("鍗曟嵁绫诲瀷閿欒"); + } } catch (Exception ex) { @@ -1761,21 +2044,83 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - public List<BoxInfoDto> GetFMBindBoxInfos(string boxno) + public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url) { try { #region 绠辩爜璇锋眰鎺ュ彛锛屾寮忕郴缁熸斁寮� - /*var jsonData = JsonConvert.SerializeObject(boxno); + var data = new + { + BoxCode = boxno + }; + var jsonData = JsonConvert.SerializeObject(data); var response = HttpHelper.DoPost(url, jsonData, "绠辩爜淇℃伅璇锋眰", "FM"); - var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁 - if (obj.Success != 0) + var obj = JsonConvert.DeserializeObject<FumaGetBoxModel>(response);//瑙f瀽杩斿洖鏁版嵁 + if (obj.Success != "0") { throw new Exception("璇锋眰澶辫触" + obj.Message); - }*/ + } #endregion + var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == obj.Product.SkuNo); + var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 + var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 + if (sku == null) + { + throw new Exception($"鏈煡璇㈠埌鐗╂枡{obj.Product.SkuNo}淇℃伅"); + } + new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum); + if (pNum == 0 || bNum == 0) + { + throw new Exception($"{sku.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒"); + } + + var boxList = new List<BllBoxInfo>(); + var comTime = DateTime.Now; + //娣诲姞绠辩爜淇℃伅 + foreach (var box in obj.Product.BoxInfoList) + { + foreach (var box2 in box.BoxInfo2List) + { + foreach (var box3 in box2.BoxInfo3List) + { + var boxInfo = new BllBoxInfo() + { + BoxNo = box.BoxNo, + BoxNo2 = box2.BoxNo2, + BoxNo3 = box3.BoxNo3, + Qty = box3.Qty, + BitBoxMark = box.BitBoxMark, + + ASNNo = "", + //ASNDetailNo = noticeDetail.Id, + OrderCode = "",//notice.OrderCode + //BindNo = bindId, + //PalletNo = model.PallNo, + FullQty = bNum, + Status = "2", + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + LotNo = obj.Product.LotNo, + LotText = obj.Product.LotText, + ProductionTime = DateTime.Parse(obj.Product.ProductionTime), + ExpirationTime = DateTime.Parse(obj.Product.ExpirationTime), + //CompleteTime = "", + InspectMark = "0", + InspectStatus = "0", + Origin = "璧嬬爜", + CreateTime = comTime, + CreateUser = 0 + }; + boxList.Add(boxInfo); + } + + } + } + Db.Fastest<BllBoxInfo>().BulkCopy(boxList); + + string sqlString = $@"SELECT ASNNo, BoxNo, -- Gitblit v1.8.0