From 06bc1ebcdbc217a7f53be2926ee4c25eb2990903 Mon Sep 17 00:00:00 2001
From: zhaowc <526854230@qq.com>
Date: 星期四, 29 八月 2024 09:07:25 +0800
Subject: [PATCH] 修改组托收货箱码关联,和平库出库单页面

---
 Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs |  162 ++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 133 insertions(+), 29 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index 7c124fd..35a07f3 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -1888,16 +1888,17 @@
                                         BoxNo, 
                                         SkuNo,
                                         SkuName, 
-                                        LotNo, 
+                                        LotNo,
+                                        BitBoxMark,
                                         SUM(Qty) as Qty 
                                       FROM BllBoxInfo 
                                       WHERE IsDel = '0' 
                                         AND Status='0'  
                                         AND BoxNo = '{model.BoxNo}'
-                                      GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo; ";
+                                      GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
                 var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);
 
-                if (models == null)
+                if (models.Count == 0 )
                 {
                     throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!");
                 }
@@ -1909,6 +1910,55 @@
                 throw ex;
             }
         }
+
+        /// <summary>
+        /// 鏍规嵁绠辩爜鍚戣拷婧郴缁熻姹傛爣绛剧鐮佷俊鎭�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        public List<BoxInfoDto> GetFMBindBoxInfos(string boxno)
+        {
+            try
+            {
+                #region 绠辩爜璇锋眰鎺ュ彛锛屾寮忕郴缁熸斁寮�
+                /*var jsonData = JsonConvert.SerializeObject(boxno);
+
+                var response = HttpHelper.DoPost(url, jsonData, "绠辩爜淇℃伅璇锋眰", "FM");
+
+                var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁
+                if (obj.Success != 0)
+                {
+                    throw new Exception("璇锋眰澶辫触" + obj.Message);
+                }*/
+                #endregion
+                string sqlString = $@"SELECT 
+                                        ASNNo,
+                                        BoxNo, 
+                                        SkuNo,
+                                        SkuName, 
+                                        LotNo,
+                                        BitBoxMark,
+                                        SUM(Qty) as Qty 
+                                      FROM BllBoxInfo 
+                                      WHERE IsDel = '0' 
+                                        AND Status='0'  
+                                        AND BoxNo = '{boxno}'
+                                      GROUP BY ASNNo,BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; ";
+                var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString);  // response
+
+                if (models.Count == 0)
+                {
+                    throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!");
+                }
+
+                return models;
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+        }
+
         // 鏍规嵁鍗曟嵁鍙疯幏鍙栧崟鎹槑缁嗗垪琛�
         public List<ArrivalNoticeDetailDto> GetBindArrivalNoticeDetails(ArrivalNoticeVm model)
         {
@@ -3527,12 +3577,12 @@
                     boxInfoList.AddRange(list);
                     msgStr += $"灏剧鍙蜂负{model.TailBoxNo}";
                 }
+                //缁戝畾绠辨�绘暟閲�
+                //model.SkuQty = boxInfoList.Sum(s => s.Qty);
                 //鍜岄�夋嫨鐨勬壒娆″悓鎵规鐨勭鐮佷俊鎭�
-                var sameBoxInfoList = boxInfoList.Where(w => w.LotNo == model.LotNo).ToList();
+                var sameBoxInfoList = boxInfoList.Where(w => w.LotNo == model.LotNo && w.Status == "0").ToList();
                 //鍜岄�夋嫨鐨勬壒娆′笉鍚屾壒娆$殑绠辩爜淇℃伅锛堟嫾绠辨壒娆★級
                 var notBoxInfoList = boxInfoList.Where(w => w.LotNo != model.LotNo).ToList();
-                //鎷肩鏁伴噺(鍜岄�夋嫨鐨勬壒娆′笉鍚屾壒娆$殑绠辩爜鏁伴噺)
-                decimal pinBoxQty = notBoxInfoList.Sum(s => s.Qty);
                 #endregion
 
                 if (sameBoxInfoList.Count <= 0)
@@ -3553,7 +3603,7 @@
                             PalletNo = model.PalletNo,
                             PalletNo2 = "",
                             PalletNo3 = "",
-                            Qty = model.SkuQty - pinBoxQty,//涓嶅寘鍚嫾绠变腑闈炲悓鎵规鏁伴噺
+                            Qty = model.SkuQty,//涓嶅寘鍚嫾绠变腑闈炲悓鎵规鏁伴噺
                             FullQty = pNum,
                             Status = "2",//鍏ュ簱瀹屾垚
                             Type = "0",
