diff --git a/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java b/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java
index 8f434ad..34dfaba 100644
--- a/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java
+++ b/src/main/java/com/order/erp/domain/vo/order/OrderBaseInfoQueryVO.java
@@ -6,6 +6,7 @@ import lombok.experimental.SuperBuilder;
 
 import java.io.Serializable;
 import java.util.List;
+import java.util.Set;
 
 /**
  * 订单基础信息表(OrderBaseInfo)实体类
@@ -24,85 +25,115 @@ public class OrderBaseInfoQueryVO extends BasePageVO implements Serializable {
 
     private List<Long> ids;
 
+    private Set<Long> orderIds;
+
 
     private Long id;
+
     /**
-     * 客户编码
+     * 生成开始时间
      */
-    private String customerCode;
+    private String createStartTime;
+
     /**
-     * 项目号
+     * 生成结束时间
      */
-    private String projectNo;
+    private String createEndTime;
+
     /**
-     * 生产科
+     * 单据状态
      */
-    private String productionDepartment;
+    private String orderStatus;
+
     /**
-     * 内部编号
+     * 提交人名称
      */
-    private String innerNo;
+    private String commitUserName;
+
     /**
-     * 客户po号
+     * 提交人手机号码
      */
-    private String customerPo;
+    private String commitUserPhone;
+
     /**
-     * 客户STYLE#
+     * 客户编码
      */
-    private String customerStyle;
+    private String customerCode;
+
     /**
-     * Modelo(REFERENCE)
+     * 项目号
      */
-    private String modeleLo;
+    private String projectNo;
+
     /**
-     * COLLECTION (style description)
+     * 生产科
      */
-    private String collection;
+    private String productionDepartment;
+
     /**
-     * PO COLOR
+     * 生成科拖货开始时间
      */
-    private String poColor;
+    private String productionDepartmentConsignStartTime;
+
     /**
-     * 颜色中文
+     * 生成科拖货结束时间
      */
-    private String cnColor;
+    private String productionDepartmentConsignEndTime;
+
     /**
-     * pic图片地址
+     * 订单上HOD开始时间
      */
-    private String picUrl;
+    private String orderHodStartTime;
+
+    /**
+     * 订单上HOD结束时间
+     */
+    private String orderHodEndTime;
+
     /**
-     * 生产要求
+     * 最小利润率
      */
-    private String productionComment;
+    private Double profitRateLqt;
+
     /**
-     * 数量
+     * 最大利润率
      */
-    private Integer orderCount;
+    private Double profitRateGqt;
+
     /**
-     * 订单成分
+     * 想法来源
      */
-    private String orderComposition;
+    private String ideaSource;
+
     /**
-     * 款式类型
+     * 手工初型
      */
-    private String productStyle;
+    private String manualPreform;
+
     /**
-     * 生成科拖货时间
+     * pp样品确认意见
      */
-    private String productionDepartmentConsignTime;
+    private String ppConfirmResult;
+
     /**
-     * 订单上HOD时间
+     * 自测通过开始时间
      */
-    private String orderHodTime;
+    private String selfTestPassStartTime;
+
     /**
-     * 出库类型
+     * 自测通过结束时间
      */
-    private String outboundType;
+    private String selfTestPassEndTime;
+
     /**
-     * 包装类型
+     * 中期验货结果PASS / FAIL
      */
-    private String packetType;
+    private String midCheckResult;
 
+    /**
+     * 尾期验货结果PASS / FAIL
+     */
+    private String endCheckResult;
 
 }
 
diff --git a/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
index 63198ce..98620ba 100644
--- a/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
+++ b/src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
@@ -2,6 +2,7 @@ package com.order.erp.service.order.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -22,10 +23,12 @@ import com.order.erp.common.utils.ProfitUtils;
 import com.order.erp.config.DataScope;
 import com.order.erp.domain.*;
 import com.order.erp.domain.dto.BaseDO;
+import com.order.erp.domain.dto.admin.AdminUserDO;
 import com.order.erp.domain.dto.order.*;
 import com.order.erp.domain.excel.OrderExcelVO;
 import com.order.erp.domain.vo.order.*;
 import com.order.erp.mapper.order.OrderBaseInfoMapper;
+import com.order.erp.service.admin.AdminUserService;
 import com.order.erp.service.order.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
@@ -38,10 +41,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.File;
 import java.io.IOException;
 import java.math.BigDecimal;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -97,6 +97,9 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
     @Resource
     private DataScope dataScope;
 
