From 2920728d7908da2ee196f3af8b3d1c635696e9a1 Mon Sep 17 00:00:00 2001
From: zwc <526854230@qq.com>
Date: 星期三, 15 一月 2025 15:47:15 +0800
Subject: [PATCH] 修改问题

---
 Wms/Wms/Controllers/UpApiController.cs             |   59 ++
 Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs |    2 
 Wms/Wms/Controllers/PdaCrController.cs             |    4 
 Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs    |   79 +++
 Wms/Wms/Tools/ApiUrlConfig.cs                      |    5 
 Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs   |   10 
 Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs            |   15 
 Wms/WMS.BLL/DataServer/StockServer.cs              |  140 ++++++
 Wms/Wms/Properties/launchSettings.json             |   22 
 Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs      |  388 +++++++++++++++++
 Wms/Wms/appsettings.json                           |    9 
 Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs            |  327 ++++++++++++-
 Wms/Wms/Controllers/BllSoController.cs             |    2 
 Wms/Model/InterFaceModel/AsnModels.cs              |   47 ++
 Wms/Model/InterFaceModel/HttpModel.cs              |   82 +++
 Wms/WMS.IBLL/IDataServer/IStockServer.cs           |   24 +
 Wms/Wms/Controllers/DownApiController.cs           |   51 ++
 Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs       |    7 
 18 files changed, 1,181 insertions(+), 92 deletions(-)

diff --git a/Wms/Model/InterFaceModel/AsnModels.cs b/Wms/Model/InterFaceModel/AsnModels.cs
index c5a3f3a..a856d63 100644
--- a/Wms/Model/InterFaceModel/AsnModels.cs
+++ b/Wms/Model/InterFaceModel/AsnModels.cs
@@ -98,4 +98,51 @@
         public string PalletNo { get; set; }
     }
 
+    public class BoxInfoCheck
+    {
+        public string PalletNo { get; set; }
+        public string TaskNo { get; set; }
+    }
+   
+    public class RequestBoxInfoCheck
+    {
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        public string PalletNo { get; set; }
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public string TaskNo { get; set; }
+        /// <summary>
+        /// 璁㈠崟鍙�
+        /// </summary>
+        public string OrderNo { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string SkuNo { get; set; }
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        public string SkuName { get; set; }
+        /// <summary>
+        /// 鎵规
+        /// </summary>
+        public string LotNo { get; set; }
+        /// <summary>
+        /// 瑙勬牸
+        /// </summary>
+        public string Standard {  get; set; }   
+        /// <summary>
+        /// 鎷嗙鏁伴噺
+        /// </summary>
+        public int? Qty {  get; set; }
+        /// <summary>
+        /// 鎵樼洏涓婃�荤鏁�
+        /// </summary>
+        public int? QtyCount {  get; set; }
+    }
+
+
 }
diff --git a/Wms/Model/InterFaceModel/HttpModel.cs b/Wms/Model/InterFaceModel/HttpModel.cs
index 8e220c6..c4b9322 100644
--- a/Wms/Model/InterFaceModel/HttpModel.cs
+++ b/Wms/Model/InterFaceModel/HttpModel.cs
@@ -379,7 +379,7 @@
         /// 鏍煎紡: 鈥測yyy-MM-ddHH:mm:ss鈥�
         /// 鏄惁蹇呭~锛氬惁
         /// </summary>
-        public string EeqTime { get; set; }
+        public string ReqTime { get; set; }
 
         /// <summary>
         /// 瀹㈡埛绔紪鍙凤紝濡� PDA锛孒CWMS 绛夈��
@@ -422,6 +422,13 @@
         /// 鏄惁蹇呭~锛氬惁
         /// </summary>
         public string CtnrTyp { get; set; }
+
+        /// <summary>
+        /// 瀹瑰櫒鏁伴噺锛堝弶杞�/CTU 涓撶敤锛�
+        /// 鍙夎溅椤圭洰蹇呬紶
+        /// 鏄惁蹇呭~锛氬惁
+        /// </summary>
+        public string CtnrNum { get; set; }
 
         /// <summary>
         /// 瀹瑰櫒缂栧彿锛堝弶杞�/CTU 涓撶敤锛�
@@ -665,6 +672,7 @@
     /// </summary>
     public class AgvTaskDto
     {
+
         /// <summary>
         /// 璇锋眰缂栧彿锛屾瘡涓姹傞兘瑕佷竴涓敮涓�缂栧彿
         /// 鍚屼竴涓姹傞噸澶嶆彁浜� 浣跨敤鍚屼竴缂栧彿
@@ -683,13 +691,13 @@
         /// 鍦扮爜 X 鍧愭爣(mm)锛氫换鍔″畬鎴愭椂鏈夊��
         /// 鏄惁蹇呭~锛氬惁
         /// </summary>
-        public int CooX { get; set; }
+        public decimal CooX { get; set; }
 
         /// <summary>
         /// 鍦扮爜 Y 鍧愭爣(mm)锛氫换鍔″畬鎴愭椂鏈夊��
         /// 鏄惁蹇呭~锛氬惁
         /// </summary>
-        public int CooY { get; set; }
+        public decimal CooY { get; set; }
 
         /// <summary>
         /// 褰撳墠浣嶇疆缂栧彿
@@ -785,11 +793,6 @@
         /// </summary>
         public string CtnrCode { get; set; }
 
-        /// <summary>
-        /// 瀹瑰櫒绫诲瀷
-        /// 鏄惁蹇呭~锛氬惁
-        /// </summary>
-        public string CtnrType { get; set; }
 
         /// <summary>
         /// 宸烽亾缂栧彿
@@ -809,6 +812,40 @@
         /// 鏄惁蹇呭~锛氬惁
         /// </summary>
         public string EqpCode { get; set; }
+        public string DstBinCode { get; set; }
+        public string IndBind { get; set; }
+        public string Layer { get; set; }
+        public string MapShortName { get; set; }
+        public string MaterialType { get; set; }
+
+        public string Action { get; set; }
+        public string AreaCode { get; set; }
+
+        public string BerthCode { get; set; }
+
+
+
+        public string CallCode { get; set; }
+
+        public string CallTyp { get; set; }
+        public string ClientCode { get; set; }
+        public string OrgCode { get; set; }
+        public string CtnrTyp { get; set; }
+        public string CurrentCallCode { get; set; }
+
+        public string PodCode { get; set; }
+
+        public string PodTyp { get; set; }
+        public string PodNum { get; set; }
+        public string RelatedArea { get; set; }
+        public string ReqTime { get; set; }
+        public string SubTaskNum { get; set; }
+
+        public string TaskTyp { get; set; }
+
+        public string TokenCode { get; set; }
+        public string Username { get; set; }
+        public string WhCode { get; set; }
     }
 
     /// <summary>
@@ -845,6 +882,35 @@
         /// </summary>
         public string Data { get; set; }
     }
+
+    /// <summary>
+    /// WMS涓嬪彂AGV鍙栨秷浠诲姟鍥炰紶鍙傛暟
+    /// </summary>
+    public class cancelTaskModel
+    {
+        /// <summary>
+        /// 杩斿洖鐮�
+        /// 0锛氭垚鍔�
+        /// 1锛氬弬鏁扮浉鍏崇殑閿欒
+        /// 6锛氶噸澶嶅彂閫侊紝涓婂眰绯荤粺涓嶉渶瑕侀噸鍙�
+        /// 99锛氬叾浠栨湭鐭ラ敊璇紝璋冪敤澶辫触鍚庯紝鍙互閲嶈瘯
+        /// 100锛� 璇ヤ换鍔′笉瀛樺湪锛屼笂灞傜郴缁熶笉闇�閲嶅彂锛岄渶瑕佷汉宸ヤ粙鍏ュ鐞�
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 杩斿洖娑堟伅
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string Message { get; set; }
+
+        /// <summary>
+        /// 璇锋眰缂栧彿
+        /// 鏄惁蹇呭~锛氭槸
+        /// </summary>
+        public string ReqCode { get; set; }
+    }
     #endregion
 
     #region FuMa-Model
diff --git a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
index 0391053..90d2952 100644
--- a/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/ArrivalNoticeServer.cs
@@ -410,6 +410,20 @@
 
                     if (model.Type == "0")//鎴愬搧鍏ュ簱鍗曚笅鍙慦CS淇℃伅
                     {
+                        //璁$畻鍑烘�荤鏁�
+                        var packmodel = Db.Queryable<SysPackag>().First(w=>w.PackagNo == detailModel.SkuNo);
+                        int xqty = 0;
+                        if (packmodel.L1Name == "绠�") {
+                            xqty = (int)detailModel.Qty;
+                        }
+                        if (packmodel.L2Name == "绠�")
+                        {
+                            xqty = (int)(detailModel.Qty / packmodel.L2Num);
+                        }
+                        if (packmodel.L3Name == "绠�")
+                        {
+                            xqty = (int)(detailModel.Qty/ packmodel.L2Num / packmodel.L3Num);
+                        }
                         addOder.Add(new ResponseOrderTaskModel()
                         {
                             OrderNo = model.ASNNo,
@@ -417,7 +431,7 @@
                             SkuNo = detailModel.SkuNo,
                             SkuName = detailModel.SkuName,
                             BoxType = detailModel.Standard,
-                            Qty = (int)detailModel.Qty,
+                            Qty = xqty,
                             TaskType = 0
                         });
                     }
