From 86e443e42c4bee972c5b795def4917e02f98ce40 Mon Sep 17 00:00:00 2001
From: wxw <Administrator@DESKTOP-5BIMHQ3>
Date: 星期五, 11 七月 2025 16:45:08 +0800
Subject: [PATCH] 修改问题

---
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 1974 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 1,554 insertions(+), 420 deletions(-)

diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index a8be286..4ab2a27 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -26,12 +26,17 @@
 using System.Runtime.Intrinsics.X86;
 using ZXing.OneD;
 using System.Threading.Tasks;
+using System.Diagnostics;
+using System.Drawing.Drawing2D;
+using Model.ModelDto.LogDto;
+using AutoMapper.Internal;
 
 namespace WMS.BLL.BllSoServer
 {
     public class ExportNoticeServer : DbHelper<BllExportNotice>, IExportNoticeServer
     {
         private static readonly SqlSugarScope Db = DataContext.Db;
+        private readonly object IssueOutLock = new object();
         public ExportNoticeServer() : base(Db)
         {
         }
@@ -300,26 +305,26 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        public SoResInfo ErpAddExportNotice(SoInfo model)
+        public SoResInfo ErpAddExportNotice(SendSoVm model)
         {
             try
             {
-                if (string.IsNullOrEmpty(model.SoType))
+                if (string.IsNullOrEmpty(model.orderType))
                 {
                     throw new Exception("鍗曟嵁绫诲瀷涓嶅彲涓虹┖!");
                 }
-                if (string.IsNullOrEmpty(model.OrderCode))
+                if (string.IsNullOrEmpty(model.orderNo))
                 {
-                    throw new Exception("绯荤粺鍗曞彿涓嶅彲涓虹┖!");
+                    throw new Exception("鍑哄簱鍗曞彿涓嶅彲涓虹┖!");
                 }
-                if (model.SoDetails.Count <= 0)
+                if (model.orderDetailList.Count <= 0)
                 {
                     throw new Exception("鍑哄簱鍗曟槑缁嗕笉鍙负绌�!");
                 }
                 //杩斿洖淇℃伅
                 SoResInfo result = new SoResInfo();
 
-                var skuNos = model.SoDetails.Select(a => a.SkuNo).Distinct().ToList();
+                var skuNos = model.orderDetailList.Select(a => a.skuNo).Distinct().ToList();
                 //鏍规嵁鐗╂枡鍙疯幏鍙栫墿鏂欎俊鎭�
                 var skuList = Db.Queryable<SysMaterials>().Where(a => skuNos.Contains(a.SkuNo) && a.IsDel == "0").ToList();
                 //鑾峰彇搴撳瓨鏄庣粏
@@ -328,10 +333,10 @@
                 var stockList = Db.Queryable<DataStock>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty - s.FrozenQty - s.LockQty) > 0).ToList();
 
                 string CustomerName = string.Empty;
-                if (!string.IsNullOrEmpty(model.Customer))
+                if (!string.IsNullOrEmpty(model.customerNo))
                 {
                     //瀹㈡埛淇℃伅
-                    var customer = Db.Queryable<SysCustomer>().First(m => m.IsDel == "0" && m.CustomerNo == model.Customer);
+                    var customer = Db.Queryable<SysCustomer>().First(m => m.IsDel == "0" && m.CustomerNo == model.customerNo);
                     if (customer == null)
                     {
                         throw new Exception("瀹㈡埛淇℃伅涓嶅瓨鍦�!");
@@ -339,12 +344,12 @@
                     CustomerName = customer.CustomerName;
                 }               
                 //鎵胯繍鍟嗕俊鎭�
-                var logistics = Db.Queryable<SysLogisticsInfo>().First(m => m.IsDel == "0" && m.CarrierName == model.LogisticsNo);
-                int? logisticsId = null;
-                if (logistics != null)
-                {
-                    logisticsId = logistics.Id;
-                }
+                //var logistics = Db.Queryable<SysLogisticsInfo>().First(m => m.IsDel == "0" && m.CarrierName == model.LogisticsNo);
+                //int? logisticsId = null;
+                //if (logistics != null)
+                //{
+                //    logisticsId = logistics.Id;
+                //}
                 var billNo = "";
                 var bl = true;
                 do
@@ -362,21 +367,21 @@
                 {
                     var list = new List<BllExportNoticeDetail>();
                     //娣诲姞鍑哄簱鍗�
-                    foreach (var d in model.SoDetails)
+                    foreach (var d in model.orderDetailList)
                     {
-                        if (d.Qty < 1)
+                        if (d.skuQty < 1)
                         {
                             throw new Exception("鍑哄簱鏁伴噺蹇呴』澶т簬0");
                         }
-                        var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo);
+                        var sku = skuList.FirstOrDefault(a => a.SkuNo == d.skuNo);
                         if (sku == null)
                         {
-                            throw new Exception($"鐗╂枡淇℃伅涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.SkuNo}");
+                            throw new Exception($"鐗╂枡淇℃伅涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.skuNo}");
                         }
                         //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�3锛氱墿鏂欏彇鏍峰嚭搴撱��4:涓嶅悎鏍煎搧鍑哄簱銆�6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆� ///2:鎶芥鍑哄簱銆�5:涓棿鍝佸嚭搴撱��8:瀵勫瓨鍑哄簱
-                        if (model.SoType == "0" || model.SoType == "3" || model.SoType == "4" || model.SoType == "7")
+                        if (model.orderType == "0" || model.orderType == "3" || model.orderType == "4" || model.orderType == "7")
                         {
-                            if (string.IsNullOrWhiteSpace(d.LotNo))
+                            if (string.IsNullOrWhiteSpace(d.lotNo))
                             {
                                 throw new Exception("鎵规涓嶅彲涓虹┖!");
                             }
@@ -384,29 +389,29 @@
                         //搴撳瓨鏄庣粏
                         List<DataStockDetail> stockDetails;
                         //鎸囧畾鎵规
-                        if (!string.IsNullOrWhiteSpace(d.LotNo))
+                        if (!string.IsNullOrWhiteSpace(d.lotNo))
                         {
-                            stockDetails = stockDetailList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList();
+                            stockDetails = stockDetailList.Where(s => s.SkuNo == d.skuNo && s.LotNo == d.lotNo).ToList();
                             if (stockDetails.Count < 1)
                             {
-                                throw new Exception($"搴撳瓨涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.SkuNo}");
+                                throw new Exception($"搴撳瓨涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.skuNo}");
                             }
                             //鍒ゆ柇鏁伴噺
                             var qty = stockDetails.Sum(s => s.Qty - s.FrozenQty - s.LockQty);
-                            if (d.Qty > qty)
+                            if (d.skuQty > qty)
                             {
-                                throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+                                throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.skuNo}銆亄d.lotNo} 搴撳瓨鏁伴噺涓嶈冻");
                             }
                             //搴撳瓨淇℃伅
-                            var stockInfo = stockList.First(w => w.SkuNo == d.SkuNo && w.LotNo == d.LotNo);
+                            var stockInfo = stockList.First(w => w.SkuNo == d.skuNo && w.LotNo == d.lotNo);
                             if (stockInfo == null)
                             {
-                                throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}");
+                                throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.skuNo}");
                             }
                             //鍒ゆ柇鎬诲簱瀛樻暟閲�
-                            if (d.Qty > stockInfo.Qty - stockInfo.FrozenQty - stockInfo.LockQty)
+                            if (d.skuQty > stockInfo.Qty - stockInfo.FrozenQty - stockInfo.LockQty)
                             {
-                                throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻");
+                                throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.skuNo}銆亄d.lotNo} 搴撳瓨鏁伴噺涓嶈冻");
                             }
                             //娣诲姞鍑哄簱鍗曟槑缁�
                             var noticeDetail = new BllExportNoticeDetail()
@@ -415,36 +420,36 @@
                                 SkuNo = sku.SkuNo,
                                 SkuName = sku.SkuName,
                                 Standard = sku.Standard,
-                                LotNo = d.LotNo,
+                                LotNo = d.lotNo,
                                 LotText = stockInfo.LotText,
-                                Qty = d.Qty,
+                                Qty = d.skuQty,
                                 AllotQty = 0,
                                 FactQty = 0,
                                 CompleteQty = 0,
                                 PackagNo = sku.PackagNo,
                                 Price = sku.Price,
-                                Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty,
+                                Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.skuQty,
                                 IsBale = "",
                                 IsBelt = "",
                                 SupplierLot = stockInfo.SupplierLot,
                                 IsWave = "0",
                                 WaveNo = "",
-                                IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1",
-                                IsMixBox = d.IsMixBox,
+                                IsIssueLotNo = string.IsNullOrWhiteSpace(d.lotNo) ? "0" : "1",
+                                IsMixBox = "0",
 
-                                OrderDetailCode = d.OrderDetailCode,
+                                OrderDetailCode = d.lineNo,
 
                                 CreateUser = 0,
                             };
                             list.Add(noticeDetail);
                             //鏇存柊搴撳瓨閿佸畾鏁伴噺
-                            stockInfo.LockQty += d.Qty;
+                            stockInfo.LockQty += d.skuQty;
                             var i = Db.Updateable(stockInfo).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
 
                             SoDetailInfo soDetail = new SoDetailInfo();
-                            soDetail.OrderDetailCode = d.OrderDetailCode;
-                            soDetail.LockQty = d.Qty;
-                            soDetail.LotNo = d.LotNo;
+                            soDetail.OrderDetailCode = d.lineNo;
+                            soDetail.LockQty = d.skuQty;
+                            soDetail.LotNo = d.lotNo;
 
                             soDetailList.Add(soDetail);
                         }
@@ -453,12 +458,12 @@
                             Dictionary<int, decimal> dic = new Dictionary<int, decimal>();
                             decimal q1 = 0;
                             //棣栧厛鏌ヨ褰撳墠杩欑鐗╂枡鎵规鍙蜂负绌虹殑