@@ -3576,10 +3626,10 @@
                         bindId = bind.Id;
                         bind.Qty += model.SkuQty;
                     }
-                    if (bind.Qty < 0)
+                    /*if (bind.Qty < 0)
                     {
                         throw new Exception("缁勭洏鏁伴噺涓嶈兘灏忎簬0");
-                    }
+                    }*/
                     #endregion
 
                     #region 搴撳瓨鏄庣粏鍜岃川妫�淇℃伅
@@ -3917,6 +3967,8 @@
                     }
                     var pinBoxNo = notBoxInfoList[0].BoxNo;//鎷肩绠辩爜
                     var pinBoxLotNo = notBoxInfoList[0].LotNo;//鎷肩鎵规鍙�
+                    //鎷肩鏁伴噺(鍜岄�夋嫨鐨勬壒娆′笉鍚屾壒娆$殑绠辩爜鏁伴噺)
+                    decimal pinBoxQty = notBoxInfoList.Sum(s => s.Qty);
 
                     var dataBoxList = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.BoxNo == pinBoxNo && w.LotNo == pinBoxLotNo).ToList();
                     if (dataBoxList.Count > 0)//宸叉湁搴撳瓨
@@ -3925,6 +3977,8 @@
                         var oldPalletBind = Db.Queryable<BllPalletBind>().First(w => w.Id == notBoxInfoList[0].BindNo);
                         //鍘熷叆搴撳崟鏄庣粏
                         var oldAsnDetail = Db.Queryable<BllArrivalNoticeDetail>().First(w => w.Id == oldPalletBind.ASNDetailNo);
+                        //鍘熷叆搴撳崟
+                        var oldAsnNotice = Db.Queryable<BllArrivalNotice>().First(w => w.ASNNo == oldAsnDetail.ASNNo);
                         #region 鎵樼洏缁戝畾淇℃伅
                         var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == oldAsnDetail.Id && m.PalletNo == model.PalletNo);
                         var bindId = 0;
@@ -3937,7 +3991,7 @@
                                 PalletNo = model.PalletNo,
                                 PalletNo2 = "",
                                 PalletNo3 = "",
-                                Qty = pinBoxQty,
+                                Qty = 0,
                                 FullQty = pNum,
                                 Status = "2",//鍏ュ簱瀹屾垚
                                 Type = "0",
@@ -3967,7 +4021,7 @@
                         // 鎻掑叆搴撳瓨鏄庣粏鏁版嵁
                         var sd1 = new DataStockDetail()
                         {
-                            LotNo = pinBoxNo,
+                            LotNo = pinBoxLotNo,
                             LotText = notBoxInfoList[0].LotText,
                             SupplierLot = notBoxInfoList[0].SupplierLot,
                             SkuNo = sku.SkuNo,
@@ -3983,9 +4037,9 @@
                             RoadwayNo = "",//鎵�灞炲贩閬�
                             AreaNo = "",//鎵�灞炲尯鍩�
                             LocatNo = "",//鍌ㄤ綅鍦板潃
-                            PalletNo = oldPalletBind.PalletNo,
-                            PalletNo2 = oldPalletBind.PalletNo2,
-                            PalletNo3 = oldPalletBind.PalletNo3,
+                            PalletNo = bind.PalletNo,
+                            PalletNo2 = bind.PalletNo2,
+                            PalletNo3 = bind.PalletNo3,
                             PalletTags = "0",
                             CompleteTime = comTime,
                             ProductionTime = oldPalletBind.ProductionTime,
@@ -4002,6 +4056,17 @@
                             CreateUser = 0,
                             CreateTime = comTime
                         };
+                        //缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭�
+                        if (oldAsnNotice.Type == "0" || oldAsnNotice.Type == "2" || oldAsnNotice.Type == "4" || oldAsnNotice.Type == "6" || oldAsnNotice.Type == "7")//0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱
+                        {
+                            sd1.OwnerNo = oldAsnNotice.CustomerNo;//璐т富缂栫爜
+                            sd1.OwnerName = oldAsnNotice.CustomerName;//璐т富鍚嶇О
+                        }
+                        else if (oldAsnNotice.Type == "1" || oldAsnNotice.Type == "5")//1:閲囪喘鍏ュ簱,2:鍏跺畠鍏ュ簱
+                        {
+                            sd1.SupplierNo = oldAsnNotice.CustomerNo;//渚涘簲鍟嗙紪鐮�
+                            sd1.SupplierName = oldAsnNotice.CustomerName;//渚涘簲鍟嗗悕绉�
+                        }
                         //娣诲姞搴撳瓨鏄庣粏
                         var sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity();
                         foreach (var item in dataBoxList)
