diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SynchronizedService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SynchronizedService.java index 0bec397..c4ee0db 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SynchronizedService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/base/SynchronizedService.java @@ -45,7 +45,7 @@ public class SynchronizedService implements ISynchronizedService { private RabbitTemplate rabbitTemplate; @Override - public synchronized SysOrderNoRule nextOrderNo(String code) { + public SysOrderNoRule nextOrderNo(String code) { List list = nextOrderNo(code, NumberUtils.INTEGER_ONE); if (CollectionUtils.isEmpty(list)) { throw ImppExceptionBuilder.newInstance() diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/OrderNoMakeUtil.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/OrderNoMakeUtil.java index abe4414..79c57a9 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/OrderNoMakeUtil.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/util/OrderNoMakeUtil.java @@ -7,6 +7,7 @@ import cn.estsh.i3plus.pojo.platform.bean.SysOrderNoRule; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import org.apache.commons.lang3.StringUtils; +import java.math.BigDecimal; import java.text.MessageFormat; import java.text.SimpleDateFormat; @@ -24,6 +25,8 @@ public class OrderNoMakeUtil { private OrderNoMakeUtil() { } + public static final BigDecimal TEN = new BigDecimal(10); + public static String getOrderNoTemplate(SysOrderNoRule orderNoRule) { // 数据校验 if (orderNoRule == null || StringUtils.isBlank(orderNoRule.getOrderNoRule())) { @@ -50,7 +53,6 @@ public class OrderNoMakeUtil { } /** - * * @param orderNoRule * @param orderNoTemplate * @return @@ -75,15 +77,17 @@ public class OrderNoMakeUtil { orderNoRule.setSerialNo(serialNo); } + BigDecimal maxSerialNo = TEN.pow(orderNoRule.getSerialNoLength()).subtract(BigDecimal.ONE); if (CommonEnumUtil.TRUE_OR_FALSE.valueOfBoolean(orderNoRule.getIsFixedLength()) - && String.valueOf(serialNo).length() > orderNoRule.getSerialNoLength()) { - orderNoRule.setSerialNo(orderNoRule.getSerialNoSeed()); + && serialNo > maxSerialNo.longValue()) { + serialNo = new BigDecimal(serialNo).remainder(maxSerialNo).longValue(); + orderNoRule.setSerialNo(serialNo == 0 ? maxSerialNo.longValue() : serialNo); } } else { orderNoRule.setSerialNo(orderNoRule.getSerialNoSeed() * orderNoRule.getSerialNoIncrement()); } - orderNoRule.setOrderNo(orderNoTemplate.replace(SERIAL_NO,String.format(serialNoFormatStr, orderNoRule.getSerialNo()))); + orderNoRule.setOrderNo(orderNoTemplate.replace(SERIAL_NO, String.format(serialNoFormatStr, orderNoRule.getSerialNo()))); return orderNoRule; } diff --git a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/util/TestOrderNoMakeUtil.java b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/util/TestOrderNoMakeUtil.java index 2bc5e2e..31bb0d3 100644 --- a/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/util/TestOrderNoMakeUtil.java +++ b/modules/i3plus-core-apiservice/src/test/java/test/cn/estsh/i3plus/core/apiservice/util/TestOrderNoMakeUtil.java @@ -1,34 +1,34 @@ -package cn.estsh.i3plus.core.apiservice.util; - -import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.TestBase; -import cn.estsh.i3plus.pojo.platform.bean.SysOrderNoRule; -import org.junit.Test; - -/** - * @Description : - * @Reference : - * @Author : yunhao - * @CreateDate : 2018-11-21 19:45 - * @Modify: - **/ -public class TestOrderNoMakeUtil extends TestBase { - - @Test - public void TestMakeOrderNo() { - SysOrderNoRule sysOrderNoRule = new SysOrderNoRule(); - sysOrderNoRule.setName("一号单据"); - sysOrderNoRule.setOrderNoRule("GG-{yyyy}{MM}{dd}{serialNo}"); - sysOrderNoRule.setSerialNoSeed(1L); - sysOrderNoRule.setSerialNoIncrement(1L); - sysOrderNoRule.setSerialNoLength(4L); - sysOrderNoRule.setSerialNo(9999L); - sysOrderNoRule.setIsCycle(1); - - String orderNoTemplate = OrderNoMakeUtil.getOrderNoTemplate(sysOrderNoRule); - System.out.println(OrderNoMakeUtil.next(sysOrderNoRule,orderNoTemplate)); - -// String d= MessageFormat.format("%0{0}d", 3); -// System.out.println(d); - } - -} +//package cn.estsh.i3plus.core.apiservice.util; +// +//import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.TestBase; +//import cn.estsh.i3plus.pojo.platform.bean.SysOrderNoRule; +//import org.junit.Test; +// +///** +// * @Description : +// * @Reference : +// * @Author : yunhao +// * @CreateDate : 2018-11-21 19:45 +// * @Modify: +// **/ +//public class TestOrderNoMakeUtil extends TestBase { +// +// @Test +// public void TestMakeOrderNo() { +// SysOrderNoRule sysOrderNoRule = new SysOrderNoRule(); +// sysOrderNoRule.setName("一号单据"); +// sysOrderNoRule.setOrderNoRule("GG-{yyyy}{MM}{dd}{serialNo}"); +// sysOrderNoRule.setSerialNoSeed(1L); +// sysOrderNoRule.setSerialNoIncrement(1L); +// sysOrderNoRule.setSerialNoLength(4L); +// sysOrderNoRule.setSerialNo(9999L); +// sysOrderNoRule.setIsCycle(1); +// +// String orderNoTemplate = OrderNoMakeUtil.getOrderNoTemplate(sysOrderNoRule); +// System.out.println(OrderNoMakeUtil.next(sysOrderNoRule,orderNoTemplate)); +// +//// String d= MessageFormat.format("%0{0}d", 3); +//// System.out.println(d); +// } +// +//}