From bc3d7a828114cb9df154da869ec986cf6733a779 Mon Sep 17 00:00:00 2001
From: pulg <plg@Haninfo>
Date: 星期二, 27 五月 2025 17:14:40 +0800
Subject: [PATCH] 1

---
 HH.WCS.ZCQTJ/util/LogHelper.cs                 |    2 
 HH.WCS.ZCQTJ/Entitys/S_AGV_CONDITIONEntitys.cs |   78 ++++++
 HH.WCS.ZCQTJ/util/STAttribute .cs              |   21 +
 HH.WCS.ZCQTJ/wms/WMSModel.cs                   |    8 
 HH.WCS.ZCQTJ/Bll/ZCBLL.cs                      |  105 ++++++--
 HH.WCS.ZCQTJ/api/WmsController.cs              |  144 +++++++++++
 HH.WCS.ZCQTJ/process/TaskProcess.cs            |   31 ++
 HH.WCS.ZCQTJ/Config/Config.json                |   16 +
 HH.WCS.ZCQTJ/dispatch/WcsTask.cs               |   36 +++
 HH.WCS.ZCQTJ/Bll/StateTaskBLL.cs               |  178 +++++++++-----
 HH.WCS.ZCQTJ/Entitys/ConfigJsonEntitys.cs      |   45 +++
 HH.WCS.ZCQTJ/core/TaskCore.cs                  |   38 ++
 HH.WCS.ZCQTJ/wms/LocationHelper.cs             |    5 
 13 files changed, 593 insertions(+), 114 deletions(-)

diff --git a/HH.WCS.ZCQTJ/Bll/StateTaskBLL.cs b/HH.WCS.ZCQTJ/Bll/StateTaskBLL.cs
index 3693c00..8f77ff0 100644
--- a/HH.WCS.ZCQTJ/Bll/StateTaskBLL.cs
+++ b/HH.WCS.ZCQTJ/Bll/StateTaskBLL.cs
@@ -1,6 +1,7 @@
 锘縰sing HH.WCS.Hexafluo;
 using HH.WCS.Hexafluo.device;
 using HH.WCS.Hexafluo.dispatch;
+using HH.WCS.Hexafluo.process;
 using HH.WCS.Hexafluo.util;
 using HH.WCS.Hexafluo.wms;
 using HH.WCS.SJML.Comm;
@@ -1209,36 +1210,7 @@
             }
             var chi = new SqlHelper<object>().GetInstance();
             var newDb = chi.CopyNew();
