From 35d7109801b437fad4514047db521ae358a1b7ca Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期一, 30 六月 2025 14:11:25 +0800
Subject: [PATCH] Merge branch 'wxw'

---
 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs |  199 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 189 insertions(+), 10 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index 4cc999e..ad3c91d 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -1475,7 +1475,7 @@
             }
         }
 
-        //杞﹂棿pda鎷h揣
+        //杞﹂棿pda鎷h揣 - 鏍囩
         public async Task ChejianPick(string palletNo, string boxNo, int userId)
         {
             Db.BeginTran();
@@ -1489,7 +1489,7 @@
                 }
                 if (string.IsNullOrEmpty(boxNo))
                 {
-                    throw Oops.Bah("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
+                    throw Oops.Bah("绠辩爜涓嶅彲涓虹┖");
                 }
 
                 //绠辩爜鏄庣粏
@@ -1502,26 +1502,37 @@
                 boxInfos = await boxInfo.ToListAsync();
 
                 //搴撳瓨鏄庣粏
-                var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == boxInfos.First().SkuNo && m.LotNo == boxInfos.First().LotNo);
+                var stockDetail = await Db.Queryable<DataStockDetail>()
+                    .FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo 
+                    && m.SkuNo == boxInfos.First().SkuNo && m.LotNo == boxInfos.First().LotNo);
                 if (stockDetail == null)
                 {
                     throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
                 }
+                string lotNpstr = boxInfos.First().LotNo;
+                string skuNo = boxInfos.First().SkuNo;
+                string skuName = boxInfos.First().SkuName;
+
+                // 楠岃瘉鏄惁杞﹂棿绾胯竟浠撳簱
                 var areaList = new List<string>() { "B06", "B07", "B09" };
                 if (!areaList.Contains(stockDetail.AreaNo))
                 {
                     throw Oops.Bah("鎵樼洏涓嶆槸杞﹂棿鎵樼洏锛�");
                 }
+
                 //搴撳瓨鎬昏〃
-                var stock = await Db.Queryable<DataStock>().FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+                var stock = await Db.Queryable<DataStock>()
+                    .FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
                 if (stock == null)
                 {
                     throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
                 }
                 #endregion
 
-
                 var pickQty = boxInfos.Sum(m => m.Qty);
+
+                // 鍒犻櫎绠变换鍔�
+                await Db.Deleteable(boxInfos).ExecuteCommandAsync();
 
 
                 //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
@@ -1558,6 +1569,7 @@
                 {
                     await Db.Updateable(stock).ExecuteCommandAsync();
                 }
+
                 var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == palletNo);
                 if (num2 <= 0)
                 {
@@ -1570,9 +1582,179 @@
                     pallet.Status = "0";
                     await Db.Updateable(pallet).ExecuteCommandAsync();
                 }
