finereport与OA系统集成的完全方案

简介:

随着社会信息化高速发展,企业信息化也得到了一定提高,而如何提高办公效率已经成为企业一项重要而紧迫的任务,传统的纸质报表等档案不仅浪费纸张、不易存档、不易调阅、不易统计,如何更有效、更快速提升办公效率和办公质量,成为了制约工作效率提升的最大瓶颈。

由点到面,从各位朋友的电脑桌面上繁多的报表文件,明显的可以看出日常工作的繁忙,可是一天下来感觉处理的文件却不多。

地域限制:由于集团没办法实时和子公司实现同步办公,在沟通方面成本很高,而且异地办公效率低,得到的生产报表数据和财务数据不准确,而且不及时。

员工素质的差别:每个人处事的方式都不同,造成“一锅粥”的现象,这就要求我们用流程工具和报表工具来规范梳理工作。

档案丢失:员工的离职,造成报表文档的丢失已经成了企业最大的损失。

透过现象看本质,实现信息化已经迫在眉睫,集团急需一套OA并集成报表软件的系统,而泛微OA正好符合我们的需求,且Finereport报表更是无缝集成于泛微OA。

效果展示

20150804105327967


20150804105335636



一、开发工具

让我们先了解一下这个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:实例名

输入用户名和密码,点击“测试连接”按钮,如下图所示:

20150804105342011


提示,测试成功,代表oracle数据库连接成功。

主要的数据库表如图所示:

1、workflow_currentoperator工作流请求节点操作人信息表

,存放如下字段:请求id

、用户id、工作流类型、工作流id、操作节点id、操作日期、操作时间

20150804105347105



2、workflow_requestLog工作流请求签字日志表

,存放如下字段:操作者、操作时间、客户端ip、下一节点id、工作流id、请求id、操作日期、操作节点id

20150804105351390





3、formtable_main_4签报流程自定义表,存放如下字段:抬头、主办部门、呈送、电话、传真等敏感字段

20150804105354747


4、HrmLocations人力资源办公地点表

,存放如下字段:所在城市、所在国家、电话、传真、手机。

SysMaintenanceLog系统操作日志表

,存放如下字段:操作日期、操作用户id、操作时间、操作类型、是否为流程模板

20150804105359024



5、workflow_currentoperator工作流请求节点操作人信息表

,存放如下字段:工作流id

、工作流类型、操作节点id、接收到的日期、接收到的时间、标记流程是否归档、操作时间

20150804105403495



6、Hrmdepartment人力资源部门表,存放如下字段:上级部门id、所属分部1、所有上级部门id、部门名称、部门标识等。

20150804105407404



诸如hrmsubcompany人力资源分部表,存放如下字段:所属总部id、分部简称、分部描述等;HrmResource 人力资源表,存放如下字段:***号码、账号id、籍贯、工作状态、密码等N多的信息,这里不再一一介绍。

 

三、需求分析

基于Finereport的报表,并集成到OA,通过Finereport实现数据库复杂查询/填报的方式,在办公OA上实现实时交互,让OA项目花最少的力气在报表工作上。体现在:

1、     公文签报,集中报表

2、     考勤数据,集中报表

3、     资产管理,集中报表

4、     人员登录,集中管控

5、     流程管控,集中统一

6、     权限管控,集中统一

然后把大部分时间用于问题的解决,绩效的提升,决策的制订,有效的执行等核心事上,从而提高工作效率。

 

四、数据分析

先分析一下项目数据的采集,报表数据贯穿着办公OA流程,随着时间的积累,积沙成塔。

数据范围:固定资产、人员登录、集团/子公司的公文签报、用章申请、考勤等数据

数据层面:员工层面

纵向维度:OA复杂的流程

横向维度:分公司、部门、员工、考勤种类等

时间维度:日期

五、报表设计

一般来说,一个完整的报表设计流程,大体分为如下几个步骤:

20150804105415190



打开设计器,跳过配置数据源这些简单步骤,直奔设计报表主题,举例集团签报报表,首先、了解签报所需要的字段,一般是集团机要秘书来管理下发和收件,把字段全部罗列出来,如图:

20150804105419244



其次、签报情况汇总报表涉及了办公OA流程的部分流程,查看流程,

20150804105424137



