Merge branch '0.8.X' of https://gitee.com/hdka/klp-oa into 0.8.X

This commit is contained in:
砂糖
2026-01-15 11:03:15 +08:00

View File

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