目的:同步使系统查询界面和ListUI的查询Panel的两个字段是一致,处理方法非常蛋疼:
1.第一次打开系统查询,如果组织条件为空,LIST界面的组织设置为用户所在组织;A
把库存组织和仓库同步到LIST界面
2.在LIST界面打开系统查询界面时,把库存组织和仓库同步到系统查询界面B
3.在LIST界面中点击快速查询时,把库存组织和仓库同步到系统查询界面(为了解决两边查询条件追加导致重叠问题)C
----------A---->
系统查询界面<--------B------LISTUI快速查询
<--------C------
A.当首次打开系统查询时,点击确定把条件同步到LISTUI。isFromFilterUI用它来判断是否来自系统查询界面。里面包含字符串各种截取各种蛋疼!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
@Override
protected
void
execQuery() {
if
(isFromFilterUI) setFilterUIToListQuery();
//将系统查询条件同步到快速查询中
super
.execQuery();
}
protected
FilterInfo getDefaultFilterForQuery() {
FilterInfo filterInfo=
new
FilterInfo();
filterInfo=
super
.getDefaultFilterForQuery();
viewInfo=
new
EntityViewInfo();
viewInfo=
this
.mainQuery;
return
filterInfo;
}
private
void
setFilterUIToListQuery(){
//将系统查询条件同步到快速查询中add by huihuang 20121128
FilterInfo f = (FilterInfo)
this
.mainQuery.getFilter();
if
(f!=
null
){
String
fs = f.toString();
String
[] fss = fs.split(
" AND "
);
for
(
int
i=
0
; i<fss.length;i++){
if
(!fss[i].startsWith(
"<"
)){
if
(fss[i].startsWith(
"storageOrgUnit.id"
)){
//库存组织
String
[] s = fss[i].split(
"'"
);
String
sid=s[
1
];
try
{
storageOrgUnitInfo = StorageOrgUnitFactory.getRemoteInstance().getStorageOrgUnitInfo(
new
ObjectUuidPK(sid));
this
.storageOrgUnit.setValue(storageOrgUnitInfo);
}
catch
(EASBizException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(BOSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if
(fss[i].startsWith(
"warehouse.id"
)){
//仓库
String
[] s = fss[i].split(
"'"
);
String
wid= s[
1
];
WarehouseInfo info =
null
;
try
{
info = WarehouseFactory.getRemoteInstance().getWarehouseInfo(
new
ObjectUuidPK(wid));
this
.prmtwarehouse.setValue(info);
}
catch
(EASBizException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(BOSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}
|
B.在LISTUI打开系统查询
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
@Override
public
void
actionQuery_actionPerformed(ActionEvent e) throws Exception {
setListToFilterUIQuery();
//add by huihuang
isFromFilterUI =
true
;
super
.actionQuery_actionPerformed(e);
}
private
void
setListToFilterUIQuery() throws Exception{
//将LISTUI快速查询条件同步到FilterUI系统查询中add by huihuang 20121128
if
(invDetailFilterUI ==
null
) invDetailFilterUI =
new
InvDetailFilterUI();
Object
oS = storageOrgUnit.getValue();
Object
oW = prmtwarehouse.getValue();
if
(oS!=
null
){
Object
[] oo =
new
Object
[
1
];
oo[
0
]=oS;
invDetailFilterUI.bizPromptStorageOrgFrom.setValue(oo);
}
if
(oW!=
null
){
Object
[] oo =
new
Object
[
1
];
oo[
0
]=oW;
invDetailFilterUI.bizPromptWarehouseFrom.setValue(oo);
}
}
|
C.点击LISTUI的快速查询按钮,先讲LISTUI的条件同步到系统查询。这是以前“把系统查询条件追加到快速查询”遗留的BUG(如果两边都有库存明细或者仓库条件,那只能永远放回NULL)。并把isFromFilterUI设为false,标记下不是从系统查询过来的,否则接下去会跑上面的execQuery。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
protected
void
btnQuickQuery_actionPerformed(ActionEvent e)
throws Exception {
setListToFilterUIQuery();
//点击快速查询前,先把组织和仓库条件同步到系统查询条件add by huihuang
isFromFilterUI=
false
;
EntityViewInfo viewInfo = (EntityViewInfo) mainQuery.clone();
FilterInfo fInfo = getNewFilterInfo();
// add wufaixng 2012-11-12 原因:库存明细查询 追加系统查询条件
FilterInfo fInfoviewInfo =mainQuery.getFilter();
fInfoviewInfo.mergeFilter(fInfo,
"AND"
);
//追加
EntityViewInfo entityViewInfo =
new
EntityViewInfo();
// SorterItemCollection collection=new SorterItemCollection();
// SorterItemInfo sorterItem1=new SorterItemInfo("bizDate");
// SorterItemInfo sorterItem2=new SorterItemInfo("sourceBillNum");
// sorterItem1.setSortType(SortType.DESCEND);//降序
// sorterItem2.setSortType(SortType.ASCEND);
// collection.add(sorterItem1);
// collection.add(sorterItem2);
// entityViewInfo.setSorter(collection);
entityViewInfo.setFilter(fInfoviewInfo);
mainQuery=entityViewInfo;
refreshList();
if
(tblMain.getRowCount() >
0
) {
// 默认选中第一行
KDTableUtil.setSelectedRow(tblMain,
0
);
}
mainQuery=viewInfo;
}
|