技术文档

首页->技术文档->统计信息领导决策服务系统

博和利统计信息领导决策服务系统

来源: 作者: 日期:2011-07-21 20:18:52 【字号

1 文档管理

1.1. 文档管理概述

信息文档管理是企业业务安全和成功的关键因素。通过您的组织有效的管理业务文档是非常必要的。无论是纸质文档还是电子文档,都是管理的重要根据。

这是一套通用的在线文档管理系统,协助企业更高效地管理企业信息的整个生命周期:从上传、修改、权限控制、快速搜索、下载等。它可以轻松管理这些业务文件。

1.2. 权限概述

管理员可以给其他用户分配权限来更安全的管理文档信息。

(1)角色:文档管理员 代码:ROLE_DOC

权限范围:可以查看全部文档和文档目录,并可以对目录进行所有操作包括:增、删、改、拖动目录、分配权限,对文件同样也有所有操作权限包括:查询、上传、批量上传、删除、修改、权限分配等操作。

(2)角色:文档二级管理员 代码:ROLE_DOC_T

权限范围:没有查看权限,只有把文档和文档目录的查看权限分给使用者时才能看到,文档二级管理员拥有着和文档管理员一样的除了查看权限以外的所有操作权限。

(3)角色:文档查询管理员 代码:ROLE_DOC_Q

权限范围:没有操作权限,只有下载文件的权限。可以查看所有文档和文档目录。

1.3. 初始化文档管理页面

配置页面菜单路径:

/docManage/docManageController.html? method=findDocName&rootId=根目录ID&childId=默认查询目录ID(child此属性可以不加)

rootId为左侧目录树的根节点。

childId为进入页面首次查询内容为哪个目录下的文档,如果不加此属性默认为查询rootId目录下内容。

1.4. 目录的增、删、改及权限分配

右键单击目录可以对目录进行增删改及权限分配操作如下图所示:

可以按照用户所在部门、所属角色、用户名来给目录分配查看权限。

1.5. 文档的上传、下载、删除、修改及权限分配

只有文档管理员和文档二级管理员才可以对文件进行这些操作如下图所示:

 

 

2 网上填报模块概述

网上填报模块提供绘制表结构、发布表结构、定时发布表单给各个组织机构、填报和审核已发布表单等功能。

JSP页面位置

/jsp/solutions/metaData/目录

Controller

com.berheley.bi.web.controller.TimerController

Job

org.quartz.jobs.TimerDataJob

BO

com.berheley.bi.service.impl.TimerServiceImpl

com.berheley.bi.service.def.TimerService

DAO

com.berheley.bi.dao.impl.TimerDaoImpl

com.berheley.bi.dao.TimerDao

TABLE

dic_table_diction  表结构

qrtz_job_details   定时任务

qrtz_triggers      任务时间

qrtz_simple_triggers  任务时间(立即发布)

qrtz_cron_triggers 任务时间(cron表达式)

t_table_inf        已发布表单记录

其他

表格 2 1 公用文件

字段

说明

输入格式

是否必填

JOB_NAME

定时任务名称(必须唯一)

VARCHAR(200)

JOB_GROUP

定时任务组

VARCHAR(200) 

DESCRIPTION

描述

VARCHAR(250)

JOB_CLASS_NAME

定时执行目标类名

VARCHAR(250) 

IS_DURABLE

保存

VARCHAR(1)

IS_VOLATILE

VARCHAR(1)

IS_STATEFUL

VARCHAR(1)

REQUESTS_RECOVERY

可恢复

VARCHAR(1)

JOB_DATA

执行任务需要的参数

BLOB

表格 2 2 数据库表qrtz_job_details

字段

说明

输入格式

是否必填

TRIGGER_NAME

定时名称(必须唯一)

VARCHAR(200)

TRIGGER_GROUP

定时组(必须唯一)

VARCHAR(200) 

JOB_NAME

定时任务名称(必须唯一)

