diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/domain/OrderQuery.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/domain/OrderQuery.java
index d616a65..49587bd 100644
--- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/domain/OrderQuery.java
+++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/domain/OrderQuery.java
@@ -33,4 +33,10 @@ public class OrderQuery extends OrderVO{
 
     @ApiModelProperty("是否包含工序")
     private Boolean needProcess;
+
+    @ApiModelProperty("精准订单号")
+    private String eqOrderNo;
+
+    @ApiModelProperty("排除的ID")
+    private Long excludeId;
 }
diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml
index 15391a4..1bba876 100644
--- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml
+++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/mapper/OrderMapper.xml
@@ -34,6 +34,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="query.deleted == null "> and bo.deleted = false</if>
         <if test="query.status != null  and query.status != ''"> and bo.status = #{query.status}</if>
         <if test="query.material != null  and query.material != ''"> and bo.material like concat('%', #{query.material}, '%')</if>
+        <if test="query.excludeId != null">and bo.id != #{query.excludeId}</if>
+        <if test="query.eqOrderNo != null and query.eqOrderNo != ''">and bo.order_no = #{query.eqOrderNo}</if>
         <if test="query.statusList != null and query.statusList.size() > 0">
             and bo.status in
             <foreach item="item" collection="query.statusList" open="(" separator="," close=")">
diff --git a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/impl/OrderValidatorImpl.java b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/impl/OrderValidatorImpl.java
index a548a98..dcac36f 100644
--- a/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/impl/OrderValidatorImpl.java
+++ b/common-ruoyi/ruoyi-system/src/main/java/com/ruoyi/bst/order/service/impl/OrderValidatorImpl.java
@@ -1,14 +1,18 @@
 package com.ruoyi.bst.order.service.impl;
 
 import com.ruoyi.bst.order.domain.OrderBO;
+import com.ruoyi.bst.order.domain.OrderQuery;
 import com.ruoyi.bst.order.domain.OrderVO;
 import com.ruoyi.bst.order.domain.enums.OrderStatus;
+import com.ruoyi.bst.order.service.OrderService;
 import com.ruoyi.bst.order.service.OrderValidator;
 import com.ruoyi.bst.orderProd.domain.OrderProdBO;
 import com.ruoyi.bst.orderProd.domain.enums.OrderProdWorkType;
 import com.ruoyi.bst.prodProcess.domain.ProdProcessBO;
 import com.ruoyi.common.utils.ServiceUtil;
 import com.ruoyi.common.utils.collection.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -20,6 +24,8 @@ import java.util.List;
 @Service
 public class OrderValidatorImpl implements OrderValidator {
 
+    @Autowired
+    private OrderService orderService;
 
     @Override
     public void checkBefore(OrderBO data) {
@@ -36,6 +42,9 @@ public class OrderValidatorImpl implements OrderValidator {
             }
         }
 
+        // 校验订单编号
+        this.checkOrderNo(data.getId(), data.getOrderNo());
+
         // 有且仅有一个结束的产品
         boolean singleEndProd = this.hasSingleEndProd(data.getProdList());
         ServiceUtil.assertion(!singleEndProd, "订单中必须有且仅有一个产品为成品");
@@ -54,6 +63,18 @@ public class OrderValidatorImpl implements OrderValidator {
         }
     }
 
+    private void checkOrderNo(Long id, String orderNo) {
+        if (StringUtils.isBlank(orderNo)) {
+            return;
+        }
+
+        OrderQuery query = new OrderQuery();
+        query.setEqOrderNo(orderNo);
+        query.setExcludeId(id);
+        int unique = orderService.selectCount(query);
+        ServiceUtil.assertion(unique > 0, "订单编号%s已存在", orderNo);
+    }
+
     private boolean hasSingleEndProcess(List<ProdProcessBO> processList) {
         if (CollectionUtils.isEmptyElement(processList)) {
             return false;
@@ -87,5 +108,7 @@ public class OrderValidatorImpl implements OrderValidator {
     @Override
     public void checkAfter(OrderVO vo) {
 
+        // 校验订单编号
+        this.checkOrderNo(vo.getId(), vo.getOrderNo());
     }
 }