From b2fc93e15a14847141b0a0a8bd591b945c9fa0a3 Mon Sep 17 00:00:00 2001 From: test <15284381150@163.com> Date: 星期四, 21 八月 2025 18:44:34 +0800 Subject: [PATCH] 添加赋码实体类和修改箱码方法,改正拣货拼托 --- Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 162 insertions(+), 12 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs index f821c0b..657aebb 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,7 +112,15 @@ 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("褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!"); @@ -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) @@ -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, @@ -360,7 +376,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}绠卞唴鐗╂枡鍙婃壒娆′笌鍗曟嵁涓嶄竴鑷达紝璇锋牳瀹�!"); } @@ -1178,12 +1194,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 +1364,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, @@ -2058,7 +2082,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 { @@ -2161,6 +2185,132 @@ { 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) + { + throw ex; + } } /// <summary> -- Gitblit v1.8.0