-            List<string> AreaLo = new List<string>() { "TCXB", "TTXB", "NCXB", "DSXB", "TMXB", "TQXB", "TQJT" };
-            WMSTask PritTask = null;
-            //鏌ヨ鏄惁鏄浉鍏冲簱鍖�-            if (executeStatePara.transportTask.S_TYPE == "鍑哄簱" && AreaLo.Contains(executeStatePara.transportTask.S_END_LAREA))
-            {
-                LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + executeStatePara.transportTask.S_TASK_NO + " 缁堢偣搴撳尯鏄惁绛変簬DSXB 鏈换鍔�" + executeStatePara.transportTask.S_END_LAREA);
-                //鏌ヨ閰嶅埗琛�-                var transportTask = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == executeStatePara.transportTask.S_END_LAREA + "-閫佹弧鍙栫┖")?.First();
-                if (transportTask != null)
-                {
-                    var ListString = JsonConvert.DeserializeObject<List<ConfigValueList>>(transportTask.TypeJson);
-                    if (ListString != null && ListString.Count > 0)
-                    {
-                        var Strin = ListString.Find(e => e.LocationCode1 == executeStatePara.transportTask.S_END_LOC);
-                        LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + executeStatePara.transportTask.S_TASK_NO + "鏄惁鍖归厤鍒颁簡闃熷弸鐨勮揣浣嶄俊鎭� + JsonConvert.SerializeObject(Strin));
-                        if (Strin != null)
-                        {
-                            //鏌ヨ鏃佽竟鐨勮揣浣嶆槸鍚︽湁宸叉帹閫佷絾鏄病鎵ц鐨勪换鍔�-                            var SfgLo = newDb.Queryable<WMSTask>().Where(e => e.S_START_LOC == Strin.LocationCode2 && e.S_NOTE.Equals("agv浠诲姟") && (e.S_B_STATE == "宸叉帹閫� || e.S_B_STATE == "鎵ц涓�))?.First();
-                            LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + executeStatePara.transportTask.S_TASK_NO + "鍖归厤鍒扮殑璐т綅 鏄惁瀛樺湪 鏄痑gv浠诲姟 骞朵笖浠诲姟涓婂凡鎺ㄩ�" + JsonConvert.SerializeObject(SfgLo));
-                            if (SfgLo != null)//鏈夎繖涓换鍔�-                            {
-                                var Agvstr = NDCHelper.ChangeParamPri(SfgLo.S_TASK_NO, 60);
-                                LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + SfgLo.S_TASK_NO + "浼樺厛绾т负锛� + 60 + "   鏄惁鎴愬姛 :" + Agvstr);
-                                PritTask = SfgLo;
-                            }
-                        }
-                    }
-                }
-            }
+
             try
             {
                 LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟鐘舵� 浜嬪姟寮�:" + executeStatePara.transportTask.S_TASK_NO);
@@ -1249,12 +1221,7 @@
                 {
                     throw new Exception("鏇存柊浠诲姟鐘舵�澶辫触");
                 }
-                if (PritTask != null)
-                {
-                    // var ddd = executeStatePara.transportTaskSrc.Select(e => e.S_ID).ToList();
-                    var ggj = newDb.Updateable<WMSTask>().SetColumns(it => new WMSTask() { N_PRIORITY = 40 }).Where(e => e.S_ID == PritTask.S_ID).ExecuteCommand();
-                    LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + PritTask.S_TASK_NO + "浼樺厛绾т负锛� + 40 + "   鏄惁鎴愬姛 鏀箇ms浠诲姟 褰卞搷琛屾暟:" + ggj);
-                }
+
                 newDb.CommitTran();
                 LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟鐘舵� 浜嬪姟缁撴潫:" + executeStatePara.transportTask.S_TASK_NO);
                 return OperateResult.Succeed();
@@ -2201,24 +2168,24 @@
             var newDb = chi.CopyNew();
             Location location2 = null;
             List<ConfigValueList> ListValues = new List<ConfigValueList>();
-            if (executeStatePara.startIsCurrentTask.S_NOTE == "鏅鸿兘绌烘《婊℃墭")
-            {
-                //鏌ヨ閰嶇疆琛ㄤ俊鎭�-                var transport = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "鏅鸿兘绌烘《缂撳瓨")?.First();
-                if (transport != null)
-                {
-                    ListValues = JsonConvert.DeserializeObject<List<ConfigValueList>>(transport.TypeJson);
-                    if (ListValues.Count() > 0)
-                    {
-                        //鏌ヨ鍑哄搴旂殑绌烘墭缂撳瓨浣�-                        var ggf = ListValues.Find(e => e.LocationCode1 == executeStatePara.transportTask.S_START_LOC);
-                        if (ggf != null)
-                        {
-                            location2 = newDb.Queryable<Location>().Where(e => e.S_LOC_CODE == ggf.LocationCode2)?.First();
-                        }
-                    }
-                }
-            }
+            //if (executeStatePara.startIsCurrentTask.S_NOTE == "鏅鸿兘绌烘《婊℃墭")
+            //{
+            //    //鏌ヨ閰嶇疆琛ㄤ俊鎭�+            //    var transport = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "鏅鸿兘绌烘《缂撳瓨")?.First();
+            //    if (transport != null)
+            //    {
+            //        ListValues = JsonConvert.DeserializeObject<List<ConfigValueList>>(transport.TypeJson);
+            //        if (ListValues.Count() > 0)
+            //        {
+            //            //鏌ヨ鍑哄搴旂殑绌烘墭缂撳瓨浣�+            //            var ggf = ListValues.Find(e => e.LocationCode1 == executeStatePara.transportTask.S_START_LOC);
+            //            if (ggf != null)
+            //            {
+            //                location2 = newDb.Queryable<Location>().Where(e => e.S_LOC_CODE == ggf.LocationCode2)?.First();
+            //            }
+            //        }
+            //    }
+            //}
             try
             {
                 LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟鐘舵� 浜嬪姟寮�:" + executeStatePara.transportTask.S_TASK_NO);
@@ -2258,22 +2225,22 @@
                     //}
                     //LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟缁堢偣璐т綅" + executeStatePara.transportTask.S_START_LOC + "鐨勭姸鎬侀攣涓烘棤锛�);
                 }
-                if (executeStatePara.transportTask.S_TYPE.Equals("鍏ュ簱") && executeStatePara.startIsCurrentTask.S_NOTE == "鏅鸿兘绌烘《婊℃墭")
-                {
-                    if (location2 != null && (location2.N_CURRENT_NUM - 1 >= 0))
-                    {
-                        I = newDb.Updateable<Location>().SetColumns(it => new Location()
-                        {
-                            T_MODIFY = DateTime.Now,
-                            N_CURRENT_NUM = it.N_CURRENT_NUM - 1,
-                            T_EMPTY_TIME = DateTime.Now
-                        }).Where(x => x.S_LOC_CODE == location2.S_LOC_CODE).ExecuteCommand();
-                        if (I == 0)
-                        {
-                            throw new Exception("鏇存柊缁堢偣褰撳墠瀹归噺-1澶辫触");
-                        }
-                    }
-                }
+                //if (executeStatePara.transportTask.S_TYPE.Equals("鍏ュ簱") && executeStatePara.startIsCurrentTask.S_NOTE == "鏅鸿兘绌烘《婊℃墭")
+                //{
+                //    if (location2 != null && (location2.N_CURRENT_NUM - 1 >= 0))
+                //    {
+                //        I = newDb.Updateable<Location>().SetColumns(it => new Location()
+                //        {
+                //            T_MODIFY = DateTime.Now,
+                //            N_CURRENT_NUM = it.N_CURRENT_NUM - 1,
+                //            T_EMPTY_TIME = DateTime.Now
+                //        }).Where(x => x.S_LOC_CODE == location2.S_LOC_CODE).ExecuteCommand();
+                //        if (I == 0)
+                //        {
+                //            throw new Exception("鏇存柊缁堢偣褰撳墠瀹归噺-1澶辫触");
+                //        }
+                //    }
+                //}
                 if (executeStatePara.transportTask.S_TYPE.Equals("鍑哄簱"))
                 {
                     //鍒犻櫎鎵樼洏浜у搧鍏宠仈
@@ -2337,6 +2304,70 @@
             }
             var chi = new SqlHelper<object>().GetInstance();
             var newDb = chi.CopyNew();
+
+            List<string> AreaLo = new List<string>() { "TCXB", "TTXB", "NCXB", "DSXB", "TMXB", "TQXB", "TQJT" };
+            WMSTask PritTask = null;
+            //鏌ヨ鏄惁鏄浉鍏冲簱鍖�+            if (executeStatePara.transportTask.S_TYPE == "鍑哄簱" && AreaLo.Contains(executeStatePara.transportTask.S_END_LAREA))
+            {
+                LogHelper.TaskDetail(logPara, $"鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細{executeStatePara.transportTask.S_TASK_NO} 缁堢偣搴撳尯鏄惁鍖呭惈{JsonConvert.SerializeObject(AreaLo)} 鏈换鍔�" + executeStatePara.transportTask.S_END_LAREA);
+                //鏌ヨ閰嶇疆鏂囦欢
+                var transportTask = STAttribute.GetValueTwo(executeStatePara.transportTask.S_END_LAREA + "-閫佹弧鍙栫┖");
+                if (transportTask != null)
+                {
+                    var ListString = JsonConvert.DeserializeObject<List<ConfigValueListTwo>>(transportTask);
+                    if (ListString != null && ListString.Count > 0)
+                    {
+                        var Strin = ListString.Find(e => e.LocationCode1 == executeStatePara.transportTask.S_END_LOC);
+                        LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + executeStatePara.transportTask.S_TASK_NO + "鏄惁鍖归厤鍒颁簡闃熷弸鐨勮揣浣嶄俊鎭� + JsonConvert.SerializeObject(Strin));
+                        if (Strin != null)
+                        {
+                            //鏌ヨ鏃佽竟鐨勮揣浣嶆槸鍚︽湁宸叉帹閫佷絾鏄病鎵ц鐨勪换鍔�+                            //  List<string> TaskState2 = new List<string> { "鏈墽琛�, "宸叉帹閫�, "鎵ц涓� };
+                            var SfgLo = newDb.Queryable<WMSTask>().Where(e => Strin.LocationCode2.Contains(e.S_START_LOC) && e.S_NOTE.Equals("agv浠诲姟") && (e.S_B_STATE == "鏈墽琛� || e.S_B_STATE == "宸叉帹閫� || e.S_B_STATE == "鎵ц涓�)).ToList();
+                            LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + executeStatePara.transportTask.S_TASK_NO + "鍖归厤鍒扮殑璐т綅 鏄惁瀛樺湪 鏄痑gv浠诲姟 骞朵笖浠诲姟鐘舵�涓�鏈墽琛�宸叉帹閫�鎵ц涓�鐨勪换鍔℃湁:" + JsonConvert.SerializeObject(SfgLo));
+                            if (SfgLo.Count() > 0)//鏈夎繖涓换鍔�+                            {
+                                //鐪嬭繖涓换鍔℃槸鍚︽槸鏈夊浜庨厤缃┖鎵樼涓�綅鐨勮揣浣�+                                var OneLoc = Strin.LocationCode2.FirstOrDefault();
+                                LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾� 閰嶇疆涓涓�釜璐т綅涓猴細" + OneLoc);
+                                var OneTask = SfgLo.Find(e => e.S_START_LOC == OneLoc);
+                                if (OneTask != null)
+                                {
+                                    if (OneTask.S_B_STATE == "鏈墽琛�)//鎺ㄩ�浠诲姟
+                                    {
+                                        OneTask.N_PRIORITY = 60;
+                                        TaskProcess.SendTask(OneTask);
+                                    }
+                                    else
+                                    {
+                                        var Agvstr = NDCHelper.ChangeParamPri(OneTask.S_TASK_NO, 60);
+                                        LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + OneTask.S_TASK_NO + "浼樺厛绾т负锛� + 60 + "   鏄惁鎴愬姛 :" + Agvstr);
+                                    }
+                                    PritTask = OneTask;
+                                }
+                                else
+                                {
+                                    SfgLo = SfgLo.OrderBy(e => e.T_CREATE).ToList();
+                                    var OneTaskR = SfgLo.FirstOrDefault();
+                                    if (OneTaskR.S_B_STATE == "鏈墽琛�)//鎺ㄩ�浠诲姟
+                                    {
+                                        OneTaskR.N_PRIORITY = 60;
+                                        TaskProcess.SendTask(OneTaskR);
+                                    }
+                                    else
+                                    {
+                                        var Agvstr = NDCHelper.ChangeParamPri(OneTaskR.S_TASK_NO, 60);
+                                        LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + OneTaskR.S_TASK_NO + "浼樺厛绾т负锛� + 60 + "   鏄惁鎴愬姛 :" + Agvstr);
+                                    }
+                                    PritTask = OneTaskR;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
             try
             {
                 LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟鐘舵� 浜嬪姟寮�:" + executeStatePara.transportTask.S_TASK_NO);
@@ -2388,6 +2419,13 @@
                         }
                     }
                 }
+
+                if (PritTask != null)
+                {
+                    // var ddd = executeStatePara.transportTaskSrc.Select(e => e.S_ID).ToList();
+                    var ggj = newDb.Updateable<WMSTask>().SetColumns(it => new WMSTask() { N_PRIORITY = 60 }).Where(e => e.S_ID == PritTask.S_ID).ExecuteCommand();
+                    LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟浼樺厛绾�浠诲姟鍙凤細" + PritTask.S_TASK_NO + "浼樺厛绾т负锛� + 60 + "   鏄惁鎴愬姛 鏀箇ms浠诲姟 褰卞搷琛屾暟:" + ggj);
+                }
                 newDb.CommitTran();
                 LogHelper.TaskDetail(logPara, "鏇存柊浠诲姟鐘舵� 浜嬪姟缁撴潫:" + executeStatePara.transportTask.S_TASK_NO);
                 return OperateResult.Succeed();
diff --git a/HH.WCS.ZCQTJ/Bll/ZCBLL.cs b/HH.WCS.ZCQTJ/Bll/ZCBLL.cs
index d976d07..59706da 100644
--- a/HH.WCS.ZCQTJ/Bll/ZCBLL.cs
+++ b/HH.WCS.ZCQTJ/Bll/ZCBLL.cs
@@ -34,7 +34,7 @@
                 var newDb = chi.CopyNew();
                 foreach (var task in TaskList)
                 {
-                    LogHelper.Info("澶勭悊鑷浠诲姟", " 鍑哄簱 寮�------浠诲姟:" + task.S_TASK_NO);
+                    LogHelper.DanInfo("澶勭悊鑷浠诲姟", " 鍑哄簱 寮�------浠诲姟:" + task.S_TASK_NO);
                     try
                     {
                         bool ggf = true;
@@ -48,6 +48,7 @@
                             string lkBit = task.S_START_LOC;
 
                             var locationBit = LocationHelper.LocationCode(lkBit);
+                            var tTaskNum = newDb.Queryable<OutAreaTaskAnyJbEntitys>().Where(e => e.S_AreaCode == task.S_START_LAREA && e.S_IsUse == "Y")?.First();
                             //鑾峰彇鎵樼洏鍙� 濡傛灉璧风偣绠℃帶鐨勮瘽
                             var endArea = newDb.Queryable<TN_AreaEntitys>().Where(e => e.S_AREA_CODE == task.S_END_LAREA)?.First();
                             if (endArea != null && endArea.S_CONTROL_QTY == "Y")
@@ -55,7 +56,7 @@
                                 var locaBit = newDb.Queryable<LocCntrRel>().Where(e => e.S_CNTR_CODE == task.S_CNTRS).First();
                                 if (locaBit == null)
                                 {
-                                    LogHelper.Info("澶勭悊鑷浠诲姟", "鏈壘鍒版墭鐩樿揣浣嶇粦瀹氾細鍏朵腑 S_CNTRS=" + task.S_CNTRS);
+                                    LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鏈壘鍒版墭鐩樿揣浣嶇粦瀹氾細鍏朵腑 S_CNTRS=" + task.S_CNTRS);
                                     throw new Exception("鏈壘鍒版墭鐩樿揣浣嶇粦瀹氾細鍏朵腑 S_CNTRS=" + task.S_CNTRS);
                                 }
                             }
@@ -63,7 +64,7 @@
                             var ToBit = LocationHelper.LocationCodeJbw(task.S_START_LOC);
                             if (ToBit == null)
                             {
-                                LogHelper.Info("澶勭悊鑷浠诲姟", "鏈壘鍒板贩閬撳彿锛氬叾涓�S_START_LOC=" + task.S_START_LOC);
+                                LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鏈壘鍒板贩閬撳彿锛氬叾涓�S_START_LOC=" + task.S_START_LOC);
                                 throw new Exception("鏈壘鍒板贩閬撳彿锛氬叾涓�S_START_LOC=" + task.S_START_LOC);
                             }
                             if (locationBit == null)
@@ -71,7 +72,41 @@
                             //閫氳繃浠诲姟绫诲瀷鎵炬帴椹充綅
                             var _bit = "";
                             string input = task.S_Jb_Bit;
-                            string[] result = input.Split(',');
+                            List<string> result = input.Split(',').ToList();
+                            if (tTaskNum != null && Itemgh != null)
+                            {
+                                //鏌ヨ璧风偣搴撳尯瀵瑰簲宸烽亾鎬讳换鍔¢噺
+                                var TaskLis = newDb.Queryable<WMSTask>().Where(e => e.S_START_LAREA == task.S_START_LAREA && e.S_Main_task == "涓讳换鍔� && e.S_B_STATE == "鏈墽琛� && (e.S_Jb_Bit.Contains(result.FirstOrDefault()) || e.S_Jb_Bit.Contains(result.LastOrDefault()))).ToList();
+                                if (TaskLis.Count > 0)
+                                {
+                                    //绛涢�鍑哄簱鐨勫叏閮ㄦ弧鎵樹换鍔�+                                    var TaskTray = TaskLis.Select(e => e.S_CNTRS).ToList();
+                                    LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绛涢�鍑哄簱鐨勫叏閮ㄦ弧鎵樹换鍔� + JsonConvert.SerializeObject(TaskTray));
+                                    //鏌ユ墭鐩樼┖婊�+                                    var TaskItemghList = newDb.Queryable<CntrItemRel>().Where(e => TaskTray.Contains(e.S_CNTR_CODE)).ToList();
+                                    if (TaskItemghList.Count() > 0)
+                                    {
+                                        //鑾峰彇婊℃墭鐨勬墭鐩橀泦鍚�+                                        var MtTray = TaskItemghList.Select(e => e.S_CNTR_CODE).ToList();
+                                        LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绛涢�鍑哄簱鐨勫叏閮ㄦ弧鎵樹换鍔� + JsonConvert.SerializeObject(MtTray));
+                                        TaskLis = TaskLis.FindAll(e => MtTray.Contains(e.S_CNTRS)).ToList();
+                                    }
+                                }
+                                if (TaskLis.Count() > 0)
+                                {
+                                    LogHelper.DanInfo("澶勭悊鑷浠诲姟", $"璧风偣搴撳尯{task.S_START_LAREA} 鎵�鐨勫贩閬撶殑 鏈墽琛岀殑浠诲姟閲忎负:{TaskLis.Count()}");
+                                    LogHelper.DanInfo("澶勭悊鑷浠诲姟", $"鏈�ぇ浠诲姟鏁颁负{tTaskNum.N_TaskQuantity}");
+                                    if (TaskLis.Count() < tTaskNum.N_TaskQuantity)
+                                    {
+                                        if (result.Count > 1)
+                                        {
+                                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", $"鎺掗櫎鍓嶆帴椹充綅鏈墈JsonConvert.SerializeObject(result)}");
+                                            result.RemoveRange(1, result.Count - 1);
+                                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", $"鎺掗櫎鍚庢帴椹充綅鏈墈JsonConvert.SerializeObject(result)}");
+                                        }
+                                    }
+                                }
+                            }
                             Location connectBit = new Location();
                             foreach (var item in result)
                             {
@@ -129,7 +164,7 @@
 
                                 if (lstLocation.Count() == 0)
                                 {
-                                    LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夊彲鐢ㄨ揣浣�);
+                                    LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夊彲鐢ㄨ揣浣�);
                                     throw new Exception("娌℃湁鍙敤璐т綅");
                                 }
                                 //濡傛灉澶栦晶鏈夐樆鎸★紝灏卞皢澶栦晶鐨勮揣浣嶇殑CN_S_TASK_NO  鑾峰彇鍒�@@ -154,7 +189,7 @@
 
                                         if (emptyLocation.Count() == 0)
                                         {
-                                            LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夎宸烽亾涓殑鍙敤绌鸿揣浣�CN_S_AREA_CODE=" + locationBit.S_AREA_CODE);
+                                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夎宸烽亾涓殑鍙敤绌鸿揣浣�CN_S_AREA_CODE=" + locationBit.S_AREA_CODE);
                                             throw new Exception("娌℃湁鍙敤璐т綅");
                                         }
 
@@ -173,13 +208,13 @@
                                             loca.And(it => it.S_LOCK_STATE == "鍑哄簱閿�);
                                             List<Location> locationOutLock = newDb.Queryable<Location>().Where(loca.ToExpression()).ToList();
 
-                                            LogHelper.Info("澶勭悊鑷浠诲姟", "locationOutLock鏁版嵁:" + JsonConvert.SerializeObject(locationOutLock));
+                                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", "locationOutLock鏁版嵁:" + JsonConvert.SerializeObject(locationOutLock));
 
                                             foreach (Location lEntity in locationOutLock)
                                             {
                                                 emptyLocation.RemoveAll(o => o.N_ROW == lEntity.N_ROW && o.N_COL == lEntity.N_COL && o.N_LAYER == lEntity.N_LAYER);
                                             }
-                                            LogHelper.Info("澶勭悊鑷浠诲姟", "鍘婚櫎棰勫嚭搴撻攣瀹氬悗鐨別mptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation));
+                                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鍘婚櫎棰勫嚭搴撻攣瀹氬悗鐨別mptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation));
                                             //鍘婚櫎棰勫叆搴撻攣瀹氱殑鎺掑垪灞� 
                                             var locaIn = Expressionable.Create<Location>();
@@ -187,13 +222,13 @@
                                             locaIn.And(it => it.S_AREA_CODE == obstructBit.S_AREA_CODE);
                                             locaIn.And(it => it.S_LOCK_STATE == "鍏ュ簱閿�);
                                             List<Location> locationInLock = newDb.Queryable<Location>().Where(locaIn.ToExpression()).ToList();
-                                            LogHelper.Info("澶勭悊鑷浠诲姟", "locationInLock鏁版嵁:" + JsonConvert.SerializeObject(locationInLock));
+                                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", "locationInLock鏁版嵁:" + JsonConvert.SerializeObject(locationInLock));
 
                                             foreach (Location lEntity in locationInLock)
                                             {
                                                 emptyLocation.RemoveAll(o => o.N_ROW == lEntity.N_ROW && o.N_COL == lEntity.N_COL && o.N_LAYER == lEntity.N_LAYER);
                                             }
-                                            LogHelper.Info("澶勭悊鑷浠诲姟", "鍘婚櫎棰勫叆搴撻攣瀹氬悗鐨別mptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation));
+                                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鍘婚櫎棰勫叆搴撻攣瀹氬悗鐨別mptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation));
                                             //鍘婚櫎琚渚ц揣鐗╅樆鎸$殑璐т綅
 
                                             var locaWc = Expressionable.Create<Location>();
@@ -203,14 +238,14 @@
                                             locaWc.And(it => it.N_SIDE == 1);
                                             lca.And(it => it.N_CURRENT_NUM > 0);
                                             List<Location> lstLocationHasItem = newDb.Queryable<Location>().Where(locaWc.ToExpression()).ToList();
-                                            LogHelper.Info("澶勭悊鑷浠诲姟", "lstLocationHasItem鏁版嵁:" + JsonConvert.SerializeObject(lstLocationHasItem));
+                                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", "lstLocationHasItem鏁版嵁:" + JsonConvert.SerializeObject(lstLocationHasItem));
                                             List<Location> lstLocationHasItemOrder = new List<Location>();
 
                                             foreach (Location itemC in lstLocationHasItem)
                                             {
                                                 emptyLocation.RemoveAll(o => o.N_ROW == itemC.N_ROW && o.N_COL == itemC.N_COL && o.N_LAYER == itemC.N_LAYER && o.N_SIDE > itemC.N_SIDE);
                                             }
-                                            LogHelper.Info("澶勭悊鑷浠诲姟", "鍘婚櫎闃绘尅鍚庣殑emptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation));
+                                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", "鍘婚櫎闃绘尅鍚庣殑emptyLocation鏁版嵁:" + JsonConvert.SerializeObject(emptyLocation));
                                             if (emptyLocation.Count() > 0)
                                             {
                                                 var emptyLocation_inside = emptyLocation.FindAll(f => f.N_SIDE == 2);
@@ -221,7 +256,7 @@
                                             }
                                             else
                                             {
-                                                LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夎宸烽亾涓殑鍙敤绌鸿揣浣�S_AREA_CODE=" + locationBit.S_AREA_CODE);
+                                                LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟锛氾細 璐т綅琛ㄦ病鏈夎宸烽亾涓殑鍙敤绌鸿揣浣�S_AREA_CODE=" + locationBit.S_AREA_CODE);
                                                 throw new Exception("娌℃湁鍙敤璐т綅");
                                             }
                                             //
@@ -276,7 +311,7 @@
                             taskEntity1.S_Main_task = "瀛愪换鍔�;
                             taskEntity1.S_TOOLS_TPYE = task.S_TOOLS_TPYE;
 
-                            LogHelper.Info("澶勭悊鑷浠诲姟", "11---" + JsonConvert.SerializeObject(taskEntity1));
+                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", "11---" + JsonConvert.SerializeObject(taskEntity1));
                             string taskNo2 = task.S_TASK_NO + "_2";
                             //鍒涘缓绗簩涓换鍔�                             WMSTask taskEntity2 = new WMSTask()
@@ -303,7 +338,7 @@
                                 S_Main_task = "瀛愪换鍔�,
                                 S_TOOLS_TPYE = task.S_TOOLS_TPYE
                             };
-                            LogHelper.Info("澶勭悊鑷浠诲姟", "12---" + JsonConvert.SerializeObject(taskEntity2));
+                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", "12---" + JsonConvert.SerializeObject(taskEntity2));
                             #region 浠诲姟涓嬭揪
 
                             #region 濡傛灉鏈夐樆鎸¢渶瑕佺Щ搴撳垯浜х敓绉诲簱浠诲姟
@@ -323,7 +358,7 @@
                                     throw new Exception("閿佸畾缁堢偣璐т綅骞跺彂寮傚父锛� + taskEntityYk.S_END_LOC);
                                 }
 
-                                LogHelper.Info("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntityYk.S_END_LOC + "--閿佸畾缁堢偣璐т綅 浠诲姟鍙蜂负锛� + taskNoYk);
+                                LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntityYk.S_END_LOC + "--閿佸畾缁堢偣璐т綅 浠诲姟鍙蜂负锛� + taskNoYk);
                                 A = newDb.Updateable<Location>().SetColumns(it => new Location
                                 {
                                     S_LOCK_STATE = "鍑哄簱閿�,
@@ -334,12 +369,12 @@
                                     newDb.RollbackTran();
                                     throw new Exception("閿佸畾璧风偣璐т綅骞跺彂寮傚父锛� + taskEntityYk.S_START_LOC);
                                 }
-                                LogHelper.Info("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntityYk.S_START_LOC + "--閿佸畾缁堢偣璐т綅 浠诲姟鍙蜂负锛� + taskNoYk);
-                                LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟涓嬪彂缁橶CS 鍙傛暟涓� + JsonConvert.SerializeObject(taskEntityYk));
+                                LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntityYk.S_START_LOC + "--閿佸畾缁堢偣璐т綅 浠诲姟鍙蜂负锛� + taskNoYk);
+                                LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟涓嬪彂缁橶CS 鍙傛暟涓� + JsonConvert.SerializeObject(taskEntityYk));
 
                                 //涓嬪彂浠诲姟缁橶CS--绔嬪簱
                                 var tr = BLLCreator.CreateSingleton<WcsTask>().WcsTaskEntity(taskEntityYk);
-                                LogHelper.Info("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟璋冪敤WCS鎺ュ彛鎵ц浠诲姟  鎵ц缁撴灉锛� + JsonConvert.SerializeObject(tr));
+                                LogHelper.DanInfo("澶勭悊鑷浠诲姟", "绉诲簱浠诲姟璋冪敤WCS鎺ュ彛鎵ц浠诲姟  鎵ц缁撴灉锛� + JsonConvert.SerializeObject(tr));
                                 if (!tr.Success)
                                 {
                                     WCSBOOL = tr.Success;
@@ -368,7 +403,7 @@
                              S_LOCK_STATE = "鍏ュ簱閿�,
                              T_MODIFY = DateTime.Now
                          }).Where(x => x.S_LOC_CODE == taskEntity1.S_END_LOC && x.S_LOCK_STATE == "鏃�).ExecuteCommand();
-                                LogHelper.Info("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntity1.S_END_LOC + "--閿佸畾璐т綅涓洪鍏ュ簱 浠诲姟鍙蜂负锛� + taskNo1 + JsonConvert.SerializeObject(B));
+                                LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璐т綅缁戝畾浠诲姟鍙�- 璐т綅鐮侊細" + taskEntity1.S_END_LOC + "--閿佸畾璐т綅涓洪鍏ュ簱 浠诲姟鍙蜂负锛� + taskNo1 + JsonConvert.SerializeObject(B));
                                 if (B == 0)
                                 {
                                     newDb.RollbackTran();
@@ -386,8 +421,8 @@
                             }
                             #endregion
                             #region 鍙戦�Wcs浠诲姟
-                            LogHelper.Info("澶勭悊鑷浠诲姟", "涓嬪彂缁橶CS 鍙傛暟涓� + JsonConvert.SerializeObject(taskEntity1));
-                            LogHelper.Info("澶勭悊鑷浠诲姟", "璋冪敤WCS鎺ュ彛");
+                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", "涓嬪彂缁橶CS 鍙傛暟涓� + JsonConvert.SerializeObject(taskEntity1));
+                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璋冪敤WCS鎺ュ彛");
                             var re = BLLCreator.CreateSingleton<WcsTask>().WcsTaskEntity(taskEntity1, Itemgh);
                             //濡傛灉浠诲姟鎴愬姛涓嬭揪 鍒欎富浠诲姟涓嶉渶瑕佸湪寰幆浜�                             if (!re.Success)
@@ -400,7 +435,7 @@
                             {
                                 WCSBOOL = re.Success;
                             }
-                            LogHelper.Info("澶勭悊鑷浠诲姟", "璋冪敤WCS鎺ュ彛鎵ц浠诲姟  鎵ц缁撴灉锛� + JsonConvert.SerializeObject(re));
+                            LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璋冪敤WCS鎺ュ彛鎵ц浠诲姟  鎵ц缁撴灉锛� + JsonConvert.SerializeObject(re));
                             #endregion
                             #region  娣诲姞绗簩涓瓙浠诲姟
                             B = newDb.Insertable(taskEntity2).ExecuteCommand();
@@ -412,7 +447,7 @@
                             #endregion
                             #region agv浠诲姟
                             //涓嬭揪浠诲姟缁橝gv
-                            //LogHelper.Info("澶勭悊鑷浠诲姟", "璋冪敤agv鎺ュ彛");
+                            //LogHelper.DanInfo("澶勭悊鑷浠诲姟", "璋冪敤agv鎺ュ彛");
                             //var Are = TaskProcess.SendTask(taskEntity2);
                             //if (!Are)
                             //{
@@ -447,11 +482,11 @@
                         ors.Add(OperateResult.Error(ex.Message));
                     }
                 }
-                LogHelper.Info("澶勭悊鑷浠诲姟", JsonConvert.SerializeObject(ors));
+                LogHelper.DanInfo("澶勭悊鑷浠诲姟", JsonConvert.SerializeObject(ors));
             }
             catch (Exception ex)
             {
-                LogHelper.Info("澶勭悊鑷浠诲姟", " Error:" + ex.Message + ex.StackTrace);
+                LogHelper.DanInfo("澶勭悊鑷浠诲姟", " Error:" + ex.Message + ex.StackTrace);
             }
         }
 
