From 2ca90a404fa1ab94eb6374f50c6ddd47a2b7f0e6 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期四, 31 七月 2025 17:23:57 +0800
Subject: [PATCH] 删除有问题的TCP旧代码, 优化事务处理和ERP数据模型

---
 wms/WCSHelper.cs |  146 ++++++++++++++++++++++++++++++++----------------
 1 files changed, 96 insertions(+), 50 deletions(-)

diff --git a/wms/WCSHelper.cs b/wms/WCSHelper.cs
index 63ff4e4..c18f8d9 100644
--- a/wms/WCSHelper.cs
+++ b/wms/WCSHelper.cs
@@ -1,60 +1,58 @@
-锘縰sing HH.WCS.Mobox3.DSZSH.models;
-using HH.WCS.Mobox3.DSZSH.util;
-using HH.WCS.Mobox3.DSZSH;
-
-using Newtonsoft.Json;
-
-using System;
+锘縰sing System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using HH.WCS.Mobox3.DSZSH.models;
+using HH.WCS.Mobox3.DSZSH.util;
 
 namespace HH.WCS.Mobox3.DSZSH.wms {
     /// <summary>
     /// [ 閫氱敤涓氬姟 ] 甯姪绫�     /// </summary>
-    internal class WCSHelper {
-        internal static string GenerateTaskNo() {
-            var id = SYSHelper.GetSerialNumber("浠诲姟鍙�, "TN");
-            var date = DateTime.Now.ToString("yyMMdd");
-            return $"TN{date}{id.ToString().PadLeft(4, '0')}";
-        }
-        internal static bool UpdateStatus(TN_Task task, string status) {
-            var res = false;
-            var db = new SqlHelper<TN_Task>().GetInstance();
-            task.S_B_STATE = status;
-            res = db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand() > 0;
-            return res;
-        }
-        internal static bool UpdateStatus(TN_Task task) {
-            var res = false;
-            var db = new SqlHelper<TN_Task>().GetInstance();
-            task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE);
-            task.T_MODIFY = DateTime.Now;
-            res = db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_MODIFY }).ExecuteCommand() > 0;
-            return res;
-        }
-        internal static bool UpdateEQNo(TN_Task task) {
-            var res = false;
-            var db = new SqlHelper<TN_Task>().GetInstance();
-            task.T_MODIFY = DateTime.Now;
-            db.Updateable(task).UpdateColumns(it => new { it.S_EQ_TASK_CODE, it.T_MODIFY }).ExecuteCommand();
-            return res;
+    public class WCSHelper {
+        #region LocationHelper
+        private static Dictionary<string, TN_Location> _locationDict = null;
+
+        static WCSHelper() {
+            var db = new SqlHelper<object>().GetInstance();
+
+            try {
+                //鍒濆鍖朙ocation鍔犲叆鍒板瓧鍏哥紦瀛�+                _locationDict = new Dictionary<string, TN_Location>();
+                var locList = db.Queryable<TN_Location>().ToList();
+                foreach (var loc in locList) {
+                    if (!_locationDict.ContainsKey(loc.S_CODE)) {
+                        _locationDict.Add(loc.S_CODE, loc);
+                    }
+                }
+            }
+            catch (Exception ex) {
+                LogHelper.InfoEx(ex, "WCSHelper:鍒濆鍖朙ocation鍒板瓧鍏哥紦瀛�);
+            }
         }
 
-        internal static TN_Task GetTask(string no) {
-            var db = new SqlHelper<TN_Task>().GetInstance();
-            var task = db.Queryable<TN_Task>().Where(a => a.S_CODE == no).First();
-            return task;
+        public static TN_Location GetLocation(string locCode, bool useDict = true) {
+            if (useDict && _locationDict.Keys.Contains(locCode)) {
+                return _locationDict[locCode.Trim()];
+            }
+
+            var db = new SqlHelper<object>().GetInstance();
+            return db.Queryable<TN_Location>().Where(l => l.S_CODE == locCode).First();
         }
 
-        public static string GetAgvSite(string locCode) {
+        public static string GetAgvSite(string locCode, bool useDict = true) {
+            if (useDict && _locationDict.Keys.Contains(locCode)) {
+                return _locationDict[locCode.Trim()].S_AGV_SITE;
+            }
+
             var db = new SqlHelper<object>().GetInstance();
             var loc = db.Queryable<TN_Location>().Where(l => l.S_CODE == locCode).First();
             return loc == null ? "0" : loc.S_AGV_SITE;
         }
-
+        #endregion
+        
+        private const bool __瀹瑰櫒鏌ヨ缁戝畾妯″潡__ = false; // 浠呯敤浜庡垎娈�娌℃湁瀹炶川鎰忎箟
         #region 瀹瑰櫒鐩稿叧淇℃伅 鏌ヨ / 缁戝畾
         /// <summary>
         /// 鏍规嵁 [ 瀹瑰櫒鍙�] , 鏌ヨ褰撳墠瀹瑰櫒鍏宠仈鐨�[ 璐т綅 ] [ 璐т綅瀹瑰櫒 ] [ 瀹瑰櫒璐у搧 ] 淇℃伅 ( 鍙煡璇�1 鏉�)
@@ -134,9 +132,10 @@
             loc.T_MODIFY = DateTime.Now;
 
             return locCntrRel;
-        } 
+        }
         #endregion
 
+        private const bool __鍒涘缓浠诲姟妯″潡__ = false; // 浠呯敤浜庡垎娈�娌℃湁瀹炶川鎰忎箟
         #region 璧风偣 / 缁堢偣璐т綅閿�+ 鍒涘缓浠诲姟
         /// <summary>
         /// 璧风偣鍑哄簱閿�@@ -177,11 +176,22 @@
         }
 
         /// <summary>
+        /// 鐢熸垚浠诲姟鍙�閫氬父鍙BuildTask浣跨敤,鏁呰涓虹鏈�
+        /// </summary>
+        /// <returns></returns>
+        private static string GenerateTaskNo() {
+            //var id = SYSHelper.GetSerialNumber("浠诲姟鍙�, "TN");
+            //var date = DateTime.Now.ToString("yyMMdd");
+            //return $"TN{date}{id.ToString().PadLeft(4, '0')}";
+            return SYSHelper.GenerateSN("浠诲姟鍙�, "TN", "yyMMdd");
+        }
+
+        /// <summary>
         /// 鍒涘缓浠诲姟
         /// </summary>
         /// <remarks><b>[ 瑕佹眰 ]</b> startLoc / endLoc 鈮�null ; startLoc / endLoc 瀛樺湪 S_CODE , S_AREA_CODE 瀛楁</remarks>
-        /// <param name="startLoc">璧风偣璐т綅 : 鑷冲皯鎻愪緵:S_CODE , S_AREA_CODE</param>
-        /// <param name="endLoc">缁堢偣璐т綅 : 鑷冲皯鎻愪緵:S_CODE , S_AREA_CODE</param>
+        /// <param name="startLoc">璧风偣璐т綅 : 鑷冲皯鎻愪緵 : S_CODE , S_AREA_CODE</param>
+        /// <param name="endLoc">缁堢偣璐т綅 : 鑷冲皯鎻愪緵 : S_CODE , S_AREA_CODE</param>
         /// <param name="cntId">瀹瑰櫒鍙�/param>
         /// <param name="type">浠诲姟绫诲瀷 ( 鍚嶇О )</param>
         /// <param name="pri">浼樺厛绾�/param>
@@ -217,21 +227,56 @@
         /// <param name="pri">浼樺厛绾�/param>
         /// <param name="agv">AGV 绫诲瀷</param>
         /// <returns></returns>
-        public static TN_Task BuildTaskWithLocLock(TN_Location startLoc, TN_Location endLoc, string cntId, string type, int pri = 3, int agv = 1) {
+        public static TN_Task BuildTaskAndLockLoc(TN_Location startLoc, TN_Location endLoc, string cntId, string type, 
+            int pri = 3, int agv = 1) {
+
             var task = BuildTask(startLoc, endLoc, cntId, type, pri);
             LockStartLoc(startLoc, task.S_CODE);
             LockEndLoc(endLoc, task.S_CODE);
 
             return task;
-        } 
+        }
         #endregion
 
+        private const bool __浠诲姟鍒嗗彂澶勭悊妯″潡__ = false; // 浠呯敤浜庡垎娈�娌℃湁瀹炶川鎰忎箟
+        #region 浠诲姟鍒嗗彂 / 鎵ц / 璁板綍
         internal static bool CheckActionRecordExist(string no, int code) {
             var db = new SqlHelper<TN_Task_Action>().GetInstance();
             return db.Queryable<TN_Task_Action>().Count(a => a.S_TASK_CODE == no && a.N_ACTION_CODE == code) > 0;
         }
 
-        internal static void Begin(TN_Task task, string forklift_no) {
+        internal static bool UpdateTaskState(TN_Task task, string state) {
+            var res = false;
+            var db = new SqlHelper<TN_Task>().GetInstance();
+            task.S_B_STATE = state;
+            res = db.Updateable(task).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand() > 0;
+            return res;
+        }
+
+        internal static bool UpdateTaskState(TN_Task task) {
+            var res = false;
+            var db = new SqlHelper<TN_Task>().GetInstance();
+            task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE);
+            task.T_MODIFY = DateTime.Now;
+            res = db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_MODIFY }).ExecuteCommand() > 0;
+            return res;
+        }
+
+        internal static bool UpdateEqTaskNo(TN_Task task) {
+            var res = false;
+            var db = new SqlHelper<TN_Task>().GetInstance();
+            task.T_MODIFY = DateTime.Now;
+            res = db.Updateable(task).UpdateColumns(it => new { it.S_EQ_TASK_CODE, it.T_MODIFY }).ExecuteCommand() > 0;
+            return res;
+        }
+
+        internal static TN_Task GetTask(string taskNo) {
+            var db = new SqlHelper<TN_Task>().GetInstance();
+            var task = db.Queryable<TN_Task>().Where(a => a.S_CODE == taskNo).First();
+            return task;
+        }
+
+        internal static void SetTaskBegin(TN_Task task, string forklift_no) {
             var db = new SqlHelper<TN_Task>().GetInstance();
             if (task != null) {
                 if (task.N_B_STATE == 1 || task.N_B_STATE == 0) { // 娣诲姞褰搕ask鐘舵�涓�鏃朵篃鍙互瑙﹀彂
@@ -243,7 +288,7 @@
                 }
             }
         }
-        internal static void End(TN_Task task) {
+        internal static void SetTaskEnd(TN_Task task) {
             var db = new SqlHelper<TN_Task>().GetInstance();
             if (task != null) {
                 task.N_B_STATE = 3;
@@ -252,10 +297,10 @@
                 db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE, it.T_END_TIME }).ExecuteCommand();
             }
         }