VARCHAR(200)

JOB_GROUP

定时任务组

VARCHAR(200) 

IS_VOLATILE

VARCHAR(1)

DESCRIPTION

描述

VARCHAR(250)

NEXT_FIRE_TIME

下次执行时间

BIGINT(13)

PREV_FIRE_TIME

上次执行时间

BIGINT(13)

PRIORITY

INTEGER

TRIGGER_STATE

运行状态

VARCHAR(16)

TRIGGER_TYPE

时间类型

VARCHAR(8)

START_TIME

开始时间

BIGINT(13)

END_TIME

结束时间

BIGINT(13)

CALENDAR_NAME

VARCHAR(200)

MISFIRE_INSTR

SMALLINT(2)

JOB_DATA

执行任务需要的参数

BLOB

表格 2 3 数据库表qrtz_triggers

字段

说明

输入格式

是否必填

TRIGGER_NAME

定时名称(必须唯一)

VARCHAR(200)

TRIGGER_GROUP

定时组(必须唯一)

VARCHAR(200) 

CRON_EXPRESSION

Cron格式的时间表达式

VARCHAR(200)

TIME_ZONE_ID

时区

VARCHAR(80)

表格 2 4 数据库表qrtz_cron_triggers

字段

说明

输入格式

是否必填

TRIGGER_NAME

定时名称(必须唯一)

VARCHAR(200)

TRIGGER_GROUP

定时组(必须唯一)

VARCHAR(200) 

REPEAT_COUNT

执行次数

BIGINT(7)

REPEAT_INTERVAL

间隔时间

BIGINT(12)

TIMES_TRIGGERED

时间

BIGINT(7)

表格 2 5 数据库表qrtz_cron_triggers

字段

说明

输入格式

是否必填

orgid_

组织机构id

VARCHAR(32)

tablename_

表名称

VARCHAR(200) 

statu_

是否填写

VARCHAR(1)

resmessage_

回执信息

VARCHAR(1000)

lookover_time_

查看时间

VARCHAR(45)

infid_

定时发布的表单id

VARCHAR(32)

starttime_

催报开始时间

VARCHAR(45)

endtime_

催报结束时间

VARCHAR(45)

create_time_

发布时间

VARCHAR(45)

tablename_ch_

表中文名称

VARCHAR(200)

check_status_

是否审核

VARCHAR(1)

表格 2 6 数据库表t_table_inf

 

2.1. 功能描述

该功能主要用于将已发布的表结构根据设定的时间,定时的发布给各个组织机构,通过它来实现网上填报。

访问路径

jsp/solutions/metaData/tableAssign.jsp

JSP名称

tableAssign.jsp

备注

表格 2 3 涉及文件

2.2. 设计约束

图 2.1定时发布页面

输出:

提示“操作成功”“ 操作失败”,或报告相应错误。页面必填项未填时不允许提交表单。

2.3. 业务流程描述(设计思路、主要环节)

在分配表单页面中查询出已发布的表结构,给表结构分配相应的组织机构,选择要发布的表结构设置定时发布时间,是否审核,催报时间等。保存后定时功能启动,到设定的时间就会自动发布到相应的组织机构中。在表结构列表中可以看到定时状态,可暂停和恢复定时任务。

2.4. 技术实现

1.保存定时发布时间:

调用TimerService中的addTimer方法,在这个方法中又调用了deleteTimer,saveTimer,saveCron方法。

调用TimerService中的deleteTimer方法,清空已存在的定时任务。

调用TimerService中的saveTimer方法,保存新的定时任务。

调用TimerService中的saveCron方法,保存设定的定时时间。

2.查询表结构定时状态

通过在tableAssign.jsp中写入grid查询的JS代码,查询出表结构列表,点击记录上的暂停按钮,调用TimerService中的pauseTrigger方法,暂停已经运行的定时任务,点击恢复按钮,调用TimerService中的resumeTrigger方法,恢复暂停的定时任务,使它急需运行。

