From 38d24bdd00d8dd9e416fc5988831ec4b62e696ca Mon Sep 17 00:00:00 2001
From: yuyou_x <2336760928@qq.com>
Date: 星期三, 06 三月 2024 09:39:30 +0800
Subject: [PATCH] 合并数据

---
 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs |  265 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 252 insertions(+), 13 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index 3b6a538..a2bdd98 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -243,7 +243,7 @@
                             foreach (var demo in list)
                             {
                                 var com = comInfo.FirstOrDefault(m => m.IsDel == "0" && m.BoxNo3 == demo.BoxNo);
-                                if (com!=null)
+                                if (com != null)
                                 {
                                     demo.PickedQty = com.CompleteQty;
                                 }
@@ -279,10 +279,62 @@
         }
 
         //鑾峰彇搴撳唴鏃犵鐮佺殑鎵樼洏鍒嗛厤淇℃伅
-        public List<OutPdaInfo> GetAllotPlnInfo(string soDetailId, string palletNo)
+        public List<BoxInfo> GetAllotPlnInfo(string soDetailId, string palletNo)
         {
             try
             {
+                #region 鍒ゆ柇
+
+                //鏍规嵁id鍙婃墭鐩樿幏鍙栧嚭搴撳崟鍜屾墭鐩樻嫞璐т俊鎭�
+                if (string.IsNullOrWhiteSpace(palletNo))
+                {
+                    throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�");
+                }
+                //鑾峰彇瀵瑰簲鎵樼洏涓嬫槸鍚﹀瓨鍦ㄧ鐮佷俊鎭�
+                var boxInfo = Db.Queryable<DataBoxInfo>().First(b => b.IsDel == "0" && b.PalletNo == palletNo);
+                if (boxInfo != null)
+                {
+                    throw new Exception($"{palletNo}鎵樼洏涓婂瓨鍦ㄧ鐮佷俊鎭紝鏃犳硶鍦ㄦ暟閲忔嫞璐ц繘琛屾搷浣滐紒");
+                }
+                //鍑哄簱鍗曟槑缁�
+                var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(a => a.Id == int.Parse(soDetailId) && a.IsDel == "0");
+                if (noticeDetail == null)
+                {
+                    throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍑哄簱鍗曟槑缁嗕俊鎭紝璇锋牳瀹烇紒");
+                }
+                //鍑哄簱鍗曟�诲崟
+                var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == noticeDetail.SONo);
+                if (notice == null)
+                {
+                    throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍑哄簱鍗曟�诲崟淇℃伅锛岃鏍稿疄锛�");
+                }
+                //鍒嗛厤淇℃伅
+                var allot = Db.Queryable<BllExportAllot>().First(a => a.IsDel == "0" && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.PalletNo == palletNo && a.Status == "2" || a.Status == "3");
+                if (allot == null)
+                {
+                    throw new Exception($"鏈煡璇㈠埌瀵瑰簲鍒嗛厤淇℃伅锛岃鏍稿疄锛�");
+                }
+                //搴撳瓨鏄庣粏
+                var detail = Db.Queryable<DataStockDetail>().First(a => a.IsDel == "0" && a.PalletNo == palletNo);
+                if (detail == null)
+                {
+                    throw new Exception($"鏈煡璇㈠埌搴撳瓨鏄庣粏淇℃伅锛岃鏍稿疄锛�");
+                }
+
+                #endregion
+
+                List<BoxInfo> pdaInfo = new List<BoxInfo>();
+
+                BoxInfo info = new BoxInfo()
+                {
+                    SkuNo = detail.SkuNo,
+                    BoxNo = detail.SkuNo,
+                    Qty = (int)allot.Qty,
+                    PickedQty = (int)allot.CompleteQty,
+                };
+
+                pdaInfo.Add(info);
+                return pdaInfo;
 
             }
             catch (Exception e)
@@ -312,7 +364,7 @@
                 {
                     throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
                 }
-                
+
                 //鍑哄簱鍗�
                 var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo);
                 if (notice == null)
@@ -413,7 +465,7 @@
                     Db.Insertable(comList).ExecuteCommand();
                     //淇敼鍑哄簱鍒嗛厤淇℃伅
                     allot.CompleteQty += pickQty;
-                    allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";                    
+                    allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
                     Db.Updateable(allot).ExecuteCommand();
                     //鍒犻櫎搴撳瓨鏄庣粏
                     Db.Deleteable(stockDetail).ExecuteCommand();
@@ -627,6 +679,193 @@
             }
         }
 