-                            stockDetails = stockDetailList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
+                            stockDetails = stockDetailList.Where(s => s.SkuNo == d.skuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList();
                             if (stockDetails.Count > 0)
                             {
                                 q1 = (decimal)stockDetails.Sum(s => s.Qty - s.FrozenQty - s.LockQty);
                                 //搴撳瓨淇℃伅
-                                var stockInfo = stockList.FirstOrDefault(w => w.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(w.LotNo));
+                                var stockInfo = stockList.FirstOrDefault(w => w.SkuNo == d.skuNo && string.IsNullOrWhiteSpace(w.LotNo));
                                 if (stockInfo != null)
                                 {
                                     var q2 = stockInfo.Qty - stockInfo.FrozenQty - stockInfo.LockQty;
@@ -466,29 +471,29 @@
                                     {
                                         q1 = q2;
                                     }
-                                    if (d.Qty > q1)
+                                    if (d.skuQty > q1)
                                     {
                                         dic.Add(stockInfo.Id, q1);
                                     }
                                     else
                                     {
-                                        dic.Add(stockInfo.Id, d.Qty);
+                                        dic.Add(stockInfo.Id, d.skuQty);
                                     }
                                 }
                             }
                             //濡傛灉鎵规鍙蜂负绌虹殑鏁伴噺涓嶅锛屾牴鎹壒娆″厛杩涘厛鍑哄師鍒欐煡鎵惧叾瀹冩壒娆$殑
-                            if (d.Qty > q1)
+                            if (d.skuQty > q1)
                             {
-                                stockDetails = stockDetailList.Where(m => m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList();
+                                stockDetails = stockDetailList.Where(m => m.SkuNo == d.skuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList();
                                 foreach (var demo in stockDetails)
                                 {
-                                    if (q1 >= d.Qty)
+                                    if (q1 >= d.skuQty)
                                     {
                                         break;
                                     }
                                     var q2 = demo.Qty - demo.FrozenQty - demo.LockQty;
                                     //搴撳瓨淇℃伅
-                                    var stockInfo = stockList.FirstOrDefault(w => w.SkuNo == d.SkuNo && w.LotNo == demo.LotNo);
+                                    var stockInfo = stockList.FirstOrDefault(w => w.SkuNo == d.skuNo && w.LotNo == demo.LotNo);
                                     if (stockInfo == null)
                                     {
                                         continue;
@@ -503,18 +508,18 @@
                                     {
                                         q2 = q3;
                                     }
-                                    if (q2 > d.Qty - q1)
+                                    if (q2 > d.skuQty - q1)
                                     {                                        
                                         if (!dic.ContainsKey(stockInfo.Id))
                                         {
-                                            dic.Add(stockInfo.Id, d.Qty - q1);
+                                            dic.Add(stockInfo.Id, d.skuQty - q1);
                                         }
                                         else
                                         {
                                             //鏇存柊鍊�
-                                            dic[stockInfo.Id] += d.Qty - q1;
+                                            dic[stockInfo.Id] += d.skuQty - q1;
                                         }
-                                        q1 += d.Qty - q1;
+                                        q1 += d.skuQty - q1;
                                     }
                                     else
                                     {                                       
@@ -531,9 +536,9 @@
                                     }
                                 }
                             }
-                            if (d.Qty > q1)
+                            if (d.skuQty > q1)
                             {
-                                throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo} 搴撳瓨鏁伴噺涓嶈冻");
+                                throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.skuNo} 搴撳瓨鏁伴噺涓嶈冻");
                             }
                             foreach (var s in dic)
                             {
@@ -541,7 +546,7 @@
                                 var item = new BllExportNoticeDetail()
                                 {
                                     SONo = billNo,
-                                    OrderDetailCode = d.OrderDetailCode,
+                                    OrderDetailCode = d.lineNo,
                                     SkuNo = sku.SkuNo,
                                     SkuName = sku.SkuName,
                                     Standard = sku.Standard,
@@ -553,14 +558,14 @@
                                     CompleteQty = 0,
                                     PackagNo = sku.PackagNo,
                                     Price = sku.Price,
-                                    Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty,
+                                    Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.skuQty,
                                     IsBale = "",
                                     IsBelt = "",
                                     SupplierLot = st.SupplierLot,
                                     IsWave = "0",
                                     WaveNo = "",
-                                    IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1",
-                                    IsMixBox = d.IsMixBox,
+                                    IsIssueLotNo = string.IsNullOrWhiteSpace(d.lotNo) ? "0" : "1",
+                                    IsMixBox = "0",
 
                                     CreateUser = 0,
                                 };
@@ -570,7 +575,7 @@
                                 var i = Db.Updateable(st).UpdateColumns(it => new { it.LockQty }).ExecuteCommand();
 
                                 SoDetailInfo soDetail = new SoDetailInfo();
-                                soDetail.OrderDetailCode = d.OrderDetailCode;
+                                soDetail.OrderDetailCode = d.lineNo;
                                 soDetail.LockQty = s.Value;
                                 soDetail.LotNo = st.LotNo;
 
@@ -581,13 +586,13 @@
                     var notice = new BllExportNotice()
                     {
                         SONo = billNo,
-                        OrderCode=model.OrderCode,
-                        Type = model.SoType,
+                        OrderCode=model.orderNo,
+                        Type = model.orderType,
                         Status = "0",
                         Origin = "WMS",
-                        CustomerNo = model.Customer,
+                        CustomerNo = model.customerNo,
                         CustomerName = CustomerName,
-                        LogisticsId = logisticsId,
+                        LogisticsId = null,//logisticsId,
                         IsWave = "0",
                         WaveNo = "",
                         IsDespatch = "0",
@@ -1009,10 +1014,11 @@
                     skuList = skuList.Where(m => m.SkuNo == "100088").ToList();
                 }
                 skuStrList = skuList.Select(m => m.SkuNo).ToList();
+                var areaStr = new List<string>() { "B06", "B07", "B09" };
                 var stockRst = new StockServer();
                 var stockDetailRst = new StockDetailServer();
                 Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>()
-                    .And(it => it.WareHouseNo == house)
+                    .And(it => it.WareHouseNo == house || string.IsNullOrWhiteSpace(it.LocatNo) || (it.WareHouseNo == "W04" && !areaStr.Contains(it.AreaNo)))
                     .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), it => inspectStatus.Contains(it.InspectStatus))
                     .And(m => skuStrList.Contains(m.SkuNo))
                     .AndIF(type == "6", m => m.OwnerNo == ownerNo)//浠e偍鍑哄簱闇�瑕佸叧鑱旇揣涓�
@@ -1245,7 +1251,7 @@
                         IsWave = "0",
                         WaveNo = "",
                         IsDespatch = "0",
-
+                        WareHouseNo = model.WareHouseNo,
                         CreateUser = userId,
                     };
 
@@ -2195,17 +2201,17 @@
                             var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
 
                             ////瑙f瀽杩斿洖鏁版嵁 
-                            var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
-                            if (wcsModel.StatusCode == 0)
+                            var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response);
+                            if (wcsModel.code == 200)
                             {
                                 //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
                                 new TaskServer().EditTaskIssueOk(list2, time1, time2);
                                 str += "涓嬪彂鎴愬姛";
                             }
-                            if (wcsModel.StatusCode == -1)
+                            else
                             {
-                                new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
-                                throw new Exception(wcsModel.Msg);
+                                new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message);
+                                throw new Exception(wcsModel.message);
                             }
                         }
                         catch (Exception ex)
@@ -2419,12 +2425,9 @@
                         Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟
                         var qty = 0m;
                         var house = "";
-                        if (notice.Type == "0")
-                        {
-                            house = "W01";
-                        }
+                        
                         //鍒嗛厤璐х墿
-                        qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, house);
+                        qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, notice.WareHouseNo);
                         foreach (var sc in stockQtyDic)
                         {
                             var s = stockDetail.FirstOrDefault(m => m.Id == sc.Key);
@@ -2965,6 +2968,1477 @@
             }
         }
 
