From 24eaa29a52b8c050fc391eafd0b0cc370733cf91 Mon Sep 17 00:00:00 2001
From: admin <qiutairan163@163.com>
Date: 星期三, 26 十一月 2025 15:22:16 +0800
Subject: [PATCH] 修改拣货拼托判断有误

---
 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs |  155 +++++++++++++++++++++++++++++----------------------
 1 files changed, 88 insertions(+), 67 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index 24b225c..a95d6f3 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -85,16 +85,13 @@
                     throw Oops.Bah("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
                 }
                 //鍑哄簱鍗曟槑缁�
-                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>()
-                    .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
+                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
                 if (noticeDetail == null)
                 {
                     throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
                 }
                 //鍑哄簱鍒嗛厤淇℃伅
-                var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
-                    m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.SONo == soNo &&
-                    m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
+                var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3" || m.Status == "5") && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                 if (allot == null)
                 {
                     throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
@@ -121,13 +118,21 @@
                 var sdId = 0;
                 bool isNew = false;
 
-                var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);
+                //var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);
+                var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
 
                 if (pinStockDetail != null)
                 {
+                    //淇敼鎵樼洏琛ㄧ姸鎬佽鎵樼洏琛ㄥ拰搴撳瓨鏄庣粏琛ㄤ繚鎸佷竴鑷�
+                    string uptPalletStatusSql = $@"update SysPallets set Status='1' where PalletNo='{palletNoNew}'";
+                    int uptPalletStatus = Db.Ado.ExecuteCommand(uptPalletStatusSql);
+                    Db.CommitTran();
+
                     if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐�                                                
                     {
-                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList();
+                        //var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList();
+                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew).ToList();
+                        //鍙厑璁哥粦瀹氬悓涓�涓嚭搴撳崟涓嬬殑鐗╂枡
                         if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0)
                         {
                             throw Oops.Bah("鎷兼墭鎵樼洏涓婂彧鑳芥斁鍚屼竴涓嚭搴撳崟涓嬬殑鐗╂枡锛�");
@@ -140,7 +145,7 @@
                 {
                     isNew = true;
 
-                    var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
+                    var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew);//&& m.Status == "0"
                     if (newPalletInfo == null)
                     {
                         throw Oops.Bah("鏂版墭鐩樹俊鎭笉瀛樺湪锛�");
@@ -148,6 +153,7 @@
                     if (newPalletInfo.Status == "0")
                     {
                         var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && (m.SkuNo != stockDetail.SkuNo || m.LotNo != stockDetail.LotNo)).ToList();
+                        //鍙厑璁哥粦瀹氬悓涓�涓嚭搴撳崟涓嬬殑鐗╂枡
                         if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0)
                         {
                             throw Oops.Bah("涓�涓墭鐩樺彧鑳芥帴鍙椾竴涓嚭搴撳崟鎷兼墭锛�");
@@ -207,6 +213,10 @@
                     sd.UDF5 = "1";
                     //鏂板鎷兼墭搴撳瓨鏄庣粏淇℃伅
                     sdId = await Db.Insertable(sd).ExecuteReturnIdentityAsync();
+
+                    //淇敼鎵樼洏琛ㄧ姸鎬佽鎵樼洏琛ㄥ拰搴撳瓨鏄庣粏琛ㄤ繚鎸佷竴鑷�
+                    string uptPalletStatusSql = $@"update SysPallets set Status='1' where PalletNo='{palletNoNew}'";
+                    int uptPalletStatus = Db.Ado.ExecuteCommand(uptPalletStatusSql);
                 }
                 #endregion
 
@@ -556,16 +566,13 @@
                     throw Oops.Bah("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
                 }
                 //鍑哄簱鍗曟槑缁�
-                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>()
-                    .FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
+                var noticeDetail = await Db.Queryable<BllExportNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
                 if (noticeDetail == null)
                 {
                     throw Oops.Bah("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
                 }
                 //鍑哄簱鍒嗛厤淇℃伅
-                var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m =>
-                    m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo &&
-                    m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
+                var allot = await Db.Queryable<BllExportAllot>().FirstAsync(m => m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.SONo == soNo && m.SODetailNo == int.Parse(soDetailId) && m.PalletNo == palletNo);
                 if (allot == null)
                 {
                     throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
@@ -600,12 +607,19 @@
 
                 #region 鎷兼墭淇℃伅
                 bool isNew = false;
-                var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);
+                //var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo);
+                var pinStockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
                 if (pinStockDetail != null)
                 {
+                    //淇敼鎵樼洏琛ㄧ姸鎬佽鎵樼洏琛ㄥ拰搴撳瓨鏄庣粏琛ㄤ繚鎸佷竴鑷�
+                    string uptPalletStatusSql = $@"update SysPallets set Status='1' where PalletNo='{palletNoNew}'";
+                    int uptPalletStatus = Db.Ado.ExecuteCommand(uptPalletStatusSql);
+                    Db.CommitTran();
+
                     if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐�
                     {
-                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList();
+                        //var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList();
+                        var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew).ToList();
                         if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0)
                         {
                             throw Oops.Bah("鎷兼墭鎵樼洏涓婂彧鑳芥斁鍚屼竴涓嚭搴撳崟涓嬬殑鐗╂枡锛�");
@@ -616,8 +630,13 @@
                 {
                     isNew = true;
 
-                    var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
+                    //var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0");
+                    var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew);
                     if (newPalletInfo == null)
+                    {
+                        throw Oops.Bah("鏂版墭鐩樹俊鎭笉瀛樺湪锛�");
+                    }
+                    if (newPalletInfo.Status == "0")
                     {
                         var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && (m.SkuNo != stockDetail.SkuNo && m.LotNo != stockDetail.LotNo)).ToList();
                         if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0)
@@ -635,54 +654,58 @@
 
                 if (isNew)
                 {
-                    var sd = new DataStockDetail();
+                    var sd = new DataStockDetail
+                    {
+                        LotNo = stockDetail.LotNo,
+                        LotText = stockDetail.LotText,
+                        SupplierLot = stockDetail.SupplierLot,
+                        SkuNo = stockDetail.SkuNo,
+                        SkuName = stockDetail.SkuName,
+                        Standard = stockDetail.Standard,
 
-                    sd.LotNo = stockDetail.LotNo;
-                    sd.LotText = stockDetail.LotText;
-                    sd.SupplierLot = stockDetail.SupplierLot;
-                    sd.SkuNo = stockDetail.SkuNo;
-                    sd.SkuName = stockDetail.SkuName;
-                    sd.Standard = stockDetail.Standard;
+                        Qty = int.Parse(PickQty),
+                        LockQty = int.Parse(PickQty),
 
-                    sd.Qty = int.Parse(PickQty);
-                    sd.LockQty = int.Parse(PickQty);
+                        FrozenQty = 0,
+                        InspectQty = 0,
+                        ASNNo = "",
+                        ASNDetailNo = null,
+                        SONo = soNo,//鍑哄簱鍗曞彿
+                        WareHouseNo = "",
+                        RoadwayNo = "",
+                        AreaNo = "",
+                        LocatNo = "",
+                        PalletNo = palletNoNew,
+                        PalletNo2 = "",
+                        PalletNo3 = "",
+                        //PalletType = item.PalletType,
+                        CompleteTime = nowDate,
+                        ProductionTime = stockDetail.ProductionTime,
+                        ExpirationTime = stockDetail.ExpirationTime,
+                        Status = "2",//鐘舵�侊紝宸插垎閰�
+                        InspectMark = stockDetail.InspectMark,
+                        InspectStatus = stockDetail.InspectStatus,
+                        BitPalletMark = "0",
+                        PackagNo = noticeDetail.PackagNo,
+                        IsBale = stockDetail.IsBale,
+                        IsBelt = stockDetail.IsBelt,
+                        Demo = stockDetail.Demo,
+                        OwnerName = stockDetail.OwnerName,
+                        OwnerNo = stockDetail.OwnerNo,
+                        SupplierName = stockDetail.SupplierName,
+                        SupplierNo = stockDetail.SupplierNo,
 
-                    sd.FrozenQty = 0;
-                    sd.InspectQty = 0;
-                    sd.ASNNo = "";
-                    sd.ASNDetailNo = null;
-                    sd.SONo = soNo;//鍑哄簱鍗曞彿
-                    sd.WareHouseNo = "";
-                    sd.RoadwayNo = "";
-                    sd.AreaNo = "";
-                    sd.LocatNo = "";
-                    sd.PalletNo = palletNoNew;
-                    sd.PalletNo2 = "";
-                    sd.PalletNo3 = "";
-                    //PalletType = item.PalletType,
-                    sd.CompleteTime = nowDate;
-                    sd.ProductionTime = stockDetail.ProductionTime;
-                    sd.ExpirationTime = stockDetail.ExpirationTime;
-                    sd.Status = "2";//鐘舵�侊紝宸插垎閰�
-                    sd.InspectMark = stockDetail.InspectMark;
-                    sd.InspectStatus = stockDetail.InspectStatus;
-                    sd.BitPalletMark = "0";
-                    sd.PackagNo = noticeDetail.PackagNo;
-                    sd.IsBale = stockDetail.IsBale;
-                    sd.IsBelt = stockDetail.IsBelt;
-                    sd.Demo = stockDetail.Demo;
-                    sd.OwnerName = stockDetail.OwnerName;
-                    sd.OwnerNo = stockDetail.OwnerNo;
-                    sd.SupplierName = stockDetail.SupplierName;
-                    sd.SupplierNo = stockDetail.SupplierNo;
-
-                    sd.IsDel = "0";
-                    sd.CreateUser = userId;
-                    sd.CreateTime = nowDate;
-                    sd.UDF5 = "1";
-
+                        IsDel = "0",
+                        CreateUser = userId,
+                        CreateTime = nowDate,
+                        UDF5 = "1"
+                    };
                     //鏂板鎷兼墭搴撳瓨鏄庣粏淇℃伅
                     await Db.Insertable(sd).ExecuteReturnIdentityAsync();
+
+                    //淇敼鎵樼洏琛ㄧ姸鎬佽鎵樼洏琛ㄥ拰搴撳瓨鏄庣粏琛ㄤ繚鎸佷竴鑷�
+                    string uptPalletStatusSql = $@"update SysPallets set Status='1' where PalletNo='{palletNoNew}'";
+                    int uptPalletStatus = Db.Ado.ExecuteCommand(uptPalletStatusSql);
                 }
                 else
                 {
@@ -822,8 +845,7 @@
                 noticeDetail.CompleteQty += int.Parse(PickQty);
                 await Db.Updateable(noticeDetail).ExecuteCommandAsync();
 
-                var num = await Db.Queryable<BllExportNoticeDetail>()
-                    .CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+                var num = await Db.Queryable<BllExportNoticeDetail>().CountAsync(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
                 if (num <= 0)
                 {
                     notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
@@ -1779,14 +1801,13 @@
                 #endregion
 
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "杞﹂棿鍑哄簱",
-                    skuModel.SkuName, "鎷h揣", $"鍦≒DA杞﹂棿鍑哄簱椤典笂瀵癸細锛歿skuModel.SkuName}鐨勭墿鏂欒繘琛屾嫞璐ф搷浣�", userId);
+                var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "杞﹂棿鍑哄簱", skuModel.SkuName, "鎷h揣", $"鍦≒DA杞﹂棿鍑哄簱椤典笂瀵癸細{skuModel.SkuName}鐨勭墿鏂欒繘琛屾嫞璐ф搷浣�", userId);
                 Db.CommitTran();
             }
-            catch (AppFriendlyException e)
-            {
-                Db.RollbackTran();
-            }
+            //catch (AppFriendlyException e)
+            //{
+            //    Db.RollbackTran();
+            //}
             catch (Exception e)
             {
                 Db.RollbackTran();

--
Gitblit v1.8.0