diff --git a/common/common-online/src/main/java/apelet/common/online/abstractplugin/ListDataOrmService.java b/common/common-online/src/main/java/apelet/common/online/abstractplugin/ListDataOrmService.java index 682415c..01b1119 100644 --- a/common/common-online/src/main/java/apelet/common/online/abstractplugin/ListDataOrmService.java +++ b/common/common-online/src/main/java/apelet/common/online/abstractplugin/ListDataOrmService.java @@ -3,6 +3,7 @@ package apelet.common.online.abstractplugin; import apelet.common.core.object.MyOrderParam; import apelet.common.core.object.ObjectCollection; import apelet.common.core.object.ResponseResult; +import apelet.common.core.object.TokenData; import apelet.common.online.abstractplugin.model.GridData; import apelet.common.online.dto.OnlineEventPluginExecuteDto; import apelet.common.online.dto.OnlineFilterDto; @@ -12,7 +13,9 @@ import apelet.common.online.model.constant.FieldFilterType; import apelet.common.online.model.constant.RelationType; import apelet.common.orm.impl.*; import apelet.common.orm.parser.FilterParser; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -84,6 +87,9 @@ public class ListDataOrmService extends ListDataService { getOrmSelector(widgetList, selectorSet, masterTable, new HashMap<>()); Filter filter = getFilter(); if (StrUtil.isNotBlank(conditionExpression)) { + TokenData tokenData = TokenData.takeFromRequest(); + // 解析 conditionExpression 中的 ${字段名} 占位符,从 tokenData 中取值填充 + conditionExpression = resolvePlaceholders(conditionExpression, tokenData); Filter parsed = FilterParser.parse(conditionExpression); if (CollUtil.isNotEmpty(parsed.getItems())) { for (FilterItem item : parsed.getItems()) { @@ -102,7 +108,6 @@ public class ListDataOrmService extends ListDataService { } if (!sorter.startsWithKey("create_time")) { SorterItem sorterItem = new SorterItem("create_time"); - ; sorterItem.setSortType(SortType._DESC); sorter.add(sorterItem); } @@ -125,6 +130,21 @@ public class ListDataOrmService extends ListDataService { } + /** + * 解析 conditionExpression 中的 ${字段名} 占位符,从 tokenData 中取值填充。 + * 如 ${loginName} → 当前登录用户名,${deptId} → 当前用户部门ID。 + */ + private String resolvePlaceholders(String expression, TokenData tokenData) { + List varNames = ReUtil.findAll("\\$\\{(\\w+)\\}", expression, 1); + for (String fieldName : varNames) { + Object value = BeanUtil.getProperty(tokenData, fieldName); + if (value != null) { + expression = expression.replace("${" + fieldName + "}", value.toString()); + } + } + return expression; + } + public void getOrmSelector(JSONObject jsonObject, Set selectorSet, OnlineTable masterTable, Map entryIdMap) { Map columnMap = masterTable.getColumnMap(); JSONArray array = jsonObject.getJSONArray("childWidgetList"); diff --git a/common/common-online/src/main/java/apelet/common/online/dao/OnlineDictMapper.java b/common/common-online/src/main/java/apelet/common/online/dao/OnlineDictMapper.java index 2582d3d..6b07e32 100644 --- a/common/common-online/src/main/java/apelet/common/online/dao/OnlineDictMapper.java +++ b/common/common-online/src/main/java/apelet/common/online/dao/OnlineDictMapper.java @@ -23,4 +23,12 @@ public interface OnlineDictMapper extends BaseDaoMapper { */ List getOnlineDictList( @Param("onlineDictFilter") OnlineDict onlineDictFilter, @Param("orderBy") String orderBy); + + /** + * 根据字典名称获取字典信息 + * + * @param dictName + * @return + */ + List queryByDictName(@Param("dictName") String dictName); } diff --git a/common/common-online/src/main/java/apelet/common/online/dao/mapper/OnlineDictMapper.xml b/common/common-online/src/main/java/apelet/common/online/dao/mapper/OnlineDictMapper.xml index 80e7f93..7147726 100644 --- a/common/common-online/src/main/java/apelet/common/online/dao/mapper/OnlineDictMapper.xml +++ b/common/common-online/src/main/java/apelet/common/online/dao/mapper/OnlineDictMapper.xml @@ -62,4 +62,8 @@ ORDER BY ${orderBy} + +