From 16d2162a833cebeae72c363962917bb9da8145ef Mon Sep 17 00:00:00 2001
From: 杨前锦 <1010338399@qq.com>
Date: 星期五, 06 六月 2025 17:34:47 +0800
Subject: [PATCH] 福建佳通优化

---
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs       |    3 
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs |   10 ++
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/WmsController.cs       |   19 +--
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_PT/api/ApiHelper.cs        |    4 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs           |   32 +++++-
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs           |   14 ++
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs |    3 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs           |  141 +++++++++------------------
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/HH.WCS.Mobox3.FJJT.csproj  |    1 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json         |   18 +++
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs   |    3 
 HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs     |   20 ---
 HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/WMSHelper.cs       |   18 +--
 13 files changed, 140 insertions(+), 146 deletions(-)

diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/HH.WCS.Mobox3.FJJT.csproj b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/HH.WCS.Mobox3.FJJT.csproj
index ff0eee7..747e795 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/HH.WCS.Mobox3.FJJT.csproj
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/HH.WCS.Mobox3.FJJT.csproj
@@ -181,6 +181,7 @@
     <Compile Include="models\other\DayuanOut.cs" />
     <Compile Include="models\PutawayDetail.cs" />
     <Compile Include="models\PutawayOrder.cs" />
+    <Compile Include="models\RfidAnomalyRecord.cs" />
     <Compile Include="models\Safety_Inventory.cs" />
     <Compile Include="models\SideLocConfig.cs" />
     <Compile Include="models\TN_ASN_Detail.cs" />
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..6c0af1a 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/ApiHelper.cs
@@ -46,42 +46,18 @@
                 WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"WMS绯荤粺鏈煡璇㈠埌缁堢偣璐т綅锛歿model.endLocCode}");
                 throw new BusinessException($"WMS绯荤粺鏈煡璇㈠埌缁堢偣璐т綅锛歿model.endLocCode},璇锋鏌ョ粓鐐硅揣浣嶇紪鐮佹槸鍚︽纭�);
             }
-            else 
+
+            var areaCodes = Settings.getRelAreaCodes(endLoc.S_AREA_CODE);
+            if (areaCodes.Count == 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("娴佺▼寮傚父", "浣�, $"鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�);
+                throw new BusinessException($"鏈厤缃簱鍖�{endLoc.S_AREA_CODE}鐨勫叧鑱斿叧绯�);
             }
 
-            var transfeRelevance = WMSHelper.GetTransfeRelevance(model.endLocCode);  // 鎺ラ┏璐т綅鍏宠仈灞炴�
-            if (transfeRelevance == null) 
-            {
-                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"缁堢偣璐т綅锛歿model.endLocCode},缂哄皯閰嶇疆灞炴�锛岃鑱旂郴绠$悊浜哄憳杩涜閰嶇疆灞炴�");
-                throw new BusinessException($"缁堢偣璐т綅锛歿model.endLocCode},缂哄皯閰嶇疆灞炴�锛岃鑱旂郴绠$悊浜哄憳杩涜閰嶇疆灞炴�");
-            }
-
-            Location startLoc = WMSHelper.getOutStockStartLoc(transfeRelevance.S_RELE_AREA, null);
+            Location startLoc = WMSHelper.getOutStockStartLoc(areaCodes[0], null);
             if (startLoc == null)
             {
-                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"鏈煡璇㈠埌绌哄伐瑁咃紝绔嬪簱鍙兘缂哄皯绌哄伐瑁�);
+                WMSHelper.addAlarmRecord("娴佺▼寮傚父", "浣�, $"搴撳尯:{areaCodes[0]}鏈煡璇㈠埌绌哄伐瑁�);
                 throw new BusinessException($"鏈煡璇㈠埌绌哄伐瑁咃紝绔嬪簱鍙兘缂哄皯绌哄伐瑁�);
             }
 
@@ -98,7 +74,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 +120,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,47 +131,24 @@
             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");
-                    }
-
-                    // 鏂规1 4.婵�椿棰勫垱寤轰换鍔�-                    if (errFlag) 
-                    {
-                        WCSHelper.ActivatePreCreateTask(cst.S_OP_CODE,1);
+                        ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 1);
+                        WMSHelper.addRfidAnomalyRecord(cst.S_CNTR_CODE, 1, request.loc, cst.S_CODE);
                     }
 
                     // 鏂规2 4.濡傛灉璇诲彇涓嶆垚鍔燂紝鏌ョ湅寮傚父鍖烘槸鍚︽湁绌鸿揣浣� 
