自定义比较符
# 自定义比较符
## 1、 业务场景
标准产品预置了通用的过滤比较符,但是有些特殊的场景可能用标准的比较符无法实现过滤,所以需要自定义过滤比较符,比如财务的期间,财务的期间是一个动态的概念,根据不同的上下文来决定的时间范围,如果需要用户自己去选的话可能太复杂,用户需要手工将其转换为时间范围过滤,所以可以将这个逻辑预置为自定义比较符可以简化用户的操作。
## 2、自定义比较符配置
打开【公共设置】->【过滤方案配置】->【比较符自定义】,添加自定义比较符 ![658e85740dfa1e0001f44aaf.webp](/download/01004c11a2eec5d94e8fbd538b571eb09095.webp) - 编码:命名合适的编码 - 名称:命名合适的名称 - 适用类型:所有字段类型 - 解析类:业务逻辑实现接口 - 应用:按应用隔离比较符 - 创建人:就是该记录创建人
## 3、列表应用自定义比较符
设置好了过滤比较符的后打开【财务应收单】,选“表单”->单据日期控件->“自定义比较符”,点击属性打开属性编辑界面选择需要的比较符,选择比较符的适用字段,选择一个“单据日期”关联设置自定义比较符,保存,效果如下: ![658e8571bb8b890001811dfa.webp](/download/0100099cdc382487414faa803f593969809f.webp) 表头过滤效果: ![658e85727e022800012a5517.webp](/download/0100cd815227786644fe957cbcc4a6d62d32.webp)
## 4、场景与示例
下面是使用自定义比较符实现一个前N天的查询逻辑,业务实现类需要继承AbstractFilterContantParser
``` java
/**
* 列表自定义比较符实现值录入案例插件
* 前 n 天
*/
public class CustomFilterLastNDaysPlugin extends AbstractFilterContantParser {
@Override
protected QFilter getQFilter(FilterContantParserArgs filterContantParserArgs) {
Calendar cal = Calendar.getInstance();
Date endDate = cal.getTime();
List<String> value = filterContantParserArgs.getFilterRow().getValue();
// 前 n 天
int n = 0;
if (value != null) {
n = Integer.parseInt(value.get(0));
}
cal.add(Calendar.DATE, -n);
Date startDate = cal.getTime();
QFilter qFilter = new QFilter(filterContantParserArgs.getFieldName(), ">=", startDate);
qFilter.and(new QFilter(filterContantParserArgs.getFieldName(), "<=", endDate));
return qFilter;
}
@Override
protected String getScriptFilter(FilterContantParserArgs filterContantParserArgs) {
Calendar cal = Calendar.getInstance();
Date endDate = cal.getTime();
List<String> value = filterContantParserArgs.getFilterRow().getValue();
// 前 n 天
int n = 0;
if (value != null) {
n = Integer.parseInt(value.get(0));
}
cal.add(Calendar.DATE, -n);
Date startDate = cal.getTime();
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return String.format("%s >= DATE(%s) and %s <= DATE(%s) ", filterContantParserArgs.getFieldName(),
KDDateFormatUtils.getDateFormat().format(startDate), filterContantParserArgs.getFieldName(), KDDateFormatUtils.getDateFormat().format(endDate));
}
}
```
自定义比较符
# 自定义比较符 ## 1、 业务场景 标准产品预置了通用的过滤比较符,但是有些特殊的场景可能用标准的比较符无法实现过滤,所以需要自定...
点击下载文档
本文2024-09-23 00:17:34发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-138536.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章