From 0ed390381862dea0c7fd0210d16017eb09f12da4 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期三, 30 七月 2025 17:27:27 +0800
Subject: [PATCH] 封装插入容器表等业务代码, 修复部分底层旧框架方法问题

---
 wms/SYSHelper.cs |   62 +++++++++++++++++++++----------
 1 files changed, 42 insertions(+), 20 deletions(-)

diff --git a/wms/SYSHelper.cs b/wms/SYSHelper.cs
index fd6c4a8..0cc3bfa 100644
--- a/wms/SYSHelper.cs
+++ b/wms/SYSHelper.cs
@@ -1,48 +1,70 @@
-锘縰sing HH.WCS.Mobox3.DSZSH.util;
-
-using SqlSugar;
-
-using System;
+锘縰sing System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using HH.WCS.Mobox3.DSZSH.util;
+using SqlSugar;
 
 namespace HH.WCS.Mobox3.DSZSH.wms {
     /// <summary>
-    /// 搴忓垪鍙风敓鎴愬府鍔╃被 (鍚嶇О/鍛藉悕绌洪棿涓哄巻鍙查仐鐣欓棶棰�
+    /// [ 搴忓垪鍙风敓鎴�] 甯姪绫�     /// </summary>
-    internal class SYSHelper {
+    public class SYSHelper {
         private static object locker = new object();
-        internal static int GetSerialNumber(string snType, string prefix) {
+        /// <summary>
+        /// <c>"{prefix}-{DateTime.Now.ToString(dateFormat)}-{id.ToString().PadLeft(length,'0')}"</c>
+        /// </summary>
+        /// <param name="snType"></param>
+        /// <param name="prefix"></param>
+        /// <param name="dateFormat"></param>
+        /// <param name="length"></param>
+        /// <example><code><![CDATA[
+        /// private static string GenerateOrderNo(string snType, string prefix) {
+        ///     //var id = SYSHelper.GetSerialNumber(snType, prefix);
+        ///     //var date = DateTime.Now.ToString("yyMMdd");
+        ///     //return $"{prefix}{date}-{id.ToString().PadLeft(4, '0')}";
+        ///     return SYSHelper.GenerateSN(snType, prefix, "yyMMdd");
+        /// }
+        /// ]]></code></example>
+        /// <returns></returns>
+        public static string GenerateSN(string snType, string prefix, string dateFormat = "yyMM", int length = 4) {
+            var header = $"{prefix}{DateTime.Now.ToString(dateFormat)}-";
+            var res = GetSerialNumber(snType, header);
+            if (res == 0) return "";
+            else {
+                return $"{header}{res.ToString().PadLeft(length, '0')}";
+            }
+        }
+        //鍘熸鏋舵柟娉�涓嶄細鎸夋棩鏇存柊MAXID,鐜板湪璁句负绉佹湁闅愯棌,榛樿璋冪敤灏佽鍚庣殑GenerateSN鏂规硶
+        private static int GetSerialNumber(string snType, string prefix) {
             int result = 0;
             lock (locker) {
                 var db = new SqlHelper<object>().GetInstance();
                 var sId = db.Queryable<OI_SYS_MAXID>().Where(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix).First();
                 if (sId != null) {
-
-                    if (sId.CN_T_LAST < DateTime.Today) {
-                        sId.CN_N_MAX = 1;
-                    }
-                    else {
-                        sId.CN_N_MAX++;
-                    }
-
-                    sId.CN_T_LAST = DateTime.Now;
-                    if (db.Ado.ExecuteCommand($"update OI_SYS_MAXID set CN_N_MAX={sId.CN_N_MAX}, CN_T_LAST='{sId.CN_T_LAST}' where CN_S_TYPE='{snType}' and CN_S_PRE='{prefix}' ") > 0) {
+                    //鍘熸鏋堕�杈�鏇存帴杩慚obox鐨勫簭鍒楀彿鐢熸垚鏂规硶)
+                    sId.CN_N_MAX++;
+                    if (db.Ado.ExecuteCommand($"update OI_SYS_MAXID set CN_N_MAX={sId.CN_N_MAX} " +
+                        $"where CN_S_TYPE='{snType}' and CN_S_PRE='{prefix}' ") > 0) {
                         result = sId.CN_N_MAX;
                     }
+                    //鎸夋棩閲嶇疆MAXID鐨勯�杈�鐜颁笉鑰冭檻浣跨敤)
+                    //sId.CN_N_MAX = sId.CN_T_LAST < DateTime.Today ? 1 : sId.CN_N_MAX + 1;
+                    //sId.CN_T_LAST = DateTime.Now;
+                    //if (db.Ado.ExecuteCommand($"update OI_SYS_MAXID set CN_N_MAX={sId.CN_N_MAX}, CN_T_LAST='{sId.CN_T_LAST}' " +
+                    //    $"where CN_S_TYPE='{snType}' and CN_S_PRE='{prefix}' ") > 0) {
+                    //    result = sId.CN_N_MAX;
+                    //}
                 }
                 else {
                     //鎻掑叆琛�                     sId = new OI_SYS_MAXID { CN_S_TYPE = snType, CN_S_PRE = prefix, CN_N_MAX = 1 };
                     result = db.Insertable(sId).ExecuteCommand() > 0 ? 1 : 0;
-
                 }
             }
             return result;
         }
-
         [SugarTable("dbo.OI_SYS_MAXID")]
         public class OI_SYS_MAXID {
             public string CN_S_TYPE { get; set; }

--
Gitblit v1.9.1