@@ -1353,7 +1388,7 @@
                         return OperateResult.Succeed();
                         //  }
                     }
-                  //  return OperateResult.Succeed();
+                    //  return OperateResult.Succeed();
                 }
                 else
                 {
@@ -2130,5 +2165,21 @@
             }
 
         }
+
+
+        private bool ContainsAnyChar(string input, List<string> charList)
+        {
+            bool gf = false;
+            foreach (var item in charList)
+            {
+                if (input.Contains(input))
+                {
+                    gf = true;
+                    break;
+                }
+            }
+            return gf;
+        }
+
     }
 }
diff --git a/HH.WCS.ZCQTJ/Config/Config.json b/HH.WCS.ZCQTJ/Config/Config.json
index 75a49c1..bfd3542 100644
--- a/HH.WCS.ZCQTJ/Config/Config.json
+++ b/HH.WCS.ZCQTJ/Config/Config.json
@@ -128,5 +128,19 @@
   "TcpClient": {
     "ip": "",
     "port": 8801
-  }
+  },
+  "TTXB-閫佹弧鍙栫┖": [
+    {
+      "LocationCode1": "LC12A01TCM1",
+      "LocationCode2": [ "LC12A01TCK", "LC12A02TCK", "LC12A03TCK", "LC12A04TCK", "LC12A05TCK", "LC12A06TCK", "LC12A07TCK", "LC12A08TCK", "LC12A09TCK", "LC12A10TCK", "LC12A11TCK", "LC12A12TCK", "LC12A13TCK", "LC12A14TCK", "LC12A15TCK", "LC12A16TCK", "LC12A17TCK", "LC12A18TCK", "LC12A19TCK", "LC12A20TCK", "LC12A21TCK", "LC12A22TCK" ]
+    },
+    {
+      "LocationCode1": "LC12A01TCM2",
+      "LocationCode2": [ "LC12A01TCK", "LC12A02TCK", "LC12A03TCK", "LC12A04TCK", "LC12A05TCK", "LC12A06TCK", "LC12A07TCK", "LC12A08TCK", "LC12A09TCK", "LC12A10TCK", "LC12A11TCK", "LC12A12TCK", "LC12A13TCK", "LC12A14TCK", "LC12A15TCK", "LC12A16TCK", "LC12A17TCK", "LC12A18TCK", "LC12A19TCK", "LC12A20TCK", "LC12A21TCK", "LC12A22TCK" ]
+    },
+    {
+      "LocationCode1": "LC12A01TCM3",
+      "LocationCode2": [ "LC12A01TCK", "LC12A02TCK", "LC12A03TCK", "LC12A04TCK", "LC12A05TCK", "LC12A06TCK", "LC12A07TCK", "LC12A08TCK", "LC12A09TCK", "LC12A10TCK", "LC12A11TCK", "LC12A12TCK", "LC12A13TCK", "LC12A14TCK", "LC12A15TCK", "LC12A16TCK", "LC12A17TCK", "LC12A18TCK", "LC12A19TCK", "LC12A20TCK", "LC12A21TCK", "LC12A22TCK" ]
+    }
+  ]
 }
