From 382c009ba2bb04374468e9584f262d6682841d9b Mon Sep 17 00:00:00 2001
From: pengmn <pmn@HanInfo>
Date: 星期三, 28 五月 2025 18:09:41 +0800
Subject: [PATCH] 杭氧测试流程

---
 HH.WCS.Mobox3.HangYang/wms/WMSHelper.cs |  121 ++++++++++++++++++++++++++++++----------
 1 files changed, 90 insertions(+), 31 deletions(-)

diff --git a/HH.WCS.Mobox3.HangYang/wms/WMSHelper.cs b/HH.WCS.Mobox3.HangYang/wms/WMSHelper.cs
index e083743..5270858 100644
--- a/HH.WCS.Mobox3.HangYang/wms/WMSHelper.cs
+++ b/HH.WCS.Mobox3.HangYang/wms/WMSHelper.cs
@@ -11,6 +11,7 @@
 using System;
 using System.Collections.Concurrent;
 using System.Collections.Generic;
+using System.IdentityModel.Protocols.WSTrust;
 using System.Linq;
 using System.Linq.Expressions;
 using System.Reflection;
@@ -635,7 +636,15 @@
             }
             catch (Exception ex)
             {
-                LogHelper.Error("鍒涘缓鍏ュ簱鍗曞け璐�, ex, "鏉哀");
+                var sugarEx = ex as SqlSugar.SqlSugarException;
+                if (sugarEx != null)
+                {
+                    LogHelper.Error($"鍒涘缓鍏ュ簱鍗昐QL閿欒: {sugarEx.Sql}", sugarEx, "鏉哀");
+                }
+                else
+                {
+                    LogHelper.Error($"鍒涘缓鍏ュ簱鍗曞け璐�{ex.Message}", ex, "鏉哀");
+                }
                 return false;
             }
 
@@ -664,7 +673,7 @@
             }
             catch (Exception ex)
             {
-                LogHelper.Error("鍒涘缓鍑哄簱鍗曞け璐�, ex, "鏉哀");
+                LogHelper.Error($"鍒涘缓鍑哄簱鍗曞け璐�{ex.Message}", ex, "鏉哀");
                 return false;
             }
 
@@ -730,6 +739,28 @@
         }
 
         /// <summary>
+        /// 鏍规嵁鎵樼洏鏌ヨ璐т綅鏄庣粏
+        /// </summary>
+        /// <param name="trayCode">鎵樼洏鍙�/param>
+        /// <returns></returns>
+        internal static LocCntrRel GetCntrLoc(string trayCode)
+        {
+            var db = new SqlHelper<object>().GetInstance();
+           
+            var locCntr = db.Queryable<LocCntrRel>().Where(a => a.S_CNTR_CODE.Trim() == trayCode).First();
+            var locList = db.Queryable<Location>().Where(p => p.S_CODE == locCntr.S_LOC_CODE 
+            && p.N_CURRENT_NUM == p.N_CAPACITY 
+            && p.S_LOCK_STATE.Trim() == "鏃�
+            && p.S_AREA_CODE == "JXHCQ").First();
+            if (locList == null)
+            {
+                return null;
+            }
+            return locCntr;
+
+        }
+
+        /// <summary>
         /// 浠诲姟鐘舵�杞崲
         /// </summary>
         /// <param name="state">鐘舵�鍙�/param>
@@ -755,28 +786,48 @@
         /// </summary>
         /// <param name="state">閰嶇洏鍗曠姸鎬�/param>
         /// <returns></returns>
-        internal static List<DistributionCntr> GetPickingListByState(string state)
+        internal static List<DistributionCntr> GetPickingListByState(int state)
         {
             var db = new SqlHelper<object>().GetInstance();
-            var distributionCntr = db.Queryable<DistributionCntr>().Where(a => a.S_B_STATE.Trim() == state).ToList();
+            var distributionCntr = db.Queryable<DistributionCntr>().Where(a => a.N_B_STATE == state).ToList();
             return distributionCntr;
+        }
+
+
+        /// <summary>
+        /// 閰嶇洏鍗曠姸鎬佽浆鎹�+        /// </summary>
+        /// <param name="state">鐘舵�鍙�/param>
+        /// <returns></returns>
+        internal static string GetDistributionStateStr(int state)
+        {
+            var status = "";
+            switch (state)
+            {
+                case 1: status = "宸查厤璐�; break;
+                case 2: status = "鍑哄簱涓�; break;
+                case 3: status = "宸插嚭搴�; break;
+                case 4: status = "鍒嗘嫞瀹屾垚 "; break;
+
+            }
+            return status;
         }
 
         /// <summary>
         /// 淇敼閰嶇洏鍗曠姸鎬�         /// </summary>
