OAF实现客户化查询



OAF实现客户化查询

在OAF中,存在标准的查询面板,但是标准的查询只能实现基础、简单的查询,所以在真正的项目当中,一般情况下都是使用自己开发的客户化查询,开发客户化查询的一般步骤如下:

 

1. 建立页面PG,修改Region

 

ID PageLayoutRN
Region Style PageLayout
AM Definition RootAM
Window Title xxx
Title xxx

 

 

2. 在PageLayoutRN下建立Region,属性如下:

 

ID MessageComponentLayoutRN
Region Style MessageComponentLayout
Width 100%
Rows 2
Columns 6

 

 

3. 在MessageComponentLayoutRN下新建搜索项(lov形式)

 

 

ID SearchProject
Item Style MessageLovInput
External LOV XXX
Prompt XXX

 

这里的External LOV是来源于lov的region。

 

 

4.建立LOV的页面,建立一个listOfValues的region

 

Region Style ListOfValues
Scope Public
AM Definition LovAM

 

 

5. 基于vo,建立resultTable,ProjectId项的属性

 

ID ProjectId
Item Style Formvalue

 

 

6. 在建立的lov组件下建立map映射

 

ID ProjectNameMap
LOV Region Item ProjectName
Return Item SearchProject
Criteria Item SerachProject

 


 

7.下拉框形式组件

 

ID SearchProjectPhase
Item Style MessageChoice
Picklist View Definition cux.oracle.apps.pa.lov.server.ProjectPhaseVO
Picklist Display Attribute ProjectStatusName
Picklist Value Attribute ProjectStatusName
Prmpt  

 

 

8. 建立ResultTable

 

Width 100%

 

 

9. 在messageComponentLayout Components下添加footer,在region下添加query按钮

 

ID Query
Item Style SubmitButton
Prompt 搜索(&S)

 

10.继续添加SpaceBean

 

ID SpacerBean
Item Style Spacer
Width 5

 

11. 继续添加cancel按钮

 

ID Cancel
Item Style SubmitButton
Disable Client Side Validation True
Prompt 清除(&C)

 

上面的步骤是建立好一个搜索面板,下面编写搜索逻辑代码。

 

首先在co中捕捉点击搜索按钮的事件:

 

  1. public void processFormRequest(OAPageContext pageContext,
  2.                                OAWebBean webBean) {
  3.     super.processFormRequest(pageContext, webBean);
  4.     OAApplicationModule am = pageContext.getApplicationModule(webBean);
  5.     if (pageContext.getParameter(“Cancel”) != null) {
  6.         String[] webBeanNames =
  7.         { ”SearchProject”, ”SearchCustomer”, ”SearchAreaCode”,
  8.           ”SearchWindCode”, ”SearchMachineModel”, ”SearchProjectPhase”,
  9.           ”SearchReportStartDate”, ”SearchReportEndDate”,
  10.           ”SearchProjectManager”, ”SearchProjectId”, ”SearchPartyId” };
  11.         WebBeanUtil.resetWebBean(pageContext, webBean, webBeanNames);
  12.     } else if (pageContext.getParameter(“Query”) != null) {
  13.         String searchProjectId =
  14.             pageContext.getParameter(“SearchProjectId”);
  15.         String searchPartyId = pageContext.getParameter(“SearchPartyId”);
  16.         String searchAreaCode = pageContext.getParameter(“SearchAreaCode”);
  17.         String searchWindCode = pageContext.getParameter(“SearchWindCode”);
  18.         String searchMachineModel =
  19.             pageContext.getParameter(“SearchMachineModel”);
  20.         String searchProjectPhase =
  21.             pageContext.getParameter(“SearchProjectPhase”);
  22.         Date searchReportStartDate =
  23.             DateUtil.toDate(pageContext, pageContext.getParameter(“SearchReportStartDate”));
  24.         Date searchReportEndDate =
  25.             DateUtil.toDate(pageContext, pageContext.getParameter(“SearchReportEndDate”));
  26.         String searchProjectManager =
  27.             pageContext.getParameter(“SearchProjectManager”);
  28.         Serializable[] params =
  29.         { searchProjectId, searchPartyId, searchAreaCode, searchWindCode,
  30.           searchMachineModel, searchProjectPhase, searchReportStartDate,
  31.           searchReportEndDate, searchProjectManager };
  32.         Class[] classes =
  33.         { String.class, String.class, String.class, String.class,
  34.           String.class, String.class, Date.class, Date.class,
  35.           String.class };
  36.         am.invokeMethod(“queryStatusReport”, params, classes);
  37.     }
  38. }

 