2.5. 使用说明

点击填报管理 在下拉菜单中点击表单分配,进入表结构列表

图 2.1 表结构列表

选择要定时发布的表单 点击右上角图标 为表单分配角色。

 

图 2.2 组织机构列表

 

点击右上角图标 为表单设置定时任务,注意:执行定时任务之前,必须选择同类型表单,并且为这些表单分配好角色,才可以执行定时设定。

 

图 2.3 定时发布

1.点击右上角图标 为已设定定时发布的表单,执行立即发布。

2.在查询列表中点击暂停可以暂停正在运行的定时任务,点击恢复可恢复暂停中的定时任务。

2.6. 填报模块jsp页面说明

指标库页面 jsp/formTb/zhibiao.jsp

表单设计器主页面   WebContent/formdesinger/ppdesinger.jsp

表单设计预览页面     WebContent/formdesinger/ ppdesinger_redisplay.jsp

表单设计修改页面 jsp/formTb/ ppdesinger_modify.jsp

 

表单维护主页面 jsp/formTb/formMaintain.jsp

表单审核页面 jsp/formTb/auditError.jsp

参数

id_=c1817c1a1f234a1fb474a734dc79d691表示审核那个表单

type=season 表示审核类别  

value=03  表示值

表单分配页面 jsp/formTb/formAssign.jsp

单表填报页面 jsp/formTb/formOneTb.jsp

设置审核关系页面 jsp/formTb/ppdesinger_setAudit.jsp

审核错误表单回显 jsp/formTb/ppdesinger_shenheredisplay.jsp

填报人页面 jsp/formTb/tableList.jsp

审核人页面 jsp/fromTb/tableListsh.jsp

填报审核 详细页 jsp/formTb/tableDetail.jsp

 

2.7. 后台controller说明

FormAuditController

数据审核controller

FormLogoShowController

表单设计器图片回显controller

FormPreSaveController

设计表单 保存之前的controller 跳到 formPresave.jsp  页面

FormReDisplayController

回显修改表单 controller

FormTbController

单表提交用的controller  (目前没用上)

GetFormDateController

表单数据会先controller

PublishFormController

发布表单controller

TableAssignController

分配表单controller

TableFillController

表单填报审核controller

 

3 页面设计器

3.1. 使用说明

访问路径

http://localhost:8989/main/plcDesinger/maintainMenu.bi?curlnk=8

1、功能入口,点击工具栏上的

2、主页面,左测是目录结构,右边具体的页面。

3、目录结构右键有添加、修改、删除等功能。

目录结构对应项目中的目录如下图,当发布页面时会在相应的目录下,建立相应的jsp页面。

4、创建页面

在创建页面时候,页面代码后面要相应输入.jsp。

然后点击创建页面即可。

 

5、还有设计页面,属性修改,页面删除,预览页面(只有在发布页面后才能预览)

6、设计页面

具体页面设计功能,可以点击工具栏中的 查看。

3.2. 目录结构

1、前台js代码。

Css:样式文件夹

Help:所有设计器的帮助文件

Js,jsMb,newjs:所有有关设计器的js代码

xmlmb:

/all 暂时不用 ,记录的是所用EXT元素的xml文件

/allConfig 所有元素的属性,监听事件,方法等配置文件

/item 所有元素

plcdesinger.jsp 设计主页面

plchelp_left.jsp,plchelp.jsp:帮助文档

2、后台java代码

位于plcdesinger源文件夹包里面

 

3.3. 设计思路

图1-组件图

 

1、所有的组件都是一个xml文件,位于webContent/plcDesinger/ xmlmb/ item

格式如下,

 

其中ctype = Button是这个这个组件名称

ptype="extdeitor" 表示所属类别

即上图(组件图)中html控件,ext控件,html容器,ext容器

对应关系

Htmleditor html控件