+        /// <param name="taskState">浣滀笟鐘舵�</param>
         /// <param name="state">鐘舵�</param>
         /// <param name="trayCode">鎵樼洏鍙�/param>
         /// <returns></returns>
-        internal static bool UpdateDistributionCntrState(string state,string trayCode)
+        internal static bool UpdateDistributionCntrState(int taskState,int state,string trayCode)
         {
             var db = new SqlHelper<object>().GetInstance();
-            var distributionCntr = db.Queryable<DistributionCntr>().Where(a => a.S_B_STATE.Trim() == "閰嶈揣瀹屾垚" && a.S_CNTR_CODE == trayCode ).First();
+            var distributionCntr = db.Queryable<DistributionCntr>().Where(a => a.N_B_STATE == taskState && a.S_CNTR_CODE == trayCode ).First();
             if (distributionCntr != null)
             {
-
-                distributionCntr.S_B_STATE = state;
-                distributionCntr.N_B_STATE = 2;
+                distributionCntr.N_B_STATE = state;
+                distributionCntr.S_B_STATE = GetDistributionStateStr(state);
                 return db.Updateable<DistributionCntr>(distributionCntr).UpdateColumns(it => new { it.S_B_STATE, it.N_B_STATE }).ExecuteCommand() > 0;
             }
             return false;
@@ -888,7 +939,7 @@
             {
                 var db = new SqlHelper<object>().GetInstance();
                 var locations = db.Queryable<Location>().Where(a => a.S_AREA_CODE == inbound.areaCode).ToList();
-                if(!string.IsNullOrEmpty(inbound.roadWay.ToString()))
+                if(inbound.roadWay != 0)
                 {
                     locations.RemoveAll(s => s.N_ROADWAY != inbound.roadWay);
                 }
@@ -1129,14 +1180,16 @@
                                 else continue;
 
                             }
-                            else
-                            {
-                                //璐т綅涓虹┖鐩存帴鐢熸垚鍑哄簱浠诲姟
-                                tasks.Add(CreateOutboundTask(targetLoc,outboundItem));
-                            }
+                            //else
+                            //{
+                            //    //璐т綅涓虹┖鐩存帴鐢熸垚鍑哄簱浠诲姟
+                            //    tasks.Add(CreateOutboundTask(targetLoc, outboundItem));
+                            //}
                         }
-                        else continue;
-
+                        else
+                        {
+                            continue;
+                        }
                         // 2.2 鐢熸垚鍑哄簱浠诲姟锛堟繁浣嶏級
                         tasks.Add(CreateOutboundTask(targetLoc, outboundItem));
                     }
@@ -1145,6 +1198,7 @@
                         // 3. 闈炲弻娣变綅鐩存帴鍑哄簱
                         tasks.Add(CreateOutboundTask(targetLoc, outboundItem));
                     }
+                    break;
                 }
                 // 4. 浠诲姟鎺掑簭锛氱Щ搴撲换鍔′紭鍏�+ 楂樹紭鍏堢骇浼樺厛
                 return tasks;
@@ -1164,7 +1218,7 @@
                     loc.N_ROADWAY == deepLoc.N_ROADWAY &&
                     loc.N_COL == deepLoc.N_COL &&
                     loc.N_LAYER == deepLoc.N_LAYER &&
-                    loc.N_LOCK_STATE == 0
+                    loc.N_LOCK_STATE == 0 || loc.N_LOCK_STATE == 5
             );
 
             private Location FindBestRelocationTarget(Location outerLoc)
@@ -1232,7 +1286,8 @@
                             _allLocations
                                 .Where(x => x.S_CODE == outerLoc.S_CODE)
                                 .ToList()
-                                .ForEach(x => x.N_LOCK_STATE = 3);
+                                .ForEach(x => x.N_LOCK_STATE = 5);
+                            //鏍囪娣变綅鐨勫渚ц揣浣嶄负5
                         }
                     }
                 }
@@ -1263,7 +1318,7 @@
         /// 鏍规嵁浠诲姟鍗囬噺
         /// </summary>
         /// <param name="task"></param>
-        internal static void AddChange(WCSTask task)
+        internal static bool AddChange(WCSTask task)
         {
             var db = new SqlHelper<object>().GetInstance();
             var result = true;
@@ -1349,34 +1404,36 @@
             catch (Exception ex)
             {
                 LogHelper.Error($"浠撳簱鍗囬噺寮傚父 寮傚父淇℃伅={ex.Message}", ex);
+                result = false;
             }
+            return result;
         }
 
         /// <summary>
         /// 鏍规嵁浠诲姟闄嶉噺
         /// </summary>
         /// <param name="task"></param>
