From 256c59555e2a5dffdd6d127a519d4f0944b80e7f Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期三, 14 五月 2025 16:29:38 +0800 Subject: [PATCH] #物料表动态字段搜索 --- rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java | 34 +++++++++++++++++++++++++++++++++- 1 files changed, 33 insertions(+), 1 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java index 46490ab..039e485 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java @@ -1,8 +1,14 @@ package com.vincent.rsf.server.common.utils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.TableInfo; +import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; +import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.SpringUtils; import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.common.domain.BaseParam; +import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.system.entity.Fields; import com.vincent.rsf.server.system.entity.FieldsItem; import com.vincent.rsf.server.system.service.FieldsItemService; @@ -174,4 +180,30 @@ saveFields(params, params.get("index").toString()); } } -} + + public static <T> QueryWrapper<T> setFieldsFilters(QueryWrapper<T> queryWrapper, PageParam<T, BaseParam> pageParam, Class<T> entityClass) { + // 鍔ㄦ�佽幏鍙栬〃鍚� + TableInfo tableInfo = TableInfoHelper.getTableInfo(entityClass); + String tableName = tableInfo.getTableName(); + + FieldsService fieldsService = SpringUtils.getBean(FieldsService.class); + Map<String, Object> map = pageParam.getWhere().getFields(); + + for (String key : map.keySet()) { + Object val = map.get(key); + Fields fields = fieldsService.getOne(new LambdaQueryWrapper<Fields>().eq(Fields::getFields, key)); + if (!Cools.isEmpty(fields)) { + String applySql = String.format( + "EXISTS (SELECT 1 FROM sys_fields_item fie " + + "WHERE %s.fields_index IS NOT NULL " + + "AND fie.uuid = %s.fields_index " + + "AND fie.fields_id = '%s' " + + "AND fie.value = '%s')", + tableName, tableName, fields.getId(), val + ); + queryWrapper.apply(applySql); + } + } + return queryWrapper; + } +} \ No newline at end of file -- Gitblit v1.9.1