From cabcb499a03de83b62eb8c01a734a1f4049f1dcf Mon Sep 17 00:00:00 2001
From: yuyou_x <2336760928@qq.com>
Date: 星期三, 13 三月 2024 11:49:30 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/liudongl/jc24-wms

---
 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs |  135 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 128 insertions(+), 7 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index a2bdd98..f2b5cc7 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -345,7 +345,7 @@
         }
 
         //鍑哄簱pda鎷h揣
-        public void SoSetPick(string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, int userId)
+        public void SoSetPick(string soNo, string soDetailId, string palletNo, string boxNo, string boxNo3, string pickQty1, int userId)
         {
             Db.BeginTran();
             try
@@ -363,6 +363,10 @@
                 if (string.IsNullOrWhiteSpace(palletNo))
                 {
                     throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+                }
+                if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)
+                {
+                    throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�");
                 }
 
                 //鍑哄簱鍗�
@@ -503,7 +507,7 @@
                 }
                 else
                 {
-                    var biaoShi = "0";//0锛氭暣绠辨嫞璐с��1锛氭暎鏀嫞璐�
+                    var biaoShi = "0";//0锛氭暣绠辨嫞璐с��1锛氭暎鏀嫞璐с��2锛氭暟閲忔嫞璐�
                     List<DataBoxInfo> boxInfos;
                     var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo);
                     if (boxInfo.Count() == 0)
@@ -536,6 +540,24 @@
 
                         biaoShi = "1";
                     }
+                    else if (!string.IsNullOrEmpty(pickQty1) && int.Parse(pickQty1) > 0)//鏁伴噺鎷h揣
+                    {
+                        if (boxInfo.Count() > 1)
+                        {
+                            throw new Exception("璇ョ鐮佸唴瀛樺湪鏀爜涓嶈兘杩涜鏁伴噺鎷h揣");
+                        }
+                        int boxQty = boxInfo.First().Qty;
+                        if (Convert.ToInt32(pickQty1) > boxQty)
+                        {
+                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺");
+                        }
+                        if (Convert.ToInt32(pickQty1) > needQty)
+                        {
+                            throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鍓╀綑寰呮嫞鏁伴噺");
+                        }
+
+                        biaoShi = "2";
+                    }
                     else //鏁寸鎷h揣
                     {
                         if (boxInfo.Count() == 0)
@@ -557,7 +579,7 @@
                     var comList = new List<BllCompleteDetail>();
                     foreach (var item in boxInfos)
                     {
-                        if (comDetailList.Any(m => m.BoxNo3 == item.BoxNo3))
+                        if (biaoShi != "2" && comDetailList.Any(m => m.BoxNo3 == item.BoxNo3))
                         {
                             throw new Exception($"褰撳墠{item.BoxNo}涓瓄item.BoxNo3}宸叉嫞璐у畬鎴愶紝璇峰嬁閲嶅鎷h揣");
                         }
@@ -579,14 +601,31 @@
                             SkuName = allot.SkuName,
                             Standard = allot.Standard,
                             PalletNo = palletNo,
-                            CompleteQty = item.Qty,
+                            CompleteQty = biaoShi == "2" ? int.Parse(pickQty1) : item.Qty,
 
                             CreateUser = userId
                         };
                         comList.Add(completeDetail);
 
-                        //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
-                        Db.Deleteable(item).ExecuteCommand();
+                        if (biaoShi != "2")
+                        {
+                            //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
+                            Db.Deleteable(item).ExecuteCommand();                            
+                        }
+                        else//鏁伴噺鎷h揣
+                        {
+                            if (int.Parse(pickQty1) == item.Qty)
+                            {
+                                //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
+                                Db.Deleteable(item).ExecuteCommand();
+                            }
+                            else
+                            {
+                                item.Qty -= int.Parse(pickQty1);
+                                item.BitBoxMark = "1";//闆剁鏍囪瘑
+                                Db.Updateable(item).ExecuteCommand();
+                            }
+                        }
                         pickQty += item.Qty;
                     }
                     //鏀瑰彉搴撳唴绠辩爜鏄惁闆剁淇℃伅
@@ -670,6 +709,8 @@
                     //淇敼鍑哄簱鍗曚俊鎭�
                     Db.Updateable(notice).ExecuteCommand();
                 }
+                //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鍑哄簱", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId);
                 Db.CommitTran();
             }
             catch (Exception e)
@@ -806,8 +847,21 @@
                 int isDel = 0;
 
                 //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
+                stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
                 stockDetail.Qty -= int.Parse(PickQty);
                 stockDetail.LockQty -= int.Parse(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)
                 {
                     Db.Deleteable(stockDetail).ExecuteCommand();
@@ -856,7 +910,8 @@
                 //淇敼鍑哄簱鍗曚俊鎭�
                 Db.Updateable(notice).ExecuteCommand();
 
-
+                //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鎷h揣鍑哄簱", soNo, "鎷h揣", $"鍦≒DA涓婂鍑哄簱鍗曞彿涓猴細{soNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId);
                 Db.CommitTran();
             }
             catch (Exception e)
@@ -1229,6 +1284,72 @@
             }
         }
 
+        //鏍规嵁鎵樼洏鍙疯幏鍙栧彇鏍风被鍨�
+        public string GetSampleType(string palletNo)
+        {
+            try
+            {
+                var type = "";
+                var detail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
+                if (detail== null)
+                {
+                    throw new Exception("褰撳墠鎵樼洏鏈湪搴撳瓨涓�");
+                }
+                //鎬庝箞鍒ゆ柇褰撳墠鎵樼洏鏄簱澶栬鍙栨牱鐨勬墭鐩橈紝姝e父鍑哄簱鍓╀綑鎵樼洏鐩墠杩欑鎯呭喌涔熻兘鎷h揣鍟婏紝涔熸病鏈夊垎閰嶄俊鎭�
+                var allot = Db.Queryable<BllExportAllot>().First(m =>
+                    m.IsDel == "0" && m.PalletNo == palletNo && m.Status != "5" && m.Status != "6");
+                if (allot!=null)
+                {
+                    var soNo = Db.Queryable<BllExportNotice>()
+                        .First(m => m.IsDel == "0" && m.SONo == allot.SONo);
+                    if (soNo == null)
+                    {
+                        throw new Exception("鏈壘鍒版墭鐩樹笂鍑哄簱鍗曟嵁淇℃伅");
+                    } 
+                    if (soNo.Type != "3")
+                    {
+                        throw new Exception("璇ユ墭鐩樹笉鏄彇鏍锋墭鐩�");
+                    } 
+                    type = "0";//搴撳唴鍙栨牱
+                }
+                else
+                {
+                    type = "1";//搴撳墠鍙栨牱
+                }
+                return type;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
+        //鏍规嵁鎵樼洏鍙疯幏鍙栧叆搴撳崟鎹�
+        public List<string> GetAsnNoByPallet(string palletNo)
+        {
+            try
+            {
+                var type = "";
+                var detail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNo);
+                if (detail == null)
+                {
+                    throw new Exception("褰撳墠鎵樼洏鏈湪搴撳瓨涓�");
+                }
+
+                var list = new List<string>();
+                if (string.IsNullOrWhiteSpace(detail.ASNNo))
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍏ュ簱鍗曚俊鎭�");
+                }
+                list.Add(detail.ASNNo);
+                return list;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
 
     }
 }

--
Gitblit v1.8.0