wms_serve_m_jingwangchengpin/WmsMobileServe/Utils/UUIDUtils.cs

53 lines
1.5 KiB
C#
Raw Permalink Normal View History

2025-01-08 15:43:26 +08:00
namespace WmsMobileServe.Utils;
/// <summary>
/// 唯一识别号工具
/// </summary>
public class UUIDUtils
{
const string sysId = "009"; // 系统的编号
#region UUID
private static readonly object getNewUUIDLock2 = new();
private static string lastUUID2 = string.Empty;
private static string lasTimeTick2 = DateTime.Now.ToString("yyyyMMddHHmmssfff");
private static ushort sortUUID2 = 0;
/// <summary>
/// 返回一个唯一识别号 以时间戳为基础
/// </summary>
/// <returns></returns>
/// <remarks>
/// 这方法产生的ID会短一点但是单位时间内产生的数量较少
/// </remarks>
public static string GetNewUUID2()
{
lock (getNewUUIDLock2)
{
while (true)
{
string timeTick = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
if (timeTick != lasTimeTick2)
{
lasTimeTick2 = timeTick;
sortUUID2 = 0;
}
string sort = sortUUID2.ToString().PadLeft(3, '0');
string newUUID = $"{timeTick}{sysId}{sort}";
sortUUID2++;
if (sortUUID2 > 900)
sortUUID2 = 0;
if (newUUID != lastUUID2)
{
lastUUID2 = newUUID;
return newUUID;
}
}
}
}
#endregion
}