From b2fc93e15a14847141b0a0a8bd591b945c9fa0a3 Mon Sep 17 00:00:00 2001
From: test <15284381150@163.com>
Date: 星期四, 21 八月 2025 18:44:34 +0800
Subject: [PATCH] 添加赋码实体类和修改箱码方法,改正拣货拼托

---
 Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs |  390 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 352 insertions(+), 38 deletions(-)

diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
index 3b6b5d6..657aebb 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs
@@ -29,6 +29,8 @@
 using Model.ModelVm.SysVm;
 using System.Security.Cryptography.X509Certificates;
 using AutoMapper.Configuration.Annotations;
+using Utility;
+using System.Diagnostics.Metrics;
 
 namespace WMS.BLL.BllPdaServer
 {
@@ -77,14 +79,15 @@
                 else
                 {
                     //浠庣墿鏂欏悕绉�-鎵规涓彇鍑烘壒娆�
-                    int indexOfDash = model.LotNo.IndexOf("-");
+                    int indexOfDash = model.LotNo.IndexOf("=>");
                     if (indexOfDash != -1)
                     {
-                        model.LotNo = model.LotNo.Substring(indexOfDash + 1);
+                        model.LotNo = model.LotNo.Substring(indexOfDash + 2);
                     }
                     else
                     {
-                        throw new Exception("鐗╂枡-鎵规涓嶅彲涓虹┖!");
+                        model.LotNo = "";
+                        //throw new Exception("鐗╂枡-鎵规涓嶅彲涓虹┖!");
                     }
                 }
 
@@ -109,7 +112,15 @@
                     throw new Exception("鏈煡璇㈠埌鎵樼洏淇℃伅锛岃鏍稿疄锛�");
                 }
                 //楠岃瘉鍏ュ簱鍗曟槑缁嗘槸鍚﹀瓨鍦�
-                var detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && m.LotNo.Contains(model.LotNo));
+                var detail = new BllArrivalNoticeDetail();
+                if (string.IsNullOrEmpty(model.LotNo))
+                {
+                    detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo);
+                }
+                else
+                {
+                    detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailId && m.ASNNo == model.AsnNo && m.LotNo.Contains(model.LotNo));
+                }
                 if (detail == null)
                 {
                     throw new Exception("褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!");
@@ -131,13 +142,20 @@
                 #region 鍖呰 
 
                 var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo);
-                var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo);
-
+                if (sku == null)
+                {
+                    throw new Exception("褰撳墠鐗╂枡淇℃伅涓嶅瓨鍦紝璇锋牳瀹�!");
+                }                
+                var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo);
+                if (pack == null)
+                {
+                    throw new Exception("褰撳墠鐗╂枡鍖呰淇℃伅涓嶅瓨鍦紝璇锋牳瀹�!");
+                }
                 var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 
                 var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 
 
                 //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
-                new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum);
+                new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
 
                 #endregion
 
@@ -186,9 +204,9 @@
                 //缁戝畾绠辨�绘暟閲�
                 //model.SkuQty = boxInfoList.Sum(s => s.Qty);
                 //鍜岄�夋嫨鐨勬壒娆″悓鎵规鐨勭鐮佷俊鎭�
-                var sameBoxInfoList = boxInfoList.Where(w => w.LotNo == model.LotNo && w.Status == "0").ToList();
+                var sameBoxInfoList = boxInfoList.Where(w => (w.LotNo ?? "") == model.LotNo && w.Status == "0").ToList();
                 //鍜岄�夋嫨鐨勬壒娆′笉鍚屾壒娆$殑绠辩爜淇℃伅锛堟嫾绠辨壒娆★級
-                var notBoxInfoList = boxInfoList.Where(w => w.LotNo != model.LotNo).ToList();
+                var notBoxInfoList = boxInfoList.Where(w => (w.LotNo ?? "") != model.LotNo).ToList();
                 #endregion
 
                 if (sameBoxInfoList.Count <= 0)
@@ -299,7 +317,7 @@
                             InspectMark = bind.InspectMark,
                             InspectStatus = sku.IsInspect,
                             BitPalletMark = bind.BitPalletMark,
-                            PackagNo = detail.PackagNo,                    //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮�       
+                            PackagNo = sku.PackagNo,                    
                             IsBale = bind.IsBale,
                             IsBelt = bind.IsBelt,
 
