From f512b0475560ed449f936e0b7a27ba197e6bafe5 Mon Sep 17 00:00:00 2001
From: IPC-610 <IPC-610@DESKTOP-6LEOOS3>
Date: 星期四, 26 九月 2024 15:16:08 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/liudongl/jc24-wms

---
 Wms/Wms/appsettings.json                           |    1 
 Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs |    2 
 Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs    |   48 ++
 Wms/Wms/Tools/ApiUrlConfig.cs                      |    6 
 Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs            |  787 ++++++++++++++++++++++++++++++++++++++++++------
 Wms/Wms/Controllers/BllAsnController.cs            |    8 
 Wms/Model/InterFaceModel/HttpModel.cs              |   44 ++
 Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs       |   40 +-
 8 files changed, 805 insertions(+), 131 deletions(-)

diff --git a/Wms/Model/InterFaceModel/HttpModel.cs b/Wms/Model/InterFaceModel/HttpModel.cs
index 57c5de1..bb9669c 100644
--- a/Wms/Model/InterFaceModel/HttpModel.cs
+++ b/Wms/Model/InterFaceModel/HttpModel.cs
@@ -315,6 +315,50 @@
         public int? QtyCount { get; set; }
 
     }
+
+    //鍏ュ簱浠诲姟鍗曟嵁淇℃伅
+    public class ResponseOrderTaskModel
+    {
+        /// <summary>
+        /// WMS涓嬪彂鍗曞彿
+        /// </summary>
+        public string? OrderNo { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string? TaskNo { get; set; }
+
+        /// <summary>
+        /// 鎵规鍙�
+        /// </summary>
+        public string? LotNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string? SkuNo { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string? SkuName { get; set; }
+
+        /// <summary>
+        /// 瑙勬牸
+        /// </summary>
+        public string? BoxType { get; set; }
+
+        /// <summary>
+        /// 鎬荤鏁�/璁″垝绠辨暟/棰勪及绠辨暟
+        /// </summary>
+        public int? Qty { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public int? TaskType { get; set; }
+    }
     #endregion
 
     #region AGV-Model
diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
index a23c682..34dfe6f 100644
--- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -18,6 +18,8 @@
 using WMS.Entity.SysEntity;
 using WMS.IBLL.IBllAsnServer;
 using WMS.BLL.SysServer;
+using System.Threading.Tasks;
+using System.Security.Policy;
 
 namespace WMS.BLL.BllAsnServer
 {
@@ -254,7 +256,7 @@
         }
 
         //娣诲姞鍏ュ簱鍗曟嵁
-        public string AddArrivalNotice(ArrivalNoticeVm model)
+        public string AddArrivalNotice(ArrivalNoticeVm model, string url)
         {
             string strMessage = "";
             string sqlString = string.Empty;
@@ -262,6 +264,7 @@
             //0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 2锛氫腑闂村搧鍏ュ簱 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欏叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� 7锛氬瘎瀛樺叆搴�
             var TypeLot = "1, 2, 5, 6, 7"; //鎵规鍙负绌哄崟鎹被鍨�
 
+            var addOder = new List<ResponseOrderTaskModel>();
             try
             {
                 if (model.Origin == "褰曞叆")
@@ -341,6 +344,20 @@
                     sqlDetailStr += $"'{model.ASNNo}','{detailModel.SkuNo}','{detailModel.SkuName}','{detailModel.Standard}', ";
                     sqlDetailStr += $"'{detailModel.LotNo}','{detailModel.LotText}','{detailModel.Qty}','{detailModel.PackagNo}','{detailModel.Price}', ";
                     sqlDetailStr += $"{detailModel.Money},'{detailModel.IsBale}','{detailModel.IsBelt}','{detailModel.SupplierLot}','0','{detailModel.UDF1}','{detailModel.UDF2}','{detailModel.UDF3}','{detailModel.UDF4}','{detailModel.UDF5}','{model.CreateUser}');";
+
+                    if (model.Type == "1")
+                    {
+                        addOder.Add(new ResponseOrderTaskModel()
+                        {
+                            OrderNo = model.ASNNo,
+                            LotNo = detailModel.LotNo,
+                            SkuNo = detailModel.SkuNo,
+                            SkuName = detailModel.SkuName,
+                            BoxType = detailModel.Standard,
+                            Qty = (int)detailModel.Qty,
+                            TaskType = 0
+                        });
+                    }
                 }
 
                 if (sqlDetailStr == string.Empty)
@@ -359,6 +376,35 @@
                 if (rowCount > 0 && rowDetailCount > 0)
                 {
                     new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鍏ュ簱鍗曟嵁", model.ASNNo, "娣诲姞", $"娣诲姞浜嗗崟鎹彿涓簕model.ASNNo}鐨勫崟鎹俊鎭�", Convert.ToInt32(model.CreateUser));
+
+                    if (addOder.Count > 0)
+                    {
+                        // 姝e紡杩愯绋嬪簭鏀惧紑
+                        var jsonData = JsonConvert.SerializeObject(addOder);
+                        string response = "";
+
+                        try
+                        {
+                            var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+                            //缁橶CS涓嬪彂鍏ュ簱鍗曚俊鎭�
+                            response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS");
+
+                            //////瑙f瀽杩斿洖鏁版嵁 
+                            var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response);
+                            if (wcsModel.StatusCode == 0)
+                            {
+                                
+                            }
+                            if (wcsModel.StatusCode == -1)
+                            {
+
+                            }
+                        }
+                        catch (Exception ex)
+                        {
+                            throw new Exception(ex.Message);
+                        }
+                    }
                     return strMessage;
                 }
                 else
diff --git a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
index eb2d920..6079f7a 100644
--- a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
@@ -77,12 +77,13 @@
                     {
                         throw new Exception("鍗曟嵁鍙蜂笉鍙负绌�!");
                     }
-                    if (model.AsnDetailNo == 0)
-                    {
-                        throw new Exception("鍗曟嵁鏄庣粏涓嶅彲涓虹┖!");
-                    }
+                    //if (model.AsnDetailNo == 0)
+                    //{
+                    //    throw new Exception("鍗曟嵁鏄庣粏涓嶅彲涓虹┖!");
+                    //}
                     //鏍规嵁鍗曟嵁鍙疯幏鍙栧叆搴撳崟鎬诲崟
-                    notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo && a.OrderCode == model.OrderCode);
+                    notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo);
+                    //notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo && a.OrderCode == model.OrderCode);
                     if (notice.Status != "0" && notice.Status != "1" && notice.Status != "2")
                     {
                         throw new Exception("璇ュ崟鎹凡鍏冲崟!");
@@ -96,7 +97,8 @@
                         throw new Exception("鎵规涓嶈兘涓虹┖!");
                     }
                     // 楠岃瘉鍏ュ簱鍗曟槑缁嗘槸鍚﹀瓨鍦�
