From e0d89637030791ce1e7dd46ca5fdec9979977960 Mon Sep 17 00:00:00 2001
From: 杨前锦 <1010338399@qq.com>
Date: 星期三, 11 六月 2025 17:28:41 +0800
Subject: [PATCH] 印尼佳通-硫化流程出入库流程开发

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/models/TN_VendorList.cs    |    1 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs           |   47 +-
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs           |  483 ++++++++++++++---------------
 HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs           |   16 +
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/AlarmRecord.cs      |    1 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/CntrItemRel.cs      |    2 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/Container.cs        |   15 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json         |   53 ++-
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs           |    6 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs   |    2 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs     |    7 
 HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/process/TaskProcess.cs     |    6 
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs        |   41 ++
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs        |   10 
 HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/wms/WMSHelper.cs           |   14 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs           |   31 +
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs |    2 
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/WmsController.cs    |   20 +
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs            |    3 
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs  |   10 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/LocationHelper.cs      |    2 
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs        |    6 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs            |   22 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs     |  150 --------
 24 files changed, 461 insertions(+), 489 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs
index 6c0af1a..176e9dc 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs
@@ -43,22 +43,27 @@
             Location endLoc = LocationHelper.GetLoc(model.endLocCode);
             if (endLoc == null)
             {
-                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"WMS绯荤粺鏈煡璇㈠埌缁堢偣璐т綅锛歿model.endLocCode}");
-                throw new BusinessException($"WMS绯荤粺鏈煡璇㈠埌缁堢偣璐т綅锛歿model.endLocCode},璇锋鏌ョ粓鐐硅揣浣嶇紪鐮佹槸鍚︽纭�);
+                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝WMS绯荤粺鏈煡璇㈠埌缁堢偣璐т綅锛歿model.endLocCode}");
+                throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝WMS绯荤粺鏈煡璇㈠埌缁堢偣璐т綅锛歿model.endLocCode},璇锋鏌ョ粓鐐硅揣浣嶇紪鐮佹槸鍚︽纭�);
+            }
+            else if (endLoc.N_LOCK_STATE != 0) 
+            {
+                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝缁堢偣璐т綅锛歿model.endLocCode}澶勪簬閿佸畾鐘舵�");
+                throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝缁堢偣璐т綅锛歿model.endLocCode}澶勪簬閿佸畾鐘舵�");
             }
 
             var areaCodes = Settings.getRelAreaCodes(endLoc.S_AREA_CODE);
             if (areaCodes.Count == 0) 
             {
-                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�);
-                throw new BusinessException($"鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�);
+                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�);
+                throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�);
             }
 
             Location startLoc = WMSHelper.getOutStockStartLoc(areaCodes[0], null);
             if (startLoc == null)
             {
-                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"搴撳尯:{areaCodes[0]}鏈煡璇㈠埌绌哄伐瑁�);
-                throw new BusinessException($"鏈煡璇㈠埌绌哄伐瑁咃紝绔嬪簱鍙兘缂哄皯绌哄伐瑁�);
+                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝搴撳尯:{areaCodes[0]}鏈煡璇㈠埌绌哄伐瑁�);
+                throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝鏈煡璇㈠埌绌哄伐瑁咃紝绔嬪簱鍙兘缂哄皯绌哄伐瑁�);
             }
 
             var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE);
@@ -139,7 +144,7 @@
                     var container = ContainerHelper.GetCntr(request.cntrNo);
                     if (container != null)
                     {
-                        if (cst.S_CNTR_CODE == request.cntrNo)
+                        if (cst.S_CNTR_CODE != request.cntrNo)
                         {
                             ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 1);
                             WMSHelper.addRfidAnomalyRecord(cst.S_CNTR_CODE, 2, request.loc, cst.S_CODE);
@@ -150,6 +155,8 @@
                         ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 1);
                         WMSHelper.addRfidAnomalyRecord(cst.S_CNTR_CODE, 1, request.loc, cst.S_CODE);
                     }
+
+                    /*WCSHelper.ActivatePreCreateTask(cst.S_OP_CODE);*/
 
                     // 鏂规2 4.濡傛灉璇诲彇涓嶆垚鍔燂紝鏌ョ湅寮傚父鍖烘槸鍚︽湁绌鸿揣浣� 
                     /* var agvEndLoc = WMSHelper.GetTransfeRelevanceLoc(loc.S_AREA_CODE, "4");
@@ -229,39 +236,23 @@
                 var logicConfig = WMSHelper.getLogicConfigByJtCode(model.jtNo);
                 if (logicConfig != null)
                 {
+                    Container container = ContainerHelper.GetCntr(model.cntrNo);
+                    if (container == null || !model.isNormal)
+                    {
+                        ContainerHelper.AddCntr(model.cntrNo);
+                        ContainerHelper.UpdateCntrState(model.cntrNo, 1);
+                        WMSHelper.addRfidAnomalyRecord(model.cntrNo, 1, model.loc, null);
+                    }
+
                     // 鏍规嵁鐗╂枡涓嬬嚎閰嶇疆淇℃伅锛屽垽鏂换鍔$被鍨嬫槸鐩磋繛涓嬬嚎杩樻槸闈炵洿杩炰笅绾�                     if (logicConfig.S_TASK_TYPE == "1" || logicConfig.S_TASK_TYPE == "2")
                     {
-                        // 鐩磋繛涓嬬嚎锛岄渶瑕佸垽鏂牎楠孯FID
-                        LjMesTask mesTask = null;
-                        var container = ContainerHelper.GetCntr(model.cntrNo);
-                        if (container != null)
-                        {
-                            mesTask = WMSHelper.getLjMesTaskByCntr(model.cntrNo);
-                            if (mesTask == null)
-                            {
-                                ContainerHelper.UpdateCntrState(model.cntrNo, 1);
-                                WMSHelper.addRfidAnomalyRecord(model.cntrNo, 3, model.loc, null);
-                            }
-                        }
-                        else 
-                        {
-                            model.isNormal = false;
-                        }
-
-                        if (!model.isNormal) 
-                        {
-                            ContainerHelper.AddCntr(model.cntrNo);
-                            ContainerHelper.UpdateCntrState(model.cntrNo, 1);
-                            WMSHelper.addRfidAnomalyRecord(model.cntrNo, 1, model.loc, null);
-                        }
-                        triggerItemOffLineFlow(model.loc, model.cntrNo, logicConfig, mesTask);
+                        triggerItemOffLineFlow(model.loc, model.cntrNo, logicConfig);
                     }
                     else
                     {
                         // 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛�-                        var mesTask = WMSHelper.getLjMesTaskByLoc(model.loc);
-                        triggerItemOffLineFlow4(model.loc, logicConfig,mesTask);
+                        triggerItemOffLineFlow4(model.loc, model.cntrNo, logicConfig);
                     }
                 }
                 else
@@ -278,6 +269,7 @@
             return responseResult;
         }
 
+
         /// <summary>
         /// 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛�         /// 1.鍒涘缓婊℃枡涓嬬嚎浣滀笟
@@ -287,52 +279,62 @@
         /// </summary>
         /// <param name="offLineLoc"></param>
         /// <param name="logicConfig"></param>
+        /// <param name="cntrNo"></param>
         /// <returns></returns>
-        public static bool triggerItemOffLineFlow4(string offLineLoc, LogicConfig logicConfig ,LjMesTask mesTask)
+        public static bool triggerItemOffLineFlow4(string offLineLoc,string cntrNo, LogicConfig logicConfig ,LjMesTask mesTask = null)
         {
             bool result = true;
             try
             {
+                if (mesTask == null) 
+                {
+                    mesTask = WMSHelper.getLjMesTaskByCntr(cntrNo);
+                }
+                
                 if (mesTask != null)
                 {
                     // 2.鍒ゆ柇鏄惁闇�琛ョ┖宸ヨ锛岄渶瑕侊紝鍒欏垱寤虹┖宸ヨ鍑哄簱浠诲姟
-                    // TODO 鏌ヨ缂撳瓨浣嶇嚎浣撳厜鐢�+++++
                     bool photoStatus = false;
                     var hcLoc = LocationHelper.GetLoc(logicConfig.S_LKBKHCLOC);
                     if (hcLoc != null)
                     {
-                        var transfeRelevance = WMSHelper.GetTransfeRelevance(hcLoc.S_CODE);  // 缂撳瓨浣嶅叧鑱斿睘鎬�-                        if (transfeRelevance != null)
+                        if (hcLoc.N_CURRENT_NUM != 0 && hcLoc.N_LOCK_STATE == 0) 
                         {
-                            photoStatus = true;
-                            // 鏂规1锛屽鏋滈潪鐩磋繛鐨勭紦瀛樹綅鏈夊厜鐢典俊鍙凤紝鍒欐煡璇㈣澶囩姸鎬佸垽鏂槸鍚﹂渶瑕佽ˉ绌哄伐瑁�-                            /*var deviceStatusDatas = WCSDispatch.getDeviceStatus(new List<string>() { transfeRelevance.S_DEVICE_NO });
-                            if (deviceStatusDatas != null && deviceStatusDatas.Count > 0)
+                            hcLoc = LocationHelper.GetEmptyLoc(hcLoc.S_AREA_CODE);
+                        }
+
+                        if (hcLoc != null) 
+                        {
+                            var bufferLocConfig = Settings.GetBufferLocConfig(hcLoc.S_CODE);  // 缂撳瓨浣嶅叧鑱斿睘鎬�+                            if (bufferLocConfig != null || hcLoc.N_CURRENT_NUM == 0)
                             {
-                                var deviceStatus = deviceStatusDatas[0];
-                                if (deviceStatus.workStatus == 1 && deviceStatus.manualStatus == 0)
-                                {
-                                    photoStatus = deviceStatus.photoStatus == 1;
-                                }
-                                else
-                                {
-                                    WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{transfeRelevance.S_DEVICE_NO},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�);
-                                    throw new BusinessException($"璁惧鍙�{transfeRelevance.S_DEVICE_NO},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�);
-                                }
+                                photoStatus = true;
+                                // 鏂规1锛屽鏋滈潪鐩磋繛鐨勭紦瀛樹綅鏈夊厜鐢典俊鍙凤紝鍒欐煡璇㈣澶囩姸鎬佸垽鏂槸鍚﹂渶瑕佽ˉ绌哄伐瑁�+                                /*   var deviceStatusDatas = WCSDispatch.getDeviceStatus(new List<string>() { bufferLocConfig.deviceNo });
+                                   if (deviceStatusDatas != null && deviceStatusDatas.Count > 0)
+                                   {
+                                       var deviceStatus = deviceStatusDatas[0];
+                                       if (deviceStatus.workStatus == 1 && deviceStatus.manualStatus == 0)
+                                       {
+                                           photoStatus = deviceStatus.photoStatus == 1;
+                                       }
+                                       else
+                                       {
+                                           WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{bufferLocConfig.deviceNo},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�);
+                                           throw new BusinessException($"璁惧鍙�{bufferLocConfig.deviceNo},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�);
+                                       }
+                                   }
+                                   else
+                                   {
+                                       WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{bufferLocConfig.deviceNo},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父");
+                                       throw new BusinessException($"璁惧鍙�{bufferLocConfig.deviceNo},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父");
+                                   }*/
                             }
                             else
                             {
-                                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{transfeRelevance.S_DEVICE_NO},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父");
-                                throw new BusinessException($"璁惧鍙�{transfeRelevance.S_DEVICE_NO},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父");
-                            }*/
-
-                            // 鏂规2锛屽鏋滈潪鐩磋繛鐨勭紦瀛樹綅娌℃湁鍏夌數淇″彿锛屽垯鏍规嵁璐т綅鐘舵�杩涜鍒ゆ柇锛岄渶瑕佹敞鎰忥細浜哄伐鍙栫┖宸ヨ闇�瑙i攣
-
-                        }
-                        else
-                        {
-                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"缂撳瓨浣�{logicConfig.S_LKBKHCLOC},娌℃湁閰嶇疆灞炴�淇℃伅锛岃鑱旂郴绠$悊浜哄憳閰嶇疆");
-                            throw new BusinessException($"缂撳瓨浣�{logicConfig.S_LKBKHCLOC},娌℃湁閰嶇疆灞炴�淇℃伅锛岃鑱旂郴绠$悊浜哄憳閰嶇疆");
+                                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"缂撳瓨浣�{logicConfig.S_LKBKHCLOC},娌℃湁閰嶇疆灞炴�淇℃伅锛岃鑱旂郴绠$悊浜哄憳閰嶇疆");
+                                throw new BusinessException($"缂撳瓨浣�{logicConfig.S_LKBKHCLOC},娌℃湁閰嶇疆灞炴�淇℃伅锛岃鑱旂郴绠$悊浜哄憳閰嶇疆");
+                            }
                         }
                     }
                     else