包含总裁机要秘书接收日期,总裁机要秘书需要统计来文单位、文件主题,然后再决定传送给哪位集团分管领导,接下来又要统计分管领导意见以及会签人的意见,最终才归档到经办人和总裁机要秘书,所以这个报表具有重要意义,可以省去总裁机要秘书频繁的登记收文和领导,提高领导的签报效率。

约束条件是requestid,表与表之间通过requestid的关联起来的,分别写出该字段需要查询的条件,并且日期以流程节点“已查看”或者“已提交”为时间判断标准。

20150804105431124



思路清楚后,就直接设计报表字段的SQL,如果用普通的网页来制作这个签报报表,我想我会疯掉的。因为太复杂了,而且oracle的long类型的字段在PL是不显示的,而FineReport工具竟然能显示出来,真的让人佩服。

20150804105437994


点击“预览”,结果就显示出来了,如果用网页还会存在缓存,很烦的,而改用FR设计器,更简洁更快速。

为了提高浏览速度,设计的时候需要考虑分页,点击“文件号”,点击右键,设置条件属性。设置公式为&B4 % 31,设置31行后就分页。这样是一个月的数据,对报表很有意义。

20150804105446849



六、权限控制

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目录下。


20150804105510693


4、 在linux服务器中\WEAVER\ecology\WEB-INF目录下的web.xml添加内容,如图:

20150804105501397


5    以上配置修改完成,重新启动RESIN服务。

6、打开IE,输入http://localhost/WebReport/ReportServer?op=fs,测试是否能打开。

7、 在思科防火墙上映射外网IP到OA内网服务器,并开放80端口,绑定公司域名到OA外网Ip,然后在IE输入http://oa.xx.com,即可访问到FineReport集成的OA系统。




本文转自 雄霸天下啦 51CTO博客,原文链接:http://blog.51cto.com/10549520/1681517,如需转载请自行联系原作者

相关文章
|
4月前
|
安全 Java 数据安全/隐私保护
在Java项目中集成单点登录(SSO)方案
在Java项目中集成单点登录(SSO)方案
|
2月前
|
机器学习/深度学习 DataWorks 数据挖掘
基于阿里云Hologres和DataWorks数据集成的方案
基于阿里云Hologres和DataWorks数据集成的方案
65 7
|
3月前
|
前端开发 Linux API
无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案
【8月更文挑战第3天】无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案
无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案
|
4月前
|
安全 Java 数据安全/隐私保护
在Java项目中集成单点登录(SSO)方案
在Java项目中集成单点登录(SSO)方案
|
4月前
|
存储 运维 监控
在Spring Boot中集成分布式日志收集方案
在Spring Boot中集成分布式日志收集方案
|
5月前
|
搜索推荐 前端开发 JavaScript
SpringBoot静态资源访问控制和封装集成方案
该文档描述了对基于SpringBoot的项目框架进行优化和整合的过程。原先采用前后端分离,后端兼做前端,但随着项目增多,升级维护变得复杂。因此,决定整合后台管理页面与后端代码,统一发布。设计上,框架包含后台管理资源,项目则配置具体业务页面,项目可通过覆盖框架资源实现个性化。关键步骤包括:自定义静态资源访问路径、解决图标与字体文件访问问题、设定自定义欢迎页面和页面图标,以及确保项目能正确访问框架静态资源。通过扫描jar包、解压和拷贝资源到项目目录,实现了框架静态资源的动态加载。此外,调整静态资源访问优先级,保证正确加载。最终实现支持jar和war包的项目结构优化。
108 4
|
6月前
|
监控 安全 网络安全
宝鸡陇县中学弱电系统集成设计方案_kaic
宝鸡陇县中学弱电系统集成设计方案_kaic
|
6月前
|
缓存 分布式计算 Apache
Apache Hudi与Apache Flink更好地集成,最新方案了解下?
Apache Hudi与Apache Flink更好地集成,最新方案了解下?
144 0
|
6月前
|
SQL 关系型数据库 MySQL
基于 Flink CDC 打造企业级实时数据集成方案
基于 Flink CDC 打造企业级实时数据集成方案
112 0
|
6月前
|
消息中间件 关系型数据库 MySQL
Kafka Connect :构建强大分布式数据集成方案
Kafka Connect 是 Apache Kafka 生态系统中的关键组件,专为构建可靠、高效的分布式数据集成解决方案而设计。本文将深入探讨 Kafka Connect 的核心架构、使用方法以及如何通过丰富的示例代码解决实际的数据集成挑战。