wms_serve_m_jingwangchengpin/WmsMobileServe/Utils/UUIDUtils.cs
2025-01-08 15:43:26 +08:00

53 lines
1.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}