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.FJJT/api/ApiHelper.cs |  580 +++++++++++++++++++++++++--------------------------------
 1 files changed, 257 insertions(+), 323 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 e51ab71..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,46 +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 
+            else if (endLoc.N_LOCK_STATE != 0) 
             {
-                if (endLoc.C_ENABLE == "Y")
-                {
-                    if (endLoc.N_LOCK_STATE != 0)
-                    {
-                        var existTask = WCSHelper.GetTaskByStartOrEnd(model.endLocCode);
-                        if (existTask != null)
-                        {
-                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"缁堢偣璐т綅锛歿model.endLocCode} 宸叉湁浠诲姟");
-                            throw new BusinessException($"缁堢偣璐т綅锛歿model.endLocCode} 宸叉湁浠诲姟");
-                        }
-                        else
-                        {
-                            LocationHelper.UnLockLoc(model.endLocCode);  // 娌℃湁浠诲姟灏憋紝鑷姩瑙i攣缁堢偣璐т綅
-                        }
-                    }
-                }
-                else 
-                {
-                    WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"缁堢偣璐т綅锛歿model.endLocCode} 宸茬鐢紝璇疯仈绯荤鐞嗕汉鍛樿В闄ょ鐢�);
-                    throw new BusinessException($"缁堢偣璐т綅锛歿model.endLocCode} 宸茬鐢紝璇疯仈绯荤鐞嗕汉鍛樿В闄ょ鐢�);
-                }
+                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝缁堢偣璐т綅锛歿model.endLocCode}澶勪簬閿佸畾鐘舵�");
+                throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝缁堢偣璐т綅锛歿model.endLocCode}澶勪簬閿佸畾鐘舵�");
             }
 
-            var transfeRelevance = WMSHelper.GetTransfeRelevance(model.endLocCode);  // 鎺ラ┏璐т綅鍏宠仈灞炴�
-            if (transfeRelevance == null) 
+            var areaCodes = Settings.getRelAreaCodes(endLoc.S_AREA_CODE);
+            if (areaCodes.Count == 0) 
             {
-                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"缁堢偣璐т綅锛歿model.endLocCode},缂哄皯閰嶇疆灞炴�锛岃鑱旂郴绠$悊浜哄憳杩涜閰嶇疆灞炴�");
-                throw new BusinessException($"缁堢偣璐т綅锛歿model.endLocCode},缂哄皯閰嶇疆灞炴�锛岃鑱旂郴绠$悊浜哄憳杩涜閰嶇疆灞炴�");
+                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�);
+                throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�);
             }
 
