自动生成编码,流水号

首先是SQL:

    <select id="codeList" resultType="java.lang.String">
        SELECT code
        FROM 表名
        WHERE EXTRACT(YEAR FROM CREATE_DATE) = EXTRACT(YEAR FROM CURRENT_DATE);
    </select>

从表中选择那些其CREATE_DATE字段所在年份与当前日期年份相等的记录的code
 

接下来是java部分的代码


    private static textService textService;
    @Autowired
    public  void setTextService(textService textService ) {
        PrimaryIdGenerate.textService = textService ;
    }


 public synchronized String getYaPlanId() {
        // code-202211200001
        String ID_format = "code-%d%s";

        String PrimaryCode = "";
        List<Integer> codeList = Lists.newArrayList();

        List<String> coderList = textService.planIdList();
        if (coderList.size() == 0) {
            String date = LocalDate.now().toString();
            String replaced = date.replace("-", "");
            PrimaryCode = String.format(ID_format, Integer.parseInt(replaced), "0001");
        } else {
            for (String str : coderList) {

                String[] split = str.split("-");
                String year = split[1];
                String code = year.substring(year.length() - 4);
            
                codeList.add(Integer.valueOf(code));

            }
            Integer max = Collections.max(codeList) + 1;
            String format = String.format("%0" + 4 + "d", max);

            String date = LocalDate.now().toString();
            String replaced = date.replace("-", "");
            PrimaryCode = String.format(ID_format, Integer.parseInt(replaced), format);
        }
        return PrimaryCode;
    }

上述代码的流水号格式:code + 年月日 + 0001(四位自增流水号),可根据需求更改
至于如何调用,就是service直接点方法咯

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值