@@ -1009,10 +1023,11 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        public HttpReturnModel HttpCreateAsn(AsnInfo model)
+        public HttpReturnModel HttpCreateAsn(AsnInfo model, string url)
         {
             try
             {
+                var addOder = new List<ResponseOrderTaskModel>();
                 var resultModel = new HttpReturnModel() { Success = "-1", Message = "" };
                 if (string.IsNullOrEmpty(model.AsnType))
                 {
@@ -1105,7 +1120,37 @@
                     };
 
                     detailModels.Add(detailModel);
+
+                    if (model.AsnType == "0")//鎴愬搧鍏ュ簱鍗曚笅鍙慦CS淇℃伅
+                    {
+                        //璁$畻鍑烘�荤鏁�
+                        var packmodel = Db.Queryable<SysPackag>().First(w => w.PackagNo == detailModel.SkuNo);
+                        int xqty = 0;
+                        if (packmodel.L1Name == "绠�")
+                        {
+                            xqty = (int)detailModel.Qty;
+                        }
+                        if (packmodel.L2Name == "绠�")
+                        {
+                            xqty = (int)(detailModel.Qty / packmodel.L2Num);
+                        }
+                        if (packmodel.L3Name == "绠�")
+                        {
+                            xqty = (int)(detailModel.Qty / packmodel.L2Num / packmodel.L3Num);
+                        }
+                        addOder.Add(new ResponseOrderTaskModel()
+                        {
+                            OrderNo = asnNo,
+                            LotNo = asnDetailModel.LotNo,
+                            SkuNo = asnDetailModel.SkuNo,
+                            SkuName = skuModel.SkuName,
+                            BoxType = skuModel.Standard,
+                            Qty = (int)asnDetailModel.Qty,
+                            TaskType = 0
+                        });
+                    }
                 }
+
 
                 Db.BeginTran();
                 // 鎻掑叆鍏ュ簱鍗曟�昏〃
@@ -1115,6 +1160,36 @@
                 Db.Insertable(detailModels).ExecuteCommand();
                 Db.CommitTran();
 
+
+                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)
+                        {
+                            throw new Exception($"涓嬪彂WCS澶辫触锛歿wcsModel.Msg}");
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        throw new Exception(ex.Message);
+                    }
+                }
+
                 resultModel.Success = "0";
                 resultModel.Message = "鎴愬姛";
                 return resultModel;
diff --git a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
index f1f7215..50a3dd7 100644
--- a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
@@ -3226,9 +3226,9 @@
                     throw new Exception("鏈壘鍒拌鎵樼洏鏉$爜锛�" + palletNo);
                 }
                 var palletBindList = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.LocatNo.Substring(0,1) != "B").First();
-                if (palletBindList.IsBelt == "1")
+                if (palletBindList.IsBale == "2")
                 {
-                    palletBindList.IsBelt = "0";
+                    palletBindList.IsBale = "0";
                     Db.Updateable(palletBindList).ExecuteCommand();
                     t = 1;
                 }
@@ -3256,8 +3256,9 @@
                 var palletBindList = Db.Queryable<BllPalletBind>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo && m.Status == "1").OrderByDescending(m => m.CreateTime).First();
                 if (palletBindList.IsBale == "1")
                 {
-                    palletBindList.IsBelt = "1";
+                    palletBindList.IsBale = "2";
                     Db.Updateable(palletBindList).ExecuteCommand();
+                    t = 1;
                 }
                 
                 return t;
diff --git a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
index b4bb031..b146a20 100644
--- a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
+++ b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs
@@ -1,4 +1,5 @@
 锘縰sing System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
 using System.Security.Policy;
@@ -6,6 +7,7 @@
 using System.Threading.Tasks;
 using Model.InterFaceModel;
 using Model.ModelDto.BllCheckDto;
+using Model.ModelDto.LogDto;
 using Model.ModelDto.PdaDto;
 using Model.ModelDto.SysDto;
 using Model.ModelVm;
@@ -904,7 +906,8 @@
             }
             try
             {
-                string EndLocat = string.Empty;//鐩爣浣嶇疆                
+                string EndLocat = string.Empty,OrderTy = "";//鐩爣浣嶇疆
+                                               
 
                 var log = Db.Queryable<LogTask>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && (w.Status == "0" || w.Status == "1"));
                 if (log != null)
@@ -924,10 +927,14 @@
                         throw new Exception("鎵�閫夊尯鍩熶俊鎭笉瀛樺湪,璇锋鏌�!");
                     }
                     EndLocat = GetLocat(areaNo, stockDetail.SkuNo, stockDetail.LotNo, palletNo);
+                    OrderTy = "3";//绉诲簱
                 }
                 else
                 {
                     EndLocat = ruku;
+                    OrderTy = "0";//鍏ュ簱
+
+
                 }
                 var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == stockDetail.SkuNo && w.LotNo == stockDetail.LotNo);
                 if (stock == null)
@@ -980,7 +987,7 @@
                     IsFinish = 1,//鏄惁鍙畬鎴�
                     Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟  2 绉诲簱浠诲姟
                     Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚
-                    OrderType = "3",//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
+                    OrderType = OrderTy,//0 鍏ュ簱鍗� 1 鍑哄簱鍗�  2 鐩樼偣鍗�  3 绉诲簱鍗�
 
                     CreateTime = DateTime.Now
                 };
@@ -1009,53 +1016,105 @@
 
                 #region 鍛煎彨灏忚溅浠g爜
 
+                var endlono = EndLocat;
+                var tasktype = "D00";  //榛樿涓虹偣鍒扮偣浠诲姟
+                //鏍规嵁鐩殑鍦板潃搴撳尯鑾峰彇灏忚溅浠诲姟绫诲瀷
+                switch (storageLocatEnd.AreaNo)
+                {
+                    case "B13" :
+                        tasktype = "D02";  // 鍙犳墭浠诲姟锛堢洰鐨勫湴鍧�涓虹┖鎵樼洏鏀堕泦鍖猴級
+                        break;
+                    case "B15":
+                        tasktype = "D01";  // 鎷嗘墭浠诲姟锛堢洰鐨勫湴鍧�涓烘嫞璐у尯锛�
+                        break;
+                }
+
+                //缂撳瓨搴撲綅杞崲     3妤煎師杈呮枡Y003_001锛孻003_002锛孻003_003  1妤糦138_001鍒癥138_021澶栧寘缂撳瓨鍖�   1妤糦128_001鍒癥128_015鍐呭寘缂撳瓨鍖�
+                if (storageLocatEnd.AreaNo == "B12")
+                {
+                    switch (EndLocat.ToString().Substring(4, 1))
+                    {
+                        case "1":
+                            endlono = "Y003_00" + EndLocat.ToString().Substring(6, 1);
+                            tasktype = "D00";     //鐐瑰埌鐐逛换鍔�
+                            break;
+                        case "2":
+                            endlono = "Y138_0" + EndLocat.ToString().Substring(5, 2);
+                            tasktype = "F20";    //鐢垫浠诲姟
+                            break;
+                        case "3":
+                            endlono = "Y128_0" + EndLocat.ToString().Substring(5, 2);
+                            tasktype = "F20";     //鐢垫浠诲姟
+                            break;
+                        default:
+                            break;
+                    }
+                }
+
+                //鐐瑰埌鐐规寚浠ら泦鍚�
+                object[] position = new object[2];
+                position[0] = new
+                {
+                    positionCode = stockDetail.LocatNo,
+                    type = "00"
+                };
+                position[1] = new
+                {
+                    positionCode = endlono,
+                    type = "00"
+                };
 
                 List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>();
+                Random r = new Random();
+                long ran =DateTime.Now.Ticks;
 
                 AgvSchedulingTask agvTask = new AgvSchedulingTask();
-                agvTask.ReqCode = taskNo;
-                agvTask.TaskTyp = "F01";
-                agvTask.WbCode = "";
-                agvTask.PositionCodePath = null;
-                agvTask.PodCode = "-1";
+                agvTask.TaskCode = taskNo;
+                agvTask.ReqCode = ran.ToString();
+                agvTask.TaskTyp = tasktype;
+                agvTask.PositionCodePath = position;
+                agvTask.CtnrTyp = "1";
+                if (tasktype == "D02")
+                {
+                    agvTask.CtnrNum = "10";     //鍙犳墭浠诲姟闇�瑕佷笅鍙戠┖鎵樼洏鏁伴噺
+                }
 
                 agvTaskList.Add(agvTask);
 
-                var IsTrue = false;
-                while (IsTrue == true)
+                
+                // 姝e紡杩愯绋嬪簭鏀惧紑
+                string str = "";
+                var list2 = agvTaskList.Select(m => m.ReqCode).ToList();
+                var jsonData = JsonConvert.SerializeObject(agvTaskList);
+                jsonData = jsonData.Substring(1, jsonData.Length - 1);
+                jsonData = jsonData.Substring(0, jsonData.Length - 1);
+                string response = "";
+
+                try
                 {
-                    // 姝e紡杩愯绋嬪簭鏀惧紑
-                    string str = "";
-                    var list2 = agvTaskList.Select(m => m.ReqCode).ToList();
-                    var jsonData = JsonConvert.SerializeObject(agvTaskList);
-                    string response = "";
+                    var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
+                    response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV");
+                    var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
 
-                    try
+                    //////瑙f瀽杩斿洖鏁版嵁 
+                    var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+                    if (agvModel.Code == "0")
                     {
-                        var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss")
-                        response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV");
-                        var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss")
-
-                        //////瑙f瀽杩斿洖鏁版嵁 
-                        var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
-                        if (agvModel.Code == "0")
-                        {
-                            //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
-                            new TaskServer().EditTaskIssueOk(list2, time1, time2);
-                            str += "涓嬪彂鎴愬姛";
-                            IsTrue = true;
-                        }
-                        if (agvModel.Code == "1")
-                        {
-                            new TaskServer().EditTaskIssueNo(list2, time1, time2, agvModel.Message);
-                            throw new Exception(agvModel.Message);
-                        }
+                        //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�//
+                        new TaskServer().EditTaskIssueOk(list2, time1, time2);
+                        str += "涓嬪彂鎴愬姛";
                     }
-                    catch (Exception ex)
+                    if (agvModel.Code == "1")
                     {
-                        throw new Exception(ex.Message);
+                        new TaskServer().EditTaskIssueNo(list2, time1, time2, agvModel.Message);
+                        throw new Exception(agvModel.Message);
                     }
                 }