-            Location startLoc = WMSHelper.getOutStockStartLoc(transfeRelevance.S_RELE_AREA, null);
+            Location startLoc = WMSHelper.getOutStockStartLoc(areaCodes[0], null);
             if (startLoc == null)
             {
-                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"鏈煡璇㈠埌绌哄伐瑁咃紝绔嬪簱鍙兘缂哄皯绌哄伐瑁�);
-                throw new BusinessException($"鏈煡璇㈠埌绌哄伐瑁咃紝绔嬪簱鍙兘缂哄皯绌哄伐瑁�);
+                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"绌哄伐瑁呭嚭搴擄紝搴撳尯:{areaCodes[0]}鏈煡璇㈠埌绌哄伐瑁�);
+                throw new BusinessException($"绌哄伐瑁呭嚭搴擄紝鏈煡璇㈠埌绌哄伐瑁咃紝绔嬪簱鍙兘缂哄皯绌哄伐瑁�);
             }
 
             var locCntrRels = LocationHelper.GetLocCntr(startLoc.S_CODE);
@@ -98,7 +79,7 @@
                     S_END_LOC = endLoc.S_CODE,
                     S_END_AREA = endLoc.S_AREA_CODE,
                     S_TYPE = "绌哄伐瑁呭嚭搴撲换鍔�,
-                    S_OP_DEF_NAME = "绌哄伐瑁呭嚭搴撶紦瀛樹綅",
+                    S_OP_DEF_NAME = "绌哄伐瑁呭嚭搴�,
                     N_PRIORITY = 10,
                     T_START_TIME = DateTime.Now,
                 };
@@ -144,10 +125,10 @@
 
         /// <summary>
         /// WCS璇荤爜璇锋眰娴佺▼
-        /// 1.鍒ゆ柇RFID 鏄惁璇诲彇鎴愬姛锛堟墭鐩樺彿鏄惁涓虹┖锛�-        /// 2.鏌ヨ鍏充簬RFID鐨勯鍒涘缓浠诲姟
-        /// 3.濡傛灉璇诲彇鎴愬姛锛屽垯婵�椿棰勫垱寤轰换鍔�-        /// 4.濡傛灉璇诲彇涓嶆垚鍔燂紝鏌ョ湅寮傚父鍖烘槸鍚︽湁绌鸿揣浣嶏紝鏈夊垯鍒涘缓鎼繍寮傚父鍖轰换鍔★紝鏃犲垯锛岃褰曞紓甯告縺娲婚鍒涘缓浠诲姟
+        /// 涓氬姟鍦烘櫙锛氳鐮佸叆搴撱�璇荤爜鍑哄簱
+        /// 1.鍒ゆ柇RFID鏄惁瀛樺湪WMS绯荤粺涓紝鍚︼紝鍒欓粯璁や负RFID鏃犳硶璇嗗埆
+        /// 2.鍒ゆ柇RFID鏄惁涓庝换鍔FID鏄惁涓�嚧
+        /// 3.璁板綍RFID寮傚父淇℃伅
         /// </summary>
         /// <param name="request"></param>
         /// <returns></returns>
@@ -155,48 +136,27 @@
             ResponseResult responseResult = new ResponseResult();
 
             Location loc = LocationHelper.GetLoc(request.loc);
-            if (loc == null) 
+            if (loc != null)
             {
-                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"璇荤爜浣�{request.loc},娌℃湁鍦╓MS绯荤粺涓綍鍏�);
-                throw new BusinessException($"璇荤爜浣�{request.loc},娌℃湁鍦╓MS绯荤粺涓綍鍏�);
-            }
-
-            var locCntrRels = LocationHelper.GetLocCntr(request.loc);
-            if (locCntrRels.Count > 0)
-            {
-                string taskCntrCode = locCntrRels[0].S_CNTR_CODE;
-                // 2.鏌ヨ鍏充簬RFID鐨勯鍒涘缓浠诲姟
-                var cst = WCSHelper.GetPreCreatedTaskByCntr(taskCntrCode);
+                var cst = WCSHelper.GetTask(request.taskNo);
                 if (cst != null)
                 {
-                    bool errFlag = true;
-                    // 1.鍒ゆ柇RFID 鏄惁璇诲彇鎴愬姛锛堟墭鐩樺彿鏄惁涓虹┖锛�-                    if (request.cntrNo != null)
+                    var container = ContainerHelper.GetCntr(request.cntrNo);
+                    if (container != null)
                     {
-                        if (request.cntrNo == taskCntrCode)
+                        if (cst.S_CNTR_CODE != request.cntrNo)
                         {
-                            Container container = ContainerHelper.GetCntr(request.cntrNo);
-                            if (container.N_E_STATE == 0)
-                            {
-                                errFlag = false;
-                                WCSHelper.ActivatePreCreateTask(cst.S_OP_CODE);
-                            }
-                        }
-                        else
-                        {
-                            ContainerHelper.UpdateCntrState(taskCntrCode, 1,"WCS鍙嶉RFID涓庝换鍔FID涓嶄竴鑷�);
+                            ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 1);
+                            WMSHelper.addRfidAnomalyRecord(cst.S_CNTR_CODE, 2, request.loc, cst.S_CODE);
                         }
                     }
-                    else
+                    else 
                     {
-                        ContainerHelper.UpdateCntrState(taskCntrCode, 1,"WCS鍙嶉RFID涓簄ull");
+                        ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 1);
+                        WMSHelper.addRfidAnomalyRecord(cst.S_CNTR_CODE, 1, request.loc, cst.S_CODE);
                     }
 
-                    // 鏂规1 4.婵�椿棰勫垱寤轰换鍔�-                    if (errFlag) 
-                    {
-                        WCSHelper.ActivatePreCreateTask(cst.S_OP_CODE,1);
-                    }
+                    /*WCSHelper.ActivatePreCreateTask(cst.S_OP_CODE);*/
 
                     // 鏂规2 4.濡傛灉璇诲彇涓嶆垚鍔燂紝鏌ョ湅寮傚父鍖烘槸鍚︽湁绌鸿揣浣� 
                     /* var agvEndLoc = WMSHelper.GetTransfeRelevanceLoc(loc.S_AREA_CODE, "4");
@@ -233,15 +193,15 @@
                          WCSHelper.ActivatePreCreateTask(cst.S_OP_CODE);
                      }*/
                 }
-                else 
+                else
                 {
-                    WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"璇荤爜浣�{request.loc}瑙﹀彂璇荤爜璇锋眰锛岃鐮佷綅涓婂鍣�{taskCntrCode}娌℃湁棰勫垱寤轰换鍔�);
+                    WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"娌℃湁鏌ヨ鍒拌鐮佺殑浠诲姟锛屼换鍔″彿:{request.taskNo}");
                 }
             }
             else 
             {
-                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"璇荤爜浣�{request.loc},娌℃湁鏌ヨ鍒板鍣�);
-                throw new BusinessException($"璇荤爜浣�{request.loc},娌℃湁鏌ヨ鍒板鍣�);
+                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"璇荤爜浣�{request.loc},娌℃湁鍦╓MS绯荤粺涓綍鍏�);
+                throw new BusinessException($"璇荤爜浣�{request.loc},娌℃湁鍦╓MS绯荤粺涓綍鍏�);
             }
             return responseResult;
         }
@@ -267,51 +227,32 @@
         /// <returns></returns>
         public static ResponseResult offLineProcess(OffLineRequest model) {
             ResponseResult responseResult = new ResponseResult();
+
+            // 鏌ヨ璧风偣璐т綅鏄惁瀛樺湪宸插瓨鍦ㄤ换鍔★紝闃叉浠诲姟閲嶅鍙戣捣
             var existWmsTask = WMSHelper.GetWmsTaskByStart(model.loc);
             if (existWmsTask == null)
             {
-                // 鍒ゆ柇婊℃枡鎺ラ┏浣嶅搴旂殑绌哄伐瑁呯紦瀛樹綅鐘舵�锛堟煡璇㈢嚎浣撳厜鐢碉級
+                // 鏌ヨ瀵瑰簲鏈哄彴鐨勭墿鏂欎笅绾块厤缃俊鎭�                 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")
                     {
-                        // 婊℃枡涓嬬嚎锛堢洿杩烇級
-                        LjMesTask mesTask = null;
-                        if (model.cntrNo != null && model.cntrNo != "")
-                        {
-                            var container = ContainerHelper.GetCntr(model.cntrNo);
-                            if (container == null)
-                            {
-                                ContainerHelper.AddCntr(model.cntrNo);
-                                ContainerHelper.UpdateCntrState(model.cntrNo, 1, $"婊℃枡涓嬬嚎锛堢洿杩烇級,WCS鍙嶉鐨凴FID:{model.cntrNo}鍦╓MS绯荤粺涓笉瀛樺湪");
-                                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"婊℃枡涓嬬嚎锛堢洿杩烇級,WCS鍙嶉鐨凴FID:{model.cntrNo}鍦╓MS绯荤粺涓笉瀛樺湪");
-                            }
-                            else
-                            {
-                                ContainerHelper.UpdateCntrState(model.cntrNo, 0, "");
-                                mesTask = WMSHelper.getLjMesTaskByCntr(model.cntrNo);
-                                if (mesTask == null)
-                                {
-                                    ContainerHelper.UpdateCntrState(model.cntrNo, 1, $"鏈煡璇㈠埌MES浠诲姟");
-                                    WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"婊℃枡涓嬬嚎锛堢洿杩烇級,瀹瑰櫒:{model.cntrNo}鏈煡璇㈠埌MES浠诲姟");
-                                }
-                            }
-                        }
-                        else 
-                        {
-                            model.cntrNo = ContainerHelper.GenerateCntrNo();
-                            ContainerHelper.AddCntr(model.cntrNo);
-                            ContainerHelper.UpdateCntrState(model.cntrNo, 1, $"WCS鍙嶉鐨凴FID:{model.cntrNo} 涓虹┖");
-                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"WCS鍙嶉鐨凴FID:{model.cntrNo} 涓虹┖");
-                        }
-                        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
@@ -328,6 +269,7 @@
             return responseResult;
         }
 
