• 订单、支付、退款、发货、退货等编号自动生成类


    在商城网站中,订单编号的自动生成,ERP中各个单据的编号自动生成,都可以按照一下的方式来自动生成。

    第一步:定义常量订单编号前缀、订单编号起始数、订单编号步长;

     public static final String ORDER_SN_PREFIX = "";// 订单编号前缀 
     public static final long ORDER_SN_FIRST = 100000L;// 订单编号起始数
     public static final long ORDER_SN_STEP = 1L;// 订单编号步长

    第二步:定义订单的最后一个编号号码;

     public static Long lastOrderSnNumber;      //最后的订单编号号码

    第三步:获取数据库中订单号为最后一个的订单编号,并赋值给lastOrderSnNumber

    // 订单编号
      OrderService orderService = (OrderService) SpringUtil.getBean("orderServiceImpl");
      String lastOrderSn = orderService.getLastOrderSn();
      if (StringUtils.isNotEmpty(lastOrderSn)) {
       lastOrderSnNumber = Long.parseLong(StringUtils.removeStartIgnoreCase(lastOrderSn, ORDER_SN_PREFIX));
      } else {
       lastOrderSnNumber = ORDER_SN_FIRST;
      }

    第四步:生成最新的订单号

    /**
      * 生成订单编号
      * @return 订单编号
      */
     public synchronized static String buildOrderSn() {
      lastOrderSnNumber += ORDER_SN_STEP;
      return ORDER_SN_PREFIX + lastOrderSnNumber;
     }

    第五步:调用编号生成的方法

    order.setOrderSn(SerialNumberUtil.buildOrderSn());

    个人一些看法,这些单据编号的自动生成,都是在写代码的时候定义好的,以后编号更改形式要是变了呢,是否可以改进,个人觉得应该可以改成配置的形式。

    一个完整的类如下,在这里记下,为以后开发用:

    package net.shopxx.util;
    import java.util.UUID;
    import net.shopxx.service.OrderService;
    import net.shopxx.service.PaymentService;
    import net.shopxx.service.RefundService;
    import net.shopxx.service.ReshipService;
    import net.shopxx.service.ShippingService;
    import org.apache.commons.lang3.StringUtils;
    /**
     * 工具类 - 编号生成
     */
    public class SerialNumberUtil {
     
     public static final String PRODUCT_SN_PREFIX = "SN_";// 货号前缀
     
     public static final String ORDER_SN_PREFIX = "";// 订单编号前缀 
     public static final long ORDER_SN_FIRST = 100000L;// 订单编号起始数
     public static final long ORDER_SN_STEP = 1L;// 订单编号步长
     
     public static final String PAYMENT_SN_PREFIX = "";// 支付编号前缀
     public static final long PAYMENT_SN_FIRST = 100000L;// 支付编号起始数
     public static final long PAYMENT_SN_STEP = 1L;// 支付编号步长
     
     public static final String REFUND_SN_PREFIX = "";// 退款编号前缀
     public static final long REFUND_SN_FIRST = 100000L;// 退款编号起始数
     public static final long REFUND_SN_STEP = 1L;// 退款编号步长
     
     public static final String SHIPPING_SN_PREFIX = "";// 发货编号前缀
     public static final long SHIPPING_SN_FIRST = 100000L;// 发货编号起始数
     public static final long SHIPPING_SN_STEP = 1L;// 发货编号步长
     
     public static final String RESHIP_SN_PREFIX = "";// 退货编号前缀
     public static final long RESHIP_SN_FIRST = 100000L;// 退货编号起始数
     public static final long RESHIP_SN_STEP = 1L;// 退货编号步长
     
     public static Long lastOrderSnNumber;      //最后的订单编号号码
     public static Long lastPaymentSnNumber;
     public static Long lastRefundSnNumber;
     public static Long lastShippingSnNumber;
     public static Long lastReshipSnNumber;
     public static Long lastTenpayTransactionIdNumber;
     static {
      // 订单编号
      OrderService orderService = (OrderService) SpringUtil.getBean("orderServiceImpl");
      String lastOrderSn = orderService.getLastOrderSn();
      if (StringUtils.isNotEmpty(lastOrderSn)) {
       lastOrderSnNumber = Long.parseLong(StringUtils.removeStartIgnoreCase(lastOrderSn, ORDER_SN_PREFIX));
      } else {
       lastOrderSnNumber = ORDER_SN_FIRST;
      }
      
      // 支付编号
      PaymentService paymentService = (PaymentService) SpringUtil.getBean("paymentServiceImpl");
      String lastPaymentSn = paymentService.getLastPaymentSn();
      if (StringUtils.isNotEmpty(lastPaymentSn)) {
       lastPaymentSnNumber = Long.parseLong(StringUtils.removeStartIgnoreCase(lastPaymentSn, PAYMENT_SN_PREFIX));
      } else {
       lastPaymentSnNumber = PAYMENT_SN_FIRST;
      }
      
      // 退款编号
      RefundService refundService = (RefundService) SpringUtil.getBean("refundServiceImpl");
      String lastRefundSn = refundService.getLastRefundSn();
      if (StringUtils.isNotEmpty(lastRefundSn)) {
       lastRefundSnNumber = Long.parseLong(StringUtils.removeStartIgnoreCase(lastRefundSn, REFUND_SN_PREFIX));
      } else {
       lastRefundSnNumber = REFUND_SN_FIRST;
      }
      
      // 发货编号
      ShippingService shippingService = (ShippingService) SpringUtil.getBean("shippingServiceImpl");
      String lastShippingSn = shippingService.getLastShippingSn();
      if (StringUtils.isNotEmpty(lastShippingSn)) {
       lastShippingSnNumber = Long.parseLong(StringUtils.removeStartIgnoreCase(lastShippingSn, SHIPPING_SN_PREFIX));
      } else {
       lastShippingSnNumber = SHIPPING_SN_FIRST;
      }
      
      // 退货编号
      ReshipService reshipService = (ReshipService) SpringUtil.getBean("reshipServiceImpl");
      String lastReshipSn = reshipService.getLastReshipSn();
      if (StringUtils.isNotEmpty(lastReshipSn)) {
       lastReshipSnNumber = Long.parseLong(StringUtils.removeStartIgnoreCase(lastReshipSn, RESHIP_SN_PREFIX));
      } else {
       lastReshipSnNumber = RESHIP_SN_FIRST;
      }
     }
     
     /**
      * 生成货号
      * 
      * @return 货号
      */
     public static String buildProductSn() {
      String uuid = UUID.randomUUID().toString();
      return PRODUCT_SN_PREFIX + (uuid.substring(0, 8) + uuid.substring(9, 13)).toUpperCase();
     }
     
     /**
      * 生成订单编号
      * @return 订单编号
      */
     public synchronized static String buildOrderSn() {
      lastOrderSnNumber += ORDER_SN_STEP;
      return ORDER_SN_PREFIX + lastOrderSnNumber;
     }
     
     /**
      * 生成支付编号
      * @return 支付编号
      */
     public synchronized static String buildPaymentSn() {
      lastPaymentSnNumber += PAYMENT_SN_STEP;
      return PAYMENT_SN_PREFIX + lastPaymentSnNumber;
     }
     
     /**
      * 生成退款编号
      * 
      * @return 退款编号
      */
     public synchronized static String buildRefundSn() {
      lastRefundSnNumber += REFUND_SN_STEP;
      return REFUND_SN_PREFIX + lastRefundSnNumber;
     }
     
     /**
      * 生成发货编号
      * 
      * @return 发货编号
      */
     public synchronized static String buildShippingSn() {
      lastShippingSnNumber += SHIPPING_SN_STEP;
      return SHIPPING_SN_PREFIX + lastShippingSnNumber;
     }
     
     /**
      * 生成退货编号
      * 
      * @return 退货编号
      */
     public synchronized static String buildReshipSn() {
      lastReshipSnNumber += RESHIP_SN_STEP;
      return RESHIP_SN_PREFIX + lastReshipSnNumber;
     }
    }
  • 相关阅读:
    POJ 1811 Prime Test 素性测试 分解素因子
    sysbench的安装与使用
    电脑中已有VS2005和VS2010安装.NET3.5失败的解决方案
    I.MX6 show battery states in commandLine
    RPi 2B Raspbian system install
    I.MX6 bq27441 driver porting
    I.MX6 隐藏电池图标
    I.MX6 Power off register hacking
    I.MX6 Goodix GT9xx touchscreen driver porting
    busybox filesystem httpd php-5.5.31 sqlite3 webserver
  • 原文地址:https://www.cnblogs.com/lr393993507/p/5310307.html
Copyright © 2020-2023  润新知