\ No newline at end of file
diff --git a/HH.WCS.ZCQTJ/Entitys/ConfigJsonEntitys.cs b/HH.WCS.ZCQTJ/Entitys/ConfigJsonEntitys.cs
index 45aecc7..9db52f9 100644
--- a/HH.WCS.ZCQTJ/Entitys/ConfigJsonEntitys.cs
+++ b/HH.WCS.ZCQTJ/Entitys/ConfigJsonEntitys.cs
@@ -56,6 +56,34 @@
         public string S_Note { get; set; }
     }
 
+
+    /// <summary>
+    /// 鍑哄簱浠诲姟閲忎复鐣岃〃
+    /// </summary>
+    [ST("鍑哄簱浠诲姟閲忎复鐣岃〃")]
+    public class OutAreaTaskAnyJbEntitys : BaseModel
+    {
+        /// <summary>
+        /// 鍑哄簱鐨勫簱鍖�+        /// </summary>
+        public string S_AreaCode { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鏁伴噺
+        /// </summary>
+        public int N_TaskQuantity { get; set; }
+
+        /// <summary>
+        /// 寮�叧
+        /// </summary>
+        public string S_IsUse { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string S_Note { get; set; }
+    }
+
     /// <summary>
     /// 鍔熻兘寮�叧琛�     /// </summary>
@@ -149,6 +177,17 @@
         /// </summary>
         public string LocationCode2 { get; set; }
     }
+    public class ConfigValueListTwo
+    {
+        /// <summary>
+        /// 婊¤揣浣�+        /// </summary>
+        public string LocationCode1 { get; set; }
+        /// <summary>
+        /// 绌鸿揣浣�+        /// </summary>
+        public List<string> LocationCode2 { get; set; }
+    }
 
     /// <summary>
     /// 澶у睆搴撳尯浠诲姟鏁扮粺璁�@@ -158,4 +197,10 @@
         public string AreaCode { get; set; }
         public string TrayState { get; set; }
     }