@@ -358,7 +376,7 @@
                                 continue;
                             }
                             //绠卞唴鐗╂枡鎵规涓庡崟鎹槑缁嗕笉绗﹀悎
-                            if (box.SkuNo != detail.SkuNo || box.LotNo != model.LotNo)
+                            if (box.SkuNo != detail.SkuNo || (box.LotNo ?? "") != model.LotNo)
                             {
                                 throw new Exception($"-1:{box.BoxNo}绠卞唴鐗╂枡鍙婃壒娆′笌鍗曟嵁涓嶄竴鑷达紝璇锋牳瀹�!");
                             }
@@ -531,7 +549,7 @@
                     #endregion
 
                     #region 璐ㄦ璇烽獙
-                    if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1")
+                    if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1")
                     {
                         var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot);
                         if (qualityRequest == null)
@@ -1047,7 +1065,7 @@
                         #endregion
 
                         #region 璐ㄦ璇烽獙
-                        if ((arrNotice.Type == "1" || arrNotice.Type == "4" || arrNotice.Type == "5") && sku.IsInspect != "1")
+                        if ((arrNotice.Type == "1" || arrNotice.Type == "4" || arrNotice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1")
                         {
                             var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot);
                             if (qualityRequest == null)
@@ -1136,14 +1154,15 @@
                 else
                 {
                     //浠庣墿鏂欏悕绉�-鎵规涓彇鍑烘壒娆�
-                    int indexOfDash = model.LotNo.IndexOf("-");
+                    int indexOfDash = model.LotNo.IndexOf("=>");
                     if (indexOfDash != -1)
                     {
-                        model.LotNo = model.LotNo.Substring(indexOfDash + 1);
+                        model.LotNo = model.LotNo.Substring(indexOfDash + 2);
                     }
                     else
                     {
-                        throw new Exception("鐗╂枡鎵规涓嶅彲涓虹┖!");
+                        model.LotNo = "";
+                        //throw new Exception("鐗╂枡鎵规涓嶅彲涓虹┖!");
                     }
                 }
 
@@ -1161,7 +1180,7 @@
                 }
                 //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱澶�
                 var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo);
-                if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo))
+                if (stockDetail != null && !string.IsNullOrEmpty(stockDetail.WareHouseNo) && stockDetail.WareHouseNo != "W04")
                 {
                     throw new Exception("璇ユ墭鐩樺凡鏈夊偍浣嶄俊鎭紝璇锋牳瀹烇紒");
                 }
@@ -1175,12 +1194,20 @@
                 #region 鍖呰
 
                 var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo);
-                //var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo);    // liudl 鐢盨ku鍖呰缂栧彿鍙樻洿涓哄叆搴撳崟鏄庣粏鍖呰缂栧彿
+                if (sku == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ョ墿鏂欎俊鎭紝璇锋牳瀹烇紒");
+                }
+                var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo);
+                if (pack == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ョ墿鏂欏寘瑁呬俊鎭紝璇锋牳瀹烇紒");
+                }
 
                 var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 
                 var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 
                 //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺
-                new Common().GetPackQtyInfo(detail.PackagNo, ref pNum, ref bNum);
+                new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
                  
 
                 #endregion
@@ -1337,7 +1364,7 @@
                         InspectMark = bind.InspectMark,
                         InspectStatus = inspectStatusStr,
                         BitPalletMark = bind.BitPalletMark,
-                        PackagNo = detail.PackagNo,                    //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮�       
+                        PackagNo = sku.PackagNo,                    //liudl 鐢眘ku鐨勫寘瑁呯紪鍙峰彉涓哄叆搴撳崟鏄庣粏鐨勫寘瑁呯紪鐮�       
                         IsBale = bind.IsBale,
                         IsBelt = bind.IsBelt,
 
@@ -1345,6 +1372,13 @@
                         CreateUser = 0,
                         CreateTime = comTime
                     };
+                    if (stockDetail != null)
+                    {
+                        sd1.WareHouseNo = stockDetail.WareHouseNo;
+                        sd1.AreaNo = stockDetail.AreaNo;
+                        sd1.RoadwayNo = stockDetail.RoadwayNo;
+                        sd1.LocatNo = stockDetail.LocatNo;
+                    }
 
                     //缁存姢搴撳瓨鏄庣粏璐т富/渚涘簲鍟嗕俊鎭� //0:鎴愬搧鍏ュ簱锛�2:涓棿鍝佸叆搴�,4:杞﹂棿浣欐枡鍏ュ簱,6:浠e偍鍏ュ簱,7:瀵勫瓨鍏ュ簱
                     if (notice.Type == "0" || notice.Type == "2" || notice.Type == "4" || notice.Type == "6" || notice.Type == "7")