+        #endregion
+
+        #region 涓嬪彂鍑哄簱銆佸嚭搴撳畬鎴愩�侀噸鏂颁笅鍙戜换鍔°�佸彇娑堜换鍔°�佸紓甯稿鐞�
+
+        public string GetHouseBySo(string soNo)
+        {
+            try
+            {
+                var notcie = Db.Queryable<BllExportNotice>().First(m=>m.IsDel == "0" && m.SONo == soNo);
+                if (notcie == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曚俊鎭�");
+                }
+                return notcie.WareHouseNo;
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
+        public List<OutCommandDto> IssueOutHouseLk(string soNo, string outMode, int userId, string url, out string str)
+        {
+            try
+            {
+                var outDto1 = new List<OutCommandDto>(); //鍑哄簱鏁版嵁鐨勯泦鍚堬紙娣卞害涓�1鐨勫偍浣嶏級
+                //璁板綍閿欒淇℃伅鐨勯泦鍚� //1:褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�2 鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�3鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�4 瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱
+                var flagList = new List<int>();
+
+                var com = new Common();
+                var notice = Db.Queryable<BllExportNotice>().First(m => m.SONo == soNo && m.IsDel == "0");
+                if (notice == null)
+                {
+                    throw new Exception($"鏈壘鍒皗soNo}鍑哄簱鍗曚俊鎭�");
+                }
+                if (notice.WareHouseNo != "W02")
+                {
+                    throw new Exception("浠撳簱鍙烽敊璇�");
+                }
+                //鎵�鏈夎鍑哄簱鐨勫嚭搴撳垎閰嶄俊鎭�(鏈笅鍙戠殑淇℃伅鍜屽緟鎷h揣鐨勪俊鎭�)
+                var list = Db.Queryable<BllExportAllot>().Where(a => a.IsDel == "0" && a.SONo == soNo && (a.Status == "0" || a.Status == "2")).ToList();
+                if (list.Count == 0) //鍒ゆ柇鏄惁鏈夐渶瑕佷笅鍙戠殑鍑哄簱娴佹按
+                {
+                    throw new Exception("褰撳墠鍑哄簱鍗曟嵁鏃犻渶瑕佷笅鍙戠殑鎵樼洏");
+                }
+
+                #region 闆嗗悎 
+                //瑕佸嚭搴撶殑鎵樼洏闆嗗悎
+                var outLpnList = list.Select(m => m.PalletNo).ToList();
+                //瑕佸嚭搴撶殑鏄庣粏闆嗗悎
+                var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList();
+                //鐗╂枡缂栫爜琛�
+                var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0");
+                //鍖呰琛�
+                var packagList = Db.Queryable<SysPackag>().Where(w => w.IsDel == "0");
+                Db.BeginTran();
+                try
+                {
+                    List<LogTask> logTaskList = new List<LogTask>();//姝ゆ鍑哄簱浠诲姟闆嗗悎锛屼负搴斿鍚屾墭鐩樹笉鍚岀墿鏂欏嚭搴�
+                    var i = 0;
+                    var outLocatelist1 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.AreaNo == "B02" && m.Flag == "0").ToList();
+                    var outLocatelist2 = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.AreaNo == "B05" && m.Flag == "0").ToList();
+                    //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔�
+                    foreach (var item in list)
+                    {
+                        var outModeLocate = "";
+                        if (outMode == "17")
+                        {
+                            if (i < outLocatelist1.Count)
+                            {
+                                outModeLocate = outLocatelist1[i].LocatNo;
+                            }
+                            else
+                            {
+                                var j = i % outLocatelist1.Count;
+
+                                outModeLocate = outLocatelist1[j].LocatNo;
+                            }
+                        }
+                        else if (outMode == "18")
+                        {
+                            if (i < outLocatelist1.Count)
+                            {
+                                outModeLocate = outLocatelist2[i].LocatNo;
+                            }
+                            else
+                            {
+                                var j = i % outLocatelist1.Count;
+
+                                outModeLocate = outLocatelist2[j].LocatNo;
+                            }
+                        }
+                        else
+                        {
+                            throw new Exception("鍑哄簱鍙e伐浣嶅紓甯�");
+                        }
+                        
+                        var taskNoStr = "";
+                                           
+                        // 鍌ㄤ綅鍙�
+                        var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo;
+
+                        #region 鍒ゆ柇
+
+                        //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐�
+                        if (string.IsNullOrWhiteSpace(locateNo)) //搴撳
+                        {
+                            //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ叆搴撲腑
+                            var imBl = com.GetImTask(item.PalletNo);
+                            if (imBl != null)
+                            {
+                                flagList.Add(4);
+                                continue;
+                            }
+                            //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴擄紙鐘舵�佷负寰呮嫞璐х殑锛�
+                            if (item.Status == "0")
+                            {
+                                //濡傛灉涓嶅湪浠撳簱鍐咃紝褰撳墠鍒嗛厤淇℃伅鐩存帴鏇存柊鍑哄簱瀹屾垚 
+                                item.Status = "2";//鐘舵��
+                                item.OutMode = outModeLocate;//鍑哄簱鍙� 
+                                Db.Updateable(item).ExecuteCommand();
+                                var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
+                                if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
+                                {
+                                    noticeDetail.FactQty += item.Qty;
+                                    Db.Updateable(noticeDetail).ExecuteCommand();
+                                }
+
+                                //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo);
+                                if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2")
+                                {
+                                    var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList();
+                                    if (detailList.Count(m => m.Qty >= m.AllotQty) > 0)
+                                    {
+                                        notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц
+                                        Db.Updateable(notice).ExecuteCommand();
+                                    }
+                                }
+                            }
+                            flagList.Add(0);
+                            continue;
+                            
+                        }
+
+                        var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo && m.IsDel == "0");//褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭�
+                        if (locate == null)
+                        {
+                            flagList.Add(2);
+                            continue;
+                        }
+                        //鍒ゆ柇鍌ㄤ綅鏍囧織鏄惁涓烘崯鍧�
+                        if (locate.Flag == "2")
+                        {
+                            flagList.Add(3);
+                            continue;
+                        }
+
+                        #endregion
+
+                        if (locate.Status == "1") //鏈夌墿鍝�
+                        {
+                            #region 娣诲姞鍑哄簱浠诲姟
+                            
+                            var taskNo = new Common().GetMaxNo("TK");
+                            var exTask = new LogTask    //鍑哄簱浠诲姟
+                            {
+                                TaskNo = taskNo,
+                                Sender = "WMS",
+                                Receiver = "WCS",
+                                IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+                                StartLocat = locate.LocatNo,//璧峰浣嶇疆
+                                EndLocat = outModeLocate,//鐩爣浣嶇疆
+                                PalletNo = item.PalletNo,//鎵樼洏鐮�
+                                IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                                IsCancel = 1,//鏄惁鍙彇娑�
+                                IsFinish = 1,//鏄惁鍙畬鎴�
+                                Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                                Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                                OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+                                Msg = "浠�" + locate.LocatNo + "鍒�" + outModeLocate + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+                            };
+                            Db.Insertable(exTask).ExecuteCommand();
+                            logTaskList.Add(exTask);
+
+                            outDto1.Add(new OutCommandDto()
+                            {
+                                TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+                                TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� 
+
+                                PalletNo = item.PalletNo,//鎵樼洏鍙�
+                                StartLocate = locate.LocatNo, // 璧峰浣嶇疆
+                                StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾
+                                EndLocate = outModeLocate, // 鐩爣浣嶇疆 
+                                
+                                Order = 999,
+                                Type  = PLCTypeEnum.AGV
+                                 
+                            });
+                            taskNoStr = exTask.TaskNo;
+                            
+                            #endregion
+
+                            #region 鏀瑰彉鏁版嵁
+                            if (item.Status == "0")//鍒ゆ柇鎵樼洏鏄惁涓嬪彂杩�
+                            {
+                                var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
+                                if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
+                                {
+                                    noticeDetail.FactQty += item.Qty;
+                                    Db.Updateable(noticeDetail).ExecuteCommand();
+                                }
+
+                                //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo);
+                                if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2")
+                                {
+                                    var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList();
+                                    if (detailList.Count(m => m.Qty >= m.AllotQty) > 0)
+                                    {
+                                        notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц
+                                        Db.Updateable(notice).ExecuteCommand();
+                                    }
+                                }
+                            }
+                            locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱
+                            Db.Updateable(locate).ExecuteCommand();
+                            var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == outModeLocate && m.IsDel == "0");//褰撳墠鍑哄簱鐨勭洰鏍囧偍浣嶄俊鎭�
+                            locate2.Status = "4";
+                            Db.Updateable(locate2).ExecuteCommand();
+
+                            item.TaskNo = taskNoStr; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿
+                            item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� 
+                            //item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡
+                            item.OutMode = outModeLocate;//鍑哄簱鍙�
+                            //item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//瑁呰溅鍙�
+                            Db.Updateable(item).ExecuteCommand();
+
+                            #endregion
+
+                            flagList.Add(0);
+                            i++;
+                        }
+                        else if (locate.Status == "3") //鍑哄簱涓�
+                        {
+                            #region 鏀瑰彉鏁版嵁
+                            //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴擄紙鐘舵�佷负寰呮嫞璐х殑 1锛�
+                            if (item.Status == "0")
+                            {
+                                var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
+                                if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
+                                {
+                                    noticeDetail.FactQty += item.Qty;
+                                    Db.Updateable(noticeDetail).ExecuteCommand();
+                                }
+
+                                //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo);
+                                if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2")
+                                {
+                                    var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList();
+                                    if (detailList.Count(m => m.Qty >= m.AllotQty) > 0)
+                                    {
+                                        notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц
+                                        Db.Updateable(notice).ExecuteCommand();
+                                    }
+                                }
+                            }
+                            var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo);
+                            if (taskNo == null)
+                            {
+                                taskNo = logTaskList.FirstOrDefault(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱
+                            }
+                            if (taskNo == null)
+                            {
+                                throw new Exception($"鎵樼洏鍙凤細{item.PalletNo},鍑哄簱寮傚父");
+                            }
+                            item.TaskNo = taskNo.TaskNo;
+                            item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� 
+                            item.OutMode = item.OutMode;//鍑哄簱鍙�
+                            //item.UnstackingMode = unstackingMode2;//鎷嗗灈妯″紡
+                            Db.Updateable(item).ExecuteCommand();
+                            flagList.Add(0);
+                            #endregion
+                        }
+                        else if (locate.Status == "5") //绉诲嚭涓�
+                        {
+                            flagList.Add(1);
+                        }
+                    }
+                    
+                    //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                    var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", soNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鍑哄簱鍗曞彿涓猴細{soNo}鐨勫嚭搴撳崟", userId);
+                    Db.CommitTran();
+
+                    str = string.Empty;
+                    if (flagList.Count(m => m == 0) > 0)
+                    {
+                        str += "0.涓嬪彂鎴愬姛銆�";
+                    }
+                    if (flagList.Count(m => m == 1) > 0)
+                    {
+                        str += "1.褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�";
+                    }
+                    if (flagList.Count(m => m == 2) > 0)
+                    {
+                        str += "2.鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�";
+                    }
+                    if (flagList.Count(m => m == 3) > 0)
+                    {
+                        str += "4.鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�";
+                    }
+                    if (flagList.Count(m => m == 4) > 0)
+                    {
+                        str += "3.瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱銆�";
+                    }
+                    if (flagList.Count(m => m == 5) > 0)
+                    {
+                        str += "3.瑕佸嚭搴撶殑鎵樼洏姝e湪鎷嗘墭璇风◢鍚庝笅鍙戙��";
+                    }
+                    if (outDto1.Count > 0)
+                    {
+                        // 姝e紡杩愯绋嬪簭鏀惧紑
+                        var list2 = outDto1.Select(m => m.TaskNo).ToList();
+                        var jsonData = JsonConvert.SerializeObject(outDto1);
+                        string response = "";
+
+                        try
+                        {
+                            var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+                            //response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
+                            var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
+
+                            //////瑙f瀽杩斿洖鏁版嵁 
+                            //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
+                            //if (wcsModel.StatusCode == 0)
+                            //{
+                            //    //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+                                new TaskServer().EditTaskIssueOk(list2, time1, time2);
+                                str += "涓嬪彂鎴愬姛";
+                            //}
+                            //if (wcsModel.StatusCode == -1)
+                            //{
+                            //    new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
+                            //    throw new Exception(wcsModel.Msg);
+                            //}
+                        }
+                        catch (Exception ex)
+                        {
+                            throw new Exception(ex.Message);
+                        }
+
+                    }
+
+                    return outDto1;
+                }
+                catch (Exception e)
+                {
+                    Db.RollbackTran();
+                    throw new Exception(e.Message);
+                }
+
+
+                #endregion
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
+        public List<OutCommandDto> IssueOutHouseMk(string soNo, string outMode, int userId, string url, out string str)
+        {
+            try
+            {
+                #region 闆嗗悎 
+
+                var outDto1 = new List<OutCommandDto>(); //鍏堝嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负1鐨勫偍浣嶏級
+                var outDto2 = new List<OutCommandDto>(); //鍚庡嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负2鐨勫偍浣嶏級
+                var moveDto = new List<OutCommandDto>(); //瑕佺Щ搴撴暟鎹殑闆嗗悎
+                //璁板綍閿欒淇℃伅鐨勯泦鍚� 
+                var flagList = new List<int>();//1:褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�2 鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�3鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�4 瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱
+
+                #endregion
+                var com = new Common();
+                var allot = new AllotLocation();
+
+                var notice = Db.Queryable<BllExportNotice>().First(m => m.SONo == soNo && m.IsDel == "0");
+                if (notice == null)
+                {
+                    throw new Exception($"鏈壘鍒皗soNo}鍑哄簱鍗曚俊鎭�");
+                }
+                //鎵�鏈夎鍑哄簱鐨勫嚭搴撳垎閰嶄俊鎭�(鏈笅鍙戠殑淇℃伅鍜屽緟鎷h揣鐨勪俊鎭�)
+                var list = Db.Queryable<BllExportAllot>().Where(a => a.IsDel == "0" && a.SONo == soNo && (a.Status == "0" || a.Status == "2")).ToList();
+                if (list.Count == 0) //鍒ゆ柇鏄惁鏈夐渶瑕佷笅鍙戠殑鍑哄簱娴佹按
+                {
+                    throw new Exception("褰撳墠鍑哄簱鍗曟嵁鏃犻渶瑕佷笅鍙戠殑鎵樼洏");
+                }
+
+                #region 闆嗗悎 
+                //瑕佸嚭搴撶殑鎵樼洏闆嗗悎
+                var outLpnList = list.Select(m => m.PalletNo).ToList();
+                //瑕佸嚭搴撶殑鏄庣粏闆嗗悎
+                var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList();
+                //鎵�鏈夎鍑哄簱鐨勫偍浣嶉泦鍚�
+                var locateListStrs = outStockDetail.Where(m=> !string.IsNullOrWhiteSpace(m.LocatNo)).Select(m => m.LocatNo).Distinct().ToList();
+                //鐗╂枡缂栫爜琛�
+                var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0");
+                //鍖呰琛�
+                var packagList = Db.Queryable<SysPackag>().Where(w => w.IsDel == "0");
+                Db.BeginTran();
+                try
+                {
+                    List<LogTask> logTaskList = new List<LogTask>();//姝ゆ鍑哄簱浠诲姟闆嗗悎锛屼负搴斿鍚屾墭鐩樹笉鍚岀墿鏂欏嚭搴�
+                    
+                    
+                    //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔�
+                    foreach (var item in list)
+                    {
+                        var taskNoStr = "";
+                       
+                        // 鍌ㄤ綅鍙�
+                        var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo;
+
+                        #region 鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐�
+
+                        //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐�
+                        if (string.IsNullOrWhiteSpace(locateNo)) //搴撳
+                        {
+                            //if (notice.Type == "0")
+                            //{
+                            //    flagList.Add(5);
+                            //    continue;
+                            //}
+                            //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ叆搴撲腑
+                            var imBl = com.GetImTask(item.PalletNo);
+                            if (imBl != null)
+                            {
+                                flagList.Add(4);
+                                continue;
+                            }
+                            //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴擄紙鐘舵�佷负寰呮嫞璐х殑 1锛�
+                            if (item.Status == "0")
+                            {
+                                //濡傛灉涓嶅湪浠撳簱鍐咃紝褰撳墠鍒嗛厤淇℃伅鐩存帴鏇存柊鍑哄簱瀹屾垚 
+                                item.Status = "2";//鐘舵��
+                                item.OutMode = outMode;//鍑哄簱鍙� 
+                                Db.Updateable(item).ExecuteCommand();
+                                var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
+                                if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
+                                {
+                                    noticeDetail.FactQty += item.Qty;
+                                    Db.Updateable(noticeDetail).ExecuteCommand();
+                                }
+
+                                //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo);
+                                if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2")
+                                {
+                                    var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList();
+                                    if (detailList.Count(m => m.Qty >= m.AllotQty) > 0)
+                                    {
+                                        notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц
+                                        Db.Updateable(notice).ExecuteCommand();
+                                    }
+                                }
+                            }
+                            flagList.Add(0);
+                            continue;
+                        }
+
+                        //鍒ゆ柇鍌ㄤ綅
+                        var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo && m.IsDel == "0");//褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭�
+                        if (locate == null)
+                        {
+                            flagList.Add(2);
+                            continue;
+                        }
+                        //鍒ゆ柇鍌ㄤ綅鏍囧織鏄惁涓烘崯鍧�
+                        if (locate.Flag == "2")
+                        {
+                            flagList.Add(3);
+                            continue;
+                        }
+
+                        #endregion
+
+                        if (locate.Status == "1") //鏈夌墿鍝�
+                        {
+                            var row1 = int.Parse(locate.LocatNo.Substring(2,2));
+                            var row2 = int.Parse(locate.AisleOne.Substring(2, 2));
+                            //闇�瑕佺Щ搴撶殑淇℃伅 
+                            var NeedMoveInfo = IsNeedMoveLocate(locate, locateListStrs, out int isOut);
+                            if (isOut == 1)
+                            {
+                                //宸烽亾缁勪腑鏈夊叆搴撴垨绉诲叆鐨勫偍浣嶏紝鎴栬�呮槸褰撳墠鍌ㄤ綅鍓嶆湁鍌ㄤ綅鏈笅鍙戞垚鍔熺殑浠诲姟
+                                flagList.Add(2);
+                                continue;
+                            }
+                            if (NeedMoveInfo.Count > 0)//闇�瑕佺Щ搴�
+                            {
+                                //鍒ゆ柇搴撳唴绌哄偍浣嶆槸鍚﹀
+                                var okRoad = Db.Queryable<SysStorageRoadway>().Where(m => m.Status == "0" && m.IsDel == "0" && m.WareHouseNo == notice.WareHouseNo).Select(m => m.RoadwayNo).ToList();
+                                var nullSlotNum = Db.Queryable<SysStorageLocat>().Count(m => m.RoadwayNo != locate.RoadwayNo && okRoad.Contains(m.RoadwayNo) && m.Status == "0");
+                                //鍒ゆ柇绌哄偍浣嶇殑鏁伴噺鏄惁澶т簬闇�瑕佺Щ搴撶殑鏁伴噺
+                                if (nullSlotNum >= NeedMoveInfo.Count)
+                                {
+                                    var isYk = false;
+                                    foreach (var s in NeedMoveInfo)
+                                    {
+                                        //鍌ㄤ綅鍒�
+                                        var rows = int.Parse(s.Substring(2,2));
+
+                                        //鑾峰彇绉诲簱鍌ㄤ綅
+                                        var moveAddress = GetMiJiMoveAddress(s, locate.AisleOne);
+                                        var tary = Db.Queryable<DataStockDetail>().First(m => m.LocatNo == s);
+                                        if (string.IsNullOrWhiteSpace(moveAddress)) // 鍒ゆ柇鏄惁鑾峰彇鍒扮Щ搴撶殑搴撲綅
+                                        {
+                                            isYk = true;
+                                            flagList.Add(5);//鍑哄簱鍓嶆湁璐х墿锛岄渶绉诲簱浣嗘湭鏌ヨ鍒扮┖鍌ㄤ綅
+                                            break; //娌℃湁绉诲簱鐨勫簱浣嶄簡
+                                        }
+                                        else
+                                        {
+                                            //鍒ゆ柇鎵樼洏鏈夋病鏈夊洖绉荤殑浠诲姟
+                                            //var hy = GetHyTask(item.ExportStockCode);
+                                            //if (hy != null)
+                                            //{
+                                            //    var hyentity = dataContext.WmsExportTask.FirstOrDefault(m => m.TaskId == hy.TaskId);
+                                            //    if (hyentity != null)
+                                            //    {
+                                            //        isYk = true;
+                                            //        msgList.Add(6);//鍑哄簱鍓嶆湁璐х墿锛岄渶绉诲簱浣嗘槸鍥炵Щ鎵樼洏
+                                            //        break; //娌℃湁绉诲簱鐨勫簱浣嶄簡
+                                            //    }
+                                            //}
+                                            var ykTaskNo = new Common().GetMaxNo("TK");
+                                            var ykTask = new LogTask    //鍑哄簱浠诲姟
+                                            {
+                                                TaskNo = ykTaskNo,
+                                                Sender = "WMS",
+                                                Receiver = "WCS",
+                                                IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+                                                StartLocat = s,//璧峰浣嶇疆
+                                                EndLocat = moveAddress,//outMode,//鐩爣浣嶇疆
+                                                PalletNo = tary.PalletNo,//鎵樼洏鐮�
+                                                IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                                                IsCancel = 1,//鏄惁鍙彇娑�
+                                                IsFinish = 1,//鏄惁鍙畬鎴�
+                                                Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                                                Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                                                OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+                                                Msg = "浠�" + locate.LocatNo + "鍒�" + moveAddress + "鐨勭Щ搴撲换鍔�", //鍏抽敭淇℃伅
+                                            };
+                                            Db.Insertable(ykTask).ExecuteCommand();
+                                            logTaskList.Add(ykTask);
+
+                                            outDto1.Add(new OutCommandDto()
+                                            {
+                                                PalletNo = item.PalletNo,//鎵樼洏鍙�
+                                                StartLocate = locate.LocatNo, // 璧峰浣嶇疆
+                                                StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾
+                                                EndLocate = moveAddress,//outMode, // 鐩爣浣嶇疆 
+                                                TaskNo = ykTaskNo, // 浠诲姟鍙�
+                                                TaskType = "2",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉�  
+                                                Order = Math.Abs(row2 - rows),
+                                                Type = PLCTypeEnum.ShuttleCar
+
+                                            }); 
+                                            var slotChange = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == s);
+                                            var slotChange2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == moveAddress);
+
+                                            slotChange.Status = "5"; //鏀瑰彉鐘舵�侊紙姝e湪鍑哄簱锛�
+                                            slotChange2.Status = "4"; // 鏀瑰彉鐘舵�侊紙姝e湪绉诲叆锛�
+                                            Db.Updateable(slotChange).ExecuteCommand();
+                                            Db.Updateable(slotChange2).ExecuteCommand();
+                                        }
+                                    }
+                                    if (isYk)
+                                    {
+                                        break;
+                                    }
+                                }
+                                else
+                                {
+                                    flagList.Add(5);
+                                    break;
+                                }
+                            }
+                            #region 娣诲姞鍑哄簱浠诲姟
+                            
+                            var taskNo = new Common().GetMaxNo("TK");
+                            var exTask = new LogTask    //鍑哄簱浠诲姟
+                            {
+                                TaskNo = taskNo,
+                                Sender = "WMS",
+                                Receiver = "WCS",
+                                IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+                                StartLocat = locate.LocatNo,//璧峰浣嶇疆
+                                EndLocat = outMode,//outMode,//鐩爣浣嶇疆
+                                PalletNo = item.PalletNo,//鎵樼洏鐮�
+                                IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                                IsCancel = 1,//鏄惁鍙彇娑�
+                                IsFinish = 1,//鏄惁鍙畬鎴�
+                                Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                                Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                                OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+                                Msg = "浠�" + locate.LocatNo + "鍒�" + outMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+                            };
+                            Db.Insertable(exTask).ExecuteCommand();
+                            logTaskList.Add(exTask);
+                            var endroad = allot.RoadwayToStationNum(locate.RoadwayNo, outMode);
+                            outDto1.Add(new OutCommandDto()
+                            {
+                                PalletNo = item.PalletNo,//鎵樼洏鍙�
+                                StartLocate = locate.LocatNo, // 璧峰浣嶇疆
+                                StartRoadway = locate.RoadwayNo,//璧峰宸烽亾
+                                EndLocate = outMode,//, // 鐩爣浣嶇疆 
+                                EndRoadway = endroad,
+                                TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+                                TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� 
+                                OutMode = outMode,  //鍑哄簱鍙� 
+                                Order = Math.Abs(row2 - row1),
+                                Type = PLCTypeEnum.ShuttleCar
+
+                            });
+                            taskNoStr = exTask.TaskNo;
+                            
+                            #endregion
+
+                            #region 鏀瑰彉鏁版嵁
+                            if (item.Status == "0")//鍒ゆ柇鎵樼洏鏄惁涓嬪彂杩�
+                            {
+                                var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
+                                if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
+                                {
+                                    noticeDetail.FactQty += item.Qty;
+                                    Db.Updateable(noticeDetail).ExecuteCommand();
+                                }
+
+                                //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo);
+                                if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2")
+                                {
+                                    var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList();
+                                    if (detailList.Count(m => m.Qty >= m.AllotQty) > 0)
+                                    {
+                                        notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц
+                                        Db.Updateable(notice).ExecuteCommand();
+                                    }
+                                }
+                            }
+                            locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱
+                            Db.Updateable(locate).ExecuteCommand();
+
+                            item.TaskNo = taskNoStr; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿
+                            item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� 
+                            //item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡
+                            item.OutMode = outMode;//鍑哄簱鍙�
+                            //item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//瑁呰溅鍙�
+                            Db.Updateable(item).ExecuteCommand();
+
+                            #endregion
+
+                            flagList.Add(0);
+                        }
+                        else if (locate.Status == "3") //鍑哄簱涓�
+                        {
+                            #region 鏀瑰彉鏁版嵁
+                            //鍒ゆ柇鏄惁鏄凡缁忓嚭杩囧簱鍙堝洖搴擄紙鐘舵�佷负寰呮嫞璐х殑 1锛�
+                            if (item.Status == "0")
+                            {
+                                var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.IsDel == "0" && m.Id == item.SODetailNo);
+                                if (noticeDetail != null) //鏇存柊鍑哄簱鍗曟嵁鐨勪笅鍙戞暟閲�
+                                {
+                                    noticeDetail.FactQty += item.Qty;
+                                    Db.Updateable(noticeDetail).ExecuteCommand();
+                                }
+
+                                //var notice2 = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == item.SONo);
+                                if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2")
+                                {
+                                    var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList();
+                                    if (detailList.Count(m => m.Qty >= m.AllotQty) > 0)
+                                    {
+                                        notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц
+                                        Db.Updateable(notice).ExecuteCommand();
+                                    }
+                                }
+                            }
+                            var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo);
+                            if (taskNo == null)
+                            {
+                                taskNo = logTaskList.FirstOrDefault(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱
+                            }
+                            if (taskNo == null)
+                            {
+                                throw new Exception($"鎵樼洏鍙凤細{item.PalletNo},鍑哄簱寮傚父");
+                            }
+                            item.TaskNo = taskNo.TaskNo;
+                            item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� 
+                            item.OutMode = item.OutMode;//鍑哄簱鍙�
+                            //item.UnstackingMode = unstackingMode2;//鎷嗗灈妯″紡
+                            Db.Updateable(item).ExecuteCommand();
+                            flagList.Add(0);
+                            #endregion
+                        }
+                        else if (locate.Status == "5") //绉诲嚭涓�
+                        {
+                            flagList.Add(1);
+                        }
+                    }
+                    outDto1.AddRange(moveDto);
+                    outDto1.AddRange(outDto2);
+                    //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                    var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", soNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鍑哄簱鍗曞彿涓猴細{soNo}鐨勫嚭搴撳崟", userId);
+                    Db.CommitTran();
+
+                    str = string.Empty;
+                    if (flagList.Count(m => m == 0) > 0)
+                    {
+                        str += "0.涓嬪彂鎴愬姛銆�";
+                    }
+                    if (flagList.Count(m => m == 1) > 0)
+                    {
+                        str += "1.褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�";
+                    }
+                    if (flagList.Count(m => m == 2) > 0)
+                    {
+                        str += "2.鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�";
+                    }
+                    if (flagList.Count(m => m == 3) > 0)
+                    {
+                        str += "4.鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�";
+                    }
+                    if (flagList.Count(m => m == 4) > 0)
+                    {
+                        str += "3.瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱銆�";
+                    }
+                    if (flagList.Count(m => m == 5) > 0)
+                    {
+                        str += "3.瑕佸嚭搴撶殑鎵樼洏姝e湪鎷嗘墭璇风◢鍚庝笅鍙戙��";
+                    }
+                    if (outDto1.Count > 0)
+                    {
+                        // 姝e紡杩愯绋嬪簭鏀惧紑
+                        var list2 = outDto1.Select(m => m.TaskNo).ToList();
+                        var jsonData = JsonConvert.SerializeObject(outDto1);
+                        string response = "";
+
+                        try
+                        {
+                            var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+                            response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
+                            var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
+
+                            ////瑙f瀽杩斿洖鏁版嵁 
+                            var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response);
+                            if (wcsModel.code == 200)
+                            {
+                                //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+                                new TaskServer().EditTaskIssueOk(list2, time1, time2);
+                                str += "涓嬪彂鎴愬姛";
+                            }
+                            else
+                            {
+                                new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message);
+                                throw new Exception(wcsModel.message);
+                            }
+                        }
+                        catch (Exception ex)
+                        {
+                            throw new Exception(ex.Message);
+                        }
+
+                    }
+
+                    return outDto1;
+                }
+                catch (Exception e)
+                {
+                    Db.RollbackTran();
+                    throw new Exception(e.Message);
+                }
+
+
+                #endregion
+            }
+            catch (Exception e)
+            {
+                throw new Exception(e.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇鏄惁闇�瑕佽繘琛岀Щ搴撴搷浣�
+        /// </summary>
+        /// <param name="oldAddress">瑕佸嚭搴撶殑搴撲綅鍦板潃</param>
+        /// <param name="aisle">閫氶亾鍙�</param>
+        /// <param name="addressList">瑕佸嚭鍙g殑鍌ㄤ綅闆嗗悎</param>
+        /// <param name="isOut">鏄惁鍑哄簱 1:鏈夋湭涓嬪彂鐨勪换鍔″湪鍓嶉潰</param>
+        /// <returns>闇�瑕佺Щ搴撶殑闆嗗悎锛堝鏋滀负绌哄垯涓嶉渶绉诲簱锛�</returns>
+        private List<string> IsNeedMoveLocate(SysStorageLocat lcoate,List<string> locateStrList, out int isOut)
+        {
+            var nowAddress = new List<string>(); //闇�瑕佺Щ搴撶殑闆嗗悎
+            // 010101 娲惧垪灞�
+            //var bol = String.CompareOrdinal(lcoate.LocatNo, lcoate.AisleOne);
+            
+            var sArray = lcoate.LocatNo.Substring(4,2);
+            var row = int.Parse(sArray);//鍌ㄤ綅鍒�
+            var sArray2 = lcoate.AisleOne.Substring(4, 2);
+            var row2 = int.Parse(sArray2); //閫氶亾鍙e垪
+
+            isOut = 0;
+           
+            var bol = row2 - row > 0;
+                
+            //鍚岀粍鐨勫偍浣嶉泦鍚�
+            var slotList = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == lcoate.RoadwayNo).ToList();
+            List<string> list;
+            
+            
+            if (bol)
+            {
+                //鍌ㄤ綅灏忎簬閫氶亾鍙�   鍊掑簭
+                list = slotList.Where(m => m.Column < row2 && m.Column > row).Select(m => m.LocatNo).ToList();
+            }
+            else
+            {
+                //鍌ㄤ綅澶т簬閫氶亾鍙�   姝e簭
+                list = slotList.Where(m => m.Column > row2 && m.Column < row).Select(m => m.LocatNo).ToList();
+            }
+
+            if (list.Any())
+            {
+                //鎺掗櫎鎺夊悓宸烽亾缁勪腑瑕佸嚭搴撶殑鍌ㄤ綅
+                if (locateStrList.Count != 0)
+                {
+                    list = list.Where(m => !locateStrList.Contains(m)).ToList();
+                }
+                //鍒ゆ柇鏄惁鏈夊叆搴撲腑鎴栨鍦ㄧЩ鍏ョ殑
+                var s = slotList.Where(m => list.Contains(m.LocatNo) && (m.Status == "2" || m.Status == "4")).Select(m => m.LocatNo).ToList();
+                if (s.Count > 0)
+                {
+                    isOut = 1;
+                    return nowAddress;
+                }
+                //鍒ゆ柇鏄惁鏈夊湪褰撳墠鍌ㄤ綅鍓嶆湭涓嬪彂鐨勪换鍔★紙闃叉鎾炶溅锛�
+                var w = Db.Queryable<LogTask>().Where(m => list.Contains(m.StartLocat) && m.IsSuccess == 0).Select(m => m.StartLocat).ToList();
+                if (w.Count > 0)
+                {
+                    isOut = 1;
+                    return nowAddress;
+                }
+                if (bol)
+                {
+                    //鍌ㄤ綅灏忎簬閫氶亾鍙�   鍊掑簭
+                    nowAddress = slotList.Where(m => list.Contains(m.LocatNo) && m.Status == "1").OrderByDescending(m => m.LocatNo).Select(m => m.LocatNo).ToList();
+                }
+                else
+                {
+                    //鍌ㄤ綅澶т簬閫氶亾鍙�   姝e簭
+                    nowAddress = slotList.Where(m => list.Contains(m.LocatNo) && m.Status == "1").OrderBy(m => m.LocatNo).Select(m => m.LocatNo).ToList();
+
+                }
+                if (nowAddress.Count > 0)
+                {
+                    return nowAddress;
+                }
+            }
+            else
+            {
+                return nowAddress;
+            }
+            
+
+            return nowAddress;
+        }
+
+        /// <summary>
+        /// 鑾峰彇绉诲簱鐩爣搴撲綅 瀵嗛泦搴�
+        /// </summary>
+        /// <param name="oldAddress">闇�瑕佺Щ鍔ㄧ殑搴撲綅鍦板潃</param>
+        /// <param name="slotOut">闇�瑕佺Щ鍔ㄧ殑搴撲綅鐨勫嚭鍙d腑杞綅</param>
+        /// <param name="billCode">鍑哄簱鍗曟嵁鎴栨槸娉㈡鍗曟嵁</param>
+        /// <param name="flags">涓浆鍙�</param>
+        /// <param name="refLanWayId">闇�鍥炵Щ鐨勫贩閬搃d</param>
+        /// <param name="refLanOutCode">闇�鍥炵Щ鐨勫贩閬撲腑杞彛</param>
+        /// <returns>鐩爣搴撲綅鍦板潃 涓�"" 鐩存帴涓嬪彂涓ゆ鍑哄簱鎸囦护</returns>
+        public string GetMiJiMoveAddress(string oldAddress, string slotOut)
+        {
+            var newAddress = ""; //鏂板簱浣�
+            var newLaneWayAddress = ""; //鏂板贩閬撳彛搴撲綅
+
+            // 鑾峰彇绉诲簱鐩爣鍌ㄤ綅
+
+            //
+            var sArray = oldAddress.Substring(4,2);
+            var ceng = int.Parse(sArray);
+            //
+            var sArray2 = slotOut.Substring(2, 2);
+            var row2 = sArray2;
+            //鍗佸瓧鍙�
+            var shiKou = new List<string>()
+            {
+                slotOut,
+                "070501",
+                "071301",
+                "070502",
+                "071302",
+            };
+            var shiKou3 = new List<addreClass>();
+            foreach (var item in shiKou)
+            {
+                var a = item.Substring(4, 2);
+                var b = item.Substring(2, 2);
+                if (int.Parse(a) != ceng) continue;
+                var s = Math.Abs(int.Parse(b) - int.Parse(row2));
+                if (shiKou3.Any(m => m.distNum == s)) continue;
+                shiKou3.Add(new addreClass()
+                {
+                    slotCode = item,
+                    distNum = s
+                });
+            }
+            //鏍规嵁鍗佸瓧鍙e樊鍊兼渶灏忕殑鎺掑簭
+            shiKou3 = shiKou3.OrderBy(m => m.distNum).ToList();
+
+                /**
+                //1 绉诲姩鍒版渶杩戠殑绌哄偍浣嶏紝蹇呴』鍥炵Щ銆�
+                //鏍规嵁鍥涘悜杞︾Щ鍔ㄨ建杩硅绠楀嚭鏈�杩戠┖鍌ㄤ綅銆�
+                //鍑哄簱瀹屾垚鍚庢牴鎹壒娆″彿 鐢熶骇鏃ユ湡 鍑哄彛璁$畻鍥炵Щ鍌ㄤ綅銆�
+
+                //2 绉诲姩閫傚悎瀛樻斁鐨勭粍锛岀郴缁熻嚜鍔ㄨ绠楁槸鍚﹀洖绉汇�� 
+                //鏍规嵁鎵规鍙� 鐢熶骇鏃ユ湡 鍑哄彛 鐗╂枡绛夎绠楀嚭绉诲簱鐩爣鍌ㄤ綅
+                //鍑哄簱瀹屾垚鍚庯紝鍒ゆ柇鏄惁鏈夋瘮褰撳墠搴撲綅鏇村悎閫傜殑瀛樺偍鍌ㄤ綅锛屾湁绉诲姩锛屾棤涓嶇Щ鍔ㄣ��
+                */
+
+                var oldSlot = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == oldAddress);
+                if (oldSlot == null)
+                {
+                    throw new Exception("鏈兘鎵惧埌鍌ㄤ綅淇℃伅");
+                }
+                #region 1涓嶉渶瑕佸洖绉荤殑
+
+                //鍚庢湡搴撳瓨鎵樼洏琛ㄦ敼浜嗗悗闇�瑕佸姞绛涢�夋潯浠舵墭鐩樼殑鐘舵�侊紙閫�璐�/棰勬嫞锛�
+                var tray1 = Db.Queryable<DataStockDetail>().Where(m => m.LocatNo == oldAddress).ToList();
+                //鏍规嵁鐗╂枡銆佹壒娆°�佹墭鐩樼姸鎬侊紙閫�璐�/棰勬嫞/鏆傚瓨绛夛級鍒嗙粍鍒ゆ柇
+                var d = tray1.GroupBy(m => new { m.SkuNo, m.LotNo, m.PalletTags });
+                var location = string.Empty;
+                if (d.Any())
+                {
+                    //鏃у偍浣嶅悓缁勭殑鍌ㄤ綅闆嗗悎
+                    var slotList = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == oldSlot.RoadwayNo).Select(m => m.LocatNo).ToList();
+                    foreach (var item in d)
+                    {
+                        foreach (var item2 in item)
+                        {
+                            var okLan = Db.Queryable<SysStorageRoadway>().Where(m => m.Status == "0" && m.IsDel == "0").Select(m => m.RoadwayNo).ToList();
+                            var tray2 = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == item2.SkuNo
+                            && m.LotNo == item2.LotNo && !slotList.Contains(m.LocatNo) && m.PalletTags == item2.PalletTags && okLan.Contains(m.RoadwayNo)).ToList();
+                            foreach (var s in tray2)
+                            {
+                                if (string.IsNullOrWhiteSpace(s.RoadwayNo))//鍒ゆ柇鏄惁鍦ㄥ簱澶栵紝濡傛槸璺宠繃
+                                {
+                                    continue;
+                                }
+                                var lan = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == s.RoadwayNo).OrderBy(m => m.LocatNo).ToList();
+                                //鍒ゆ柇鏄惁鏈夊叆搴撲腑銆佸嚭搴撲腑銆佺Щ鍏ヤ腑銆佺Щ鍑轰腑
+                                if (lan.Count(m => m.Status == "2" || m.Status == "3" || m.Status == "4" || m.Status == "5") > 0)
+                                {
+                                    continue;
+                                }
+                                if (lan.Count(m => m.Status == "0") > 0)
+                                {
+                                    
+                                    var bol = GetBecomingLocation(s.RoadwayNo, ref location);
+                                    if (bol && !string.IsNullOrWhiteSpace(location))
+                                    {
+                                        newAddress = location;
+                                        return newAddress;
+                                        
+                                    }
+
+                                }
+                            }
+                        }
+                    }
+
+                }
+
+                #endregion
+
+                #region 2闇�瑕佸洖绉荤殑
+
+                ////濡傛灉娌℃湁鎵惧埌鍚堥�傜殑鍌ㄤ綅
+                //if (string.IsNullOrWhiteSpace(newAddress))
+                //{
+                //    foreach (var s in shiKou3)
+                //    {
+                         
+                //        var r = int.Parse(s.slotCode.Substring(0, 2));
+                //        var l = int.Parse(s.slotCode.Substring(2, 2));
+                //        var c = int.Parse(s.slotCode.Substring(4, 2));
+                //        //鏌ヨ绌哄偍浣�
+                //        var sqlString = $@"select LocatNo,Row,Column,Layer,(ABS(Row-{r}) + ABS(Column-{l}) ) as distNum 
+                //                from SysStorageLocat where (AisleOneRow  = {r} or AisleTwoRow = {r}) and Status in (0) and
+                //                 RoadwayNo !='{oldSlot.RoadwayNo}' and RoadwayNo not in(select RoadwayNo from SysStorageRoadway where Status = 1) order by distNum,SlotCode";
+
+                //        var addressModels = dataContext.ExecuteQuery<addreClass>(sqlString).ToList();
+                //        foreach (var item in addressModels)
+                //        {                            銆�
+                            
+                            
+                //            newAddress = item.slotCode;
+                //            var dz = newAddress.Split(new char[] { '-' });
+                //            var l1 = dz[1];
+                //            var c1 = dz[0];
+                //            newLaneWayAddress = $"{c1}-{l1}-{a[2]}";
+                //            flags = newLaneWayAddress;
+
+                //            var slotModel = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == item.slotCode);
+
+                //            var lan = dataContext.WmsBaseSlot.Where(m => m.SlotLanewayId == slotModel.SlotLanewayId).ToList();
+                //            if (slotModel.SlotRow > int.Parse(a[2]))
+                //            {
+                //                // 鍙栨渶涓婇潰涓�鎺�
+                //                lan = lan.OrderBy(m => m.SlotCode).ToList();
+                //                for (int i = 0; i < lan.Count; i++)
+                //                {
+                //                    var slot = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == lan[i].SlotCode);
+                //                    if (slot.SlotStatus == 0)
+                //                    {
+                //                        if (i == lan.Count - 1)
+                //                        {
+                //                            newAddress = lan[lan.Count - 1].SlotCode;
+
+                //                            break;
+                //                        }
+                //                        else
+                //                        {
+                //                            continue;
+                //                        }
+
+                //                    }
+                //                    else
+                //                    {
+                //                        newAddress = lan[i - 1].SlotCode;
+                //                        break;
+                //                    }
+                //                }
+
+                //            }
+                //            else
+                //            {
+                //                // 鍙栨渶涓嬮潰涓�鎺�
+                //                lan = lan.OrderByDescending(m => m.SlotCode).ToList();
+                //                for (int i = 0; i < lan.Count; i++)
+                //                {
+                //                    var slot = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == lan[i].SlotCode);
+                //                    if (slot.SlotStatus == 0)
+                //                    {
+                //                        if (i == lan.Count - 1)
+                //                        {
+                //                            newAddress = lan[lan.Count - 1].SlotCode;
+                //                            break;
+                //                        }
+                //                        else
+                //                        {
+                //                            continue;
+                //                        }
+
+                //                    }
+                //                    else
+                //                    {
+                //                        newAddress = lan[i - 1].SlotCode;
+                //                        break;
+                //                    }
+                //                }
+                //            }
+                //            //娣诲姞鍥炵Щ浠诲姟
+                //            AddHyTask(oldAddress, newAddress, newLaneWayAddress, oldSlot.SlotLanewayId, slotOut, billCode);
+                //            refLanWayId = slotModel.SlotLanewayId;
+                //            refLanOutCode = newLaneWayAddress;
+                //            //9锛氶攣瀹氬偍浣� 
+                //            var updateSlot = dataContext.WmsBaseSlot.Where(m => m.SlotLanewayId == slotModel.SlotLanewayId).ToList();
+                //            var newAddressRow = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == newAddress);
+                //            if (newAddressRow.SlotRow > int.Parse(a[2]))
+                //            {
+                //                updateSlot = updateSlot.Where(m => m.SlotRow < newAddressRow.SlotRow && m.SlotRow > int.Parse(a[2])).OrderBy(m => m.SlotCode).ToList();
+                //            }
+                //            else
+                //            {
+                //                updateSlot = updateSlot.Where(m => m.SlotRow > newAddressRow.SlotRow && m.SlotRow < int.Parse(a[2])).OrderByDescending(m => m.SlotCode).ToList();
+
+                //            }
+                //            foreach (var source in updateSlot)
+                //            {
+                //                if (source.SlotCode == newAddress)
+                //                {
+                //                    continue;
+                //                }
+                //                if (source.SlotStatus == 0)
+                //                {
+                //                    source.SlotStatus = 8;
+                //                }
+                //            }
+
+                //            if (updateSlot.Count <= 0)
+                //            {
+                //                refLanWayId = "";
+                //                refLanOutCode = "";
+                //            }
+                //            dataContext.SubmitChanges();
+                //            return newAddress;
+                            
+
+                            
+                //        }
+
+                //    }
+
+                //}
+
+                return newAddress;
+                #endregion
+
+            
+        }
+
+        /// <summary>
+        /// 鑾峰彇绉诲簱鍚堥�傜殑鍌ㄤ綅 瀵嗛泦搴�
+        /// </summary>
+        /// <param name="laneWayId">鍚堥�傜粍鐨勫贩閬撳彿</param>
+        /// <param name="location">鍒嗛厤鍌ㄤ綅</param>
+        /// <returns>true锛氬瓨鍦ㄥ悎閫傚偍浣�   False锛氫笉瀛樺湪鍚堥�傚偍浣�</returns>
+        private bool GetBecomingLocation(string laneWayId, ref string location)
+        {
+            bool bl = false;
+            
+            // 寰幆鍒ゆ柇褰撳墠缁勬槸鍚︽湁鍓╀綑鍌ㄤ綅
+            string sqlString = string.Empty;
+            location = "";
+            
+            // 鍒ゆ柇鍌ㄤ綅缁勬槸鍚︽湁绌哄偍浣�   鍏宠仈搴撳瓨鏄庣粏琛ㄥ彲闃叉鍌ㄤ綅鐘舵�佷笉鍑嗙‘閬垮厤閫犳垚婊″叆寮傚父//not in ('1','2','4','6','7','8')
+            sqlString = $"select LocatNo,Column,AisleOne from SysStorageLocat where RoadwayNo = {laneWayId} and Status in ('0') and LocatNo not in (select LocatNo from DataStockDetail where RoadwayNo = { laneWayId}) order by Row;";
+            var slotModel =Db.SqlQueryable<LocateInfo>(sqlString).ToList();
+            if (slotModel.Count == 0)
+            {
+                bl = false;
+            }
+            else  // 瀛樺湪绌哄偍浣�
+            {
+                // 鍒ゆ柇褰撳墠缁勫悎閫傜殑鍌ㄤ綅鍦板潃
+                var numstr = slotModel[0].AisleOne.Substring(4,2);
+                int aisleRow = int.Parse(numstr);
+
+                if (slotModel[0].Column > aisleRow)
+                {
+                    // 鍙栨渶涓婇潰涓�鎺�
+                    location = slotModel[0].LocatNo;
+
+                }
+                else
+                {
+                    // 鍙栨渶涓嬮潰涓�鎺�
+
+                    location = slotModel[slotModel.Count - 1].LocatNo;
+                }
+                
+                bl = true;
+            }
+
+            
+
+            return bl;
+        }
+
+        private class addreClass
+        {
+            public string slotCode { get; set; }
+            public int distNum { get; set; }
+        }
+        public class LocateInfo
+        {
+            public string LocatNo { get; set; }
+            public int Column { get; set; }
+            public string AisleOne { get; set; }
+             
+        }
+
+        /// <summary>
+        /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙鍑哄簱鎴愬姛锛�
+        /// </summary>
+        /// <param name="taskNo"></param>
+        /// <param name="userId"></param>
+        /// <exception cref="Exception"></exception>
+        public void ExportSuccess(string taskNo, int userId)
+        {
+            try
+            {
+                //褰撳墠浠诲姟淇℃伅
+                var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
+                if (task == null)
+                {
+                    throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
+                }
+                if (task.Status == "2")
+                {
+                    throw new Exception("褰撳墠浠诲姟宸插畬鎴�");
+                }
+                Db.BeginTran();
+                //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅
+                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList();
+                var locateNo = stockDetail.Select(m => m.LocatNo).Distinct().FirstOrDefault();
+                //褰撳墠浠诲姟涓殑鍌ㄤ綅淇℃伅
+                var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo);
+                try
+                {
+                    task.Status = "2";//浠诲姟鐘舵��
+                    task.IsSend = 0;
+                    task.IsCancel = 0;
+                    task.IsFinish = 0;
+                    task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿
+                    Db.Updateable(task).ExecuteCommand();
+                    if (locate != null)
+                    {
+                        locate.Status = "0"; // 鏇存敼褰撳墠浠诲姟涓殑鍌ㄤ綅鐘舵�侊紙鏀逛负0绌哄偍浣嶏級
+                        Db.Updateable(locate).ExecuteCommand();
+                    }
+                    foreach (var item in stockDetail)
+                    {
+                        if (item.SkuNo == "100099")//鍒ゆ柇鏄惁鏄┖鎵樺嚭搴�
+                        {
+                            //鍒ゆ柇鎬诲簱瀛樻槸鍚︿负0锛屽鏋滀负0鍒犻櫎 鍚﹀垯鍑忓幓鏁伴噺
+                            var stock = Db.Queryable<DataStock>().First(m => m.SkuNo == "100099");
+
+                            if (stock != null)
+                            {
+                                if (item.LockQty != null)
+                                {
+                                    stock.Qty -= item.LockQty.Value;
+                                    stock.LockQty -= item.LockQty.Value;
+                                    Db.Updateable(stock).ExecuteCommand();
+                                }
+
+                                if (stock.Qty == 0)
+                                {
+                                    Db.Deleteable(stock).ExecuteCommand();
+                                }
+                            }
+
+                            //鎵樼洏鐘舵�佹敼涓烘湭浣跨敤
+                            var sCode = Db.Queryable<SysPallets>().First(m => m.PalletNo == item.PalletNo);
+                            if (sCode != null)
+                            {
+                                sCode.Status = "0";
+                                Db.Updateable(sCode).ExecuteCommand();
+                            }
+                            Db.Deleteable(item).ExecuteCommand();
+
+                            continue;
+                        }
+                        item.LocatNo = "";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛�
+                        item.WareHouseNo = "";//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級
+                        item.RoadwayNo = "";//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級
+                        item.AreaNo = "";//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級
+                        
+                    }
+                    //鍑哄簱娴佹按锛堟洿鏀圭姸鎬侊級
+                    var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.TaskNo == taskNo || (m.Status == "1" && m.PalletNo == task.PalletNo))).ToList();
+                    var PalletType = "0"; //0锛氱墿鏂欐墭  1锛氱┖鎵樼洏鎵�
+                    
+                    foreach (var item in allot)
+                    {
+                        if (item.SkuNo == "100099")
+                        {
+                            item.Status = "5";
+                            item.CompleteQty += stockDetail[0].Qty;
+                            PalletType = "1";
+                        }
+                        else
+                        {
+                            item.Status = "2";
+                        }
+
+                    }
+
+                    var endLocateList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && (m.AreaNo == "B02" || m.AreaNo == "B05")).Select(m=>m.LocatNo).ToList();
+                    //鍒ゆ柇鏄惁鏄師杈呮枡鍑哄簱浠诲姟  璐ф灦鍌ㄤ綅=銆嬪钩搴撳偍浣�
+                    if ( endLocateList.Contains(task.EndLocat) && PalletType == "0")
+                    {
+                        //淇敼鐩爣鍦板潃鐘舵��
+                        var endLocat = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.LocatNo == task.EndLocat);
+                        endLocat.Status = "1";
+                        Db.Updateable(endLocat).ExecuteCommand();
+                        foreach (var item in stockDetail)
+                        {
+                            item.LocatNo = endLocat.LocatNo;//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛�
+                            item.WareHouseNo = endLocat.WareHouseNo;//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級
+                            item.RoadwayNo = endLocat.RoadwayNo;//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級
+                            item.AreaNo = endLocat.AreaNo;//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級
+                        }
+                    }
+                    Db.Updateable(stockDetail).ExecuteCommand();
+                    Db.Updateable(allot).ExecuteCommand();
+
+                    if (userId != 0)
+                    {
+                        //娣诲姞鎿嶄綔鏃ュ織璁板綍
+                        var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId);
+                    }
+
+                    Db.CommitTran();
+                }
+                catch (Exception ex)
+                {
+                    Db.RollbackTran();
+                    throw new Exception(ex.Message);
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙绉诲簱鎴愬姛锛�
+        /// </summary>
+        /// <param name="taskNo">浠诲姟鍙�</param>
+        /// <param name="userId">鎿嶄綔浜�</param>
+        /// <exception cref="Exception"></exception>
+        public void RelocationSuccess(string taskNo, int userId)
+        {
+            try
+            {
+                //褰撳墠浠诲姟淇℃伅
+                var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
+                if (task == null)
+                {
+                    throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
+                }
+                if (task.Status == "2")
+                {
+                    throw new Exception("褰撳墠浠诲姟宸插畬鎴�");
+                }
+                Db.BeginTran();
+                //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅
+                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList();
+                //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅
+                //褰撳墠浠诲姟涓殑鍘熷偍浣�
+                var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat);
+                if (locate == null)
+                {
+                    throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
+                }
+                var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat);
+                if (locate2 == null)
+                {
+                    throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
+                }
+                //骞冲簱涓偍浣嶉泦鍚�
+                var pingKuLocate = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == "W04" && m.IsDel == "0").ToList();
+                var pingKuList = pingKuLocate.Select(m => m.LocatNo).ToList();
+                try
+                {
+
+                    //task.Status = "5";//浠诲姟鐘舵��
+                    ////鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱  
+                    //if (pingKuList.Contains(task.StartLocat) && pingKuList.Contains(task.EndLocat))
+                    //{
+                        task.Status = "2";
+                    //}
+                    
+                    task.IsSend = 0;
+                    task.IsCancel = 0;
+                    task.IsFinish = 0;
+                    task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿
+                    Db.Updateable(task).ExecuteCommand();
+
+                    #region 淇敼鍌ㄤ綅鐘舵��
+
+                    if (!pingKuList.Contains(task.StartLocat))
+                    {
+                        //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0
+                        locate.Status = "0";
+                        Db.Updateable(locate).ExecuteCommand();
+                    }
+                    
+
+                    //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1
+                    locate2.Status = "1";
+                    Db.Updateable(locate2).ExecuteCommand();
+                    //鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱  
+                    if ( pingKuList.Contains(task.EndLocat))
+                    {
+                        foreach (var item in stockDetail)
+                        {
+                            item.WareHouseNo = locate2.WareHouseNo;
+                            item.AreaNo = locate2.AreaNo;
+                            item.RoadwayNo = locate2.RoadwayNo;
+                            item.LocatNo = locate2.LocatNo;
+                        }
+                        Db.Updateable(stockDetail).ExecuteCommand();
+                    }
+                    
+
+                    #endregion
+
+                    Db.CommitTran();
+                }
+                catch (Exception ex)
+                {
+                    Db.RollbackTran();
+                    throw new Exception(ex.Message);
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// AGV浠诲姟鍙栬揣瀹屾垚鍙嶉
+        /// </summary>
+        /// <param name="taskNo"></param> 
+        public void AGVQuHuoSuccess(string taskNo)
+        {
+            try
+            {
+                Db.BeginTran();
+                var task = Db.Queryable<LogTask>().First(m=>m.IsDel =="0" && m.TaskNo == taskNo);
+                if (task == null)
+                {
+                    throw new Exception("娌℃湁鏌ヨ鍒颁换鍔′俊鎭�");
+                }
+                if (task.Status!="1")
+                {
+                    throw new Exception("浠诲姟鐘舵�佷笉鏄鍦ㄦ墽琛岋紝璇锋牳瀹�");
+                }
+                var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat && m.IsDel == "0");
+                if (locate == null)
+                {
+                    throw new Exception("娌℃湁鏌ヨ鍒拌捣濮嬪偍浣嶄俊鎭�");
+                }
+                if (locate.WareHouseNo!="W04")
+                {
+                    throw new Exception("璧峰鍌ㄤ綅涓嶆槸骞冲簱鍌ㄤ綅锛岃鏍稿疄");
+                }
+                locate.Status = "0"; //鏇存敼鍌ㄤ綅鐘舵�佷负绌哄偍浣�
+                Db.Updateable(locate).ExecuteCommand();
+                //鏌ヨ鍑烘墭鐩樹俊鎭�  鏇存敼搴撳瓨鍌ㄤ綅淇℃伅
+                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == task.PalletNo).ToList();
+                foreach (var item in stockDetail)
+                {
+                    item.WareHouseNo = "";
+                    item.AreaNo = "";
+                    item.RoadwayNo = "";
+                    item.LocatNo = "";
+                }
+                Db.Updateable(stockDetail).ExecuteCommand();
+                Db.CommitTran();
+            }
+            catch (Exception e)
+            {
+                Db.RollbackTran();
+                throw new Exception(e.Message);
+            }
+        }
+
+        
         #endregion
 
         #endregion