+                catch (Exception ex)
+                {
+                    throw new Exception(ex.Message);
+                }
+               
                 #endregion
 
                 //鎻愪氦浜嬪姟
@@ -1074,7 +1133,7 @@
         /// <param name="palletNo"></param>
         /// <param name="areaNo"></param>
         /// <param name="userId"></param>
-        public List<string> AgvTransport2(string soNo, string palletNo, string areaNo, int userId, string url)
+        public List<string> AgvTransport2(string soNo, string palletNo, string areaNo,string ruku, int userId, string url)
         {
             if (string.IsNullOrEmpty(soNo))
             {
@@ -1196,12 +1255,58 @@
                     };
                     Db.Insertable(exTask).ExecuteCommand();
 
+                    var endlono = EndLocat;
+                    var tasktype = "D00";
+
+                    //鏍规嵁鐩殑鍦板潃搴撳尯鑾峰彇灏忚溅浠诲姟绫诲瀷
+                    switch (storageLocatEnd.AreaNo)
+                    {
+                        case "B13":
+                            tasktype = "D02";  // 鍙犳墭浠诲姟锛堢洰鐨勫湴鍧�涓虹┖鎵樼洏鏀堕泦鍖猴級
+                            break;
+                        case "B15":
+                            tasktype = "D01";  // 鎷嗘墭浠诲姟锛堢洰鐨勫湴鍧�涓烘嫞璐у尯锛�
+                            break;
+                    }
+
+                    //缂撳瓨搴撲綅杞崲     3妤煎師杈呮枡Y003_001锛孻003_002锛孻003_003  1妤糦138_001鍒癥138_021澶栧寘缂撳瓨鍖�   1妤糦128_001鍒癥128_015鍐呭寘缂撳瓨鍖�
+                    if (storageLocatEnd.AreaNo == "B12")
+                    {
+                        switch (EndLocat.ToString().Substring(4, 1))
+                        {
+                            case "1":
+                                endlono = "Y003_00" + EndLocat.ToString().Substring(6, 1);
+                                break;
+                            case "2":
+                                endlono = "Y138_0" + EndLocat.ToString().Substring(5, 2);
+                                tasktype = "F20";    //鐢垫浠诲姟
+                                break;
+                            case "3":
+                                endlono = "Y128_0" + EndLocat.ToString().Substring(5, 2);
+                                tasktype = "F20";     //鐢垫浠诲姟
+                                break;
+                            default:
+                                break;
+                        }
+                    }
+                    
+                    //鐐瑰埌鐐规寚浠ら泦鍚�
+                    object[] position = new object[2];
+                    position[0] = new
+                    {
+                        positionCode = item.LocatNo,
+                        type = "00"
+                    };
+                    position[1] = new
+                    {
+                        positionCode = endlono,
+                        type = "00"
+                    };
+
                     AgvSchedulingTask agvTask = new AgvSchedulingTask();
                     agvTask.ReqCode = taskNo;
-                    agvTask.TaskTyp = "F01";
-                    agvTask.WbCode = "";
-                    agvTask.PositionCodePath = null;
-                    agvTask.PodCode = "-1";
+                    agvTask.TaskTyp = tasktype;
+                    agvTask.PositionCodePath = position;
 
                     agvTaskList.Add(agvTask);
 
@@ -1249,6 +1354,8 @@
                     string str = "";
                     var list2 = agvTaskList.Select(m => m.ReqCode).ToList();
                     var jsonData = JsonConvert.SerializeObject(agvTaskList);
+                    jsonData = jsonData.Substring(1, jsonData.Length - 1);
+                    jsonData = jsonData.Substring(0, jsonData.Length - 1);
                     string response = "";
 
                     try
@@ -1290,6 +1397,126 @@
                 throw new Exception(ex.Message);
             }
         }
+
+        /// <summary>
+        /// agv璋冨害浠诲姟涓嬪彂
+        /// </summary>
+        /// <param name="type">鎼繍绫诲瀷</param>
+        /// <param name="taskno">浠诲姟鍙�</param>
+        /// <param name="positionStart">璧峰鍦板潃</param>
+        /// <param name="positionEnd">鐩殑鍦板潃</param>               2
+        /// <param name="url">鎺ュ彛URL</param>
+        public OutCommanAgvDto AGVTask(string type, string taskno, string positionStart, string positionEnd ,string url)
+        {
+
+            var endlono = positionEnd;
+            var tasktype = type;
+            var storageLocatEnd = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == endlono && w.Flag == "0" && w.Status == "0");
+            if (storageLocatEnd == null)
+            {                                                      
+                throw new Exception("鐢熸垚鐨凙GV浠诲姟鐩殑鍦板潃涓嶆纭�");
+            }
+            //鏍规嵁鐩殑鍦板潃搴撳尯鑾峰彇灏忚溅浠诲姟绫诲瀷
+            switch (storageLocatEnd.AreaNo)
+            {
+                case "B13":
+                    tasktype = "D02";  // 鍙犳墭浠诲姟锛堢洰鐨勫湴鍧�涓虹┖鎵樼洏鏀堕泦鍖猴級
+                    break;
+                case "B15":
+                    tasktype = "D01";  // 鎷嗘墭浠诲姟锛堢洰鐨勫湴鍧�涓烘嫞璐у尯锛�
+                    break;
+            }
+
+            // MES鐢宠澶囨枡锛屽鏂欏尯搴撲綅闇�瑕佽浆鎹�     杞﹂棿澶囨枡缂撳瓨浣嶅悕绉帮細3妤煎師杈呮枡Y003_001-->Y003_003  1妤煎鍖呯紦瀛樺尯Y138_001-->Y138_021   1妤煎唴鍖呯紦瀛樺尯Y128_001-->Y128_015
+            if (storageLocatEnd.AreaNo == "B12")
+            {
+                switch (endlono.ToString().Substring(4, 1))
+                {
+                    case "1":
+                        endlono = "Y003_00" + endlono.Substring(6, 1);
+                        break;
+                    case "2":
+                        endlono = "Y138_0" + endlono.Substring(5, 2);
+                        tasktype = "F20";    //鐢垫浠诲姟
+                        break;
+                    case "3":
+                        endlono = "Y128_0" + endlono.Substring(5, 2);
+                        tasktype = "F20";     //鐢垫浠诲姟
+                        break;
+                    default:
+                        break;
+                }
+            }
+            List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>();
+
+            object[] position = new object[2];
+            position[0] = new
+            {
+                positionCode = positionStart,
+                type = "00"
+            };
+            position[1] = new
+            {
+                positionCode = endlono,
+                type = "00"
+            };
+
+            AgvSchedulingTask agvTask = new AgvSchedulingTask();
+            agvTask.ReqCode = taskno;         //agv璇锋眰缂栧彿锛岄渶瑕侀殢鏈虹敓鎴�  锛堟渶澶�32浣嶏級
+            agvTask.TaskCode = taskno;         //浠诲姟鍙�
+            agvTask.TaskTyp = tasktype;           //鎼繍绫诲瀷
+            agvTask.PositionCodePath = position;      //璧峰鍜岀洰鐨勪綅闆嗗悎
+            agvTask.CtnrTyp = "1";            //瀹瑰櫒绫诲瀷锛屽�间负1
+            if (tasktype == "D02")
+            {
+                agvTask.CtnrNum = "10";     //鍙犳墭浠诲姟闇�瑕佷笅鍙戠┖鎵樼洏鏁伴噺
+            }
+            
+            agvTaskList.Add(agvTask);
+
+            string str = "";
+            var list2 = agvTaskList.Select(m => m.ReqCode).ToList();
+            var jsonData = JsonConvert.SerializeObject(agvTaskList);
+            jsonData = jsonData.Substring(1, jsonData.Length-1);
+            jsonData = jsonData.Substring(0, jsonData.Length - 1);
+            var response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV");
+            var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+
+            return agvModel;
+        }
+
+        /// <summary>
+        /// agv浠诲姟鍙栨秷
+        /// </summary>
+        /// <param name="taskno">鍙栨秷浠诲姟缂栧彿</param>
+        /// <param name="url">鎺ュ彛URL</param>
+        public void cancelTask(string taskno,string url)
+        {
+            try
+            {
+                AgvCancelTask agvTaskList = new AgvCancelTask();    
+                agvTaskList.ReqCode = "006"; //闅忔満鐢熸垚
+                agvTaskList.TaskCode = taskno.ToString();
+                //agvTaskList.ReqTime = DateTime.Now.ToString();
+
+               var jsonData = JsonConvert.SerializeObject(agvTaskList);
+                var response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV");
+                var agvModel = JsonConvert.DeserializeObject<cancelTaskModel>(response);
+
+                if (agvModel.Code != "0")
+                {
+                    throw new Exception("涓嬪彂AGV鍙栨秷浠诲姟澶辫触");
+                }
+
+            }
+            catch (Exception ex)
+            {
+
+                throw ex;
+            }
+
+        }
+
         /// <summary>
         /// 鏍规嵁鍖哄煙鍒嗛厤鍌ㄤ綅
         /// </summary>
@@ -1478,12 +1705,28 @@
                     {
                         {"Authorization",token }
                     };
+                    var endlono = EndLocat.LocatNo;
+                    //缂撳瓨搴撲綅杞崲
+                    switch (EndLocat.LocatNo.ToString().Substring(4, 1))
+                    {
+                        case "1":
+                            endlono = "Y003_00" + EndLocat.LocatNo.ToString().Substring(6, 1);
+                            break;
+                        case "2":
+                            endlono = "Y138_0" + EndLocat.LocatNo.ToString().Substring(5, 2);
+                            break;
+                        case"3":
+                            endlono = "Y128_0" + EndLocat.LocatNo.ToString().Substring(5, 2);
+                            break;
+                        default:
+                            break;
+                    }             
                     var mescode = Db.Queryable<BllExportNotice>().Where(w => w.SONo == stockDetail.First().SONo).First();
                     var mesData = new RequertBeiliaoModel()
                     {
                         morder_no = mescode.OrderCode,
                         pallet = stockDetail.First().PalletNo,
-                        layer_no = EndLocat.LocatNo,
+                        layer_no = endlono,
                         items = data
                     };
                     var jsonData = JsonConvert.SerializeObject(mesData);
