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 |  166 +++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 154 insertions(+), 12 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index 72de3a2..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
 {
@@ -125,11 +126,11 @@
                     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
 
@@ -271,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;
@@ -285,7 +286,7 @@
                         Db.Updateable(sd1).ExecuteCommand();
                     }
                     else
-                    {
+                    {                        
                         // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁
                         sd1 = new DataStockDetail()
                         {
@@ -324,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")
@@ -483,6 +492,10 @@
                     }
                     detail.UpdateUser = userId;
                     detail.UpdateTime = comTime;
+                    if (notice.Type == "4" || notice.Type == "8")
+                    {
+                        detail.InspectStatus = "1";//杞﹂棿閫�鏂欓粯璁ゆ楠屽悎鏍�
+                    }
                     //鏇存柊鍏ュ簱鍗曟槑缁�
                     Db.Updateable(detail).ExecuteCommand();
 
@@ -503,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
@@ -1821,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,
@@ -2081,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
             {
@@ -2178,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)
@@ -2599,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