@@ -4103,9 +5577,6 @@
                                     OutMode = toLocation,  //鍑哄簱鍙� 
                                     Order = 1,
 
-                                    UnstackingMode=unstackingMode2,//鎷h揣鏂瑰紡 0鏈哄櫒鎷嗘墭鍑�  1 浜哄伐鎷h揣鍑�
-                                    CompleteQty= outCount2,  //鎷嗙殑浠舵暟
-                                    BoxexQty = outCount,      //鎬讳欢鏁�
                                 });
                                 taskNoStr = exTask.TaskNo;
                             }
@@ -4220,9 +5691,7 @@
                                                     OutMode = toLocation,  //鐩爣鍦板潃
                                                     Order = 1,
 
-                                                    UnstackingMode = "1",//鎷h揣鏂瑰紡 0鏈哄櫒鎷嗘墭鍑�  1 浜哄伐鎷h揣鍑�
-                                                    CompleteQty = 0,  //鎷嗙殑浠舵暟
-                                                    BoxexQty = 0,      //鎬讳欢鏁�
+                                                    
                                                 });
                                                 #endregion
 
@@ -4278,9 +5747,6 @@
                                     OutMode = toLocation,  //鐩爣鍦板潃
                                     Order = 1,
 
-                                    UnstackingMode = unstackingMode2,//鎷h揣鏂瑰紡 0鏈哄櫒鎷嗘墭鍑�  1 浜哄伐鎷h揣鍑�
-                                    CompleteQty = outCount2,  //鎷嗙殑浠舵暟
-                                    BoxexQty = outCount,      //鎬讳欢鏁�
                                 });
                                 taskNoStr = exTask1.TaskNo;
                                 #endregion