@@ -233,15 +186,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,43 +220,40 @@
         /// <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)
                 {
+                    // 鏍规嵁鐗╂枡涓嬬嚎閰嶇疆淇℃伅锛屽垽鏂换鍔$被鍨嬫槸鐩磋繛涓嬬嚎杩樻槸闈炵洿杩炰笅绾�                     if (logicConfig.S_TASK_TYPE == "1" || logicConfig.S_TASK_TYPE == "2")
                     {
-                        // 婊℃枡涓嬬嚎锛堢洿杩烇級
+                        // 鐩磋繛涓嬬嚎锛岄渶瑕佸垽鏂牎楠孯FID
                         LjMesTask mesTask = null;
-                        if (model.cntrNo != null && model.cntrNo != "")
+                        var container = ContainerHelper.GetCntr(model.cntrNo);
+                        if (container != null)
                         {
-                            var container = ContainerHelper.GetCntr(model.cntrNo);
-                            if (container == null)
+                            mesTask = WMSHelper.getLjMesTaskByCntr(model.cntrNo);
+                            if (mesTask == 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浠诲姟");
-                                }
+                                ContainerHelper.UpdateCntrState(model.cntrNo, 1);
+                                WMSHelper.addRfidAnomalyRecord(model.cntrNo, 3, model.loc, null);
                             }
                         }
                         else 
                         {
-                            model.cntrNo = ContainerHelper.GenerateCntrNo();
+                            model.isNormal = false;
+                        }
+
+                        if (!model.isNormal) 
+                        {
                             ContainerHelper.AddCntr(model.cntrNo);
-                            ContainerHelper.UpdateCntrState(model.cntrNo, 1, $"WCS鍙嶉鐨凴FID:{model.cntrNo} 涓虹┖");
-                            WMSHelper.addAlarmRecord("娴佺▼寮傚父", "涓�, $"WCS鍙嶉鐨凴FID:{model.cntrNo} 涓虹┖");
+                            ContainerHelper.UpdateCntrState(model.cntrNo, 1);
+                            WMSHelper.addRfidAnomalyRecord(model.cntrNo, 1, model.loc, null);
                         }
                         triggerItemOffLineFlow(model.loc, model.cntrNo, logicConfig, mesTask);
                     }
@@ -2194,6 +2144,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 +2169,7 @@
             public string loc { get; set; } // 璐т綅 涓婃枡鐐广�涓嬫枡鐐广�璇荤爜浣嶃�绉伴噸浣嶏紙蹇呭~锛�             public string cntrNo { get; set; } // 鎵樼洏鍙�             public string jtNo { get; set; } // 鏈哄彴鍙�+            public bool isNormal { get; set; } //鏄惁寮傚父
         }
 
         /// <summary>