+        //鍑哄簱pda鎷h揣
+        public void SoSetQtyPick(string soNo, string soDetailId, string palletNo, string PickQty, int userId)
+        {
+            Db.BeginTran();
+            try
+            {
+                #region 鍒ゆ柇
+
+                if (string.IsNullOrWhiteSpace(soNo))
+                {
+                    throw new Exception("鍑哄簱鍗曟嵁涓嶈兘涓虹┖");
+                }
+                //if (string.IsNullOrWhiteSpace(soDetailId))
+                //{
+                //    throw new Exception("鍑哄簱鐗╂枡-鎵规涓嶈兘涓虹┖");
+                //}
+                if (string.IsNullOrWhiteSpace(palletNo))
+                {
+                    throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�");
+                }
+
+                //鍑哄簱鍗�
+                var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo);
+                if (notice == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
+                }
+                if (notice.Status != "3")
+                {
+                    throw new Exception("鍑哄簱鍗曠殑鐘舵�佷笉鏄鍦ㄦ墽琛岋紝涓嶈兘鎷h揣");
+                }
+                //鍑哄簱鍗曟槑缁�
+                var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
+                    .First(m => m.IsDel == "0" && m.Id == int.Parse(soDetailId));
+                if (noticeDetail == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
+                }
+                //鍑哄簱鍒嗛厤淇℃伅
+                var allot = Db.Queryable<BllExportAllot>().First(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 new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
+                }
+                //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
+                var needQty = allot.Qty - allot.CompleteQty;
+                if (int.Parse(PickQty) > needQty)
+                {
+                    throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬鎵樺唴鍓╀綑寰呮嫞鏁伴噺");
+                }
+
+                //搴撳瓨鏄庣粏
+                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId);
+                if (stockDetail == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
+                }
+                //搴撳瓨鎬昏〃
+                var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+                if (stock == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+                }
+                #endregion
+                //鑾峰彇褰撳墠鎵樼洏鎷h揣鏄庣粏
+                var complete = Db.Queryable<BllCompleteDetail>().First(a => a.IsDel == "0" && a.PalletNo == palletNo && a.SONo == notice.SONo && a.SODetailNo == noticeDetail.Id && a.ExportAllotId == allot.Id && a.StockId == stockDetail.Id);
+
+                //鍒よ鏄惁瀛樺湪鎷h揣鏄庣粏
+                int isComplete = 0;
+                if (complete != null)
+                {
+                    isComplete = 1;
+                }
+
+                var comList = new List<BllCompleteDetail>();
+                //鍒ゆ柇鏄惁瀛樺湪鎷h揣鏄庣粏
+                if (isComplete == 0)
+                {
+                    //娣诲姞鎷h揣鏄庣粏
+                    var completeDetail = new BllCompleteDetail()
+                    {
+                        SONo = soNo,
+                        SODetailNo = int.Parse(soDetailId),
+                        ExportAllotId = allot.Id,
+                        StockId = allot.StockId,
+                        BoxNo = "",
+                        BoxNo2 = "",
+                        BoxNo3 = "",
+
+                        LotNo = allot.LotNo,
+                        LotText = allot.LotText,
+                        SupplierLot = allot.SupplierLot,
+                        SkuNo = allot.SkuNo,
+                        SkuName = allot.SkuName,
+                        Standard = allot.Standard,
+                        PalletNo = palletNo,
+                        CompleteQty = int.Parse(PickQty),
+
+                        CreateUser = userId,
+                        CreateTime = Db.GetDate(),
+                    };
+                    comList.Add(completeDetail);
+
+                    //娣诲姞鎷h揣鏄庣粏
+                    Db.Insertable(comList).ExecuteCommand();
+                }
+                else if (isComplete == 1)
+                {
+                    complete.CompleteQty += int.Parse(PickQty);
+                    complete.UpdateUser = userId;
+                    complete.UpdateTime = Db.GetDate();
+
+                    Db.Updateable(complete).ExecuteCommand();
+                }
+                
+
+
+                //淇敼鍑哄簱鍒嗛厤淇℃伅
+                allot.CompleteQty += int.Parse(PickQty);
+                allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                Db.Updateable(allot).ExecuteCommand();
+
+                int isDel = 0;
+
+                //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
+                stockDetail.Qty -= int.Parse(PickQty);
+                stockDetail.LockQty -= int.Parse(PickQty);
+                if (stockDetail.Qty <= 0)
+                {
+                    Db.Deleteable(stockDetail).ExecuteCommand();
+                }
+                else
+                {
+                    isDel = 1;
+                    Db.Updateable(stockDetail).ExecuteCommand();
+                }
+                //鍒犻櫎鎴栦慨鏀瑰簱瀛�
+                stock.Qty -= int.Parse(PickQty);
+                stock.LockQty -= int.Parse(PickQty);
+                if (stock.Qty <= 0)
+                {
+                    Db.Deleteable(stock).ExecuteCommand();
+                }
+                else
+                {
+                    Db.Updateable(stock).ExecuteCommand();
+                }
+
+                //鏀瑰彉鎵樼洏鐘舵�佷负锛氭湭浣跨敤
+                var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == palletNo && m.IsDel == "0");
+                if (pallet == null)
+                {
+                    throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                }
+
+                //鍒ゆ柇鎵樼洏涓婄墿鏂欐槸鍚︽嫞璐у畬姣�
+                if (isDel == 0)
+                {
+                    pallet.Status = "0";
+                    Db.Updateable(pallet).ExecuteCommand();
+                }
+                
+                //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
+                noticeDetail.CompleteQty += int.Parse(PickQty);
+                Db.Updateable(noticeDetail).ExecuteCommand();
+
+                var num = Db.Queryable<BllExportNoticeDetail>()
+                    .Count(m => m.IsDel == "0" && m.SONo == soNo && m.CompleteQty < m.Qty);
+                if (num <= 0)
+                {
+                    notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
+                }
+                //淇敼鍑哄簱鍗曚俊鎭�
+                Db.Updateable(notice).ExecuteCommand();
+
+
+                Db.CommitTran();
+            }
+            catch (Exception e)
+            {
+                Db.RollbackTran();
+                throw new Exception(e.Message);
+            }
+        }
+
         /// <summary>
         /// 涓嬪彂绌烘墭鍑哄簱
         /// </summary>
