单号段生成规则
规则编码 | 规则名称 | 示例 | 规则详解 |
---|---|---|---|
RULE_ITEM_A | 组织代码 | ISC | |
RULE_ITEM_B | 年月日 | 20220401 | |
RULE_ITEM_C | 时分秒 | 120304 | |
RULE_ITEM_D | 流水号 | 001 | 从001开始自增的长度为3的数字,单号前缀不同流水号不同 |
单号生成规则
组别 | 规则编码 | 排序号 | 是否有效 | 创建时间 | 失效时间 |
---|---|---|---|---|---|
N002 | RULE_ITEM_A | 1 | Y | 2022-04-01 00:00:00 | |
N002 | RULE_ITEM_B | 2 | Y | 2022-04-01 00:00:00 | |
N002 | RULE_ITEM_D | 3 | Y | 2022-04-01 00:00:00 | |
N001 | RULE_ITEM_A | 1 | N | 2021-04-01 00:00:00 | 2022-04-01 00:00:00 |
N001 | RULE_ITEM_B | 2 | N | 2021-04-01 00:00:00 | 2022-04-01 00:00:00 |
N001 | RULE_ITEM_C | 2 | N | 2021-04-01 00:00:00 | 2022-04-01 00:00:00 |
-
单号是由多个片段串连组成的
-
每个片段按不同规则生成,片段之间不会重复
生成单号
interface 单号段生成器 {
String 生成单号段(param);
}
@Component("RULE_ITEM_A")
class RuleItemA implements 单号段生成器 {}
@Component("RULE_ITEM_B")
class RuleItemB implements 单号段生成器 {}
@Component("RULE_ITEM_C")
class RuleItemB implements 单号段生成器 {}
@Component("RULE_ITEM_D")
class RuleItemB implements 单号段生成器 {}
@Component
class 单号生成器 {
@Autowired
Map<String, 单号段生成器> map;
List<单号段生成器> list;
@PostConstruct
public void init() {
List items = 单号生成规则.query();
for (item in items) {
单号段生成器 = map.get(item.规则编码);
list.add(单号段生成器);
}
}
public String 生成单号(param) {
String 单号;
for ( 单号段生成器 in list) {
单号 += 单号段生成器.生成单号段(param);
}
return 单号;
}
}