@@ -352,12 +354,12 @@
                         if (kgzStartLoc == null)
                         {
                             WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ");
-                            throw new BusinessException($"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ");
+                            photoStatus = false;
                         }
                         if (kgzEndLoc == null)
                         {
                             WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呯紦瀛樹綅:{logicConfig.S_LKBKHCLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�);
-                            throw new BusinessException($"绌哄伐瑁呯紦瀛樹綅:{logicConfig.S_LKBKHCLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�);
+                            photoStatus = false;
                         }
 
                         var locCntrRels = LocationHelper.GetLocCntr(kgzStartLoc.S_CODE);
@@ -367,8 +369,8 @@
                         }
                         else
                         {
-                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呰ˉ鍏呮帴椹充綅:{logicConfig.S_LKKTJBLOC},娌℃湁绌哄伐瑁�);
-                            throw new BusinessException($"绌哄伐瑁呰ˉ鍏呮帴椹充綅:{logicConfig.S_LKKTJBLOC},娌℃湁绌哄伐瑁�);
+                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呭嚭搴撶珯鍙�{logicConfig.S_LKKTJBLOC},娌℃湁绌哄伐瑁�);
+                            photoStatus = false;
                         }
                     }
 
@@ -390,7 +392,6 @@
                             S_OP_DEF_CODE = mesTask.ID.ToString(),
                             T_START_TIME = DateTime.Now,
                         };
-
                         if (WMSHelper.CreateWmsTask(wmsTask))
                         {
                             int priority = 10;
@@ -421,12 +422,12 @@
                                 }
                             }
 
-                            // 3.鍒ゆ柇瀹瑰櫒鏄惁鏄紓甯稿伐瑁咃紝鏄紝鍒欏垱寤哄紓甯稿伐瑁呭叆绾胯竟寮傚父鍖轰换鍔★紱
-                            // 鍚︼紝鍒欏垱寤烘弧鏂欏伐瑁呭叆搴撲换鍔★紙濡傞渶瑕佽ˉ绌哄伐瑁咃紝鍒欏皢浠诲姟鐘舵�鏀逛负棰勫垱寤猴紝绛夊緟琛ョ┖宸ヨ浠诲姟瀹屾垚鍚庤Е鍙戯級
+                            // 3.鍒涘缓婊℃枡宸ヨ鍏ュ簱浠诲姟锛堝闇�琛ョ┖宸ヨ锛屽垯灏嗕换鍔$姸鎬佹敼涓洪鍒涘缓锛岀瓑寰呰ˉ绌哄伐瑁呬换鍔″畬鎴愬悗瑙﹀彂锛�                             WCSTask wcsTask = new WCSTask()
                             {
                                 S_OP_NAME = wmsTask.S_OP_DEF_NAME,
                                 S_OP_CODE = wmsTask.S_CODE,
+                                S_TYPE = "婊℃枡宸ヨ鍏ュ簱浠诲姟(闈炵洿杩�",
                                 S_CODE = WCSHelper.GenerateTaskNo(),
                                 S_CNTR_CODE = wmsTask.S_CNTR_CODE,
                                 S_START_LOC = startLoc.S_CODE,
@@ -437,25 +438,7 @@
                                 N_PRIORITY = 99,
                                 T_START_TIME = DateTime.Now,
                             };
-                            Container container = ContainerHelper.GetCntr(cntrCode);
-                            if (container.N_E_STATE == 0)
-                            {
-                                wcsTask.S_TYPE = "婊℃枡宸ヨ鍏ュ簱浠诲姟(闈炵洿杩�";
-                            }
-                            else
-                            {
-                                Location ycgzLoc = null;
-                                if (ycgzLoc != null)
-                                {
-                                    wcsTask.S_TYPE = "寮傚父宸ヨ鍏ュ簱绾胯竟寮傚父鍖�;
-                                    wcsTask.S_END_LOC = ycgzLoc.S_CODE;
-                                    wcsTask.S_END_AREA = ycgzLoc.S_AREA_CODE;
-                                }
-                                else
-                                {
-                                    wcsTask.S_TYPE = "寮傚父宸ヨ鍏ュ簱";
-                                }
-                            }
+
                             if (photoStatus)
                             {
                                 wcsTask.N_B_STATE = -1;
@@ -467,14 +450,14 @@
                                 // 璧风偣銆佺粓鐐瑰姞閿�                                 LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
                                 LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
+
+                                // 鏇存柊浣滀笟浠诲姟鐘舵�
+                                wmsTask.N_B_STATE = 1;
+                                WMSHelper.UpdateTaskState(wmsTask);
+
+                                // 4.浣滀笟鍒涘缓瀹屾垚鍚庯紝璇诲彇涓棿琛紝鏇存柊涓棿琛ㄧ姸鎬�+                                WMSHelper.readLjMesOffItemTask(wmsTask.S_CODE, mesTask.ID);
                             }
-
-                            // 鏇存柊浣滀笟浠诲姟鐘舵�
-                            wmsTask.N_B_STATE = 1;
-                            WMSHelper.UpdateTaskState(wmsTask);
-
-                            // 4.浣滀笟鍒涘缓瀹屾垚鍚庯紝璇诲彇涓棿琛紝鏇存柊涓棿琛ㄧ姸鎬�-                            WMSHelper.readLjMesOffItemTask(wmsTask.S_CODE, mesTask.ID);
                         }
                     }
                     else
@@ -511,10 +494,10 @@
         /// 5.浣滀笟鍒涘缓瀹屾垚鍚庯紝璇诲彇涓棿琛紝鏇存柊涓棿琛ㄧ姸鎬�         /// </summary>
         /// <param name="offLineLoc">涓嬬嚎璐т綅</param>
-        /// <param name="cntrCode">涓嬬嚎瀹瑰櫒缂栫爜</param>
+        /// <param name="cntrNo">涓嬬嚎瀹瑰櫒缂栫爜</param>
         /// <param name="logicConfig">閫昏緫閰嶇疆</param>
         /// <returns></returns>
