记一次多类别基础资料查询问题原创
金蝶云社区-biubiubiu_
biubiubiu_
0人赞赏了该文章 227次浏览 未经作者许可,禁止转载编辑于2024年07月12日 16:46:20

一、背景

        某个场景要使用多类别基础资料字段作为查询条件过滤单据数据。


二、想要的效果

以库存中的货主字段为例:

货主类型字段:ownertype,可选项(组织bos_org,供应商bd_supplier,客户bd_customer)

货主字段:owner

想要的QFilter:

((ownertype = 'bos_org' AND owner.number = '00') OR (ownertype = 'bd_supplier' AND owner.number = '002-00031094') OR (ownertype = 'bd_customer' AND owner.number = 'Cus-010062'))

但是构建出QFilter实际执行查询时却是这样的:

image.png

业务单据查询时,如果有基础资料条件,会先用基础资料过滤查询出基础资料id。


三、实现方式

多类别基础资料过滤条件需要用MultiBaseDataFilterValue来构建:

MultiBaseDataFilterValue multiBaseDataFilterValue1 = new MultiBaseDataFilterValue("bos_org", "number", "00");
QFilter filter1 = new QFilter(dataRuleQFilter.getProperty(), QFilter.equals, multiBaseDataFilterValue1);
MultiBaseDataFilterValue multiBaseDataFilterValue2 = new MultiBaseDataFilterValue("bd_supplier", "number", "002-00031094");
QFilter filter2 = new QFilter(dataRuleQFilter.getProperty(), QFilter.equals, multiBaseDataFilterValue2);
MultiBaseDataFilterValue multiBaseDataFilterValue3 = new MultiBaseDataFilterValue("bd_customer", "number", "Cus-010062");
QFilter filter3 = new QFilter(dataRuleQFilter.getProperty(), QFilter.equals, multiBaseDataFilterValue3);
filter1.or(filter2).or(filter3)


四、效果展示

image.png

图标赞 0
0人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!