From b813a3d409d4b774460195dcaf0122a8f8dfae18 Mon Sep 17 00:00:00 2001 From: rqian <1206436827@qq.com> Date: Fri, 15 May 2026 17:32:14 +0800 Subject: [PATCH] =?UTF-8?q?#id=E9=87=8D=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WorkOrderServiceImpl.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) 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("生成工单号失败,请稍后重试"); + } } +