-        public static bool triggerItemOffLineFlow(string offLineLoc, string cntrCode, LogicConfig logicConfig ,LjMesTask mesTask) {
+        public static bool triggerItemOffLineFlow(string offLineLoc, string cntrNo, LogicConfig logicConfig ) {
             bool result = true;
             try
             {
@@ -523,14 +506,14 @@
                 var hcLoc = LocationHelper.GetLoc(logicConfig.S_LKBKHCLOC);
                 if (hcLoc != null)
                 {
-                    var transfeRelevance = WMSHelper.GetTransfeRelevance(hcLoc.S_CODE); // 缂撳瓨浣嶅叧鑱斿睘鎬�-                    if (transfeRelevance != null)
+                    var bufferLocConfig = Settings.GetBufferLocConfig(hcLoc.S_CODE);
+                    if (bufferLocConfig != null)
                     {
                         // 娴嬭瘯浠g爜
                         photoStatus = true;
 
-                        // 涓氬姟浠g爜锛屽嬁鍒�-                        /*var deviceStatusDatas = WCSDispatch.getDeviceStatus(new List<string>() { transfeRelevance.S_DEVICE_NO });
+                       /* // 涓氬姟浠g爜锛屽嬁鍒�+                        var deviceStatusDatas = WCSDispatch.getDeviceStatus(new List<string>() { bufferLocConfig.deviceNo });
                         if (deviceStatusDatas != null && deviceStatusDatas.Count > 0)
                         {
                             var deviceStatus = deviceStatusDatas[0];
@@ -538,16 +521,16 @@
                             {
                                 photoStatus = deviceStatus.photoStatus == 1;
                             }
-                            else 
+                            else
                             {
-                                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{transfeRelevance.S_DEVICE_NO},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�);
-                                throw new BusinessException($"璁惧鍙�{transfeRelevance.S_DEVICE_NO},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�);
+                                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{bufferLocConfig.deviceNo},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�);
+                                throw new BusinessException($"璁惧鍙�{bufferLocConfig.deviceNo},璁惧褰撳墠澶勪簬涓嶅彲鐢ㄧ姸鎬侊紝璇疯仈绯荤鐞嗕汉鍛樿皟鏁磋澶囩姸鎬�);
                             }
                         }
-                        else 
+                        else
                         {
-                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{transfeRelevance.S_DEVICE_NO},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父");
-                            throw new BusinessException($"璁惧鍙�{transfeRelevance.S_DEVICE_NO},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父");
+                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"璁惧鍙�{bufferLocConfig.deviceNo},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父");
+                            throw new BusinessException($"璁惧鍙�{bufferLocConfig.deviceNo},鏌ヨ璁惧鐘舵�澶辫触锛岃鑱旂郴宸ヤ綔浜哄憳鏌ョ湅璁惧鏄惁姝e父");
                         }*/
                     }
                     else
@@ -576,133 +559,130 @@
                     throw new BusinessException($"搴撳唴娌℃湁绌轰綑璐т綅");
                 }
 
-                Container container = ContainerHelper.GetCntr(cntrCode);
-                if (container != null)
+                LjMesTask mesTask = WMSHelper.getLjMesTaskByCntr(cntrNo);
+                // 1.鍒涘缓婊℃枡涓嬬嚎浣滀笟
+                var wmsTask = new WMSTask()
                 {
-                    // 1.鍒涘缓婊℃枡涓嬬嚎浣滀笟
-                    var wmsTask = new WMSTask()
+                    S_CNTR_CODE = cntrNo,
+                    S_CODE = WMSHelper.GenerateTaskNo(),
+                    S_START_LOC = startLoc.S_CODE,
+                    S_START_AREA = startLoc.S_AREA_CODE,
+                    S_END_LOC = endLoc.S_CODE,
+                    S_END_AREA = endLoc.S_AREA_CODE,
+                    S_TYPE = "婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟(鐩磋繛)",
+                    S_OP_DEF_NAME = "婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟(鐩磋繛)",
+                    S_OP_DEF_CODE = mesTask != null ? mesTask.ID.ToString() : null,
+                    T_START_TIME = DateTime.Now,
+                };
+                if (WMSHelper.CreateWmsTask(wmsTask))
+                {
+                    int priority = 10;
+                    Dictionary<int, WCSTask> taskDic = new Dictionary<int, WCSTask>();
+
+                    // 鏄惁鍒涘缓绌哄伐瑁呭嚭鍙d换鍔�+                    if (photoStatus || true )
                     {
-                        S_CNTR_CODE = cntrCode,
-                        S_CODE = WMSHelper.GenerateTaskNo(),
+                        Location kgzStartLoc = WMSHelper.getOutStockStartLoc(logicConfig.S_AREA_CODE, null);
+                        Location kgzEndLoc = LocationHelper.GetLoc(logicConfig.S_LKBKHCLOC);
+                        if (kgzStartLoc == null)
+                        {
+                            WMSHelper.DeleteWmsTask(wmsTask.S_CODE);
+                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ");
+                            throw new BusinessException($"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ");
+                        }
+                        if (kgzEndLoc == null)
+                        {
+                            WMSHelper.DeleteWmsTask(wmsTask.S_CODE);
+                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呯紦瀛樹綅:{logicConfig.S_LKBKHCLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�);
+                            throw new BusinessException($"绌哄伐瑁呯紦瀛樹綅:{logicConfig.S_LKBKHCLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�);
+                        }
+
+                        var locCntrRels = LocationHelper.GetLocCntr(kgzStartLoc.S_CODE);
+                        if (locCntrRels.Count > 0)
+                        {
+                            string kgzCntrCode = locCntrRels[0].S_CNTR_CODE;
+                            // 濡傛槸鑳庝晶鐩磋繛妯″紡锛屽垯鎻愰珮绌哄伐瑁呭嚭搴撲换鍔′紭鍏堢骇
+                            if (logicConfig.S_TASK_TYPE == "1")
+                            {
+                                priority = 99;
+                            }
+                            WCSTask kgzWcsTask = new WCSTask()
+                            {
+                                S_OP_NAME = wmsTask.S_OP_DEF_NAME,
+                                S_OP_CODE = wmsTask.S_CODE,
+                                S_CODE = WCSHelper.GenerateTaskNo(),
+                                S_CNTR_CODE = kgzCntrCode,
+                                S_TYPE = "绌哄伐瑁呭嚭搴撲换鍔�,
+                                S_START_LOC = kgzStartLoc.S_CODE,
+                                S_START_AREA = kgzStartLoc.S_AREA_CODE,
+                                S_END_LOC = kgzEndLoc.S_CODE,
+                                S_END_AREA = kgzEndLoc.S_AREA_CODE,
+                                S_SCHEDULE_TYPE = "WCS",
+                                N_PRIORITY = priority,
+                                T_START_TIME = DateTime.Now,
+                            };
+                            taskDic.Add(priority, kgzWcsTask);
+                        }
+                        else
+                        {
+                            WMSHelper.DeleteWmsTask(wmsTask.S_CODE);
+                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鏌ヨ绌哄伐瑁呰揣浣嶉敊璇紝璐т綅锛歿kgzStartLoc.S_CODE}娌℃湁绌哄伐瑁�);
+                            throw new BusinessException($"鏌ヨ绌哄伐瑁呰揣浣嶉敊璇紝璐т綅锛歿kgzStartLoc.S_CODE}娌℃湁绌哄伐瑁�);
+                        }
+                    }
+
+                    // 濡傛槸甯樺竷鐩磋繛妯″紡鍒欙紝鎻愰珮婊℃枡鍏ュ簱浼樺厛绾�+                    if (logicConfig.S_TASK_TYPE == "2")
+                    {
+                        priority = 99;
+                    }
+                    else
+                    {
+                        priority = 10;
+                    }
+
+                    WCSTask wcsTask = new WCSTask()
+                    {
+                        S_OP_NAME = wmsTask.S_OP_DEF_NAME,
+                        S_OP_CODE = wmsTask.S_CODE,
+                        S_CODE = WCSHelper.GenerateTaskNo(),
+                        S_CNTR_CODE = wmsTask.S_CNTR_CODE,
+                        S_TYPE = wmsTask.S_TYPE,
                         S_START_LOC = startLoc.S_CODE,
                         S_START_AREA = startLoc.S_AREA_CODE,
                         S_END_LOC = endLoc.S_CODE,
                         S_END_AREA = endLoc.S_AREA_CODE,
-                        S_TYPE = "婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟(鐩磋繛)",
-                        S_OP_DEF_NAME = "婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟(鐩磋繛)",
-                        S_OP_DEF_CODE = mesTask != null ? mesTask.ID.ToString() : null,
+                        S_SCHEDULE_TYPE = "WCS",
+                        N_PRIORITY = priority,
                         T_START_TIME = DateTime.Now,
                     };
-                    if (WMSHelper.CreateWmsTask(wmsTask))
+                    taskDic.Add(priority, wcsTask);
+
+                    var tasks = taskDic.OrderByDescending(a => a.Key).Select(a => a.Value).ToList();
+                    foreach (var task in tasks) 
                     {
-                        int priority = 10;
-
-                        // 鏄惁鍒涘缓绌哄伐瑁呭嚭鍙d换鍔�-                        if (photoStatus)
-                        {
-                            Location kgzStartLoc = WMSHelper.getOutStockStartLoc(logicConfig.S_AREA_CODE, null);
-                            Location kgzEndLoc = LocationHelper.GetLoc(logicConfig.S_LKBKHCLOC);
-                            if (kgzStartLoc == null)
-                            {
-                                WMSHelper.DeleteWmsTask(wmsTask.S_CODE);
-                                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ");
-                                throw new BusinessException($"搴撳尯:{logicConfig.S_AREA_CODE},娌℃湁鍙敤鐨勭┖宸ヨ");
-                            }
-                            if (kgzEndLoc == null)
-                            {
-                                WMSHelper.DeleteWmsTask(wmsTask.S_CODE);
-                                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呯紦瀛樹綅:{logicConfig.S_LKBKHCLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�);
-                                throw new BusinessException($"绌哄伐瑁呯紦瀛樹綅:{logicConfig.S_LKBKHCLOC},娌℃湁鍦╓MS绯荤粺涓綍鍏�);
-                            }
-
-                            var locCntrRels = LocationHelper.GetLocCntr(kgzStartLoc.S_CODE);
-                            if (locCntrRels.Count > 0)
-                            {
-                                string kgzCntrCode = locCntrRels[0].S_CNTR_CODE;
-                                // 濡傛槸鑳庝晶鐩磋繛妯″紡锛屽垯鎻愰珮绌哄伐瑁呭嚭搴撲换鍔′紭鍏堢骇
-                                if (logicConfig.S_TASK_TYPE == "1")
-                                {
-                                    priority = 99;
-                                }
-                                WCSTask kgzWcsTask = new WCSTask()
-                                {
-                                    S_OP_NAME = wmsTask.S_OP_DEF_NAME,
-                                    S_OP_CODE = wmsTask.S_CODE,
-                                    S_CODE = WCSHelper.GenerateTaskNo(),
-                                    S_CNTR_CODE = kgzCntrCode,
-                                    S_TYPE = "绌哄伐瑁呭嚭搴撲换鍔�,
-                                    S_START_LOC = kgzStartLoc.S_CODE,
-                                    S_START_AREA = kgzStartLoc.S_AREA_CODE,
-                                    S_END_LOC = kgzEndLoc.S_CODE,
-                                    S_END_AREA = kgzEndLoc.S_AREA_CODE,
-                                    S_SCHEDULE_TYPE = "WCS",
-                                    N_PRIORITY = priority,
-                                    T_START_TIME = DateTime.Now,
-                                };
-
-                                if (WCSHelper.CreateTask(kgzWcsTask))
-                                {
-                                    // 璧风偣銆佺粓鐐瑰姞閿�-                                    LocationHelper.LockLoc(kgzWcsTask.S_START_LOC, 2);
-                                    LocationHelper.LockLoc(kgzWcsTask.S_END_LOC, 1);
-                                }
-                            }
-                            else
-                            {
-                                WMSHelper.DeleteWmsTask(wmsTask.S_CODE);
-                                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鏌ヨ绌哄伐瑁呰揣浣嶉敊璇紝璐т綅锛歿kgzStartLoc.S_CODE}娌℃湁绌哄伐瑁�);
-                                throw new BusinessException($"鏌ヨ绌哄伐瑁呰揣浣嶉敊璇紝璐т綅锛歿kgzStartLoc.S_CODE}娌℃湁绌哄伐瑁�);
-                            }
-                        }
-
-                        // 濡傛槸甯樺竷鐩磋繛妯″紡鍒欙紝鎻愰珮婊℃枡鍏ュ簱浼樺厛绾�-                        if (logicConfig.S_TASK_TYPE == "2")
-                        {
-                            priority = 99;
-                        }
-                        else 
-                        {
-                            priority = 10;
-                        }
-
-                        WCSTask wcsTask = new WCSTask()
-                        {
-                            S_OP_NAME = wmsTask.S_OP_DEF_NAME,
-                            S_OP_CODE = wmsTask.S_CODE,
-                            S_CODE = WCSHelper.GenerateTaskNo(),
-                            S_CNTR_CODE = wmsTask.S_CNTR_CODE,
-                            S_TYPE = wmsTask.S_TYPE,
-                            S_START_LOC = startLoc.S_CODE,
-                            S_START_AREA = startLoc.S_AREA_CODE,
-                            S_END_LOC = endLoc.S_CODE,
-                            S_END_AREA = endLoc.S_AREA_CODE,
-                            S_SCHEDULE_TYPE = "WCS",
-                            N_PRIORITY = priority,
-                            T_START_TIME = DateTime.Now,
-                        };
-
-                        if (WCSHelper.CreateTask(wcsTask))
+                        if (WCSHelper.CreateTask(task))
                         {
                             // 璧风偣銆佺粓鐐瑰姞閿�-                            LocationHelper.LockLoc(wcsTask.S_START_LOC, 2);
-                            LocationHelper.LockLoc(wcsTask.S_END_LOC, 1);
-                        }
-
-                        // 鏇存柊浣滀笟浠诲姟鐘舵�
-                        wmsTask.N_B_STATE = 1;
-                        WMSHelper.UpdateTaskState(wmsTask);
-
-                        // 5.浣滀笟鍒涘缓瀹屾垚鍚庯紝璇诲彇涓棿琛紝鏇存柊涓棿琛ㄧ姸鎬�-                        if (mesTask != null)
-                        {
-                            WMSHelper.readLjMesOffItemTask(wmsTask.S_CODE, mesTask.ID);
+                            LocationHelper.LockLoc(task.S_START_LOC, 2);
+                            LocationHelper.LockLoc(task.S_END_LOC, 1);
                         }
                     }
-                }
-                else
-                {
-                    WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"鏈煡璇㈠埌瀹瑰櫒涓�{cntrCode}鐨勫鍣�);
-                    throw new BusinessException($"鏈煡璇㈠埌瀹瑰櫒涓�{cntrCode}鐨勫鍣�);
+
+                    // 鏇存柊浣滀笟浠诲姟鐘舵�
+                    wmsTask.N_B_STATE = 1;
+                    WMSHelper.UpdateTaskState(wmsTask);
+
+                    // 5.浣滀笟鍒涘缓瀹屾垚鍚庯紝璇诲彇涓棿琛紝鏇存柊涓棿琛ㄧ姸鎬�+                    if (mesTask != null)
+                    {
+                        WMSHelper.readLjMesOffItemTask(wmsTask.S_CODE, mesTask.ID);
+                    }
+                    else 
+                    {
+                        ContainerHelper.UpdateCntrState(cntrNo, 1);
+                        WMSHelper.addRfidAnomalyRecord(cntrNo, 3, offLineLoc, null);
+                    }
                 }
             }
             catch (BusinessException be) 
@@ -1137,6 +1117,7 @@
 
         /// <summary>
         /// AGV鐢宠缁堢偣
+        /// 鍦烘櫙锛�.浣欐枡/绌哄伐瑁呭叆搴撲换鍔★紙鎴愬瀷鏈猴級 2.婊℃枡/绌哄伐瑁呭叆搴擄紙鏈哄彴锛�3.婊℃枡/绌哄伐瑁呭嚭搴撳紓甯�4.婊℃枡/绌哄伐瑁呭叆搴撳紓甯�         /// </summary>
         /// <param name="applyType">1.姝e父 2.RFID涓庝换鍔FID涓嶅尮閰�3.鐗╂枡鐘舵�涓嶅悎鏍�/param>
         /// <param name="loc"></param>
@@ -1283,6 +1264,7 @@
                                     S_SCHEDULE_TYPE = "WCS",
                                     N_PRIORITY = 10,
                                     N_B_STATE = -1,
+                                    S_B_STATE = "棰勫垱寤�,
                                     T_START_TIME = DateTime.Now,
                                 };
                                 if (WCSHelper.CreateTask(wcsTask))
@@ -1313,36 +1295,6 @@
                 }
             }
 
