namespace WmsMobileServe.Utils; /// /// 唯一识别号工具 /// 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; /// /// 返回一个唯一识别号 以时间戳为基础 /// /// /// /// 这方法产生的ID会短一点,但是单位时间内产生的数量较少 /// 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 }