Java实现根据时间、收银机号生成唯一零售单号

为了便于查询,我们要给一个零售单生成零售单号SN。如何设计生成唯一的、并且能够与收银机器相关的SN。本文将介绍:“根据时间、收银机ID和随机数生成零售单号”、“根据零售单号生成退货单号”。

1、根据时间、收银机ID和随机数生成零售单号。

我们用一张数据库表t_pos存储着所有收银机器的编号,所以一个收银机对应着一个主键ID:

/** 根据当前时间、pos_id和随机数生成SN号 */
	public static String generateRetailTradeSN(int pos_id) {
		SimpleDateFormat sdf = new SimpleDateFormat(BaseAction.DATE_FORMAT_RetailTradeSN);
		String dayStr = sdf.format(new Date());
		StringBuffer sb = null;
		try {
			Thread.sleep(1000);
			sb = new StringBuffer();
			sb.append("LS").append(dayStr);
			for (int i = 1; i <= 4 - String.valueOf(pos_id).length(); i++) {
				sb.append("0");
			}
			sb.append(String.valueOf(pos_id)).append(String.valueOf((int) (Math.floor((Math.random() * 9 + 1) * 1000))));
			return sb.toString();
		} catch (Exception e) {
			System.out.println("生成零售单SN失败:" + e.getMessage());
			return null;
		}
	}

2、根据零售单号生成退货单号。

在存储过程里,插入退货零售单时,根据原零售单号,拼接”_1”生成退货单号:

SELECT F_SN, F_VipID INTO sSN, iVipID FROM t_retailtrade WHERE F_ID = iSourceID;
SELECT CONCAT(sSN, '_', 1) INTO sSN;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值