@@ -1501,7 +1744,7 @@
 
 
                 //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "AGV杞繍", palletNo, "绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId);
+                var k = new OperationCrServer().AddLogOperationCr("PDA妯″潡", "浜哄伐杞繍", palletNo, "绉诲簱", $"PDA鍛煎彨灏忚溅瀵规墭鐩樺彿锛歿palletNo}鍙戣捣杞繍", userId);
                 
                 //鎻愪氦浜嬪姟
                 Db.CommitTran();
diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
index c732892..01368fc 100644
--- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
+++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs
@@ -24,6 +24,12 @@
 using WMS.IBLL.IBllSoServer;
 using Model.ModelVm;
 using System.Runtime.Intrinsics.X86;
+using WMS.Entity.BllAsnEntity;
+using Model.ModelDto;
+using WMS.BLL.BllPdaServer;
+using WMS.IBLL.IPdaServer;
+using System.DirectoryServices.Protocols;
+using Model.ModelDto.SysDto;
 
 namespace WMS.BLL.BllSoServer
 {
@@ -2235,16 +2241,24 @@
             }
         }
 
-        //wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙鍑哄簱鎴愬姛锛�
-        public void ExportSuccess(string taskNo, int userId)
+        //wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙鍑哄簱鎴愬姛锛� 
+        public void ExportSuccess(string taskNo, int userId,string url)
         {
             try
             {
+                //鍑哄簱浠诲姟鍙锋洿鏀癸紝濡傛灉鐢盤LC鍑哄簱锛屽垯PLC鍥炰紶浠诲姟鍙蜂负锛氫换鍔″彿+瀹為檯鍑哄簱鍙�
+                var TtaskNo = taskNo;
+                var outLine = "";
+                if (userId == 0)
+                {
+                    TtaskNo = taskNo.Substring(0, taskNo.Length - 4);
+                    outLine = taskNo.Substring(taskNo.Length - 4, 3);
+                }
                 //褰撳墠浠诲姟淇℃伅
-                var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0");
+                var task = Db.Queryable<LogTask>().First(m => m.TaskNo == TtaskNo && m.IsDel == "0");
                 if (task == null)
                 {
-                    throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅");
+                    throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹TtaskNo}鈥欑殑浠诲姟淇℃伅");
                 }
                 if (task.Status == "2")
                 {
@@ -2360,7 +2374,7 @@
                         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 allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.TaskNo == TtaskNo || (m.Status == "1" && m.PalletNo == task.PalletNo))).ToList();
 
                     foreach (var item in allot)
                     {
@@ -2379,7 +2393,106 @@
                     if (userId != 0)
                     {
                         //娣诲姞鎿嶄綔鏃ュ織璁板綍
-                        var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{taskNo}鐨勪换鍔�", userId);
+                        var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", TtaskNo, "瀹屾垚", $"鐐瑰嚮瀹屾垚鎸夐挳銆佸畬鎴愪换鍔″彿涓猴細{TtaskNo}鐨勪换鍔�", userId);
+                    }
+                    if (outLine != "")
+                    {
+                        #region 鍒嗛厤鍑哄簱鐩殑浣�
+                        string positionStart = outLine, positionEnd = "" ,type ="D00";
+                        var type1 = Db.Queryable<BllExportNotice>().Where(m => m.SONo == allot.First().SONo && m.IsDel == "0" && m.Status == "3").First();
+                        if (type1 == null)
+                        {
+                            var locateno = Db.Queryable<SysStorageLocat>().Where(m => m.AreaNo == "B13").ToList();
+                            type = "D02" ; //绌烘墭鐩樺灈鍑哄簱
+                             if (outLine == "443")//瑗夸晶鍑哄簱
+                            {
+                                positionEnd = locateno.First(m => m.LocatNo.Substring(3, 2) == "01" && m.LocatNo.Substring(3, 2) == "02" && m.LocatNo.Substring(3, 2) == "03" &&
+                                m.Status == "0" && m.Flag == "0").LocatNo;
+                            }
+                            else if (outLine == "440")  //涓滀晶鍑哄簱
+                            {
+                                positionEnd = locateno.First(m => m.LocatNo.Substring(4, 2) == "04" && m.LocatNo.Substring(4, 2) == "05" && m.LocatNo.Substring(4, 2) == "06" &&
+                                m.Status == "0" && m.Flag == "0").LocatNo; //涓滀晶鎴块棿搴撲綅
+                            }
+
+                        }
+                        if (type1.Type == "1" && (type1.Type == "5" || (positionStart == "440" && positionStart == "440")))  //3妤奸鏂欏嚭搴� /3L涓棿鍝佸嚭搴�
+                        {
+                            var locateno = Db.Queryable<SysStorageLocat>().Where(m => m.AreaNo == "B11").ToList();
+                            if (outLine == "443")//瑗夸晶鍑哄簱
+                            {
+                                positionEnd = locateno.First(m => m.LocatNo.Substring(3, 2) == "01"&& m.LocatNo.Substring(4, 2) == "02" && m.Status == "0" && m.Flag == "0").LocatNo; //瑗夸晶鎴块棿搴撲綅
+                            }
+                            else  if(outLine == "440")  //涓滀晶鍑哄簱
+                            {
+                                positionEnd = locateno.First(m => m.LocatNo.Substring(3, 2) == "03" && m.LocatNo.Substring(4, 2) == "04" && m.LocatNo.Substring(4, 2) == "05" &&
+                                m.LocatNo.Substring(4, 2) == "06" && m.LocatNo.Substring(3, 2) == "07" && m.Status == "0" && m.Flag == "0").LocatNo; //涓滀晶鎴块棿搴撲綅
+                            }
+                        }
+                        else if (type1.Type == "2" && type1.Type == "3") //鎶芥鍑哄簱 /鍙栨牱鍑哄簱
+                        {
+                            positionEnd = Db.Queryable<SysStorageLocat>().First(m => m.AreaNo == "B04" && m.Status == "0" && m.Flag == "0").LocatNo;
+                        }
+                        else if (type1.Type == "4")//涓嶅悎鏍煎搧鍑哄簱
+                        {
+
+                            positionEnd = Db.Queryable<SysStorageLocat>().First(m => m.AreaNo == "B03" && m.Status == "0" && m.Flag == "0").LocatNo;
+                        }
+                        else //鍏朵粬鍗曟嵁绫诲瀷閮藉瓨鏀惧彂璐х紦瀛樺尯
+                        {
+                            positionEnd = Db.Queryable<SysStorageLocat>().First(m => m.AreaNo == "B02" && m.Status == "0" && m.Flag == "0").LocatNo;
+                        }
+                        #endregion
+
+                        #region AGV璋冪敤
+                        var storageLocatEnd = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == positionEnd && w.Flag == "0" && w.Status == "0");
+                        if (storageLocatEnd == null)
+                        {
+                            throw new Exception("鐢熸垚鐨凙GV浠诲姟鐩殑鍦板潃涓嶆纭�");
+                        }
+                        List<AgvSchedulingTask> agvTaskList = new List<AgvSchedulingTask>();
+
+                        object[] position = new object[2];
+                        position[0] = new
+                        {
+                            positionCode = positionStart,
+                            type = "00"
+                        };
+                        position[1] = new
+                        {
+                            positionCode = positionEnd,
+                            type = "00"
+                        };
+
+                        AgvSchedulingTask agvTask = new AgvSchedulingTask();
+                        agvTask.ReqCode = TtaskNo;         //agv璇锋眰缂栧彿锛岄渶瑕侀殢鏈虹敓鎴�  锛堟渶澶�32浣嶏級
+                        agvTask.TaskCode = TtaskNo;         //浠诲姟鍙�
+                        agvTask.TaskTyp = type;           //鎼繍绫诲瀷
+                        agvTask.PositionCodePath = position;      //璧峰鍜岀洰鐨勪綅闆嗗悎
+                        agvTask.CtnrTyp = "1";            //瀹瑰櫒绫诲瀷锛屽�间负1
+                        if (type == "D02")
+                        {
+                            agvTask.CtnrNum = "10";     //鍙犳墭浠诲姟闇�瑕佷笅鍙戠┖鎵樼洏鏁伴噺
+                        }
+
+                        agvTaskList.Add(agvTask);
+
+                        string str = "";
+                        var list2 = agvTaskList.Select(m => m.ReqCode).ToList();
+                        var jsonData = JsonConvert.SerializeObject(agvTaskList);
+                        jsonData = jsonData.Substring(1, jsonData.Length - 1);
+                        jsonData = jsonData.Substring(0, jsonData.Length - 1);
+                        var response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橝GV杞繍鍛戒护", "AGV");
+                        var agvModel = JsonConvert.DeserializeObject<OutCommanAgvDto>(response);
+                        if (agvModel.Code != "0")
+                        {
+                            //璁板綍log
+                            var logStr = $@".\log\AGV\浠诲姟鍙嶉" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+                            jsonData = JsonConvert.SerializeObject(agvModel);
+                            LogFile.SaveLogToFile($"AGV浠诲姟鍙嶉鎵ц閫氱煡锛�( {jsonData} ),", logStr);
+                        }
+
+                        #endregion
                     }
                     Db.CommitTran();
                 }
@@ -2400,7 +2513,7 @@
         /// </summary>
         /// <param name="taskNo">浠诲姟鍙�</param>
         /// <param name="userId">鎿嶄綔浜�</param>
-        /// <exception cref="Exception"></exception>
+        /// <exception cref="Exception"></exception>          
         public void RelocationSuccess(string taskNo, int userId)
         {
             try
@@ -3621,5 +3734,266 @@
 
             return nowAddress;
         }