@@ -2227,6 +2179,7 @@
         {
             public string loc { get; set; } // 璐т綅 涓婃枡鐐广�涓嬫枡鐐广�璇荤爜浣嶃�绉伴噸浣嶏紙蹇呭~锛�             public string cntrNo { get; set; } // 鎵樼洏鍙�+            public string taskNo { get; set; } // 浠诲姟鍙�         }
 
         public class AddTaskModel {
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/WmsController.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/WmsController.cs
index 9aa224c..007c3b2 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/WmsController.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/api/WmsController.cs
@@ -18,9 +18,7 @@
     {
         /// <summary>
         /// 1.绌哄伐瑁呭嚭搴�-        /// 涓氬姟鍦烘櫙锛�-        /// 1.鐩磋繛娴佺▼鍒濆鍖栵紝琛ュ厖绌哄伐瑁�-        /// 2.闈炵洿杩炴祦绋嬶紝鍥哄畾绔欏彴鑷姩琛ュ厖绌哄伐瑁�+        /// 涓氬姟鍦烘櫙锛氱洿杩炴祦绋嬪垵濮嬪寲锛岃ˉ鍏呯紦瀛樹綅鐨勭┖宸ヨ
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
@@ -36,7 +34,7 @@
             }
             catch (BusinessException be)
             {
-                responseResult.code = 501;
+                responseResult.code = 201;
                 responseResult.msg = be.Message;
             }
             catch (Exception ex) 
@@ -45,7 +43,6 @@
                 responseResult.msg = $"WMS鍐呴儴閿欒锛岃鑱旂郴寮�彂浜哄憳澶勭悊";
                 WMSHelper.addAlarmRecord("绯荤粺閿欒", "楂�, $"WMS鍐呴儴閿欒: 绌哄伐瑁呭嚭搴撻敊璇紝閿欒鍘熷洜锛歿ex.Message}");
             }
-            
             LogHelper.Info("emptyPalletOutStock 鍑哄弬锛� + JsonConvert.SerializeObject(responseResult), "WMS");
             return responseResult;
         }
@@ -65,25 +62,25 @@
             ResponseResult responseResult = new ResponseResult();
             try
             {
-                if (model.signalType == 1)  // 鐗╂枡涓嬬嚎鍏ュ簱璇锋眰
+                if (model.signalType == 1)  // 姝e父鐗╂枡涓嬬嚎鍏ュ簱璇锋眰
                 {
-                    OffLineRequest request = new OffLineRequest() { loc = model.loc, cntrNo = model.cntrNo, jtNo = model.deviceNo };
+                    OffLineRequest request = new OffLineRequest() { loc = model.loc, cntrNo = model.cntrNo, jtNo = model.deviceNo, isNormal = true};
                     responseResult = ApiHelper.offLineProcess(request);
                 }
                 else if (model.signalType == 3)  // 璇荤爜鍏ュ簱璇锋眰
                 {
-                    ReadCodeRequest request = new ReadCodeRequest() { loc = model.loc, cntrNo = model.cntrNo };
+                    ReadCodeRequest request = new ReadCodeRequest() { loc = model.loc, cntrNo = model.cntrNo ,taskNo = model.taskNo };
                     responseResult = ApiHelper.readCodeProcess(request);
                 }
                 else if (model.signalType == 5)  // 寮傚父宸ヨ鍏ュ簱璇锋眰
                 {
-                    OffLineRequest request = new OffLineRequest() { loc = model.loc, cntrNo = model.cntrNo, jtNo = model.deviceNo };
+                    OffLineRequest request = new OffLineRequest() { loc = model.loc, cntrNo = model.cntrNo, jtNo = model.deviceNo , isNormal = false};
                     responseResult = ApiHelper.offLineProcess(request);
                 }
             }
             catch (BusinessException be)
             {
-                responseResult.code = 501;
+                responseResult.code = 201;
                 responseResult.msg = be.Message;
             }
             catch (Exception ex)
@@ -249,9 +246,9 @@
 
         public class OutStockModel
         {
-            public string endLocCode { get; set; }
             public string reqId { get; set; }
             public string reqTime { get; set; }
+            public string endLocCode { get; set; }
         }
     }
 }
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 e025d6e..382020b 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/config/config.json
@@ -8,6 +8,20 @@
   "FacCode": "0000",
   "WHCode": "W001",
 
+  // 鎺ラ┏鍖恒�缂撳瓨鍖恒�鏈哄彴涓嬬嚎鍖恒�鎴愬瀷鏈哄彨鏂欏尯 瀵瑰簲鐨勭珛搴撳簱鍖�+  "AreaRelevance": [
+    {
+      "areaCode": "",
+      "relAreaCode": [ "" ]
+    },
+    {
+      "areaCode": "",
+      "relAreaCode": [ "" ]
+    }
+  ],
+
+
+
   // cntrType 1.鑳庨潰锛�.鑳庝晶锛�.鍐呰‖锛�.甯樺竷锛�.鐜甫锛�.鍐犲甫锛�.閽㈠寘
   // type 1.鐩磋繛 2.闈炵洿杩�   "AreaProperty": [
@@ -50,7 +64,7 @@
     {
       "areaCode": "LBLKQ",
       "areaName": "鐜甫搴�,
-      "cntrType": [ 5,6 ],
+      "cntrType": [ 5, 6 ],
       "type": 2
     },
     {
@@ -66,8 +80,6 @@
       "type": 2
     }
   ],
