#id重复bug
This commit is contained in:
@@ -243,7 +243,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
|
||||
@Override
|
||||
public int insertWorkOrder(IOTWorkOrder workOrder) {
|
||||
workOrder.setOrderNo(generateOrderNo());
|
||||
workOrder.setOrderNo(generateUniqueOrderNo());
|
||||
workOrder.setTenantId(SecurityUtils.getLoginUser().getOrgId());
|
||||
workOrder.setOrgId(SecurityUtils.getLoginUser().getOrgId());
|
||||
workOrder.setCreateTime(LocalDateTime.now());
|
||||
@@ -435,7 +435,7 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
}
|
||||
|
||||
IOTWorkOrder workOrder = new IOTWorkOrder();
|
||||
workOrder.setOrderNo(generateOrderNo());
|
||||
workOrder.setOrderNo(generateUniqueOrderNo());
|
||||
workOrder.setOrderTitle(alarm.getAlarmTitle());
|
||||
workOrder.setSourceType(7);
|
||||
workOrder.setOrderType(2);
|
||||
@@ -467,10 +467,31 @@ public class WorkOrderServiceImpl extends ServiceImpl<IotWorkOrderMapper, IOTWor
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private String generateOrderNo() {
|
||||
String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
|
||||
long count = baseMapper.selectCount(new LambdaQueryWrapper<IOTWorkOrder>()
|
||||
.likeRight(IOTWorkOrder::getOrderNo, "WO" + dateStr));
|
||||
return "WO" + dateStr + String.format("%04d", count + 1);
|
||||
}
|
||||
|
||||
private synchronized String generateUniqueOrderNo() {
|
||||
int maxRetries = 10;
|
||||
for (int i = 0; i < maxRetries; i++) {
|
||||
String orderNo = generateOrderNo();
|
||||
Long count = baseMapper.selectCount(new LambdaQueryWrapper<IOTWorkOrder>()
|
||||
.eq(IOTWorkOrder::getOrderNo, orderNo));
|
||||
if (count == 0) {
|
||||
return orderNo;
|
||||
}
|
||||
try {
|
||||
Thread.sleep(10);
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
throw new ServiceException("生成工单号失败");
|
||||
}
|
||||
}
|
||||
throw new ServiceException("生成工单号失败,请稍后重试");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user