+
+        /// <summary>
+        /// 鑾峰彇鎷嗗灈鎵樼洏鎷嗗灈淇℃伅
+        /// </summary>
+        /// <param name="model">鎷嗗灈鎵樼洏鍙峰拰WCS浠诲姟鍙�</param>
+        /// <returns>鎷嗗灈鎵樼洏淇℃伅</returns>
+        public RequestBoxInfoCheck BoxInfoCheckWcs (BoxInfoCheck model)
+        {
+            try
+            {
+                // 鍒ゆ柇褰撳墠浠诲姟鐘舵��  Status 1:姝e湪鎵ц 3:寮傚父缁撴潫
+                var taskModel = Db.Queryable<LogTask>().First(m => m.TaskNo == model.TaskNo && m.IsDel == "0" && m.Status == "1");
+                if (taskModel == null)
+                {
+                    throw new Exception("姝や换鍔′笉瀛樺湪鎴栦换鍔$姸鎬佸凡鍙樻洿!");
+                }
+                // 楠岃瘉鎵樼洏鍒嗛厤淇℃伅
+                var palletBindModel = Db.Queryable<BllExportAllot>().First(m => m.PalletNo == model.PalletNo && m.TaskNo == model.TaskNo && m.IsDel == "0" && m.Status == "1");
+                if (palletBindModel != null)
+                {
+                    throw new Exception("鏈壘鍒板綋鍓嶆墭鐩樺垎閰嶄换鍔′俊鎭�!");
+                }
+                //璁$畻褰撳墠褰撳墠鎵樼洏涓婄鏁板拰鎷嗗灈绠辨暟
+                var storcklist = Db.Queryable<DataStockDetail>().First(m => m.PalletNo == palletBindModel.PalletNo && m.SkuNo == palletBindModel.SkuNo && m.LotNo == palletBindModel.LotNo);
+
+                string level = "1";
+                int qty = 0, qtycount = 0;
+                var packlist = Db.Queryable<SysPackag>().First(m => m.PackagNo == palletBindModel.SkuNo && m.IsDel == "0");
+                if (packlist.L2Name == "绠�")
+                {
+                    level = "2";
+                }
+                switch (level)
+                {
+                    case "1":
+                        qty = (int)(palletBindModel.Qty / packlist.L1Num);
+                        qtycount = (int)(storcklist.Qty / packlist.L1Num);
+                        break;
+                    case "2":
+                        qty = (int)(palletBindModel.Qty / packlist.L2Num);
+                        qtycount = (int)(storcklist.Qty / packlist.L2Num);
+                        break;
+
+                }
+                
+                var list = new RequestBoxInfoCheck
+                {
+                    PalletNo = model.PalletNo,
+                    TaskNo = model.TaskNo,
+                    SkuNo = palletBindModel.SkuNo,
+                    SkuName  = palletBindModel.SkuName,
+                    LotNo = palletBindModel.LotNo,
+                    OrderNo = palletBindModel.SONo,
+                    Standard = palletBindModel.Standard,
+                    Qty = qty,//鎷嗗灈绠辨暟
+                    QtyCount = qtycount   //鎵樼洏涓婄鏁�
+                };
+                return list;
+            }
+            catch (Exception e)
+            {
+
+                throw new Exception(e.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎷嗗灈鍒嗘嫞涓绘壂绠辩爜鍑哄簱
+        /// </summary>
+        /// <param name="model">鎷嗗灈鎵樼洏鍙峰拰WCS浠诲姟鍙�</param>
+        /// <returns>鎷嗗灈鎵樼洏淇℃伅</returns>
+        public string BoxInfoExportWcs(string boxno)
+        {
+            try
+            {
+                if (string.IsNullOrWhiteSpace(boxno))
+                {
+                    throw new Exception("涓绘壂鍒嗘嫞绠辩爜涓虹┖");
+                }
+                //绠辩爜鎵�鍦ㄦ媶鍨涙嫞璐т俊鎭�
+                var boxModel = Db.Queryable<DataBoxInfo>().First(m=>m.BoxNo == boxno);
+                if (boxModel == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
+                }
+                //鍑哄簱鍒嗛厤淇℃伅
+                var allot = Db.Queryable<BllExportAllot>().First(m =>
+                    m.IsDel == "0" && (m.Status == "2" || m.Status == "3") && m.PalletNo == boxModel.PalletNo);
+                if (allot == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樼殑鍒嗛厤淇℃伅");
+                }
+                //鍑哄簱鍗�
+                var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == allot.SONo);
+                if (notice == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鐨勪俊鎭�");
+                }
+                //鍑哄簱鍗曟槑缁�
+                var noticeDetail = Db.Queryable<BllExportNoticeDetail>()
+                    .First(m => m.IsDel == "0" && m.Id == allot.SODetailNo);
+                if (noticeDetail == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ュ嚭搴撳崟鏄庣粏鐨勪俊鎭�");
+                }
+                
+                //鍓╀綑鎷h揣鏁伴噺锛堝緟鎷e噺鍘诲凡鎷o級
+                var needQty = allot.Qty - allot.CompleteQty;
+
+                //搴撳瓨鏄庣粏
+                var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.Id == allot.StockId);
+                if (stockDetail == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨鏄庣粏淇℃伅锛�");
+                }
+                //搴撳瓨鎬昏〃
+                var stock = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetail.SkuNo && a.LotNo == stockDetail.LotNo);
+                if (stock == null)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ユ墭鐩樺垎閰嶇殑搴撳瓨淇℃伅锛�");
+                }
+
+                List<DataBoxInfo> boxInfos;
+                var boxInfo = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxno && m.StockDetailId == stockDetail.Id);
+                if (boxInfo.Count() == 0)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ョ鐮佸強杩芥函鐮佺殑淇℃伅");
+                }
+                boxInfos = boxInfo.ToList();
+
+                var comDetailList = Db.Queryable<BllCompleteDetail>().Where(m => m.IsDel == "0" && m.ExportAllotId == allot.Id && m.PalletNo == boxModel.PalletNo).ToList();
+                if (boxInfo.Count() == 0)
+                {
+                    throw new Exception("鏈煡璇㈠埌璇ョ鐮佺殑淇℃伅");
+                }
+                if (boxInfo.Any(m => m.PalletNo != boxModel.PalletNo))
+                {
+                    throw new Exception("璇ユ墭鐩樹笌绠辩爜娌℃湁缁戝畾鍏崇郴");
+                }
+                var boxQty = boxInfo.GroupBy(m => m.BoxNo).Select(m => SqlFunc.AggregateSum(m.Qty)).ToList();
+                if (boxQty[0] > needQty)
+                {
+                    throw new Exception("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鍓╀綑寰呮嫞鏁伴噺");
+                }
+                decimal pickQty = 0;//鎷h揣鐨勬暟閲�
+
+                var comList = new List<BllCompleteDetail>();
+                foreach (var item in boxInfos)
+                {
+                    //娣诲姞鎷h揣鏄庣粏
+                    var completeDetail = new BllCompleteDetail()
+                    {
+                        SONo = allot.SONo,
+                        SODetailNo = allot.SODetailNo,
+                        ExportAllotId = allot.Id,
+                        StockId = allot.StockId,
+                        BoxNo = item.BoxNo,
+                        BoxNo2 = item.BoxNo2,
+                        BoxNo3 = item.BoxNo3,
+
+                        LotNo = allot.LotNo,
+                        LotText = allot.LotText,
+                        SupplierLot = allot.SupplierLot,
+                        SkuNo = allot.SkuNo,
+                        SkuName = allot.SkuName,
+                        Standard = allot.Standard,
+                        PalletNo = boxModel.PalletNo,
+                        CompleteQty = item.Qty,
+
+                    };
+                    comList.Add(completeDetail);
+
+                    
+                    pickQty += item.Qty;
+                    //鍒犻櫎搴撳瓨绠辩爜鏄庣粏
+                    Db.Deleteable(item).ExecuteCommand();
+                }
+
+                Db.Insertable(comList).ExecuteCommand();
+                //淇敼鍑哄簱鍒嗛厤淇℃伅
+                allot.CompleteQty += pickQty;
+                allot.Status = allot.Qty == allot.CompleteQty ? "5" : "3";
+                allot.UpdateTime = DateTime.Now;
+                if (allot.Status == "5")
+                {
+                    //鍒ゆ柇璇ユ墭鐩樻槸鍚﹁繕瀛樺湪鐗╂枡 瀛樺湪鏀逛负寰呭洖搴� 寰呭洖搴撳畬鎴愬悗鏀逛负宸插畬鎴�
+                }
+                Db.Updateable(allot).ExecuteCommand();
+
+                //鍒犻櫎鎴栦慨鏀瑰簱瀛樻槑缁�
+                stockDetail.BitPalletMark = "1";//淇敼涓洪浂鎵樻爣璇�
+                stockDetail.Qty -= pickQty;
+                stockDetail.LockQty -= pickQty;
+                if (stockDetail.Qty == stockDetail.LockQty)
+                {
+                    stockDetail.Status = "2";
+                }
+                else if (stockDetail.Qty > stockDetail.LockQty && stockDetail.LockQty > 0)
+                {
+                    stockDetail.Status = "1";
+                }
+                else
+                {
+                    stockDetail.Status = "0";
+                }
+
+                if (stockDetail.Qty <= 0)
+                {
+                    Db.Deleteable(stockDetail).ExecuteCommand();
+                }
+                else
+                {
+                    Db.Updateable(stockDetail).ExecuteCommand();
+                }
+                stock.Qty -= pickQty;
+                stock.LockQty -= pickQty;
+                if (stock.Qty <= 0)
+                {
+                    Db.Deleteable(stock).ExecuteCommand();
+                }
+                else
+                {
+                    Db.Updateable(stock).ExecuteCommand();
+                }
+                var num2 = Db.Queryable<DataStockDetail>().Count(m => m.IsDel == "0" && m.PalletNo == boxModel.PalletNo);
+                if (num2 <= 0)
+                {
+                    //鏀瑰彉鎵樼洏鐘舵��
+                    var pallet = Db.Queryable<SysPallets>().First(m => m.PalletNo == boxModel.PalletNo && m.IsDel == "0");
+                    if (pallet == null)
+                    {
+                        throw new Exception("鏈湪鎵樼洏琛ㄤ腑鏌ヨ鍒版墭鐩樹俊鎭�");
+                    }
+                    pallet.Status = "0";
+                    Db.Updateable(pallet).ExecuteCommand();
+                }
+                //淇敼鍑哄簱鍗曟槑缁嗘嫞璐ф暟閲�
+                noticeDetail.CompleteQty += pickQty;
+                noticeDetail.Status = "2";
+                Db.Updateable(noticeDetail).ExecuteCommand();
+
+                var num = Db.Queryable<BllExportNoticeDetail>()
+                    .Count(m => m.IsDel == "0" && m.SONo == allot.SONo && m.CompleteQty < m.Qty);
+                if (num <= 0)
+                {
+                    notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�
+
+                    noticeDetail.Status = "3";
+                    Db.Updateable(noticeDetail).ExecuteCommand();
+                }
+                //淇敼鍑哄簱鍗曚俊鎭�
+                Db.Updateable(notice).ExecuteCommand();
+                
+                return "";
+            }
+            catch (Exception e)
+            {
+
+                throw new Exception(e.Message);
+            }
+        }
     }
 }