-            // 閲嶆柊鍙戣捣鏂颁换鍔�-            if (applyType != "1")
-            {
-                var mesTask = WMSHelper.GetLjMesTaskByAgvorderId(mst.S_CODE);
-                if (mesTask != null) 
-                {
-                    if (mst.S_TYPE.Contains("鍙枡鍑哄簱浠诲姟"))
-                    {
-                        LogHelper.Info($"鍙枡鍑哄簱浠诲姟寮傚父锛屽啀娆″彂璧峰彨鏂欏嚭搴撲换鍔�, "AGV");
-                        callMaterial(mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID);
-                        /*againCallMaterial(mst, mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID);*/
-                    }
-
-                    // 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛�-                    if (mst.S_TYPE.Contains("婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟") && cst.S_TYPE.Contains("绌哄伐瑁呭嚭搴撲换鍔�))
-                    {
-                        LogHelper.Info($"婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟寮傚父锛屽啀娆″彂璧锋弧鏂�寮傚父宸ヨ鍏ュ簱浠诲姟", "AGV");
-                        var logicConfig = WMSHelper.getLogicConfigByJtCode(mesTask.EQP);
-                        if (logicConfig != null)
-                        {
-                            triggerItemOffLineFlow4(mesTask.POSITION_ID, logicConfig, mesTask);
-                        }
-                        else
-                        {
-                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"MES浠诲姟{mesTask.ID},鏈哄彴鍙凤細{mesTask.EQP},鏈煡璇㈠埌閫昏緫绾胯矾", "AGV");
-                        }
-                    }
-                }
-            }
-
             if (agvEndLoc != null && wmsEndLoc != null)
             {
                 destLoc = agvEndLoc.S_CODE;
@@ -1354,6 +1306,35 @@
                 mst.S_END_AREA = wmsEndLoc.S_AREA_CODE;
                 WMSHelper.UpdateTaskEnd(mst);
             }
+
+            // 閲嶆柊鍙戣捣鏂颁换鍔�+            if (applyType != "1")
+            {
+                var mesTask = WMSHelper.GetLjMesTaskByAgvorderId(mst.S_CODE);
+                if (mesTask != null) 
+                {
+                    if (mst.S_TYPE.Contains("鍙枡鍑哄簱浠诲姟"))
+                    {
+                        LogHelper.Info($"鍙枡鍑哄簱浠诲姟寮傚父锛屽啀娆″彂璧峰彨鏂欏嚭搴撲换鍔�, "AGV");
+                        callMaterial(mesTask.MATERIAL_CODE, mesTask.POSITION_ID, mesTask.ID);
+                    }
+
+                    // 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛�+                    if (mst.S_TYPE.Contains("婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟") && cst.S_TYPE.Contains("绌哄伐瑁呭嚭搴撲换鍔�))
+                    {
+                        LogHelper.Info($"婊℃枡/寮傚父宸ヨ鍏ュ簱浠诲姟寮傚父锛屽啀娆″彂璧锋弧鏂�寮傚父宸ヨ鍏ュ簱浠诲姟", "AGV");
+                        var logicConfig = WMSHelper.getLogicConfigByJtCode(mesTask.EQP);
+                        if (logicConfig != null)
+                        {
+                            triggerItemOffLineFlow4(mesTask.POSITION_ID, mst.S_CNTR_CODE, logicConfig ,mesTask);
+                        }
+                        else
+                        {
+                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "楂�, $"MES浠诲姟{mesTask.ID},鏈哄彴鍙凤細{mesTask.EQP},鏈煡璇㈠埌閫昏緫绾胯矾", "AGV");
+                        }
+                    }
+                }
+            }
             return destLoc;
         }
 
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json
index 382020b..cf55ba9 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json
@@ -5,76 +5,86 @@
   "SqlServer1": "Data Source=192.168.1.198\\sql2008;Initial Catalog=OIMobox;User ID=sa;Password=sa@2015",
   "OracleServer": "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.144)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SID=jiatong)));User Id=system;Password=Hh123321;",
   "ApiPort": 8901,
-  "FacCode": "0000",
+  "FacCode": "FJJT",
   "WHCode": "W001",
 
   // 鎺ラ┏鍖恒�缂撳瓨鍖恒�鏈哄彴涓嬬嚎鍖恒�鎴愬瀷鏈哄彨鏂欏尯 瀵瑰簲鐨勭珛搴撳簱鍖�   "AreaRelevance": [
     {
-      "areaCode": "",
-      "relAreaCode": [ "" ]
+      "areaCode": "TCZLKGZHCKQ",
+      "relAreaCode": [ "TCZLCK" ]
     },
     {
-      "areaCode": "",
-      "relAreaCode": [ "" ]
+      "areaCode": "TMZLKGZHCKQ",
+      "relAreaCode": [ "TMZLCK" ]
     }
   ],
 
-
+  // 鐩磋繛缂撳瓨浣嶉厤缃�+  "BufferLocConfig": [
+    {
+      "locCode": "TCZLKGZHCKQ1-1",
+      "deviceNo": "1"
+    },
+    {
+      "locCode": "TCZLKGZHCKQ2-1",
+      "deviceNo": "2"
+    }
+  ],
 
   // cntrType 1.鑳庨潰锛�.鑳庝晶锛�.鍐呰‖锛�.甯樺竷锛�.鐜甫锛�.鍐犲甫锛�.閽㈠寘
   // type 1.鐩磋繛 2.闈炵洿杩�   "AreaProperty": [
     {
-      "areaCode": "TMLKQ",
-      "areaName": "鑳庨潰搴撲竴锛堢洿杩烇級",
+      "areaCode": "TMZLCK",
+      "areaName": "鑳庨潰搴擄紙鐩磋繛锛�,
       "cntrType": [ 1 ],
       "type": 1
     },
     {
-      "areaCode": "TMLKQ2",
-      "areaName": "鑳庨潰搴撲簩锛堥潪鐩磋繛锛�,
+      "areaCode": "TMFZLCK",
+      "areaName": "鑳庨潰搴擄紙闈炵洿杩烇級",
       "cntrType": [ 1 ],
       "type": 2
     },
     {
-      "areaCode": "TCLKQ",
-      "areaName": "鑳庝晶搴撲竴锛堢洿杩烇級",
+      "areaCode": "TCZLCK",
+      "areaName": "鑳庝晶搴擄紙鐩磋繛锛�,
       "cntrType": [ 2 ],
       "type": 1
     },
     {
-      "areaCode": "TCLKQ2",
-      "areaName": "鑳庝晶搴撲簩锛堥潪鐩磋繛锛�,
+      "areaCode": "TCFZLCK",
+      "areaName": "鑳庝晶搴擄紙闈炵洿杩烇級",
       "cntrType": [ 2 ],
       "type": 2
     },
     {
-      "areaCode": "NCLKQ",
+      "areaCode": "NCFZLCK",
       "areaName": "鍐呰‖搴擄紙闈炵洿杩烇級",
       "cntrType": [ 3 ],
       "type": 2
     },
     {
-      "areaCode": "LBLKQ",
+      "areaCode": "LBFZLCK",
       "areaName": "甯樺竷搴擄紙鐩磋繛锛�,
       "cntrType": [ 4 ],
       "type": 1
     },
     {
-      "areaCode": "LBLKQ",
+      "areaCode": "LBFZLCK",
       "areaName": "鐜甫搴�,
       "cntrType": [ 5, 6 ],
       "type": 2
     },
     {
-      "areaCode": "GBLKQ",
+      "areaCode": "GBFZLCK",
       "areaName": "閽㈠寘搴�闈炵洿杩�",
       "cntrType": [ 7 ],
       "type": 2
     },
     {
-      "areaCode": "ZZKQ",
+      "areaCode": "ZZFZLCK",
       "areaName": "涓浆搴�闈炵洿杩�",
       "cntrType": [ 7 ],
       "type": 2
@@ -82,14 +92,15 @@
   ],
 
 
