列表常用条件中的分组基础资料F7列表的过滤原创
金蝶云社区-陈来珍
陈来珍
2人赞赏了该文章 772次浏览 未经作者许可,禁止转载编辑于2023年10月24日 15:00:17

关键词:常用过滤条件、分组基础资料、F7列表

一、需求

在采购订单列表的常用过滤条件中,添加一个基础资料,该基础资料绑定的物品(分组基础资料类型),要求弹出F7列表是对左树分组以及右表的列表数据做过滤,过滤要求是,只保留电子产品。

image.png

image.png

二、思路与方案

过滤容器内F7弹出前的处理方法filterContainerBeforeF7Select完成右表的过滤,而物品F7列表左树的过滤需要在物品列表插件初始化事件initializeTree中设置。

三、实现过程

1、物品F7列表右表过滤

这里过滤右表的字段为分组字段的number字段进行过滤

/**
 * 采购订单列表插件
 */
public class OrderFilterListPlugin extends AbstractListPlugin implements Plugin {
    @Override
    public void filterContainerBeforeF7Select(BeforeFilterF7SelectEvent args) {
        List<QFilter> qFilters = new ArrayList<>();
        QFilter filter =new QFilter("group.number", QCP.equals, "Electronics");
        qFilters.add(filter);
        args.setQfilters(qFilters);//设置过滤条件,过滤右表的数据
        args.addCustomParam("group", "Electronics");//将单据的参数传递到基础资料页面,只查看电子产品类别的物品
        super.filterContainerBeforeF7Select(args);
    }
}

2、物品F7列表左树过滤

直接对物品的分组字段的编码number做过滤。

/**
 * 物品列表插件
 */
public class GoodsFilterListPlugin extends AbstractTreeListPlugin implements Plugin {
    @Override
    public void initializeTree(EventObject e) {
        Map<String, Object> map=this.getView().getFormShowParameter().getCustomParams();
        String  group=(String) map.get("group");
        if(StringUtils.isNotEmpty(group)) {
            this.getTreeModel().getTreeFilter().add(new QFilter("number", QCP.equals, group));
        }
        super.initializeTree(e);
    }
}

四、效果图

image.png

五、开发环境版本

V5.0.011

六、参考资料

https://vip.kingdee.com/knowledge/specialDetail/218022218066869248?category=238607792339561472&id=224182194414614272&productLineId=29


赞 2