From c5ba5ced45cddbe2fb4964dddc620f8fcecce6af Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期三, 17 九月 2025 17:54:24 +0800 Subject: [PATCH] 修改PDA组托收货功能 --- Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | 218 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 195 insertions(+), 23 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs index 60b594c..f854f15 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs @@ -30,6 +30,7 @@ using System.Security.Cryptography.X509Certificates; using AutoMapper.Configuration.Annotations; using Utility; +using System.Diagnostics.Metrics; namespace WMS.BLL.BllPdaServer { @@ -111,17 +112,25 @@ throw new Exception("鏈煡璇㈠埌鎵樼洏淇℃伅锛岃鏍稿疄锛�"); } //楠岃瘉鍏ュ簱鍗曟槑缁嗘槸鍚﹀瓨鍦� - var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && m.LotNo.Contains(model.LotNo)); + var detail = new BllArrivalNoticeDetail(); + if (string.IsNullOrEmpty(model.LotNo)) + { + detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo); + } + else + { + detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && m.LotNo.Contains(model.LotNo)); + } if (detail == null) { throw new Exception("褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!"); } //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱澶� - var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo); - if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo)) - { - throw new Exception("璇ユ墭鐩樺凡鏈夊偍浣嶄俊鎭紝涓嶅彲缁勬墭锛岃鏍稿疄锛�"); - } + //var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo); + //if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo)) + //{ + // throw new Exception("璇ユ墭鐩樺凡鏈夊偍浣嶄俊鎭紝涓嶅彲缁勬墭锛岃鏍稿疄锛�"); + //} #endregion @@ -133,13 +142,20 @@ #region 鍖呰 var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo); - var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo); - + if (sku == null) + { + throw new Exception("褰撳墠鐗╂枡淇℃伅涓嶅瓨鍦紝璇锋牳瀹�!"); + } + var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo); + if (pack == null) + { + throw new Exception("褰撳墠鐗╂枡鍖呰淇℃伅涓嶅瓨鍦紝璇锋牳瀹�!"); + } var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺 - new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum); + new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum); #endregion @@ -188,9 +204,9 @@ //缁戝畾绠辨�绘暟閲� //model.SkuQty = boxInfoList.Sum(s => s.Qty); //鍜岄�夋嫨鐨勬壒娆″悓鎵规鐨勭鐮佷俊鎭� - var sameBoxInfoList = boxInfoList.Where(w => w.LotNo == model.LotNo && w.Status == "0").ToList(); + var sameBoxInfoList = boxInfoList.Where(w => (w.LotNo ?? "") == model.LotNo && w.Status == "0").ToList(); //鍜岄�夋嫨鐨勬壒娆′笉鍚屾壒娆$殑绠辩爜淇℃伅锛堟嫾绠辨壒娆★級 - var notBoxInfoList = boxInfoList.Where(w => w.LotNo != model.LotNo).ToList(); + var notBoxInfoList = boxInfoList.Where(w => (w.LotNo ?? "") != model.LotNo).ToList(); #endregion if (sameBoxInfoList.Count <= 0) @@ -256,13 +272,13 @@ } // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭� - var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.ASNDetailNo == bind.ASNDetailNo && m.PalletNo == model.PalletNo); + var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo && m.LotNo == detail.LotNo && m.SkuNo == detail.SkuNo);// && m.ASNDetailNo == bind.ASNDetailNo var sdId1 = 0; if (sd1 != null) { sdId1 = sd1.Id; // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁 - sd1.Qty = bind.Qty; + sd1.Qty += bind.Qty; sd1.CompleteTime = comTime; sd1.UpdateUser = userId; sd1.UpdateTime = comTime; @@ -270,7 +286,7 @@ Db.Updateable(sd1).ExecuteCommand(); } else - { + { // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁 sd1 = new DataStockDetail() { @@ -301,7 +317,7 @@ InspectMark = bind.InspectMark, InspectStatus = sku.IsInspect, BitPalletMark = bind.BitPalletMark, - PackagNo = detail.PackagNo, //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮� + PackagNo = sku.PackagNo, IsBale = bind.IsBale, IsBelt = bind.IsBelt, @@ -309,6 +325,14 @@ CreateUser = 0, CreateTime = comTime }; + var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == sd1.PalletNo && !string.IsNullOrEmpty(w.LocatNo)); + if (palletData != null) + { + sd1.WareHouseNo = palletData.WareHouseNo; + sd1.RoadwayNo = palletData.RoadwayNo; + sd1.AreaNo = palletData.AreaNo; + sd1.LocatNo = palletData.LocatNo; + } //缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� //0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7") @@ -360,7 +384,7 @@ continue; } //绠卞唴鐗╂枡鎵规涓庡崟鎹槑缁嗕笉绗﹀悎 - if (box.SkuNo != detail.SkuNo || box.LotNo != model.LotNo) + if (box.SkuNo != detail.SkuNo || (box.LotNo ?? "") != model.LotNo) { throw new Exception($"-1:{box.BoxNo}绠卞唴鐗╂枡鍙婃壒娆′笌鍗曟嵁涓嶄竴鑷达紝璇锋牳瀹�!"); } @@ -468,6 +492,10 @@ } detail.UpdateUser = userId; detail.UpdateTime = comTime; + if (notice.Type == "4" || notice.Type == "8") + { + detail.InspectStatus = "1";//杞﹂棿閫�鏂欓粯璁ゆ楠屽悎鏍� + } //鏇存柊鍏ュ簱鍗曟槑缁� Db.Updateable(detail).ExecuteCommand(); @@ -488,7 +516,10 @@ #endregion #region 搴撳瓨鏄庣粏 - sd1.Qty = bind.Qty; + if (sd1.Qty <= 0) + { + sd1.Qty = bind.Qty; + } //鏇存敼搴撳瓨鏄庣粏鏁伴噺 Db.Updateable(sd1).Where(m => m.Id == sdId1).ExecuteCommand(); #endregion @@ -1178,12 +1209,20 @@ #region 鍖呰 var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo); - //var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo); // liudl 鐢盨ku鍖呰缂栧彿鍙樻洿涓哄叆搴撳崟鏄庣粏鍖呰缂栧彿 + if (sku == null) + { + throw new Exception("鏈煡璇㈠埌璇ョ墿鏂欎俊鎭紝璇锋牳瀹烇紒"); + } + var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo); + if (pack == null) + { + throw new Exception("鏈煡璇㈠埌璇ョ墿鏂欏寘瑁呬俊鎭紝璇锋牳瀹烇紒"); + } var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺 - new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum); + new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum); #endregion @@ -1340,7 +1379,7 @@ InspectMark = bind.InspectMark, InspectStatus = inspectStatusStr, BitPalletMark = bind.BitPalletMark, - PackagNo = detail.PackagNo, //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮� + PackagNo = sku.PackagNo, //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮� IsBale = bind.IsBale, IsBelt = bind.IsBelt, @@ -1348,6 +1387,13 @@ CreateUser = 0, CreateTime = comTime }; + if (stockDetail != null) + { + sd1.WareHouseNo = stockDetail.WareHouseNo; + sd1.AreaNo = stockDetail.AreaNo; + sd1.RoadwayNo = stockDetail.RoadwayNo; + sd1.LocatNo = stockDetail.LocatNo; + } //缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� //0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱 if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7") @@ -1791,7 +1837,7 @@ } } - else if (notice.Type == "1" || notice.Type == "4") //閲囪喘鍏ュ簱 + else if (notice.Type == "1" || notice.Type == "4" || notice.Type == "8") //閲囪喘鍏ュ簱 { string sqlString = $@"SELECT ASNNo, @@ -2051,7 +2097,7 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url) + /*public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url) { try { @@ -2148,6 +2194,132 @@ throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); } + return models; + } + catch (Exception ex) + { + throw ex; + } + }*/ + + public List<BoxInfoDto> GetFMBindBoxInfos(string boxno, string url) + { + try + { + #region 绠辩爜璇锋眰鎺ュ彛锛屾寮忕郴缁熸斁寮� + var data = new + { + BoxNo = boxno + }; + var jsonData = JsonConvert.SerializeObject(data); + + var response = HttpHelper.DoPost(url, jsonData, "绠辩爜淇℃伅璇锋眰", "FM"); + + var obj = JsonConvert.DeserializeObject<FuMaPostModel>(response);//瑙f瀽杩斿洖鏁版嵁 + if (obj.Success != true) + { + throw new Exception("璇锋眰澶辫触" + obj.Message); + } + #endregion + + if (string.IsNullOrEmpty(obj.Data.SkuNo)) + { + //娴嬭瘯鐢紝鍙戝竷姝e紡鍓嶅垹闄ゆ娈典唬鐮� + //obj.Data.SkuNo = "50004632"; + throw new Exception($"鐗╂枡缂栫爜涓嶈兘涓虹┖"); + } + + //鏌ユ壘鐗╂枡淇℃伅 + var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == obj.Data.SkuNo); + if (sku == null) + { + throw new Exception($"鏈煡璇㈠埌鐗╂枡{obj.Data.SkuNo}淇℃伅"); + } + + var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 + var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 + //鑾峰彇鍖呰淇℃伅 + 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.Data.DetailList) + { + foreach (var box2 in box.DetailList2) + { + var boxInfo = new BllBoxInfo() + { + BoxNo = obj.Data.BoxNo, + BoxNo2 = box.BoxNo2, + BoxNo3 = box2.BoxNo3, + Qty = obj.Data.Qty, + BitBoxMark = obj.Data.BitBoxMark, + + ASNNo = "", + //ASNDetailNo = noticeDetail.Id, + OrderCode = "",//notice.OrderCode + //BindNo = bindId, + //PalletNo = model.PallNo, + FullQty = bNum, + Status = "0", + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + LotNo = box2.LotNo, + LotText = obj.Data.LotNoBoxNum, + ProductionTime = DateTime.Parse(box2.ProductionTime), + ExpirationTime = DateTime.Parse(box2.ExpirationTime), + //CompleteTime = "", + InspectMark = "0", + InspectStatus = "0", + Origin = "璧嬬爜", + CreateTime = comTime, + CreateUser = 0 + }; + boxList.Add(boxInfo); + }; + } + try + { + //寮�鍚簨鍔� + Db.BeginTran(); + + Db.Fastest<BllBoxInfo>().BulkCopy(boxList); + + //鎻愪氦浜嬪姟 + Db.CommitTran(); + } + catch (Exception ex) + { + //鍥炴粴浜嬪姟 + Db.RollbackTran(); + throw new Exception("鎻掑叆绠辩爜澶辫触锛�" + ex.Message); + } + + string sqlString = $@"SELECT + ASNNo, + BoxNo, + SkuNo, + SkuName, + LotNo, + BitBoxMark, + SUM(Qty) as Qty + FROM BllBoxInfo + WHERE IsDel = '0' + AND Status='0' + AND BoxNo = '{boxno}' + GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + + var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); + + if (models.Count == 0) + { + throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!"); + } return models; } catch (Exception ex) @@ -2569,7 +2741,7 @@ ExpirationTime = boxInfoOne.ExpirationTime, Status = "0", InspectMark = boxInfoOne.InspectMark, - InspectStatus = sku.IsInspect, + InspectStatus = "1",//sku.IsInspect,//浠庤溅闂村叆搴撶殑璐ㄦ鐘舵�侀粯璁ゅ悎鏍� BitPalletMark = "1", PackagNo = sku.PackagNo, -- Gitblit v1.8.0