Extdeitor ext控件

htmlcont html容器

extcont ext容器

这些代码的解析在plc_AllItem.js中

text="Button"是显示名称

表示new对象的json参数, 有值的会默认传入

24

……

所有监听事件

'render(o)'

……

<:method>所有可用的方法

'setWidth(o)'

 

Ext.Button 初始化方法(new对象所使用的方法)

 

2、后台java代码动态解析这些xml文件,形成相应的js代码。

相应的js代码位于webContent/plcDesinger/js/ plcImpl.js,

第七行

Ext.Ajax.request({

url: getRootPath()+"/PlcDesinger.table?method=changeXmlToJson",

……………………

)};

 

相应的java代码  在 PlcDesingerController,PlcItemServiceImpl中

主要是PlcItemServiceImpl类中的getJsBuilder方法,返回的就是最后的js代码

 

 

其中产生的js代码包括所有组件代码,所有组件的属性代码,所有监听事件代码,所有页面设计可调用的代码,fushionchart对应的模板文件。对应关系如下。

 

组件的属性代码:PlcItemServiceImpl中的 getAllItemConfig方法。

读取的是 这个xml文件。

所有监听事件代码:PlcItemServiceImpl中的 getAllItemListen方法。

读取的是 这个文件。

 

所有页面设计可调用的代码:PlcItemServiceImpl中的 getAllExtendMethod方法。

读取的是 这个文件。

在前台的展示相应的在页面方法设计窗口工具栏中(F9),如图

在menuToolbar.xml文件配置如下

 

fushionchart对应的模板文件:PlcItemServiceImpl中的 getAllfushionChart方法。

读取的是fushionChart.xml

前台展示在数据源配置窗口中(F8),如图

注意事项:当自定义一个组件,并且添加属性时候,要在allItemConfig.xml添加相应的属性信息。

例如:

Grid.xml中有 这个属性,但是由于grid.js是自己封装的,原先的Ext的grid。当new对象时候并没有这个参数,所以在allItemConfig.xml中添加自己属性的说明,如图。(在3773行)

其中type表示类型string(有string,number,boolean,object)。

为string类型时候,你在前台配置属性时候得加”或者’,

例如

Displaytype表示前台配置属性时展现形式,

比如grid的isPage属性是boolean属性,在前台选择框中可以下拉选择,所以xml文件为

 

前台展示为

 

(展现形式共有combox,textfield,numberfield,window,keySelect)

