EAS_如何给客户端表头和分录的F7加过滤条件

image

 1、如图,给表头银行账号和分录的费用类型和税率添加过滤条件,其中分录的费用类型和税率为自定义核算项目

@Override
    public void onLoad() throws Exception {
        super.onLoad();
        Object fylx_F7 = this.kdtEntrys.getColumn("fylx").getEditor().getComponent();
        if(fylx_F7 instanceof KDBizPromptBox){
             KDBizPromptBox prmtF7 =(KDBizPromptBox )fylx_F7;
             //现在prmtF7控件对象得到了,就可以设置过滤条件了
             EntityViewInfo entityView =  new EntityViewInfo();
             FilterInfo filter  = new FilterInfo();
             //设置过滤条件
             filter.getFilterItems().add(new FilterItemInfo("group.number","005",CompareType.EQUALS));
             entityView.setFilter(filter);
             //F7控件设置实体视图信息
             prmtF7.setEntityViewInfo(entityView);
         }
        
        Object rate_F7 = this.kdtEntrys.getColumn("taxRate").getEditor().getComponent();
        if(rate_F7 instanceof KDBizPromptBox){
             KDBizPromptBox prmtF7 =(KDBizPromptBox )rate_F7;
             UIUtils.addF7Filter(prmtF7, new FilterItemInfo("group.number","0009"), "new", "and");
             
//             //现在prmtF7控件对象得到了,就可以设置过滤条件了
//             EntityViewInfo entityView =  new EntityViewInfo();
//             FilterInfo filter  = new FilterInfo();
//             //设置过滤条件
//             filter.getFilterItems().add(new FilterItemInfo("group.number","0009",CompareType.EQUALS));
//             entityView.setFilter(filter);
//             //F7控件设置实体视图信息
//             prmtF7.setEntityViewInfo(entityView);
         }
        
        //报销人部门
        KDBizPromptBox prmtBxrF7 =(KDBizPromptBox )this.prmtbxrbm;
        //现在prmtF7控件对象得到了,就可以设置过滤条件了
        EntityViewInfo bxrView = new EntityViewInfo();
        FilterInfo bxrFilter = new FilterInfo();
        //设置过滤条件
        CompanyOrgUnitInfo currentFIUnit = SysContext.getSysContext().getCurrentFIUnit();
        bxrFilter.getFilterItems().add(new FilterItemInfo("cu.id",currentFIUnit.getId().toString(),CompareType.EQUALS));
        bxrView.setFilter(bxrFilter);
        //F7控件设置实体视图信息
        prmtBxrF7.setEntityViewInfo(bxrView);
        
        //设置银行账户过滤
        UIUtils.addF7Filter(this.prmtfkyhzh, new FilterItemInfo("company.id", currentFIUnit.getId().toString()), "new", "and");
        UIUtils.addF7Filter(this.prmtfkyhzh, new FilterItemInfo("isClosed", false), "append", "and");
    }
    

这里展示了2种方式,这里UIUtils是我封装的工具类,可实现过滤条件的初始化和追加等,具体如下

/**  
 * @Title: UIUtils.java
 * @Description: TODO
 * @author zhanglf
 * @date 2024-4-22上午08:51:46
 */ 
package com.kingdee.eas.custom.utils;

import com.kingdee.bos.BOSException;
import com.kingdee.bos.ctrl.extendcontrols.KDBizPromptBox;
import com.kingdee.bos.metadata.entity.EntityViewInfo;
import com.kingdee.bos.metadata.entity.FilterInfo;
import com.kingdee.bos.metadata.entity.FilterItemInfo;

/**  
 * @Description: TODO
 * @author zhanglf
 * @date 2024-2-4下午03:13:17
 */
public class UIUtils {
    
    /**
     * 
     * @Description: 获取F7过滤条件
     * @author zhanglf 2024-2-4下午03:18:46
     * @param prmt
     * @return FilterInfo
     */
    public static FilterInfo getF7Filter(KDBizPromptBox prmt){
        EntityViewInfo evi = null;
        if (prmt.getEntityViewInfo() !=null) {
            evi = prmt.getEntityViewInfo();
        }else {
            evi = new EntityViewInfo();
        }
        FilterInfo filter = null;
        if (evi.getFilter() !=null) {
            filter = evi.getFilter();
        }else{
            filter = new FilterInfo();
        }
        evi.setFilter(filter);
        prmt.setEntityViewInfo(evi);
        return filter;
        
    }
    
    /**
     * 
     * @Description: F7控件增加过滤条件,可选择新增还是追加、以及追加的逻辑FilterItemInfo增加
     * @author zhanglf 2024-2-4下午03:24:59
     * @param prmt
     * @param filterItemInfo
     * @param mode    append:追加 | new :删除全部过滤条件后再新增当前条件
     * @param logic and | or
     * @throws BOSException void
     */
    public static void addF7Filter(KDBizPromptBox prmt,FilterItemInfo filterItemInfo,String mode,String logic) throws BOSException{
        FilterInfo filter = getF7Filter(prmt);
        FilterInfo filterTemp = new FilterInfo();
        //构建添加的条件
        filterTemp.getFilterItems().add(filterItemInfo);
        if ("append".equals(mode)) {
            filter.mergeFilter(filterTemp, logic);
        }
        if ("new".equals(mode)) {
            filter.getFilterItems().clear();
            filter.mergeFilter(filterTemp, logic);
        }
    }
    
    /**
     * 
     * @Description: F7控件增加过滤条件,可选择新增还是追加、以及追加的逻辑FilterItemInfo增加
     * @author zhanglf 2024-2-4下午03:24:59
     * @param prmt
     * @param filterInfo
     * @param mode    append:追加 | new :删除全部过滤条件后再新增当前条件
     * @param logic and | or
     * @throws BOSException void
     */
    public static void addF7Filter(KDBizPromptBox prmt,FilterInfo filterInfo,String mode,String logic) throws BOSException{
        FilterInfo filter = getF7Filter(prmt);
        //构建添加的条件
        if ("append".equals(mode)) {
            filter.mergeFilter(filterInfo, logic);
        }
        if ("new".equals(mode)) {
            filter = filterInfo;
        }
    } 
    
}

 

posted @ 2025-11-10 16:31  凉了记忆  阅读(4)  评论(0)    收藏  举报