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 |  215 ++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 194 insertions(+), 21 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index bae79e7..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}绠卞唴鐗╂枡鍙婃壒娆′笌鍗曟嵁涓嶄竴鑷达紝璇锋牳瀹�!");
                             }
@@ -1164,7 +1180,7 @@
                 }
                 //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱澶�
                 var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo);
-                if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo))
+                if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo) && stockDetail.WareHouseNo != "W04")
                 {
                     throw new Exception("璇ユ墭鐩樺凡鏈夊偍浣嶄俊鎭紝璇锋牳瀹烇紒");
                 }
@@ -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,
 
@@ -1348,6 +1372,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")
@@ -2051,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
             {
@@ -2148,6 +2179,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)
@@ -4287,10 +4444,18 @@
             try
             {
                 string strMsg = "";
-                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == locatNo && w.Status == "0" && w.WareHouseNo == "W04");
+                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == locatNo && w.WareHouseNo == "W04");
                 if (storageLocat == null)
                 {
-                    throw new Exception("-1:鍦扮爜(鍌ㄤ綅淇℃伅)涓嶅瓨鍦ㄦ垨闈炵┖闂茬姸鎬侊紝璇锋牳鏌�!");
+                    throw new Exception("-1:鍦扮爜(鍌ㄤ綅淇℃伅)涓嶅瓨鍦紝璇锋牳鏌�!");
+                }
+                if (storageLocat.Status != "0")
+                {
+                    var detailInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == storageLocat.LocatNo);
+                    if (detailInfo != null)
+                    {
+                        throw new Exception("-1:鍦扮爜(鍌ㄤ綅淇℃伅)闈炵┖闂诧紝璇锋牳鏌�!");
+                    }
                 }
 
                 return strMsg;
@@ -6087,10 +6252,18 @@
                 #endregion
 
                 #region 鍦扮爜淇℃伅(鍌ㄤ綅淇℃伅)
-                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo && w.Status == "0");
+                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo);
                 if (storageLocat == null)
                 {
-                    throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨鍦ㄦ垨闈炵┖闂茬姸鎬侊紝璇锋牳鏌�!");
+                    throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨锛岃鏍告煡!");
+                }
+                if (storageLocat.Status != "0")
+                { 
+                    var detailInfo=Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == storageLocat.LocatNo);
+                    if (detailInfo != null)
+                    {
+                        throw new Exception("鍌ㄤ綅涓嶆槸绌洪棽鐘舵�侊紝璇锋牳鏌�!");
+                    }
                 }
                 #endregion
 
@@ -6556,10 +6729,10 @@
 
                 foreach (var item in stockDetailList)
                 {
-                    if (item.AreaNo != "B06" && item.AreaNo != "B07" && item.AreaNo != "B09")
-                    {
-                        throw new Exception("璇ユ墭鐩橀潪绾胯竟鍥炲簱鎵樼洏!");
-                    }
+                    //if (item.AreaNo != "B06" && item.AreaNo != "B07" && item.AreaNo != "B09")
+                    //{
+                    //    throw new Exception("璇ユ墭鐩橀潪绾胯竟鍥炲簱鎵樼洏!");
+                    //}
                     //搴撳瓨鎬昏〃
                     var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
                     if (stock == null)

--
Gitblit v1.8.0