diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 1ee85295..01840c53 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -412,44 +412,47 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { } // 使用 EXISTS 针对 selectType 的细粒度筛选(使用参数占位符防注入) - if (hasSelectType && hasAnyItemFilter) { - StringBuilder existsSql = new StringBuilder(); - List existsArgs = new ArrayList<>(); - if ("product".equals(bo.getSelectType())) { - existsSql.append(" EXISTS (SELECT 1 FROM wms_product p WHERE p.del_flag = 0 AND p.product_id = mc.item_id"); - String clause; - clause = buildOrLikeClause("p.product_name", bo.getItemName(), existsArgs); - if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); - clause = buildOrLikeClause("p.material", bo.getItemMaterial(), existsArgs); - if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); - clause = buildOrLikeClause("p.manufacturer", bo.getItemManufacturer(), existsArgs); - if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); - clause = buildOrLikeClause("p.surface_treatment_desc", bo.getItemSurfaceTreatmentDesc(), existsArgs); - if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); - clause = buildOrLikeClause("p.zinc_layer", bo.getItemZincLayer(), existsArgs); - if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); - clause = buildOrLikeClause("p.specification", bo.getItemSpecification(), existsArgs); - if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); - existsSql.append(")"); - } else if ("raw_material".equals(bo.getSelectType())) { - existsSql.append(" EXISTS (SELECT 1 FROM wms_raw_material r WHERE r.del_flag = 0 AND r.raw_material_id = mc.item_id"); - String clause; - clause = buildOrLikeClause("r.raw_material_name", bo.getItemName(), existsArgs); - if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); - clause = buildOrLikeClause("r.material", bo.getItemMaterial(), existsArgs); - if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); - clause = buildOrLikeClause("r.manufacturer", bo.getItemManufacturer(), existsArgs); - if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); - clause = buildOrLikeClause("r.surface_treatment_desc", bo.getItemSurfaceTreatmentDesc(), existsArgs); - if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); - clause = buildOrLikeClause("r.zinc_layer", bo.getItemZincLayer(), existsArgs); - if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); - clause = buildOrLikeClause("r.specification", bo.getItemSpecification(), existsArgs); - if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); - existsSql.append(")"); - } - if (existsSql.length() > 0) { - qw.apply(existsSql.toString(), existsArgs.toArray()); + if (hasSelectType) { + qw.eq("mc.item_type", bo.getSelectType()); + if (hasAnyItemFilter) { + StringBuilder existsSql = new StringBuilder(); + List existsArgs = new ArrayList<>(); + if ("product".equals(bo.getSelectType())) { + existsSql.append(" EXISTS (SELECT 1 FROM wms_product p WHERE p.del_flag = 0 AND p.product_id = mc.item_id"); + String clause; + clause = buildOrLikeClause("p.product_name", bo.getItemName(), existsArgs); + if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); + clause = buildOrLikeClause("p.material", bo.getItemMaterial(), existsArgs); + if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); + clause = buildOrLikeClause("p.manufacturer", bo.getItemManufacturer(), existsArgs); + if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); + clause = buildOrLikeClause("p.surface_treatment_desc", bo.getItemSurfaceTreatmentDesc(), existsArgs); + if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); + clause = buildOrLikeClause("p.zinc_layer", bo.getItemZincLayer(), existsArgs); + if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); + clause = buildOrLikeClause("p.specification", bo.getItemSpecification(), existsArgs); + if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); + existsSql.append(")"); + } else if ("raw_material".equals(bo.getSelectType())) { + existsSql.append(" EXISTS (SELECT 1 FROM wms_raw_material r WHERE r.del_flag = 0 AND r.raw_material_id = mc.item_id"); + String clause; + clause = buildOrLikeClause("r.raw_material_name", bo.getItemName(), existsArgs); + if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); + clause = buildOrLikeClause("r.material", bo.getItemMaterial(), existsArgs); + if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); + clause = buildOrLikeClause("r.manufacturer", bo.getItemManufacturer(), existsArgs); + if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); + clause = buildOrLikeClause("r.surface_treatment_desc", bo.getItemSurfaceTreatmentDesc(), existsArgs); + if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); + clause = buildOrLikeClause("r.zinc_layer", bo.getItemZincLayer(), existsArgs); + if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); + clause = buildOrLikeClause("r.specification", bo.getItemSpecification(), existsArgs); + if (!clause.isEmpty()) existsSql.append(" AND ").append(clause); + existsSql.append(")"); + } + if (existsSql.length() > 0) { + qw.apply(existsSql.toString(), existsArgs.toArray()); + } } }