diff --git a/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/impl/WorkOrderServiceImpl.java b/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/impl/WorkOrderServiceImpl.java index 425890f..0dffd41 100644 --- a/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/impl/WorkOrderServiceImpl.java +++ b/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/impl/WorkOrderServiceImpl.java @@ -243,7 +243,7 @@ public class WorkOrderServiceImpl extends ServiceImpl() .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() + .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("生成工单号失败,请稍后重试"); + } } +