+
+    public class AgvCodeTs
+    {
+        public List<string> LocationCode { get; set; }
+        public List<string> EndAreaCode { get; set; }
+    }
 }
diff --git a/HH.WCS.ZCQTJ/Entitys/S_AGV_CONDITIONEntitys.cs b/HH.WCS.ZCQTJ/Entitys/S_AGV_CONDITIONEntitys.cs
index e9f2f82..b64b597 100644
--- a/HH.WCS.ZCQTJ/Entitys/S_AGV_CONDITIONEntitys.cs
+++ b/HH.WCS.ZCQTJ/Entitys/S_AGV_CONDITIONEntitys.cs
@@ -1,6 +1,7 @@
 锘縰sing HH.WCS.Hexafluo.util;
 using HH.WCS.Hexafluo.wms;
 using SqlSugar;
+using System.Collections.Generic;
 
 namespace HH.WCS.ZCQTJ.Entitys
 {
@@ -137,4 +138,81 @@
         public string Agvstate_s { get; set; }
         #endregion
     }
+
+
+    public class AgvWcsCarryMsg
+    {
+        /// <summary>
+        /// Agv杞︿綋淇℃伅
+        /// </summary>
+        public List<AgvCarryMsg> AgvMsgList { get; set; }
+        /// <summary>
+        /// Wcs璁惧淇℃伅
+        /// </summary>
+        public List<WcsCarryMsg> WcsMsgList { get; set; }
+    }
+
+    /// <summary>
+    /// 缁欑珯鍙扮殑Agv淇℃伅
+    /// </summary>
+    public class AgvCarryMsg
+    {
+        /// <summary>
+        /// 杞﹀彿
+        /// </summary>
+        public string forkliftNo { get; set; }
+
+        /// <summary>
+        /// agv鐘舵�
+        /// </summary>
+        public string Agvstate_s { get; set; }
+
+        /// <summary>
+        /// 鐢垫睜鐢甸噺
+        /// </summary>
+        public string Battery_Soc { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏鐮�+        /// </summary>
+        public string TrayCode { get; set; }
+
+        /// <summary>
+        /// 杞﹁締XY鍧愭爣(cm)
+        /// </summary>
+        public string Pos_XY { get; set; }
+    }
+
+    public class WcsCarryMsg
+    {
+        /// <summary>
+        /// 璁惧缂栧彿
+        /// </summary>
+        public string dvcNo { get; set; }
+
+        /// <summary>
+        /// X鍧愭爣
+        /// </summary>
+        public string posX { get; set; }
+
+        /// <summary>
+        /// Y鍧愭爣
+        /// </summary>
+        public string posY { get; set; }
+
+        /// <summary>
+        /// Y鍧愭爣
+        /// </summary>
+        public string posZ { get; set; }
+
+        /// <summary>
+        /// 杩愯鐘舵�
+        /// </summary>
+        public string dvcState { get; set; }
+
+        /// <summary>
+        /// 杞借揣鎵樼洏
+        /// </summary>
+        public string dvcCont { get; set; }
+    }
 }