-                    detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailNo && m.ASNNo == model.AsnNo && m.LotNo == model.LotNo && m.SkuNo == model.SkuNo);
+                    detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.ASNNo == notice.ASNNo && m.LotNo == model.LotNo && m.SkuNo == model.SkuNo);
+                    //detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailNo && m.ASNNo == model.AsnNo && m.LotNo == model.LotNo && m.SkuNo == model.SkuNo);
                     if (detail == null)
                     {
                         throw new Exception("褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!");
@@ -176,14 +178,14 @@
                 #endregion
 
                 //鍒ゆ柇鎵樼洏缁戝畾淇℃伅涓槸鍚︽湁
-                var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == model.AsnDetailNo && m.PalletNo == model.PalletNo && m.Status != "2");
+                var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == detail.Id && m.PalletNo == model.PalletNo && m.Status != "2");
                 var bindId = 0;
                 if (bind == null)
                 {
                     bind = new BllPalletBind
                     {
-                        ASNNo = model.AsnNo,
-                        ASNDetailNo = model.AsnDetailNo,
+                        ASNNo = notice.ASNNo,
+                        ASNDetailNo = detail.Id,
                         PalletNo = model.PalletNo,
                         PalletNo2 = "",
                         PalletNo3 = "",
@@ -230,8 +232,8 @@
                     {
                         var boxInfo = new BllBoxInfo()
                         {
-                            ASNNo = model.AsnNo,
-                            ASNDetailNo = model.AsnDetailNo,
+                            ASNNo = notice.ASNNo,
+                            ASNDetailNo = detail.Id,
                             OrderCode = box.OrderCode,
                             BindNo = bindId,
                             BoxNo = box.BoxNo,
@@ -270,10 +272,10 @@
                 }
                 else if (model.Type == "0")//鐗╂枡鎵�
                 {
-                    if (model.Detail.Count(m => m.OrderCode != detail.OrderDetailCode) > 0)
-                    {
-                        throw new Exception($"鎵樼洏缁戝畾鏄庣粏涓紝鍚湁绠辩爜鐢熶骇宸ュ崟涓嶄竴鑷�");
-                    }
+                    //if (model.Detail.Count(m => m.OrderCode != detail.OrderDetailCode) > 0)
+                    //{
+                    //    throw new Exception($"鎵樼洏缁戝畾鏄庣粏涓紝鍚湁绠辩爜鐢熶骇宸ュ崟涓嶄竴鑷�");
+                    //}
                     if (model.Detail.Count(m => m.SkuNo != model.SkuNo || m.LotNo != model.LotNo) > 0)
                     {
                         throw new Exception($"鎵樼洏缁戝畾鏄庣粏涓紝鍚湁绠辩爜鐗╂枡鎴栨壒娆′笉涓�鑷�");
@@ -288,8 +290,8 @@
                             boxFullQty += box.Qty;
                             var boxInfo = new BllBoxInfo()
                             {
-                                ASNNo = model.AsnNo,
-                                ASNDetailNo = model.AsnDetailNo,
+                                ASNNo = detail.ASNNo,
+                                ASNDetailNo = detail.Id,
                                 OrderCode = box.OrderCode,
                                 BindNo = bindId,
                                 BoxNo = box.BoxNo,
@@ -376,9 +378,9 @@
                 // 鏇存敼鎵樼洏浣跨敤鐘舵��
                 var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{model.PalletNo}';";
                 //娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹�
-                sqlStr += $"insert into LogPalletTrack values('{model.PalletNo}','{model.AsnNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);";
+                sqlStr += $"insert into LogPalletTrack values('{model.PalletNo}','{notice.ASNNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);";
                 Db.Ado.ExecuteCommand(sqlStr);
-                new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鎵樼洏缁戝畾", model.AsnNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{model.PalletNo}鐨勭粍鐩樹俊鎭�", userId);
+                new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鎵樼洏缁戝畾", notice.ASNNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{model.PalletNo}鐨勭粍鐩樹俊鎭�", userId);
 
                 Db.CommitTran();
             }
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
index b506589..ad272a5 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs
@@ -18,6 +18,8 @@
 using WMS.BLL.LogServer;
 using WMS.DAL;
 using WMS.Entity.LogEntity;
+using Model.ModelDto.SysDto;
+using Model.ModelDto.BllSoDto;
 
 namespace WMS.BLL.BllPdaServer
 {
@@ -973,7 +975,9 @@
             try
             {
                 string strMsg = "";
-                var outDtoList = new List<OutCommandDto>(); //鍑哄簱鏁版嵁鐨勯泦鍚� 
+                var outDto1 = new List<OutCommandDto>(); //鍏堝嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负1鐨勫偍浣嶏級
+                var outDto2 = new List<OutCommandDto>(); //鍚庡嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负2鐨勫偍浣嶏級
+                var moveDto = new List<OutCommandDto>(); //瑕佺Щ搴撴暟鎹殑闆嗗悎
                 //鑾峰彇褰撳墠鏃堕棿
                 DateTime serverTime = Db.GetDate();
                 //鑾峰彇搴撳瓨鏄庣粏鏄惁灏忎簬绛変簬璇ュ灈鏁�
@@ -997,132 +1001,637 @@
                     return strMsg;
                 }
 
-                int i = 0;
-
+                var com = new Common();
                 Db.BeginTran();
 
                 //閬嶅巻搴撳瓨淇℃伅 
                 foreach (var s in stockDetail)
                 {
+                    //if (outDto1.Contains(m=>m.PalletNo == s.PalletNo) >0)
+                    //{
+                    //    continue;
+                    //}
                     //鑾峰彇鍌ㄤ綅淇℃伅
                     var locat = Db.Queryable<SysStorageLocat>().First(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && l.WareHouseNo == "W01");
-
-                    if (locat != null)
+                    if(locat == null)
                     {
-                        if (locat.Status != "1")
-                        {
-                            continue;
-                        }
-                        //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
-                        locat.Status = "3"; //3 鍑哄簱涓�
-                        locat.UpdateTime = serverTime; //淇敼鏃堕棿
-                        locat.UpdateUser = userId; //淇敼浜�
-                        //淇敼鍌ㄤ綅淇℃伅
-                        Db.Updateable(locat).ExecuteCommand();
+                        continue;
                     }
-
-                    //澧炲姞搴撳瓨閿佸畾鏁伴噺
-                    //stock.AllotQty +=
-                    stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
-                    stock.UpdateTime = serverTime; //淇敼鏃堕棿
-                    stock.UpdateUser = userId; //淇敼浜�
-                    //淇敼搴撳瓨鎬昏〃淇℃伅
-                    Db.Updateable(stock).ExecuteCommand();
-
-                    //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
-                    //s.AllotQty += 
-                    s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
-                    s.UpdateTime = serverTime; //淇敼鏃堕棿
-                    s.UpdateUser = userId; //淇敼浜�
-                    s.Status = "2"; //2 宸插垎閰�
-                    //淇敼搴撳瓨鏄庣粏淇℃伅
-                    Db.Updateable(s).ExecuteCommand();
-
-                    #region 鍒嗛厤
-
-                    //娣诲姞鍒嗛厤琛ㄤ俊鎭�
-                    var allot = new BllExportAllot
+                    
+                    ////鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+                    //locat.Status = "3"; //3 鍑哄簱涓�
+                    //locat.UpdateTime = serverTime; //淇敼鏃堕棿
+                    //locat.UpdateUser = userId; //淇敼浜�
+                    ////淇敼鍌ㄤ綅淇℃伅
+                    //Db.Updateable(locat).ExecuteCommand();
+                    
+                    if (locat.Status == "1")
                     {
-                        SONo = "",
-                        WaveNo = "",
-                        SODetailNo = 0,
-                        StockId = s.Id,
-                        LotNo = "",
-                        LotText = "",
-                        SupplierLot = "",
-                        SkuNo = s.SkuNo,
-                        SkuName = s.SkuName,
-                        Standard = s.Standard,
-                        PalletNo = s.PalletNo,
-                        IsBale = "0", //鏄惁瑁瑰寘
-                        IsBelt = "0", //鏄惁鎵撳甫
+                        if (locat.Depth == "01") //娣卞害涓�1
+                        {
+                            #region 鏀瑰彉搴撳瓨
 
-                        //BoxexQty = s.Qty,
-                        Qty = (int)s.Qty,
-                        CompleteQty = 0,
-                        Status = "1",
-                        LogisticsId = 0,
-                        IsAdvance = "0",
-                        OutMode = model.OutMode,//鍑哄簱鍙�
+                            //澧炲姞搴撳瓨閿佸畾鏁伴噺
+                            stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+                            stock.UpdateTime = serverTime; //淇敼鏃堕棿
+                            stock.UpdateUser = userId; //淇敼浜�
+                            Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
 
-                        CreateUser = userId,
-                        CreateTime = DateTime.Now
-                    };
-                    Db.Insertable(allot).ExecuteCommand();
+                            //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+                            s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+                            s.UpdateTime = serverTime; //淇敼鏃堕棿
+                            s.UpdateUser = userId; //淇敼浜�
+                            s.Status = "2"; //2 宸插垎閰�
+                            Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
 
-                    #endregion
+                            #endregion
 
-                    #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+                            #region 鍒嗛厤
 
-                    var taskNo = new Common().GetMaxNo("TK");
-                    var exTask = new LogTask    //鍑哄簱浠诲姟
+                            //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+                            var allot = new BllExportAllot
+                            {
+                                SONo = "",
+                                WaveNo = "",
+                                SODetailNo = 0,
+                                StockId = s.Id,
+                                LotNo = "",
+                                LotText = "",
+                                SupplierLot = "",
+                                SkuNo = s.SkuNo,
+                                SkuName = s.SkuName,
+                                Standard = s.Standard,
+                                PalletNo = s.PalletNo,
+                                IsBale = "0", //鏄惁瑁瑰寘
+                                IsBelt = "0", //鏄惁鎵撳甫
+
+                                //BoxexQty = s.Qty,
+                                Qty = (int)s.Qty,
+                                CompleteQty = 0,
+                                Status = "1",
+                                LogisticsId = 0,
+                                IsAdvance = "0",
+                                OutMode = model.OutMode,//鍑哄簱鍙�
+
+                                CreateUser = userId,
+                                CreateTime = DateTime.Now
+                            };
+                            Db.Insertable(allot).ExecuteCommand();
+
+                            #endregion
+
+                            #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+                            var taskNo = new Common().GetMaxNo("TK");
+                            var exTask = new LogTask    //鍑哄簱浠诲姟
+                            {
+                                TaskNo = taskNo,
+                                Sender = "WMS",
+                                Receiver = "PDA",
+                                IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+                                StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+                                EndLocat = model.OutMode,//鐩爣浣嶇疆
+                                PalletNo = s.PalletNo,//鎵樼洏鐮�
+                                IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                                IsCancel = 1,//鏄惁鍙彇娑�
+                                IsFinish = 1,//鏄惁鍙畬鎴�
+                                Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                                Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                                OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+                                CreateTime = serverTime, //鍒涘缓鏃堕棿
+                                CreateUser = userId, //鍒涘缓浜�
+                                Msg = "Pda绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+                                                                                                                 //FinishDate = serverTime, //瀹屾垚鏃堕棿
+                            };
+                            outDto1.Add(new OutCommandDto()
+                            {
+                                PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+                                StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+                                StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+                                EndLocate = model.OutMode, // 鐩爣浣嶇疆 
+                                TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+                                TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+                                OutMode = model.OutMode,  //鐩爣鍦板潃
+                                Order = 1
+                            });
+                            Db.Insertable(exTask).ExecuteCommand();
+
+                            #endregion
+
+                            #region 鍌ㄤ綅鐘舵�佸彉鏇�
+                            //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+                            locat.Status = "3"; //3 鍑哄簱涓�
+                            Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+                            #endregion
+                        }
+                        else if (locat.Depth == "02") //娣卞害涓�2
+                        {
+                            //鑾峰彇鍑哄簱娣卞害涓�2鍌ㄤ綅鍓嶉潰鐨勫偍浣嶄俊鎭�
+                            var sql2 = $@"select * from SysStorageLocat where  WareHouseNo = '{locat.WareHouseNo}' and row = {locat.Row} and [Column] = {locat.Column} and Layer = {locat.Layer} and Depth = '01'; ";
+                            var slotBefore = Db.Ado.SqlQuery<SysStorageLocat>(sql2).First();
+                            if (slotBefore == null)
+                            {
+                                #region 鏀瑰彉搴撳瓨
+
+                                //澧炲姞搴撳瓨閿佸畾鏁伴噺
+                                stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+                                stock.UpdateTime = serverTime; //淇敼鏃堕棿
+                                stock.UpdateUser = userId; //淇敼浜�
+                                Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+                                //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+                                s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+                                s.UpdateTime = serverTime; //淇敼鏃堕棿
+                                s.UpdateUser = userId; //淇敼浜�
+                                s.Status = "2"; //2 宸插垎閰�
+                                Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+                                #endregion
+
+                                #region 鍒嗛厤
+
+                                //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+                                var allot = new BllExportAllot
+                                {
+                                    SONo = "",
+                                    WaveNo = "",
+                                    SODetailNo = 0,
+                                    StockId = s.Id,
+                                    LotNo = "",
+                                    LotText = "",
+                                    SupplierLot = "",
+                                    SkuNo = s.SkuNo,
+                                    SkuName = s.SkuName,
+                                    Standard = s.Standard,
+                                    PalletNo = s.PalletNo,
+                                    IsBale = "0", //鏄惁瑁瑰寘
+                                    IsBelt = "0", //鏄惁鎵撳甫
+
+                                    //BoxexQty = s.Qty,
+                                    Qty = (int)s.Qty,
+                                    CompleteQty = 0,
+                                    Status = "1",
+                                    LogisticsId = 0,
+                                    IsAdvance = "0",
+                                    OutMode = model.OutMode,//鍑哄簱鍙�
+
+                                    CreateUser = userId,
+                                    CreateTime = DateTime.Now
+                                };
+                                Db.Insertable(allot).ExecuteCommand();
+
+                                #endregion
+
+                                #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+                                var taskNo = new Common().GetMaxNo("TK");
+                                var exTask = new LogTask    //鍑哄簱浠诲姟
+                                {
+                                    TaskNo = taskNo,
+                                    Sender = "WMS",
+                                    Receiver = "PDA",
+                                    IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+                                    StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+                                    EndLocat = model.OutMode,//鐩爣浣嶇疆
+                                    PalletNo = s.PalletNo,//鎵樼洏鐮�
+                                    IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                                    IsCancel = 1,//鏄惁鍙彇娑�
+                                    IsFinish = 1,//鏄惁鍙畬鎴�
+                                    Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                                    Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                                    OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+                                    CreateTime = serverTime, //鍒涘缓鏃堕棿
+                                    CreateUser = userId, //鍒涘缓浜�
+                                    Msg = "Pda绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+                                                                                                                     //FinishDate = serverTime, //瀹屾垚鏃堕棿
+                                };
+                                outDto1.Add(new OutCommandDto()
+                                {
+                                    PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+                                    StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+                                    StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+                                    EndLocate = model.OutMode, // 鐩爣浣嶇疆 
+                                    TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+                                    TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+                                    OutMode = model.OutMode,  //鐩爣鍦板潃
+                                    Order = 1
+                                });
+                                Db.Insertable(exTask).ExecuteCommand();
+
+                                #endregion
+
+                                #region 鍌ㄤ綅鐘舵�佸彉鏇�
+                                //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+                                locat.Status = "3"; //3 鍑哄簱涓�
+                                Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+                                #endregion
+                            }
+                            else
+                            {
+                                //鍒ゆ柇鍌ㄤ綅鐘舵��
+                                if (slotBefore.Status == "0")
+                                {
+                                    #region 鏀瑰彉搴撳瓨
+
+                                    //澧炲姞搴撳瓨閿佸畾鏁伴噺
+                                    stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+                                    stock.UpdateTime = serverTime; //淇敼鏃堕棿
+                                    stock.UpdateUser = userId; //淇敼浜�
+                                    Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+                                    //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+                                    s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+                                    s.UpdateTime = serverTime; //淇敼鏃堕棿
+                                    s.UpdateUser = userId; //淇敼浜�
+                                    s.Status = "2"; //2 宸插垎閰�
+                                    Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+                                    #endregion
+
+                                    #region 鍒嗛厤
+
+                                    //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+                                    var allot = new BllExportAllot
+                                    {
+                                        SONo = "",
+                                        WaveNo = "",
+                                        SODetailNo = 0,
+                                        StockId = s.Id,
+                                        LotNo = "",
+                                        LotText = "",
+                                        SupplierLot = "",
+                                        SkuNo = s.SkuNo,
+                                        SkuName = s.SkuName,
+                                        Standard = s.Standard,
+                                        PalletNo = s.PalletNo,
+                                        IsBale = "0", //鏄惁瑁瑰寘
+                                        IsBelt = "0", //鏄惁鎵撳甫
+
+                                        //BoxexQty = s.Qty,
+                                        Qty = (int)s.Qty,
+                                        CompleteQty = 0,
+                                        Status = "1",
+                                        LogisticsId = 0,
+                                        IsAdvance = "0",
+                                        OutMode = model.OutMode,//鍑哄簱鍙�
+
+                                        CreateUser = userId,
+                                        CreateTime = DateTime.Now
+                                    };
+                                    Db.Insertable(allot).ExecuteCommand();
+
+                                    #endregion
+
+                                    #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+                                    var taskNo = new Common().GetMaxNo("TK");
+                                    var exTask = new LogTask    //鍑哄簱浠诲姟
+                                    {
+                                        TaskNo = taskNo,
+                                        Sender = "WMS",
+                                        Receiver = "PDA",
+                                        IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+                                        StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+                                        EndLocat = model.OutMode,//鐩爣浣嶇疆
+                                        PalletNo = s.PalletNo,//鎵樼洏鐮�
+                                        IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                                        IsCancel = 1,//鏄惁鍙彇娑�
+                                        IsFinish = 1,//鏄惁鍙畬鎴�
+                                        Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                                        Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                                        OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+                                        CreateTime = serverTime, //鍒涘缓鏃堕棿
+                                        CreateUser = userId, //鍒涘缓浜�
+                                        Msg = "Pda绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+                                                                                                                         //FinishDate = serverTime, //瀹屾垚鏃堕棿
+                                    };
+                                    outDto1.Add(new OutCommandDto()
+                                    {
+                                        PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+                                        StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+                                        StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+                                        EndLocate = model.OutMode, // 鐩爣浣嶇疆 
+                                        TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+                                        TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+                                        OutMode = model.OutMode,  //鐩爣鍦板潃
+                                        Order = 1
+                                    });
+                                    Db.Insertable(exTask).ExecuteCommand();
+
+                                    #endregion
+
+                                    #region 鍌ㄤ綅鐘舵�佸彉鏇�
+                                    //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+                                    locat.Status = "3"; //3 鍑哄簱涓�
+                                    Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+                                    #endregion
+                                }
+                                else if(slotBefore.Status == "1")
+                                {
+                                    //鍒ゆ柇鎵樼洏涓婄墿鏂�
+                                    var pallSku = Db.Queryable<DataStockDetail>().First(m=>m.SkuNo == "100099" && m.LocatNo == slotBefore.LocatNo);
+                                    if (pallSku == null) //绉诲簱
+                                    {
+                                        #region 鍒嗛厤
+
+                                        //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+                                        var allot = new BllExportAllot
+                                        {
+                                            SONo = "",
+                                            WaveNo = "",
+                                            SODetailNo = 0,
+                                            StockId = s.Id,
+                                            LotNo = "",
+                                            LotText = "",
+                                            SupplierLot = "",
+                                            SkuNo = s.SkuNo,
+                                            SkuName = s.SkuName,
+                                            Standard = s.Standard,
+                                            PalletNo = s.PalletNo,
+                                            IsBale = "0", //鏄惁瑁瑰寘
+                                            IsBelt = "0", //鏄惁鎵撳甫
+
+                                            //BoxexQty = s.Qty,
+                                            Qty = (int)s.Qty,
+                                            CompleteQty = 0,
+                                            Status = "1",
+                                            LogisticsId = 0,
+                                            IsAdvance = "0",
+                                            OutMode = model.OutMode,//鍑哄簱鍙�
+
+                                            CreateUser = userId,
+                                            CreateTime = DateTime.Now
+                                        };
+                                        Db.Insertable(allot).ExecuteCommand();
+
+                                        #endregion
+
+                                        #region 娣诲姞绉诲簱浠诲姟淇℃伅
+
+                                        var taskNo = new Common().GetMaxNo("TK");
+                                        var exTask = new LogTask    //鍑哄簱浠诲姟
+                                        {
+                                            TaskNo = taskNo,
+                                            Sender = "WMS",
+                                            Receiver = "PDA",
+                                            IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+                                            StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+                                            EndLocat = model.OutMode,//鐩爣浣嶇疆
+                                            PalletNo = s.PalletNo,//鎵樼洏鐮�
+                                            IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                                            IsCancel = 1,//鏄惁鍙彇娑�
+                                            IsFinish = 1,//鏄惁鍙畬鎴�
+                                            Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                                            Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                                            OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+                                            CreateTime = serverTime, //鍒涘缓鏃堕棿
+                                            CreateUser = userId, //鍒涘缓浜�
+                                            Msg = "Pda绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勭Щ搴撲换鍔�", //鍏抽敭淇℃伅
+                                                                                                                             //FinishDate = serverTime, //瀹屾垚鏃堕棿
+                                        };
+                                        moveDto.Add(new OutCommandDto()
+                                        {
+                                            PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+                                            StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+                                            StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+                                            EndLocate = model.OutMode, // 鐩爣浣嶇疆 
+                                            TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+                                            TaskType = "2",// 浠诲姟绫诲瀷 (鍑哄簱)
+                                            OutMode = model.OutMode,  //鐩爣鍦板潃
+                                            Order = 1
+                                        });
+                                        Db.Insertable(exTask).ExecuteCommand();
+
+                                        #endregion
+
+                                        #region 鍌ㄤ綅鐘舵�佸彉鏇�
+                                        //鏇存敼鍌ㄤ綅鐘舵�佷负绉诲嚭涓�
+                                        slotBefore.Status = "5"; //5 绉诲嚭涓�
+                                        Db.Updateable(slotBefore).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+                                        #endregion
+                                    }
+                                    else  //鍑哄簱
+                                    {
+                                        #region 鏀瑰彉搴撳瓨
+
+                                        //澧炲姞搴撳瓨閿佸畾鏁伴噺
+                                        stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+                                        stock.UpdateTime = serverTime; //淇敼鏃堕棿
+                                        stock.UpdateUser = userId; //淇敼浜�
+                                        Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+                                        //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+                                        s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+                                        s.UpdateTime = serverTime; //淇敼鏃堕棿
+                                        s.UpdateUser = userId; //淇敼浜�
+                                        s.Status = "2"; //2 宸插垎閰�
+                                        Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+                                        #endregion
+
+                                        #region 鍒嗛厤
+
+                                        //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+                                        var allot = new BllExportAllot
+                                        {
+                                            SONo = "",
+                                            WaveNo = "",
+                                            SODetailNo = 0,
+                                            StockId = s.Id,
+                                            LotNo = "",
+                                            LotText = "",
+                                            SupplierLot = "",
+                                            SkuNo = s.SkuNo,
+                                            SkuName = s.SkuName,
+                                            Standard = s.Standard,
+                                            PalletNo = s.PalletNo,
+                                            IsBale = "0", //鏄惁瑁瑰寘
+                                            IsBelt = "0", //鏄惁鎵撳甫
+
+                                            //BoxexQty = s.Qty,
+                                            Qty = (int)s.Qty,
+                                            CompleteQty = 0,
+                                            Status = "1",
+                                            LogisticsId = 0,
+                                            IsAdvance = "0",
+                                            OutMode = model.OutMode,//鍑哄簱鍙�
+
+                                            CreateUser = userId,
+                                            CreateTime = DateTime.Now
+                                        };
+                                        Db.Insertable(allot).ExecuteCommand();
+
+                                        #endregion
+
+                                        #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+                                        var taskNo = new Common().GetMaxNo("TK");
+                                        var exTask = new LogTask    //鍑哄簱浠诲姟
+                                        {
+                                            TaskNo = taskNo,
+                                            Sender = "WMS",
+                                            Receiver = "PDA",
+                                            IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+                                            StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+                                            EndLocat = model.OutMode,//鐩爣浣嶇疆
+                                            PalletNo = s.PalletNo,//鎵樼洏鐮�
+                                            IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                                            IsCancel = 1,//鏄惁鍙彇娑�
+                                            IsFinish = 1,//鏄惁鍙畬鎴�
+                                            Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                                            Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                                            OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+                                            CreateTime = serverTime, //鍒涘缓鏃堕棿
+                                            CreateUser = userId, //鍒涘缓浜�
+                                            Msg = "Pda绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+                                                                                                                             //FinishDate = serverTime, //瀹屾垚鏃堕棿
+                                        };
+                                        outDto2.Add(new OutCommandDto()
+                                        {
+                                            PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+                                            StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+                                            StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+                                            EndLocate = model.OutMode, // 鐩爣浣嶇疆 
+                                            TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+                                            TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+                                            OutMode = model.OutMode,  //鐩爣鍦板潃
+                                            Order = 1
+                                        });
+                                        Db.Insertable(exTask).ExecuteCommand();
+
+                                        #endregion
+                                        #region 鍌ㄤ綅鐘舵�佸彉鏇�
+                                        //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+                                        slotBefore.Status = "3"; //3 鍑哄簱涓�
+                                        Db.Updateable(slotBefore).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+                                        #endregion
+                                    }
+                                    if (int.Parse(model.Num) == outDto1.Count + outDto2.Count)
+                                    {
+                                        break;//闇�姹傚灈鏁板凡杈惧埌 鍙互鍑哄簱浜�
+                                    }
+                                    else
+                                    {
+                                        #region 鏀瑰彉搴撳瓨
+
+                                        //澧炲姞搴撳瓨閿佸畾鏁伴噺
+                                        stock.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+                                        stock.UpdateTime = serverTime; //淇敼鏃堕棿
+                                        stock.UpdateUser = userId; //淇敼浜�
+                                        Db.Updateable(stock).ExecuteCommand();//淇敼搴撳瓨鎬昏〃淇℃伅
+
+                                        //澧炲姞搴撳瓨鏄庣粏閿佸畾鏁伴噺
+                                        s.LockQty += (int)s.Qty; //閿佸畾鏁伴噺
+                                        s.UpdateTime = serverTime; //淇敼鏃堕棿
+                                        s.UpdateUser = userId; //淇敼浜�
+                                        s.Status = "2"; //2 宸插垎閰�
+                                        Db.Updateable(s).ExecuteCommand();//淇敼搴撳瓨鏄庣粏淇℃伅
+
+                                        #endregion
+
+                                        #region 鍒嗛厤
+
+                                        //娣诲姞鍒嗛厤琛ㄤ俊鎭�
+                                        var allot = new BllExportAllot
+                                        {
+                                            SONo = "",
+                                            WaveNo = "",
+                                            SODetailNo = 0,
+                                            StockId = s.Id,
+                                            LotNo = "",
+                                            LotText = "",
+                                            SupplierLot = "",
+                                            SkuNo = s.SkuNo,
+                                            SkuName = s.SkuName,
+                                            Standard = s.Standard,
+                                            PalletNo = s.PalletNo,
+                                            IsBale = "0", //鏄惁瑁瑰寘
+                                            IsBelt = "0", //鏄惁鎵撳甫
+
+                                            //BoxexQty = s.Qty,
+                                            Qty = (int)s.Qty,
+                                            CompleteQty = 0,
+                                            Status = "1",
+                                            LogisticsId = 0,
+                                            IsAdvance = "0",
+                                            OutMode = model.OutMode,//鍑哄簱鍙�
+
+                                            CreateUser = userId,
+                                            CreateTime = DateTime.Now
+                                        };
+                                        Db.Insertable(allot).ExecuteCommand();
+
+                                        #endregion
+
+                                        #region 娣诲姞鍑哄簱浠诲姟淇℃伅
+
+                                        var taskNo = new Common().GetMaxNo("TK");
+                                        var exTask = new LogTask    //鍑哄簱浠诲姟
+                                        {
+                                            TaskNo = taskNo,
+                                            Sender = "WMS",
+                                            Receiver = "PDA",
+                                            IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
+
+                                            StartLocat = locat == null ? "" : s.LocatNo,//璧峰浣嶇疆
+                                            EndLocat = model.OutMode,//鐩爣浣嶇疆
+                                            PalletNo = s.PalletNo,//鎵樼洏鐮�
+                                            IsSend = 1,//鏄惁鍙啀娆′笅鍙�
+                                            IsCancel = 1,//鏄惁鍙彇娑�
+                                            IsFinish = 1,//鏄惁鍙畬鎴�
+                                            Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
+                                            Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
+                                            OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+                                            CreateTime = serverTime, //鍒涘缓鏃堕棿
+                                            CreateUser = userId, //鍒涘缓浜�
+                                            Msg = "Pda绌烘墭浠�" + locat == null ? "" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
+                                                                                                                             //FinishDate = serverTime, //瀹屾垚鏃堕棿
+                                        };
+                                        outDto2.Add(new OutCommandDto()
+                                        {
+                                            PalletNo = exTask.PalletNo,//鎵樼洏鍙�
+                                            StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
+                                            StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
+                                            EndLocate = model.OutMode, // 鐩爣浣嶇疆 
+                                            TaskNo = exTask.TaskNo, // 浠诲姟鍙�
+                                            TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
+                                            OutMode = model.OutMode,  //鐩爣鍦板潃
+                                            Order = 1
+                                        });
+                                        Db.Insertable(exTask).ExecuteCommand();
+
+                                        #endregion
+                                        #region 鍌ㄤ綅鐘舵�佸彉鏇�
+
+                                        //鏇存敼鍌ㄤ綅鐘舵�佷负鍑哄簱涓�
+                                        locat.Status = "3"; //3 鍑哄簱涓�
+                                        Db.Updateable(locat).ExecuteCommand();//淇敼鍌ㄤ綅淇℃伅
+                                        #endregion
+                                    }
+                                }
+                            }
+
+                        }
+                                                       
+                    }
+                    
+                    if (int.Parse(model.Num) == outDto1.Count+ outDto2.Count)
                     {
-                        TaskNo = taskNo,
-                        Sender = "WMS",
-                        Receiver = "PDA",
-                        IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛
-
-                        StartLocat = locat == null ? "闆剁搴�" : s.LocatNo,//璧峰浣嶇疆
-                        EndLocat = model.OutMode,//鐩爣浣嶇疆
-                        PalletNo = s.PalletNo,//鎵樼洏鐮�
-                        IsSend = 1,//鏄惁鍙啀娆′笅鍙�
-                        IsCancel = 1,//鏄惁鍙彇娑�
-                        IsFinish = 1,//鏄惁鍙畬鎴�
-                        Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
-                        Status = "1",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
-                        OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
-                        CreateTime = serverTime, //鍒涘缓鏃堕棿
-                        CreateUser = userId, //鍒涘缓浜�
-                        Msg = "Pda绌烘墭浠�" + locat == null ? "闆剁搴�" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅
-                        //FinishDate = serverTime, //瀹屾垚鏃堕棿
-                    };
-                    outDtoList.Add(new OutCommandDto()
-                    {
-                        PalletNo = exTask.PalletNo,//鎵樼洏鍙�
-                        StartLocate = exTask.StartLocat, // 璧峰浣嶇疆
-                        StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬�
-                        EndLocate = model.OutMode, // 鐩爣浣嶇疆 
-                        TaskNo = exTask.TaskNo, // 浠诲姟鍙�
-                        TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)
-                        OutMode = model.OutMode,  //鐩爣鍦板潃
-                        Order = 1
-                    });
-                    Db.Insertable(exTask).ExecuteCommand();
-
-                    #endregion
-                    i += 1;
-                    if (i == int.Parse(model.Num))
-                    {
-                        //闇�姹傚灈鏁板凡杈惧埌 鍙互鍑哄簱浜�
-                        break;
+                        break;//闇�姹傚灈鏁板凡杈惧埌 鍙互鍑哄簱浜�
                     }
                 }
-
-                if (outDtoList.Count > 0)
+                outDto1.AddRange(moveDto);
+                outDto1.AddRange(outDto2);
+                if (outDto1.Count > 0)
                 {
                     // 姝e紡杩愯绋嬪簭鏀惧紑
-                    var list2 = outDtoList.Select(m => m.TaskNo).ToList();
-                    var jsonData = JsonConvert.SerializeObject(outDtoList);
+                    var list2 = outDto1.Select(m => m.TaskNo).ToList();
+                    var jsonData = JsonConvert.SerializeObject(outDto1);
                     string response = "";
 
                     try
@@ -1153,7 +1662,7 @@
                 }
 
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "绌烘墭鍑哄簱", i + "", "涓嬪彂", $"鐢≒DA涓嬪彂浜� {i} 涓┖鎵樺灈", userId);
+                var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "绌烘墭鍑哄簱", int.Parse(model.Num) + "", "涓嬪彂", $"鐢≒DA涓嬪彂浜� {int.Parse(model.Num)} 涓┖鎵樺灈", userId);
                 Db.CommitTran();
 
                 return "";