@@ -4451,338 +5917,6 @@
             }
         }
         
-        //wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙鍑哄簱鎴愬姛锛�
-        public void ExportSuccess(string taskNo, int userId)
-        {
-            try
-            {
-                //褰撳墠浠诲姟淇℃伅
-                var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
-                if (task == null)
-                {
-                    throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
-                }
-                if (task.Status == "2")
-                {
-                    throw new Exception("褰撳墠浠诲姟宸插畬鎴�");
-                }
-                Db.BeginTran();
-                //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅
-                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList();
-                var locateNo = stockDetail.Select(m => m.LocatNo).Distinct().FirstOrDefault();
-                //褰撳墠浠诲姟涓殑鍌ㄤ綅淇℃伅
-                var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo);
-                try
-                {
-                    task.Status = "2";//浠诲姟鐘舵��
-                    task.IsSend = 0;
-                    task.IsCancel = 0;
-                    task.IsFinish = 0;
-                    task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿
-                    Db.Updateable(task).ExecuteCommand();
-                    if (locate != null)
-                    {
-                        locate.Status = "0"; // 鏇存敼褰撳墠浠诲姟涓殑鍌ㄤ綅鐘舵�侊紙鏀逛负0绌哄偍浣嶏級
-                        Db.Updateable(locate).ExecuteCommand();
-                    }
-                    foreach (var item in stockDetail)
-                    {
-                        if (item.SkuNo == "100099")//鍒ゆ柇鏄惁鏄┖鎵樺嚭搴�
-                        {
-                            //鍒ゆ柇鎬诲簱瀛樻槸鍚︿负0锛屽鏋滀负0鍒犻櫎 鍚﹀垯鍑忓幓鏁伴噺
-                            var stock = Db.Queryable<DataStock>().First(m => m.SkuNo == "100099");
-
-                            if (stock != null)
-                            {
-                                if (item.LockQty != null)
-                                {
-                                    stock.Qty -= item.LockQty.Value;
-                                    stock.LockQty -= item.LockQty.Value;
-                                    Db.Updateable(stock).ExecuteCommand();
-                                }
-
-                                if (stock.Qty == 0)
-                                {
-                                    Db.Deleteable(stock).ExecuteCommand();
-                                }
-                            }
-
-                            //鎵樼洏鐘舵�佹敼涓烘湭浣跨敤
-                            var sCode = Db.Queryable<SysPallets>().First(m => m.PalletNo == item.PalletNo);
-                            if (sCode != null)
-                            {
-                                sCode.Status = "0";
-                                Db.Updateable(sCode).ExecuteCommand();
-                            }
-                            Db.Deleteable(item).ExecuteCommand();
-
-                            #region 鎷h揣淇℃伅
-
-                            //var pickQty = 0;//鎷h揣鐨勬暟閲�
-                            //var comList = new List<BllCompleteDetail>();
-                            //    //娣诲姞鎷h揣鏄庣粏
-                            //    var completeDetail = new BllCompleteDetail()
-                            //    {
-                            //        SONo = "",
-                            //        SODetailNo = 0,
-                            //        ExportAllotId = 0,
-                            //        StockId = exportAllot.StockId,
-                            //        BoxNo = item.BoxNo,
-                            //        BoxNo2 = item.BoxNo2,
-                            //        BoxNo3 = item.BoxNo3,
-
-                            //        LotNo = exportAllot.LotNo,
-                            //        LotText = exportAllot.LotText,
-                            //        SupplierLot = exportAllot.SupplierLot,
-                            //        SkuNo = exportAllot.SkuNo,
-                            //        SkuName = exportAllot.SkuName,
-                            //        Standard = exportAllot.Standard,
-                            //        PalletNo = palletNo,
-                            //        CompleteQty = item.Qty,
-
-                            //        CreateUser = userId
-                            //    };
-                            //    comList.Add(completeDetail);
-
-                            //    //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
-                            //    Db.Deleteable(item).ExecuteCommand();
-                            //    pickQty += item.Qty;
-
-                            //    exportAllot.Status = "5"; //寰呭洖搴� : 宸插畬鎴�
-                            //    exportAllot.CompleteQty += item.Qty; //鎷h揣鏁伴噺
-                            //    exportAllot.UpdateUser = userId; //淇敼浜�
-                            //    exportAllot.UpdateTime = serverTime; //淇敼鏃堕棿
-
-                            //    Db.Updateable(exportAllot).ExecuteCommand();
-
-                            //    //楠岃瘉鎷h揣淇℃伅鏄惁涓哄凡瀹屾垚
-                            //    if (exportAllot.Status == "5")
-                            //    {
-                            //        break;
-                            //    }
-
-
-                            //Db.Insertable(comList).ExecuteCommand();
-
-
-                            #endregion
-
-                            continue;
-                        }
-                        item.LocatNo = "";//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛�
-                        item.WareHouseNo = "";//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級
-                        item.RoadwayNo = "";//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級
-                        item.AreaNo = "";//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級
-                        Db.Updateable(item).ExecuteCommand();
-                    }
-                    //鍑哄簱娴佹按锛堟洿鏀圭姸鎬侊級
-                    var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.TaskNo == taskNo || (m.Status == "1" && m.PalletNo == task.PalletNo))).ToList();
-                    var PalletType = "0"; //0锛氱墿鏂欐墭  1锛氱┖鎵樼洏鎵�
-                    var soNo = "";
-                    var sku = "";
-                    foreach (var item in allot)
-                    {
-                        if (item.SkuNo == "100099")
-                        {
-                            item.Status = "5";
-                            item.CompleteQty += stockDetail[0].Qty;
-                            PalletType = "1";
-                        }
-                        else
-                        {
-                            item.Status = "2";
-                            soNo = item.SONo;
-                            sku = item.SkuNo;
-                        }
-
-                    }
-                    //涓嬪彂鍥涙ゼ璋冨害AGV鐨勪换鍔�
-                    if ((task.EndLocat == "outMode" || task.EndLocat == "outMode") && PalletType == "0")
-                    {
-                        foreach (var item in allot)
-                        {
-                            var detail = Db.Queryable<DataStockDetail>().First(m => m.Id == item.StockId);
-                            detail.SONo = item.SONo;
-                            Db.Updateable(detail).ExecuteCommand();
-                        }
-
-                        var locatePing = new AllotLocation().GetPingLocate(soNo, sku);
-                        if (locatePing == null)
-                        {
-                            throw new Exception("骞冲簱鏈煡璇㈠埌绌轰綅缃�");
-                        }
-                        var exTask = new LogTask    //鍑哄簱浠诲姟
-                        {
-                            TaskNo = new Common().GetMaxNo("TK"),
-                            Sender = "WMS",
-                            Receiver = "AGV",
-                            IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
-
-                            StartLocat = task.EndLocat,//璧峰浣嶇疆
-                            EndLocat = locatePing.LocatNo,//outMode,//鐩爣浣嶇疆
-                            PalletNo = task.PalletNo,//鎵樼洏鐮�
-                            IsSend = 1,//鏄惁鍙啀娆′笅鍙�
-                            IsCancel = 1,//鏄惁鍙彇娑�
-                            IsFinish = 1,//鏄惁鍙畬鎴�
-                            Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
-                            Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
-                            OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
-                            Msg = "浠�" + task.EndLocat + "鍒�" + locatePing.LocatNo + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
-                        };
-                        Db.Insertable(exTask).ExecuteCommand();
-
-                        var outDto = new List<OutCommandDto>
-                        {
-                            new OutCommandDto()
-                            {
-                                PalletNo = task.PalletNo,//鎵樼洏鍙�
-                                StartLocate = task.EndLocat, // 璧峰浣嶇疆
-                                StartRoadway = "",//鍏跺疄宸烽亾
-                                EndLocate = locatePing.LocatNo,//outMode, // 鐩爣浣嶇疆 
-                                TaskNo = exTask.TaskNo, // 浠诲姟鍙�
-                                TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� 
-                                OutMode = "",  //鍑哄簱鍙� 
-                                Order = 1,
-
-                                //UnstackingMode = unstackingMode2,//鎷h揣鏂瑰紡 0鏈哄櫒鎷嗘墭鍑�  1 浜哄伐鎷h揣鍑�
-                                //CompleteQty = outCount2,  //鎷嗙殑浠舵暟
-                                //BoxexQty = outCount,      //鎬讳欢鏁�
-                            }
-                        };
-                        // 姝e紡杩愯绋嬪簭鏀惧紑
-                        var list2 = outDto.Select(m => m.TaskNo).ToList();
-                        var jsonData = JsonConvert.SerializeObject(outDto);
-                        string response = "";
-
-                        try
-                        {
-                            var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
-                            //response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
-                            var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
-
-                            //////瑙f瀽杩斿洖鏁版嵁 
-                            //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
-                            //if (wcsModel.StatusCode == 0)
-                            //{
-                            //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
-                            new TaskServer().EditTaskIssueOk(list2, time1, time2); 
-                            //}
-                            //if (wcsModel.StatusCode == -1)
-                            //{
-                            //    new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg);
-                            //    throw new Exception(wcsModel.Msg);
-                            //}
-                        }
-                        catch (Exception ex)
-                        {
-                            throw new Exception(ex.Message);
-                        }
-                    }
-
-                    Db.Updateable(allot).ExecuteCommand();
-
-                    if (userId != 0)
-                    {
-                        //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                        var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId);
-                    }
-
-                   
-
-                    Db.CommitTran();
-                }
-                catch (Exception ex)
-                {
-                    Db.RollbackTran();
-                    throw new Exception(ex.Message);
-                }
-            }
-            catch (Exception ex)
-            {
-                throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message);
-            }
-        }
-
-        /// <summary>
-        /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙绉诲簱鎴愬姛锛�
-        /// </summary>
-        /// <param name="taskNo">浠诲姟鍙�</param>
-        /// <param name="userId">鎿嶄綔浜�</param>
-        /// <exception cref="Exception"></exception>
-        public void RelocationSuccess(string taskNo, int userId)
-        {
-            try
-            {
-                //褰撳墠浠诲姟淇℃伅
-                var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
-                if (task == null)
-                {
-                    throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
-                }
-                if (task.Status == "2")
-                {
-                    throw new Exception("褰撳墠浠诲姟宸插畬鎴�");
-                }
-                Db.BeginTran();
-                //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅
-                var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList();
-                //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅
-                //褰撳墠浠诲姟涓殑鍘熷偍浣�
-                var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat);
-                if (locate == null)
-                {
-                    throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
-                }
-                var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat);
-                if (locate2 == null)
-                {
-                    throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�");
-                }
-
-                try
-                {
-                    task.Status = "2";//浠诲姟鐘舵��
-                    task.IsSend = 0;
-                    task.IsCancel = 0;
-                    task.IsFinish = 0;
-                    task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿
-                    Db.Updateable(task).ExecuteCommand();
-
-                    #region 淇敼鍌ㄤ綅鐘舵��
-
-                    //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0
-                    locate.Status = "0";
-                    Db.Updateable(locate).ExecuteCommand();
-
-                    //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1
-                    locate2.Status = "1";
-                    Db.Updateable(locate2).ExecuteCommand();
-                    foreach (var item in stockDetail)
-                    {
-                        item.WareHouseNo = locate2.WareHouseNo;
-                        item.AreaNo = locate2.AreaNo;
-                        item.RoadwayNo = locate2.RoadwayNo;
-                        item.LocatNo = locate2.LocatNo;
-                    }
-                    Db.Updateable(stockDetail).ExecuteCommand();
-
-                    #endregion
-
-                    Db.CommitTran();
-                }
-                catch (Exception ex)
-                {
-                    Db.RollbackTran();
-                    throw new Exception(ex.Message);
-                }
-            }
-            catch (Exception ex)
-            {
-                throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message);
-            }
-        }
-
-
         //閲嶆柊涓嬪彂鍑哄簱浠诲姟
         public OutCommandDto AgainSendSoTask(string taskNo, int userId, string url)
         {
@@ -4839,17 +5973,17 @@
                     var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
 
                     ////瑙f瀽杩斿洖鏁版嵁 
-                    var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
-                    if (wcsModel.StatusCode == 0)
+                    var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response);
+                    if (wcsModel.code == 200)
                     {
                         //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
                         new TaskServer().EditTaskIssueOk(list, time1, time2);
 
                     }
-                    if (wcsModel.StatusCode == -1)
+                    else
                     {
-                        new TaskServer().EditTaskIssueNo(list, time1, time2, wcsModel.Msg);
-                        throw new Exception($"wcs杩斿洖鐘舵�佸紓甯革細{wcsModel.Msg}");
+                        new TaskServer().EditTaskIssueNo(list, time1, time2, wcsModel.message);
+                        throw new Exception($"wcs杩斿洖鐘舵�佸紓甯革細{wcsModel.message}");
                     }
                 }
                 catch (Exception ex)

--
Gitblit v1.8.0