隨著社會信息化高速發展,企業信息化也得到了一定提高,而如何提高辦公效率已經成為企業一項重要而緊迫的任務,傳統的紙質報表等檔案不僅浪費紙張、不易存檔、不易調閱、不易統計,如何更有效、更快速提升辦公效率和辦公質量,成為了制約工作效率提升的最大瓶頸。
由點到面,從各位朋友的電腦桌面上繁多的報表文件,明顯的可以看出日常工作的繁忙,可是一天下來感覺處理的文件卻不多。
地域限制:由于集團沒辦法實時和子公司實現同步辦公,在溝通方面成本很高,而且異地辦公效率低,得到的生產報表數據和財務數據不準確,而且不及時。
員工素質的差別:每個人處事的方式都不同,造成“一鍋粥”的現象,這就要求我們用流程工具和報表工具來規范梳理工作。
檔案丟失:員工的離職,造成報表文檔的丟失已經成了企業最大的損失。
透過現象看本質,實現信息化已經迫在眉睫,集團急需一套OA并集成報表軟件的系統,而泛微OA正好符合我們的需求,且Finereport報表更是無縫集成于泛微OA。
效果展示


一、開發工具
讓我們先了解一下這個B/S架構的開發環境:
操作系統: Redhat 5.4 Linux 64位
WBE應用服務器: RESIN
開發語言: JAVA
數據庫: ORACLE 10.2g
報表開發工具: Finereport
網頁開發工具: Dreamweaver 8
OA系統: 泛微協同OA
Finereport的數據來源于oracle現有數據庫,通過OA新增菜單,鏈接jsp網頁,利用OA角色與權限控制單元在jsp頁面(嵌入報表頁面)做二次開發,并授權用戶訪問報表。
二、數據來源
由于OA已經有現成的oracle10g數據庫,而我們的報表需要的數據庫源主要來自OA的數據庫表。
首先,我們要打開FR設計器,連接數據源,設計器最上方的菜單欄--服務器—定義數據連接。用鼠標選中剛剛命名的數據源,右邊顯示對應的數據源屬性編輯面板,共有五項屬性:
數據庫:oracle
驅動:oracle.jdbc.driver.OracleDriver
URL:jdbc:oracle:thin:@192.168.X.X:1521:實例名
輸入用戶名和密碼,點擊“測試連接”按鈕,如下圖所示:

提示,測試成功,代表oracle數據庫連接成功。
主要的數據庫表如圖所示:
1、workflow_currentoperator工作流請求節點操作人信息表
,存放如下字段:請求id
、用戶id、工作流類型、工作流id、操作節點id、操作日期、操作時間

2、workflow_requestLog工作流請求簽字日志表
,存放如下字段:操作者、操作時間、客戶端ip、下一節點id、工作流id、請求id、操作日期、操作節點id

3、formtable_main_4簽報流程自定義表,存放如下字段:抬頭、主辦部門、呈送、電話、傳真等敏感字段

4、HrmLocations人力資源辦公地點表
,存放如下字段:所在城市、所在國家、電話、傳真、手機。
SysMaintenanceLog系統操作日志表
,存放如下字段:操作日期、操作用戶id、操作時間、操作類型、是否為流程模板

5、workflow_currentoperator工作流請求節點操作人信息表
,存放如下字段:工作流id
、工作流類型、操作節點id、接收到的日期、接收到的時間、標記流程是否歸檔、操作時間

6、Hrmdepartment人力資源部門表,存放如下字段:上級部門id、所屬分部1、所有上級部門id、部門名稱、部門標識等。

諸如hrmsubcompany人力資源分部表,存放如下字段:所屬總部id、分部簡稱、分部描述等;HrmResource 人力資源表,存放如下字段:身份證號碼、賬號id、籍貫、工作狀態、密碼等N多的信息,這里不再一一介紹。
三、需求分析
基于Finereport的報表,并集成到OA,通過Finereport實現數據庫復雜查詢/填報的方式,在辦公OA上實現實時交互,讓OA項目花最少的力氣在報表工作上。體現在:
1、 公文簽報,集中報表
2、 考勤數據,集中報表
3、 資產管理,集中報表
4、 人員登錄,集中管控
5、 流程管控,集中統一
6、 權限管控,集中統一
然后把大部分時間用于問題的解決,績效的提升,決策的制訂,有效的執行等核心事上,從而提高工作效率。
四、數據分析
先分析一下項目數據的采集,報表數據貫穿著辦公OA流程,隨著時間的積累,積沙成塔。
數據范圍:固定資產、人員登錄、集團/子公司的公文簽報、用章申請、考勤等數據
數據層面:員工層面
縱向維度:OA復雜的流程
橫向維度:分公司、部門、員工、考勤種類等
時間維度:日期
五、報表設計
一般來說,一個完整的報表設計流程,大體分為如下幾個步驟:

