Class SerialNumberContext

java.lang.Object
io.leandev.appfuse.serial.SerialNumberContext

public final class SerialNumberContext extends Object

序號生成上下文

封裝序號生成所需的參數,支援多種序號格式的配置。

常見序號格式

  • 訂單編號:{租戶代碼}-{YYYYMMDD}-{序號} → T001-20250113-0001
  • 客戶編號:{租戶代碼}-CUST-{序號} → T001-CUST-0001
  • 產品編號:{前綴}{序號} → PRD-0001

使用範例

// 帶日期的訂單編號
SerialNumberContext orderContext = SerialNumberContext.builder()
    .tenantCode("T001")
    .entityType("Order")
    .dateFormat("yyyyMMdd")
    .sequenceLength(4)
    .build();

// 簡單前綴的客戶編號
SerialNumberContext customerContext = SerialNumberContext.builder()
    .tenantCode("T001")
    .entityType("Customer")
    .prefix("T001-CUST-")
    .sequenceLength(4)
    .build();

// 使用 SerialNumberGenerator 生成
String orderNumber = generator.generate(orderContext);
String customerNumber = generator.generate(customerContext);
See Also:
  • Method Details

    • builder

      public static SerialNumberContext.Builder builder()
      建立 Builder
      Returns:
      Builder 實例
    • of

      public static SerialNumberContext of(String tenantCode, String prefix, int sequenceLength)
      快速建立簡單上下文
      Parameters:
      tenantCode - 租戶代碼
      prefix - 前綴
      sequenceLength - 序號長度
      Returns:
      SerialNumberContext 實例
    • ofDated

      public static SerialNumberContext ofDated(String tenantCode, String entityType, String dateFormat, int sequenceLength)
      快速建立帶日期的上下文
      Parameters:
      tenantCode - 租戶代碼
      entityType - 實體類型
      dateFormat - 日期格式
      sequenceLength - 序號長度
      Returns:
      SerialNumberContext 實例
    • tenantCode

      public String tenantCode()
      取得租戶代碼
      Returns:
      租戶代碼
    • entityType

      public String entityType()
      取得實體類型
      Returns:
      實體類型(如 "Order", "Customer")
    • prefix

      public String prefix()
      取得前綴
      Returns:
      前綴字串
    • dateFormat

      public String dateFormat()
      取得日期格式
      Returns:
      日期格式(如 "yyyyMMdd")
    • sequenceLength

      public int sequenceLength()
      取得序號長度
      Returns:
      序號長度(補零用)
    • referenceDate

      public LocalDate referenceDate()
      取得參考日期
      Returns:
      參考日期,預設為當天
    • datePart

      public String datePart()

      取得格式化的日期部分

      如果 dateFormat 為 null,返回空字串。

      Returns:
      格式化的日期字串
    • fullPrefix

      public String fullPrefix()

      建構完整的前綴(包含租戶代碼和日期)

      格式:{tenantCode}-{datePart}-

      Returns:
      完整前綴
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object