-                 
+
+                #region  鎻掑叆杞﹂棿鍑哄叆搴撹褰曡〃
+                //鎻掑叆鍏ュ簱鏃ュ織
+                var _log = new LogWorkShop
+                {
+                    Type = "1",//绫诲瀷锛�0锛氬叆搴� 1锛氬嚭搴�
+                    PalletNo = palletNo,
+                    BoxNo = boxNo,
+                    LotNo = lotNpstr,
+                    SkuNo = skuNo,
+                    SkuName = skuName,
+                    Qty = pickQty
+                };
+                // 鎻掑叆杞﹂棿鍑哄簱璁板綍
+                Db.Insertable(_log).ExecuteCommand();
+                #endregion
+
+
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "杞﹂棿鍑哄簱", boxNo, "鎷h揣", $"鍦≒DA涓婂绠卞彿涓猴細{boxNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId);
+                var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "杞﹂棿鍑哄簱", 
+                    boxNo, "鍑哄簱", $"鍦≒DA涓婂绠卞彿涓猴細{boxNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId);
+                Db.CommitTran();
+            }
+            catch (AppFriendlyException e)
+            {
+                Db.RollbackTran();
+            }
+            catch (Exception e)
+            {
+                Db.RollbackTran();
+                throw new Exception(e.Message);
+            }
+        }
+
+        // 杞﹂棿Pda鎷h揣-鏁伴噺
+        public async Task ChejianPickNum(PdaSoVm model, int userId) 
+        {
+            Db.BeginTran();
+            try
+            {
+                #region 鍒ゆ柇
+
+                if (string.IsNullOrWhiteSpace(model.PalletNo))
+                {
+                    throw Oops.Bah("鎵樼洏鐮佷笉鑳戒负绌�");
+                }
+                if (string.IsNullOrWhiteSpace(model.SkuNo))
+                {
+                    throw Oops.Bah("鐗╂枡缂栫爜涓嶈兘涓虹┖");
+                }
+
+                decimal skuNum = 0;
+                if (string.IsNullOrEmpty(model.PickQty))
+                {
+                    throw Oops.Bah("鐗╂枡鏁伴噺涓嶅彲涓簄ull");
+                }
+                else 
+                {
+                    skuNum = decimal.Parse(model.PickQty);
+                    if (skuNum <= 0) 
+                    {
+                        throw Oops.Bah("鐗╂枡鏁伴噺搴斿ぇ浜�0锛�");
+                    }
+                }
+
+                // 鍒ゆ柇鏄惁璐存爣鐗╂枡
+                var skuModel = await Db.Queryable<SysMaterials>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == model.SkuNo);
+                if (skuModel == null)
+                {
+                    throw Oops.Bah("鐗╂枡涓嶅瓨鍦紝璇锋鏌ョ墿鏂欑紪鐮佹槸鍚︽嫰鍗达紒");
+                }
+                else 
+                {
+                    if (skuModel.IsPasteCode != "0") 
+                    {
+                        throw Oops.Bah("璇ョ墿鏂欎负璐存爣鐗╂枡锛岃鍒版爣绛鹃〉闈㈡嫞璐э紒");
+                    }
+                }
+
+
+                //搴撳瓨鏄庣粏
+                var stockDetail = await Db.Queryable<DataStockDetail>()
+                    .FirstAsync(m => m.IsDel == "0" && m.PalletNo == model.PalletNo
+                    && m.SkuNo == model.SkuNo  && m.LotNo == model.LotNo);
+                if (stockDetail == null)
+                {
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樹笂璐х墿鐨勫簱瀛樻槑缁嗕俊鎭紒");
+                }
+
+                // 楠岃瘉鏄惁杞﹂棿绾胯竟浠撳簱
+                var areaList = new List<string>() { "B06", "B07", "B09" };
+                if (!areaList.Contains(stockDetail.AreaNo))
+                {
+                    throw Oops.Bah("鎵樼洏涓嶆槸杞﹂棿鎵樼洏锛�");
+                }
+
+                //搴撳瓨鎬昏〃
+                var stock = await Db.Queryable<DataStock>()
+                    .FirstAsync(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+                if (stock == null)
+                {
+                    throw Oops.Bah("鏈煡璇㈠埌璇ユ墭鐩樹笂璐х墿鐨勫簱瀛樹俊鎭紒");
+                }
+                #endregion
+
+                var pickQty = skuNum;
+
+                //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
+                stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
+                stockDetail.Qty -= pickQty;
+                if (stockDetail.Qty == stockDetail.LockQty)
+                {
+                    stockDetail.Status = "2";
+                }
+                else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0)
+                {
+                    stockDetail.Status = "1";
+                }
+                else
+                {
+                    stockDetail.Status = "0";
+                }
+
+                if (stockDetail.Qty <= 0)
+                {
+                    await Db.Deleteable(stockDetail).ExecuteCommandAsync();
+                }
+                else
+                {
+                    await Db.Updateable(stockDetail).ExecuteCommandAsync();
+                }
+                stock.Qty -= pickQty;
+                if (stock.Qty <= 0)
+                {
+                    await Db.Deleteable(stock).ExecuteCommandAsync();
+                }
+                else
+                {
+                    await Db.Updateable(stock).ExecuteCommandAsync();
+                }
+
+                var num2 = await Db.Queryable<DataStockDetail>().CountAsync(m => m.IsDel == "0" && m.PalletNo == model.PalletNo);
+                if (num2 <= 0)
+                {
+                    //鏀瑰彉鎵樼洏鐘舵��
+                    var pallet = await Db.Queryable<SysPallets>().FirstAsync(m => m.PalletNo == model.PalletNo && m.IsDel == "0");
+                    if (pallet == null)
+                    {
+                        throw Oops.Bah("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                    }
+                    pallet.Status = "0";
+                    await Db.Updateable(pallet).ExecuteCommandAsync();
+                }
+
+                #region  鎻掑叆杞﹂棿鍑哄叆搴撹褰曡〃
+                // 鍒涘缓瀹炰綋
+                var _log = new LogWorkShop
+                {
+                    Type = "1",//绫诲瀷锛�0锛氬叆搴� 1锛氬嚭搴�
+                    PalletNo = model.PalletNo,
+                    BoxNo = "",
+                    LotNo = model.LotNo,
+                    SkuNo = skuModel.SkuNo,
+                    SkuName = skuModel.SkuName,
+                    Qty = pickQty
+                };
+                // 鎻掑叆杞﹂棿鍑哄簱璁板綍
+                Db.Insertable(_log).ExecuteCommand();
+                #endregion
+
+                //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "杞﹂棿鍑哄簱",
+                    skuModel.SkuName, "鎷h揣", $"鍦≒DA杞﹂棿鍑哄簱椤典笂瀵癸細锛歿skuModel.SkuName}鐨勭墿鏂欒繘琛屾嫞璐ф搷浣�", userId);
                 Db.CommitTran();
             }
             catch (AppFriendlyException e)
@@ -5119,9 +5301,6 @@
 
             return data;
         }
-
-       
-
         #endregion
 
     }

--
Gitblit v1.8.0