-  "DeviceInfo": [
+  "CarDeviceInfo": [
     {
       "address": "127.0.0.11",
-      "deviceName": "浜х嚎1",
+      "deviceName": "1鍙疯溅",
       "deviceNo": 1,
       "enable": 0
     }
   ],
+
   "linePlcInfo": [
     {
       "deviceNo": "1",
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs
index 70d1b56..d7a5809 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/Monitor.cs
@@ -200,7 +200,6 @@
                         if (startLoc != null)
                         {
                             var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE);
-                            // 1.鍒涘缓鏂滆-鎴愭柊鏈哄彨鏂欎綔涓�                             wmsTask = new WMSTask()
                             {
                                 S_CNTR_CODE = locCntrRels[0].S_CNTR_CODE,
@@ -209,7 +208,7 @@
                                 S_START_AREA = startLoc.S_AREA_CODE,
                                 S_END_LOC = jbLoc.S_CODE,
                                 S_END_AREA = jbLoc.S_AREA_CODE,
-                                S_TYPE = "绌哄伐瑁呭嚭搴�,
+                                S_TYPE = "绌哄伐瑁呰嚜鍔ㄥ嚭搴撲换鍔�,
                                 S_OP_DEF_NAME = "鑷姩琛ュ厖绌哄伐瑁呭埌鎺ラ┏浣�,
                                 T_START_TIME = DateTime.Now,
                             };
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs
index 2bbdc23..90f2243 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/core/WCSCore.cs
@@ -62,6 +62,7 @@
                                         break;
                                     case 4:
                                         WCSHelper.UpdateStatus(cst, "鍙栬揣瀹屾垚");
+                                        LocationHelper.UnLockLoc(cst.S_START_LOC);
                                         TaskProcess.OperateStatus(cst, 4);
                                         break;
                                     case 5:
@@ -69,6 +70,7 @@
                                         break;
                                     case 6:
                                         WCSHelper.UpdateStatus(cst, "鍗歌揣瀹屾垚");
+                                        LocationHelper.UnLockLoc(cst.S_END_LOC);
                                         TaskProcess.OperateStatus(cst, 6);
                                         break;
                                     #endregion
@@ -84,11 +86,13 @@
                             else if (model.State == 1012)
                             {
                                 LogHelper.Info("寮�杩涜RFID鎵弿", "AGV");
+                                ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 1);
+                                WMSHelper.addRfidAnomalyRecord(cst.S_CNTR_CODE, 2, cst.S_START_LOC, null);
                                 // 鏌ヨ鎵弿鐨凴FID
                                 // 鍙戦� 00 04 71 02鍒版壂鐮佸櫒 锛屾帴鍙楄繑鍥炴暟鎹苟瑙f瀽
-                                byte[] bytes = new byte[] {00,04,71,02};
-                                var plc = Settings.deviceInfos.Where(a => a.deviceNo == model.ForkliftNo && a.enable == 1).FirstOrDefault();
-                                TcpServer.TcpServerSend(plc.address, bytes);
+                                /*  byte[] bytes = new byte[] { 00, 04, 71, 02 };
+                                  var plc = Settings.carDeviceInfos.Where(a => a.deviceNo == model.ForkliftNo && a.enable == 1).FirstOrDefault();
+                                  TcpServer.TcpServerSend(plc.address, bytes);*/
                             }
                             else if (model.State == 1002)
                             {
@@ -116,7 +120,7 @@
                                         param = $"{model.No};{cst.S_START_LOC};{cst.S_END_LOC};4;512;0;1"
                                     };
                                     NDCApi.ChangeOrderParam(paramModel);
-                                    LogHelper.Info($"鑾峰彇AGV缁堢偣锛歿agvEndLoc}", "AGV");
+                                    LogHelper.Info($"鍙樻洿AGV缁堢偣锛歿agvEndLoc}", "AGV");
                                 }
                                 else
                                 {
@@ -150,7 +154,11 @@
 
                                 // 妫�祴鏄惁鏄鐮佷綅锛岄潪璇荤爜浣嶏紝鍙互婵�椿棰勫垱寤轰换鍔�                                 var transfe = WMSHelper.GetTransfeRelevance(cst.S_END_LOC);  // 鎺ラ┏浣嶅睘鎬�-                                if ((transfe == null || transfe.N_READ_LOC == 0))
+                                if (transfe != null && transfe.N_READ_LOC == 1) 
+                                {
+                                    WCSHelper.ActivatePreCreateTask(mst.S_CODE);
+                                }
+                                else if ( transfe.N_READ_LOC == 0)
                                 {
                                     if (cst.S_TYPE.Contains("銆愬紓甯搞�"))
                                     {
@@ -176,9 +184,7 @@
                                     // 濡傛灉浣滀笟鍚嶇О涓烘垚鍨嬫満鍙枡鍑哄簱浠诲姟锛屽垯瑙﹀彂浣欐枡/绌烘墭鎼繍浠诲姟
                                     string locCode = WMSHelper.getReturnMaterialLocCode(mst.S_END_LOC);
                                     ApiHelper.returnMaterialOrEmptyTray(locCode);
-                                }
-
-                                
+                                }   
                             }
                         }
                         else
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/AlarmRecord.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/AlarmRecord.cs
index a817d73..ae490b4 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/AlarmRecord.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/AlarmRecord.cs
@@ -15,5 +15,6 @@
         public string S_ALARM_LEVEL { get; set; } // 鎶ヨ绾у埆  浣庛�涓�楂�         public string S_ALARM_MSG { get; set; } // 鎶ヨ淇℃伅
         public string S_FILE_NAME { get; set; } // 鏂囦欢鍚�+        public int N_IS_READ { get; set; } // 鏂囦欢鍚�     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/CntrItemRel.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/CntrItemRel.cs
index fbe69c3..3aca26e 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/CntrItemRel.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/CntrItemRel.cs
@@ -22,7 +22,7 @@
         public string S_BATCH_NO { get; set; }   // 批次条码
     
         public float F_QTY { get; set; }  // 数量
-        public string S_UOM { get; set; } = "";  // 规格
+        public string S_UOM { get; set; } = "个";  // 规格
         public string S_CNTR_CODE { get; set; }
         /// <summary>
         /// 分配量,被其它
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/Container.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/Container.cs
index 1ff9840..25fc917 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/Container.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/Container.cs
@@ -10,31 +10,16 @@
 
         public string S_CODE { get; set; }
         public string S_TYPE { get; set; }  // 1.胎面;2.胎侧;3.内衬;4.帘布;5.环带;6.冠带;7.钢包
-        public string S_SPEC { get; set; }
-        public float F_WEIGHT { get; set; }
-        public int N_LENGTH { get; set; }
-        public int N_WIDTH { get; set; }
-        public int N_HEIGHT { get; set; }
-        public string C_IS_VIRTUAL { get; set; } = "N";
         public int N_TYPE { get; set; }
         public string C_ENABLE { get; set; } = "Y";
-        public string S_STATE_PRE { get; set; }
-        public int N_REVIEW_RESULT { get; set; }
-
         public int N_DETAIL_COUNT { get; set; }
         public int N_B_STATE { get; set; }
         public string S_LOCK_OP_CODE { get; set; }
         public string S_LOCK_STATE { get; set; }
         public int N_LOCK_STATE { get; set; }
-        /// <summary>
-        /// 码盘时候标记
-        /// </summary>
-        public string S_SRC { get; internal set; }
-        public string S_DEST { get; internal set; }
 
         // --------------------福建佳通-----------------
         public int N_E_STATE { get; set; } = 0;  // 托盘异常状态  0.默认 1.WCS读码异常 2.AGV读码器读码异常 3.未查询到RFID的MES任务 4.RFID与任务RFID不一致 5.托盘物料不合格