@@ -4029,7 +4094,7 @@
                         string sql = $@"SELECT detail.* FROM BllArrivalNoticeDetail as detail
                                         JOIN BllArrivalNotice as notice ON detail.ASNNo=notice.ASNNo
                                         WHERE notice.IsDel='0'
-                                        AND notice.Status='1'
+                                        AND ( notice.Status=0 or notice.Status=1 )
                                         AND detail.IsDel='0' 
                                         AND detail.LotNo='{pinBoxLotNo}' 
                                         AND detail.SkuNo='{sku.SkuNo}'
@@ -4041,7 +4106,7 @@
                             throw new Exception("鎷肩鍐呯墿鏂欐墍灞炲叆搴撳崟鏄庣粏涓嶅瓨鍦�!");
                         }
                         //鎵惧埌鎷肩鍐呭叾浠栨壒娆℃墍灞炲叆搴撳崟
-                        var arrNotice = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.ASNNo == arrDetail.ASNNo && w.Status == "1");
+                        var arrNotice = Db.Queryable<BllArrivalNotice>().First(w => w.IsDel == "0" && w.ASNNo == arrDetail.ASNNo);
                         if (arrNotice == null)
                         {
                             throw new Exception("鎷肩鍐呯墿鏂欐墍灞炲叆搴撳崟涓嶅瓨鍦�!");
@@ -4058,7 +4123,7 @@
                                 PalletNo = model.PalletNo,
                                 PalletNo2 = "",
                                 PalletNo3 = "",
-                                Qty = pinBoxQty,
+                                Qty = 0,
                                 FullQty = pNum,
                                 Status = "2",//鍏ュ簱瀹屾垚
                                 Type = "0",
@@ -4079,9 +4144,6 @@
                         else
                         {
                             bindId = bind.Id;
-                            bind.Qty += pinBoxQty;
-
-                            Db.Updateable(bind).ExecuteCommand();
                         }
                         #endregion
 
@@ -4110,7 +4172,7 @@
                         {
                             sdId1 = sd1.Id;
                             // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁
-                            sd1.Qty = pinBoxQty;
+                            sd1.Qty = bind.Qty;
                             sd1.CompleteTime = comTime;
                             sd1.UpdateUser = userId;
                             sd1.UpdateTime = comTime;
@@ -4128,7 +4190,7 @@
                                 SkuNo = sku.SkuNo,
                                 SkuName = sku.SkuName,
                                 Standard = sku.Standard,
-                                Qty = pinBoxQty,
+                                Qty = bind.Qty,
                                 LockQty = 0,
                                 FrozenQty = 0,
                                 InspectQty = 0,
@@ -4149,7 +4211,7 @@
                                 InspectMark = bind.InspectMark,
                                 InspectStatus = sku.IsInspect,
                                 BitPalletMark = bind.BitPalletMark,
-                                PackagNo = detail.PackagNo,                    //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮�       
+                                PackagNo = arrDetail.PackagNo,                    //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮�       
                                 IsBale = bind.IsBale,
                                 IsBelt = bind.IsBelt,
 
@@ -4208,7 +4270,7 @@
                                     continue;
                                 }
                                 //绠卞唴鐗╂枡鎵规涓庡崟鎹槑缁嗕笉绗﹀悎
-                                if (box.SkuNo != detail.SkuNo || box.LotNo != model.LotNo)
+                                if (box.SkuNo != arrDetail.SkuNo || box.LotNo != arrDetail.LotNo)
                                 {
                                     throw new Exception($"-1:{box.BoxNo}绠卞唴鐗╂枡鍙婃壒娆′笌鍗曟嵁涓嶄竴鑷达紝璇锋牳瀹�!");
                                 }
@@ -4309,7 +4371,7 @@
                             arrDetail.IsSampling = "1";
                         }
                         arrDetail.Status = "1";//0锛氱瓑寰呮墽琛� 1锛氭鍦ㄦ墽琛� 2锛氭墽琛屽畬鎴�
-                        if (arrDetail.CompleteQty >= detail.Qty)
+                        if (arrDetail.CompleteQty >= arrDetail.Qty)
                         {
                             arrDetail.Status = "2";
                             arrDetail.CompleteTime = comTime;
@@ -5141,7 +5203,7 @@
                         SendDate = serverTime,  //鍙戦�佹椂闂�
                         BackDate = serverTime,  //杩斿洖鏃堕棿
                         StartLocat = "",//璧峰浣嶇疆
-                        EndLocat = "鍔涜骞冲簱",//鐩爣浣嶇疆
+                        EndLocat = "骞冲簱",//鐩爣浣嶇疆
                         PalletNo = bindInfo.PalletNo,//鎵樼洏鐮�
                         IsSend = 0,//鏄惁鍙啀娆′笅鍙�
                         IsCancel = 0,//鏄惁鍙彇娑�
@@ -5149,7 +5211,7 @@
                         Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
                         Status = "2",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
                         OrderType = "0",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
-                        Msg = "鍔涜骞冲簱鐨勫叆搴撲换鍔�",
+                        Msg = "骞冲簱鐨勫叆搴撲换鍔�",
                     };
                     Db.Insertable(exTask).ExecuteCommand();
 
@@ -5163,6 +5225,27 @@
                     bindInfo.TaskNo = taskNo; //浠诲姟鍙�
                     Db.Updateable(bindInfo).ExecuteCommand();
                     #endregion
+
+                   /* #region 娣诲姞鎵樼洏涓婃灦璁板綍
+                    var upShelf = new BllPalletUpShelf()
+                    {
+                        TaskNo = exTask.TaskNo,
+                        TraceNo = bindInfo.ASNNo,
+                        PalletNo = bindInfo.PalletNo,
+                        SkuNo = stockModel.SkuNo,
+                        SkuName = stockModel.SkuName,
+                        LotNo = stockModel.LotNo,
+                        Status = "1",
+
+                        WareHouseNo = bindInfo.WareHouseNo,
+                        RoadwayNo = bindInfo.RoadwayNo,
+                        AreaNo = "",
+                        LocatNo = "",
+
+                        CreateUser = 0,
+                    };
+                    Db.Insertable(upShelf).ExecuteCommand();
+                    #endregion*/
 
                     #region 搴撳瓨绠辨敮鏄庣粏琛�
                     // 鎻掑叆鏂扮粍鐨勭鏀俊鎭�
@@ -5259,7 +5342,7 @@
                         SendDate = DateTime.Now,  //鍙戦�佹椂闂�
                         BackDate = DateTime.Now,  //杩斿洖鏃堕棿
                         StartLocat = "",//璧峰浣嶇疆
-                        EndLocat = "鐗у師骞冲簱",//鐩爣浣嶇疆
+                        EndLocat = "骞冲簱",//鐩爣浣嶇疆
                         PalletNo = model.PalletNo,//鎵樼洏鐮�
                         IsSend = 0,//鏄惁鍙啀娆′笅鍙�
                         IsCancel = 0,//鏄惁鍙彇娑�
@@ -5267,7 +5350,7 @@
                         Type = "0",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
                         Status = "2",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
                         OrderType = "3",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
-                        Msg = "鐗у師骞冲簱鐨勫叆搴撲换鍔�",
+                        Msg = "骞冲簱鐨勫叆搴撲换鍔�",
                     };
                     Db.Insertable(exTask).ExecuteCommand();
                     //鎵樼洏缁戝畾淇℃伅
@@ -5283,6 +5366,27 @@
                         Db.Updateable(bindInfo).ExecuteCommand();
                     }
                     #endregion
+
+                    #region 娣诲姞鎵樼洏涓婃灦璁板綍
+                    var palletupinfo = stockDetail.First();
+                    var upShelf = new BllPalletUpShelf()
+                    {
+                        TaskNo = exTask.TaskNo,
+                        TraceNo = bindInfo.ASNNo,
+                        PalletNo = bindInfo.PalletNo,
+                        SkuNo = palletupinfo.SkuNo,
+                        SkuName = palletupinfo.SkuName,
+                        LotNo = palletupinfo.LotNo,
+                        Status = "2",
+                        LocatNo = model.LocatNo,
+                        WareHouseNo = bindInfo.WareHouseNo,
+                        RoadwayNo = bindInfo.RoadwayNo,
+                        AreaNo = storageLocat.AreaNo,
+
+                        CreateUser = 0,
+                    };
+                    Db.Insertable(upShelf).ExecuteCommand();
+                    #endregion
                 }
                 storageLocat.Status = "1";//鐘舵�佸凡浣跨敤
                 storageLocat.UpdateTime = serverTime; //淇敼鏃堕棿

--
Gitblit v1.8.0