-
-
 
 
   "DeviceInfo": [
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 8325720..e8304aa 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/models/TransfeRelevance.cs
@@ -19,7 +19,6 @@
         public string S_RELE_AREA { get; set; } // 鎵�睘搴撳尯
         public string S_DEVICE_NO { get; set; } // 璁惧鍙�        鐢ㄩ�锛氱敤浜庢煡璇㈢嚎浣撳厜鐢碉紝鍒ゆ柇缂撳瓨浣嶆槸鍚︿负绌�         public int N_IS_MANUAL { get; set; } // 鏄惁涓轰汉宸�(0.闈炰汉宸�2.浜哄伐)   鐢ㄩ�锛氬垏鎹汉宸ョ珯鍙�-        public int N_READ_LOC { get; set; } // 鏄惁璇荤爜浣�(0銆佸惁 1.鏄�        
-
+        public int N_READ_LOC { get; set; } // 鏄惁璇荤爜浣�(0銆佸惁 1.鏄�       
     }
 }
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 24d9c40..97a2627 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/process/DeviceProcess.cs
@@ -35,7 +35,8 @@
                             // 淇敼鍙傛暟6涓�
                             /* NDCApi.ChangeOrderParam(cst.S_CODE, 6, "3");*/
                             // 淇敼瀹瑰櫒寮傚父鐘舵�
-                            ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 2, $"{plc.deviceNo}AGV鎵爜鍣�鎵弿RFID:{rfid}涓庝换鍔FID:{cst.S_CNTR_CODE}涓嶄竴鑷�);
+                            ContainerHelper.UpdateCntrState(cst.S_CNTR_CODE, 1);
+                            WMSHelper.addRfidAnomalyRecord(cst.S_CNTR_CODE, 2, cst.S_START_LOC, null);
                         }
                     }
                 }
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 3ad20b8..7520040 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/util/Settings.cs
@@ -16,6 +16,7 @@
         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 int port { get; set; }
         public static string WHCode { get; set; }
         public static string FacCode { get; set; }
@@ -73,6 +74,10 @@
                             {
                                 areaPropertyList = JsonConvert.DeserializeObject<List<AreaProperty>>(keyValue.Value.ToString());
                             }
+                            if (keyValue.Name == "AreaRelevance")
+                            {
+                                areaRelevanceList = JsonConvert.DeserializeObject<List<AreaRelevance>>(keyValue.Value.ToString());
+                            }
                         }
                     }
                 }
@@ -92,17 +97,34 @@
            return areaPropertyList.Where(a => a.cntrType.Contains(cntrType)).Select(a => a.areaCode).ToList();
         }
 
+        /// <summary>
+        /// 鏌ヨ瀛樺偍搴撳尯
+        /// </summary>
+        /// <param name="areaCode"></param>
+        /// <returns></returns>
+        public static List<string> getRelAreaCodes(string areaCode)
+        {
+            List<string> areaCodes = new List<string>();    
+            var areaRelevance = areaRelevanceList.Where(a => a.areaCode == areaCode).FirstOrDefault();
+            if (areaRelevance != null) 
+            {
+                areaCodes = areaRelevance.relAreaCode;
+            }
+            return areaCodes;
+        }
+
+        public class AreaRelevance
+        {
+            public string areaCode { get; set; }
+            public List<string> relAreaCode { get; set; }  
+        }
+
         public class AreaProperty
         {
             public string areaName { get; set; }
             public string areaCode { get; set; }
             public List<int> cntrType { get; set; }  // 瀹瑰櫒绫诲瀷 1.鑳庨潰锛�.鑳庝晶锛�.鍐呰‖锛�.甯樺竷锛�.鐜甫锛�.鍐犲甫锛�.閽㈠寘
         }
