如何开发自定义比较符原创
金蝶云社区-吴锐雄
吴锐雄
15人赞赏了该文章 1,028次浏览 未经作者许可,禁止转载编辑于2024年07月04日 16:36:38

关键词:自定义比较符,过滤


一、需求

自定义比较符开发

(1)日期字段,过滤今年的数据

(2)基础资料字段,过滤某个特征值

(3)组织字段,过滤上级组织和同级组织

(4)单据转换中使用自定义比较符脚本


二、思路与方案

【配置工具】可以创建自定义比较符。同时,编写代码,构造QFilter对象,完成数据过滤。

单据转换时,会调用自定义比较符插件(继承AbstractFilterContantParser)的getScriptFilter方法,需要重写这个方法。


三、实现过程

1.日期字段,过滤今年的数据

创建自定义比较符如下图,有几个需要注意的地方:

适用类型,指的是控件类型,创建了比较符之后,还需要在设计器中,选中控件节点,添加这个自定义比较符才会生效。

应用,只有应用中的页面,才能使用这个自定义比较符。

解析类,派生自AbstractFilterContantParser通过java代码实现自定义比较符的业务逻辑。

image.png


ThisYearFilterContantParser这个类的类路径,要填在在自定义比较符的解析类上。

解析类插件代码如下:

package kdec.customfilter;
import com.kingdee.guard.service.checkrule.QCP;
import kd.bos.entity.filter.AbstractFilterContantParser;
import kd.bos.entity.filter.FilterContantParserArgs;
import kd.bos.orm.query.QFilter;

import java.util.Calendar;

/**
 * 自定义比较符:今年
 */
public class ThisYearFilterContantParser extends AbstractFilterContantParser {

    @Override
    protected QFilter getQFilter(FilterContantParserArgs filterContantParserArgs) {
        String fieldName = filterContantParserArgs.getFieldName();

        // 构建今年第一天的calendar对象
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_YEAR, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);

        QFilter qFilter = new QFilter(fieldName, QCP.large_equals, calendar.getTime());

        return qFilter;
    }

    @Override
    protected String getScriptFilter(FilterContantParserArgs filterContantParserArgs) {
        return null;
    }

}



单据中,选中控件节点

image.png


添加自定义比较符

image.png



2.基础资料字段,过滤某个特征值

参考文章:

https://vip.kingdee.com/link/s/lLE8M


3.组织字段,过滤上级组织和同级组织

参考文章:

https://vip.kingdee.com/link/s/lLEns


4.单据转换中使用自定义比较符

参考文章:

https://vip.kingdee.com/link/s/lPQ9F



四、效果图

在单据列表中添加对应的控件,这个控件必须是加了自定义控件比较符的,才能生效。

在常用条件中添加日期字段。

image.png


效果1:表头过滤出现自定义比较符image.png


效果2:过滤面板也出现了自定义比较符

image.png

效果3:基础服务云,安全管理,数据规则方案(或者特殊数据权限)使用自定义比较符

image.png



五、开发环境版本

无限制


六、参考资料

自定义比较符




赞 15