| | |
| | | MesMdAutoCodeContext context) { |
| | | // 需求:所有业务编码统一为「16 位纯数字」,且全系统唯一。 |
| | | // 因此不再按规则分段拼装(固定字符/日期段会带入字母),改为取全系统统一自增序列。 |
| | | Long no = stringRedisTemplate.opsForValue().increment(BizNoUtils.GLOBAL_SEQ_KEY); |
| | | return BizNoUtils.format(no); |
| | | // 随机生成 16 位纯数字编码,并用 Redis 集合查重,保证全系统唯一(不使用自增/顺序) |
| | | for (int i = 0; i < BizNoUtils.MAX_RETRY; i++) { |
| | | String code = BizNoUtils.randomCode(); |
| | | Long added = stringRedisTemplate.opsForSet().add(BizNoUtils.USED_SET_KEY, code); |
| | | if (added != null && added > 0) { |
| | | return code; |
| | | } |
| | | } |
| | | throw new IllegalStateException("生成唯一业务编码失败,请重试"); |
| | | } |
| | | |
| | | /** |