+
         /// <summary>
         /// 婊℃枡涓嬬嚎锛堥潪鐩磋繛锛�         /// 1.鍒涘缓婊℃枡涓嬬嚎浣滀笟
@@ -337,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
@@ -402,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);
@@ -417,8 +369,8 @@
                         }
                         else
                         {
-                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呰ˉ鍏呮帴椹充綅:{logicConfig.S_LKKTJBLOC},娌℃湁绌哄伐瑁�);
-                            throw new BusinessException($"绌哄伐瑁呰ˉ鍏呮帴椹充綅:{logicConfig.S_LKKTJBLOC},娌℃湁绌哄伐瑁�);
+                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"绌哄伐瑁呭嚭搴撶珯鍙�{logicConfig.S_LKKTJBLOC},娌℃湁绌哄伐瑁�);
+                            photoStatus = false;
                         }
                     }
 
@@ -440,7 +392,6 @@
                             S_OP_DEF_CODE = mesTask.ID.ToString(),
                             T_START_TIME = DateTime.Now,
                         };
-
                         if (WMSHelper.CreateWmsTask(wmsTask))
                         {
                             int priority = 10;
@@ -471,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,
@@ -487,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;
@@ -517,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
@@ -561,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
             {
@@ -573,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];
@@ -588,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
@@ -626,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) 
@@ -1187,6 +1117,7 @@
 
         /// <summary>
         /// AGV鐢宠缁堢偣