diff --git a/Wms/WMS.BLL/DataServer/StockServer.cs b/Wms/WMS.BLL/DataServer/StockServer.cs
index 265e972..83d3b68 100644
--- a/Wms/WMS.BLL/DataServer/StockServer.cs
+++ b/Wms/WMS.BLL/DataServer/StockServer.cs
@@ -11,8 +11,10 @@
 using Model.ModelVm.DataVm;
 using SqlSugar;
 using WMS.DAL;
+using WMS.Entity.BllSoEntity;
 using WMS.Entity.Context;
 using WMS.Entity.DataEntity;
+using WMS.Entity.LogEntity;
 using WMS.Entity.SysEntity;
 using WMS.IBLL.IDataServer;
 
@@ -1021,5 +1023,143 @@
             return stockDetailsList;
         }
         #endregion
+
+        #region AGV灏忚溅浠诲姟瀹屾垚
+
+        /// <summary>
+        /// AGV鍏ュ簱瀹屾垚
+        /// </summary>
+        /// <param name="TaskCode">浠诲姟鍙�</param>
+        /// <returns></returns>
+        public void ArriveFinish(string TaskCode)
+        {
+            try
+            {
+                var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.OrderType == "0");//鑾峰彇浠诲姟淇℃伅
+                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇搴撲綅淇℃伅
+                var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo);
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+               
+                //淇敼璧峰搴撲綅鐘舵��
+                storageLocat.Status = "0";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
+                Db.Updateable(storageLocat).ExecuteCommand();
+
+                //淇敼浠诲姟鐘舵��
+                palletNo.Status = "2";   //宸插畬鎴�
+                Db.Updateable(palletNo).ExecuteCommand();
+
+                //淇敼搴撳瓨鏄庣粏
+                stockDetail.Status = "0";//寰呭垎閰�
+                stockDetail.LocatNo = "";
+                stockDetail.AreaNo = "";
+                stockDetail.RoadwayNo = "";
+                stockDetail.WareHouseNo = "";
+                Db.Updateable(stockDetail).ExecuteCommand();
+
+                //涓嬪彂WCS鐢宠鍏ュ簱
+
+
+                Db.CommitTran();
+
+            }
+            catch (Exception ex)
+            {
+
+                throw new Exception("AGV杩斿洖鍏ュ簱瀹屾垚淇″彿澶勭悊閿欒锛岄敊璇俊鎭細" + ex);
+            }
+        }
+
+        /// <summary>
+        /// AGV鍑哄簱瀹屾垚
+        /// </summary>
+        /// <param name="TaskCode">浠诲姟鍙�</param>
+        /// <returns></returns>
+        public void SoFinish(string TaskCode)
+        {
+            try
+            {
+                var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.OrderType == "1");//鑾峰彇浠诲姟淇℃伅
+                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.EndLocat); //鑾峰彇搴撲綅淇℃伅
+                var storageStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇搴撲綅淇℃伅
+                var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo); //鑾峰彇搴撳瓨淇℃伅
+
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+                //淇敼鐩殑搴撲綅鐘舵��
+                storageLocat.Status = "1";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
+                Db.Updateable(storageLocat).ExecuteCommand();
+
+                //淇敼浠诲姟鐘舵��
+                palletNo.Status = "2";   //宸插畬鎴�
+                Db.Updateable(palletNo).ExecuteCommand();
+
+                //淇敼搴撳瓨鏄庣粏
+                stockDetail.Status = "2";// 0:寰呭垎閰�   1:閮ㄥ垎鍒嗛厤 2锛氬凡鍒嗛厤 3锛氱洏鐐归攣瀹氾細 4绉诲簱閿佸畾
+                stockDetail.LocatNo = storageLocat.LocatNo;
+                stockDetail.AreaNo = storageLocat.AreaNo;
+                stockDetail.RoadwayNo = storageLocat.RoadwayNo;
+                stockDetail.WareHouseNo = storageLocat.WareHouseNo;
+                Db.Updateable(stockDetail).ExecuteCommand();
+
+
+                Db.CommitTran();
+
+            }
+            catch (Exception ex )
+            {
+
+                throw new Exception("AGV杩斿洖鍑哄簱瀹屾垚淇″彿澶勭悊閿欒锛岄敊璇俊鎭細" + ex);
+            }
+        }
+
+        /// <summary>
+        /// AGV绉诲簱瀹屾垚
+        /// </summary>
+        /// <param name="TaskCode">浠诲姟鍙�</param>
+        /// <returns></returns>
+        public void MoveFinish(string TaskCode)
+        {
+            try
+            {
+                var palletNo = Db.Queryable<LogTask>().First(m => m.TaskNo == TaskCode && m.OrderType == "3");//鑾峰彇浠诲姟淇℃伅
+                var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.EndLocat); //鑾峰彇搴撲綅淇℃伅
+                var storageStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == palletNo.StartLocat); //鑾峰彇搴撲綅淇℃伅
+                var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo.PalletNo); //鑾峰彇搴撳瓨淇℃伅
+                //var soAllot = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.PalletNo == palletNo.PalletNo);//鑾峰彇鍒嗛厤淇℃伅
+                
+                
+                //寮�鍚簨鍔�
+                Db.BeginTran();
+                //淇敼璧峰搴撲綅鐘舵��
+                storageLocat.Status = "0";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
+                Db.Updateable(storageLocat).ExecuteCommand();
+
+                //淇敼鐩殑搴撲綅鐘舵��
+                storageLocat.Status = "1";//0锛氱┖鍌ㄤ綅 1锛氭湁鐗╁搧 2锛氬叆搴撲腑 3锛氬嚭搴撲腑 4锛氱Щ鍏ヤ腑 5锛氱Щ鍑轰腑 
+                Db.Updateable(storageLocat).ExecuteCommand();
+
+                //淇敼浠诲姟鐘舵��
+                palletNo.Status = "2";   //宸插畬鎴�
+                Db.Updateable(palletNo).ExecuteCommand();
+
+                //淇敼搴撳瓨鏄庣粏
+                stockDetail.Status = "2";// 0:寰呭垎閰�   1:閮ㄥ垎鍒嗛厤 2锛氬凡鍒嗛厤 3锛氱洏鐐归攣瀹氾細 4绉诲簱閿佸畾
+                stockDetail.LocatNo = storageLocat.LocatNo;
+                stockDetail.AreaNo = storageLocat.AreaNo;
+                stockDetail.RoadwayNo = storageLocat.RoadwayNo;
+                stockDetail.WareHouseNo = storageLocat.WareHouseNo;
+                Db.Updateable(stockDetail).ExecuteCommand();
+
+
+                Db.CommitTran();
+            }
+            catch (Exception ex)
+            {
+
+                throw new Exception("AGV杩斿洖绉诲簱瀹屾垚淇″彿澶勭悊閿欒锛岄敊璇俊鎭細"+ex);
+            }
+        }
+        #endregion
     }
 }
diff --git a/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs b/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs
index e8a088d..092b795 100644
--- a/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs
+++ b/Wms/WMS.IBLL/IBllAsnServer/IArrivalNoticeServer.cs
@@ -93,7 +93,7 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        HttpReturnModel HttpCreateAsn(AsnInfo model);
+        HttpReturnModel HttpCreateAsn(AsnInfo model,string url);
         /// <summary>
         /// 璁㈠崟鍥炰紶涓婃父绯荤粺
         /// </summary>
diff --git a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
index ee5de99..e6f2d61 100644
--- a/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
+++ b/Wms/WMS.IBLL/IBllSoServer/IExportNoticeServer.cs
@@ -133,7 +133,7 @@
         /// <param name="taskNo">浠诲姟鍙�</param> 
         /// <param name="userId">鎿嶄綔浜�</param> 
         /// <returns></returns>
-        void ExportSuccess(string taskNo,int userId);
+        void ExportSuccess(string taskNo,int userId,string url);
 
         /// <summary>
         /// wcs杩斿洖鐨勬垚鍔熶俊鍙锋垨鎵嬪姩瀹屾垚锛堢Щ搴撴垚鍔燂級
@@ -215,5 +215,13 @@
         /// <param name="soNo"></param>
         /// <returns></returns>
         string IsNeedUnpack(string soNo);
+
+        /// <summary>
+        /// 鑾峰彇鎷嗗灈鎵樼洏鎷嗗灈淇℃伅
+        /// </summary>
+        /// <param name="model">鎷嗗灈鎵樼洏鍙峰拰WCS浠诲姟鍙�</param>
+        /// <returns>鎷嗗灈鎵樼洏淇℃伅</returns>
+
+        public RequestBoxInfoCheck BoxInfoCheckWcs(BoxInfoCheck model);
     }
 }
