From c1ef51af6e0a006efb0dc66a8f0b9e1943258ecd Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Mon, 13 Mar 2023 15:01:36 +0800 Subject: [PATCH 1/2] =?UTF-8?q?update=20=E7=94=9F=E6=88=90=E4=BA=A4?= =?UTF-8?q?=E6=98=93=E6=B5=81=E6=B0=B4=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsowell/service/OrderService.java | 2 +- .../com/jsowell/common/util/id/IdUtils.java | 21 +++++++++++-------- .../common/util/id/SnowflakeIdWorker.java | 4 ++-- .../ConfirmStartChargingRequestHandler.java | 2 +- .../jsowell/pile/service/SimCardService.java | 3 +-- .../impl/OrderBasicInfoServiceImpl.java | 2 ++ 6 files changed, 19 insertions(+), 15 deletions(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 28b31c2c1..c39894668 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -330,7 +330,7 @@ public class OrderService { * @return */ private String saveOrder2Database(GenerateOrderDTO dto) { - String orderCode = IdUtils.generateOrderCode(dto.getPileSn(), dto.getConnectorCode()); + String orderCode = IdUtils.generateTransactionCode(dto.getPileSn(), dto.getConnectorCode()); // 订单基本信息 OrderBasicInfo orderBasicInfo = OrderBasicInfo.builder() .orderCode(orderCode) diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/id/IdUtils.java b/jsowell-common/src/main/java/com/jsowell/common/util/id/IdUtils.java index 2f432e749..508f6b23c 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/id/IdUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/id/IdUtils.java @@ -50,21 +50,20 @@ public class IdUtils { /** * 生成交易流水号 - * * @param pileSn 桩编号 例如:32010600019236 * @param connectorCode 枪口号 例如:01 */ - public static String generateOrderCode(String pileSn, String connectorCode) { - return generateOrderCode(pileSn + connectorCode); + public static String generateTransactionCode(String pileSn, String connectorCode) { + return generateTransactionCode(pileSn + connectorCode); } /** * 生成交易流水号 * 生成规则为 格式桩号(7bytes) +枪号(1byte) +年月日时分秒(6bytes) +自 增序号(2bytes); * @param pileConnectorCode 为已经拼好的充电桩枪口号 例如:3201060001923601 - * @return 交易流水号 例如:32010600019236012001061803423060 + * @return 交易流水号 例如:32010600019236012001061803423060 11291834338312 */ - public static String generateOrderCode(String pileConnectorCode) { + public static String generateTransactionCode(String pileConnectorCode) { String timeNow = DateUtils.dateTimeNow(DateUtils.YYMMDDHHMMSS); //随机生成一个四位整数 String randomNumber = RandomUtil.getRandomNumber(4); @@ -73,11 +72,15 @@ public class IdUtils { public static void main(String[] args) { Set set = Sets.newHashSet(); - for (int i = 0; i < 1000; i++) { + for (int i = 0; i < 100000; i++) { // String s = System.currentTimeMillis() + RandomUtil.getRandomNumber(6); - String id = SnowflakeIdWorker.getSnowflakeId(); - set.add(id); - System.out.println(id); + String timeNow = DateUtils.dateTimeNow(DateUtils.YYMMDDHHMMSS); + //随机生成一个四位整数 + // String randomNumber = RandomUtil.getRandomNumber(4); + // String id = timeNow + randomNumber; + String snowflakeId = SnowflakeIdWorker.getSnowflakeId(); + set.add(snowflakeId); + System.out.println(snowflakeId); } System.out.println("set size = " + set.size()); } diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/id/SnowflakeIdWorker.java b/jsowell-common/src/main/java/com/jsowell/common/util/id/SnowflakeIdWorker.java index 1ef5140c7..e5d6b5f4f 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/id/SnowflakeIdWorker.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/id/SnowflakeIdWorker.java @@ -217,7 +217,7 @@ public class SnowflakeIdWorker { //判断生成的记录是否有重复记录 long beginTime = System.currentTimeMillis(); Map map = new ConcurrentHashMap<>(); - for (int i = 0; i < 100; i++) { + for (int i = 0; i < 10; i++) { new Thread(() -> { for (int s = 0; s < 20000; s++) { String snowFlakeId = SnowflakeIdWorker.getSnowflakeId(); @@ -229,7 +229,7 @@ public class SnowflakeIdWorker { } }).start(); } - Thread.sleep(3000); + // Thread.sleep(3000); log.info("map.size():{}", map.size()); log.info("耗时:" + (System.currentTimeMillis() - beginTime)); } diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/ConfirmStartChargingRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/ConfirmStartChargingRequestHandler.java index bc33fe23e..c10fa0e0d 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/ConfirmStartChargingRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/ConfirmStartChargingRequestHandler.java @@ -93,7 +93,7 @@ public class ConfirmStartChargingRequestHandler extends AbstractHandler{ // 应答 // 交易流水号 - String serialNum = IdUtils.generateOrderCode(pileSn, connectorCode); + String serialNum = IdUtils.generateTransactionCode(pileSn, connectorCode); byte[] serialNumByteArr = BytesUtil.str2Bcd(serialNum); // 逻辑卡号 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/SimCardService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/SimCardService.java index 1ae56dd9f..be4436ba1 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/SimCardService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/SimCardService.java @@ -8,7 +8,6 @@ import com.jsowell.common.enums.sim.SimCardStatusCorrespondEnum; import com.jsowell.common.enums.sim.SimSupplierEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; -import com.jsowell.common.util.RandomUtil; import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.http.HttpUtils; import com.jsowell.common.util.id.IdUtils; @@ -436,7 +435,7 @@ public class SimCardService { param.put("name", WuLianSimRenew); param.put("msisdn", data.getMsisdn()); param.put("packageId", data.getPackageId()); // 套餐id - param.put("outOrderNo", IdUtils.generateOrderCode(data.getMsisdn())); // 外部业务订单号 + param.put("outOrderNo", IdUtils.generateTransactionCode(data.getMsisdn())); // 外部业务订单号 param.put("period", cycleNumber); // 续费周期 String result = HttpUtils.sendPostContentType(wuLianGetWay, param.toJSONString(), "application/json"); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 1967dd1b2..551878c38 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -659,6 +659,8 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { OrderAbnormalRecord record = new OrderAbnormalRecord(); BeanUtils.copyBeanProp(record, data); orderAbnormalRecordService.insertOrderAbnormalRecord(record); + + } /** From 2e0b29c6733cff76c834af43d2a5bdc6c7a404d3 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Mon, 13 Mar 2023 15:27:41 +0800 Subject: [PATCH 2/2] =?UTF-8?q?update=20=E7=94=9F=E6=88=90=E4=BA=A4?= =?UTF-8?q?=E6=98=93=E6=B5=81=E6=B0=B4=E5=8F=B7=EF=BC=8C=E7=94=9F=E6=88=90?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=BC=96=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jsowell/service/OrderService.java | 4 ++- .../com/jsowell/common/util/id/IdUtils.java | 30 ++++++++++++------- .../jsowell/pile/domain/OrderBasicInfo.java | 5 ++++ .../mapper/pile/OrderBasicInfoMapper.xml | 6 ++++ 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index c39894668..e5eead8a8 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -330,10 +330,12 @@ public class OrderService { * @return */ private String saveOrder2Database(GenerateOrderDTO dto) { - String orderCode = IdUtils.generateTransactionCode(dto.getPileSn(), dto.getConnectorCode()); + String orderCode = IdUtils.getOrderCode(); + String transactionCode = IdUtils.generateTransactionCode(dto.getPileSn(), dto.getConnectorCode()); // 订单基本信息 OrderBasicInfo orderBasicInfo = OrderBasicInfo.builder() .orderCode(orderCode) + .transactionCode(transactionCode) .orderStatus(OrderStatusEnum.NOT_START.getValue()) .memberId(dto.getMemberId()) .stationId(dto.getPileConnector().getStationId()) diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/id/IdUtils.java b/jsowell-common/src/main/java/com/jsowell/common/util/id/IdUtils.java index 508f6b23c..9b25d3cf0 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/id/IdUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/id/IdUtils.java @@ -61,7 +61,7 @@ public class IdUtils { * 生成交易流水号 * 生成规则为 格式桩号(7bytes) +枪号(1byte) +年月日时分秒(6bytes) +自 增序号(2bytes); * @param pileConnectorCode 为已经拼好的充电桩枪口号 例如:3201060001923601 - * @return 交易流水号 例如:32010600019236012001061803423060 11291834338312 + * @return 交易流水号 例如:32010600019236012001061803423060 88000000000001012211301501294274 */ public static String generateTransactionCode(String pileConnectorCode) { String timeNow = DateUtils.dateTimeNow(DateUtils.YYMMDDHHMMSS); @@ -72,19 +72,29 @@ public class IdUtils { public static void main(String[] args) { Set set = Sets.newHashSet(); - for (int i = 0; i < 100000; i++) { - // String s = System.currentTimeMillis() + RandomUtil.getRandomNumber(6); - String timeNow = DateUtils.dateTimeNow(DateUtils.YYMMDDHHMMSS); - //随机生成一个四位整数 - // String randomNumber = RandomUtil.getRandomNumber(4); - // String id = timeNow + randomNumber; - String snowflakeId = SnowflakeIdWorker.getSnowflakeId(); - set.add(snowflakeId); - System.out.println(snowflakeId); + for (int i = 0; i < 1000000; i++) { + String id = getOrderCode(); + set.add(id); + System.out.println(id); } System.out.println("set size = " + set.size()); } + /** + * 生成12位orderCode + */ + public static String getOrderCode() { + long id = Long.parseLong(SnowflakeIdWorker.getSnowflakeId()); + StringBuilder sb = new StringBuilder(id + ""); + StringBuilder reverse = sb.reverse();//将id翻转:我们发现id很长,且高位很长部分是一样的数 + id = new Long(reverse.toString()) / 1000;//切去部分长度 + while (id > 100000000000L) { + id /= 10; + } + // Integer num = Integer.parseInt(id + ""); + return "C" + id; + } + /** * 生成八位会员id */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/OrderBasicInfo.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/OrderBasicInfo.java index 01121bfe0..0401224d0 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/OrderBasicInfo.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/OrderBasicInfo.java @@ -38,6 +38,11 @@ public class OrderBasicInfo extends BaseEntity { @Excel(name = "订单编号") private String orderCode; + /** + * 交易流水号 + */ + private String transactionCode; + /** * 订单状态(0-待支付;1-充电中;2-待结算;3-待补缴;4-异常;5-可疑;6-订单完成) */ diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index 8ad533b34..6365d9c0d 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -265,6 +265,9 @@ order_code, + + transaction_code, + order_status, @@ -342,6 +345,9 @@ #{orderCode}, + + #{transactionCode}, + #{orderStatus},