This commit is contained in:
JS-LM
2023-03-13 15:33:41 +08:00
8 changed files with 41 additions and 14 deletions

View File

@@ -330,10 +330,12 @@ public class OrderService {
* @return
*/
private String saveOrder2Database(GenerateOrderDTO dto) {
String orderCode = IdUtils.generateOrderCode(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())

View File

@@ -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 88000000000001012211301501294274
*/
public static String generateOrderCode(String pileConnectorCode) {
public static String generateTransactionCode(String pileConnectorCode) {
String timeNow = DateUtils.dateTimeNow(DateUtils.YYMMDDHHMMSS);
//随机生成一个四位整数
String randomNumber = RandomUtil.getRandomNumber(4);
@@ -73,15 +72,29 @@ public class IdUtils {
public static void main(String[] args) {
Set<String> set = Sets.newHashSet();
for (int i = 0; i < 1000; i++) {
// String s = System.currentTimeMillis() + RandomUtil.getRandomNumber(6);
String id = SnowflakeIdWorker.getSnowflakeId();
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
*/

View File

@@ -217,7 +217,7 @@ public class SnowflakeIdWorker {
//判断生成的记录是否有重复记录
long beginTime = System.currentTimeMillis();
Map<String, String> 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));
}

View File

@@ -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);
// 逻辑卡号

View File

@@ -38,6 +38,11 @@ public class OrderBasicInfo extends BaseEntity {
@Excel(name = "订单编号")
private String orderCode;
/**
* 交易流水号
*/
private String transactionCode;
/**
* 订单状态(0-待支付1-充电中2-待结算3-待补缴4-异常5-可疑6-订单完成)
*/

View File

@@ -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");

View File

@@ -659,6 +659,8 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
OrderAbnormalRecord record = new OrderAbnormalRecord();
BeanUtils.copyBeanProp(record, data);
orderAbnormalRecordService.insertOrderAbnormalRecord(record);
}
/**

View File

@@ -265,6 +265,9 @@
<if test="orderCode != null">
order_code,
</if>
<if test="transactionCode != null">
transaction_code,
</if>
<if test="orderStatus != null">
order_status,
</if>
@@ -342,6 +345,9 @@
<if test="orderCode != null">
#{orderCode},
</if>
<if test="transactionCode != null">
#{transactionCode},
</if>
<if test="orderStatus != null">
#{orderStatus},
</if>