-        public string S_ERR_DESC { get; internal set; } // 异常描述
 
 
         /// <summary>
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs
index e8304aa..2506cbe 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs
@@ -15,7 +15,7 @@
     {
         public string S_LOC_CODE { get; set; } // 璐т綅缂栫爜
         public int N_PROPERTY { get; set; } // 璐т綅灞炴� (1.鐩磋繛 2.闈炵洿杩�
-        public int N_ACT_TYPE { get; set; } // 璐т綅绫诲瀷 1.鍏ュ簱鎺ラ┏浣�2.鍑哄簱鎺ラ┏浣�+        public int N_TYPE { get; set; } // 璐т綅绫诲瀷 1.鍏ュ簱鎺ラ┏浣�2.鍑哄簱鎺ラ┏浣�         public string S_RELE_AREA { get; set; } // 鎵�睘搴撳尯
         public string S_DEVICE_NO { get; set; } // 璁惧鍙�        鐢ㄩ�锛氱敤浜庢煡璇㈢嚎浣撳厜鐢碉紝鍒ゆ柇缂撳瓨浣嶆槸鍚︿负绌�         public int N_IS_MANUAL { get; set; } // 鏄惁涓轰汉宸�(0.闈炰汉宸�2.浜哄伐)   鐢ㄩ�锛氬垏鎹汉宸ョ珯鍙�diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs
index 97a2627..e96ccdc 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs
@@ -16,7 +16,7 @@
     {
         internal static void Analysis(string data, string ip) {
             if (data.Length == 8) {
-                var plc = Settings.deviceInfos.Where(a => a.address == ip && a.enable == 1).FirstOrDefault();
+                var plc = Settings.carDeviceInfos.Where(a => a.address == ip && a.enable == 1).FirstOrDefault();
                 if (plc != null) {
                     WCSTask cst = WCSHelper.GetTaskByEq(plc.deviceNo);
                     if (cst != null) 
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs
index b63289e..5ad8998 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/TaskProcess.cs
@@ -28,13 +28,6 @@
             else {
                 Console.WriteLine($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岀粓鐐圭粦瀹氬鍣▄mst.S_CNTR_CODE}");
                 LogHelper.Info($"浠诲姟{mst.S_CODE} 璐т綅{mst.S_END_LOC}鍗歌揣瀹屾垚锛岃捣鐐硅В缁戝鍣▄mst.S_CNTR_CODE}");
-                // 缁堢偣涓虹洿杩炵紦瀛樹綅锛屼笉缁戝畾
-                var loc = WMSHelper.GetTransfeRelevance(mst.S_END_LOC); 
-                if (loc != null && loc.N_PROPERTY == 1)
-                {
-                    LocationHelper.UnLockLoc(mst.S_END_LOC);
-                    return;
-                }
                 LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList());
             }
         }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs
index 7520040..0933920 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs
@@ -12,11 +12,13 @@
         public static string SqlServer { get; set; }
         public static string SqlServer1 { get; set; }
         public static string OracleServer { get; set; }
-        public static List<deviceInfo> deviceInfos { get; set; }
+        public static List<CarDeviceInfo> carDeviceInfos { get; set; }
         public static List<LinePlcInfo> linePlcInfo { get; set; }
         public static List<PlcValue> plcValue { get; set; }
         public static List<AreaProperty> areaPropertyList { get; set; }
         public static List<AreaRelevance> areaRelevanceList { get; set; }
+
+        public static List<BufferLocConfig> bufferLocConfigList { get; set; }
         public static int port { get; set; }
         public static string WHCode { get; set; }
         public static string FacCode { get; set; }
@@ -61,8 +63,8 @@
                             if (keyValue.Name == "ApiPort") {
                                 port = int.Parse(keyValue.Value.ToString());
                             }
-                            if (keyValue.Name == "DeviceInfo") {
-                                deviceInfos = JsonConvert.DeserializeObject<List<deviceInfo>>(keyValue.Value.ToString());
+                            if (keyValue.Name == "CarDeviceInfo") {
+                                carDeviceInfos = JsonConvert.DeserializeObject<List<CarDeviceInfo>>(keyValue.Value.ToString());
                             }
                             if (keyValue.Name == "linePlcInfo") {
                                 linePlcInfo = JsonConvert.DeserializeObject<List<LinePlcInfo>>(keyValue.Value.ToString());
@@ -77,6 +79,10 @@
                             if (keyValue.Name == "AreaRelevance")
                             {
                                 areaRelevanceList = JsonConvert.DeserializeObject<List<AreaRelevance>>(keyValue.Value.ToString());
+                            }
+                            if (keyValue.Name == "BufferLocConfig")
+                            {
+                                bufferLocConfigList = JsonConvert.DeserializeObject<List<BufferLocConfig>>(keyValue.Value.ToString());
                             }
                         }
                     }
@@ -113,6 +119,22 @@
             return areaCodes;
         }
 
+        /// <summary>
+        /// 鑾峰彇鐩磋繛缂撳瓨浣嶉厤缃�+        /// </summary>
+        /// <param name="locCode"></param>
+        /// <returns></returns>
+        public static BufferLocConfig GetBufferLocConfig(string locCode) 
+        {
+           return bufferLocConfigList.Where(a => a.locCode == locCode).FirstOrDefault();
+        }
+
+        public class BufferLocConfig 
+        {
+            public string locCode { get; set; }
+            public string deviceNo { get; set; }
+        }
+
         public class AreaRelevance
         {
             public string areaCode { get; set; }
@@ -126,7 +148,8 @@
             public List<int> cntrType { get; set; }  // 瀹瑰櫒绫诲瀷 1.鑳庨潰锛�.鑳庝晶锛�.鍐呰‖锛�.甯樺竷锛�.鐜甫锛�.鍐犲甫锛�.閽㈠寘
         }
 
-        public class deviceInfo {
+        public class CarDeviceInfo
+        {
             public string address { get; set; }
             public string deviceName { get; set; }
             public string deviceNo { get; set; }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs
index c07bb91..49e4e08 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs
@@ -18,20 +18,7 @@
             var date = DateTime.Now.ToString("yyMMdd");
             return $"TP{date}{id.ToString().PadLeft(4, '0')}";
         }
-        /// <summary>
-        /// 鏍规嵁瀹瑰櫒绫诲瀷銆佺洰鐨勫湴銆佺姸鎬佹煡璇㈠鍣�-        /// </summary>
-        /// <param name="dest"></param>
-        /// <param name="cntrType"></param>
-        /// <param name="state"></param>
-        /// <returns></returns>
-        internal static List<Container> GetCntrListByPurpose(string dest, string cntrType, int state) {
-            //1.0 鏌ヨ揣浣嶅鍣ㄨ〃
-            var db = new SqlHelper<object>().GetInstance();
-            var list = db.Queryable<Container>().Where(a => a.S_DEST == dest && a.S_TYPE == cntrType && a.N_B_STATE == state).ToList();
-            return list;
-
-        }
+        
         /// <summary>
         /// TN_ContainerHelper.test("4L澶╃劧姘寸瑁�鍏�, 50, "335ml涓滄柟鏍戝彾15鍏�, 30);
         /// </summary>
@@ -199,7 +186,7 @@
                 var count = db.Queryable<CntrItemRel>().Count(a => a.S_CNTR_CODE == cntr.S_CODE);
                 cntr.N_DETAIL_COUNT = count;
                 cntr.C_ENABLE = "N";//鐮佺洏鍚庡皢鎵樼洏璁剧疆涓轰笉鍙敤鐘舵�锛屽叆搴撳悗鍙樻垚鍙敤
-                db.Updateable(cntr).UpdateColumns(it => new { it.N_DETAIL_COUNT, it.C_ENABLE, it.S_SRC }).ExecuteCommand();
+                db.Updateable(cntr).UpdateColumns(it => new { it.N_DETAIL_COUNT, it.C_ENABLE}).ExecuteCommand();
 
                 db.CommitTran();
                 res = true;
@@ -212,64 +199,9 @@
             return res;
         }
 
-        /// <summary>
-        /// 鐗╂枡淇℃伅缁戝畾鍒版弧瀹瑰櫒涓�-        /// </summary>
-        /// <param name="cntrCode"></param>
-        /// <param name="itemCode"></param>
-        /// <param name="batchNo"></param>
-        /// <param name="qty"></param>
-        /// <param name="purpose">瀹瑰櫒鐢ㄩ�锛岀敤浜庡摢涓嚎杈硅繕鏄洰鐨勭偣</param>
-        /// <returns></returns>
-        internal static bool BindCntrItemSingle(Container cntr, string itemCode, string batchNo, float qty) {
-            var res = false;
-            var db = new SqlHelper<object>().GetInstance();
-            try {
-                db.BeginTran();
-                db.Updateable(cntr).UpdateColumns(it => new { it.S_DEST }).ExecuteCommand();
-                //1.灏嗗師鏈夊鍣ㄧ墿鏂欎俊鎭垹闄�-                db.Deleteable<CntrItemRel>().Where(it => it.S_CNTR_CODE == cntr.S_CODE.Trim()).ExecuteCommand();
-                //2.鎻掑叆鏂扮殑瀹瑰櫒鐗╂枡淇℃伅锛堝鍣ㄥ彿涓嶅彉锛�-                var cir = new CntrItemRel { S_CNTR_CODE = cntr.S_CODE.Trim(), S_BATCH_NO = batchNo, F_QTY = qty, S_ITEM_CODE = itemCode };
-                db.Insertable<CntrItemRel>(cir).ExecuteCommand();
-
-                db.CommitTran();
-                res = true;
-            }
-            catch (Exception ex) {
-                db.RollbackTran();
-            }
-
-            return res;
-        }
-        /// <summary>
-        /// 鏍规嵁瀹瑰櫒鏉ユ簮鍜岀姸鎬佽幏鍙栨墭鐩�-        /// </summary>
-        /// <param name="src"></param>
-        /// <param name="state"></param>
-        /// <returns></returns>
-        internal static List<Container> GetCntr(string dest, int state, string cntrType = "") {
-            var db = new SqlHelper<object>().GetInstance();
-            if (cntrType == "") {
-                return db.Queryable<Container>().Where(a => a.S_DEST == dest && a.N_B_STATE == state).ToList();
-            }
-            else {
-                return db.Queryable<Container>().Where(a => a.S_DEST == dest && a.N_B_STATE == state && a.S_TYPE == cntrType).ToList();
-            }
-        }
-        internal static bool UpdateCntr(List<string> cntrs, string dest, int state) {
-            var res = false;
-            var db = new SqlHelper<object>().GetInstance();
-            var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CODE)).ToList();
-            if (models.Count > 0) {
-                models.ForEach(a => {
-                    a.S_DEST = dest; a.N_B_STATE = state;
-                    db.Updateable(a).UpdateColumns(it => new { it.S_DEST, it.N_B_STATE }).ExecuteCommand();
-                });
-                res = true;
-            }
-            return res;
-        }
+        
+       
+        
 
         internal static bool UpdateCntr(Container container)
         {
@@ -277,36 +209,8 @@
             return db.Updateable(container).ExecuteCommand()>0;
         }
 
-        internal static bool UpdateCntrDest(List<string> cntrs, string dest) {
-            var res = false;
-            var db = new SqlHelper<object>().GetInstance();
-            var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CODE)).ToList();
-            if (models.Count > 0) {
-                models.ForEach(a => {
-                    a.S_DEST = dest;
-                    db.Updateable(a).UpdateColumns(it => new { it.S_DEST }).ExecuteCommand();
-                });
-                res = true;
-            }
-            return res;
-        }
-        /// <summary>
-        /// 鏇存柊鎵樼洏鏉ユ簮
-        /// </summary>
-        /// <param name="cntr"></param>
-        /// <param name="src"></param>
-        /// <returns></returns>
-        internal static bool UpdateCntrSrc(string cntr, string src) {
-            var res = false;
-            var db = new SqlHelper<object>().GetInstance();
-            var model = db.Queryable<Container>().Where(a => a.S_CODE == cntr).First();
-            if (model != null) {
-                model.S_SRC = src;
-                model.T_MODIFY = DateTime.Now;
-                res = db.Updateable(model).UpdateColumns(it => new { it.S_SRC, it.T_MODIFY }).ExecuteCommand() > 0;
-            }
-            return res;
-        }
+        
+       
 
         /// <summary>
         /// 
