fix(lastleg): prevent transfer business number collisions
This commit is contained in:
@@ -47,6 +47,11 @@ public class LastlegOrderNoGenerator {
|
||||
// Return numbers are independent business identifiers, not truncated database IDs.
|
||||
// Keep every UUID bit; the longest result (RETU + 25 base-36 digits) fits VARCHAR(32).
|
||||
if (returnPrefix != null) return returnPrefix + "-" + encodeReturnUuid(UUID.randomUUID());
|
||||
// Transfer numbers also identify synthetic inbound events globally. Truncating
|
||||
// a database ID to six digits can collide between unrelated fresh transfers.
|
||||
if ("TRANSFER".equals(code) || "WAREHOUSE_TRANSFER".equals(code)) {
|
||||
return "WT-" + encodeReturnUuid(UUID.randomUUID());
|
||||
}
|
||||
String type = normalizeType(businessType);
|
||||
return type + "-" + warehouseCode(warehouse) + "-"
|
||||
+ LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE) + "-"
|
||||
|
||||
Reference in New Issue
Block a user