@@ -1497,7 +1531,7 @@
                 #endregion
 
                 #region 璐ㄦ璇烽獙
-                if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1")
+                if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1")
                 {
                     var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot);
                     if (qualityRequest == null)
@@ -2048,7 +2082,7 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url)
+        /*public List<BoxInfoDto> GetFMBindBoxInfos(string boxno,string url)
         {
             try
             {
@@ -2151,6 +2185,132 @@
             {
                 throw ex;
             }
+        }*/
+
+        public List<BoxInfoDto> GetFMBindBoxInfos(string boxno, string url)
+        {
+            try
+            {
+                #region 绠辩爜璇锋眰鎺ュ彛锛屾寮忕郴缁熸斁寮�
+                var data = new
+                {
+                    BoxNo = boxno
+                };
+                var jsonData = JsonConvert.SerializeObject(data);
+
+                var response = HttpHelper.DoPost(url, jsonData, "绠辩爜淇℃伅璇锋眰", "FM");
+
+                var obj = JsonConvert.DeserializeObject<FuMaPostModel>(response);//瑙f瀽杩斿洖鏁版嵁
+                if (obj.Success != true)
+                {
+                    throw new Exception("璇锋眰澶辫触" + obj.Message);
+                }
+                #endregion
+                
+                if (string.IsNullOrEmpty(obj.Data.SkuNo))
+                {
+                    //娴嬭瘯鐢紝鍙戝竷姝e紡鍓嶅垹闄ゆ娈典唬鐮�
+                    //obj.Data.SkuNo = "50004632";
+                    throw new Exception($"鐗╂枡缂栫爜涓嶈兘涓虹┖");
+                }
+
+                //鏌ユ壘鐗╂枡淇℃伅
+                var sku = Db.Queryable<SysMaterials>().First(m => m.SkuNo == obj.Data.SkuNo);
+                if (sku == null)
+                {
+                    throw new Exception($"鏈煡璇㈠埌鐗╂枡{obj.Data.SkuNo}淇℃伅");
+                }
+
+                var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 
+                var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 
+                //鑾峰彇鍖呰淇℃伅
+                new Common().GetPackQtyInfo(sku.PackagNo, ref pNum, ref bNum);
+                if (pNum == 0 || bNum == 0)
+                {
+                    throw new Exception($"{sku.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒");
+                }
+
+                var boxList = new List<BllBoxInfo>();
+                var comTime = DateTime.Now;
+                //娣诲姞绠辩爜淇℃伅
+                foreach (var box in obj.Data.DetailList)
+                {
+                    foreach (var box2 in box.DetailList2)
+                    {
+                        var boxInfo = new BllBoxInfo()
+                        {
+                            BoxNo = obj.Data.BoxNo,
+                            BoxNo2 = box.BoxNo2,
+                            BoxNo3 = box2.BoxNo3,
+                            Qty = obj.Data.Qty,
+                            BitBoxMark = obj.Data.BitBoxMark,
+
+                            ASNNo = "",
+                            //ASNDetailNo = noticeDetail.Id,
+                            OrderCode = "",//notice.OrderCode
+                                           //BindNo = bindId,
+                                           //PalletNo = model.PallNo,
+                            FullQty = bNum,
+                            Status = "0",
+                            SkuNo = sku.SkuNo,
+                            SkuName = sku.SkuName,
+                            LotNo = box2.LotNo,
+                            LotText = obj.Data.LotNoBoxNum,
+                            ProductionTime = DateTime.Parse(box2.ProductionTime),
+                            ExpirationTime = DateTime.Parse(box2.ExpirationTime),
+                            //CompleteTime = "",
+                            InspectMark = "0",
+                            InspectStatus = "0",
+                            Origin = "璧嬬爜",
+                            CreateTime = comTime,
+                            CreateUser = 0
+                        };
+                        boxList.Add(boxInfo);
+                    };
+                }
+                try
+                {
+                    //寮�鍚簨鍔�
+                    Db.BeginTran();
+
+                    Db.Fastest<BllBoxInfo>().BulkCopy(boxList);
+
+                    //鎻愪氦浜嬪姟
+                    Db.CommitTran();
+                }
+                catch (Exception ex)
+                {
+                    //鍥炴粴浜嬪姟
+                    Db.RollbackTran();
+                    throw new Exception("鎻掑叆绠辩爜澶辫触锛�" + ex.Message);
+                }
+                
+                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); 
+
+                if (models.Count == 0)
+                {
+                    throw new Exception("绠辩爜淇℃伅涓嶅瓨鍦�!");
+                }
+                return models;
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
         }
 
         /// <summary>