@@ -321,49 +225,11 @@
             if (models.Count > 0) {
                 models.ForEach(a => {
                     a.N_E_STATE = state;
-                    db.Updateable(a).UpdateColumns(it => new { it.N_E_STATE,it.S_ERR_DESC }).ExecuteCommand();
+                    db.Updateable(a).UpdateColumns(it => new { it.N_E_STATE }).ExecuteCommand();
                 });
                 res = true;
             }
             return res;
         }
-
-        internal static bool UpdateCntr(List<string> cntrs, string src, string dest, int state) {
-            var res = false;
-            var db = new SqlHelper<object>().GetInstance();
-            var models = db.Queryable<Container>().Where(a => cntrs.Contains(a.S_CODE)).ToList();
-            if (models.Count > 0) {
-                models.ForEach(a => {
-                    a.S_DEST = dest; a.N_B_STATE = state; 
-                    db.Updateable(a).UpdateColumns(it => new { it.S_DEST, it.N_B_STATE, it.S_SRC }).ExecuteCommand();
-                });
-                res = true;
-            }
-            return res;
-        }
-        public static bool ClearCntrInfo(string cntr) {
-
-            var db = new SqlHelper<object>().GetInstance();
-            var model = db.Queryable<Container>().Where(a => a.S_CODE == cntr).First();
-            if (model != null) {
-                model.S_SRC = "";
-                model.S_DEST = "";
-                model.N_B_STATE = 0;
-                model.T_MODIFY = DateTime.Now;
-
-            }
-            db.Updateable(model).UpdateColumns(it => new { it.S_SRC, it.S_DEST, it.N_B_STATE, it.T_MODIFY }).ExecuteCommand();
-            return db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE.Trim() == cntr.Trim()).ExecuteCommand() > 0;
-        }
-        internal static List<Container> GetCntrBySrc(string src, int state, string cntrType = "") {
-            var db = new SqlHelper<object>().GetInstance();
-            if (cntrType == "") {
-                return db.Queryable<Container>().Where(a => a.S_SRC == src && a.N_B_STATE == state).ToList();
-            }
-            else {
-                return db.Queryable<Container>().Where(a => a.S_SRC == src && a.N_B_STATE == state && a.S_TYPE == cntrType).ToList();
-            }
-        }
-   
     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/LocationHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/LocationHelper.cs
index 5ad847a..9140963 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/LocationHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/LocationHelper.cs
@@ -293,7 +293,7 @@
             try
             {
                 db.BeginTran();
-                var count = db.Deleteable<LocCntrRel>().Where(it => it.S_LOC_CODE.Trim() == loc).ExecuteCommand();
+                db.Deleteable<LocCntrRel>().Where(it => it.S_LOC_CODE.Trim() == loc).ExecuteCommand();
                 location.N_CURRENT_NUM = 0;
                 location.N_LOCK_STATE = 0;
                 location.S_LOCK_STATE = Location.GetLockStateStr(location.N_LOCK_STATE);
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs
index c3d71ed..02fa96c 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WCSHelper.cs
@@ -65,14 +65,14 @@
                 Where(a => a.S_OP_CODE.Trim() == wmsTaskNo
                 && a.N_B_STATE == -1
                 );
-            if (anomaly == 1)
+            /*if (anomaly == 1)
             {
                 updateable = updateable.Where(a => a.S_TYPE.Contains("銆愬紓甯搞�"));
             }
             else 
             {
                 updateable = updateable.Where(a => !a.S_TYPE.Contains("銆愬紓甯搞�"));
-            }
+            }*/
             return updateable.ExecuteCommand() > 0;
         }
 
@@ -233,7 +233,7 @@
         }
         internal static List<WCSTask> GetWaitingTaskList() {
             var db = new SqlHelper<object>().GetInstance();
-            return db.Queryable<WCSTask>().Where(a => a.N_B_STATE == 0).ToList();
+            return db.Queryable<WCSTask>().Where(a => a.N_B_STATE == 0).OrderByDescending(a => a.N_PRIORITY).ToList();
         }
     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs
index 6dc19e8..47e90f5 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs
@@ -307,7 +307,7 @@
                 string S_ZONE_CLS_CODE = "";
                 if (trayStatus == 0)
                 {
-                    S_ZONE_CLS_CODE = "KGZ";
+                    S_ZONE_CLS_CODE = "KT";
                 }
                 else if (trayStatus == 1)
                 {
@@ -346,10 +346,6 @@
                               .Where((a, b, c) => a.S_AREA_CODE.Trim() == item.S_AREA_CODE.Trim() && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y" && c.S_ZONE_CLS_CODE.Trim() == S_ZONE_CLS_CODE)
                               .OrderBy((a, b, c) => a.N_LAYER)
                               .First();
-                            if (location != null)
-                            {
-                                return location;
-                            }
                         }
                     }
 
@@ -369,7 +365,7 @@
                                  .OrderBy((a, b, c) => a.N_LAYER)
                                  .First();
                 }
-                LogHelper.Info($"鏌ヨ缁撴潫,绔嬪簱缁堢偣璐т綅:{location}","WMS");
+                LogHelper.Info($"鏌ヨ缁撴潫,绔嬪簱缁堢偣璐т綅:{JsonConvert.SerializeObject(location)}","WMS");
             }
             catch (Exception ex) 
             {
@@ -381,15 +377,22 @@
 
         public static bool addAlarmRecord(string alarmType , string alarmLevel ,string alarmMsg ,string logSite = "WMS") {
             var db = new SqlHelper<object>().GetInstance();
+            bool result = true;
             LogHelper.Info(alarmMsg, logSite);
-            AlarmRecord alarmRecord = new AlarmRecord() {
-                S_ALARM_CODE = GenerateAlarmNo(),
-                S_ALARM_TYPE = alarmType,
-                S_ALARM_LEVEL = alarmLevel,
-                S_ALARM_MSG = alarmMsg,
-                S_FILE_NAME = logSite,
-            };    
-           return db.Insertable<AlarmRecord>(alarmRecord).ExecuteCommand()>0;
+            var alarmRecord = db.Queryable<AlarmRecord>().Where(a => a.N_IS_READ == 0 && a.S_ALARM_MSG == alarmMsg).First();
+            if (alarmRecord == null) 
+            {
+                alarmRecord = new AlarmRecord()
+                {
+                    S_ALARM_CODE = GenerateAlarmNo(),
+                    S_ALARM_TYPE = alarmType,
+                    S_ALARM_LEVEL = alarmLevel,
+                    S_ALARM_MSG = alarmMsg,
+                    S_FILE_NAME = logSite,
+                };
+                result = db.Insertable<AlarmRecord>(alarmRecord).ExecuteCommand() > 0;
+            }
+            return result;
         }
 
         public static bool addRfidAnomalyRecord(string rfid ,int anomalyType ,string locCode ,string taskNo) 
@@ -403,7 +406,7 @@
                 S_LOC_CODE = locCode,
                 S_TASK_NO = taskNo
             };
-            return db.Insertable<AlarmRecord>(anomalyRecord).ExecuteCommand() > 0;
+            return db.Insertable<RfidAnomalyRecord>(anomalyRecord).ExecuteCommand() > 0;
         }
 
         /// <summary>
@@ -450,15 +453,15 @@
         /// </summary>
         /// <param name="areaCode">搴撳尯</param>
         /// <param name="property">璐т綅灞炴�锛�.鐩磋繛 2.闈炵洿杩烇級</param>
-        /// <param name="actType">鍔ㄤ綔绫诲瀷锛�.浜哄伐鎺ラ┏浣�1.鍏ュ簱鎺ラ┏浣�2.鍑哄簱鎺ラ┏浣嶏級</param>
+        /// <param name="type">鍔ㄤ綔绫诲瀷锛�.浜哄伐鎺ラ┏浣�1.鍏ュ簱鎺ラ┏浣�2.鍑哄簱鎺ラ┏浣嶏級</param>
         /// <returns></returns>
