From ac85f1b3f6ca3b530cb75e26e77f5ac18924a2ec Mon Sep 17 00:00:00 2001
From: bklLiudl <673013083@qq.com>
Date: 星期五, 27 六月 2025 14:59:56 +0800
Subject: [PATCH] 编写车间出库-数量

---
 Wms/Wms/Controllers/PdaSoController.cs  |   22 +++++
 Pda/View/SoSetting/WorkshopOut.html     |   19 +---
 Wms/Model/ModelVm/PdaVm/PdaSoVm.cs      |   14 +++
 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs |  136 ++++++++++++++++++++++++++++++++++
 Wms/WMS.IBLL/IPdaServer/IPdaSoServer.cs |    9 ++
 5 files changed, 187 insertions(+), 13 deletions(-)

diff --git a/Pda/View/SoSetting/WorkshopOut.html b/Pda/View/SoSetting/WorkshopOut.html
index 54eb6c7..5ef004e 100644
--- a/Pda/View/SoSetting/WorkshopOut.html
+++ b/Pda/View/SoSetting/WorkshopOut.html
@@ -287,7 +287,7 @@
             /* 鏍囩鍒囨崲浠g爜 */
             $('#demodiv').hide();
             $('#demodiv1').hide();
-            var xianshiyemian = 0;
+            var xianshiyemian = 0;       // 0锛氭爣绛�  1锛氭暟閲�
 
             $('#option1').attr("style", "background-color: red;width: 50%;float: left;text-align: center;"); //閫変腑鍚庨鑹�
             $('#option2').attr("style", "background-color: #999;width: 50%;float: right;text-align: center;"); //榛樿棰滆壊
@@ -461,7 +461,7 @@
                         BoxNo: $("#BoxCode").val(),
                         TableType: xianshiyemian,
                     }
-                    //缁勭洏
+                    // 鍑哄簱
                     sendData(IP + "/PdaSo/ChejianPick", param, 'post', function (res) {
                         if (res.code == 0) { //鎴愬姛
                             layer.msg(res.msg, {
@@ -484,13 +484,6 @@
                     });
                 }
                 else if (xianshiyemian == 1) {
-                    if ($("#bar1").val() == "") {
-                        layer.msg('璇烽�夋嫨鍏ュ簱鍗�', {
-                            icon: 2,
-                            time: 2000 //2绉掑叧闂紙濡傛灉涓嶉厤缃紝榛樿鏄�3绉掞級
-                        });
-                        return;
-                    }
                     if ($("#SkuNo").val() == "") {
                         layer.msg('璇疯緭鍏ョ墿鏂�', {
                             icon: 2,
@@ -509,13 +502,13 @@
                         PalletNo: $("#PalletNo2").val(),
                         SkuNo: $("#SkuNo").val(),
                         LotNo: $("#LotNo2").val(),
-                        SkuQty: parseFloat($("#SkuQty2").val()), //鐗╂枡鏁伴噺
-                        AreaNo: $("#area").val(),
+                        PickQty: $("#SkuQty2").val(), //鐗╂枡鏁伴噺parseFloat()
+                        AreaNo: $("#area2").val(),
                         TableType: xianshiyemian,
                     }
                     console.log(param)
-                    //缁勭洏
-                    sendData(IP + "/PdaAsn/ChejianIn", param, 'post', function (res) {
+                    // 鏁伴噺鏍囩 鍑哄簱鍑芥暟
+                    sendData(IP + "/PdaSo/ChejianPickNum", param, 'post', function (res) {
                         if (res.code == 0) { //鎴愬姛
                             layer.msg(res.msg, {
                                 icon: 1,
diff --git a/Wms/Model/ModelVm/PdaVm/PdaSoVm.cs b/Wms/Model/ModelVm/PdaVm/PdaSoVm.cs
index 76576ff..18f1ee8 100644
--- a/Wms/Model/ModelVm/PdaVm/PdaSoVm.cs
+++ b/Wms/Model/ModelVm/PdaVm/PdaSoVm.cs
@@ -15,6 +15,20 @@
         public string PalletNo { get; set; }
 
         /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string SkuNo { get; set; }
+        /// <summary>
+        /// 杞﹂棿
+        /// </summary>
+        public string AreaNo { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        public string LotNo { get; set; }
+
+        /// <summary>
         /// 鏂版墭鐩樼爜
         /// </summary>
         public string PalletNoNew { get; set; }
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index b76f141..cd662cb 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -1596,6 +1596,142 @@
             }
         }
 
+        // 杞﹂棿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();
+                }
+
+                //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "杞﹂棿鍑哄簱",
+                    skuModel.SkuName, "鎷h揣", $"鍦≒DA杞﹂棿鍑哄簱椤典笂瀵癸細锛歿skuModel.SkuName}鐨勭墿鏂欒繘琛屾嫞璐ф搷浣�", userId);
+                Db.CommitTran();
+            }
+            catch (AppFriendlyException e)
+            {
+                Db.RollbackTran();
+            }
+            catch (Exception e)
+            {
+                Db.RollbackTran();
+                throw new Exception(e.Message);
+            }
+        }
+
         /// <summary>
         /// 鏍规嵁绠辩爜鑾峰彇鏍囩绠辩爜淇℃伅锛堣溅闂村叆搴�-鑾峰彇WMS鐢熸垚鐨勭淇℃伅锛�
         /// </summary>
diff --git a/Wms/WMS.IBLL/IPdaServer/IPdaSoServer.cs b/Wms/WMS.IBLL/IPdaServer/IPdaSoServer.cs
index 1ec35da..486d8e6 100644
--- a/Wms/WMS.IBLL/IPdaServer/IPdaSoServer.cs
+++ b/Wms/WMS.IBLL/IPdaServer/IPdaSoServer.cs
@@ -39,6 +39,15 @@
 
 
         Task ChejianPick(string palletNo, string boxNo, int userId);
+        
+        /// <summary>
+        /// 杞﹂棿鎸夊嚭搴� 鎸夋暟閲�
+        /// </summary>
+        /// <param name="palletNo"></param>
+        /// <param name="boxNo"></param>
+        /// <param name="userId"></param>
+        /// <returns></returns>
+        Task ChejianPickNum(PdaSoVm model, int userId);
 
         List<BoxInfoDto> GetWmsBoxInfos(string boxNo);
 
diff --git a/Wms/Wms/Controllers/PdaSoController.cs b/Wms/Wms/Controllers/PdaSoController.cs
index dca3e5d..77e01ba 100644
--- a/Wms/Wms/Controllers/PdaSoController.cs
+++ b/Wms/Wms/Controllers/PdaSoController.cs
@@ -326,9 +326,31 @@
         [HttpPost]
         public async Task ChejianPick(PdaSoVm model)
         {
+            if (_userManager.UserId == 0)
+            {
+                throw new Exception("鏈幏鍙栧埌鐢ㄦ埛淇℃伅");
+            }
+
             await _pdaSoSvc.ChejianPick(model.PalletNo, model.BoxNo, _userManager.UserId);
         }
 
+        /// <summary>
+        /// 杞﹂棿Pda鍑哄簱-鏁伴噺
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        /// <exception cref="Exception"></exception>
+        [HttpPost]
+        public async Task ChejianPickNum(PdaSoVm model) 
+        {
+            if (_userManager.UserId == 0)
+            {
+                throw new Exception("鏈幏鍙栧埌鐢ㄦ埛淇℃伅");
+            }
+
+            await _pdaSoSvc.ChejianPickNum(model, _userManager.UserId);
+        }
+
         #endregion
 
         #region JC23鐗堝彇鏍�

--
Gitblit v1.8.0