(解析代码在plc_object.js中221行,

for(var abc in this.proGridName.ch_type)

{……………………}

 

3、设计器主代码是plc_object.js这个js文件。

Js文件中的PigLoveCat 是主要类。

在主页面中只要new一个这个对象即可(见plcImpl.js中第十三行代码

new PigLoveCat({})……)

 

3.4. 关键代码解析

1、拖动创建组件实例:

工具栏上的树位于plc_object.js中(id为toolTree_cfz)。

拖动后执行代码位于68行this.toolTree.on("enddrag",…………

接着调用crtExt()这个方法

方法中主要先往页面中添加一个div

 

然后调用对象的 initialMethod方法,这个方法在后台java代码解析xml文件中产生。

就是动态的new 对象 ,比如new Grid(json);json就是配置属性。

 

 

2、记录当前页面所有创建的元素:

拖动创建的元素,都记录在allItemTree这个对象tree中,在 这个js文件中。

这个tree可以通过点击工具栏上的元素选择窗口点出。

 

 

 

 

3、拖拽功能的实现:

拖拽功能的实现主要是drag.js和dragImpl.js这两个js文件,

这个js方法记录了                    

obj.mouseDown(e)

obj.mouseMove(e)

obj.mouseUp(e)

obj.keyDown(e);

这几个事件,并apply到document标签中。在代码中通过判断class是否等于plc_absolute_div来判断这个组件是否拖动,所以在每个创建元素的外层div中都有class等于plc_absolute_div 的值。

 

4、页面方法窗口

主要代码在functionWin.js

中的PigLoveCat.prototype.itemFunWindow这个window    

 

 

5、数据来源窗口

主要代码在plc_sql.js中

 

 

3.5. 功能入口点

1、

执行toolbar.js中的myObject.createXmlSave()。

myObject.createXmlSave()位于toolbar.js 中

2、

执行toolbar.js中的myObject.createFabuJsp();

myObject.createFabuJsp()位于toolbar.js中

3、

执行toolbar.js中的myObject.createTempFabuJsp();

myObject.createTempFabuJsp()位于toolbar.js中

4、

执行toolbar.js中的myObject.AjaxRequestXml('xml_');

myObject.AjaxRequestXml('xml_')位于toolbar.js中

 

5、

执行toolbar.js中的myObject.AjaxRequestXml('xml_copy');;

myObject.AjaxRequestXml('xml_copy')位于toolbar.js中

 

6、

执行toolbar.js中的myObject.historyWindow.show()

myObject.historyWindow在showAllItem.js定义

7、

执行toolbar.js中

Ext.getCmp("loadSaveByLocalXml")的window在plc_object.js中定义

 

8、

执行toolbar.js中

 

Ext.getCmp("loadSaveByLocalXml")的window在plc_object.js中定义

8、

执行toolbar.js中

Ext.getCmp("toolBarWin_cfz").show();

Ext.getCmp("toolTree_cfz").getRootNode().expand();代码

toolBarWin_cfz 和toolTree_cfz 都在plc_object.js中定义

 

9、

执行toolbar.js中

myObject.showFunctionWindow("");代码

showFunctionWindow 方法在functionWin.js中定义

 

10、

执行toolbar.js中

 

其主要代码在plc_sql.js定义

11、

执行toolbar.js中

 

showallItemWindow主要在showAllItem.js中定义

12、

执行toolbar.js中

 

主要是myObject.buJuFlag这个标志位

13、右键菜单

执行plc_object.js中的

删除:

{

text:'删除(delete)',

id:'delete',

handler:function(){myObject.deleteItem();}

}

代码。

14、 这些功能同上(见13)

3.6. 数据库字段

1、表t_plcdesinger记录所有目录结构和页面。

 

 

t_plcdesinger

 

 

ID_

主键id

CODE_

目录英文名称/或者jsp页面的名称

NAME_

目录别名/或者jsp页面别名

XML_

页面设计的xml文件

XML_COPY

备份xml文件

PID_

目录pid

TYPE_

类型1是目录,2是文件

SORT_

排序

URL_

页面的url地址。(发布生成jsp页面的地址)

GRID_XML_

Comboxgridchart的相应配置sql语句

2、表t_plcdesinger_old设计页面的历史记录。

t_plcdesinger_old

 

 

ID_

主键di

XML_COPY

备份的xml文件

TIME_

备份的记录时间

GRID_XML_

Comboxgridchart的相应配置sql语句

PLC_ID

对应t_plcdesinger表中的id

 

4 自定义明细报表

以拖拽的人性化方式,选择明细报表的列,并选择报表数据的时间,进行预览;选择报告期,根据需要固定报告期或者相对报告期,包括当前期、上一期、去年同期、前n期等;自定义列,可以对不同报告期的指标进行运算;条件设计,对明细内容填加统一的条件限制,例如只统计某一地区的数据;保存报表,对设计好的明细报表,进行保存。

 

JSP页面位置

jsp/solutions/analystic目录

detail-report.jsp 报表设计

defaultDetailReportView.jsp 报表回显

Controller

com.berheley.bi.report.web.controller. DetailReportController

报表查询相关操作

com.berheley.bi.report.web.controller.OperateDetailReportController 报表保存回显相关操作

BO

com.berheley.bi.report.service.def.DetailReportService

com.berheley.bi.report.service.impl.DetailReportServiceImpl

DAO

com.berheley.bi.dao.impl.JdbcOpDaoImpl

TABLE

t_reportdetail 明细报表保存表

表格 4 1 公用文件

 

表名

t_reportdetail

日期

作者

版本

描述

字段

说明

输入格式

是否必填

ID_

主键

VARCHAR(32)

NAME_

报表名称

VARCHAR(255)

AUTHOR_

创建人

VARCHAR(32)

DESCRIPTION_

报表描述

VARCHAR(500)

REPORT_DATASOURCE_

报表数据源名称

VARCHAR(100)

HEAD_

报表表头配置

TEXT

REPORT_DATE_

报表创建日期

DATETIME

REPOSITORY_ID_

资源管理目录

VARCHAR(32)

XML_ID_

Report模型id

VARCHAR(32)

COL_LIST_HTML_

宾栏html代码

TEXT

TYPE_

报表类型

VARCHAR(1)

QUERY_CONDITIONS_

报表查询条件

TEXT

JSON_ATTR_

条件设计区的属性

LONGTEXT

SQL_CONDITION_

条件设计区的条件

LONGTEXT

表格 4 2 数据库表t_reportdetail

4.1. 功能描述

 

访问路径

/detailReport.report?method=getRoot

JSP名称

/jsp/solutions/analystic/detail-report.jsp

后台方法

getRoot

备注

表格 4 3加载指标分类根目录

  

访问路径

/detailReport.report?method=getChilds

JSP名称

/jsp/solutions/analystic/detail-report.jsp

后台方法

getChilds

备注

表格 4 4加载指标分类子目录

  

访问路径

/detailReport.report?method=query

JSP名称

/jsp/solutions/analystic/detail-report.jsp

后台方法

query

备注

 

 

表格 4 5报表查询

 

访问路径

operateDetailReport.report?method=saveOrUpdate

JSP名称

/jsp/solutions/analystic/detail-report.jsp

后台方法

saveOrUpdate

备注

表格 4 6报表保存和修改

 

访问路径

operateDetailReport.report?method=view

JSP名称

/jsp/solutions/analystic/defaultDetailReportView.jsp

后台方法

View

备注

表格 4 7报表回显

 

访问路径

operateDetailReport.report?method=edit

JSP名称

/jsp/solutions/analystic/detail-report.jsp

后台方法

Edit

备注

表格 4 8报表设计回显

 

访问路径

operateDetailReport.report?method=delete

JSP名称

jsp/solutions/repository/repositoryManage.jsp

后台方法

delete

备注

表格 4 9报表删除

 

4.2. 业务流程描述(设计思路、主要环节)

首先通过四步组表创建出报表模型,报表模型中保存了所有事实表和维表的表信息与表的连接关系(请参考四步组表开发文档)。进入明细报表设计器,选择要设计的报表,这时会看到报表模型中的事实表,客户可以展开树结点,选择需要的报告期下的指标,可以将事实表指标拖拽到宾栏。单击预览后会将宾栏主栏的信息传到后台。后台分析宾栏所有涉及到的表的信息和报告期的信息,根据报表模型加以分析,最后生成报表查询sql,执行sql后将查询结果根据宾栏的顺序位置依次排列处理成json,前台grid组件接收到json展示出最终的明细结果。客户可以进一步对表头进行设计

 

 

 

4.3. 使用说明

1.选择行业套表

 

图 3.1 选择行业套表

2.选择指标

 

图 3.2 选择指标

3.更换报告期

 

图 3.3更换报告期

4.拖拽指标到宾栏和主栏,并预览

 

 

图 3.4查询结果

 

 

5.自定义宾栏

 

 

图 3.5自定义宾栏

 

 

6.自定义查询条件

 

图 3.6自定义查询条件

7.复杂表头

 

图 3.7复杂表

 

 


 

英文版|员工门户|联系博和利|法律条款|网站地图津ICP备05011245号