@@ -635,7 +874,7 @@
         /// <param name="url"> </param>
         /// <returns></returns>
         /// <exception cref="Exception"></exception>
-        public string IssuePlnOutHouse(OutModePalletVm model, int userId,string url)
+        public string IssuePlnOutHouse(OutModePalletVm model, int userId, string url)
         {
             try
             {
@@ -649,7 +888,7 @@
                 if (stockDetail.Count > 0)
                 {
                     //鍒ゆ柇鏄惁澶т簬闇�瑕佸灈鏁�
-                    if (stockDetail.Count< int.Parse(model.Num))
+                    if (stockDetail.Count < int.Parse(model.Num))
                     {
                         strMsg = "闇�瑕佸灈鏁板ぇ浜庡簱瀛樺灈鏁帮紝璇烽噸鏂拌緭鍏�!";
                         return strMsg;
@@ -704,7 +943,7 @@
                     s.Status = "2"; //2 宸插垎閰�
                     //淇敼搴撳瓨鏄庣粏淇℃伅
                     Db.Updateable(s).ExecuteCommand();
-                    
+
                     #region 鍒嗛厤
 
                     //娣诲姞鍒嗛厤琛ㄤ俊鎭�
@@ -738,7 +977,7 @@
                     Db.Insertable(allot).ExecuteCommand();
 
                     #endregion
-                    
+
                     #region 娣诲姞鍑哄簱浠诲姟淇℃伅
 
                     var taskNo = new Common().GetMaxNo("TK");
@@ -804,7 +1043,7 @@
                         {
                             //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
                             new TaskServer().EditTaskIssueOk(list2, time1, time2);
-                                str += "涓嬪彂鎴愬姛";
+                            str += "涓嬪彂鎴愬姛";
                         }
                         if (wcsModel.StatusCode == -1)
                         {
@@ -820,7 +1059,7 @@
                 }
 
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "绌烘墭鍑哄簱", i+"", "涓嬪彂", $"鐢≒DA涓嬪彂浜� {i} 涓┖鎵樺灈", userId);
+                var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "绌烘墭鍑哄簱", i + "", "涓嬪彂", $"鐢≒DA涓嬪彂浜� {i} 涓┖鎵樺灈", userId);
                 Db.CommitTran();
 
                 return "";
@@ -893,7 +1132,7 @@
                     throw new Exception("搴撳瓨淇℃伅涓笉瀛樺湪璇ユ墭鐩樹俊鎭紝璇锋鏌�!");
                 }
 
-                if (result.WareHouseNo!="W02")//W02锛氶浂绠卞簱
+                if (result.WareHouseNo != "W02")//W02锛氶浂绠卞簱
                 {
                     throw new Exception("璇ユ墭鐩樻湭鍦ㄩ浂绠卞簱锛岃妫�鏌�!");
                 }
@@ -901,7 +1140,7 @@
                 #endregion
 
                 //鑾峰彇搴撳瓨鏄庣粏淇℃伅
-                var stockDetail = Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" &&  s.PalletNo == palletNo).ToList();
+                var stockDetail = Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.PalletNo == palletNo).ToList();
                 //楠岃瘉搴撳瓨鏄庣粏淇℃伅鏄惁瀛樺湪
                 if (stockDetail == null)
                 {
@@ -990,6 +1229,6 @@
             }
         }
 
-        
+
     }
 }

--
Gitblit v1.8.0