+        /// 鍦烘櫙锛�.浣欐枡/绌哄伐瑁呭叆搴撲换鍔★紙鎴愬瀷鏈猴級 2.婊℃枡/绌哄伐瑁呭叆搴擄紙鏈哄彴锛�3.婊℃枡/绌哄伐瑁呭嚭搴撳紓甯�4.婊℃枡/绌哄伐瑁呭叆搴撳紓甯�         /// </summary>
         /// <param name="applyType">1.姝e父 2.RFID涓庝换鍔FID涓嶅尮閰�3.鐗╂枡鐘舵�涓嶅悎鏍�/param>
         /// <param name="loc"></param>
@@ -1333,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))
@@ -1363,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;
@@ -1403,6 +1305,35 @@
                 mst.S_END_LOC = wmsEndLoc.S_CODE;
                 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;
         }
@@ -2194,6 +2125,7 @@
         {
             public string reqId { get; set; }
             public string reqTime { get; set; }
+            public string taskNo { get; set; } // 鎵樼洏鍙�             public string loc { get; set; } // 璐т綅 涓婃枡鐐广�涓嬫枡鐐广�璇荤爜浣嶃�绉伴噸浣嶏紙蹇呭~锛�             public string cntrNo { get; set; } // 鎵樼洏鍙�             public int signalType { get; set; } //璇锋眰绫诲瀷 1:涓嬬嚎璇锋眰 2锛氬彨鏂欒姹�3锛氳鐮佽姹傦紙蹇呭~锛�@@ -2218,6 +2150,7 @@
             public string loc { get; set; } // 璐т綅 涓婃枡鐐广�涓嬫枡鐐广�璇荤爜浣嶃�绉伴噸浣嶏紙蹇呭~锛�             public string cntrNo { get; set; } // 鎵樼洏鍙�             public string jtNo { get; set; } // 鏈哄彴鍙�+            public bool isNormal { get; set; } //鏄惁寮傚父
         }
 
         /// <summary>
@@ -2227,6 +2160,7 @@
         {
             public string loc { get; set; } // 璐т綅 涓婃枡鐐广�涓嬫枡鐐广�璇荤爜浣嶃�绉伴噸浣嶏紙蹇呭~锛�             public string cntrNo { get; set; } // 鎵樼洏鍙�+            public string taskNo { get; set; } // 浠诲姟鍙�         }
 
         public class AddTaskModel {

--
Gitblit v1.9.1