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;
posted @ 2021-12-22 16:00  Boxin-kim  阅读(561)  评论(0)    收藏  举报
Web Analytics
Guang Zhou Boxin