Browse Source

fix(filter): 修复过滤器中JSON对象值处理问题

- 添加对columnValue为JSONObject类型的检查和转换逻辑
- 提取JSONObject中的id字段作为实际过滤值
- 确保所有过滤条件使用转换后的值进行比较
- 保持现有过滤器功能的向后兼容性
feature/2026-07-ccc-dev
chenchuchuan 4 days ago
parent
commit
289ce088c8
  1. 14
      common/common-online/src/main/java/apelet/common/online/abstractplugin/ListDataOrmService.java

14
common/common-online/src/main/java/apelet/common/online/abstractplugin/ListDataOrmService.java

@ -40,14 +40,20 @@ public class ListDataOrmService extends ListDataService { @@ -40,14 +40,20 @@ public class ListDataOrmService extends ListDataService {
protected Filter getFilter() {
Filter f = super.getFilter();
for (OnlineFilterDto onlineFilterDto : filterDtoList) {
Object columnValue = onlineFilterDto.getColumnValue();
if (columnValue instanceof JSONObject) {
JSONObject jsonObject = (JSONObject) columnValue;
columnValue = jsonObject.get("id");
}
if (onlineFilterDto.getFilterType() == FieldFilterType.EQUAL_FILTER) {
f.add(new FilterItem(onlineFilterDto.getColumnName(), FilterItem.equals, onlineFilterDto.getColumnValue()));
f.add(new FilterItem(onlineFilterDto.getColumnName(), FilterItem.equals, columnValue));
} else if (onlineFilterDto.getFilterType() == FieldFilterType.EXSITS) {
f.add(new FilterItem(null, FilterItem.EXISTS, onlineFilterDto.getColumnValue()));
f.add(new FilterItem(null, FilterItem.EXISTS, columnValue));
} else if (onlineFilterDto.getFilterType() == FieldFilterType.IN_LIST_FILTER) {
f.add(new FilterItem(onlineFilterDto.getColumnName(), FilterItem.INNER, onlineFilterDto.getColumnValue()));
f.add(new FilterItem(onlineFilterDto.getColumnName(), FilterItem.INNER, columnValue));
} else if (onlineFilterDto.getFilterType() == FieldFilterType.LIKE_FILTER) {
f.add(new FilterItem(onlineFilterDto.getColumnName(), FilterItem.like, "%" + onlineFilterDto.getColumnValue() + "%"));
f.add(new FilterItem(onlineFilterDto.getColumnName(), FilterItem.like, "%" + columnValue + "%"));
} else if (onlineFilterDto.getFilterType() == FieldFilterType.RANGE_FILTER) {
if (onlineFilterDto.getColumnValueStart() != null) {
f.add(new FilterItem(onlineFilterDto.getColumnName(), FilterItem.large_equals, onlineFilterDto.getColumnValueStart()));

Loading…
Cancel
Save