+    @Resource
+    private AdminUserService userService;
+
     /**
      * 通过ID查询单条数据
      * <p>
@@ -749,21 +752,111 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O
      * @return
      */
     private LambdaQueryWrapper<OrderBaseInfoDO> buildQueryByParam(OrderBaseInfoQueryVO queryVO) {
+        if (StringUtils.isNotBlank(queryVO.getCommitUserPhone())) {
+            AdminUserDO userDO = userService.getOne(new LambdaQueryWrapper<AdminUserDO>()
+                    .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
+                    .eq(AdminUserDO::getPhone, queryVO.getCommitUserPhone()).last("limit 1"));
+            queryVO.setCommitUserName(userDO.getUserName());
+        }
+        Set<Long> orderIds = new HashSet<>();
+        if (Objects.nonNull(queryVO.getProfitRateGqt()) || Objects.nonNull(queryVO.getProfitRateLqt())) {
+            List<OrderProfitAnalysisDO> profitAnalysisDOS = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>()
+                    .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
+                    .ge(Objects.nonNull(queryVO.getProfitRateLqt()), OrderProfitAnalysisDO::getProfitRate, queryVO.getProfitRateLqt())
+                    .le(Objects.nonNull(queryVO.getProfitRateGqt()), OrderProfitAnalysisDO::getProfitRate, queryVO.getProfitRateGqt()));
+            if (CollectionUtils.isNotEmpty(profitAnalysisDOS)) {
+                orderIds.addAll(profitAnalysisDOS.stream().map(OrderProfitAnalysisDO::getOrderId).collect(Collectors.toSet()));
+            } else {
+                orderIds.add(-1L);
+            }
+        }
+
+        if (StringUtils.isNotBlank(queryVO.getIdeaSource()) || StringUtils.isNotBlank(queryVO.getManualPreform())) {
+            List<OrderCompletionReportDO> reportDOS = reportService.list(new LambdaQueryWrapper<OrderCompletionReportDO>()
+                    .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
+                    .eq(StringUtils.isNotBlank(queryVO.getIdeaSource()), OrderCompletionReportDO::getIdeaSource, queryVO.getIdeaSource())
+                    .eq(StringUtils.isNotBlank(queryVO.getManualPreform()), OrderCompletionReportDO::getManualPreform, queryVO.getManualPreform()));
+            if (CollectionUtils.isNotEmpty(reportDOS)) {
+                Set<Long> reportOrderIds = reportDOS.stream().map(OrderCompletionReportDO::getOrderId).collect(Collectors.toSet());
+                if (CollectionUtils.isNotEmpty(orderIds)) {
+                    Collection<Long> set = CollectionUtil.intersection(orderIds, reportOrderIds);
+                    if (CollectionUtils.isEmpty(set)) {
+                        orderIds.add(-1L);
+                    } else {
+                        orderIds.addAll(set);
+                    }
+                } else {
+                    orderIds.addAll(reportOrderIds);
+                }
+            } else {
+                orderIds.add(-1L);
+            }
+        }
+
+        if (StringUtils.isNotBlank(queryVO.getPpConfirmResult()) || StringUtils.isNotBlank(queryVO.getSelfTestPassStartTime()) || StringUtils.isNotBlank(queryVO.getSelfTestPassEndTime())) {
+            List<OrderTrackStageDO> trackStageDOS = trackStageService.list(new LambdaQueryWrapper<OrderTrackStageDO>()
+                    .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
+                    .eq(StringUtils.isNotBlank(queryVO.getPpConfirmResult()), OrderTrackStageDO::getPpConfirmResult, queryVO.getPpConfirmResult())
+                    .eq(StringUtils.isNotBlank(queryVO.getSelfTestPassStartTime()), OrderTrackStageDO::getSelfTestPassTime, queryVO.getSelfTestPassStartTime())
+                    .eq(StringUtils.isNotBlank(queryVO.getSelfTestPassEndTime()), OrderTrackStageDO::getSelfTestPassTime, queryVO.getSelfTestPassEndTime())
+            );
+            if (CollectionUtils.isNotEmpty(trackStageDOS)) {
+                Set<Long> trackOrderIds = trackStageDOS.stream().map(OrderTrackStageDO::getOrderId).collect(Collectors.toSet());
+                if (CollectionUtils.isNotEmpty(orderIds)) {
+                    Collection<Long> set = CollectionUtil.intersection(orderIds, trackOrderIds);
+                    if (CollectionUtils.isEmpty(set)) {
+                        orderIds.add(-1L);
+                    } else {
+                        orderIds.addAll(set);
+                    }
+                } else {
+                    orderIds.addAll(trackOrderIds);
+                }
+            } else {
+                orderIds.add(-1L);
+            }
+        }
+
+        if (StringUtils.isNotBlank(queryVO.getMidCheckResult()) || StringUtils.isNotBlank(queryVO.getEndCheckResult())) {
+            List<OrderInspectionStageDO> inspectionStageDOS = inspectionStageService.list(new LambdaQueryWrapper<OrderInspectionStageDO>()
+                    .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
+                    .eq(StringUtils.isNotBlank(queryVO.getMidCheckResult()), OrderInspectionStageDO::getMidCheckResult, queryVO.getMidCheckResult())
+                    .eq(StringUtils.isNotBlank(queryVO.getEndCheckResult()), OrderInspectionStageDO::getEndCheckResult, queryVO.getEndCheckResult())
+            );
+            if (CollectionUtils.isNotEmpty(inspectionStageDOS)) {
+                Set<Long> inspectOrderIds = inspectionStageDOS.stream().map(OrderInspectionStageDO::getOrderId).collect(Collectors.toSet());
+                if (CollectionUtils.isNotEmpty(orderIds)) {
+                    Collection<Long> set = CollectionUtil.intersection(orderIds, inspectOrderIds);
+                    if (CollectionUtils.isEmpty(set)) {
+                        orderIds.add(-1L);
+                    } else {
+                        orderIds.addAll(set);
+                    }
+                } else {
+                    orderIds.addAll(inspectOrderIds);
+                }
+            } else {
+                orderIds.add(-1L);
+            }
+        }
+        if (CollectionUtils.isNotEmpty(orderIds)) {
+            queryVO.setOrderIds(orderIds);
+        }
         return new LambdaQueryWrapper<OrderBaseInfoDO>()
                 .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
                 .eq(StringUtils.isNotBlank(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode())
+                .eq(StringUtils.isNotBlank(queryVO.getCommitUserName()), OrderBaseInfoDO::getCreateBy, queryVO.getCommitUserName())
+                .ge(StringUtils.isNotBlank(queryVO.getCreateStartTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateStartTime())
+                .le(StringUtils.isNotBlank(queryVO.getCreateEndTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateEndTime())
+                .eq(StringUtils.isNotBlank(queryVO.getOrderStatus()), OrderBaseInfoDO::getOrderStatus, queryVO.getOrderStatus())
+                .eq(StringUtils.isNotBlank(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode())
                 .eq(StringUtils.isNotBlank(queryVO.getProjectNo()), OrderBaseInfoDO::getProjectNo, queryVO.getProjectNo())
                 .eq(StringUtils.isNotBlank(queryVO.getProductionDepartment()), OrderBaseInfoDO::getProductionDepartment, queryVO.getProductionDepartment())
-                .eq(StringUtils.isNotBlank(queryVO.getInnerNo()), OrderBaseInfoDO::getInnerNo, queryVO.getInnerNo())
-                .eq(StringUtils.isNotBlank(queryVO.getCustomerPo()), OrderBaseInfoDO::getCustomerPo, queryVO.getCustomerPo())
-                .eq(StringUtils.isNotBlank(queryVO.getCustomerStyle()), OrderBaseInfoDO::getCustomerStyle, queryVO.getCustomerStyle())
-                .eq(StringUtils.isNotBlank(queryVO.getModeleLo()), OrderBaseInfoDO::getModeleLo, queryVO.getModeleLo())
-                .eq(StringUtils.isNotBlank(queryVO.getCollection()), OrderBaseInfoDO::getCollection, queryVO.getCollection())
-                .eq(StringUtils.isNotBlank(queryVO.getPoColor()), OrderBaseInfoDO::getPoColor, queryVO.getPoColor())
-                .eq(StringUtils.isNotBlank(queryVO.getCnColor()), OrderBaseInfoDO::getCnColor, queryVO.getCnColor())
-                .eq(StringUtils.isNotBlank(queryVO.getProductStyle()), OrderBaseInfoDO::getProductStyle, queryVO.getProductStyle())
-                .eq(StringUtils.isNotBlank(queryVO.getOutboundType()), OrderBaseInfoDO::getOutboundType, queryVO.getOutboundType())
-                .eq(StringUtils.isNotBlank(queryVO.getPacketType()), OrderBaseInfoDO::getPacketType, queryVO.getPacketType())
+                .ge(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignStartTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignStartTime())
+                .le(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignEndTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignEndTime())
+                .ge(StringUtils.isNotBlank(queryVO.getOrderHodStartTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodStartTime())
+                .le(StringUtils.isNotBlank(queryVO.getOrderHodEndTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodEndTime())
+                .in(CollectionUtils.isNotEmpty(queryVO.getOrderIds()), OrderBaseInfoDO::getId, queryVO.getOrderIds())
                 .orderByDesc(OrderBaseInfoDO::getId)
                 ;
     }