记一次多类别基础资料查询问题原创
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实际执行查询时却是这样的:
业务单据查询时,如果有基础资料条件,会先用基础资料过滤查询出基础资料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)
四、效果展示
赞 0
0人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读