diff --git a/Wms/WMS.IBLL/IDataServer/IStockServer.cs b/Wms/WMS.IBLL/IDataServer/IStockServer.cs
index 506e689..f3733db 100644
--- a/Wms/WMS.IBLL/IDataServer/IStockServer.cs
+++ b/Wms/WMS.IBLL/IDataServer/IStockServer.cs
@@ -119,5 +119,29 @@
         /// <returns></returns>
         List<StockDetailDto> GetInventoryList1DaoChu(string skuNo, string skuName, string lotNo, string locatNo, string palletNo, string status, string inspectStatus);
         #endregion
+
+        #region AGV灏忚溅浠诲姟瀹屾垚
+        /// <summary>
+        /// 鍏ュ簱浠诲姟瀹屾垚
+        /// </summary>
+        /// <param name="skuNo">鐗╂枡缂栫爜</param>
+        /// <param name="skuName">鐗╂枡鍚嶇О</param>
+        /// <returns></returns>
+        public void ArriveFinish(string TaskCode);
+        /// <summary>
+        /// 鍑哄簱浠诲姟瀹屾垚
+        /// </summary>
+        /// <param name="skuNo">鐗╂枡缂栫爜</param>
+        /// <param name="skuName">鐗╂枡鍚嶇О</param>
+        /// <returns></returns>
+        public void SoFinish(string TaskCode);
+        /// <summary>
+        /// 绉诲簱浠诲姟瀹屾垚
+        /// </summary>
+        /// <param name="skuNo">鐗╂枡缂栫爜</param>
+        /// <param name="skuName">鐗╂枡鍚嶇О</param>
+        /// <returns></returns>
+        public void MoveFinish(string TaskCode);
+        #endregion
     }
 }
diff --git a/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs b/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
index 9c14ecc..55e32dc 100644
--- a/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
+++ b/Wms/WMS.IBLL/IPdaServer/IPdaCrServer.cs
@@ -1,6 +1,7 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.Text;
+using Model.InterFaceModel;
 using Model.ModelDto.BllCheckDto;
 using Model.ModelDto.PdaDto;
 using WMS.Entity.DataEntity;
@@ -137,7 +138,19 @@
         /// <param name="palletNo"></param>
         /// <param name="areaNo"></param>
         /// <param name="userId"></param>
-        List<string> AgvTransport2(string soNo, string palletNo, string areaNo, int userId, string url);
+        List<string> AgvTransport2(string soNo, string palletNo, string areaNo,string ruku, int userId, string url);
+
+        /// <summary>
+        ///  agv浠诲姟涓嬪彂
+        /// </summary>
+        /// <param name="model"></param>
+        public OutCommanAgvDto AGVTask(string type, string taskno, string positionStart, string positionEnd, string url);
+
+        /// <summary>
+        ///  agv浠诲姟鍙栨秷
+        /// </summary>
+        /// <param name="model"></param>
+        public void cancelTask(string taskno, string url);
         #endregion
 
         #region 浜哄伐杞繍
diff --git a/Wms/Wms/Controllers/BllSoController.cs b/Wms/Wms/Controllers/BllSoController.cs
index f64a0bd..dfc5272 100644
--- a/Wms/Wms/Controllers/BllSoController.cs
+++ b/Wms/Wms/Controllers/BllSoController.cs
@@ -700,7 +700,7 @@
                 var type = _taskSvc.GetTaskType(taskNo);
                 if (type == "1")//鍑哄簱瀹屾垚
                 {
-                    _exNoticeSvc.ExportSuccess(taskNo, int.Parse(userId));
+                    _exNoticeSvc.ExportSuccess(taskNo, int.Parse(userId), "");
                 }
                 else if (type == "2")//鍑哄簱鏃朵骇鐢熺殑绉诲簱浠诲姟瀹屾垚
                 {
diff --git a/Wms/Wms/Controllers/DownApiController.cs b/Wms/Wms/Controllers/DownApiController.cs
index 09af858..a578558 100644
--- a/Wms/Wms/Controllers/DownApiController.cs
+++ b/Wms/Wms/Controllers/DownApiController.cs
@@ -17,6 +17,7 @@
 using Model.ModelVm.PdaVm;
 using WMS.IBLL.IPdaServer;
 using Model.ModelVm;
+using WMS.IBLL.IDataServer;
 
 namespace Wms.Controllers
 {
@@ -34,8 +35,9 @@
         private readonly ITaskServer _taskSvc;//浠诲姟Svc 
         private readonly IPdaSoServer _pdaSoSvc;//绌烘墭鍑哄簱Svc
         private readonly IPdaAsnServer _paAsnSvc;//绌烘墭璺虹粦瀹�
+        private readonly IStockServer _stockSvc;//AGV浠诲姟瀹屾垚绠�
 
-        public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IPdaSoServer pdaSoSvc,IPdaAsnServer paAsnSvc)
+        public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IPdaSoServer pdaSoSvc,IPdaAsnServer paAsnSvc,IStockServer stockSvc)
         {
             _config = setting.Value;
             _exNoticeSvc = exNoticeSvc;
@@ -44,6 +46,7 @@
             _taskSvc = taskSvc;
             _pdaSoSvc = pdaSoSvc;
             _paAsnSvc = paAsnSvc;
+            _stockSvc = stockSvc; 
         }
 
         #region WMS鎺ュ彛 璋冪敤涓嬫父绯荤粺鎺ュ彛 
@@ -374,7 +377,7 @@
                     case "1"://鍑哄簱瀹屾垚浠诲姟
                         if (model.TaskType == "1")//0锛氬叆搴� 1锛氬嚭搴� 2锛氱Щ搴�
                         {
-                            _exNoticeSvc.ExportSuccess(model.TaskNo, 0);
+                            _exNoticeSvc.ExportSuccess(model.TaskNo, 0, _config.AgvHost + _config.GenAgvSchedulingTask);
                             return Ok(new WcsModel { StatusCode = 0, Msg = "鍑哄簱瀹屾垚" });
                         }
                         else if (model.TaskType == "2")
@@ -696,6 +699,31 @@
 
         //杞﹂棿鍙枡
 
+        //WCS鐢宠鎷嗗灈淇℃伅
+        /// <summary>
+        /// 鎴愬搧绠辩爜鎷嗗灈鎷h揣
+        /// </summary>
+        /// <param name="model">鍏ュ簱鍗曚俊鎭�</param>
+        /// <returns></returns>
+        [AllowAnonymous]
+        [HttpPost]
+        public IActionResult ResultBoxInfoCheckWcs(BoxInfoCheck model)
+        {
+            var logStr = $@".\log\WCS\WCS鐢宠鎷嗗灈鎵樼洏淇℃伅" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
+            try
+            {
+                RequestBoxInfoCheck list = _exNoticeSvc.BoxInfoCheckWcs(model);
+                return Ok(new { Success = 1,Message = "鎷嗗灈淇℃伅鑾峰彇鎴愬姛",data = list});
+            }
+            catch  (Exception e)
+            {
+                LogFile.SaveLogToFile($"WCS鐢宠鎵樼洏鎷嗗灈寮傚父杩斿洖锛�( {e.Message} ),", logStr);
+
+                return Ok(new ErpModel { Success = -1, Message = e.Message});
+            }
+
+        }
+
 
         #region AGV
 
@@ -704,10 +732,10 @@
         ///  AGV 鎵ц鍥炶皟鐨勬柟娉曪紝鍖呭惈浠诲姟寮�濮嬶紝璧板嚭鍌ㄤ綅锛屼换鍔″畬鎴愬強浠诲姟鍙栨秷銆�
         ///  鍙栨秷閫氱煡涓轰换鍔″崟锛屽叾浠栭�氱煡涓哄崟涓换鍔$粍鎴栧瓙浠诲姟銆傛敞鎰忥細鏄惁閫氱煡闇�瑕佸湪浠诲姟妯℃澘閰嶇疆
         /// </summary>
+        /// <param name="model">鍏ュ簱鍗曚俊鎭�</param>
         /// <returns></returns>
-        /// <exception cref="Exception"></exception>
         [HttpPost]
-        public IActionResult AgvCallback(AgvContinueTask model)
+        public IActionResult AgvCallback(AgvTaskDto model)
         {
             try
             {
@@ -718,21 +746,32 @@
 
                 //鎺ユ敹鏃堕棿
                 var time1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
+
+                //娴嬭瘯鎺ュ彛鐢�
                 var orderType = _taskSvc.GetTaskOrderType(model.TaskCode);// 鍒ゆ柇鍗曟嵁绫诲瀷鍏ュ嚭绉�
 
                 var taskType = _taskSvc.GetTaskType(model.TaskCode);//鏍规嵁浠诲姟鍙疯幏鍙栦换鍔$被鍨�
                 switch (orderType)
                 {
                     case "0"://鍏ュ簱浠诲姟鎵ц
+                        _stockSvc.ArriveFinish(model.TaskCode);
+                        break;
 
                     case "1"://鍑哄簱浠诲姟鎵ц
+                        _stockSvc.SoFinish(model.TaskCode);
+                        break;
+
                     case "2"://鐩樺簱浠诲姟鎵ц
+
                     case "3"://绉诲簱浠诲姟鎵ц
-                        return Ok(new OutCommanAgvDto { Code = "0", Message = "鎴愬姛", ReqCode = model.ReqCode });
+                        _stockSvc.MoveFinish(model.TaskCode);
+                        break;
+                    // return Ok(new OutCommanAgvDto { Code = "0", Message = "鎴愬姛", ReqCode = model.ReqCode });
 
                     default:
                         return Ok(new OutCommanAgvDto { Code = "1", Message = "澶辫触", ReqCode = model.ReqCode });
                 }
+                return Ok(new OutCommanAgvDto { Code = "0", Message = "鎴愬姛", ReqCode = model.ReqCode });
 
             }
             catch (Exception ex)
@@ -745,7 +784,7 @@
             }
 
         }
