package com.iamberry.rst.utils; import com.iamberry.rst.core.order.OrderBatch; import com.iamberry.rst.faces.order.OrderBatchService; import com.iamberry.wechat.tools.ResponseJson; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.Date; /*** * 用于生成单号 */ @Component public class GenerateKeyUtil { @Autowired private OrderBatchService orderBatchService; private static SimpleDateFormat SDF_ORDERID = new SimpleDateFormat("yyyyMMddHHmmss"); private static SimpleDateFormat SDF_BATCH = new SimpleDateFormat("yyMMddHHmm"); /*订单交易号前两位,D标识一定为手动增加 */ private final static String SD_ORDER = "D"; /*手动添加批次编号*/ private final static String SD_BATCH = "D"; /*批量添加批次编号*/ private final static String SC_BATCH = "C"; /** * 获取交易号-手动添加 * @return */ public static String getSalesOrderKey(){ return (SD_ORDER + SDF_ORDERID.format(new Date()) + "0" + generateRandomNumber(3)); } /** * 获取批次号 setSalesBatchId -- 单个添加 * @return */ public String getSalesBatchIdSD(){ Integer orderBatchNum = orderBatchService.getOrderBatchNum(new OrderBatch()); return ("S"+ SD_BATCH + SDF_BATCH.format(new Date()) + String.format("%08d", orderBatchNum)); } /** * 获取批次号 setSalesBatchId -- 批量导入 * @return */ public String getSalesBatchIdSC(){ Integer orderBatchNum = orderBatchService.getOrderBatchNum(new OrderBatch()); return ("S"+ SC_BATCH + SDF_BATCH.format(new Date()) + String.format("%08d", orderBatchNum)); } /** * 产生4位随机数 * @return */ protected static long generateRandomNumber(int n) { if (n < 1) { throw new IllegalArgumentException("随机数位数必须大于0"); } return (long) (Math.random() * 9 * Math.pow(10, n - 1)) + (long) Math.pow(10, n - 1); } }