搜索逻辑代码:

 

  1. public void queryStatusReport(String searchProjectId,
  2.                               String searchPartyId,
  3.                               String searchAreaCode,
  4.                               String searchWindCode,
  5.                               String searchMachineModel,
  6.                               String searchProjectPhase,
  7.                               Date   searchReportStartDate,
  8.                               Date   searchReportEndDate,
  9.                               String searchProjectManager)
  10. {
  11.     StatusReportVOImpl vo = getStatusReportVO1();
  12.     vo.setWhereClause(null);
  13.     vo.setWhereClauseParams(null);
  14.     int bindCount = 0;
  15.     StringBuffer whereClause =new StringBuffer(400);
  16.     whereClause.append(“ 1=1″);
  17.     Vector params = new Vector(9);
  18.     if (searchProjectId!=null && !(“”.equals(searchProjectId))){
  19.         whereClause.append(“ AND project_id = :”);
  20.         whereClause.append(++bindCount);
  21.         params.addElement(searchProjectId);
  22.     }
  23.     if (searchPartyId!=null && !(“”.equals(searchPartyId))){
  24.         whereClause.append(“ AND party_id = :”);
  25.         whereClause.append(++bindCount);
  26.         params.addElement(searchPartyId);
  27.     }
  28.     if (searchAreaCode!=null && !(“”.equals(searchAreaCode))){
  29.         whereClause.append(“ AND area_code = :”);
  30.         whereClause.append(++bindCount);
  31.         params.addElement(searchAreaCode);
  32.     }
  33.     if (searchWindCode!=null && !(“”.equals(searchWindCode))){
  34.         whereClause.append(“ AND wind_code = :”);
  35.         whereClause.append(++bindCount);
  36.         params.addElement(searchWindCode);
  37.     }
  38.     if (searchMachineModel!=null && !(“”.equals(searchMachineModel))){
  39.         whereClause.append(“ AND cux_pa_util_pkg.get_pa_machine_model(project_id,:”);
  40.         whereClause.append(++bindCount);
  41.         whereClause.append(“) = ’Y'”);
  42.         params.addElement(searchMachineModel);
  43.     }
  44.     if (searchProjectPhase!=null && !(“”.equals(searchProjectPhase))){
  45.         whereClause.append(“ AND current_phase_name = :”);
  46.         whereClause.append(++bindCount);
  47.         params.addElement(searchProjectPhase);
  48.     }
  49.     if (searchReportStartDate!=null && !(“”.equals(searchReportStartDate))){
  50.         whereClause.append(“ AND report_start_date >= :”);
  51.         whereClause.append(++bindCount);
  52.         params.addElement(searchReportStartDate);
  53.     }
  54.     if (searchReportEndDate!=null && !(“”.equals(searchReportEndDate))){
  55.         whereClause.append(“ AND report_start_date <= :”);
  56.         whereClause.append(++bindCount);
  57.         params.addElement(searchReportEndDate);
  58.     }
  59.     if (searchProjectManager!=null && !(“”.equals(searchProjectManager))){
  60.         whereClause.append(“ AND project_manager = :”);
  61.         whereClause.append(++bindCount);
  62.         params.addElement(searchProjectManager);
  63.     }
  64.     if (bindCount >0){
  65.         vo.setWhereClause(whereClause.toString());
  66.         Object[] bindParams = new Object[bindCount];
  67.         params.copyInto(bindParams);
  68.         vo.setWhereClauseParams(bindParams);
  69.     }
  70.     vo.executeQuery();
  71. }

 

 

结果如下