diff --git a/HH.WCS.ZCQTJ/api/WmsController.cs b/HH.WCS.ZCQTJ/api/WmsController.cs
index 1e65859..d004414 100644
--- a/HH.WCS.ZCQTJ/api/WmsController.cs
+++ b/HH.WCS.ZCQTJ/api/WmsController.cs
@@ -1570,7 +1570,6 @@
                     {
                         throw new Exception("鏈煡璇㈠埌璇ヤ换鍔�);
                     }
-
                     if (transportTask.S_TYPE == "鍏ュ簱" && !string.IsNullOrEmpty(transportTask.mark))
                     {
                         if (State.clientType == "1")
@@ -1580,6 +1579,7 @@
                     }
                     else if (transportTask.S_TYPE == "鍏ュ簱")
                     {
+
                         if (State.clientType == "1")
                         {
                             NDCHelper.ChangeParam(State.requestPk, 1103, 18);
@@ -1587,9 +1587,20 @@
                     }
                     else if (transportTask.S_TYPE == "鍑哄簱")
                     {
-                        if (State.clientType == "1")
+                        var tac = newDb.Queryable<TN_TcpCont>().Where(a => a.LocationCode == transportTask.S_END_LOC)?.First();
+                        if (tac?.CtiaMode == "绔嬪簱")
                         {
-                            NDCHelper.ChangeParam(State.requestPk, 1101, 18);
+                            if (State.clientType == "1")
+                            {
+                                NDCHelper.ChangeParam(State.requestPk, 1103, 18);
+                            }
+                        }
+                        else
+                        {
+                            if (State.clientType == "1")
+                            {
+                                NDCHelper.ChangeParam(State.requestPk, 1101, 18);
+                            }
                         }
                     }
                 }
@@ -3337,11 +3348,136 @@
             }
         }
         #endregion
+
+        #region Agv杞借揣淇℃伅鎺ュ彛
+        /// <summary>
+        /// Agv杞借揣淇℃伅鎺ュ彛
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet]
+        [Route("ZcAgvVanAge")]
+        public OperateResult ZcAgvVanAge()
+        {
+            try
+            {
+                var chi = new SqlHelper<object>().GetInstance();
+                var newDb = chi.CopyNew();
+                //鏌ヨ鎵�湁姝e湪鎵ц鐨刟gv浠诲姟 骞朵笖鏈夎溅鍙�+                List<string> AgvTaskState = new List<string> { "鏈墽琛�, "宸叉帹閫�, "鎵ц涓�, "瀹屾垚", "鍙栨秷" };
+                var AgvtransportTask = newDb.Queryable<WMSTask>().Where(e => e.S_NOTE == "agv浠诲姟" && !AgvTaskState.Contains(e.S_B_STATE)).ToList();
+                var agv = newDb.Queryable<S_AGV_CONDITIONEntitys>().ToList();
+                //鏍规嵁杞﹀彿鎺掑簭
+                agv = agv.OrderBy(e => int.Parse(e.forkliftNo)).ToList();
+                AgvWcsCarryMsg agvWcsCar = new AgvWcsCarryMsg();
+                List<AgvCarryMsg> AgvMsgL = new List<AgvCarryMsg>();
+                foreach (var item in agv)
+                {
+                    var Model = new AgvCarryMsg();
+                    Model.forkliftNo = item.forkliftNo;
+                    Model.Agvstate_s = item.Agvstate_s;
+                    Model.Battery_Soc = item.Battery_Soc;
+                    Model.Pos_XY = $"{item.Pos_X},{item.Pos_Y}";
+                    var agvTask = AgvtransportTask.Find(e => e.S_EQ_NO == item.forkliftNo);
+                    if (agvTask != null)
+                    {
+                        Model.TrayCode = agvTask.S_CNTRS;
+                    }
+                    AgvMsgL.Add(Model);
+                }
+                var Wcs = BLLCreator.Create<WcsTask>().WcsdataBoard();
+                agvWcsCar.AgvMsgList = AgvMsgL;
+                agvWcsCar.WcsMsgList = Wcs;
+
+                return OperateResult.Succeed("", JsonConvert.SerializeObject(agvWcsCar));
+            }
+            catch (Exception ex)
+            {
+
+                return OperateResult.Error(ex.Message);
+            }
+
+        }
+        #endregion
+        #region MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲�+        /// <summary>
+        /// MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲�+        /// </summary>
+        /// <param name="LocationCode">婊℃墭鍏ュ簱鐐逛綅</param>
+        /// <returns></returns>
+        [HttpGet]
+        [Route("ZcMesUpdateLoNum")]
+        public OperateResult ZcMesUpdateLoNum(string LocationCode)
+        {
+            LogHelper.Info("MES", $"MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲�鍏ュ弬:{LocationCode}");
+            var chi = new SqlHelper<object>().GetInstance();
+            var newDb = chi.CopyNew();
+            try
+            {
+                Location location2 = null;
+                List<ConfigValueList> ListValues = new List<ConfigValueList>();
+                var transport = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "鏅鸿兘绌烘《缂撳瓨")?.First();
+                if (transport != null)
+                {
+                    ListValues = JsonConvert.DeserializeObject<List<ConfigValueList>>(transport.TypeJson);
+                    if (ListValues.Count() > 0)
+                    {
+                        //鏌ヨ鍑哄搴旂殑绌烘墭缂撳瓨浣�+                        var ggf = ListValues.Find(e => e.LocationCode1 == LocationCode);
+                        if (ggf != null)
+                        {
+                            location2 = newDb.Queryable<Location>().Where(e => e.S_LOC_CODE == ggf.LocationCode2)?.First();
+                            if (location2 != null && (location2.N_CURRENT_NUM - 1 >= 0))
+                            {
+                                try
+                                {
+                                    newDb.BeginTran();
+                                    var I = newDb.Updateable<Location>().SetColumns(it => new Location()
+                                    {
+                                        T_MODIFY = DateTime.Now,
+                                        N_CURRENT_NUM = it.N_CURRENT_NUM - 1,
+                                        T_EMPTY_TIME = DateTime.Now
+                                    }).Where(x => x.S_LOC_CODE == location2.S_LOC_CODE).ExecuteCommand();
+                                    if (I == 0)
+                                    {
+                                        throw new Exception("鏇存柊缁堢偣褰撳墠瀹归噺-1澶辫触");
+                                    }
+                                    LogHelper.Info("MES", $"MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲� 淇敼鎴愬姛 淇敼鐨勮揣浣嶄负{location2.S_LOC_CODE}");
+                                    newDb.CommitTran();
+                                    return OperateResult.Succeed();
+                                }
+                                catch (Exception ex)
+                                {
+                                    newDb.RollbackTran();
+                                    LogHelper.Info("MES", $"MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲�{ex.Message}");
+                                    return OperateResult.Error(ex.Message);
+                                }
+                            }
+                            else
+                            {
+                                LogHelper.Info("MES", $"MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲�{location2.N_CURRENT_NUM} 鍑忓幓1鍚庝笉鍦ㄥぇ浜�绛変簬0  鏁呰�涓嶅厑璁稿噺灏�);
+                                return OperateResult.Succeed();
+                            }
+                        }
+                    }
+                }
+                throw new Exception("鏈煡璇㈠埌 鏅鸿兘绌烘《缂撳瓨 鐩稿叧閰嶇疆淇℃伅");
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info("MES", $"MES淇敼鏅鸿兘绌烘《瀵瑰簲绌烘墭缂撳瓨鐐瑰閲�鎶ラ敊:{ex.Message}");
+                return OperateResult.Error(ex.Message);
+            }
+        }
+
+        #endregion
         #endregion
         [HttpGet]
         [Route("asss")]