打開設計器,跳過配置數據源這些簡單步驟,直奔設計報表主題,舉例集團簽報報表,首先、了解簽報所需要的字段,一般是集團機要秘書來管理下發和收件,把字段全部羅列出來,如圖:

其次、簽報情況匯總報表涉及了辦公OA流程的部分流程,查看流程,

包含總裁機要秘書接收日期,總裁機要秘書需要統計來文單位、文件主題,然后再決定傳送給哪位集團分管領導,接下來又要統計分管領導意見以及會簽人的意見,最終才歸檔到經辦人和總裁機要秘書,所以這個報表具有重要意義,可以省去總裁機要秘書頻繁的登記收文和領導,提高領導的簽報效率。
約束條件是requestid,表與表之間通過requestid的關聯起來的,分別寫出該字段需要查詢的條件,并且日期以流程節點“已查看”或者“已提交”為時間判斷標準。

思路清楚后,就直接設計報表字段的SQL,如果用普通的網頁來制作這個簽報報表,我想我會瘋掉的。因為太復雜了,而且oracle的long類型的字段在PL是不顯示的,而FineReport工具竟然能顯示出來,真的讓人佩服。

點擊“預覽”,結果就顯示出來了,如果用網頁還會存在緩存,很煩的,而改用FR設計器,更簡潔更快速。
為了提高瀏覽速度,設計的時候需要考慮分頁,點擊“文件號”,點擊右鍵,設置條件屬性。設置公式為&B4 % 31,設置31行后就分頁。這樣是一個月的數據,對報表很有意義。

六、權限控制
Jsp頁面代碼編寫,詳情見例子jtgw.jsp
<%@ pageimport="weaver.general.Util" %>
<%@ page import="weaver.conn.*"%>
<%@ pagelanguage="java" contentType="text/html; charset=GBK" %><%@ include file="/systeminfo/init.jsp" %>
<jsp:useBeanid="rs" class="weaver.conn.RecordSet"scope="page" />
<HTML><HEAD>
<LINKhref="/css/Weaver.css" type=text/css rel=STYLESHEET>
</head>
<%
String imagefilename ="/images/hdSystem.gif";
String titlename = "公文情況匯總表";
String needfav ="1";
String needhelp ="";
%>
<BODY>
<%@ includefile="/systeminfo/TopTitle.jsp" %>
<%@ includefile="/systeminfo/RightClickMenuConent.jsp" %>
<%@ includefile="/systeminfo/RightClickMenu.jsp" %>
<%
if(!HrmUserVarify.checkUserRight("OA-Report-02",user)){
response.sendRedirect("/notice/noright.jsp");
return;
}
%>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=gb2312" />
<title>報表</title>
</head>
<!--這里用iframe方法嵌入finereport報表網頁-->
<iframename="sbjljgml" id="sbjljgml"src="/ReportServer?reportlet=jtgw.cpt&op=write"width="100%" height="100%" frameborder="0"border="0" marginwidth="0" marginheight="0"scrolling="yes" target="contents"align="center"></iframe>
<body>
</body>
</html>
另外oracle插入兩條SQL:
insert into SYSTEMRIGHTS values('902','公文情況匯總表','3','0');
insert into SYSTEMRIGHTDETAIL values('9002','公文情況匯總表’,'OA-Report-02','902')
注釋一下OA-Report-01
權限:901開始編號
明細單元:9001 開始編號
七、部署報表
1、 安裝FineReport的安裝程序
2、 通過SSH工具,將解壓出來的\FineReport_6.5\WebReport\WEB-INF地址下的reportlets,resources文件上傳至服務器\WEAVER\ecology\WEB-INF目錄下。
3、通過SSH工具,將\FineReport_6.5\WebReport\WEB-INF\lib地址下的fr-server-6.5.jar,fr-third-6.5.jar,ojdbc14.jar文件上傳至于服務器\WEAVER\Resin\lib目錄下。

4、 在linux服務器中\WEAVER\ecology\WEB-INF目錄下的web.xml添加內容,如圖:

5 以上配置修改完成,重新啟動RESIN服務。
6、打開IE,輸入http://localhost/WebReport/ReportServer?op=fs,測試是否能打開。
7、 在思科防火墻上映射外網IP到OA內網服務器,并開放80端口,綁定公司域名到OA外網Ip,然后在IE輸入http://oa.xx.com,即可訪問到FineReport集成的OA系統。