@@ -2231,12 +2391,12 @@
                     .Select(m=>new { m.ProductionTime ,m.ExpirationTime}).OrderBy(m=>m.ProductionTime).ToList();//&& m.Status == "0"
                 foreach (var item in models)
                 {
-                    var boxNoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.ProductionTime == item.ProductionTime).Select(m => m.BoxNo).ToList();
+                    var boxNoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.Status == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.ProductionTime == item.ProductionTime).Select(m => m.BoxNo).ToList();
                     if (boxNoList.Count > 0)
                     {
                         data.BoxNoList = boxNoList;
-                        data.Date1 = item.ProductionTime.ToString();
-                        data.Date2 = item.ExpirationTime.ToString();
+                        data.Date1 = item.ProductionTime == null ? "" : Convert.ToDateTime(item.ProductionTime).ToString("yyyy-MM-dd");
+                        data.Date2 = item.ExpirationTime == null ? "" : Convert.ToDateTime(item.ExpirationTime).ToString("yyyy-MM-dd");
 
                         break;
                     }
@@ -2450,7 +2610,7 @@
             }
         }
 
-
+        // 杞﹂棿缁戝畾鎵樼洏-璐存爣
         public void ChejianIn(string palletNo,string boxNo,decimal qty,string areaNo,int userId)
         {
             try
@@ -2641,6 +2801,22 @@
                         //娣诲姞搴撳瓨绠辩爜鏄庣粏
                         Db.Insertable(box2).ExecuteCommand();
                         #endregion
+
+                        #region  鎻掑叆杞﹂棿鍑哄叆搴撹褰曡〃
+                        //鎻掑叆鍏ュ簱鏃ュ織
+                        var _log = new LogWorkShop
+                        {
+                            Type = "0",//绫诲瀷锛�0锛氬叆搴� 1锛氬嚭搴�
+                            PalletNo = palletNo,
+                            BoxNo=box.BoxNo,
+                            LotNo=box.LotNo,
+                            SkuNo=box.SkuNo,
+                            SkuName=box.SkuName,
+                            Qty=box.Qty
+                        };
+                        //娣诲姞搴撳瓨绠辩爜鏄庣粏
+                        Db.Insertable(_log).ExecuteCommand();
+                        #endregion
                     }
                     if (boxFullQty > bNum)
                     {
@@ -2649,7 +2825,6 @@
                 }
                 //鏇存敼绠辨敮鍏崇郴琛ㄤ俊鎭�
                 Db.Updateable(boxInfoList).ExecuteCommand();
-
 
                 #region 搴撳瓨
                 var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == boxInfoOne.LotNo);
@@ -2679,11 +2854,12 @@
                 }
                 #endregion
 
+                
                 // 鏇存敼鎵樼洏浣跨敤鐘舵��
                 var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';";
                 ////娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹�
                 //sqlStr += $"insert into LogPalletTrack values('{palletNo}','{boxNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);";
-                //Db.Ado.ExecuteCommand(sqlStr);
+                Db.Ado.ExecuteCommand(sqlStr);
                 new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "杞﹂棿鍏ュ簱", boxNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{palletNo}銆亄msgStr}鐨勫叆搴撲俊鎭�", userId);
 
                 //鎻愪氦浜嬪姟
@@ -2749,8 +2925,6 @@
                 new Common().GetPackQtyInfo(pack.PackagNo, ref pNum, ref bNum);
 
                 #endregion
-
-                 
 
                 #region 搴撳瓨鏄庣粏
 
@@ -2825,7 +2999,6 @@
                 // 鏇存敼绠辨敮鍏崇郴琛�
                 decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲�
 