-        public OperateResult asss(int T)
+        public OperateResult asss()
         {
+            var transportTask = STAttribute.GetValueTwo("TTXB-閫佹弧鍙栫┖");
+            var ListString = JsonConvert.DeserializeObject<List<ConfigValueListTwo>>(transportTask);
+            return OperateResult.Succeed(JsonConvert.SerializeObject(ListString));
             // List<OperateResult> nn = new List<OperateResult>();
             //var ca = BLLCreator.Create<IdGuid>().TaskNo("CK");
             //LogHelper.Info("浠诲姟涓嬪彂", "MES涓嬪彂浠诲姟鍙傛暟:");
diff --git a/HH.WCS.ZCQTJ/core/TaskCore.cs b/HH.WCS.ZCQTJ/core/TaskCore.cs
index 654d8cd..2281b39 100644
--- a/HH.WCS.ZCQTJ/core/TaskCore.cs
+++ b/HH.WCS.ZCQTJ/core/TaskCore.cs
@@ -2,6 +2,7 @@
 using HH.WCS.Hexafluo.process;
 using HH.WCS.Hexafluo.util;
 using HH.WCS.Hexafluo.wms;
+using HH.WCS.SJML.Entitys;
 using HH.WCS.SJML.util;
 using HH.WCS.ZCQTJ.Entitys;
 using Newtonsoft.Json;
@@ -90,11 +91,38 @@
             //鑾峰彇鎵�湁鏈墽琛岀殑浠诲姟
             lock (locko9)
             {
-                var Lo = SqlSugarHelper.Db.Queryable<TaskLockEntitys>().Where(a => a.DeviceName == "AGV")?.First();
+                var chi = new SqlHelper<object>().GetInstance();
+                var newDb = chi.CopyNew();
+                var Lo = newDb.Queryable<TaskLockEntitys>().Where(a => a.DeviceName == "AGV")?.First();
+                DateTime date = DateTime.Now;
                 if (Lo != null && Lo.IsEnable == "Y")
                 {
                     List<string> state = new List<string> { "鏈墽琛�, "寰呮帹閫� };
                     var list = TaskHelper.GetTaskListByState(state);
+
+                    //鏌ヨ鏄惁鏈夐�婊″彇绌虹殑 绌哄叆浠诲姟 鏈夌殑璇濋渶瑕佺瓑寰�0鍒嗛挓
+                    var transportTask = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "閫佹弧鍙栫┖瀵瑰簲鐨勭┖鎵樼偣浣�)?.First();
+                    if (transportTask != null)
+                    {
+                        var ListString = JsonConvert.DeserializeObject<List<string>>(transportTask.TypeJson);
+                        if (ListString.Count() > 0)
+                        {
+                            //鍓旈櫎鏃堕棿娌″埌20鍒嗛挓鐨勭┖鎵樺叆搴�-鐗瑰埗
+                            var TiemTask = list.FindAll(e => ListString.Contains(e.S_START_LOC) && e.S_TYPE == "鍏ュ簱").ToList();
+                            if (TiemTask.Count() > 0)
+                            {
+                                foreach (var item in TiemTask)
+                                {
+                                    if (item.T_CREATE.AddMinutes(20) > date)//娌¤秴鏃�0鍒嗛挓
+                                    {
+                                        //鎺掗櫎
+                                        list.Remove(item);
+                                        LogHelper.Info("NDC", $"娌¤秴鏃�0鍒嗛挓 鎺掗櫎鐨勪换鍔℃湁:{JsonConvert.SerializeObject(item)}");
+                                    }
+                                }
+                            }
+                        }
+                    }
                     var RkTask = list.FindAll(e => e.S_TYPE == "鍏ュ簱").ToList();
                     //  var CkTask = list.FindAll(e => e.S_TYPE == "鍑哄簱").ToList();
                     if (RkTask.Count > 0)
@@ -105,7 +133,7 @@
                             TaskProcess.SendTask(item);
                         }
                     }
-                    var CkTaskList = SqlSugarHelper.Db.Queryable<WMSTask>().Where(a => state.Contains(a.S_B_STATE.Trim())
+                    var CkTaskList = newDb.Queryable<WMSTask>().Where(a => state.Contains(a.S_B_STATE.Trim())
                     && a.S_NOTE == "agv浠诲姟" && a.S_TYPE == "鍑哄簱" && a.S_START_LAREA != "TMCKJBW").ToList();
                     if (CkTaskList.Count > 0)
                     {
@@ -140,7 +168,7 @@
                             //else
                             //{
                             List<string> States = new List<string>() { "宸叉帹閫�, "鎵ц涓�, "寮�鍙栬揣" };
-                            var taskList = SqlSugarHelper.Db.Queryable<WMSTask>().Where(e => e.S_START_LOC == item.S_START_LOC
+                            var taskList = newDb.Queryable<WMSTask>().Where(e => e.S_START_LOC == item.S_START_LOC
                             && States.Contains(e.S_B_STATE.Trim()) && e.S_NOTE == "agv浠诲姟").ToList();
                             LogHelper.Info("NDC", $"鍑哄簱姝e湪鍒ゆ柇鏄惁鍙互涓嬪彂鐨�agv浠诲姟 璧风偣搴撳尯涓嶆槸LC11M鐨刟gv浠诲姟(鍒ゆ柇鏄惁鏈夌浉鍚岃捣鐐圭殑鍒殑agv浠诲姟):{JsonConvert.SerializeObject(taskList)}");
                             if (taskList.Count > 0)
@@ -151,7 +179,7 @@
                             //  }
                         }
                     }
-                    var CkTaskList1 = SqlSugarHelper.Db.Queryable<WMSTask>().Where(a => state.Contains(a.S_B_STATE.Trim())
+                    var CkTaskList1 = newDb.Queryable<WMSTask>().Where(a => state.Contains(a.S_B_STATE.Trim())
                   && a.S_NOTE == "agv浠诲姟" && a.S_TYPE == "鍑哄簱" && a.S_START_LAREA == "TMCKJBW").OrderBy(e => e.T_CREATE).ToList();
 
                     if (CkTaskList1.Count() > 0)
@@ -162,7 +190,7 @@
                         {
                             LogHelper.Info("NDC", $"鍑哄簱姝e湪鍒ゆ柇鏄惁鍙互涓嬪彂鐨�agv浠诲姟鍙�{item.S_TASK_NO}");
                             //鏌ヨ涓讳换鍔$殑璧风偣搴撳尯
-                            var ZhuTask = SqlSugarHelper.Db.Queryable<WMSTask>().Where(e => e.S_SRC_NO == item.S_SRC_NO).ToList();
+                            var ZhuTask = newDb.Queryable<WMSTask>().Where(e => e.S_SRC_NO == item.S_SRC_NO).ToList();
                             LogHelper.Info("NDC", $"鍑哄簱姝e湪鍒ゆ柇鏄惁鍙互涓嬪彂鐨�agv浠诲姟 鎵�搴旂殑鎵�湁鐩稿叧浠诲姟:{JsonConvert.SerializeObject(ZhuTask)}");
                             var hh = ZhuTask.FindAll(e => e.S_START_LAREA == "LC11M").ToList();
                             if (hh.Any())
diff --git a/HH.WCS.ZCQTJ/dispatch/WcsTask.cs b/HH.WCS.ZCQTJ/dispatch/WcsTask.cs
index 8c7e326..5cc168f 100644
--- a/HH.WCS.ZCQTJ/dispatch/WcsTask.cs
+++ b/HH.WCS.ZCQTJ/dispatch/WcsTask.cs
@@ -1,6 +1,8 @@
 锘縰sing HH.WCS.Hexafluo;
 using HH.WCS.Hexafluo.util;
 using HH.WCS.Hexafluo.wms;
+using HH.WCS.SJML.Bll;
+using HH.WCS.SJML.Comm;
 using HH.WCS.SJML.Dto;
 using HH.WCS.ZCQTJ.Entitys;
 using Newtonsoft.Json;
@@ -393,10 +395,44 @@
                 return returnEntity;
             }
         }
+
+
+        /// <summary>
+        /// WCS璁惧淇℃伅鏌ヨ
+        /// </summary>
+        /// <returns></returns>
+        public List<WcsCarryMsg> WcsdataBoard()
+        {
+            List<WcsCarryMsg> WcsCarry = new List<WcsCarryMsg>();
+            try
+            {
+                var interact = new
+                {
+                    requestPk = BLLCreator.Create<IdWorker>().nextId("CX"),
+                    reqTime = DateTime.Now
+                };
+                LogHelper.Info("绔嬪簱", "鏌ヨ绔嬪簱璁惧淇℃伅 鍙傛暟涓�" + JsonConvert.SerializeObject(interact));
+                var result = apiHelper.Post(baseUrl + "/wcs-admin/api/dataBoard", JsonConvert.SerializeObject(interact));
+                LogHelper.Info("绔嬪簱", "缁欑珛搴撲笅杈惧畨鍏ㄨ姹�绔嬪簱杩斿洖鍙傛暟涓�" + result);
+                if (string.IsNullOrEmpty(result))
+                {
+                    return WcsCarry;
+                }
+                var data = JsonConvert.DeserializeObject<List<WcsCarryMsg>>(result);
+                return data;
+
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info("绔嬪簱", "鏌ヨ绔嬪簱璁惧淇℃伅 鎶ラ敊:" + ex.Message);
+                return WcsCarry;
+            }
+        }
         public OperateResult WcsCallbackAnyc(string JsonValue)
         {
             try
             {
+
                 var result = apiHelper.Post(baseUrl + "/wcs-admin/api/agvCallback", JsonValue);
                 LogHelper.Info("绔嬪簱", "缁欑珛搴撲笅杈惧畨鍏ㄨ姹�绔嬪簱杩斿洖鍙傛暟涓�" + result);
                 if (string.IsNullOrEmpty(result))
diff --git a/HH.WCS.ZCQTJ/process/TaskProcess.cs b/HH.WCS.ZCQTJ/process/TaskProcess.cs
index fc88ee0..6bf2794 100644
--- a/HH.WCS.ZCQTJ/process/TaskProcess.cs
+++ b/HH.WCS.ZCQTJ/process/TaskProcess.cs
@@ -870,6 +870,11 @@
                                     }
                                 }
                             }
+                            else if (tac.CtiaMode == "绔嬪簱")
+                            {
+                                task.S_TYPE = "鍏ュ簱";
+                                BLLCreator.CreateSingleton<WcsTask>().WcsCallback(task, state, forkliftNo);
+                            }
                         }
                     }
                 }
@@ -1028,7 +1033,7 @@
 
                                 }
                             }