-
-
-
-
-
 
         public class deviceInfo {
             public string address { 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 7b5c805..c07bb91 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/ContainerHelper.cs
@@ -79,31 +79,21 @@
             return res;
         }*/
 
-        internal static bool AddCntr(string cntrCode ,int detallCount = 1)
+        internal static bool AddCntr(string cntrCode ,int detallCount = 0)
         {
             var res = false;
             var db = new SqlHelper<object>().GetInstance();
             var TN_Container = new Container { S_CODE = cntrCode ,N_DETAIL_COUNT = detallCount };
             try
             {
-                db.BeginTran();
                 var container = db.Queryable<Container>().Where(a => a.S_CODE.Trim() == cntrCode).First();
                 if (container == null)
                 {
-                    db.Insertable<Container>(TN_Container).ExecuteCommand();
+                    res = db.Insertable<Container>(TN_Container).ExecuteCommand() > 0;
                 }
-                else 
-                {
-                    container.N_DETAIL_COUNT = detallCount;
-                    container.N_E_STATE = 0;
-                    db.Updateable(container).ExecuteCommand();
-                }
-                db.CommitTran();
-                res = true;
             }
             catch (Exception ex)
             {
-                db.RollbackTran();
                 WMSHelper.addAlarmRecord("绯荤粺閿欒", "楂�, $"娣诲姞瀹瑰櫒閿欒锛岄敊璇師鍥狅細{ex.Message}");
                 throw new BusinessException($"娣诲姞瀹瑰櫒閿欒锛岄敊璇師鍥狅細{ex.Message}");
             }
@@ -322,17 +312,15 @@
         /// 
         /// </summary>
         /// <param name="cntrCode"></param>
-        /// <param name="state">鎵樼洏寮傚父鐘舵�  0.榛樿 1.WCS璇荤爜寮傚父 2.AGV璇荤爜鍣ㄨ鐮佸紓甯�/param>
-        /// <param name="errMsg">寮傚父淇℃伅</param>
+        /// <param name="state">鎵樼洏寮傚父鐘舵�  0.姝e父 1.寮傚父</param>
         /// <returns></returns>
-        internal static bool UpdateCntrState(string cntrCode, int state ,string errMsg) {
+        internal static bool UpdateCntrState(string cntrCode, int state) {
             var res = false;
             var db = new SqlHelper<object>().GetInstance();
             var models = db.Queryable<Container>().Where(a => a.S_CODE.Trim() == cntrCode).ToList();
             if (models.Count > 0) {
                 models.ForEach(a => {
                     a.N_E_STATE = state;
-                    a.S_ERR_DESC = errMsg;
                     db.Updateable(a).UpdateColumns(it => new { it.N_E_STATE,it.S_ERR_DESC }).ExecuteCommand();
                 });
                 res = true;
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 4dac16e..6dc19e8 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.FJJT/wms/WMSHelper.cs
@@ -392,6 +392,20 @@
            return db.Insertable<AlarmRecord>(alarmRecord).ExecuteCommand()>0;
         }
 
+        public static bool addRfidAnomalyRecord(string rfid ,int anomalyType ,string locCode ,string taskNo) 
+        {
+            var db = new SqlHelper<object>().GetInstance();
+            RfidAnomalyRecord anomalyRecord = new RfidAnomalyRecord()
+            {
+                S_RFID = rfid,
+                N_ANOMALY_TYPE = anomalyType,
+                S_ANOMALY_TYPE = RfidAnomalyRecord.getAnomalyType(anomalyType),
+                S_LOC_CODE = locCode,
+                S_TASK_NO = taskNo
+            };
+            return db.Insertable<AlarmRecord>(anomalyRecord).ExecuteCommand() > 0;
+        }
+
         /// <summary>
         /// 鏌ヨ鎴愬瀷鏈虹嚎杈�         /// </summary>
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
index 27e6ed6..7777326 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/api/ApiHelper.cs
@@ -36,7 +36,7 @@
             ReturnResult result = new ReturnResult();
             try
             {
-                if (model.taskType == "鏈哄彴鍗婂埗鍝佸叆搴� || model.taskType == "鎴愬瀷鏈轰綑鏂欏洖搴�) 
+                if (model.taskType.Contains("鏈哄彴鍗婂埗鍝佸叆搴�) || model.taskType.Contains("鎴愬瀷鏈轰綑鏂欏叆搴�)) 
                 {
                     var itemInfos = model.itemInfo;
                     if (itemInfos == null || itemInfos.Count == 0)
@@ -61,6 +61,7 @@
 
                             // 璁$畻鐢熸晥鏃堕棿銆佸け鏁堟椂闂�                             var overage = WMSHelper.getOverage(item.bc_entried);
+                            LogHelper.Info($"璁$畻鐢熸晥鏃堕棿銆佸け鏁堟椂闂达紝杩斿洖鍊硷細{JsonConvert.SerializeObject(overage)}", "WMS");
                             if (overage != null)
                             {
                                 DateTime txndate = DateTime.Parse(item.txndate);
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs
index 3b7c42a..ed693e9 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/process/TaskProcess.cs
@@ -92,6 +92,16 @@
                 if (state == 1102)
                 {
                     LogHelper.Info("鍚慦CS鍙戦�鍙栬揣瀹屾垚瀹夊叏閫�嚭淇″彿", "AGV");
+                    var locCntrRels = LocationHelper.GetLocCntr(cst.S_START_LOC);
+                    if (locCntrRels.Count == 1) 
+                    {
+                        var container = ContainerHelper.GetCntr(locCntrRels[0].S_CNTR_CODE);
+                        if (container != null && container.N_TYPE == 0) 
+                        {
+                            LogHelper.Info("鍙栬揣瀹屾垚鍚庯紝璧风偣璐т綅瀛樺湪姣嶆嫋锛屼笅鍙戞瘝鎷栧叆搴撲换鍔�, "AGV");
+                            ApiHelper.baseTrayInStock(cst.S_START_LOC, mst.S_CODE);
+                        }
+                    }
                     /*result = WCSDispatch.safetyInteraction(cst.S_CODE, cst.S_START_LOC, "2");  //鍙栬揣瀹屾垚瀹夊叏閫�嚭*/
                     result = true;
                 }
diff --git a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/WMSHelper.cs b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/WMSHelper.cs
index e276a42..b6d7694 100644
--- a/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3/HH.WCS.Mobox3.YNJT_BZP/wms/WMSHelper.cs
@@ -943,18 +943,14 @@
             var sql1 = "SELECT get_minhour_bar(@barcode, @mcngrp) AS overage_value";
 
             // 浣跨敤鍖垮悕瀵硅薄浼犻�鍙傛暟
-            var ovg_bar = db.Ado.SqlQuery<int>(sql, new { barcode = bc_entried, mcngrp = "1"});
-            var minhour_bar = db.Ado.SqlQuery<float>(sql1, new { barcode = bc_entried, mcngrp = "1"});
-            if (ovg_bar.Count > 0 && minhour_bar.Count > 0) 
+            var ovg_bar = db.Ado.SqlQuery<int>(sql, new { barcode = bc_entried, mcngrp = "1"}).First();
+            var minhour_bar = db.Ado.SqlQuery<float>(sql1, new { barcode = bc_entried, mcngrp = "1"}).First();
+            Overage overage = new Overage()
             {
-                Overage overage = new Overage()
-                {
-                    MINHOUR = minhour_bar[0],
-                    OVERAGE = ovg_bar[0]
-                };
-                return overage;
-            }
-            return null;
+                MINHOUR = minhour_bar,
+                OVERAGE = ovg_bar
+            };
+            return overage;
         }
 
         /// <summary>
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 7aa1587..aa058eb 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
@@ -48,7 +48,7 @@
                 OffLineRecord record = new OffLineRecord()
                 {
                     S_RFID = model.rfid,
-                    S_DEVICE_NO = model.S_DEVICE_NO,
+                    S_DEVICE_NO = model.deviceNo,
                     N_IS_URGENT = model.isUrgent,
                     T_OFF_TIME = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                     N_IS_FULL = model.isFull,
@@ -948,7 +948,7 @@
         public class OffLineModel
         {
             public string rfid { get; set; } // 鎵樼洏鍙�-            public string S_DEVICE_NO { get; set; } // 鏈哄彴鍙�+            public string deviceNo { get; set; } // 鏈哄彴鍙�             public int isUrgent { get; set; } // N_IS_URGENT 鏄惁鍔犳�锛�.鍚�1.鏄級
             public int isFull { get; set; } // 鏄惁婊℃嫋 0.鍚�1.鏄�         }

--
Gitblit v1.9.1