按规则生成单号

单号段生成规则

规则编码规则名称示例规则详解
RULE_ITEM_A组织代码ISC
RULE_ITEM_B年月日20220401
RULE_ITEM_C时分秒120304
RULE_ITEM_D流水号001从001开始自增的长度为3的数字,单号前缀不同流水号不同

单号生成规则

组别规则编码排序号是否有效创建时间失效时间
N002RULE_ITEM_A1Y2022-04-01 00:00:00
N002RULE_ITEM_B2Y2022-04-01 00:00:00
N002RULE_ITEM_D3Y2022-04-01 00:00:00
N001RULE_ITEM_A1N2021-04-01 00:00:002022-04-01 00:00:00
N001RULE_ITEM_B2N2021-04-01 00:00:002022-04-01 00:00:00
N001RULE_ITEM_C2N2021-04-01 00:00:002022-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 单号;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值