-                            if (tac.CtiaMode == "VMI")
+                            else if (tac.CtiaMode == "VMI")
                             {
                                 var Alone = newDb.Queryable<SqlCountEntitys>().Where(e => e.ConfigId == tac.host)?.First();
                                 if (Alone == null)
@@ -1105,6 +1110,11 @@
                                     }
                                     LogHelper.Info("瀹屽伐鍥炴姤", "鍐欏畨鍏ㄤ俊鍙蜂氦浜掕〃 IMES_AGV_BAST_ENTRY_TRANSF_DONE 瀛楁涓�0鎴愬姛");
                                 }
+                            }
+                            else if (tac.CtiaMode == "绔嬪簱")
+                            {
+                                task.S_TYPE = "鍏ュ簱";
+                                var tra = BLLCreator.Create<WcsTask>().WcsCallback(task, state, forkliftNo);
                             }
                         }
                     }
@@ -2673,18 +2683,31 @@
         /// <param name="mst"></param>
         internal static bool SendTask(WMSTask mst)
         {
-
+            var chi = new SqlHelper<object>().GetInstance();
+            var newDb = chi.CopyNew();
             try
             {
+
                 var result = false;
                 var start = 0; var end = 0;
                 var taskType = mst.S_TYPE.Trim();
                 var taskState = mst.S_B_STATE.Trim();
                 if (taskState == "鏈墽琛� || taskState == "寰呮帹閫�)
                 {
+                    var dic = new Dictionary<string, string>();
+                    var dic1 = new Dictionary<string, string>();
                     LogHelper.Info("NDC", $"agv浠诲姟鍙�{mst.S_TASK_NO}");
                     LogHelper.Info("NDC", $"agv浠诲姟璧风偣:{mst.S_START_LOC}");
                     start = LocationHelper.GetAgvSiteZc(mst.S_START_LOC);
+                    var transportTask = newDb.Queryable<ConfigJsonEntitys>().Where(e => e.Autoindex == "鐗规畩娴佺▼绔欑偣")?.First();
+                    if (transportTask != null)
+                    {
+                        var ListString = JsonConvert.DeserializeObject<AgvCodeTs>(transportTask.TypeJson);
+                        if (ListString != null && ListString.LocationCode != null && ListString.EndAreaCode != null && ListString.LocationCode.Contains(mst.S_START_LOC) && ListString.EndAreaCode.Contains(mst.S_END_LAREA))
+                        {
+                            start = LocationHelper.GetAgvSiteZc2(mst.S_START_LOC);
+                        }
+                    }
                     LogHelper.Info("NDC", $"agv 鏌ヨ鐨勭珯鐐�璧风偣):{start}");
                     LogHelper.Info("NDC", $"agv浠诲姟缁堢偣:{mst.S_END_LOC}");
                     end = LocationHelper.GetAgvSiteZc(mst.S_END_LOC);
@@ -2692,8 +2715,6 @@
                     Console.WriteLine($"SendTask {mst.S_TASK_NO}");
                     Console.WriteLine("start=" + start);
                     Console.WriteLine("end= " + end);
-                    var dic = new Dictionary<string, string>();
-                    var dic1 = new Dictionary<string, string>();
                     dic.Add("Pri", mst.N_PRIORITY.ToString());//浼樺厛绾�                     dic.Add("No", mst.S_TASK_NO.Trim());
                     dic1.Add("From", start.ToString());//璧风偣
@@ -2706,7 +2727,7 @@
                     }
                     else
                     {
-                        var tac = SqlSugarHelper.Db.Queryable<TN_TcpCont>().Where(a => a.LocationCode == mst.S_END_LOC)?.First();
+                        var tac = newDb.Queryable<TN_TcpCont>().Where(a => a.LocationCode == mst.S_END_LOC)?.First();
 
                         if (tac != null && tac.C_IS_RFID == "Y")
                         {
diff --git a/HH.WCS.ZCQTJ/util/LogHelper.cs b/HH.WCS.ZCQTJ/util/LogHelper.cs
index 3efc4f6..132282f 100644
--- a/HH.WCS.ZCQTJ/util/LogHelper.cs
+++ b/HH.WCS.ZCQTJ/util/LogHelper.cs
@@ -206,7 +206,7 @@
             var loggerNames = new List<string>() { "HosttoagvTask", "HosttoagvCar", "NDC", "MES", "缁戝畾瑙g粦", "閲嶉噺璁$畻", "鐗╂枡鍝佽川淇敼", "鍏ュ簱",
                 "鍏ュ簱绠楁硶", "鍑哄簱", "鍑哄簱绠楁硶", "澶勭悊鑷浠诲姟", "鏇存崲缁堢偣", "鏇存崲璧风偣", "鎵ц鐨凷QL", "ERP浼犲弬", "瀹屽伐鍥炴姤",
                 "浠诲姟涓嬪彂", "缁欑珛搴撲笅杈句换鍔�, "绔嬪簱", "绔嬪簱浠诲姟涓嬭揪", "鍙戦�缁橫ES", "鍥炴粴浠诲姟鏈嶅姟", "INFO",
-                "Wcs鎶ヨ淇℃伅", "宸烽亾鐢ㄧ鐢�, "鎺ラ┏浣嶇敤绂佺敤", "杞繍", "閽夐拤閫氱煡", "涓嬪彂鏃犳墭鐩樺叆搴撶珛搴撲换鍔�,"璋冩暣浼樺厛绾�,"纭畾鍏ュ簱鎵樼洏淇℃伅","璁$畻AGV鏃堕棿","鍑哄簱鍒版帴椹充綅","鍏ュ簱鏀归亾","ts鍒囨崲璺嚎" };
+                "Wcs鎶ヨ淇℃伅", "宸烽亾鐢ㄧ鐢�, "鎺ラ┏浣嶇敤绂佺敤", "杞繍", "閽夐拤閫氱煡", "涓嬪彂鏃犳墭鐩樺叆搴撶珛搴撲换鍔�,"璋冩暣浼樺厛绾�,"纭畾鍏ュ簱鎵樼洏淇℃伅","璁$畻AGV鏃堕棿","鍑哄簱鍒版帴椹充綅","鍏ュ簱鏀归亾","ts鍒囨崲璺嚎","鑾峰彇json鏂囦欢" };
             LogManager.Configuration = DefaultConfig(loggerNames);
         }
         public static ILogger CreateLogger(string name)
diff --git a/HH.WCS.ZCQTJ/util/STAttribute .cs b/HH.WCS.ZCQTJ/util/STAttribute .cs
index a4dc5bc..8981c2c 100644
--- a/HH.WCS.ZCQTJ/util/STAttribute .cs
+++ b/HH.WCS.ZCQTJ/util/STAttribute .cs
@@ -43,7 +43,28 @@
             }
 
         }
+        public static string GetValueTwo(string name)
+        {
+            try
+            {
+                var jsonFile = System.AppDomain.CurrentDomain.BaseDirectory + "Config\\Config.json";
+                using (System.IO.StreamReader file = System.IO.File.OpenText(jsonFile))
+                {
+                    using (JsonTextReader reader = new JsonTextReader(file))
+                    {
+                        JObject o = (JObject)JToken.ReadFrom(reader);
+                        var value = o[name].ToString();
+                        return value.Replace("\r\n", "");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.DanInfo("鑾峰彇json鏂囦欢", "鍊紅imeSpan澶辫触锛佸師鍥狅細" + ex.Message);
+                return "";
+            }
 
+        }
 
     }
 
diff --git a/HH.WCS.ZCQTJ/wms/LocationHelper.cs b/HH.WCS.ZCQTJ/wms/LocationHelper.cs
index 953e8ca..5faa08c 100644
--- a/HH.WCS.ZCQTJ/wms/LocationHelper.cs
+++ b/HH.WCS.ZCQTJ/wms/LocationHelper.cs
@@ -91,6 +91,11 @@
             var location = GetLocZc(loc.Trim());
             return location.N_AGV_CODE;
         }
+        internal static int GetAgvSiteZc2(string loc)
+        {
+            var location = GetLocZc(loc.Trim());
+            return location.N_AGV_CODE_T;
+        }
 
 
         internal static int ZcGetAgvSite(string loc)
diff --git a/HH.WCS.ZCQTJ/wms/WMSModel.cs b/HH.WCS.ZCQTJ/wms/WMSModel.cs
index dc338e2..2fbc7ea 100644
--- a/HH.WCS.ZCQTJ/wms/WMSModel.cs
+++ b/HH.WCS.ZCQTJ/wms/WMSModel.cs
@@ -38,11 +38,17 @@
 
         public string S_AGV_SITE { get; set; }
         /// <summary>
-        /// 闇�娉ㄦ剰
+        /// 闇�娉ㄦ剰 agv绔欑偣1
         /// </summary>
         //[SugarColumn(IsIgnore = true)]
         public int N_AGV_CODE { get; set; }
 
+
+        /// <summary>
+        /// agv绔欑偣2
+        /// </summary>
+        public int N_AGV_CODE_T { get; set; }
+
         /// <summary>
         /// 鍑哄簱鏃堕棿
         /// </summary>

--
Gitblit v1.9.1