自定义比较符

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

自定义比较符

# 自定义比较符 ## 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、 业务场景 标准产品预置了通用的过滤比较符,但是有些特殊的场景可能用标准的比较符无法实现过滤,所以需要自定...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息