-
+        
 
         #endregion
 
diff --git a/Wms/Wms/Controllers/PdaCrController.cs b/Wms/Wms/Controllers/PdaCrController.cs
index a668121..cf4cc6b 100644
--- a/Wms/Wms/Controllers/PdaCrController.cs
+++ b/Wms/Wms/Controllers/PdaCrController.cs
@@ -363,7 +363,7 @@
                 }
 
                 var uId = int.Parse(userId);
-                _pdaCrSvc.AgvTransport(model.PalletNo, model.AreaNo, model.Ruku, uId, _config.WcsHost + _config.GenAgvSchedulingTask);
+                _pdaCrSvc.AgvTransport(model.PalletNo, model.AreaNo, model.Ruku, uId, _config.AgvHost + _config.GenAgvSchedulingTask);
 
                 return Ok(new { data = "", code = 0, msg = "鎴愬姛" });
             }
@@ -395,7 +395,7 @@
                 }
 
                 var uId = int.Parse(userId);
-                var str = _pdaCrSvc.AgvTransport2(model.SoNo,model.PalletNo, model.AreaNo, uId, _config.WcsHost + _config.GenAgvSchedulingTask);
+                var str = _pdaCrSvc.AgvTransport2(model.SoNo,model.PalletNo, model.AreaNo,model.Ruku, uId, _config.WcsHost + _config.GenAgvSchedulingTask);
                 var msgStr = "";
                 if (str.Contains("0"))
                 {
diff --git a/Wms/Wms/Controllers/UpApiController.cs b/Wms/Wms/Controllers/UpApiController.cs
index e215e71..8f6894a 100644
--- a/Wms/Wms/Controllers/UpApiController.cs
+++ b/Wms/Wms/Controllers/UpApiController.cs
@@ -13,6 +13,7 @@
 using WMS.IBLL.IBllCheckServer;
 using Model.ModelVm.BllCheckVm;
 using Microsoft.Extensions.Logging;
+using WMS.IBLL.IPdaServer;
 
 namespace Wms.Controllers
 {
@@ -28,12 +29,14 @@
         private readonly IExportNoticeServer _exNoticeSvc;//鍑哄簱鍗昐vc 
         private readonly IArrivalNoticeServer _arrivalNoticeSvc;
         private readonly IStockCheckServer _stockCheckSvc;//鐩樼偣鍗昐vc 
-        public UpApiController(IOptions<ApiUrlConfig> setting,IExportNoticeServer exNoticeSvc,IArrivalNoticeServer arrivalNoticeServer,IStockCheckServer stockCheckSvc)
+        private readonly IPdaCrServer _daCrSvc;//PDA
+        public UpApiController(IOptions<ApiUrlConfig> setting,IExportNoticeServer exNoticeSvc,IArrivalNoticeServer arrivalNoticeServer,IStockCheckServer stockCheckSvc,IPdaCrServer daCrSvc)
         {
             _config = setting.Value;
             _exNoticeSvc = exNoticeSvc;
             _arrivalNoticeSvc = arrivalNoticeServer;
             _stockCheckSvc = stockCheckSvc;
+            _daCrSvc = daCrSvc;
         }
         #endregion
 
@@ -134,7 +137,7 @@
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
-        [HttpPost]
+        [HttpPost]                                                                      
         public IActionResult FinishExportNotice(FinshVm model)
         {
             try
@@ -209,8 +212,56 @@
             }
         }
 
-        //绠辩爜淇℃伅 鎵嬫寔缁勬墭鐢� (鎵鐮佸悜杩芥函瑕佷俊鎭�)  
+        //绠辩爜淇℃伅 鎵嬫寔缁勬墭鐢� (鎵鐮佸悜杩芥函瑕佷俊鎭�)
+        //
 
+
+        /// <summary>
+        /// 涓嬪彂AGV璋冨害浠诲姟
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult AGVTask(string type, string taskno, string positionStart, string positionEnd)
+        {
+            try
+            {
+                    
+                OutCommanAgvDto agvRequest =  _daCrSvc.AGVTask(type,taskno,positionStart,positionEnd, _config.AgvHost + _config.GenAgvSchedulingTask);
+                if (agvRequest.Code != "0")
+                {
+                    return Ok(new { code = 1, msg = "灏忚溅浠诲姟鎵ц澶辫触" });
+                }
+
+                return Ok(new { code = 1, msg = "AGV浠诲姟涓嬪彂鎴愬姛" });
+
+            }
+            catch (Exception e)
+            {
+                return Ok(new { code = 1, msg = e.Message });
+            }
+        }
+
+        /// <summary>
+        /// 涓嬪彂AGV鍙栨秷浠诲姟
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public IActionResult cancelTask(string taskno)
+        {
+            try
+            {
+
+                _daCrSvc.cancelTask(taskno, _config.AgvHost + _config.CancelTask);
+                return Ok(new { code = 1, msg = "AGV浠诲姟鍙栨秷鎴愬姛" });
+
+            }
+            catch (Exception e)
+            {
+                return Ok(new { code = 1, msg = e.Message });
+            }
+        }
 
         #endregion
 
@@ -244,7 +295,7 @@
                     LogFile.SaveLogToFile($"鍏ュ簱鍗曚笅鍙戯細( {jsonData} ),", logStr);
                 }
 
-                result = _arrivalNoticeSvc.HttpCreateAsn(model);
+                result = _arrivalNoticeSvc.HttpCreateAsn(model, _config.WcsHost + _config.AddOrderTaskUrl);
                 if (logStr != "")
                 {
                     var jsonData = JsonConvert.SerializeObject(result);
diff --git a/Wms/Wms/Properties/launchSettings.json b/Wms/Wms/Properties/launchSettings.json
index 5db9873..cad583c 100644
--- a/Wms/Wms/Properties/launchSettings.json
+++ b/Wms/Wms/Properties/launchSettings.json
@@ -1,20 +1,13 @@
 {
-  "iisSettings": {
-    "windowsAuthentication": false,
-    "anonymousAuthentication": true,
-    "iisExpress": {
-      "applicationUrl": "http://localhost:50515/",
-      "sslPort": 44363
-    }
-  },
-  "$schema": "http://json.schemastore.org/launchsettings.json",
   "profiles": {
     "IIS Express": {
       "commandName": "IISExpress",
       "launchBrowser": true,
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
-      }
+      },
+      "sqlDebugging": false,
+      "nativeDebugging": true
     },
     "Wms": {
       "commandName": "Project",
@@ -24,5 +17,14 @@
       },
       "applicationUrl": "https://localhost:5001;http://localhost:5000"
     }
+  },
+  "$schema": "http://json.schemastore.org/launchsettings.json",
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://192.168.137.94:8081/",
+      "sslPort": 44363
+    }
   }
 }
\ No newline at end of file
diff --git a/Wms/Wms/Tools/ApiUrlConfig.cs b/Wms/Wms/Tools/ApiUrlConfig.cs
index 28203b5..2488b98 100644
--- a/Wms/Wms/Tools/ApiUrlConfig.cs
+++ b/Wms/Wms/Tools/ApiUrlConfig.cs
@@ -109,6 +109,11 @@
         public string GenAgvSchedulingTask { get; set; }
 
         /// <summary>
+        /// 鍙栨秷浠诲姟鎺ュ彛
+        /// </summary>
+        public string CancelTask { get; set; }
+
+        /// <summary>
         /// 缁х画鎵ц浠诲姟鎺ュ彛
         /// </summary>
         public string ContinueTask { get; set; }
diff --git a/Wms/Wms/appsettings.json b/Wms/Wms/appsettings.json
index 5c09e14..92bb1cf 100644
--- a/Wms/Wms/appsettings.json
+++ b/Wms/Wms/appsettings.json
@@ -27,7 +27,7 @@
     "MesHost": "http://10.18.99.67:3000", //mesIP
     "WcsHost": "http://10.60.16.10:5005", // "http://localhost:57061", //wcsIPhttp://localhost:57061/
     "BoxHost": "http://10.110.24.30:8081", //boxIP
-    "AgvHost": "http://10.110.24.30:8081", //agvIP
+    "AgvHost": "http://10.18.99.66:8181", //agvIP
 
     // WCS
     "IssueComApiUrl": "/api/demo/wcsTasks", //涓嬪彂鍛戒护(鍑哄簱銆佺Щ搴�)
@@ -49,9 +49,10 @@
     "FuMaGetTokenUrl": "/port/mes/service/system/sign_login", //鑾峰彇浠ょ墝
 
     // AGV
-    "GenAgvSchedulingTask": "http://IP:PORT/rcms/services/rest/hikRpcService/genAgvSchedulingTask", //鐢熸垚浠诲姟鍗曟帴鍙�
-    "ContinueTask": "http://IP:PORT/rcms/services/rest/hikRpcService/continueTask", //缁х画鎵ц浠诲姟鎺ュ彛
-    "GenPreScheduleTask": "http://IP:PORT/rcms/services/rest/hikRpcService/genPreScheduleTask" // 棰勮皟搴﹀澶栨帴鍙�
+    "GenAgvSchedulingTask": "/rcms/services/rest/hikRpcService/genAgvSchedulingTask", //鐢熸垚浠诲姟鍗曟帴鍙�
+    "CancelTask": "/rcms/services/rest/hikRpcService/cancelTask",//鍙栨秷浠诲姟鎺ュ彛
+    "ContinueTask": "/rcms/services/rest/hikRpcService/continueTask", //缁х画鎵ц浠诲姟鎺ュ彛
+    "GenPreScheduleTask": "/rcms/services/rest/hikRpcService/genPreScheduleTask" // 棰勮皟搴﹀澶栨帴鍙�
   },
   "MesConfig": {
     "MesUser": "wms",

--
Gitblit v1.8.0