BOS开发中的笔记

目的:同步使系统查询界面和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;  
     }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值