@@ -1167,6 +1676,68 @@
 
         }
 
+        public string MoveAddress(string oldAddress, string roadWay, string skuNo)//01020201  鎺�-鍒�-灞�-娣卞害
+        {
+            string nowAddress = "";
+
+            //鏍规嵁鐗╂枡缂栫爜鑾峰彇瀵瑰簲鍖哄煙
+            var skuCategoryNo = Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.SkuNo == skuNo).Select(a => a.CategoryNo).First();
+            var category = Db.Queryable<SysMaterialCategory>().First(a => a.IsDel == "0" && a.CategoryNo == skuCategoryNo);
+
+            // 鑾峰彇绉诲簱鐩爣鍌ㄤ綅
+            var row = int.Parse(oldAddress.Substring(0, 2));
+            var lie = int.Parse(oldAddress.Substring(2, 2));
+            var ceng = int.Parse(oldAddress.Substring(4, 2));
+
+            var sqlString = $@"select LocatNo,[Row],[Column],Layer, (ABS(Row-{row}) + ABS([Column]-{lie}) + ABS(Layer-{ceng}))  as distNum from SysStorageLocat where Flag = '0' and Status = '0' and Depth = '02' and RoadwayNo = '{roadWay}' and AreaNo in ('{category.AreaNo}') order by distNum;";
+
+            var addressModels = Db.Ado.SqlQuery<AddressCls>(sqlString).ToList();
+            if (addressModels.Count > 0)   // 鍒ゆ柇鍚屽贩閬撳唴鎺掔┖搴撲綅
+            {
+                var listLocaete = new List<string>();
+                foreach (var item in addressModels)
+                {
+                    // 鐩爣鍐呭簱浣嶅搴旂殑澶栧簱浣�
+                    string addressee = item.LocatNo.Substring(0, 6) + "01";
+
+                    // 鍒ゆ柇鐩爣搴撲綅鐨勫搴撲綅鏄惁瀛樺湪璐х墿   (姝e父鎯呭喌涓嬫鍦ㄧЩ鍏ユ儏鍐典笉瀛樺湪锛屽洜涓虹Щ搴撳厛绉诲叆閲岄潰锛屽悗绉诲叆澶栭潰)
+                    //SlotStatus 0: 绌哄偍浣� 1锛氭湁璐�  2锛氭鍦ㄥ叆搴�  3锛氭鍦ㄥ嚭搴�   4锛氭鍦ㄧЩ鍏�  5锛氭鍦ㄧЩ鍑�
+                    sqlString = $"select count(*) from SysStorageLocat where LocatNo = '{addressee}' and Status = '0' and Flag in ('0','1') ; ";
+                    var rowNum = Db.Ado.SqlQuery<int>(sqlString).First();
+                    if (rowNum == 0)
+                    {
+                        continue;
+                    }
+                    else
+                    {
+                        nowAddress = item.LocatNo;
+                        break;
+                    }
+                }
+            }
+            if (nowAddress == "")
+            {
+                // 鍒ゆ柇鍚屽贩閬撳鎺掔┖搴撲綅
+                sqlString = $@"select LocatNo,[Row],[Column],Layer, (ABS(Row-{row}) + ABS([Column]-{lie}) + ABS(Layer-{ceng}))  as distNum 
+                                from SysStorageLocat 
+                                where Flag = '0' and Status = '0' and Depth = '01' and RoadwayNo = '{roadWay}' and AreaNo  in '{category}' 
+                                order by distNum;";
+                var adderModeling = Db.Ado.SqlQuery<AddressCls>(sqlString).ToList();
+                if (adderModeling.Count > 0)
+                {
+                    nowAddress = adderModeling[0].LocatNo;
+                }
+                else
+                {
+                    // 搴撳唴涓嶅瓨鍦ㄧ┖鍌ㄤ綅  
+                    nowAddress = "";
+                }
+            }
+
+
+            return nowAddress;
+        }
+
         //鑾峰彇骞冲簱鎵樼洏淇℃伅
         public List<BoxInfo> GetPingKuInfoByPallet(string soNo, string palletNo)
         {
diff --git a/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs b/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs
index 1d48688..a55e6df 100644
--- a/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs
+++ b/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs
@@ -45,7 +45,7 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        string AddArrivalNotice(ArrivalNoticeVm model);
+        string AddArrivalNotice(ArrivalNoticeVm model, string url);
         /// <summary>
         /// 缂栬緫鍏ュ簱鍗�
         /// </summary>
diff --git a/Wms/Wms/Controllers/BllAsnController.cs b/Wms/Wms/Controllers/BllAsnController.cs
index e31f593..a999bec 100644
--- a/Wms/Wms/Controllers/BllAsnController.cs
+++ b/Wms/Wms/Controllers/BllAsnController.cs
@@ -9,6 +9,8 @@
 using WMS.IBLL.IBllAsnServer;
 using WMS.IBLL.ILogServer;
 using Model.ModelVm.BllAsnVm;
+using Wms.Tools;
+using Microsoft.Extensions.Options;
 
 namespace Wms.Controllers
 {
@@ -18,6 +20,7 @@
     public class BllAsnController : ControllerBase
     {
         #region 渚濊禆娉ㄥ叆
+        private readonly ApiUrlConfig _config; //鎺ュ彛浜や簰璺緞
         private readonly IArrivalNoticeServer _arrivalNoticeSvc;                    // 鍏ュ簱鍗曟嵁Svc 
         private readonly IPalletBindServer _PalletBindSvc;                          // 鎵樼洏缁戝畾Svc 
         private readonly IBllBoxInfoServer _BoxInfoSvc;
@@ -29,8 +32,9 @@
         #endregion
 
         #region 鏋勯�犲嚱鏁�
-        public BllAsnController(IArrivalNoticeServer arrivalNoticeSvc, IPalletBindServer palletBindSvc,IBllBoxInfoServer bllBoxInfoSvc, ITaskServer taskSvc,IOperationASNServer logSvc, IPalletUnbindServer palletUnbind,IAuditLogServer auditLog,IBllLabelBoxNoServer labelBox)
+        public BllAsnController(IOptions<ApiUrlConfig> setting, IArrivalNoticeServer arrivalNoticeSvc, IPalletBindServer palletBindSvc,IBllBoxInfoServer bllBoxInfoSvc, ITaskServer taskSvc,IOperationASNServer logSvc, IPalletUnbindServer palletUnbind,IAuditLogServer auditLog,IBllLabelBoxNoServer labelBox)
         {
+            _config = setting.Value;
             _arrivalNoticeSvc = arrivalNoticeSvc;
             _PalletBindSvc = palletBindSvc;
             _BoxInfoSvc = bllBoxInfoSvc;
@@ -134,7 +138,7 @@
                 }
 
                 model.CreateUser = int.Parse(UserId);
-                string strMesage = _arrivalNoticeSvc.AddArrivalNotice(model);
+                string strMesage = _arrivalNoticeSvc.AddArrivalNotice(model, _config.WcsHost + _config.AddOrderTaskUrl);
 
                 if (strMesage == "")
                 {
diff --git a/Wms/Wms/Tools/ApiUrlConfig.cs b/Wms/Wms/Tools/ApiUrlConfig.cs
index e037216..e219376 100644
--- a/Wms/Wms/Tools/ApiUrlConfig.cs
+++ b/Wms/Wms/Tools/ApiUrlConfig.cs
@@ -103,5 +103,11 @@
 
         #endregion
 
+        #region WCS
+        /// <summary>
+        /// //缁橶CS涓嬪彂鍏ュ簱鍗曚俊鎭�
+        /// </summary>
+        public string AddOrderTaskUrl { get; set; }     
+        #endregion
     }
 }
diff --git a/Wms/Wms/appsettings.json b/Wms/Wms/appsettings.json
index 7402f8d..0b01b9f 100644
--- a/Wms/Wms/appsettings.json
+++ b/Wms/Wms/appsettings.json
@@ -31,6 +31,7 @@
     // WCS
     "IssueComApiUrl": "/api/demo/wcsTasks", //涓嬪彂鍛戒护(鍑哄簱銆佺Щ搴�)
     "IssueComApiUrl2": "/api/demo/wcsTask", //"/api/WCSApi/AddTask", //閲嶆柊涓嬪彂鍛戒护(鍑哄簱銆佺Щ搴�)
+    "AddOrderTaskUrl": "/api/demo/addOrderTask", //WMS缁橶CS涓嬪彂鐨勫叆搴撳崟浠诲姟
 
     // ERP
     "AsnFinishUrl": "/api/wmsInterface/OutStockTask", //鍏ュ簱璁㈠崟鍏抽棴

--
Gitblit v1.8.0