-        internal static void DeleteChange(WCSTask task)
+        internal static bool DeleteChange(WCSTask wmstask)
         {
             var db = new SqlHelper<object>().GetInstance();
             var result = true;
             try
             {
-                var wmstask = db.Queryable<WMSTask>().Where(a => a.S_CODE == task.S_OP_CODE).First();
+                //var wmstask = db.Queryable<WCSTask>().Where(a => a == task.S_OP_CODE).First();
                 if (wmstask != null)
                 {
-                    var itemlist = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE).ToList();
+                    var itemlist = db.Queryable<CntrItemDetail>().Where(a => a.S_CNTR_CODE == wmstask.S_CNTR_CODE).ToList();
                     if (itemlist.Count > 0)
                     {
                         var url = Settings.MoboxSeverUrl + "inventory/AddChange";
-                        //浠撳簱閲忚〃鍗囬噺
-                        var req = new AddChangeModel { op_type = 4 };
-                        //搴撳尯閲忚〃鍗囬噺
-                        var req2 = new AddChangeModel { op_type = 7 };
+                        //浠撳簱閲忚〃闄嶉噺
+                        var req = new AddChangeModel { op_type = 8 };
+                        //搴撳尯閲忚〃闄嶉噺
+                        var req2 = new AddChangeModel { op_type = 9 };
                         itemlist.ForEach(a =>
                         {
                             LogHelper.Info($"濉厖鏁版嵁");
-                            LogHelper.Info($"鍑忎粨搴撻噺琛ㄦ暟鎹�浠撳簱{task.S_END_WH} 鐗╂枡缂栫爜{a.S_ITEM_CODE} 鐗╂枡鍚嶇О{a.S_ITEM_NAME} 鏁伴噺{a.F_QTY}");
+                            LogHelper.Info($"鍑忎粨搴撻噺琛ㄦ暟鎹�浠撳簱{wmstask.S_START_WH} 鐗╂枡缂栫爜{a.S_ITEM_CODE} 鐗╂枡鍚嶇О{a.S_ITEM_NAME} 鏁伴噺{a.F_QTY}");
                             req.item_info.Add(new AddChangeModel.itemModel
                             {
                                 wh_code = wmstask.S_START_WH,
@@ -1384,7 +1441,7 @@
                                 item_name = a.S_ITEM_NAME,
                                 qty = a.F_QTY
                             });
-                            LogHelper.Info($"鍑忓簱鍖洪噺琛ㄦ暟鎹�搴撳尯{task.S_END_AREA} 鐗╂枡缂栫爜{a.S_ITEM_CODE} 鐗╂枡鍚嶇О{a.S_ITEM_NAME} 鏁伴噺{a.F_QTY}");
+                            LogHelper.Info($"鍑忓簱鍖洪噺琛ㄦ暟鎹�搴撳尯{wmstask.S_START_AREA} 鐗╂枡缂栫爜{a.S_ITEM_CODE} 鐗╂枡鍚嶇О{a.S_ITEM_NAME} 鏁伴噺{a.F_QTY}");
                             req2.item_info.Add(new AddChangeModel.itemModel
                             {
                                 wh_code = wmstask.S_START_WH,
@@ -1440,15 +1497,17 @@
                         }
 
                     }
-                    else LogHelper.Info($"鎵樼洏{task.S_CNTR_CODE} 鍦ㄥ鍣ㄨ揣鍝佹槑缁嗕腑鎵句笉鍒版暟鎹�);
+                    else LogHelper.Info($"鎵樼洏{wmstask.S_CNTR_CODE} 鍦ㄥ鍣ㄨ揣鍝佹槑缁嗕腑鎵句笉鍒版暟鎹�);
                 }
-                else LogHelper.Info($"鏈壘鍒颁换鍔task.S_CODE} 瀵瑰簲鐨勪綔涓�);
+                else LogHelper.Info($"鏈壘鍒颁换鍔wmstask.S_CODE} 瀵瑰簲鐨勪换鍔�);
 
             }
             catch (Exception ex)
             {
                 LogHelper.Error($"浠撳簱闄嶉噺寮傚父 寮傚父淇℃伅={ex.Message}", ex);
+                result = false;
             }
+            return result;
         }
 
 

--
Gitblit v1.9.1