-        internal static void Fail(TN_Task task) {
+        internal static void SetTaskFail(TN_Task task) {
             var db = new SqlHelper<TN_Task>().GetInstance();
             if (task != null) {
-                //鍒ゆ柇鏈夋病鏈夊彇璐у畬鎴�娌℃湁灏卞彉鎴愬け璐ャ�鏈夊彇璐у畬鎴愰粯璁ゅ畬鎴愪簡 (璺熸嵁椤圭洰鑰屽畾,鏈変簺椤圭洰浜哄伐鎷夎蛋浜嗕篃娌℃湁鏀惧埌缁堢偣) 銆�+                //鍒ゆ柇鏈夋病鏈夊彇璐у畬鎴�娌℃湁灏卞彉鎴愬け璐�鏈夊彇璐у畬鎴愰粯璁ゅ畬鎴愪簡 (璺熸嵁椤圭洰鑰屽畾,鏈変簺椤圭洰浜哄伐鎷夎蛋浜嗕篃娌℃湁鏀惧埌缁堢偣)
                 task.N_B_STATE = 4;
                 task.S_B_STATE = TN_Task.GetStateStr(task.N_B_STATE);
                 db.Updateable(task).UpdateColumns(it => new { it.N_B_STATE, it.S_B_STATE }).ExecuteCommand();
@@ -277,7 +322,8 @@
         internal static List<TN_Task> GetWaitingTaskList() {
             var db = new SqlHelper<object>().GetInstance();
             return db.Queryable<TN_Task>().Where(a => a.N_B_STATE == 0 && (a.S_B_STATE == "绛夊緟" || a.S_B_STATE == "寰呮帹閫�)).ToList();
-        }
+        } 
+        #endregion
     }
 
     /// <summary>

--
Gitblit v1.9.1