eas_F7增加过滤条件

/**  
 * @Title: UIUtils.java
 * @Description: TODO
 * @author zhanglf
 * @date 2024-2-4下午03:13:17
 */ 
package com.kingdee.eas.custom.ws.util;

import com.ibm.db2.jcc.am.mo;
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;
        }
    } 
    
}

 这对不同的位置,设置F7控件的过滤条件方法也不一样,主要有三种:

1.普通基本资料,或者业务单据表头的F7控件设置过滤的方法:

在EditUI.java类的onload方法中加入如下代码:

KDBizPromptBox prmtF7 =(KDBizPromptBox )obj;
//现在prmtF7控件对象得到了,就可以设置过滤条件了
EntityViewInfo entityView = new EntityViewInfo();
FilterInfo filter = new FilterInfo();
//设置过滤条件
filter.getFilterItems().add(new FilterItemInfo("过滤条件字段","",CompareType.EQUALS));
entityView.setFilter(filter);
//F7控件设置实体视图信息
prmtF7.setEntityViewInfo(entityView);

2.分录中的F7设置过滤条件:
大家知道,分录中的F7控件我们没办法直接获得控件对象。所以要在EditUl..java中的 onload() 方法中通过

Object obj=kdtFaUseDepart.getColumn("useDepartment").getEditor().getComponent();
if(obj instanceof KDBizPromptBox){
     KDBizPromptBox prmtF7 =(KDBizPromptBox )obj;
     //现在prmtF7控件对象得到了,就可以设置过滤条件了
     EntityViewInfo entityView =  new EntityViewInfo();
     FilterInfo filter  = new FilterInfo();
     //设置过滤条件
     filter.getFilterItems().add(new FilterItemInfo("过滤条件字段","",CompareType.EQUALS));
     entityView.setFilter(filter);
     //F7控件设置实体视图信息
     prmtF7.setEntityViewInfo(entityView);
 }

 

3.左树右表结构中表头的F7控作(调用的是基酬资料的ListUi对象):
假设现在有一个左树右表的基础资料的表头有个F7控件,这个控件引用了个名字为BaseListUl.ui的基础资料,这个被引用的基础资料对应了两个Java类,名为BaseListUl..java和BaseEditU儿,java。找到这两个类,我们接下来实现过滤:
第一步:BaseListUl.java覆盖父类的setF7Use(true,ctx)方法,这个方法有两个参数,一个是boolean,一个是Map。代码如下:
声明一个boolean类型的全局变量
boolean isF7ListUl = false;
覆盖方法setF7Use(true,ctx)

public void setF7Use(boolean isF7Use,Map ctx){
  isF7ListUl = true;
  supper.setF7Use(isF7Use,ctx);
}

覆盖getDefaultEntityViewlnfo()方法

protected EntityViewlnfo getDefaultEntityViewlnfo(){
  if(isF7ListUl)
  EntityViewlnfo entity new EntityViewlnfo();
  Filterlnfo filter new Filterlnfo();
  filter..getFilterltems().add(new Filterltemlnfo("过滤条件字段",值,CompareType.EQUALS)i
  entity.setFilter(filter);
  return entity;
}else{
  return super.getDefaultEntityViewlnfo();
}

 

posted @ 2024-03-06 15:45  凉了记忆  阅读(31)  评论(0编辑  收藏  举报