|
|
|
@ -10,6 +10,8 @@ import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import java.text.MessageFormat;
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
|
|
|
|
|
import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.SERIAL_NO;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Description : 单号生成工具类
|
|
|
|
|
* @Reference :
|
|
|
|
@ -19,11 +21,12 @@ import java.text.SimpleDateFormat;
|
|
|
|
|
**/
|
|
|
|
|
public class OrderNoMakeUtil {
|
|
|
|
|
|
|
|
|
|
private OrderNoMakeUtil(){}
|
|
|
|
|
private OrderNoMakeUtil() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static SysOrderNoRule next(SysOrderNoRule orderNoRule) {
|
|
|
|
|
public static String getOrderNoTemplate(SysOrderNoRule orderNoRule) {
|
|
|
|
|
// 数据校验
|
|
|
|
|
if(orderNoRule == null || StringUtils.isBlank(orderNoRule.getOrderNoRule())){
|
|
|
|
|
if (orderNoRule == null || StringUtils.isBlank(orderNoRule.getOrderNoRule())) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
@ -32,29 +35,41 @@ public class OrderNoMakeUtil {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String[] dateTime = new SimpleDateFormat("yyyy-yy-MM-dd-HH-mm-ss").format(System.currentTimeMillis()).split("-");
|
|
|
|
|
StringBuilder orderNo = new StringBuilder(orderNoRule.getOrderNoRule());
|
|
|
|
|
StringBuilder orderNoTemplate = new StringBuilder(orderNoRule.getOrderNoRule());
|
|
|
|
|
|
|
|
|
|
// 单号表达式
|
|
|
|
|
replace(orderNo, PlatformConstWords.YEAR_FULL, dateTime[0]);
|
|
|
|
|
replace(orderNo, PlatformConstWords.YEAR, dateTime[1]);
|
|
|
|
|
replace(orderNo, PlatformConstWords.MONTH, dateTime[2]);
|
|
|
|
|
replace(orderNo, PlatformConstWords.DAY, dateTime[3]);
|
|
|
|
|
replace(orderNo, PlatformConstWords.HOUR_OF_DAY, dateTime[4]);
|
|
|
|
|
replace(orderNo, PlatformConstWords.MINUTE, dateTime[5]);
|
|
|
|
|
replace(orderNo, PlatformConstWords.SECOND, dateTime[6]);
|
|
|
|
|
replace(orderNoTemplate, PlatformConstWords.YEAR_FULL, dateTime[0]);
|
|
|
|
|
replace(orderNoTemplate, PlatformConstWords.YEAR, dateTime[1]);
|
|
|
|
|
replace(orderNoTemplate, PlatformConstWords.MONTH, dateTime[2]);
|
|
|
|
|
replace(orderNoTemplate, PlatformConstWords.DAY, dateTime[3]);
|
|
|
|
|
replace(orderNoTemplate, PlatformConstWords.HOUR_OF_DAY, dateTime[4]);
|
|
|
|
|
replace(orderNoTemplate, PlatformConstWords.MINUTE, dateTime[5]);
|
|
|
|
|
replace(orderNoTemplate, PlatformConstWords.SECOND, dateTime[6]);
|
|
|
|
|
|
|
|
|
|
return orderNoTemplate.toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @param orderNoRule
|
|
|
|
|
* @param orderNoTemplate
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public static SysOrderNoRule next(SysOrderNoRule orderNoRule, String orderNoTemplate) {
|
|
|
|
|
int prefixIdx = orderNoTemplate.indexOf(SERIAL_NO);
|
|
|
|
|
|
|
|
|
|
// 流水号长度补全表达式
|
|
|
|
|
String serialNoFormatStr = MessageFormat.format(PlatformConstWords.SERIAL_NO_FORMAT, orderNoRule.getSerialNoLength());
|
|
|
|
|
|
|
|
|
|
// 判断是否首次生成(SerialNo初始值-1)
|
|
|
|
|
if (orderNoRule.getSerialNo() > 0 && orderNo.indexOf(PlatformConstWords.SERIAL_NO) != -1) {
|
|
|
|
|
String newNo = orderNo.substring(0,orderNo.indexOf(PlatformConstWords.SERIAL_NO));
|
|
|
|
|
String oldNo = orderNoRule.getOrderNo().substring(0,orderNo.indexOf(PlatformConstWords.SERIAL_NO));
|
|
|
|
|
if (orderNoRule.getSerialNo() > 0 && prefixIdx != -1) {
|
|
|
|
|
String newNo = orderNoTemplate.substring(0, prefixIdx);
|
|
|
|
|
String oldNo = orderNoRule.getOrderNo().substring(0, prefixIdx);
|
|
|
|
|
|
|
|
|
|
long serialNo = orderNoRule.getSerialNo() + orderNoRule.getSerialNoIncrement();
|
|
|
|
|
|
|
|
|
|
// 前缀(日期)不同后是否重置流水号
|
|
|
|
|
if(!newNo.equals(oldNo) && orderNoRule.getIsCycle() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()){
|
|
|
|
|
if (!newNo.equals(oldNo) && orderNoRule.getIsCycle() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
|
|
|
|
|
orderNoRule.setSerialNo(orderNoRule.getSerialNoSeed());
|
|
|
|
|
} else {
|
|
|
|
|
orderNoRule.setSerialNo(serialNo);
|
|
|
|
@ -67,14 +82,14 @@ public class OrderNoMakeUtil {
|
|
|
|
|
} else {
|
|
|
|
|
orderNoRule.setSerialNo(orderNoRule.getSerialNoSeed() * orderNoRule.getSerialNoIncrement());
|
|
|
|
|
}
|
|
|
|
|
replace(orderNo, PlatformConstWords.SERIAL_NO, String.format(serialNoFormatStr, orderNoRule.getSerialNo()));
|
|
|
|
|
|
|
|
|
|
orderNoRule.setOrderNo(orderNo.toString());
|
|
|
|
|
orderNoRule.setOrderNo(orderNoTemplate.replace(SERIAL_NO,String.format(serialNoFormatStr, orderNoRule.getSerialNo())));
|
|
|
|
|
return orderNoRule;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 替换字符串
|
|
|
|
|
*
|
|
|
|
|
* @param no
|
|
|
|
|
* @param constant
|
|
|
|
|
* @param param
|
|
|
|
|