From fc25dda9baf3b5f4df23d35914f3dd343cf492e3 Mon Sep 17 00:00:00 2001 From: kazelee <1847801760@qq.com> Date: 星期一, 28 七月 2025 17:30:21 +0800 Subject: [PATCH] 优化WCSHelper / 序列号生成逻辑 , 添加强制任务处理模块 --- wms/SYSHelper.cs | 70 +++++++++++++---------------------- 1 files changed, 26 insertions(+), 44 deletions(-) diff --git a/wms/SYSHelper.cs b/wms/SYSHelper.cs index 8044904..9935a0c 100644 --- a/wms/SYSHelper.cs +++ b/wms/SYSHelper.cs @@ -9,62 +9,44 @@ using System.Threading.Tasks; namespace HH.WCS.Mobox3.DSZSH.wms { - internal class SYSHelper { + /// <summary> + /// [ 搴忓垪鍙风敓鎴�] 甯姪绫�+ /// </summary> + 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> + /// <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')}"; + } + } + + 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) { - //LogHelper.Info($"set cn_n_max {sId.CN_N_MAX}"); + 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; } - - //if (db.Updateable<OI_SYS_MAXID>(sId).UpdateColumns(it => new { it.CN_N_MAX, it.CN_T_LAST}).ExecuteCommand() > 0) { - // result = sId.CN_N_MAX; - //} - - //if (db.Updateable<OI_SYS_MAXID>() - // .SetColumns(it => it.CN_N_MAX == sId.CN_N_MAX && it.CN_T_LAST == sId.CN_T_LAST) - // .Where(it => it.CN_S_TYPE == sId.CN_S_TYPE && it.CN_S_PRE == sId.CN_S_TYPE) - // .ExecuteCommand() > 0) { - // result = sId.CN_N_MAX; - //} - - //var parameters = new[] { - // new SugarParameter("@CN_N_MAX", sId.CN_N_MAX), - // new SugarParameter("@CN_T_LAST", sId.CN_T_LAST), - // new SugarParameter("@CN_S_TYPE", sId.CN_S_TYPE), - // new SugarParameter("@CN_S_PRE", sId.CN_S_TYPE) - //}; - - //var sql = @"UPDATE OI_SYS_MAXID - // SET CN_N_MAX = @CN_N_MAX, CN_T_LAST = @CN_T_LAST - // WHERE CN_S_TYPE = @CN_S_TYPE AND CN_S_PRE = @CN_S_PRE"; - - //if (db.Ado.ExecuteCommand(sql, parameters) > 0) { - // result = sId.CN_N_MAX; - // LogHelper.Info($"set cn_n_max {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<OI_SYS_MAXID>(sId).ExecuteCommand() > 0 ? 1 : 0; - + result = db.Insertable(sId).ExecuteCommand() > 0 ? 1 : 0; } } return result; -- Gitblit v1.9.1