-
                 #region 搴撳瓨
                 var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == skuInfo.SkuNo && m.LotNo == lotNo);
                 if (dataStock != null)
@@ -2854,6 +3027,21 @@
                 }
                 #endregion
 
+                #region
+                //鎻掑叆鍏ュ簱鏃ュ織
+                var _log = new LogWorkShop
+                {
+                    Type = "0",//绫诲瀷锛�0锛氬叆搴� 1锛氬嚭搴�
+                    PalletNo = palletNo,
+                    BoxNo = "",
+                    LotNo = lotNo,
+                    SkuNo = sd1.SkuNo,
+                    SkuName = sd1.SkuName,
+                    Qty = qty
+                };
+                //娣诲姞搴撳瓨绠辩爜鏄庣粏
+                Db.Insertable(_log).ExecuteCommand();
+                #endregion
                 // 鏇存敼鎵樼洏浣跨敤鐘舵��
                 var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';";
                 ////娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹�
@@ -4256,10 +4444,18 @@
             try
             {
                 string strMsg = "";
-                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == locatNo && w.Status == "0" && w.WareHouseNo == "W04");
+                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == locatNo && w.WareHouseNo == "W04");
                 if (storageLocat == null)
                 {
-                    throw new Exception("-1:鍦扮爜(鍌ㄤ綅淇℃伅)涓嶅瓨鍦ㄦ垨闈炵┖闂茬姸鎬侊紝璇锋牳鏌�!");
+                    throw new Exception("-1:鍦扮爜(鍌ㄤ綅淇℃伅)涓嶅瓨鍦紝璇锋牳鏌�!");
+                }
+                if (storageLocat.Status != "0")
+                {
+                    var detailInfo = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == storageLocat.LocatNo);
+                    if (detailInfo != null)
+                    {
+                        throw new Exception("-1:鍦扮爜(鍌ㄤ綅淇℃伅)闈炵┖闂诧紝璇锋牳鏌�!");
+                    }
                 }
 
                 return strMsg;
@@ -5964,7 +6160,7 @@
                 #endregion
 
                 #region 璐ㄦ璇烽獙
-                if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1")
+                if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1"  && sku.IsControlled != "1")
                 {
                     var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot);
                     if (qualityRequest == null)
@@ -6043,9 +6239,12 @@
                 {
                     foreach (var item in stockDetail)
                     {
-                        if (!string.IsNullOrEmpty(item.WareHouseNo))
+                        if (!string.IsNullOrEmpty(item.WareHouseNo) && !string.IsNullOrEmpty(item.AreaNo))
                         {
-                            throw new Exception("璇ユ墭鐩樻湭鍦ㄥ簱澶栵紝璇锋牳鏌�!");
+                            if (item.AreaNo != "B06" && item.AreaNo != "B07" && item.AreaNo != "B09") 
+                            {
+                                throw new Exception("璇ユ墭鐩樻湭鍦ㄥ簱澶栵紝璇锋牳鏌�!");
+                            }
                         }
                     }
                     iscount = 1; //鍥炴祦鍏ュ簱
@@ -6053,10 +6252,18 @@
                 #endregion
 
                 #region 鍦扮爜淇℃伅(鍌ㄤ綅淇℃伅)
-                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo && w.Status == "0");
+                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == model.LocatNo);
                 if (storageLocat == null)
                 {
-                    throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨鍦ㄦ垨闈炵┖闂茬姸鎬侊紝璇锋牳鏌�!");
+                    throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨锛岃鏍告煡!");
+                }
+                if (storageLocat.Status != "0")
+                { 
+                    var detailInfo=Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.LocatNo == storageLocat.LocatNo);
+                    if (detailInfo != null)
+                    {
+                        throw new Exception("鍌ㄤ綅涓嶆槸绌洪棽鐘舵�侊紝璇锋牳鏌�!");
+                    }
                 }
                 #endregion
 
@@ -6482,6 +6689,113 @@
         }
         #endregion
 
