Java 编程 订单、支付、退款、发货、退货等编号主动生成类

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

在商城网站中,订单编号的自动生成,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 

转载于:https://www.cnblogs.com/Fairy-02-11/p/6186645.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值