diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderDO.java
index bad716bfe..ed4b58f94 100644
--- a/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderDO.java
+++ b/mhd_wms/src/main/java/com/mhd/wms/domain/stockInOrder/repository/todo/StockInOrderDO.java
@@ -346,4 +346,10 @@ public class StockInOrderDO extends BaseVOEntity {
@ApiModelProperty(name = "创建时间查询条件结束日期")
private String createTimeEnd;
+
+ @ApiModelProperty("入库明细-物料名称(商品名称),模糊匹配")
+ private String materialName;
+
+ @ApiModelProperty("入库明细-物料编码,模糊匹配")
+ private String materialCode;
}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockInOrder/StockInOrderAssembler.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockInOrder/StockInOrderAssembler.java
index 6ddd1e5cc..08fe1d665 100644
--- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockInOrder/StockInOrderAssembler.java
+++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/assember/stockInOrder/StockInOrderAssembler.java
@@ -35,6 +35,13 @@ public class StockInOrderAssembler {
// 确保查询条件字段被正确传递(查询条件字段需要明确传递,避免被IgnoreNullUtil忽略)
stockInOrderDO.setCreateTimeStart(stockInOrderDTO.getCreateTimeStart());
stockInOrderDO.setCreateTimeEnd(stockInOrderDTO.getCreateTimeEnd());
+ // 列表筛选:前端常传「名称 (编码)」展示串,库内多为纯名称,去掉末尾括号段再 LIKE
+ if (stockInOrderDTO.getMaterialName() != null && !stockInOrderDTO.getMaterialName().isEmpty()) {
+ String normalized = normalizeDetailMaterialNameForQuery(stockInOrderDTO.getMaterialName());
+ stockInOrderDO.setMaterialName(normalized.isEmpty()
+ ? stockInOrderDTO.getMaterialName().trim()
+ : normalized);
+ }
return stockInOrderDO;
}
@@ -104,4 +111,24 @@ public class StockInOrderAssembler {
return stockInOrderDO;
}
+ /**
+ * 去掉物料展示名末尾的「 (xxx) / (xxx)」等,便于与库内 material_name 模糊匹配。
+ */
+ private static String normalizeDetailMaterialNameForQuery(String raw) {
+ if (raw == null) {
+ return null;
+ }
+ String s = raw.trim();
+ // 循环去掉末尾多组括号(兼容「名称 (编码)」或重复后缀)
+ String next;
+ do {
+ next = s.replaceFirst("[\\s\\u3000]*[((][^))]*[))]\\s*$", "").trim();
+ if (next.equals(s)) {
+ break;
+ }
+ s = next;
+ } while (!s.isEmpty());
+ return s;
+ }
+
}
diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java
index 90ba0999f..dc013826c 100644
--- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java
+++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/stockInOrder/StockInOrderDTO.java
@@ -343,4 +343,10 @@ public class StockInOrderDTO extends StockInOrderBaseDTO {
@ApiModelProperty(name = "创建时间查询条件结束日期")
private String createTimeEnd;
+
+ @ApiModelProperty("入库明细-物料名称(商品名称),模糊匹配,与前端参数 materialName 一致")
+ private String materialName;
+
+ @ApiModelProperty("入库明细-物料编码,模糊匹配,与前端参数 materialCode 一致")
+ private String materialCode;
}
diff --git a/mhd_wms/src/main/resources/mapper/stockInOrder/StockInOrderMapper.xml b/mhd_wms/src/main/resources/mapper/stockInOrder/StockInOrderMapper.xml
index 13c75df64..6e75010e5 100644
--- a/mhd_wms/src/main/resources/mapper/stockInOrder/StockInOrderMapper.xml
+++ b/mhd_wms/src/main/resources/mapper/stockInOrder/StockInOrderMapper.xml
@@ -392,6 +392,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and date_format(a.create_time,'%Y-%m-%d') <= #{createTimeEnd}
+
+
+ and exists (
+ select 1 from in_material_detail imd
+ left join material_base_info mb on imd.material_base_info_id = mb.material_base_info_id and mb.del_flag = 1
+ where imd.in_order_number = a.in_order_number
+ and imd.del_flag = 1
+ and (imd.level is null or imd.level = 1)
+
+ and (
+ imd.material_name like concat('%', #{materialName}, '%')
+ or mb.material_name like concat('%', #{materialName}, '%')
+ )
+
+
+ and (
+ imd.material_code like concat('%', #{materialCode}, '%')
+ or mb.material_code like concat('%', #{materialCode}, '%')
+ )
+
+ )
+
and a.del_flag = #{delFlag}
and a.del_flag = 1