+        #region 浠撳簱鏀惰揣
+        /// <summary>
+        /// 浠撳簱纭鏀惰揣
+        /// </summary>
+        /// <param name="model"></param>
+        public void ConfirmTakeOf(string palletNo,int userId)
+        {
+            try
+            {
+                #region 楠岃瘉淇℃伅
+                if (string.IsNullOrEmpty(palletNo))
+                {
+                    throw new Exception("鎵樼洏鏉$爜涓嶈兘涓虹┖!");
+                }
+
+                //鑾峰彇鎵樼洏淇℃伅
+                var pallet = Db.Queryable<SysPallets>().First(w => w.IsDel == "0" && w.PalletNo == palletNo);
+                //楠岃瘉鎵樼洏淇℃伅鏄惁涓虹┖
+                if (pallet == null)
+                {
+                    throw new Exception("鎵樼洏淇℃伅涓嶅瓨鍦紝璇锋鏌�!");
+                }
+                if (pallet.Status == "0")
+                {
+                    throw new Exception("鎵樼洏鏈娇鐢紝璇锋鏌�!");
+                }
+                #endregion
+
+                //鑾峰彇搴撳瓨鏄庣粏淇℃伅
+                var stockDetailList = Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.PalletNo == palletNo).ToList();
+                //楠岃瘉搴撳瓨鏄庣粏淇℃伅鏄惁瀛樺湪
+                if (stockDetailList.Count<=0)
+                {
+                    throw new Exception("搴撳瓨鏄庣粏涓嶅瓨鍦紝璇锋鏌ュ簱瀛樹俊鎭�!");
+                }
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+
+                foreach (var item in stockDetailList)
+                {
+                    //if (item.AreaNo != "B06" && item.AreaNo != "B07" && item.AreaNo != "B09")
+                    //{
+                    //    throw new Exception("璇ユ墭鐩橀潪绾胯竟鍥炲簱鎵樼洏!");
+                    //}
+                    //搴撳瓨鎬昏〃
+                    var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo);
+                    if (stock == null)
+                    {
+                        throw new Exception($"鏈煡璇㈠埌璇ユ墭鐩樹笂鐗╂枡缂栫爜涓�:{item.SkuNo}鐨勫簱瀛樹俊鎭�!");
+                    }
+
+                    var boxInfoList = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == palletNo && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo).ToList();
+                    if (boxInfoList.Count > 0)
+                    {
+                        foreach (var box in boxInfoList)
+                        {
+                            var bllBox = Db.Queryable<BllBoxInfo>().First(w => w.IsDel == "0" && w.Status != "0" && w.BoxNo == box.BoxNo);
+                            if (bllBox != null)
+                            {
+                                bllBox.Status = "0";
+                                bllBox.ASNDetailNo = null;
+                                bllBox.BindNo = null;
+                                bllBox.PalletNo = "";
+                                //鏇存柊绠辨敮鏄庣粏琛�
+                                Db.Updateable(bllBox).ExecuteCommand();
+                            }
+                        }
+                        //鍒犻櫎搴撳瓨绠辩爜淇℃伅
+                        Db.Deleteable(boxInfoList).ExecuteCommand();
+                    }
+                    
+                    //鍒犻櫎鎴栦慨鏀瑰簱瀛�
+                    stock.Qty -= (decimal)item.Qty;
+                    if (stock.Qty <= 0)
+                    {
+                        Db.Deleteable(stock).ExecuteCommand();
+                    }
+                    else
+                    {
+                        Db.Updateable(stock).ExecuteCommand();
+                    }
+                    //鍒犻櫎搴撳瓨鏄庣粏
+                    Db.Deleteable(item).ExecuteCommand();
+
+                    //鍒ゆ柇鎵樼洏涓婅繕鏈夋病鏈夊叾浠栫墿鏂�
+                    var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && w.Id != item.Id);
+                    if (palletData == null)
+                    {
+                        pallet.Status = "0";
+                        Db.Updateable(pallet).ExecuteCommand();
+                    }
+                }
+
+                new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "浠撳簱鏀惰揣", palletNo, "瀹屾垚", $"鍦≒DA涓婂畬鎴愭墭鐩樼爜涓猴細{palletNo}鐨勪粨搴撴敹璐ф搷浣�", userId);
+
+                //鎻愪氦浜嬪姟
+                Db.CommitTran();
+            }
+            catch (Exception ex)
+            {
+                //鍥炴粴浜嬪姟
+                Db.RollbackTran();
+                throw ex;
+            }
+        }
+        #endregion
+
         #region JC23鍙栨牱涓氬姟鎺ュ彛
 
         //鑾峰彇鏈粍鎵樻垨宸茬粍鎵樼殑绠辩爜绾у埆

--
Gitblit v1.8.0