星瀚HR——人员档案列表调整过滤条件原创
金蝶云社区-李武洲
李武洲
14人赞赏了该文章 385次浏览 未经作者许可,禁止转载编辑于2024年06月25日 08:56:03

场景1:常用过滤字段对值进行过滤(比如用工关系类型不显示禁用的值)

image.png

解决方式:

1、扩展人员档案列表元数据(hspm_erfilelist),在扩展的元数据上绑定二开插件

2、在插件中,重写filterColumnSetFilter方法,对数据进行过滤,可参考以下代码:

public class Test extends AbstractListPlugin {

    @Override
    public void filterColumnSetFilter(SetFilterEvent evt) {
        super.filterColumnSetFilter(evt);
        // 获取过滤字段控件映射的实体字段名
        String fieldName = evt.getFieldName();
        if (HRStringUtils.equals(fieldName, "hrpi_empentrel.laborreltype.name")) {
            // 查询可用状态的用工关系类型
            HRBaseServiceHelper helper = new HRBaseServiceHelper("hbss_laborreltype");
            QFilter qFilter = new QFilter("enable", QCP.equals, "1");
            DynamicObjectCollection collection = helper.queryOriginalCollection("name", new QFilter[]{qFilter});
            List<String> nameList = new ArrayList<>();
            if (null != collection && !collection.isEmpty()) {
                 nameList = collection.stream().map(dy -> dy.getString("name")).collect(Collectors.toList());
            }
            // 常用过滤视图下的用工关系类型只显示可用状态的数据
            evt.addCustomQFilter(new QFilter("name", QFilter.in, nameList));
        }
    }
}


场景2:常用过滤字段设置默认值(比如默认选中离职档案外的所有档案类型)

image.png

解决方式:

1、扩展人员档案列表元数据(hspm_erfilelist),在扩展的元数据上绑定二开插件

2、在插件中,重写filterContainerInit方法,在该方法中判断如果过滤字段是档案类型,对档案类型设置默认值,可参考以下代码:

public class Test extends AbstractListPlugin {
   @Override
    public void filterContainerInit(FilterContainerInitArgs args) {
        super.filterContainerInit(args);
        List<FilterColumn> commonFilterColumns = args.getCommonFilterColumns();
        commonFilterColumns.get(0).setDefaultValues();
        // 常用条件中的档案类型,默认选中离职档案外的所有类型
        FilterColumn filterColumn = args.getFilterColumn("filetype.name");
        if (filterColumn != null) {
            HRBaseServiceHelper helper = new HRBaseServiceHelper("hspm_erfiletype");
            QFilter qFilter = new QFilter("number", QCP.not_equals, "1050_S");
            DynamicObjectCollection collection = helper.queryOriginalCollection("id", new QFilter[]{qFilter});
            List<String> nameList;
            if (null != collection && !collection.isEmpty()) {
                nameList = collection.stream().map(dy -> dy.getString("id")).collect(Collectors.toList());
                filterColumn.setDefaultValues(nameList.toString());
            }
        }
    }
 }

场景3:删除常用过滤/方案查询中的查询字段(比如删除常用条件中的任职类型、方案查询字段中的常驻工作地)

image.png

image.png

解决方式:

1、扩展人员档案列表元数据(hspm_erfilelist),在扩展的元数据上绑定二开插件

2、在插件中,重写filterContainerInit方法,在方法中可以分别获取到方案查询中的字段和常用条件中的字段,然后根据需要将对应的字段移除。,可参考以下代码:

public class Test extends AbstractListPlugin {

    @Override
    public void filterContainerInit(FilterContainerInitArgs args) {
        super.filterContainerInit(args);
        // 方案查询字段中删除常驻工作地
        args.getSchemeFilterColumns().removeIf(col -> (HRStringUtils.equals(col.getFieldName(),     
           "hrpi_empposorgrel.workplace.name")));
        // 常用查询条件中任职类型
        args.getCommonFilterColumns().removeIf(col -> (HRStringUtils.equals(col.getFieldName(), 
           "hrpi_empposorgrel.postype.name")));
    }
}


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

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0