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();
}