-        public static Location GetTransfeRelevanceLoc(string areaCode  ,int actType ,int property )
+        public static Location GetTransfeRelevanceLoc(string areaCode  ,int type ,int property )
         {
             Location loc = null;
             var db = new SqlHelper<object>().GetInstance();
             loc = db.Queryable<Location>()
                 .LeftJoin<TransfeRelevance>((a,b)=> a.S_CODE == b.S_LOC_CODE)
-                .Where((a, b) => b.S_RELE_AREA.Trim() == areaCode && b.N_PROPERTY == property && b.N_ACT_TYPE == actType && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y")
+                .Where((a, b) => b.S_RELE_AREA.Trim() == areaCode && b.N_PROPERTY == property && b.N_TYPE == type && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.C_ENABLE == "Y")
                 .First();
             return loc;
         }
@@ -482,16 +485,16 @@
         /// 娉細鏌ヨ浠诲姟鏈�皯鐨勬帴椹充綅
         /// </summary>
         /// <param name="areaCode">搴撳尯</param>
-        /// <param name="property">璐т綅灞炴� ( 0.浜哄伐 1.鐩磋繛 2.闈炵洿杩�</param>
-        /// <param name="actType">鍔ㄤ綔绫诲瀷 锛�.鍏ュ簱鎺ラ┏浣� 2.鍑哄簱鎺ラ┏浣嶏級</param>
+        /// <param name="property">璐т綅灞炴� ( 1.鐩磋繛 2.闈炵洿杩�</param>
+        /// <param name="type">鍔ㄤ綔绫诲瀷 锛�.鍏ュ簱鎺ラ┏浣� 2.鍑哄簱鎺ラ┏浣嶏級</param>
         /// <returns></returns>
-        public static Location GetMinTaskTransfeLoc(string areaCode ,int actType, int property)
+        public static Location GetMinTaskTransfeLoc(string areaCode ,int type, int property)
         {
             var db = new SqlHelper<object>().GetInstance();
             var loc = db.Queryable<Location>()
                 .LeftJoin<TransfeRelevance>((a,b) => a.S_CODE == b.S_LOC_CODE)
                 .LeftJoin<WCSTask>((a,b,c) => a.S_CODE == c.S_END_LOC && c.N_B_STATE < 3)
-                .Where((a, b, c) => b.S_RELE_AREA.Trim() == areaCode  && b.N_ACT_TYPE == actType && b.N_PROPERTY == property  && a.N_LOCK_STATE < 3 && a.C_ENABLE == "Y")
+                .Where((a, b, c) => b.S_RELE_AREA.Trim() == areaCode  && b.N_TYPE == type && b.N_PROPERTY == property  && a.N_LOCK_STATE < 3 && a.C_ENABLE == "Y")
                 .GroupBy((a, b, c) => a.S_CODE)
                 .Select((a, b, c) => new {
                     count = SqlFunc.AggregateCount(c.S_END_LOC),
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/models/TN_VendorList.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/models/TN_VendorList.cs
index f49a6f7..f601aee 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/models/TN_VendorList.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/models/TN_VendorList.cs
@@ -13,5 +13,6 @@
         public string VENDOR { get; set; } // 渚涘簲鍟�         public string VENDORNAME { get; set; }  // 渚涘簲鍟嗗悕绉�         public int FURWEIGHT { get; set; } // 姣涚毊閲嶉噺
+        public int FURHEIGHT { get; set; } // 楂樺害
     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/process/TaskProcess.cs
index 6df4a9a..9cae50b 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/process/TaskProcess.cs
@@ -280,7 +280,8 @@
                                 var cntrItemRel = ContainerHelper.GetCntrItemRel(downCntr.S_CNTR_CODE).FirstOrDefault();
                                 if (cntrItemRel != null)
                                 {
-                                    mst.S_START_LOC = mst.S_START_LOC + "-" + cntrItemRel.N_GOODS_HEIGHT;
+                                    float height = WMSHelper.getFurHeight(cntrItemRel.LOTATT09);
+                                    mst.S_START_LOC = mst.S_START_LOC + "-" + height;
                                 }
                             }
                         }
@@ -290,7 +291,8 @@
                         if (endLocCntrRels != null && endLocCntrRels.Count == 1) {
                             var cntrItemRel = ContainerHelper.GetCntrItemRel(endLocCntrRels[0].S_CNTR_CODE).FirstOrDefault();
                             if (cntrItemRel != null) {
-                                mst.S_END_LOC = mst.S_END_LOC + "-" + cntrItemRel.N_GOODS_HEIGHT;
+                                float height = WMSHelper.getFurHeight(cntrItemRel.LOTATT09);
+                                mst.S_END_LOC = mst.S_END_LOC + "-" + height;
                             }
                         }
                     }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs
index 6838cae..9999732 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.SXJK/wms/WMSHelper.cs
@@ -1503,5 +1503,21 @@
             }
             return weight;
         }
+
+        /// <summary>
+        ///  鏌ヨ鏄惁鏈夐渶瑕佺Щ搴撶殑璐т綅
+        /// </summary>
+        /// <returns></returns>
+        public static float getFurHeight(string VENDOR)
+        {
+            float height = 800;
+            var db = new SqlHelper<object>().GetInstance();
+            var verdor = db.Queryable<TN_VendorList>().Where(a => a.VENDOR == VENDOR).First();
+            if (verdor != null)
+            {
+                height = verdor.FURHEIGHT;
+            }
+            return height;
+        }
     }
 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/wms/WMSHelper.cs
index 9fc75c5..8e12f8b 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.TSSG/wms/WMSHelper.cs
@@ -591,11 +591,15 @@
             {
                 // 1銆佹煡璇㈠綋鍓嶅簱鍖�鎺�鐗╂枡 鏈夋墭鐩樼殑璐т綅
                 var db = new SqlHelper<object>().GetInstance();
-                result = db.Queryable<Location>() 
-                    .Where(l => l.N_CURRENT_NUM > 0 && l.S_AREA_CODE == area && l.N_ROW == row && l.N_LOCK_STATE == 0 && (l.C_ENABLE != "绂佺敤" && l.C_ENABLE != "N"))
-                    .Includes(l => l.LocCntrRel, l => l.CntrItemRel)
-                    .OrderByDescending(l => l.N_COL)
-                    .First();
+                var isLock = db.Queryable<Location>().Where(a => a.S_AREA_CODE == area && a.N_ROW == row && a.N_LOCK_STATE != 0).Count()> 0;
+                if (!isLock) 
+                {
+                    result = db.Queryable<Location>()
+                       .Where(l => l.N_CURRENT_NUM > 0 && l.S_AREA_CODE == area && l.N_ROW == row && l.N_LOCK_STATE == 0 && (l.C_ENABLE != "绂佺敤" && l.C_ENABLE != "N"))
+                       .Includes(l => l.LocCntrRel, l => l.CntrItemRel)
+                       .OrderByDescending(l => l.N_COL)
+                       .First();
+                }
             }
             catch (Exception ex)
             {
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs
index 4889597..27a5a5f 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/Monitor.cs
@@ -50,7 +50,8 @@
             var emptyTrayBuffers = WMSHelper.getEmptyTrayBufferList();
             foreach (var buffer in emptyTrayBuffers)
             {
-                if (buffer.T_CREATE.AddMinutes(1) > DateTime.Now) 
+                var dateTime = DateTime.Now.AddMinutes(-1);
+                if (buffer.T_CREATE < dateTime) 
                 {
                     Location startLoc = WMSHelper.GetEmptyTrayStartLoc(buffer.TRAY_TYPE);
                     Location middleLoc = null;
@@ -128,6 +129,9 @@
                                 // 鏇存柊浣滀笟浠诲姟鐘舵�
                                 wmsTask.N_B_STATE = 1;
                                 WMSHelper.UpdateTaskState(wmsTask);
+
+                                buffer.IS_CREATED = "Y";
+                                WMSHelper.updateEmptyTrayBuffer(buffer);
                             }
                         }
                     }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs
index 18a5dda..1758ea2 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/core/WCSCore.cs
@@ -372,7 +372,6 @@
                                             return agvLoc;
                                         }
                                     }
-
                                     LogHelper.Info($"浠诲姟鍙凤細{taskNo},鍏ュ簱鎺ラ┏浣嶈揣浣嶉兘宸茬鐢�, "AGV");
                                 }
                                 else
@@ -410,6 +409,46 @@
                                         WMSHelper.updateEmptyTrayBuffer(emptyTray);
                                     }
                                 }
+                                else 
+                                {
+                                    var endLoc = WMSHelper.GetInstockEndLoc(container.N_TYPE, null, 1);
+                                    if (endLoc != null)
+                                    {
+                                        Location agvLoc = null;
+                                        var locCodes = Settings.getAgvJBLocList(endLoc.N_ROADWAY, 1);
+                                        if (locCodes.Count > 0)
+                                        {
+                                            foreach (var locCode in locCodes)
+                                            {
+                                                agvLoc = LocationHelper.GetLoc(locCode);
+                                                if (agvLoc != null && agvLoc.C_ENABLE == "Y")
+                                                {
+                                                    cst.S_END_LOC = agvLoc.S_CODE;
+                                                    cst.S_END_AREA = agvLoc.S_AREA_CODE;
+                                                    WCSHelper.UpdateTaskEnd(cst);
+
+                                                    mst.S_END_LOC = endLoc.S_CODE;
+                                                    mst.S_END_AREA = endLoc.S_AREA_CODE;
+                                                    WMSHelper.UpdateTaskEnd(mst);
+                                                    LocationHelper.LockLoc(endLoc.S_CODE, 1);
+                                                    
+                                                    LogHelper.Info($"浠诲姟鍙凤細{taskNo},AGV鐢宠鐨勭粓鐐癸細{agvLoc.S_CODE}", "AGV");
+                                                    return agvLoc;
+                                                }
+                                            }
+
+                                            LogHelper.Info($"浠诲姟鍙凤細{taskNo},鍏ュ簱鎺ラ┏浣嶈揣浣嶉兘宸茬鐢�, "AGV");
+                                        }
+                                        else
+                                        {
+                                            LogHelper.Info($"浠诲姟鍙凤細{taskNo},娌℃湁閰嶇疆绔嬪簱鎺ラ┏浣�, "AGV");
+                                        }
+                                    }
+                                    else
+                                    {
+                                        LogHelper.Info($"浠诲姟鍙凤細{taskNo},绔嬪簱娌℃湁婊¤冻鏉′欢鐨勭┖璐т綅", "AGV");
+                                    }
+                                }
                             }
                         }
                     }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs
index aa058eb..911da84 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs
@@ -810,6 +810,16 @@
                 return "No shift"; // 鐞嗚涓婁笉浼氳Е鍙�         }
 
+        /// <summary>
+        /// 绌烘墭瑙g粦
+        /// </summary>
+        public static ReturnResult emptyTrayUnBind(EmptyTrayUnBindModel model) 
+        {
+            ReturnResult responseResult = new ReturnResult();
+            ContainerHelper.deleteCntrItemRelByCntr(model.rfid);
+            return responseResult;
+        }
+
         public class readCodeFeedbackResponse
         {
             public bool verifyResult { get; set; }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/WmsController.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/WmsController.cs
index ba7422f..89ec50a 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/WmsController.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/WmsController.cs
@@ -164,6 +164,26 @@
         }
 
         /// <summary>
+        /// 9.绌烘墭鐩樿В缁�+        /// 涓氬姟鍦烘櫙锛氱┖鎵樼洏鍥炰富绾�+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public ReturnResult emptyTrayUnBind(EmptyTrayUnBindModel model)
+        {
+            LogHelper.Info("銆�.绌烘墭鐩樿В缁戙�Request锛� + JsonConvert.SerializeObject(model), "WMS");
+            var result = ApiHelper.emptyTrayUnBind(model);
+            LogHelper.Info("銆�.绌烘墭鐩樿В缁戙�response锛� + JsonConvert.SerializeObject(result), "WMS");
+            return result;
+        }
+
+        public class EmptyTrayUnBindModel 
+        {
+            public string rfid { get; set; } // 鎵樼洏鍙�+        }
+
+        /// <summary>
         /// 浠诲姟鐘舵�鍙嶉妯″瀷
         /// </summary>
         public class TaskStatusFeedbackModel
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs
index adaee44..b9f2949 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/wms/ContainerHelper.cs
@@ -132,7 +132,15 @@
         internal static bool deleteCntrItemRelByCntr(string cntr)
         {
             var db = new SqlHelper<object>().GetInstance();
-            return db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr).ExecuteCommand() > 0;
+            var container = ContainerHelper.GetCntr(cntr);
+            if(container != null)
+            {
+                db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr).ExecuteCommand();
+                
+                container.N_DETAIL_COUNT = 0;
+                db.Updateable(container).ExecuteCommand();
+            }
+            return true;
         }
 
         /// <summary>

--
Gitblit v1.9.1