GenerateKeyUtil.java 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package com.iamberry.rst.utils;
  2. import com.iamberry.rst.core.order.OrderBatch;
  3. import com.iamberry.rst.faces.order.OrderBatchService;
  4. import com.iamberry.wechat.tools.ResponseJson;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Component;
  7. import java.text.SimpleDateFormat;
  8. import java.util.Date;
  9. /***
  10. * 用于生成单号
  11. */
  12. @Component
  13. public class GenerateKeyUtil {
  14. @Autowired
  15. private OrderBatchService orderBatchService;
  16. private static SimpleDateFormat SDF_ORDERID = new SimpleDateFormat("yyyyMMddHHmmss");
  17. private static SimpleDateFormat SDF_BATCH = new SimpleDateFormat("yyMMddHHmm");
  18. /*订单交易号前两位,D标识一定为手动增加 */
  19. private final static String SD_ORDER = "D";
  20. /*手动添加批次编号*/
  21. private final static String SD_BATCH = "D";
  22. /*批量添加批次编号*/
  23. private final static String SC_BATCH = "C";
  24. /**
  25. * 获取交易号-手动添加
  26. * @return
  27. */
  28. public static String getSalesOrderKey(){
  29. return (SD_ORDER + SDF_ORDERID.format(new Date()) + "0" + generateRandomNumber(3));
  30. }
  31. /**
  32. * 获取批次号 setSalesBatchId -- 单个添加
  33. * @return
  34. */
  35. public String getSalesBatchIdSD(){
  36. Integer orderBatchNum = orderBatchService.getOrderBatchNum(new OrderBatch());
  37. return ("S"+ SD_BATCH + SDF_BATCH.format(new Date()) + String.format("%08d", orderBatchNum));
  38. }
  39. /**
  40. * 获取批次号 setSalesBatchId -- 批量导入
  41. * @return
  42. */
  43. public String getSalesBatchIdSC(){
  44. Integer orderBatchNum = orderBatchService.getOrderBatchNum(new OrderBatch());
  45. return ("S"+ SC_BATCH + SDF_BATCH.format(new Date()) + String.format("%08d", orderBatchNum));
  46. }
  47. /**
  48. * 产生4位随机数
  49. * @return
  50. */
  51. protected static long generateRandomNumber(int n) {
  52. if (n < 1) {
  53. throw new IllegalArgumentException("随机数位数必须大于0");
  54. }
  55. return (long) (Math.random() * 9 * Math.pow(10, n - 1)) + (long) Math.pow(10, n - 1);
  56. }
  57. }