java动态实现生成订单yyyymmdd+三位数(如001)

java动态实现生成订单yyyymmdd+三位数(如001)

思路:

首先向数据库中查询,看有没有传进来的这个日期的数据,按降序只查一条

(日期:记录创建时间)

如果查询的结果为空,说明数据表里没有这个日期的数据,也就是说当前这个日期的订单是第一单,订单号是:日期+001

要是有查询到这个日期的数据,说明这个日期的订单不是第一单,那么查询出来这个日期最大的那条记录,把那条记录的订单号取出来,取出后三位,再加一。再把日期与加一后的订单号后三位进行拼接

数据库中的订单表结构如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PPhPUL34-1605249575696)(/Users/developer04/Library/Application Support/typora-user-images/image-20201113123518143.png)]

在Service层写个方法,方法里的参数是数据表里面的created_at(创建时间)

/**
 * 生成一条新的bidNumber 例如: '20201112002' : 2020年+11月份+12日+今天的第二单
 * @param bidDate   批次年月日
 * @return 新的 bidNumber
 */
String createNewBidNumber(String bidDate);

在Service的实现类里实现这个方法

根据created_at查询的语句如下

desc:降序

<select id="selectCreatedAt" parameterType="java.lang.String" resultMap="bid">
    SELECT *
    FROM epsi_bid WHERE created_at < = #{date,jdbcType=VARCHAR} ORDER BY created_at DESC limit 1
</select>
/**
 * 
 * 投标编号 年月日+三位数,例如 '20201112001':2020年11月12日第一单
 *
 * @param bidDate 传的值是2020-11-11这样的
 * @return 新的 bidNumber
 */
@Override
public String createNewBidNumber(String bidDate) { //传的是2020-11-11
    String newBidDate = bidDate.replace("-", "");//把2020-11-11中-去掉
    Bid bid = bidDao.select(bidDate);//根据传进来的日期向数据表中查询数据
    if (bid != null){// 在数据表中查到了,说明现在这个订单不是今天的第一单
        String id = bid.getId(); //取出ID,也就是数据表的第一列的数据 20201111123
        id = id.substring(8,11); // 取出后三位数,也就是自动生成的三位数 123
        int num = Integer.valueOf(id); 
        num ++;  // 123+1
        if(num<10){  
            String idNum = String.format("%03d", num);  //num<10,说明是个位数,前面要补两个0
            String date = newBidDate + idNum; 
            return date;
        }
        else if(num<100){
            String idNum = String.format("%02d", num);//num<100,说明是两位数,前面要补一个0
            String date = newBidDate + idNum;
            return date;
        }
        else {
            String idNum = String.valueOf(num);
            String date = newBidDate + idNum;  //date = 20201111+124
            return date;
        }
    }else {
        int number = 1;
        String idNum = "00" + number;
        String date = newBidDate + idNum;
        return date;
    }
}
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值