公共组件使用手册

来源:互联网 发布:wow台服数据库 编辑:程序博客网 时间:2024/06/17 00:04

该文档为国家电网PMS2.0开发手册

公共组件使用手册

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PMS2.0项目组

2013年4月

修订记录

版本号

修订说明

修订人

修订时间

审核人

1.0

创建

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

目录

1      引言............................................................................................................................8

1.1         概述..............................................................................................................8

1.2         适用范围.....................................................................................................11

1.3         名词解释.....................................................................................................11

2      公共组件功能............................................................................................................12

2.1         引用说明.....................................................................................................12

2.2         业务导航树..................................................................................................14

2.2.1     页面配置..............................................................................................15

2.2.2     使用说明..............................................................................................22

2.3         复合表头Grid..............................................................................................25

2.3.1     使用说明..............................................................................................25

2.3.2     功能展示..............................................................................................27

2.4         分组Grid.....................................................................................................27

2.4.1     使用说明..............................................................................................27

2.4.2     功能展示..............................................................................................29

2.4.3     注意事项..............................................................................................30

2.5         业务表单导出..............................................................................................31

2.5.1     使用说明..............................................................................................31

2.5.2     功能展示..............................................................................................31

2.6         常用词.........................................................................................................32

2.6.1     页面配置..............................................................................................32

2.6.2     使用说明..............................................................................................33

2.6.3     功能展示..............................................................................................35

2.7         自定义查询组件...........................................................................................35

2.7.1     页面配置..............................................................................................36

2.7.2     使用说明..............................................................................................37

2.7.3     功能展示..............................................................................................38

2.7.4     注意事项..............................................................................................41

2.8         业务报告模板定义-XslPanel控件................................................................42

2.8.1     使用说明..............................................................................................42

2.8.2     注意事项..............................................................................................45

2.8.3     功能展示..............................................................................................47

2.8.4     相关附件..............................................................................................48

2.9         通用工具库..................................................................................................49

2.9.1     时间处理类...........................................................................................49

2.9.2     用户信息类...........................................................................................52

2.9.3     序列生成类...........................................................................................65

2.9.4     对象比较类...........................................................................................66

2.9.5     xml文件转换类....................................................................................67

2.9.6     E语言转换类........................................................................................68

2.9.7     模拟登录..............................................................................................69

2.9.8     枚举类..................................................................................................71

2.9.9     图表处理类...........................................................................................72

2.9.10   获取SQL.xml文件类............................................................................74

2.9.11   全局数据操作类....................................................................................75

2.9.12   导出Excel方法.....................................................................................76

2.9.13   导出Excel后台工具类..........................................................................78

2.10       业务审计组件..............................................................................................82

2.10.1   页面配置..............................................................................................82

2.10.2   使用说明..............................................................................................83

2.10.3   功能展示..............................................................................................87

2.10.4   注意事项..............................................................................................88

2.11       统一附件管理..............................................................................................88

2.11.1   使用说明..............................................................................................89

2.12       界面元素组件..............................................................................................91

2.12.1   编辑区(表单控件).............................................................................91

2.12.2   查询区..................................................................................................92

2.12.3   Window窗口.........................................................................................93

2.12.4   按钮.....................................................................................................94

2.12.5   纵向Tab页...........................................................................................94

2.13       在线帮助.....................................................................................................95

2.13.1   页面配置..............................................................................................95

2.13.2   使用说明..............................................................................................97

2.13.3   功能展示..............................................................................................97

2.14       主从Grid.....................................................................................................98

2.14.1   使用说明..............................................................................................98

2.14.2   功能展示............................................................................................100

2.14.3   注意事项............................................................................................101

2.15       统一附件展示组件.....................................................................................101

2.15.1   使用说明............................................................................................102

2.15.2   页面中附件的使用说明.......................................................................103

2.15.3   功能展示............................................................................................104

2.15.4   注意事项............................................................................................105

2.15.5   相关配置............................................................................................106

2.16       流程审核日志统一管理..............................................................................107

2.16.1   使用说明............................................................................................107

2.16.2   功能展示.............................................................................................114

2.17       组织结构树(一)......................................................................................115

2.17.1   使用说明.............................................................................................115

2.17.2   功能展示.............................................................................................115

2.18       组织结构树(二)......................................................................................116

2.18.1   使用说明.............................................................................................116

2.18.2   功能展示.............................................................................................117

2.19       编号生成组件.............................................................................................118

2.19.1   使用说明.............................................................................................118

2.19.2   功能展示.............................................................................................118

2.20       工作流组件................................................................................................119

2.20.1   客户端................................................................................................119

2.20.2   服务端................................................................................................128

2.21       门户框架...................................................................................................133

2.21.1   登录界面............................................................................................134

2.21.2   吊顶栏................................................................................................135

2.21.3   主菜单................................................................................................139

2.21.4   状态栏................................................................................................140

2.21.5   首页面................................................................................................141

2.22       图表标准库................................................................................................142

2.23       指标项目维护............................................................................................147

2.24       当前任务组件............................................................................................152

2.24.1   待办任务............................................................................................152

2.24.2   已办任务............................................................................................153

2.24.3   流程迁移选择页面..............................................................................154

2.24.4   页面交互说明.....................................................................................155

2.24.5   其他配置............................................................................................159

2.25       人员选择页面............................................................................................159

2.25.1   功能说明............................................................................................159

2.25.2   人员选择的页面图..............................................................................159

2.25.3   使用说明............................................................................................160

2.25.4   注意事项............................................................................................162

2.26       组织机构选择页面.....................................................................................162

2.26.1   功能说明............................................................................................162

2.26.2   组织机构选择的页面图.......................................................................162

2.26.3   使用说明............................................................................................164

2.26.4   注意事项............................................................................................165

2.27       单列合并表格控件(陈建).......................................................................166

2.27.1   功能说明............................................................................................166

2.27.2   单列合并表格控件的效果图................................................................166

2.27.3   使用说明............................................................................................166

2.27.4   注意事项............................................................................................167

2.28       高级查询区................................................................................................167

2.28.1   使用说明............................................................................................167

2.28.2   功能展示............................................................................................169

2.28.3   注意事项............................................................................................171

2.29       Grid自定义排序.........................................................................................171

2.29.1   使用说明............................................................................................171

2.29.2   功能展示............................................................................................171

2.29.3   注意事项............................................................................................172

2.30       人员部门维护页面(陈建)............................................................................172

2.30.1   功能说明............................................................................................172

2.30.2   使用说明............................................................................................173

2.30.3   注意事项............................................................................................174

2.31       Excel模版导出和excel数据导入维护页面(陈建)....................................174

2.31.1   功能说明............................................................................................174

2.31.2   使用说明............................................................................................175

2.31.3   注意事项............................................................................................177

2.32       系统消息配置............................................................................................178

2.32.1   功能说明............................................................................................178

2.32.2   使用说明............................................................................................179

2.32.3   注意事项............................................................................................181

2.33       系统告警/提醒配置....................................................................................182

2.33.1   功能说明............................................................................................182

2.33.2   使用说明............................................................................................183

2.33.3   注意事项............................................................................................184

2.34       页面导出Excel/Word/PDF/HTML(陈建)......................................................184

2.34.1   功能说明............................................................................................184

2.34.2   功能截图............................................................................................184

2.34.3   使用说明............................................................................................187

2.34.4   注意事项............................................................................................188

2.35       导出Excel..................................................................................................188

2.35.1   使用说明............................................................................................188

2.35.2   功能展示............................................................................................190

2.35.3   注意事项............................................................................................190

2.36       导出多sheet页的Excel...............................................................................190

2.36.1   使用说明............................................................................................190

2.37       流程分级过滤方案维护页面.......................................................................194

2.37.1   功能说明............................................................................................194

2.37.2   功能截图............................................................................................195

2.37.3   使用说明............................................................................................195

2.38       甘特图控件................................................................................................195

2.38.1   使用说明............................................................................................195

2.38.2   功能展示............................................................................................198

2.38.3   注意事项............................................................................................199

2.39       Word模板读写...........................................................................................201

2.39.1   功能说明............................................................................................201

2.39.2   功能截图............................................................................................201

2.39.3   使用说明............................................................................................202

2.39.4   注意事项............................................................................................203

2.40       多层分组Grid............................................................................................204

2.40.1   功能说明............................................................................................204

2.40.2   功能截图............................................................................................204

2.40.3   使用说明............................................................................................204

2.40.4   注意事项............................................................................................206

2.41       前端分页树控件.........................................................................................206

2.41.1   使用说明............................................................................................206

2.41.2   功能展示............................................................................................207

2.42       树节点的模糊查询定位控件.......................................................................207

2.42.1   使用说明............................................................................................207

功能展示........................................................................................................209

3      建表语句.................................................................................................................210

 


公共组件用户使用手册

1   引言

1.1 概述

公共组件的开发目的在于极大减少二次开发人员的代码工作量,丰富页面展示及功能使用,扩展UAP平台功能组件。通过对UAP平台组件、GIS平台组件以及其他非平台组件(开源项目等)的归纳和封装,实现适用于PMS2.0的公共组件,以支撑PMS2.0应用系统的开发。主要包含以下组件:

功能清单

组件批次

名称

描述

第一批公共组件

业务导航树

树型节点分组、动态分组

基于数据配置的动态定制业务树结构

支持树型组件顶层过滤设置

支持部门或人员、设备树型组件配置

复合表头Grid

支持按单元格自动换行,数据行的颜色、字体大小等控制

支持Grid上右键菜单定制功能

根据用户习惯保存;

业务表单导出

支持页面表单的导出EXCEL功能

分组GRID

支持将GRID记录添加分组的功能。

支持分组数据颜色设置;

支持拖动记录加入分组的功能;

支持分页分组展示;

提供通过API获取分组信息的功能;

通用工具类

时间处理通用类

用户信息类

序列生成类

第二批公共组件

自定义查询组件

提供通过配置自动生成查询过滤输入控件布局

提供通过配置加载数据表列的展示功能

提供查询条件保存功能,下次查询时可直接选择

常用术语展示组件

提供统一数据库配置常用术语的功能

提供术语分类展示的功能

试验模板定义

提供模板展示、编辑功能

通用工具类

Xml处理类

E语言处理类

对象比较类

查询条件解析类

第三批组件

数据审计

支持数据审计业务分类、操作类型配置

支持审计数据录入API接口

支持数据审计日志的查询功能

在线帮助

支持文档结构的数据库配置功能

支持文档网页化在线帮助展示功能

提供在线帮助API调用功能

模拟登录

提供在胖客户端中提供模拟登录的功能

获得一个用户session

界面元素控件

提供符合界面规范的图片按钮;

提供符合界面规范的查询域控件;

提供符合界面规范的DataFrom控件;

集成接口框架

提供外部调用的接口框架,支持接口类的注入调用

提供支持数据传递实体构架框架。

统一附件管理

支持多个公共组件上传后业务ID、业务字段、附件名、结构ID的保存到数据库

支持通过业务ID或业务字段获取附件名称、结构ID等信息

第四批组件

主从GRID

提供一个主从关联展示的组件,支持树风格主从GIRD关联显示,支持数据的删除与修改

统一附件展示组件

提供业务附件上传下载的展示界面,支持传入业务ID以缩略图展示相关附件信息;支持业务记录附件信息的上传和下载(非结构化平台);支持附件缩略图上选定、下载及删除的功能;支持符合界面规范的控件展示

组织结构树

组织结构树提供了树节点以平面(类似流程图)形式展现出来的方法,使得用户可以以平面的形式更直观的查看节点接的挂接方式。

编码生成组件

按照预定义的规则生成编号,以支持操作票、工单编号等按照特定格式组成。

工作流组件

提供流程发送、删除、终止等通用的工具类,支持客户端与服务端

第五批组件

门户框架

提供支持界面规范描述的门户框架登录界面

提供支持界面规范描述的门户框架吊顶栏组件,支持注销、菜单搜索、常用菜单等

提供支持界面规范描述的门户框架菜单栏组件,支持一、二、三级菜单的展示及常用菜单的保存

提供支持界面规范描述的门户框架状态栏组件,支持已开菜单的状态展示。

流程代办任务

提供支持界面规范描述的集成所有pms业务流程的代办任务界面。提供代办与已办任务的树展示、列表查询,及流程图、日志展示。

流程迁移选择

提供流程发送时,迁移人员选择的公共组件,支持选择人员及回退、完成等功能

首页面展示

提供首页面布局、指标项目的维护、图标展示及整合。

 

人员选择 页面

提供对某部门下的人员进行选择,然后人员ID和人员名称集合

1.2 适用范围

公共组件适用于PMS2.0业务应用开发。

1.3 名词解释

UAP平台:应用系统统一开发平台。在开发阶段,提供各种应用开发的工具和组件,实现系统功能的快速开发;在运行阶段,提供平台运行时容器,多种与业务系统松耦合的公共服务,公用性问题的解决;平台功能包括基础设施组件库、集成开发IDE,公共套件服务,系统治理工具,外部集成包。

2   公共组件功能

2.1 引用说明

将公共组件组提供的服务包已放UAP服务器sguap-server\WEB-INF\repository\platform\Version1.0.0\infrastructure路径下

开发者需要引用最新的公共组件的时候,须在UAP开发工具的工具栏Window-Preferences下

弹出的窗口下

       选中当前激活的路径,点击Edit

弹出的界面中,勾选 show locationcontent 检查查看是否com.sgcc.pms.framework.base_xxxxx相关信息

对应的开发地址是

http://192.168.1.8:7002/sguap-server/ environment/platform/Version1.0.0

确认后,点击Finish

在返回的界面中点击Reload,Reload完成后,点击右下角的Apply

 

l  客户端引用:如果需要调用公共组件客户端组件,需在开发场景的weblet.js中引入包,引用规则如下:requires:["pmsframework/mxpms"];

l  服务端引用:如果需要调用公共组件服务端类库,需要在开发项目模块META-INF/MANIFEST.MF 中引入公共组件com.sgcc.pms.framework.base_xxxx.jar包;(xxx代表jar动态编码)

2.2 业务导航树

业务导航树可以通过页面配置树的展示层次关系,提供满足使用者需求的导航树展示。具体功能包括配置导航树

2.2.1   页面配置

页面路径:pmsframework/mxpms/index.jsp

页面菜单:系统配置/公共组件配置/业务树配置

导航树配置页面主要实现树的层次关系配置。进入树配置主页面,如下图:

Ø  主体树编辑域:(新建、修改、删除主体树数据)

 

点击工具栏的按钮,弹出新建框如下图(*为必填字段)

录入树信息,后保存(描述:主要描述树功能;配置信息:预留字段)

选择一条主体树记录,点击工具栏的按钮进行删除操作,如果欲删除的业务配置树有创建节点系统会提示“您需要删除的业务树中已经有配置节点的业务树,您确认连同配置节点一起删除吗?”,确认后即连配置的节点一同删除。

目前可以直接在表格中修改完成,点击工具栏的按钮进行保存。

Ø  树形挂接关系展示域:(新建子节点及维护挂接关系)

点击主体树编辑域中一条记录的序号列,挂接关系展示域中显示自定展示。

右键点击顶层树节点(系统配置树节点),可以创建业务树顶层节点(可以创建多个顶层节点)

点击“创建下级节点”,弹出顶层节点编辑框

 维护节点信息保存。保存的数据最终在树关系配置域中展示。

    在新建的树节点上右键(非系统配置树节点),可以创建子树子节点,如图:

如果需要删除树节点,点击右键菜单可对树节点进行删除。如果需要删除的树节点有下层节点,会提示“您想删除的节点包含子节点,请逐级删除”,需要先删除下层节点。

点击右键菜单 ,可以在树关系配置域列表中过滤出当前需要编辑的树节点,直接进行维护,修改完后点击下方列表的保存功能按钮即保存。如下图:

       点击右键菜单,可以将预复制的节点类型存放至粘贴板内;选择粘贴的树节点位置,点击右键菜单,可以将粘贴板内存放的节点类型粘贴到选择的树节点下。然后再下方的属关系配置域维护好后点击保存按钮进行保存。

Ø  配置树类型分组展示域:

配置树类型分组展示域管理配置树的分类,将不同类型的树放在不同的分组下,以供方便管理和快速定位配置树。分组默认有“配置分组”、“系统配置”、“其他”三个选项,这三个选项只能创建下级分组不能编辑和删除。

点击右键菜单“创建分组”,可以弹出分组新建表单:

编辑完成后点击“保存”进行保存,保存后分组树上可以展示出来。点击“取消”进行放弃创建操作。

点击右键菜单“编辑当前分组”,可以在类似分组新建表单中进行对分组类型的编辑操作,操作方式与创建类似。

点击右键菜单“删除当前分组”,可以对分组进行删除操作。

特别提醒:目前所有配置树都属于“其他”分组下,需要大家在列表中维护到属于自己开发组的分组下。

Ø  树关系配置域:(树关系配置信息维护及实际业务树演示)

在列表中可以编辑一条节点数据。

图片路径:树展示时节点显示的图片信息。例如

~/testXMLTREEView/conftree/resources/images/bdz.jpg

testXMLTREEView 为应用模块bundle名,conftree为业务模块的weblet名。

可以给一个节点配置多张图片,前提是必须要配置“图片判断字段”,例如:

拓展值配成:XLLX,

图片路径配成:

FDXL:~/testXMLTREEView/conftree/resources/images/FDXL.jpg@

XL:~/testXMLTREEView/conftree/resources/images/XL.jpg(中间以@符号分隔)

配置成这样,程序会判断当节点的XLLX值为FDXL时图片为~/testXMLTREEView/conftree/resources/images/FDXL.jpg;XLLX值为XL时图片为~/testXMLTREEView/conftree/resources/images/XL.jpg。

当判断的节点太多时,而图片路径又相同时,可以配置成:

FDXL: FDXL.jpg@ XL:XL.jpg#~/testXMLTREEView/conftree/resources/images/

这样图片的统一路径配置在字符串的最后面,中间以“#”隔开。

这样代码解析出的路径会变成:

~/testXMLTREEView/conftree/resources/images/FDXL.jpg

和~/testXMLTREEView/conftree/resources/images/XL.jpg

图片判断字段:用以同一种类型的节点在不同性质的情况显示多种图片的配置:例如:SBXZ(业务表的设备性质字段)

类型:每种节点对应的唯一类型,可以自定义命名,建议分组节点为“xxxgroup“ xxx为节点的相关信息。

注意:在一种业务树下,类型定义不能够重复。但是,如果出现单表自关联的情况,类型定义必须一样,下级节点必须新建在自关联的第一个节点上。

描述ISC单位的时候,类型定义必须为“sysbaseorg” ,描述ISC用户的类型定义必须为“sysuser”,描述组织角色的类型定义必须为“sysrole”。

绑定值:节点上绑定的ID或中文值的描述,如果节点为分组,绑定值为节点显示的中文。如果为动态分组或实体节点,绑定值为表对应的id,mc。请注意:当顶层节点配置为组织结构单位时,同时“显示前提”配置为“expend”,程序将不会从ISC接口获取当前登录人单位的相关信息,而是从公共组件组提供的拓展表中获取相关的信息返回树节点,于此同时绑定值和拓展值也可以自由配置拓展表中的值,如果不配置绑定值默认为拓展表中的“SSDWID”和“SSDWMC”;当单位的下挂节点需要从拓展表取值时,“显示前提”同样配置成“expend”,此时绑定值默认为拓展表的"ISC_ID, BMMC"如果开发人员需要取拓展表中别的值,建议配置拓展值。

所属表:描述节点数据表的信息。如果节点为分组节点,该字段为空。如果为动态分组或实体节点,该字段必须维护对应的数据表。

注意:描述ISC单位的时候,所属表定义必须为“$sysorg”, 描述ISC用户的所属表定义必须为“$sysuser”,描述ISC角色的所属表定义必须为“$sysrole”。

过滤条件:节点数据的过滤条件配置。如果节点为分组,该字段为空。如果为动态分组,该字段为数据过滤条件。如果节点是实体,绑定值为表对应的数据过滤条件and 过滤条件1={0} and过滤条件2={1}。。。{0} 代表上级节点的ID值,{1}代表上上级节点ID,系统会自动获取。

例如:yxwzlb=‘xl’and dydj=‘{0}’ and yxdw=‘{1}’

如果是单位,单位的过滤条件为ORG_PROP=?(组织性质)或者ORG_NAME=?(组织名称)或者ORG_DIMENSION=?(组织维度)或者ORG_SYS(默认网省管理员登陆,获取当前应用下的顶级所有业务组织)。

当过滤条件中出现‘sysorg’时,程序会默认替换成当前登录人的单位ID;

当过滤条件中出现‘sysuser’时,程序会默认替换成当前登录人的ID;

当过滤条件中出现‘sysrole’时,程序会默认替换成当前登录人的角色ID;

拓展值:用来描述树节点的特殊字段,便于用户设置特殊的字符来解释树节点的类型。

显示前提:节点类型显示的前提条件配置。如果节点为分组,设置为“auto”,当此分组节点的下级节点数据为空时,此分组节点不显示;如果节点为动态分组或实体时,可以设置此节点的显示前提,例:select 1 from mwt_ud_pd_sb_rh_yxwz where yxbh='849' and obj_id='{0}',{0}规则和过滤条件中{0}的规则一致,此sql语句的意思是当”父节点的运行编号为849挂出此类型的数据节点“。程序会先判断此规则下有无数据,如果有数据正常挂出,如果没有数据则不挂出此类型的数据节点。

显示顺序:统计节点类型显示的先后顺序。

是否分组:描述节点类型。

树信息配置完成后,可以通过展示树来验证是否正确。

点击工具栏中的  功能按钮,会弹出框将已经配置好的业务配置树进行预演,如下图:

 

2.2.2   使用说明

树服务的使用是基于UAP平台tree控件的Rest服务实现,服务的调用规则遵循平台tree的展示规则,如下:

me.treeView = new mx.datacontrols.DataTree({

baseUrl: mxpms.mappath("~/rest/pmstreeservice/tree/" +treeID),

            displayCheckBox: false, //是否需要在树中显示选中框

            onselectionchanged: me.controller._tree_selectionchanged

        });

其中treeID是根据已配置业务导航树中主体表ID来控制业务树的加载。业务导航树组件提供根据配置信息实现数据的服务的功能,而导航树的页面展示及操作控制是由UAP平台的tree组件提供的方法来实现。

 

支持客户端顶层过滤条件传递,路径书写规范:

mxpms.mappath("~/rest/pmstreeservice/tree/"

+treeID__ColName@ColValue)//两个下划线隔开

treeID: 配置的树ID; ColName:字段名ColValue:顶层节点过滤ID。通过顶层过滤条件,可以过滤出特定的顶层节点。设置顶层过滤调节的约束:

1传入参数的格式必须以上面的格式,超出格式组件将无法辨识。

2 ColValue为客户端获取的数值,可以为单位ID,用户ID或其他业务的主键ID

ColName 为配置表的字段名,不能超出配置表。

3如果单位用户过滤Org@ID,User@ID;系统会根据ID对应ISC中单位、用户主键ID。

4 当单位配置为expend获取拓展表时,使用者可以配置成Org@(dw、ds、ws、bm、gd),这样可以定位到当前登录人的部门、地市、网省等。当没有数据时返回空(页面呈现无数据状态)。

       dw:获取登录人所属单位。

       ds:获取登录人地市单位。

       ws:获取登录人网省单位。

       bm:获取登录人部门。

       gd:获取登录人县级单位。

 

支持客户端指定配置表中实体节点提升为顶层节点,路径书写规范:

mxpms.mappath("~/rest/pmstreeservice/tree/"

+treeID__ColName@ColValue__NodeType)//两个下划线隔开

TreeID:配置的树ID;ColName:字段名;ColValue:顶层节点过滤ID;NodeType:配置表中类型。通过这种写法可以将某一个子节点设置为顶层节点,并可以设置过滤条件(也可以不增加过滤条件)。其约束条件为:

1传入参数的格式必须以上面的格式,超出格式组件将无法辨识。

2 ColValue为客户端获取的数值,可以为单位ID,用户ID或其他业务的主键ID

3 ColName 为配置表的字段名,不能超出配置表

4 NodeType为配置表的类型。

5如果单位用户过滤Org@ID,User@ID;系统会根据ID对应ISC中单位、用户主键ID。

6 NodeType只能对应实体节点。

7将NodeType对应的顶层节点后,该节点配置的过滤条件中取上级节点的条件将不起作用。

       支持直接将已经配置好的树首次加载时全部展开,路径书写规范:

mxpms.mappath("~/rest/pmstreeservice/tree/"

+ treeID + "__isexpand")//两个下划线隔开

当treeID后增加"__isexpand"字符串,或是在顶层过滤条件之后添加"__isexpand"字符串时,即可实现首次加载全部展开的功能。

支持展开节点时设置过滤条件。这里是利用了给树绑定展开前时间onexpanding,在事件中设置节点的过滤参数,再通过公共组件的服务代码进行解析,达到动态过滤的效果。例:

function _initTree()

    {

       me.treeView = new mx.datacontrols.DataTree({

            baseUrl: mxpms.mappath("~/rest/pmstreeservice/tree/" +me._treeId),

            displayCheckBox: false,// 是否需要在树中显示选中框

            onselectionchanged: me.controller._tree_selectionchanged,

            onexpanding: onexpanding // 设置展开前事件

        });

 

      me.treeView.load(function(){

          me.treeView.selectFirstNode();

        });

        me.addControl(me.treeView);

    }

   

    function onexpanding(e)

    {

       e.node.queryParams = {"filters":"hide:xlsl"};

    }

这里通过e.node.queryParams ={"filters":"hide:xlsl"};方式给节点添加过滤条件。过滤条件对象的名称固定为filters;条件内容:当某些场景需要隐藏某些类型的数据类型时,只需要设置"hide:xlsl"即可将类型为"xlsl"的树节点隐藏不显示,当需要隐藏多个节点时,设置的时候以逗号隔开;如果只是给节点添加过滤条件只需和设置配置树信息的“过滤条件”一样设置即可,例:mc=’test’;如果配置多节点时需要用“:”隔开节点类型和过滤条件,并用“@”分隔开多节点之间的过滤条件(如果多节点中只需给一个节点增加过滤条件需在条件最后增加@符号,便于识别),例:xlsl:mc='A线'@zfsl:mc='A站房' ,本示例中xlsl和zfsl为节点的类型。

 

前端可以通过获取节点的exValue值获取已设置的拓展值,通过获取节点的nodeMode值获取树节点的类型(实体、动态分组、分组)。

2.3 复合表头Grid

2.3.1   使用说明

使用复合表头Grid控件,ComplexHeaderGrid控件的使用与DataGrid使用时相似的,但ComplexHeaderGrid的alias属性不能为空且唯一,下面给出一个具体的使用示例,如下:

实例化ComplexHeaderGrid控件,调用示例如下:

var grid = new mxpms.datacontrols.ComplexHeaderGrid({

columns: [

{name: "objId", caption: "OBJ_ID" },

{ name: "bdzzj", caption: "变电站名称", dataAlign:"center", editorType: "TextEditor"  },

{

name: "group1",

caption: "分组1",

columns: [

{ name: "yxbm", caption: "运行班组", editorType: "TextEditor" },

{ name: "dydj", caption: "电压等级*", editorType: "TextEditor" },

{ name: "whdj", caption: "污秽等级", editorType: "TextEditor" }

]

},

{

name: "group2",

caption: "分组2",

columns: [

{ name: "tyrq", caption: "投运日期", editorType: "TextEditor" },

{

name: "group3",

caption: "分组3",

columns:[

{name:"sfslz", caption:"是否枢纽站",editorType: "TextEditor" },

{name:"bzfs", caption:"布置方式", editorType: "TextEditor" }

]}

]

},

{name: "zz", caption: "站址",editorType: "TextEditor" }

],

alias: "thisisatest",

displayCheckBox: true,

allowEditing: false,

allowSorting: true,

allowDraging: true,

displayRowNumber:true,

height:"350",

rowNumberColWidth: 30,

entityContainer: me.gridEntityContainer

});

 

2.3.2   功能展示

表头的拖拽功能:可选中一列,拖放到其他地方。

可定制右键菜单:

2.4 分组Grid

2.4.1   使用说明

使用分组Grid控件

示例代码如下:

//定义一个Grid控件(Grid控件可以基本支持)

me.gridEntityContainerRest = new mx.datacontainers.GridEntityContainer(

 {

    baseUrl : demos.mappath("~/rest/pmssbdbdz/"),

    primaryKey : "objId" //请特别注意,如果主键不是id时,需要予以设置,否则会影响正常使用

 });

   

/**当前控件可以支持的Grid

 * mx.datacontrols.ComplexGrid, mx.datacontrols.DataGrid,

 * mx.datacontrols.GroupHeaderGrid, mx.datacontrols.GroupLockHeaderGrid,

 * mx.datacontrols.LockHeaderGrid, mxpms.datacontrols.ComplexHeaderGrid

 * 不支持:

 * mx.datacontrols.GroupItemGrid

 */

me.dataGrid = new mxpms.datacontrols.ComplexHeaderGrid({

columns: [

    { name: "id", caption: "id" },

    { name: "name", caption: "名称", editorType: "TextEditor"  },

    {

        name: "group1",

        caption: "分组1",

        columns: [

            { name: "sex", caption: "性别", editorType: "DropDownEditor" },

            { name: "age", caption: "年龄", editorType: "NumberEditor" },

        ]

    },

    { name: "remark", caption: "备注", editorType: "TextEditor" }

],

   alias: "thisisatest1",

   displayCheckBox: true,//复选框是必要的

   allowEditing: true,

   allowSorting: true,

   allowDraging: true,

   displayRowNumber:true,

   height:"500",

   rowNumberColWidth: 30,

   entityContainer: me.gridEntityContainerRest

});

 

//定义分组控件

me.group = new mxpms.controls.GroupItemControl({

    //可以直接实例化一个Grid,也可以设置gridTypehgridOptions属性。

dataGrid: me.dataGrid,

    //是否在初始化分组设置,如需初始化时就显示分组信息,则需要设置此属性为true

initGroup: true,

   //设置初始化分组的内容,每一个数据元素类似:{id:"", color:"", text:"", items:[ids]};

   //color建议为空或定义成与控件的colorItem中内容不同的颜色,避免颜色重复。

    groups: [{id:"",color:"red",text:"分组1",

                items:['4E56FC92-CA92-4BF6-8E30-D400240F81A8-52117',

                       '1DD347D4-579D-444D-A0B4-83F829C92DC7-00008',

                       'C4DEE029-C80A-46AA-88D1-FDAF60D9EA8D-03105',

                       'A679A4E3-3DEE-41B4-9954-1AD486D993AA-02031',

                       '75CF783A-2CA2-4E78-A20C-728C8DD76932-01430',

                        'C4843FDA-59ED-4141-AF31-22B157F9C1B1-01054']},

{id:"",color:"",text:"分组2",items:['D558191C-4AA8-40D1-9F45-6D99055A5A8E-01759']},

             {id:"",color:"",text:"分组3",items:['281FE3C5-FA8E-4D7F-BC1E-4746DEA886F9-19695']}]

 });

 

 //添加控件时表格控件和分组控件只需要添加一个即可。

 //me.vSplit.addControl(me.group, 1);

 me.vSplit.addControl(me.dataGrid,1);//建议添加grid控件

 

 //grid本身的使用方法不变

 me.dataGrid.load();

按组修改属性示例如下:

me.group.setValueByGroup(id, "column", "value");

2.4.2   功能展示

2.4.2.1 动态分组

选中某几行,右键添加、移除到分组,并可为每个组选择一种标识颜色。也可以通过拖拽功能调整其所在分组。

      

 

2.4.2.2 按组修改属性

开发人员通过调用接口方法实现一个分组数据的变更。

2.4.3   注意事项

1)  Grid的dispalyCheckBox属性必须设置为true,否则无法使用右键菜单功能;

2)  在使用TabControl或类似组件是,浮动板将不会随着Tab页的切换而显隐,需要开发人员做相应的控制。可在选择改变事件中隐藏其他页的展示当前页的浮动板。显隐浮动板($report)通过show和hide方法实现。

 

2.5 业务表单导出

业务表单导出功能是可以在需要添加此功能的业务表单页面添加功能按钮,导出当前表单页面。

2.5.1   使用说明

整体导出逻辑的实现由导出组件来提供,具体的调用方法如下:

var util = new mxpms.utils.FormExcelUtil();//实例化导出控件

    util.setForms([me.view.form]);//设置需要导出的业务表单,以数组形式传入,可传入多个

util.setTitle("详细信息");//设置导出表单的标题.当页面form中已存在居中标题,该处设置为空。

util.setFileName("XXX");//设置导出文件的名称

util.exportExcel();//调用导出方法。

 

2.5.2   功能展示

需要导出的业务表单:

导出后的效果:

 

2.6 常用词

常用词功能是可以根据自己的需求在本地或者数据库中维护常用词或者词组,并在页面进行选择。

2.6.1   页面配置

页面路径:/pmsframework/mxpms/index.jsp?menu=commonWord

页面菜单:系统配置/公共组件配置/常用词配置

如下图所示:

可先根据常用词内容进行查询,查看是否已有想要的常用词:

用户可新增常用词,如下图所示:

2.6.2   使用说明

使用常用词控件

枚举型数据示例代码:

var textArea =new mxpms.editors.CommonWordEditor({

         "width" : "300px"

         "height":"400px",

         "listEditorWidth":"200",

         "listEditorHight":"300",

         "textMode":"multiline",

         "lineHeight":18,

         "items":[ { text: "应拉开开关" },

             { text: "应装接地线" },

             {text: "应挂标识牌" },

              { text: "先合刀闸,后合断路器"},

             {text: "先合母线侧,后合线路侧" },

             {text: "禁止带电挂地线" },

             {text: "防止误入带电间隔"}

         ],

});

me.addControl(textArea);

通过条件读取数据库示例代码:

var textArea2 =new mxpms.editors.CommonWordEditor({

         "width" : "200px"

         "height":"60px",

         "listEditorWidth":"200px",

         "listEditorHight":"220px",

         "textMode":"multiline",

         "lineHeight":18,

         filter:"ZYDM = '002' AND TYPE = '五防逻辑'"

    });

通过REST读取数据库示例代码:

var textArea = new mxpms.editors.CommonWordEditor({

         "width" : "300px"

         "height":"400px",

         "listEditorWidth":"200",

         "listEditorHight":"300",

         "textMode":"multiline",

         "lineHeight":18,

"url":commonWordTest.mappath("~/rest/tcommonwordconfig/getCommonWord")

    });

    me.addControl(textArea);

REST服务示例代码:

//控制层代码

@RequestMapping(value = "/getCommonWord", method = RequestMethod.GET)

    public @ItemResponseBody

    ListgetCommonWord() {

        returncommonwordBizc.getCommonWord();

    }

//逻辑层代码

public List getCommonWord() {

        String strSql = "SELECT CONTENT FROM  t_mxpms_comword_conf WHERE TYPE = '五防逻辑'";

        List commonWordList = hibernateDao.executeSqlQuery(strSql);

        return commonWordList;

    }

2.6.3   功能展示

在文本框中双击,或者单击右键,会在光标处弹出常用词浮动窗:

选中要添加的常用词,会把该条文本添加到光标所在处。

该控件支持连续添加常用词:

2.7 自定义查询组件

自定义查询组件可以通过页面配置来设计表格的展示形式和自定义查询的过滤条件。

请注意阅读注意事项部分

2.7.1   页面配置

页面路径:/pmsframework/customizegrid/index.jsp

页面菜单:系统配置/公共组件配置/自定义查询配置

进入自定义查询的配置主页面,如下图:

Ø  新建、批量新建、保存、删除、查询按钮功能

【新建】按钮功能适用于少量的数据变更。【批量新建】按钮功能适用于通过Rest访问获取并解析返回结果,从而批量生成数据。

Ø  配置信息

在新版本中简化了配置信息,只保留了关键的配置项。需要注意的是如果不需要某个属性在自定义查询框中显示,则设置其控件类型为空。配置参数是一个JSON风格的内容,与SGUAP平台初始化控件的Options一致。例外:控件类型为Window的参数配置为模式对话框的路径(从模块项目开始)。如果需要使用平台提供的窗口(mx.windows.Window或mxpms. windows.Window),则可以通过下面使用说明中所给的例子一样,自定义实现。

2.7.2   使用说明

生成场景代码或符合规范的自定义的后台代码

在页面中根据需要使用自定义查询组件

/*可以支持下列已有Grid

mx.datacontrols.ComplexGrid, mx.datacontrols.DataGrid,

mx.datacontrols.GroupHeaderGrid, mx.datacontrols.GroupLockHeaderGrid,

mx.datacontrols.LockHeaderGrid, mxpms.datacontrols.ComplexHeaderGrid

不支持:

mx.datacontrols.GroupItemGrid

*/

var dataGrid = {

    baseUrl: demos.mappath("~/rest/pmssbdbdz/"),

    searchBox: new mxpms.datacontrols.DataGridSearchBox({

        initHidden: false,

        fields: fields

     }),

    groupColumn:"dydj",

    columns:[

        {name: "objId", caption:"OBJ_ID", editorType: "TextEditor"  },

        {name: "bdzzj", caption:"变电站名称",editorType: "TextEditor" },

        {name: "yxbm",caption:"运行班组",editorType:"DropDownEditor" },

        {name: "dydj",caption:"电压等级",editorType:"DropDownEditor" },

        {name: "tyrq", caption: "投运日期" , editorType: "DateTimeEditor", formatString:"yyyy-MM-dd"   },

        {name:"whdj",caption: "污秽等级",editorType:"DropDownEditor" },

        {name:"sfslz",caption:"枢纽站",editorType: "DropDownEditor"},

        {name:"bzfs",caption:"布置方式",editorType: "DropDownEditor" },

        {name: "zz", caption: "站址",editorType:"TextEditor" }

    ],

    alias: "bdz",

    displayCheckBox: true,

    allowEditing: false,

    allowSorting: true,

    allowDraging: true,

    height:"600px",

    displayRowNumber:true,

    rowNumberColWidth: 30,

    loadColumnsByConf: true

};

 

var test = new mxpms.controls.CustomizeControl({

    //flagId为配置标识,在配置页面的toolBar上复制获取

    flagId:"297e261c3fa7b870013fa7fc027f0007",

    //可以通过设置gridTypegridOptions属性动态生成一个grid,也可以将实例化的grid作为参数传入,二选一。

    gridType: types[i],

    gridOptions: dataGrid,

    //设置是否按照配置加载表格的Columns

    loadColumnsByConf: true,

//自定义控件或控件属性

    oneditorcreating: function(e){

        if(e.itemName == "yxdw")

        {

            //自定义控件可以通过这样的方式实现,在该方法中,重新设置控件属性或者自己实例化一个控件。下面是创建了一个平台的Window窗口,返回结果格式为{text:””,value:””}

            var _dateWin = mxpms.windows.ModelWindow().dateIntervalWindow();

            e.editor = _dateWin;

        }

    }

});

 

me.addControl(test);

使用自定义条件

添加一个按钮,在按钮的click事件中调用控件的打开窗口方法(showConditionConfWin)。

2.7.3   功能展示

我们通过一个简单的示例展示一下控件的操作方法,下面是主要的效果图。

初始化的页面:

添加收藏功能:

展示收藏功能:

2.7.4   注意事项

1、通过配置生成的控件可能无法满足业务开发中对复杂控件的设置,并且平台的中如:DropDownGridEditor、DropDownTreeEditor控件,自身参数设置比较多,甚至还包括了一些方法的实现,难以通过单纯的配置完成,因此遇到这类情形,请在组件提供的方法接口中进一步设置或实现。

2、SGUAP平台1.1版本对like、in、not in等的支持不是太好,因此对于1.1版本,开发人员使用该组件时需要在Bizc类中增加这类表达式条件的解析和拼装操作。下面提供一个公用类的辅助方法供大家使用。

使用方法如下:

1)在平台生产的Bizc类文件中找到wrapQuery方法,替换内容,示例如下:

//List<QueryFilter> wheres = queryCondition.getQueryFilter(PmsSbdBdzVO.class);

//if (wheres != null && wheres.size() > 0) {

//  CrudUtils.addQCWhere(qc, wheres, PmsSbdBdz.class.getName());

//}

qc = WrapQueryUtil.wrapQueryEx(queryCondition, qc, PmsSbdBdz.class);

       该方法可以适应一般性的查询条件解析(只对简单的like、in、not in解析处理),如有特殊的使用要求则需要业务开发人员自行解析。

 

2.8 业务报告模板定义- XslPanel控件

xml转换成HTML功能是用户将xsl模板安装规定的格式定以后,将xsl文件字符串和需要按xsl文件格式转换的xml字符串传入公共组件组提供的服务方法,经过转译返回符合规定的HTML字符串以供直接使用。

提供XslPanel控件的同时还提供的了解析xsl文件的通用类方法:getXslDoc()。

可以将已经定义好的xsl文件放在业务模块的相应文件夹下,调用此方法时传入文件路径和自身类即可以将xsl文件读取成字符串以供调用。

2.8.1   使用说明

2.8.1.1 调用XslPanel控件操作步骤:

实例化公共组件组提供的XslPanel控件,并将控件通过addControl()方法加到页面相应的部位。

前台代码示例:

function _initXslToHTMLForBDEdit()

{

 //用户的xsl文件路径

var xslUrl = sytest.mappath("~/sytest/resources/xsl/javafunction.xsl");

//由用户自己实现此方法。使用手册中已经提供测试数据

var strs = _initSY("F:/test/2222.xml");

if(me.xmlStr == "")

me.xmlStr = strs.xmlStr; //获取需要转换的xml字符串。

var _xslStr = strs.xslStr;//获取已经定义好的xsl字符串

me.xslUtil = new mxpms.controls.XslPanel({ 

                    name:"panel",

                    title:"实验管理",

                    width:"98%",

                    height:"98%",

                    xslStr: xslStr, //xsl文件的字符串

                    xmlStr:xmlstr,//xml字符串

                    onradioclick:_ changeStyle,

                    //用户将自定义的radio点击方法绑定

                    oninputsave: _inputsave,

                    onbzchange:_bzchange

                 });

me.addControl(xslUtil);

}

 

 

function changeStyle(p_args)

{//针对业务报告模板定义特有的改变行列展示方式方法,需要传入方法当前页面的radio DOCUMENT元素和需要转换的xml字符串

    me.xslUtil.changeStyle(p_args , xmlStr);

}

 

 

//此方法是用户自己实现,作用是获取需要解析的xml字符串和已经定义好的xsl模板

function _initSY(xmlPath)

{

    var restClient = new mx.rpc.RESTClient();

    var startUrl = yxwz.mappath("~/rest/mwtudpdsbrhyxwz/getHTML/1");

    var xslUrl = "face/yxwz/resources/xsl/MeasureReportEdit.xsl";

    var obj = {items : [{xmlPath : xmlPath, xslUrl : xslUrl}]};

        var result;

restClient.send(startUrl, "POST", JSON.stringify(obj), false, function(p_context) {

            if (p_context) {

                result =  p_context;

            } else {

                alert("转换错误!");

            }

        });

return result;

}

2.8.1.2 调用getXslDoc方法操作步骤:

调用getXslDoc()方法,后台代码示例:

@RequestMapping("/getHTML/{syId}")

public @RawResponseBody

Object getHTML(@PathVariable String syId,

            @ItemsRequestBody List<Map> list){

    Map Strs = new HashMap();

    try

    {

        String xslUrl = list.get(0).get("xslUrl").toString();

     /****

这里获取xml字符串的方法是通过读取文件实现,仅供参考,实际业务开发中应该读取数据库数据自行拼装成xml字符串。

    String xmlStr = list.get(0).get("xmlPath").toString();

 

        File f = new File(xmlStr);

        SAXReader reader = new SAXReader();

        Document document = reader.read(f);

Strs.put("xmlStr", document.asXML());

*/    

//调用getXslDoc方法示例如下,

//第一个参数xslUrl格式:

//face/sytest/resources/xsl/MeasureReportEdit.xsl

//第二个参数clazz传入当前类class

        String xslStr = XmlUtil.getXslDoc(xslUrl, this.getClass());

        Strs.put("xslStr", xslStr);

    }

    catch(Exception e)

    {

        e.printStackTrace();

    }

    return Strs;

}

2.8.1.3 调用实验导出excel文档操作步骤:

页面已经使用公共组件组提供的XslPanel控件;

页面按钮或其他触发时间调用XslPanel控件的exportExcel方法,代码示例:

var button = new mxpms.controls.ImageButton({text:"导出"});

        button.on("click", function() {

//              me.xslUtil.exportExcel(me.xslUtil);

               me.xslUtil.exportExcel(me.xslUtil, "tbl_E601EE2D-9B93-465B-948C-408C3128700F-06899");

            });

exportExcel(syForm,[tableId])可以导出整个实验模板或是实验模板中的某个表格。第一个参数syForm为需要导出的form页面元素,第二个参数tableId为需要导出的form中的某一个table的ID值。当tableId不传时,导出整个syForm,传入tableId时,导出syForm中的某个table数据。

通过XSL的配置的表单界面样式不可控,如果不是基本的Table定义,公共组件导出过程中无法获取界面元素使用服务端导出。因此本导出不支持较复杂的导出。

2.8.2   注意事项

此组件可绑定事件有:

radio控件点击事件:onradioclick;功能:相别排列方式的点击事件。

input控件修改后的保存数据事件:oninputsave

备注框textarea控件修改后的保存数据事件:onbzchange

td标签鼠标滑过事件:onmouseover_td

td标签鼠标滑出事件:onmouseout_td

针对业务报告模板定义特有的改变行列展示方式方法:

me.xslUtil.changeStyle(p_args);

页面中定义日期控件和下拉框时需要在自定义的xsl文件中有特点的定义,示例如下:

<!--日期-->

<SPAN dt="date">

   <xsl:attribute name="id">

    <xsl:value-of select="concat($cmbID, '_txt_input')"/></xsl:attribute>

       <xsl:attribute name="objID"><xsl:value-of select="$recordID"/></xsl:attribute>

       <xsl:attribute name="value"><xsl:value-of select="$value"/></xsl:attribute>

       <xsl:attribute name="formatString">yyyy-MM-dd</xsl:attribute>

       <xsl:if test="$isCalc = 1">

           <xsl:attribute name="readonly">true</xsl:attribute>

       </xsl:if>

       </SPAN>

<!--下拉框-->

<SPAN dt="dropCombobox"  keyColumn="0" tag="Conclusion" align="absMiddle" readonly="True" valueColumn="0" style="border-bottom:#9999cc 1px solid;border-top:none;border-left:none;border-right:none;">

              <xsl:attribute name="txtKeyID">

          <xsl:value-of select="concat($cmbID, '_txt_key')"/>

       </xsl:attribute>

              <xsl:attribute name="txtValueID">

          <xsl:value-of select="concat($cmbID, '_txt_input')"/>

       </xsl:attribute>

              <xsl:attribute name="btnID">

          <xsl:value-of select="concat($cmbID, '_btn')"/>

       </xsl:attribute>

              <xsl:attribute name="syID">

          <xsl:value-of select="@ID"/>

       </xsl:attribute>

              <xsl:attribute name="xmlSrc">

           <xsl:value-of select="java:XslTrans.CreateXMLText2('合格,不合格,异常')"/>

       </xsl:attribute>

              <xsl:attribute name="id">

           <xsl:value-of select="concat($cmbID, '_txt_input')"/>

       </xsl:attribute>

       <xsl:attribute name="value">

           <xsl:value-of select="@Conclusion"/>

       </xsl:attribute>

</SPAN>      

由于目前解析xsl文件是由java完成,xsl文件中相应的解析和判断方法不再访问js文件而是访问公共组件组提供的XslTrans类,方法名称同PMS1.0中一致,调用步骤如下:

第一步:在xsl文件头引入方法类,

<xsl:stylesheet   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

    xmlns:java="com.sgcc.pms.framework.base.util" exclude-result-prefixes="java"  version="1.0">

   <xsl:output method="html" />

第二步:调用类中方法。

<xsl:value-of select="java:XslTrans.CreateXMLText2('合格,不合格,异常')"/>

2.8.3   功能展示

最终生成的页面展示如下:

2.8.4   相关附件

xsl模板实例:

输变电可编辑模板:

输变电只读模板:

配电可编辑模板:

配电只读模板:

xml测试实例:

2.9 通用工具库

2.9.1   时间处理类

2.9.1.1 客户端

使用方法:

// 该示例将说明客户端如何使用时间处理工具处理日期数据

var dateutil =new mxpms.utils.DateUtil();

// 该示例将说明如何创建一个同时显示时间的 mx.controls.Calendar,并设置日期格式。

var year = "2013";

var month = "04";

var datatime = dateutil.getFirstOfMonth(year, month);

 

关键方法说明:

方法名称

描述

getCurrentDate()

获得当前时间(客户端)

getCurrentServerDate()

获得当前时间(服务端)

getFirstOfMonth(year, month)

指定月份的开始时间

getLastOfMonth(year, month)

指定月份的结束时间

getStartOfWeek(year, weekNum)

指定星期的开始时间

getLastOfWeek(year, weekNum)

指定星期的结束时间

getDaysBetweenDiff(startDay, endDay)

提供根据指定起始时间与终止时间返回之间的日期集合

getFirstAndLastOfCurMonth(formatString)

获取当前月的开始时间和结束时间

parse(dateString, pattern)

将日期型字符串转换成符合格式的日期

format(date, pattern)

将日期转换成符合格式的日期型字符串

compareTime (startDay,endDay,errorString)

对比时间,其实时间必须小于结束时间

@param startDay 起始时间

@param endDay  结束时间

@param errorString  

当起始时间大于结束时间时 提示的错误提示 ,如果为空或不传默认提示 "起始时间大于结束时间,请检查!"         

@return true/false

 

2.9.1.2 服务端

类名称

DateUtil

类描述

PMS的日期函数类库

实现接口

引用类

java.text.ParseException;

java.text.SimpleDateFormat;

java.util.ArrayList;

java.util.Calendar;

java.util.Date;

java.util.List;

com.sgcc.uap.mxframework.taglib.utils.StringUtils;

父类

com.sgcc.uap.utils.DateUtils

子类

数据库表

 

使用方法:

// 该示例将说明服务端如何使用时间处理工具处理日期数据

 

import com.sgcc.pms.framework.base.util.DateUtil;

String result = DateUtil.getFirstOfMonth(2012, 10);

Date date3 = DateUtil.getDateFromString("2013-07-16","yyyy-MM-dd");

 

关键方法说明:

方法名称

返回类型

描述

getFirstOfMonth(int year, int month)

String

指定月份的开始时间

getLastOfMonth(int year, int month)

String

指定月份的结束时间

getStartOfWeek(int year, int weekNum)

String

指定星期的开始时间

getLastOfWeek(int year, int weekNum)

String

指定星期的结束时间

getDaysBetweenDiff(String startDay, String endDay)

List<String>

提供根据指定起始时间与终止时间返回之间的日期集合

getDaysBetweenDiff(Date startDay, Date endDay)

List<Date>

提供根据指定起始时间与终止时间返回之间的日期集合

getDateFromString(String dateStr,String format)

Date

根据指定字符串和格式生成日期

getDateFromString(String dateStr)

Date

根据指定字符串生成日期

 

2.9.2   用户信息类

2.9.2.1 客户端

使用方法:

// 该示例将说明客户端如何获取用户信息

var pmsutil =new mxpms.utils.UserInfoUtil();

 

// 该示例将说明如何创建一个同时显示时间的 mx.controls.Calendar,并设置日期格式。

var userId = "210000000000201";

var user = pmsutil.getUserById(userId);

 

关键方法说明:

方法名称

描述

getLoginUser()

获取登录用户的信息

getUserById(userId)

根据用户ID获取用户信息

getDepartmentByUserId(userId)

根据用户ID获取该用户的基准组织

getBusiOrgByUserId(userId)

根据用户ID获取该用户的业务组织单元信息

getOrgRolesByUserId(userId , param)

根据用户ID获取用户的业务组织角色信息

getUsersByOrgRole(roleId , param)

根据业务角色ID获取用户信息

getUsersByOrg(orgId , param)

通过业务组织ID获取用户(包含userid及username等)

getRecentOrgByUserId(userId,natureType)

通过用户ID获取最近的单位(或者其他类型,需要指定业务组织类型CODE)

validateUser(userName,passWord)

验证用户名和密码是否一致

@param userName

@param passWord

@return true 验证成功 false 验证失败

getLocalDeptInfoById(curDeptId)

根据部门ID获取业务部门详细信息

@param curDeptId 部门ID

返回结果为ISC_SPECIALORG_UNIT_LOCEXT表中的一条数据

param 过滤参数

                支持模糊匹配,key值可为:

                1.根据用户登陆名(String)过滤,传入的key为ARAM_USER_LOGIN_NAME

                2.根据用户姓名(String)过滤,传入的key为PARAM_USER_NAME

                3.根据用户ID(String)过滤,传入的key为PARAM_USER_IDENTITY_ID

     

                支持按列排序,key值可为:

                1.PARAM_ORDER_USER_NAME

                2.PARAM_ORDER_USER_DISP_ORDER

     

                value值可为:

                1.PARAM_ORDER_ASC  升序

                2.PARAM_ORDER_DESC   降序

     

            示例:

            var params = {

                    "PARAM_USER_NAME" : "肖",

                    "PARAM_USER_LOGIN_NAME" :"",

                    "PARAM_USER_IDENTITY_ID" :"",

                    "PARAM_ORDER_USER_NAME" :"PARAM_ORDER_ASC"

                };

 

 

2.9.2.2 服务端

类名称

UserInfoUtil

类描述

用户信息处理(用户、组织、角色)

实现接口

引用类

java.util.List;

java.util.Map;

import com.sgcc.isc.core.orm.complex.BusiOrgNode;

import com.sgcc.isc.core.orm.complex.FunctionNode;

import com.sgcc.isc.core.orm.domain.BusinessApplication;

import com.sgcc.isc.core.orm.identity.Department;

import com.sgcc.isc.core.orm.identity.User;

import com.sgcc.isc.core.orm.organization.BusinessOrganization;

import com.sgcc.isc.core.orm.organization.OrganizationNature;

import com.sgcc.isc.core.orm.resource.Function;

import com.sgcc.isc.core.orm.role.OrganizationalRole;

import com.sgcc.isc.core.orm.role.Role;

import com.sgcc.isc.core.orm.role.RoleGroup;

import com.sgcc.isc.service.adapter.factory.AdapterFactory;

父类

子类

数据库表

 

使用方法:

// 该示例将说明如何使用用户信息处理工具

 

import com.sgcc.pms.framework.base.util.UserInfoUtil;

 

String[] userIds = new String[1];

userIds[0] = "210000000000201";

userIds[1] = "210000000000202";

List<User> users = UserInfoUtil.getUserById(userIds);;

 

 

 

关键方法说明:

方法名称

返回类型

描述

getUserById(String[] userIds)

List<User>

根据用户ID获取该用户的用户信息

getUsersByOrgRole(String orgRoleId,            Map<String, String> param, String[] orderStr)

List<User>

根据业务组织角色ID及用户过滤条件与业务组织角色关联的所有用户

getDepartmentByUserId(String userId)

Department

根据用户ID获取该用户的基准单位信息

getUserOrgPathByUserId (         String userId)

List<BusinessOrganization>

根据用户Id获取在指定的业务系统下的组织结构路径

getOrgRolesByUserId(String userId)

List<OrganizationalRole>

根据用户ID获取业务组织角色信息

getRoleByRoleId(String roleId)

List<Role>

根据业务角色ID获取业务角色信息

getUsersByOrg(String orgId,         Map<String, String> param, String[] orderStr)

List<User>

通过业务组织ID获取用户(包含userid及username等)

getOrgRolesByBusiOrgId(          String busiOrgId, Map<String, String> param, String[] orderStr)

List<OrganizationalRole>

通过单位ID获取该单位对应的角色(支持角色的过滤);

getAllBusiOrgsById(String busiOrgId)

BusiOrgNode

通过业务组织获取下级单位(包含组织ID及name等),支持通过参数过滤。(例如扩展属性、组织性质、维度等)

     * 根据组织结构单元标识递归地获取下层组织结构单元集合(只检索500条)

getBusiOrgsByIds(         String[] busiOrgIds)

List<BusinessOrganization>

通过业务组织ID获取基准组织信息(包括组织ID及组织name)

getSuperCorrespondOrg(String orgId)

List<BusinessOrganization>

通过下级组织ID获取制定过滤的上级单位;

getOrgPathByOrgId(String orgId)

List<BusinessOrganization>

据当前节点返回完整路径的业务组织单元集合

getBusiOrgByUserId(String userId)

List<BusinessOrganization>

通过用户ID获取业务组织单元

getOrgProperty(String orgPropId)

List<OrganizationNature>

根据业务组织单元性质ID获取业务组织单元性质信息。

getRecentOrgByUserId (       String userId, String natureType)

List<BusinessOrganization>

通过用户ID获取最近的单位(或者其他类型,需要指定NatureType)

getChildBusiOrgsById(String busiOrgId, Map<String, Object> param))

List<BusinessOrganization>

通过单位ID获取下一级单位信息。

hasPermitUserFuncCode(String userid, String funcCode)

boolean

检查受控资源

hasPermitUserFuncId(String userid, String funcId)

boolean

用户访问功能权限鉴别

getBusiAppByUserId(String userid)

List<BusinessApplication>

根据用户ID获得对应的业务应用信息

getFuncsByOrgRoleId(String orgRoleId, Map<String, String> param, String[] orderStr)

List<Function>

根据业务组织角色标识获取功能集合,功能集合可以通过功能名称、编码、分类过滤,指定功能名称、编码、分类对功能集合进行升序或降序排序

getFuncTreeByFuncId(String userId, String funcId, String funcCategory)

FunctionNode

递归地获取当前用户在指定功能下的功能子树(包括当前节点)(只检索500条),用户拥有取得的功能树中的节点的使用权限,树中的节点通过funcCategory进行过滤

getUpperOrgBySystemIdAndUserId(String userId,String orgType)

BusinessOrganization

根据用户ID和业务组织单元性质取得用户的上级业务组织单元,上级业务组织单元是指用户的上级组织中性质是输入参数(业务组织单元性质)的性质且与用户所在的业务组织单元最近的业务组织单元。

getUsersByLoginCode(String userLoginCode)

List<User>

根据用户登陆名获取用户信息(登录名在系统中是唯一的)

getFuncsByParentId(String funcId, Map<String, String> param, String[] orderStr)

List<Function>

根据功能父节点标识获取子功能集合

getFirstLayerFuncs(String funcCategory,Map<String,String> paramsMap,String[] orderStr)

List<Function>

获取在指定业务应用下的第一层的功能

getFuncsByFuncCode(String busiCode)

List<Function>

根据功能业务编码获取功能集合

getFuncsByIds(String[] funcIds)

List<Function>

根据功能主键标识集合批量获取功能集合

getChildOrgsBySystemId(Map<String, Object> param, String[] orderStr)

List<BusinessOrganization>

 获取业务应用业务组织机构树的第一层组织单元集合

getBusinessApplication(String busiCode,  String busiName)

List<BusinessApplication>

根据业务应用系统信息获取业务应用信息

getOrgRolesByRoleId(String roleId, Map<String, String> param,String[] orderStr)

List<OrganizationalRole>

根据业务角色ID获取业务组织角色信息

getRolesByRoleGroupID(String roleGroupId, String roleName, String roleCode)

List<Role>

根据业务角色分组ID获取业务角色信息

getRoleGroup(String roleGroupName)

List<RoleGroup>

根据业务应用ID获取业务角色分组信息

getLoginUserInfo

Map<String, Object>

获得登录人的相关信息

Map对象为

userID:用户ID

userName:用户姓名

DEPTID:所属部门ID

DEPTNAME:所属部门名称

orgID:所属部门ID

orgName:所属部门名称

BMBM:所属部门编码

RYZC:人员职称

RYGW:人员岗位

RYZY:人员专业

RYXB:人员性别

NXDH:内线电话

SSDWID:所属单位ID

SSDWMC:所属单位名称

SSDWBM:所属单位编码

SSDSID:所属地市ID

SSDSMC:所属地市名称

SSWSID:所属网省ID

SSWSMC:所属网省名称

GLDWID:管理单位ID

GLDWMC:管理单位名称

YWDWID:运维单位ID

YWDWMC:运维单位名称

 

getLocalDeptInfoById(String curDeptId)

List<IscSpecialorgUnitLocext> ,返回结果list的大小为1条

根据部门ID查询部门的信息

IscSpecialorgUnitLocext对象为

ISC_ID:ISC部门主键

BMMC:部门名称

BMXZ:部门性质

BMBM:部门编码

SJBMID:上级部门ID

XSSX:显示顺序

ZBXZ:值班性质

ZTXZ:专业性质

GLJB:管理级别

BMJC:部门简称

CJSJ:创建时间

TBSJ:同步时间

CXSJ:撤销时间

SFYX:数据有效性

FBID:分部ID

SSWSID:所属网省ID

SSDSID:所属地市ID

SSGDID:所属供电公司(县局)ID

DWJB:单位级别

PATH:组织全路径

PATHID:组织部门路径ID

方法名称

返回类型

描述

getUserById(String[] userIds)

List<User>

根据用户ID获取该用户的用户信息

getUsersByOrgRole(String orgRoleId,            Map<String, String> param, String[] orderStr)

List<User>

根据业务组织角色ID及用户过滤条件与业务组织角色关联的所有用户

getDepartmentByUserId(String userId)

Department

根据用户ID获取该用户的基准单位信息

getUserOrgPathByUserId (         String userId)

List<BusinessOrganization>

根据用户Id获取在指定的业务系统下的组织结构路径

getOrgRolesByUserId(String userId)

List<OrganizationalRole>

根据用户ID获取业务组织角色信息

getRoleByRoleId(String roleId)

List<Role>

根据业务角色ID获取业务角色信息

getUsersByOrg(String orgId,         Map<String, String> param, String[] orderStr)

List<User>

通过业务组织ID获取用户(包含userid及username等)

getOrgRolesByBusiOrgId(          String busiOrgId, Map<String, String> param, String[] orderStr)

List<OrganizationalRole>

通过单位ID获取该单位对应的角色(支持角色的过滤);

getAllBusiOrgsById(String busiOrgId)

BusiOrgNode

通过业务组织获取下级单位(包含组织ID及name等),支持通过参数过滤。(例如扩展属性、组织性质、维度等)

     * 根据组织结构单元标识递归地获取下层组织结构单元集合(只检索500条)

getBusiOrgsByIds(         String[] busiOrgIds)

List<BusinessOrganization>

通过业务组织ID获取基准组织信息(包括组织ID及组织name)

getSuperCorrespondOrg(String orgId)

List<BusinessOrganization>

通过下级组织ID获取制定过滤的上级单位;

getOrgPathByOrgId(String orgId)

List<BusinessOrganization>

据当前节点返回完整路径的业务组织单元集合

getOrgProperty(String orgPropId)

List<OrganizationNature>

根据业务组织单元性质ID获取业务组织单元性质信息。

getRecentOrgByUserId (           String userId, String natureType)

List<BusinessOrganization>

通过用户ID获取最近的单位(或者其他类型,需要指定NatureType)

getLoginUserInfo

Map<String, Object>

获得登录人的相关信息

Map对象为

userID:用户ID

userName:用户姓名

DEPTID:所属部门ID

DEPTNAME:所属部门名称

orgID:所属部门ID

orgName:所属部门名称

BMBM:所属部门编码

RYZC:人员职称

RYGW:人员岗位

RYZY:人员专业

RYXB:人员性别

NXDH:内线电话

SSDWID:所属单位ID

SSDWMC:所属单位名称

SSDWBM:所属单位编码

SSDSID:所属地市ID

SSDSMC:所属地市名称

SSWSID:所属网省ID

SSWSMC:所属网省名称

GLDWID:管理单位ID

GLDWMC:管理单位名称

YWDWID:运维单位ID

YWDWMC:运维单位名称

 

getLocalDeptInfoById(String curDeptId)

List<IscSpecialorgUnitLocext> ,返回结果list的大小为1条

根据部门ID查询部门的信息

IscSpecialorgUnitLocext对象为

ISC_ID:ISC部门主键

BMMC:部门名称

BMXZ:部门性质

BMBM:部门编码

SJBMID:上级部门ID

XSSX:显示顺序

ZBXZ:值班性质

ZTXZ:专业性质

GLJB:管理级别

BMJC:部门简称

CJSJ:创建时间

TBSJ:同步时间

CXSJ:撤销时间

SFYX:数据有效性

FBID:分部ID

SSWSID:所属网省ID

SSDSID:所属地市ID

SSGDID:所属供电公司(县局)ID

DWJB:单位级别

PATH:组织全路径

PATHID:组织部门路径ID

 

 

2.9.3   序列生成类

2.9.3.1 客户端

以下是一个通过mxpms.utils.GUIDUtil获取一个 GUID 字符串的示例。

//获取一个32位的 GUID 串。

var temp = new mxpms.utils.GUIDUtil();

var id = temp.getGUID(32)

关键方法说明:

名称

说明

getGUID(p_length)

获取一个指定长度的 GUID 字符串。

2.9.3.2 服务端

类名称

GUIDGenerator

类描述

GUID生成器

实现接口

引用类

com.sgcc.uap.utils.UUIDHexLengthGenerator;

父类

子类

数据库表

 

使用方法:

// 该示例将说明如何使用GUID生成器

//直接使用该静态方法

String guid = com.sgcc.pms.framework.base.util.GUIDGenerator.generator()

 

 

关键方法说明:

方法名称

返回类型

描述

generator()

String

自动生成36位GUID

generator(boolean toLowerCase, int length)

String

自动生成36位GUID,toLowerCase:是否全部转化为小写

length:guid长度

setLength(int length)

 

设置guid长度

 

2.9.4   对象比较类

2.9.4.1 客户端

使用方法:

var p1 = {name:"jack",age:{sex:"男"},phone:"123"};

var p2 = {name:"lucy",age:10};

var equals = new mxpms.utils.EqualsUtil();

var result = equals.Equals(p1, p2);

  关键方法说明:

名称

说明

Equals(Object,Object)

比较两个JS对象,完全一致返回true,否则false。

 

2.9.5   xml文件转换类

2.9.5.1 服务端

使用方法:

// 该示例将说明如何使用xml转换类转换一个xsl文件

import com.sgcc.pms.framework.base.util.XmlUtil;

/*

调用getXslDoc方法示例如下,

第一个参数xslUrl格式:

face/sytest/resources/xsl/MeasureReportEdit.xsl

第二个参数clazz传入当前类class

返回值得到读取文件的字符串

*/

String xslStr = XmlUtil.getXslDoc(xslUrl, this.getClass());

 

关键方法说明:

方法名称

描述

toXml(Object obj)

将JAVA对象转换成xml字符串

toBean(String xmlStr, Class<T> cls)

将传入xml文本转换成Java对象

toXMLFile(Object obj, String absPath, String fileName)

将对象写到指定xml文件中

toBeanFromFile(String absPath, String fileName, Class<T> cls)

从xml文件读取报文

xslToHTML(String xmlStr, String xlsStr)

通过xml字符串和xsl字符串获取转换后的HTML文件

getXslDoc(String xslUrl, Class clazz)

通过传入的xsl文件服务路径,读取xsl文件,返回字符串

2.9.6   E语言转换类

2.9.6.1 服务端

使用方法:

// 该示例将说明如何使用E语言转换类将一个Java对象转换为满足E语言格式的xml文件。

import com.sgcc.pms.framework.base.util.ELanguageUtil;

/*

调用toELanguage方法示例如下,

第一个参数为要转换的Java对象

第二个参数为E语言的模式: 0为单列模式

第三个参数为生成的xml文件的文件名

*/

YXGT gt = new YXGT();

        gt.initGTInfo();

        String filename = "src/com/sgcc/pms/framework/base/resource/ELanguageModel-DanLie1.xml";

        ELanguageUtil.toELanguage(gt, 0, filename);

if(ELanguageUtil.isSuccessful())

        {

            System.out.println("执行成功!转换后的xml字符串为:");

            System.out.println(ELanguageUtil.getResultXml());

        }

        else

        {

            System.out.println("执行失败!"+ELanguageUtil.getErrorMessage());

        }

关键方法说明:

方法名称

描述

toELanguage(Object obj,int type,String filename)

将指定Java对象转换为满足E语言格式的xml文件

isSuccessful()

转换是否成功

getErrorMessage()

获取错误信息

getResultXml()

获取转换后的xml字符串

2.9.7   模拟登录

2.9.7.1 客户端

使用方法:

一、在对应场景的weblet.js中增加如下代码:

requires: ["pmsframework/mxpms","workbench/workbench"],

二、在MainView.js中增加如下代码:

// 该示例将说明客户端中如何使用模拟登录组件进行用户登录

$import("workbench.portal");

$import("mx.rpc.RESTClient");

$import("workbench.utils.AESUtil");

 

var simulate =new mxpms.utils.SimulateLoginUtil();

var userName = me.hSplit.controls[3].value;

var password = me.hSplit.controls[5].value;

var result = simulate.simulateLogin(userName,password);

if(result.isSuccessful)

{

    alert("验证通过!");

}

else

{

alert("验证失败!错误信息为:" + result.errorMessage);

}

关键方法说明:

方法名称

描述

simulateLogin(p_userName,p_passWord)

模拟登录,参数为用户名和密码,验证通过返回true,失败返回false

isSuccessful

验证是否通过,包括用户名是否正确,和密码是否一致等。

errorMessage

错误信息

 

2.9.7.2 服务端

使用方法:

Rest路径为:/pmsframework/rest/common/loginuser/validate

参数为:userName,password,其中password是经过加密后的密码

返回值:

userID:用户的id

isSuccessful:true 验证通过 false 验证失败

errorMessage:错误信息

关键方法说明:

方法名称

返回类型

描述

validateLoginUser(String userName,String password)

Object

验证指定的用户名和密码是否一致

2.9.8   枚举类

2.9.8.1 服务端

使用方法:

引入类:

import com.sgcc.pms.framework.base.util.EnumUtil;

使用:
String userType = EnumUtil.ActorType.YH;

关键方法说明:

内部类

类属性

描述

ActorType

ZZJS

参与者类型的组织角色,“01”

ActorType

ZZJG

参与者类型的组织机构,“02”

ActorType

YH

参与者类型的用户,“03”

EncryptArith

AESENCRYPT

加解密方式中的AES方式,值为“c32ad1415f6c89fee76d8457c31efb4b”

EncryptArith

MD5ENCRYPT

加解密方式中的MD5方式

EncodingType

BZBM

标准字符集编码,UAP平台统一为“UTF-8”

ProcState

PROCDEFPUBSTATE

流程定义的发布状态

ProcState

PROCINSTUNSTARTSTATE

流程实例的未启动状态

ProcState

PROCINSTRUNSTATE

流程实例的运行状态

ProcState

PROCINSTHANGSTATE

流程实例的挂起状态

ProcState

PROCINSTFINSTATE

流程实例的完成状态

ProcState

PROCINSTTERMSTATE

流程实例的终止状态

ProcState

ACTIVEINSTUNSTARTSTATE

活动实例的未启动状态

ProcState

ACTIVEINSTRUNSTATE

活动实例的运行状态

ProcState

ACTIVEINSTHANGSTATE

活动实例的挂起状态

ProcState

ACTIVEINSTFINSTATE

活动实例的完成状态

ProcState

ACTIVEINSTTERMSTATE

活动实例的终止状态

ProcState

ACTIVEINSTUNACTIVESTATE

活动实例的待激活状态

ProcState

ACTIVEINSTEXCEPSTATE

活动实例的应用异常状态

ProcState

ACTIVEINSTCANCELSTATE

活动实例的取消状态

ProcState

WORKITEMFINSTATE

工作项的完成状态

ProcState

WORKITEMUNGETSTATE

工作项的待领取状态

ProcState

WORKITEMRUNSTATE

工作项的运行状态

ProcState

WORKITEMTERMSTATE

工作项的终止状态

ProcState

WORKITEMHANGSTATE

工作项的挂起状态

2.9.9   图表处理类

2.9.9.1 客户端

使用方法:

//声明chartuntil

var chartUntil = new mxpms.utils.ChartUtil();
 
//定义相关参数值
var url = “~/pmsframework/chartStandard/index.jsp”;
 
var obj = $("#pre_div");
 
var chartId = “40288148407c702101407c7473330002”;
 
var params ={xmeta:"id",ymeta:"person",
width:"600",height:"450",title:"标题",
x_axis:"X轴",x_axis:"Y轴"}
 

//调用获取url页面方法

chartUntil.getPic(obj, url);
 
//重新设置json格式数组作为数据来源
url = ‘[{name:"中国",
url:"~/ModuleTest/rest/citydetail/"},
{name:"韩国",url:"~/ModuleTest/rest/citydetailhg/"}]’;
 

//调用初始化图表方法

chartUntil.load(chartId,obj,url,params);
 
//根据容器对象和指标ID画图

chartUntil.getChart(obj, chartId,function(p_values){});

 

关键方法说明:

名称

说明

getPic(obj,url)

获取数据并展示anychart图形或者展示url页面。

obj是容器对象,如果没有则创建一个窗口展示

url是数据来源集合,一般url格式,如http://www.baidu.com,或者数组格式,例如 [{name:"中国",url:"~/ModuleTest/rest/citydetail/"},

{name:"韩国",url:"~/ModuleTest/rest/citydetailhg/"}]

load(chartId,obj,url,params,p_onload)

初始化图表方法

chartId是chart图表ID

obj是图表容器对象,若没有容器对象则自动创建一个

url 数据来源,一般是rest服务地址, 数据来源集合,数组格式,格式为[{name:"",url:""},{name:"",url:""}],

params 图表属性,主要设置横坐标字段,纵坐标字段,坐标名称,标题,高度和宽度等 Json格式 如{xmeta:"id",ymeta:"person",width:"600",height:"450",title:"标题",x_axis:"X轴",x_axis:"Y轴"}

p_onload 图表加载完成回调函数,可选

getChart(obj_div,zbId,p_callback){

根据容器对象和指标ID画图

obj_div 容器对象

zbId 指标项ID

p_callback 回调函数,可选

 

2.9.10 获取SQL.xml文件类

使用方法:

引入类:

import com.sgcc.pms.framework.base.util.SqlResourceUtil;

 

关键方法说明:

方法名称

返回类型

描述

get(String key, Class<?> clazz)

String

Key为SQL.xml中的ID

Clazz为当前类的类文件

this.class

 getOsgiService(Class clazz,String serviceId)

Object

获取OSGI服务:

Class为当前类的class

ServiceId为Osgi的服务Id

getHibernateDao()

IHibernateDao

获取OSGI服务:

获取hibernate对象

 

2.9.11 全局数据操作类

使用方法:

引入类:

import com.sgcc.pms.framework.base.util.GlobalConfigUtil;

 

关键方法说明:

方法名称

返回类型

描述

getGlobalConfig(String p_key)

String

通过key获取全局配置参数:

p_key为全局配置参数KEY。

getGlobalConfigs()

List

获取所有的全局参数。

queryGlobalConfigs(String p_key)

List

模糊查询全局配置:如果参数以*结束,进行模糊查询;否则精确查询获取hibernate对象。

p_key为关键key ,如果* 结束,将模糊查询。

2.9.12 导出Excel方法

2.9.12.1   功能说明:

       导出Excel公共方法在原有组件基础之上,提供了更为简洁的使用方式。可以自动解析大部分规则形态的DataGrid及其子类Grid。提供【导出选项】窗口,可以允许用户选择单列场景的导出列,用户可以方便的拖过拖拽的方式调整列序等。其中各种参数灵活使用能满足各式业务需要。

2.9.12.2   使用方法:

       var xls =newmxpms.utils.CommUtil();

  xls.exportToExcel(Grid对象,options);

      options代表      其他参数对象,可以支持以下属性:

      filename:字符串,导出的文件名

      sheetname:字符串,导出的sheet页名称

      headname:字符串,表格顶端,独占一行N列的表格头标题

      groups:数组,符合规则的分组表头信息

      columns:数组,符合规则的列信息

      width:数组,与columns配合的列宽信息

      data:数组,符合rest请求返回数据集格式的数据集合,如果用户设置了该属性,那么在导出所有页时,将优先导出该数据

      url:字符串,服务端导出时,获取数据使用的url,如果用户选择了导出所有页数据且没有给出data,那么将通过url获取数据。如果没有设置url,将读取grid的baseUrl属性,如果依然没有,将继续读取grid的entityContainer的baseUrl属性。

2.9.12.3   功能展示:

导出选项展示界面

用户选择点击导出按钮后,该按钮会被锁定10秒钟,避免频繁的发送数据请求。

导出的多表头示例:

2.9.13 导出Excel后台工具类

类名称

ExcelUtil

类描述

导出Excel的工具类

实现接口

引用类

import java.io.IOException;

import java.io.OutputStream;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletResponse;

import jxl.Workbook;

import jxl.write.Label;

import jxl.write.WritableCellFormat;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.springframework.web.client.RestClientException;

import com.sgcc.pms.framework.base.service.servlet.ExportGridToExcel;

import com.sgcc.uap.utils.StringUtils;

父类

子类

数据库表

 

使用方法:

前端:

// 测试后台导出大数据量用

    function exportET(e){

        var url = mxpms.mappath("~/rest/DocumentController/documentLoad/EXCEL");

        var form = $("<form>");

         form.attr('style', 'display:none');

         form.attr('target', null);

         form.attr('method', 'post');

         form.attr('action', url);

         

         var hideInput = $('<input>');

         hideInput.attr('type', 'hidden');

         hideInput.attr('name', 'content');

         hideInput.attr('value', null);

         form.append(hideInput);

         

         form.bind("onsubmit", function(e){

             window.open('about:blank', "_self");

         });

         $('body').append(form);

         form.trigger("onsubmit");

         form.submit();

         form.remove();

    }

 

后端:

// 该示例将说明如何使用用户信息处理工具

 

import com.sgcc.pms.framework.base.util.ExcelUtil;

 

String[] columns = new String[]{"cs1", "cs2", "cs3"};

        String[]captions = new String[]{"测试1", "测试2", "测试3"};

        Map<String, Integer> widths = new HashMap<String, Integer>();

        widths.put("cs1", 50);

        Map<String, String> item = new HashMap<String, String>();

        item.put("cs1", "wahaha");

        item.put("cs2", "jixixix1111");

        item.put("cs3", "原来是真的");

        List<Map<String, String>> items = new ArrayList<Map<String, String>>();

        items.add(item);

        try {

            ExcelUtil.exportExcel(response, "测试", "测试页", columns, captions, widths, items);

        } catch (ServletException e) {

            e.printStackTrace();

        }

 

 

关键方法说明:

方法名称

返回类型

描述

exportExcel(HttpServletResponse response,  String filename, String sheetname, String[] columns, String[] captions, Map<String, Integer> widths, List<Map<String, String>> items)

 

拼装数据导出excel

    Response: 此处需要response将文件推送至前端,使用者可以在rest服务设置此参数,并将参数直接传至本方法即可

     Filename:  文件名称,可以传null

     Sheetname: 分页名称,可以传null

     Columns: 列头的数组

     Captions: 列头对应的中文集合(是实际导出的中文列头),需要和columns个数对应

     Widths: 列宽的map集合,key值为列名称,没有特殊需求的列可以不设置其列宽,默认为25

     Items: 数据集合,其中每行数据的可以值为列名称

 

 

2.10   业务审计组件

通过配置文件的控制,调用公共组件组提供的审计日志记录接口,对核心的业务对象(如设备、工作流数据)进行业务审计,后期可以追溯业务对象修改痕迹;业务对象修改痕迹包括被修改的属性、修改后值、修改人、修改时间等。

提供记录设计日志的同时还提供的了查询审计日志功能和配置业务分类、操作类型功能。可以配置用户自定义的业务分类和操作类型;可以按照查询条件查询特定的日志记录;同时可以查询单条业务数据的审计日志历史记录。

2.10.1 页面配置

页面路径:pmsframework/audit/index.jsp?menu=auditconf

页面菜单:系统配置/公共组件配置/审计配置

配置页面如下图:

Ø  业务分类配置区

新建:点击工具栏中“新建”按钮,数据表会在当前页最后一行显示一条空记录,用户维护好数据后点击“保存”按钮,系统提示“保存成功”。

删除:选择需要删除的分类数据,点击工具栏中“删除”按钮,系统弹出提示框:

点击“确认”按钮,删除选择的数据;点击“取消”,取消删除操作。

Ø  操作类型配置区

“操作类型配置区”的操作方式同“业务分类配置区”的操作方式。

 

2.10.2 使用说明

2.10.2.1    审计接口调用使用说明

第一步:在UAP项目的applicationconfig.properties配置文件下增加审计启用的配置:

#审计日志是否记录,T为启用,F或不配置为不启用

PMS_AUDIT_LOG=T

第二步:在使用审计功能的业务模块中添加注入配置,可以配置在模块项目下的任意***Bizc.xml注入文件中:

<module:referenceid="auditManage"targetName="com.sgcc.pms.framework.base.service.audit.IAuditManage"   filter="platform_service_idname=auditManageService"/>

第三步:使用模块项目(MANIFEST.MF文件)引入公共组件包:

第四步:在逻辑代码中添加注入代码:

import com.sgcc.pms.framework.base.service.audit.IAuditManage;

 

@Autowired

private IAuditManage auditManage;

第五步:使用审计功能:

//业务传递的审计信息

Map<String, Object> amap = new HashMap<String, Object>();

      amap.put("czlx", "EDIT");//操作类型

      amap.put("ywfl", "QXRZ");//业务分类

      amap.put("tableName", "TpmsComAuditCzlxVO");//业务表名称

      amap.put("voList", voList);//操作数据,删除时可不传

amap.put("rzxx", ""); //日志备注信息,可不传

amap.put("czbs", "1"); //操作标示信息,可不传.0:操作成功;1:操作失败。默认为0

amap.put("ids", String[] ids);//删除时传,其他情况可不传

amap.put("mapList", String[] list);//当没有voList(vo类集合)时可拼写

      auditManage.auditLog(amap);

 

2.10.2.2    审计日志查询页面使用说明

页面路径:pmsframework/audit/index.jsp?menu=auditlog

页面菜单:系统配置/查询统计/审计查询

查询页面如下图:

Ø  业务分类(树)区

点击树上的业务分类节点,右侧审计日志表格数据会根据业务分类过滤出符合业务分类要求的审计日志记录。

同时由于审计日志查询结果发生了变化,右下侧业务数据查询区的数据查询结果也会发生变化。

Ø  审计日志查询区

审计日志查询区的查询结果,首先会根据业务分类树的节点过滤。用户输入或选择查询条件后,点击查询按钮可以查询出相应的结果,点击重置按钮后会将查询条件初始化。审计日志查询会默认查询当天的数据,查询结果是以创建日期的倒序形式排序。

点击某条审计日志记录时,右下侧业务数据查询区会根据审计日志的ID进行过滤,查询出该日志下发生变化的业务数据记录。

 

Ø  业务数据查询区

业务数据查询区的查询结果,首先会根据审计日志查询区数据显示的不同日志记录进行过滤。用户输入或选择查询条件后,点击查询按钮可以查询出相应的结果,点击重置按钮后会将查询条件初始化。查询结果是以创建日期的倒序形式排序。

当用户双击某条业务数据记录时,页面会弹出业务数据详细信息窗口,显示单条的业务数据的详细信息记录。

       点击业务数据行中的“业务记录ID”超链接,会弹出单条业务记录的历史修改记录集窗口。

2.10.3 功能展示

审计查询页面:

单条业务数据的详细信息窗口:

单条业务数据的历史记录窗口:

审计配置页面:

2.10.4 注意事项

接口调用时请严格按照使用说明操作,不可遗漏。

 

2.11   统一附件管理

统一附件管理功能:在上传附件至非结构化平台时,需要开发人员调用附件管理接口,将附件相关的信息传入接口进行保存,以供后期统一管理;开发人员也可以使用附件管理接口获取已经保存的相关附件信息。

2.11.1 使用说明

实例化公共组件附件管理控件,并调用相关接口。

前台代码示例:

function onitemuploaded ()

{

  //直接调用附件接口管理的setAttachment方法进行信息管理

     mxpms.utils.AttachmentUtil.setAttachment([me.annex]);

        /*  传入附件控件,保存附件信息至附件管理表。

       参数: 上传成功的附件控件集对象数组

      

       参数示例:

       [

           new mx.editors.FileEditor()

          new mx.controls.UploadControl(

       ]

      

       返回值: 成功:{isSucessful:true}

                失败:{isSucessful:false,errMessage:err}   

      */

 

/*

       通过参数 "附件名称"查询相应的附件信息集

       参数: attName 附件名称字符串

      

       返回值是一组对象数组,如下:

      {isSucessful:true,result:result}

result [

         {

             tableName : "mwt_ud_pd_sb_rh_yxwz",

                colName : "bz",

                pkVal : "7b54fe6e-66e1-4c98-8bf1-a378b288ddc1-00379",

                attName : "config.xml",

                storeId : "111",

                attachment : "402881ff3f7f6241013f7f65d2690003",

         },

         {

             tableName : "mwt_ud_pd_sb_rh_yxwz",

            colName : "bz",

            pkVal : "7b54fe6e-66e1-4c98-8bf1-a378b288ddc1-00379",

            attName : "config.xml",

            storeId : "111",

            attachment : "402881ff3f7f6241013f7f65d2690003",

         }

       ]

 

 

失败:{isSucessful:false,errMessage:err}

     */

att.getAttachmentToAttName("config.xml");

 

/*

       通过参数 "业务数据唯一标识"查询相应的附件信息集

       参数: pkVal 业务数据唯一标识,必传参数

            [colName] 列名称,可传参数,如果不传时,只根据业务数据唯一标识过滤

      

       返回值是一组对象数组,如下:

       同上

*/

att.getAttachmentToPkVal("7b54fe6e-66e1-4c98-8bf1","bz");

 

 

/**

     *  通过参数删除相应的附件与其信息

     * 

     *  @param tableName 业务数据表

     *  @param pkVal 业务数据主键

     *  @param colName 业务数据字段

     *  @param attName 附件名称

     *  @param uploadMode 附件上传方式默认为UDS非结构化平台方式

     *  @param filePath 附件存放路径,当 uploadMode“file”时有用

     * 

     *  @return {isSucessful:true/false,result:删除成功!/删除失败!}成功

*/

mxpms.utils.AttachmentUtil.deleteAll(tableName, pkVal, colName, attName, uploadMode, filePath)

 

/**

     *  提供一个复制附件的方法,

     *  附件并没有增加,只是关联关系增加。

     * 

     *  @param tableName 业务数据表

     *  @param colName 业务数据字段

     *  @param oldPkVal 原数据行的主键值

     *  @param newPkVal 新数据行的主键值

     * 

     *  @return {"isSucessful" : true, "result" :复制后的新附件关联信息}{"isSucessful" : false, "errMessage" : "复制失败!"}

*/

mxpms.utils.AttachmentUtil.copyAttachment(tableName, colName, oldPkVal, newPkVal)

 

}

 

 

2.12   界面元素组件

通过封装了SG-UAP平台已经提供的一些控件,增加其样式和针对业务的一些功能,减轻了业务组的开发负担,直接使用即可满足设计样式。

2.12.1 编辑区(表单控件)

2.12.1.1   使用说明

第一步:使用公共组件组提供的表单控件(使用方法和调用SG-UAP平台表单控件DataForm一致):

me.form = new mxpms.datacontrols.RuleDataForm({

         alias:"conftreeDetailViewDataForm",

         fields: [

           { name: "id", caption:"配置ID", editorType:"TextEditor", visible:false},

           { name: "name", caption:"配置名称", editorType:"TextEditor"},

           { name: "description", caption:"描述", editorType:"TextEditor"},

          {  name: "content", caption:"配置信息", editorType:"TextEditor", visible:false}

          ],

            entityContainer: me.formEntityContainer

        });

e.addControl(me.form);

2.12.1.2   功能展示

2.12.2 查询区

2.12.2.1   使用说明

第一步:使用组件:

var searchBox = new mxpms.datacontrols.DataGridSearchBox({

  initHidden: false,

// buttonTdCss: {"text-align":"right","padding-right":"10px"},

fields: [

     { name: "bdzzj", caption: "变电站名称" },

     { name: "yxbm", caption: "运行部门" },

     { name: "whdj", caption: "污秽等级" },

     { name: "dydj", caption: "投运日期" , editorType: "DropDownEditor"}

  ]

}),

2.12.2.2   功能展示

2.12.3 Window窗口

2.12.3.1   使用说明

第一步:使用组件:

var _win = new mxpms.windows.WindowManager().create({title: "自定义条件设置", width: 500, height: me.conditionWinHeight, movable: true, reusable:true, resizable: false });

2.12.3.2   功能展示

2.12.4 按钮

2.12.4.1   使用说明

第一步:使用组件:

//自定义按钮

me.button = new mxpms.controls.ImageButton({text:"模拟登录测试"});

me.button.on("click",simulateLogin);

me.button.$e.css("margin-left","10px");

me.hSplit.addControl(me.button,1);

2.12.4.2   功能展示

按钮的默认背景色为蓝色,效果如下:

鼠标移动到按钮上时,背景色为灰色,效果如下:

2.12.5 纵向Tab页

2.12.5.1   使用说明

在mainView.js中写如下代码:

me.tabControl = new mxpms.controls.VTabControl({

         pages : [ {

            text : "待办任务",

            name : "undoTask"

         },

         {

            text : "已办任务",

            name : "doTask"

         }],

         onselectionchanged : me.controller._tabSel_onChanged

      });

在mainViewController.js中增加如下代码:

me._onactivate = function()

    {

       me.getView().$e.parent().addClass("mxpms");

    };

 

2.12.5.2   功能展示

2.13   在线帮助

2.13.1 页面配置

第一步:转换word文档并放置在正确的位置

开发人员首先应使用chmProcessor工具(请在SVN上同级目录中查找)将word文档转换为Html文档,然后将转换后的html文档,放到com.sgcc.pms.framework.base.helponline模块项目(该模块在SVN的\code\trunk\framework目录)的/face/docs下,允许建立相应的子目录管理文档。

第二步:配置章节信息

页面路径:/pmsframework/helpolConf/index.jsp

页面菜单:系统配置/公共组件配置/在线帮助配置

进入在线帮助的配置主页面,如下图:

2.13.2 使用说明

在线帮助集成在门户框架吊顶栏中。

2.13.3 功能展示

2.14   主从Grid

2.14.1 使用说明

在页面中根据需要使用主从Grid组件

/*提供一个树风格的主从Grid,使用时请充分考虑性能,层次过的或数据量较大的情况下慎用

  本组件可以支撑平台提供的正常的DataGrid表格及其拓展Grid,暂无法支持类似

  mx.datacontrols.GroupItemGrid 这样的深度改造的Grid

  注:表格的嵌套可能会使得父表格的Css样式影响子表格

  */

  me.dataGrid = new mxpms.datacontrols.TreeStyleGrid({

    entityContainer: me.gridEntityContainerRest,

  //在初始化子表格的接口方法中,定义子表格的实例化方式

    oninitchildgrid: function(e){

        var options1 = $clone(options);

        var dataGrid = new mxpms.datacontrols.TreeStyleGrid(options1);

        var dydj = e.item.values["dydj"];

        //条件过滤

        dataGrid.setFilter("dydj="+dydj);

        dataGrid.load();

        e.childGrid = dataGrid;

       

        //下挂第二层子表

        dataGrid.on("initchildgrid", function(e){

            var options2 = {

                gridType : mxpms.datacontrols.ComplexHeaderGrid,

                baseUrl : demos.mappath("~/rest/pmssbdbdz/"),

                primaryKey : "objId",

                height: "280px"

            };

           

        var dataGrid2 = new mxpms.datacontrols.TreeStyleGrid(options2);

            var yxdw = e.item.values["yxdw"];

            dataGrid2.setFilter("yxdw="+yxdw);

            dataGrid2.load();

            e.childGrid = dataGrid2;//(必要的)反馈Grid

           

            //下挂第三层子表

            dataGrid2.on("initchildgrid", function(e){

                var options = {

                    gridType : mxpms.datacontrols.ComplexHeaderGrid,

                    baseUrl : demos.mappath("~/rest/pmssbdbdz/"),

                    primaryKey : "objId"

                };

                options3.gridType = mx.datacontrols.ComplexGrid;

                var dataGrid3 = new mx.datacontrols.DataGrid(options3);

               

                var whdj = e.item.values["whdj"];

                dataGrid3.setFilter("whdj="+whdj);

                dataGrid3.load();

                e.childGrid = dataGrid3;

            });

         });

    }

  });

  me.vSplit.addControl(me.dataGrid,1);

  me.dataGrid.load();

2.14.2 功能展示

下面是一个四层主从Grid的示例:

2.14.3 注意事项

1、主从Grid的每一个子表都是一个Grid实例,因此使用时应充分考虑性能,应主动避免数据过多、层次过多的情况。

2、子表Grid是镶嵌在主表Grid里的,因此其Css样式会受主表Grid的影响。对于主从Grid的Css样式,可能需要业务开发人员主动调整。

3、避免子表样式过于复杂,以免影响性能和展示

4、为Grid设置必要的属性,如Columns、height、width。如高度不设置,默认值为100%,那么可能你就无法看到子表。

5、主表和下挂的子表不要同时使用checkBox,表格之间的嵌套时会相互影响。如有使用场景,请处理此问题。

 

2.15   统一附件展示组件

统一附件展示组件提供了文件资料上传及展示支持组件:根据指定的库表(或配置ID)及过滤条件,在界面上展示文件资料信息(多个),并可直接在该界面上传文件资料。

 

2.15.1 使用说明

在页面中根据需要使用统一附件展示组件

var fileUpLoadPanel =new mxpms.controls.FileUpLoadPanel(

        {

             height: 500,

             width: "100%",

             tableName: "mwt_ud_pd_sb_rh_yxwz",

             primaryKey: "obj_id",

             pkVal: id,

             pageSize:3,

              win: me.win

        });

 

/**

     * 设置工具栏隐藏

     */

    me.toolBarHide();

 

    /**

     * 设置工具栏显示

     */

    me.toolBarShow();

 

    /**

     * 设置工具栏元素的display

     *

     * @param itemNames

     * 工具栏元素的名称,名称之间以,隔开。例:“add,upload,当有query出现时输入框也会删除,当有-出息时分隔符删除

     * 工具栏元素:添加:add;上传:upload;下载:down;删除:del;预览:preview;查询:query;分隔符:-

     */

    me.setToolBarItemDisplay(itemNames);

 

    /**

     * 设置工具栏元素的Enabled

     *

     * @param itemNames

     *            工具栏元素的名称,名称之间以,隔开。例:“add,upload

     *

     * itemNames参数为"all"时,工具栏所有按钮呈现不可用状态

     */

    me.setToolBarItemEnabled(itemNames);

主要参数说明:

filePath: 获取或设置一个字符串,表示上传文件在服务器上的保存路径 (不需要设置)

height: 控件高度

width: 控件宽度 按百分比设置

baseUrl: 获取或设置一个字符串,表示后台服务所在路径(不需要设置,使用默认值即可)

tableName: 设置或获取一个字符串,表示上传控件所属数据的表名

primaryKey: 设置或获取一个字符串,表示上传控件所属数据表的主键列名

pkVal: 设置或获取一个字符串,表示上传控件所属数据的主键值

uploadMode: 设置或获取一个字符串,表示保存文件的方式。该字段可选的值包括:file、blob、uds(不需要设置)

type: 设置或获取一个字符串,表示当前上传控件的类型。当类型为 path 时,表示管理指定目录下的文件; 当类型为 form时,表示管理表单对应的数据的附件(不需要设置)

pageSize: 获取或设置每页的分页数,默认每页18个

win: 提供给预览的弹出窗口,如果不设置则默认是全屏显示(这种方式在IE8的情况下无法显示);如果设置,则以弹出框的形式显示预览图片(由于弹出框如果在控件中初始化有几率显示在页面之下,所以以传入的方式初始化,这么弹出框会显示在页面上面)

selectMore:是否切换到多选状态,默认值为false(单选状态),由于多选状态为flex版,所以不能绑定删除后、上传前、上传后事件,这里是否使用多选状态应考虑实际业务场景的需求,不做强制要求。如果使用多选状态时,应使用getFlexFileName()方法获取已经上传的文件名称,返回值为数组形式。

hideBtns:需要隐藏的按钮名称,例add,upload,down,delete,preview;设置多个时,按钮名称间以英文逗号隔开。(此为多选状态下生效)

2.15.2 页面中附件的使用说明

1支持附件的上传功能:点击工具栏中“添加”按钮,在弹出的选择窗口内选择需要上传的附件,点击“保存”完成添加操作;添加后未上传的附件显示状态为:

再点击工具栏中“上传”按钮,完成上传工作。

 

2支持附件的下载功能:单击需要下载的附件,选中状态为:

再点击工具栏中“上传”按钮进行上传操作。

 

3支持附件的删除功能:单击需要删除的附件,再点击工具栏中“删除”按钮进行删除操作。

 

4支持附件的查询功能:在查询条件输入框内输入需要查询的附件的名称,或是名称的部分字段,再点击工具栏中“查询”按钮进行查询按钮,显示区域会将满足条件的附件显示出来。

 

5支持对图片附件预览功能:单击需要预览的附件,再点击工具栏中“预览”按钮进行预览操作(目前只针对图片有预览功能)

 

6支持分页功能:当在初始化控件时设置了每页的附件数目,控件会根据每页显示数对附件进行分页处理,默认每页显示18个附件。

2.15.3 功能展示

页面的展示效果:

点击添加按钮后效果:

2.15.4 注意事项

baseUrl属性目前MX 框架提供两个服务路径可供选择:

mx.mappath("~/../mx/servlets/fileUpload")供管理指定目录下的文件时使用,

mx.mappath("~/../mx/servlets/dataFileUpload")供管理表单、表格对应的数据附件时使用。

 

公共组件组也提供了一个servlet:

mxpms.mappath("~/servlets/DataFileServlet")建议使用公共组件组提供的servlet,这样可以对上传的信息进行统一管理

 

用户可以根据需要使用自己的servlet服务路径。

 

但是,当用户不使用公共组件组提供的servlet时,需要使用2.11统一附件管理组件,对上传附件信息进行统一管理。

2.15.5 相关配置

WebContent/WEB-INF/repository/platform/modulelist/client_include_modules.properties(白名单)文件需要增加uds;

 

WebContent/WEB-INF/configuration/platformconfig.properties配置文件需要增加对UDS平台的相关配置:

#####################################非结构化集成配置###########################################

#非结构化平台地址

UDS_URL = http://192.168.1.9:7050

#非结构化文件服务地址

UDS_FS_URL = http://192.168.1.9:7050/services/IFileService?wsdl

#非结构化文件服务地址

UDS_FS_URL_WSDL = http://192.168.1.9:7050/services/IFileService

#非结构化文件分发服务地址

UDS_DFS_URL = http://192.168.1.9:7050/services/IDispatchFileService?wsdl

#非结构化文件夹服务地址

UDS_FWS_URL = http://192.168.1.9:7050/services/IFolderWebService?wsdl

#非结构化全文检索服务地址

UDS_SWS_URL = http://192.168.1.9:7050/services/ISearchWebService?wsdl

#非结构化业务系统注册非结构用户名

UDS_USERNAME = pms2

#非结构化业务系统注册非结构用户密码

UDS_PASSWORD = pms123!

#非结构化业务系统注册校验码

UDS_SYSCHECKNO = 2F8A47392C3592DDAB47029DF7FE0D14

#非结构化客户端运行地址 这里需要配置自己的uap项目

UDS_CLIENT_URL = http://127.0.0.1:9000/uaptest

#非结构化业务系统公钥信息

UDS_PUBLIC_KEY_INFO=

 

 

 

 

 

2.16   流程审核日志统一管理

2.16.1 使用说明

2.16.1.1    流程日志接口调用使用说明

第一步:在使用流程审核日志功能的业务模块中添加注入配置,可以配置在模块项目下的任意***Bizc.xml注入文件中:

    <module:referenceid="wfAuditLog"targetName="com.sgcc.pms.framework.base.service.audit.IWFAuditLog"

    filter="platform_service_idname=wfAuditLogService"/>

第二步:使用模块项目(MANIFEST.MF文件)引入公共组件包:

第三步:在逻辑代码中添加注入代码:

import com.sgcc.pms.framework.base.service.audit.IWFAuditLog;

    @Autowired

    private IWFAuditLog wfAuditLog;

第四步:使用流程日志接口功能:

Ø  保存日志记录接口一

  /**

     * <b>功能</b><br/>

     * 保存日志记录信息

     *

     * @param tableName

     *            业务模块传递进来的业务表名

     * @param businessId

     *            业务模块传递进来的业务主键

     * @param workItemId

     *            业务模块传递进来的工作项ID

     * @param auditAdv

     *            业务模块传递进来的审核意见

     * @param auditRst

     *            业务模块传递进来的审核结果:1:成功,0:失败

     * @param auditTime

     *            业务模块传递进来的审核时间

     */

    public void saveAuditLog(String tableName, String businessId,

            Long workItemId, String auditAdv, String auditRst, Date auditTime)throws Exception;

 

 

Ø  保存日志记录接口二

调用此接口需要引用 TmxpmsWorkflowLog类

import com.sgcc.pms.framework.base.entity.workflow.TmxpmsWorkflowLog;

 

      /**

     *

     * <b>功能</b><br/>

     * 保存日志记录信息

     *

     * @param tmxpmsWorkflowLog

     *            业务模块传递进来的tmxpmsWorkflowLog对象

     */ 

       public void saveAuditLog(TmxpmsWorkflowLog tmxpmsWorkflowLog)

            throws Exception;

 

Ø  根据业务主键删除日志接口

        /**

     * <b>功能</b><br/>

     * 根据业务主键删除流程日志记录

     *

     * @param businessId

     *            业务模块传递进来的业务主键

     * @throws Exception

     */

    public void deleteLogByBusinessId(String businessId) throws Exception;

 

Ø  根据业务ID和流程实例ID删除流程日志记录

    /**

     *

     * <b>功能</b><br/>

     * 根据业务ID和流程实例ID删除流程日志记录

     *

     * @param businessId

     *            业务模块传递进来的业务主键ID

     * @param processInstId

     *            业务模块传递进来的流程实例ID

     * @throws Exception

     */

    public void deleteLogByProcessInstId(String businessId, Long processInstId)throws Exception;

 

Ø  根据流程实例ID删除流程日志记录

    /**

     *

     * <b>功能</b><br/>

     *根据流程实例ID删除流程日志记录

     *

     * @paramprocessInstId

     *            业务模块传递进来的流程实例ID

     * @throws Exception

     */

    public void deleteLogByProcessInstId(Long processInstId) throws Exception;

 

Ø  根据活动实例ID删除流程日志记录

  /**

     *

     * <b>功能</b><br/>

     * 根据活动实例ID删除流程日志记录

     *

     * @param activityInstId

     *            业务模块传递进来的活动实例ID

     * @throws Exception

     */

public void deleteLogByActivityInstId(Long activityInstId) throws Exception;

 

 

Ø  根据工作项ID删除流程日志记录

    /**

     *

     * <b>功能</b><br/>

     * 根据工作项ID删除流程日志记录

     *

     * @param workItemId

     *            业务模块传递进来的工作项ID

     * @throws Exception

     */

    public void deleteLogByWorkItemId(Long workItemId) throws Exception;

 

 

 

 

Ø  根据输入参数保存流程审核日志信息js方法

 /**

     * 根据输入参数保存流程审核日志信息js方法

     * @param tableName

     *            业务表名

     * @param businessId

     *            业务主键ID

     * @param workitemid

     *            工作项ID

     * @param auditAdv

     *            审核意见

     * @param auditRst

     *            审核结果:0:不通过,1:通过

     * @param auditTime

     *           审核时间    

     * @return json 对象 例如:{"info":"保存成功! ","isSuccessful":"true"}

     * isSuccessful:表示保存是否成功。info:表示提示信息。

     *

     */

me.saveWorkflowLog= function(tableName,businessId,workItemId,auditAdv,auditRst,auditTime)

调用示例:

    me._testFlowLogWin_saveOne = function (){

      var flUtil =   mxpms.utils.FlowLogUtil;

     var rst=flUtil.saveWorkflowLog("testTableName","dfdfdfdffd","34343","好","1","2013-09-29 13:12:12");

   

    }   

 

 

 

 

 

 

2.16.1.2    流程日志详细页面调用说明

第一步:在要调用的weblet中引入公共组件的weblet

requires:["pmsframework/mxpms"],

第二步:方法说明

根据流程业务主键、流程实例ID、活动实例ID、工作项ID调用流程审核日志详细信息对象窗口。

见下面代码,调用参数中,businessid(流程信息中业务主键ID)不可为空,如果为空,后面其它

参数即使不空,也不返回具体详细信息。后面三个参数processinstid(流程实例ID)、activityinstid

(活动实例ID)、workitemid(工作项ID)都可以为空,用””表示,如果为””,表示不根据此参数过滤。

    /**

     * 根据输入条件获取流程审核日志详细信息对象窗口

     *

     * @parambusinessid

     *            流程信息中业务主键ID

     * @paramprocessinstid

     *            流程实例ID

     * @paramactivityinstid

     *            活动实例ID

     * @paramworkitemid

     *            工作项ID

     * @returnmx.windows 一个窗口对象

      */

调用示例:

  me._logDialog_onclick = function() { 

var flUtil =   mxpms.utils.FlowLogUtil;

     var win=flUtil.getWorkflowLogWindow("402881953feb7a3f013feb7d572c0002","","","");

      win.showDialog();

 

 

 

Ø  根据根据输入条件获取流程审核日志详细信息JS方法

    /**   

     * 根据输入条件获取流程审核日志详细信息JS方法

     *

     * @param businessid

     *            流程信息中业务主键ID

     * @param processinstid

     *            流程实例ID

     * @param activityinstid

     *            活动实例ID

     * @param workitemid

     *            工作项ID

     * @param pageIndex

     *            分页序号

     * @param pageSize

     *            每页数据量

     * @return json对象

     *

     */

 

调用示例:

    me._testFlowLog_onclick = function (){

      var flUtil =   mxpms.utils.FlowLogUtil;

     var result=flUtil.getWorkflowLog("5e5e9ed5-1d98-d733-6296-c1a2b4638a581eb087","","","","1","10");

      return result;

    }

 

 

2.16.2 功能展示

流程日志详细信息页面如下:

 

2.17   组织结构树(一)

组织结构树提供了树节点以平面(类似流程图)形式展现出来的方法,使得用户可以以平面的形式更直观的查看节点接的挂接方式。

2.17.1 使用说明

在页面中根据需要使用统一附件展示组件

var dataTree =new mxpms.datacontrols.StructDataTree({

            baseUrl: mxpms.mappath("~/rest/pmstreeservice/tree/402881ff3f790a80013f790b853b0002"),

            onnodeclick:_tree_onnodeclick

        });

    

     dataTree.load();

     me.addControl(dataTree);

使用方法和平台的tree类似,数据源可以设置本地数据源也可以通过服务路径访问后台数据。

       组件的主要绑定事件为:树节点点击事件onnodeclick,可以通过此事件获取节点的信息做相应的操作。

同时组织机构树提供生成图片和打印的功能:

//生成当前登录人的组织机构树的图片

dataTree.exportTree("current");

 

//生成当前当前组织机构树已经展示的部分的图片

dataTree.exportTree(dataTree.$e.text());

 

//打印

dataTree.printTree();

 

2.17.2 功能展示

页面的展示效果:

2.18   组织结构树(二)

组织结构树提供了树节点以平面(类似流程图)形式展现出来的方法,使得用户可以以平面的形式更直观的查看节点接的挂接方式。

目前2.17组织结构树(一)已经过时

2.18.1 使用说明

在页面中根据需要使用统一附件展示组件

var dataTree =new mxpms.datacontrols.OrgDataTree({

      entityContainer: container,// container为组装好的本地数据源

onitemMouseOver: _tree_MouseOver,// 增加节点鼠标悬浮事件

onitemMouseOut: _tree_MouseOut,// 增加节点鼠标移出事件,

      onitemClick: _tree_onnodeclick//增加节点鼠标单击事件

});

    

     dataTree.load();

     me.addControl(dataTree);

使用方法和平台的tree类似,数据源可以设置本地数据源也可以通过服务路径访问后台数据。

       组件的主要绑定事件为:树节点点击事件onitemClick,可以通过此事件获取节点的信息做相应的操作;树节点悬浮事件onitemMouseOver,可以通过此事件添加鼠标移动到节点上的事件;树节点移出事件onitemMouseOut,可以通过此事件添加鼠标移出到节点上的事件。onitemMouseOut和onitemMouseOver事件配合使用。

 

同时组织机构树提供生成图片和打印的功能:

//生成当前登录人的组织机构树的图片

dataTree.exportTree("current");

 

//生成当前当前组织机构树已经展示的部分的图片

dataTree.exportTree(dataTree.$e.text());

 

//打印

dataTree.printTree();

 

2.18.2 功能展示

页面的展示效果:

特别注意:目前节点添加了属性:isSpecial,默认为false;如上图第二层节点所示,若要使节点呈现横向展示,只需将此节点的isSpecial属性设置为true(目前只支持本层次的最后一个节点)。

2.19 编号生成组件

2.19.1 使用说明

Java文件中直接调用

SeqUtils.getSeqNo(expId); //传入表达式ID

SeqUtils.getSeqNo(busiFlag, orgNo); //业务分类、单位名称

 

2.19.2 功能展示

编号生成表达式配置页面:

2.20   工作流组件

2.20.1 客户端

2.20.1.1   使用说明

第一步:在weblet中增加引用:

requires: ["pmsframework/mxpms"],

在onLoad中增加引用:

$import("bpmintegrate.utils.BPMClient");

第二步:使用组件:

//创建工作流处理对象

me.bpmUtil = new mxpms.utils.BpmUtil();

// 发起流程

var params = "{\"BUSINESSID\":\"" + recordid + "\",\"QJTS\":"+qjts+"}";//业务主键

var result = me.bpmUtil.createBpm("qjlc","请假流程","",recordid,true,params);

//得到流程实例id

var procInstId = me.bpmUtil.procInstID;

//发送流程

var result = me.bpmUtil.sendBpmByObjID(_dataGrid.getCheckedItems()[0].getValue("recordid"),”qjlc”,””,true);

//发送流程的回调函数

//如果me.bpmUtil定义成全局变量,要防止afterSendCallBack被重复注册

if(me.bpmUtil.onafterSendCallBack == null)

{

me.bpmUtil.on("afterSendCallBack",function(e){

//可在此处修改流程状态

if(e.result)

         {

            alert("发送成功");

         }

         else

         {

            alert("发送失败");

      }

});

}

//取消发送的回调函数

if(me.bpmUtil.oncancelSendCallBack ==null)

{

   me.bpmUtil.on("cancelSendCallBack",function(e){

      alert("取消发送");

   });

}

//批量启动流程

var businessIDs =new Array();

var params = new Array();

var businessID,param;

      

       for(var i=0;i<v_dataGrid.getCheckedIDs().length;i++)

       {

          businessID = v_dataGrid.getCheckedIDs()[i];

          param = "{\"BUSINESSID\":\"" + businessID +"\"}";//业务主键

         

          businessIDs.add(businessID);

          params.add(param);

       }

       var bpmUtil =new mxpms.utils.BpmUtil();

       bpmUtil.batchCreateBpm("qjlc","请假流程","",businessIDs,true,params,"人员选择对话框名称");

//批量发送流程

bpmUtil.batchSendBpmByObjID(businessIDs,"qjlc",params,true,"两票选人员");

       me.bpmUtil.on("afterSendCallBack",function(e){

          mx.indicate("info","流程创建失败的数据为:"+me.createFailIDs);

          mx.indicate("info","流程发送成功的数据为:"+me.sendSuccessIDs);

          mx.indicate("info","流程发送失败的数据为:"+me.sendFailIDs);

      });

/**

       * 流程迁移选择页面点确定前的判断

       * 在弹出流程的人员选择页面后,点确定前,如果想做处理,可以使用该方法

       * @paramresult 默认为true

       * @paramtype 默认为beforeSendClick

       * @paramparent 流程迁移选择页面的对象

        * @paramcallback 回调函数

        * @param selUserInfo已选择的列表中的人员信息

       * @returnstrue 可以继续发送false 不可以继续发送

       */

      me.bpmUtil.beforeSendClick = function(result,type,parent,callback,selUserInfo){

         var temp =true;

         //满足某些条件时,返回true

         if(temp)

         {

            returntrue;

         }

         else

         {

            returnfalse;

         }

      }

2.20.1.2   关键属性介绍

属性名称

描述

isSuccessful

操作是否成功

resultValue

返回值

procInstID

流程实例id

onafterSendCallBack

发送事件的回调函数,供调用者使用

oncancelSendCallBack

取消发送的回调函数,点击取消或直接关闭发送页面后触发

parWindow

人员选择对话框的父对象

如果该属性不为空,则基于该对话框弹出人员选择页面

createFailIDs

流程创建失败的业务记录主键数组(仅批量创建和发送流程时用)

sendSuccessIDs

流程发送成功的业务记录主键数组(仅批量创建和发送流程时用)

sendFailIDs

流程发送失败的业务记录主键数组(仅批量创建和发送流程时用)

2.20.1.3   关键方法介绍

方法名称

描述

注释

createBpm(processDefName,processInstName,processInstDesc,businessID,isSendNext,relativeData,windowName)

创建流程实例,可以选择是否立即发送,可带参数

/**

     * 创建流程实例,可以选择是否立即发送,可带参数

     * 注意事项:

     * <li>如果第一、二个参数为空,则抛出异常

     * <li>如果第一参数对应的流程定义找不到发布版本,则抛异常

     * @param processDefName 流程定义名称

     * @param processInstName 流程实例名称

     * @param processInstDesc 流程实例描述

     * @param businessID 业务数据主键

     * @param isSendNext 是否发送到下一环节默认为true

     * @param relativeData 流程参数,格式为{key1:value1,key2:value2}JSON

     * @param windowName 人员选择框的名称,默认为发送者

     * @return 是否成功成功后,将流程实例id赋值给me.procInstID

     */

createOrReplaceBpm(processDefName, processInstName, processInstDesc,

businessID, isSendNext, relativeData, windowName)

 创建或替换流程,如果已有流程实例,则删除重建

 

batchCreateBpm(processDefName,processInstName,processInstDesc,businessIDArray,isSendNext,relativeDataArray,windowName)

批量创建流程实例,可以选择是否立即启动,可带参数

/**

     * 批量创建流程实例,可以选择是否立即启动,可带参数

     * 注意事项:

     * <li>如果第一、二个参数为空,则抛出异常

     * <li>如果第一参数对应的流程定义找不到发布版本,则抛异常

     * @param processDefName 流程定义名称

     * @param processInstName 流程实例名称

     * @param processInstDesc 流程实例描述

     * @param businessIDArray 业务数据主键数组

     * @param isSendNext 是否发送到下一环节默认为true

     * @param relativeDataArray 流程参数,格式为{key1:value1,key2:value2}JSON串数组

     * @param windowName 人员选择框的名称,默认为发送者

     * @return 是否成功

     */

sendBpmByWorkItemIDworkItemID,relativeData,needSelPart,windowName

根据工作项将流程发送到下一个环节

/**

     * 根据工作项id发送流程

     * @param workItemID 工作项id

     * @param relativeData 相关数据

     * @param needSelPart 是否需要弹框选择参与者默认为true

     * @param windowName 人员选择框的名称,默认为发送者

     * @return 是否成功

     */

sendBpmByObjID(objID,procDefName,relativeData,needSelPart,windowName)

根据业务数据主键将流程发送到下一个环节

/**

     * 根据业务数据主键发送流程

     * 目前只支持单对象发送

     * 如果一条业务数据对应多个激活的活动项,只能处理第一个

     * @param objID 业务数据的主键

     * @param procDefName 流程定义名称

     * @param relativeData 相关数据

     * @param needSelPart 是否需要弹框选择参与者默认为true

     * @param windowName 人员选择框的名称,默认为发送者

     * @return 是否成功

     */

batchSendBpmByObjID(objIDs,procDefName,relativeDatas,needSelPart,windowName)

根据业务数据主键批量发送流程 (只针对单网关的流程有效,如果有多网关的情况,根据一条objid可以查出多个待办工作项,则有问题)

/**

     * 根据业务数据主键批量发送流程(只针对单网关的流程有效,如果有多网关的情况,根据一条objid可以查出多个待办工作项,则有问题)

     * 如果一条业务数据对应多个激活的活动项,只能处理第一个

     * @param objIDs 业务数据的主键数组

     * @param procDefName 流程定义名称

     * @param relativeDatas 相关数据数组

     * @param needSelPart 是否需要弹框选择参与者默认为true

     * @param windowName 人员选择框的名称,默认为发送者

     * @return 是否成功

     */

viewGraphByObjID(objID,procDefName)

查看流程图

/**

     * 查看流程图

     * @paramobjID 业务主键id

     * @paramprocDefName 流程定义名称

     */

viewLogByObjID(objID,procDefName)

查看日志

/**

     * 查看日志

     * @paramobjID 业务主键id

     * @paramprocDefName 流程定义名称

     */

terminateProcByObjID(objID,procDefName)

中止流程示例

/**

     * 中止流程实例,并调用流程和活动已经配置的回退补偿

     * 注意事项:

     * <li>如果流程实例不存在,则抛出异常

     * <li>如果流程实例不是未启动、运行、挂起状态,则抛出异常

     * @paramobjID 业务数据主键

     * @paramprocDefName 流程定义名称

     * @return是否成功

     */

terminateActiveByObjID(objID,procDefName)

中止活动实例

/**

     * 中止活动实例

     * 注意事项:

     * <li>如果活动实例不存在,则抛出异常

     * <li>如果活动实例是完成或者终止状态,则抛出异常

     * @paramobjID 业务数据主键

     * @paramprocDefName 流程定义名称

     * @return是否成功

     */

deleteBpmByObjID(objID,procDefName)

删除流程

/**

     * 删除流程

     * @paramobjID 业务数据主键

     * @paramprocDefName 流程定义名称

     * @return是否成功

     */

backWorkItemByObjID(objID,procDefName)

根据业务数据主键回退到上一个人工环节

/**

     * 回退到上一个人工活动

     * @paramobjID 业务数据主键

     * @paramprocDefName 流程定义名称

     * @return是否成功

     */

backWorkItem(curWorkItemID)

根据工作项id回退到上一个人工环节

/**

     * 回退到上一个人工活动

     * @paramcurWorkItemID 当前活动项id

     * @return是否成功

     */

backProcByObjID(objID,procDefName,activeDefID)

流程回退,可指定回退到哪个环节

/**

     * 流程回退,可指定回退到哪个环节

     * @param objID 业务主键

     * @param procDefName 流程定义名称

     * @param activeDefID 环节id

     * @return true 回退成功 false回退失败

     */

getPreActiveDef(objID,procDefName,activeDefID)

获取当前活动实例和指定环节之间的所有环节,供回退时选择环节用

/**

     * 获取当前活动实例和指定环节之间的所有环节,供回退时选择环节用

     * @param objID 业务主键

     * @param procDefName 流程定义名称

     * @param activeDefID 指定环节id默认为开始环节

     * @return 环节列表

     */

recallWorkItemByObjID(objID,procDefName)

根据业务数据主键追回流程

/**

     * 拽回工作项,并重启动当前工作项(不调用当前活动回退事件)

     * 注意事项:

     * <li>如果当前工作项不能拽回,则抛出异常

     * @paramobjID 业务数据主键

     * @paramprocDefName 流程定义名称

     * @return是否成功

     */

recallWorkItem(curWorkItemID)

根据工作项id追回流程

/**

     * 拽回工作项,并重启动当前工作项(不调用当前活动回退事件)

     * 注意事项:

     * <li>如果当前工作项不能拽回,则抛出异常

     * @paramcurWorkItemID 当前工作项id

     * @return是否成功

     */

_getProcInstIDFromObjID(objID,procDefName)

根据业务对象主键和流程定义名称查询流程实例

/**

     * 根据业务数据objid获取流程实例(内部使用)

     * @param objID 业务主键id

     * @param procDefName 流程定义名称

     */

_getActiveInstIDFromObjID(objID,procDefName)

根据业务对象主键和流程定义名称查询处于激活状态的活动实例

/**

     * 根据业务数据objid获取活动实例(内部使用)

     * @param objID 业务主键id

     * @param procDefName 流程定义名称

     */

_getWorkItemIDFromObjID(objID,procDefName)

根据业务对象主键和流程定义名称查询处于激活状态的工作项

/**

     * 根据业务数据objid获取工作项id(内部使用)

     * @param objID 业务主键id

     * @param procDefName 流程定义名称

     */

popupSelUserWindow(workItemID,windowName,isBatch)

根据工作项id弹出人员选择页面

/**

     * 根据工作项id弹出人员选择页面

     * @param workItemID

     * @param windowName 人员选择框的名称,默认为发送者

     * @param isBatch 是否批量发送默认为false true的话调用批量的回调函数

     */

2.20.1.4   REST方法介绍

方法路径

调用方法

注释

/rest/twfoperate/getProcInstId

var url = mx.rootPath +"/pmsframework/rest/twfoperate/getProcInstId";

var restClient =new mx.rpc.RESTClient({ baseUrl: url });

var result = restClient.getSync("",{"objid": objID,"procDefName":procDefName});

/**

     * <b>功能</b>:根据业务数据的主键获取流程实例id<br/>

     * @param objid业务数据主键

     * @param procDefName流程定义名称

     * @return流程实例id

     */

/rest/twfoperate/getActiveInstId

var url = mx.rootPath +"/pmsframework/rest/twfoperate/getActiveInstId";

        var restClient =new mx.rpc.RESTClient({ baseUrl: url });

var result = restClient.getSync("",{"objid": objID,"procDefName":procDefName});

/**

     * <b>功能</b>:根据业务数据的主键获取当前处于激活状态的活动实例id<br/>

     * @param objid业务数据主键

     * @param procDefName流程定义名称

     * @return活动实例id列表

     */

/rest/twfoperate/getWorkItemId

var url = mx.rootPath +"/pmsframework/rest/twfoperate/getWorkItemId";

var restClient =new mx.rpc.RESTClient({ baseUrl: url });

var result = restClient.getSync("",{"objid": objID,"procDefName":procDefName});

/**

     * <b>功能</b>:根据业务数据的主键获取当前处于激活状态的工作项id<br/>

     * @param objid业务数据主键

     * @param procDefName流程定义名称

     * @return工作项列表

     */

 

2.20.2 服务端

2.20.2.1   使用说明

第一步:引入包:

import com.sgcc.pms.framework.base.util.BpmUtil;

第二步:使用组件:

XLXX xlxx = new XLXX();

//启动流程

BpmUtil.startBpmByBD(xlxx, "qjlc", "", "", true);

//发送流程

BpmUtil.sendBpmByBD(workItemId, xlxx);

2.20.2.2   关键方法介绍

方法名称

描述

注释

startBpmByBD(Object p_bd, String procInstName,

            String procInstDesc, String startEventName, boolean isStart)

根据业务对象启动流程

/**

     * 根据表单启动流程

     * @param p_bd

     * @param procInstName

     * @param procInstDesc

     * @param startEventName

     * @param isStart

     * @return

     * @throws IllegalArgumentException

     * @throws IllegalAccessException

     */

sendBpmByWorkItem(Long workItemId)

根据工作项发送流程

/**

     * <b>功能</b>:流程发送(不带参数)<br/>

     * @param workItemId

     * @return

     */

sendBpmByBD(Long workItemId, Object p_bd)

根据业务对象和工作项发送流程

/**

     * <b>功能</b>:流程发送(带参数)<br/>

     * @param workItemId

     * @param p_bd发送选项

     * @return

     * @throws IllegalAccessException

     * @throws IllegalArgumentException

     */

backBpmActiveInst(long currentActInstID, long destActInstID, String type)

流程回退到目标活动实例(接收人处理)

/**

     * <b>功能</b>:流程回退到目标活动实例(接收人处理)<br/>

     * @param currentActInstID

     * @param destActInstID

     * @param type

     * time 基于两点间的时间回退

     * path 基于两点间的路径回退

     * recent_manual 回退到最近的人工活动

     * one_step 单步回退

     * simple 简单回退

     * @return

     */

backBpmActiveInst(long currentActInstID, long destActInstID)

流程回退到目标活动实例(接收人处理)

/**

     * <b>功能</b>:流程回退到目标活动实例(接收人处理)<br/>

     * @param currentActInstID

     * @param destActInstID

     * @return

     */

backBpmActiveDef(long currentActInstID, String destActDefID, String type)

流程回退到目标活动模板(接收人处理)

/**

     * <b>功能</b>:流程回退到目标活动模板(接收人处理)<br/>

     * @param currentActInstID

     * @param destActDefID

     * @param type

     * time 基于两点间的时间回退

     * path 基于两点间的路径回退

     * recent_manual 回退到最近的人工活动

     * one_step 单步回退

     * simple 简单回退

     * @return

     */

backBpmActiveDef(long currentActInstID, String destActDefID)

流程回退到目标活动模板(接收人处理)

/**

     * <b>功能</b>:流程回退到目标活动模板(接收人处理)<br/>

     * @param currentActInstID

     * @param destActDefID

     * @return

     */

recallBpmByActInst(long activityInstID)

流程追回(发起人处理)

/**

     * <b>功能</b>:流程追回(发起人处理)<br/>

     * @param activityInstID

     * @return

     */

breakBpmByProcInst(long processInstID)

流程中止

/**

     * <b>功能</b>:流程中止<br/>

     * @param processInstID

     * @return

     */

breakBpmByBD(Object p_bd)

根据业务对象中止流程

/**

     * <b>功能</b>:流程中止<br/>

     * @param p_bd

     * @return

     * @throws IllegalAccessException

     * @throws IllegalArgumentException

     * @throws NumberFormatException

     */

deleteBpmByProcInst(long processInstID)

流程删除

/**

     * <b>功能</b>:流程删除<br/>

     * @param processInstID

     * @return

     */

deleteBpmByBD(Object p_bd)

根据业务对象删除流程

/**

     * <b>功能</b>:流程删除<br/>

     * @param p_bd

     * @return

     * @throws IllegalAccessException

     * @throws IllegalArgumentException

     * @throws NumberFormatException

     */

viewProcInstInfo(long procInstId)

查看流程实例信息

/**

     * <b>功能</b>:查看流程实例信息<br/>

     * @param procInstId

     * @return流程实例信息

     */

viewWorkItemInfo(long workItemID)

查看工作项信息

/**

     * <b>功能</b>:查看工作项信息<br/>

     * @param workItemID

     * @return工作项信息

     */

setCurUserInfo(String userId, String userName)

设置流程的操作用户信息

/**

     * 设置流程的操作用户信息(任务调度中用)任务调度中无法获取登录用户信息,所以无法发送流程,需要单独设置用户信息后才能发送

     * @param userId

     * @param userName

     */

getProcInstIDByObjID(String objID)

根据业务数据主键获取流程实例

/**

     * 根据业务数据主键获取流程实例

     *

     * @param objID

     * @return

     */

getActiveInstByObjID(String objID)

根据业务数据主键获取活动实例

/**

     * 根据业务数据主键获取活动实例

     *

     * @param objID

     * @return

     */

getWorkItemByObjID(String objID)

根据业务数据主键获取工作项

/**

     * 根据业务数据主键获取工作项

     *

     * @param objID

     * @return

     */

appointParticipant(long curWorkItemID,

            String destActDefID, List<Map<String, String>> p_participant)

为指定工作项的指定环节指派参与者

/**

     * 为指定工作项的指定环节指派参与者

     *

     * @param curWorkItemID

     *            当前工作项id

     * @param destActDefID

     *            目标活动定义

     * @param p_participant

     *            参与者格式为 List<Map<String,String>>其中要有id name typeCode属性

     * @return

     */

appointNextActivities(long curWorkItemID,

            String strategy, String[] activeDefIDs)

指派流程将要发送的下一个环节

/**

     * 指派流程将要发送的下一个环节

     *

     * @param curWorkItemID

     *            当前工作项id

     * @param strategy

     *            set为覆盖之前设置的结果,append为在之前设置的结果中追加

     * @param activeDefIDs

     *            下一个环节id数组 String[]

     * @return

     */

finishWorkItem(long workItemID,

            Map<String, Object> relativeData)

完成工作项

/**

     * 完成工作项

     *

     * @param workItemID

     *            工作项id

     * @param relativeData

     *            相关数据 Map<String,Object>

     * @return

     */

2.21   门户框架

由于SG-UAP提供的workbench的默门户框架,不符合PMS2.0的界面规范,公共组件组依据界面规范开发了适用于PMS2.0的门户框架。

引用说明:

修改主项目配置文件(例如主项目名为:uapkf

/主项目工程名/WebContent/WEB-INF/configuration/applicationconfig.properties

中ISC_EXCLUDEPAGES参数为

 

ISC_EXCLUDEPAGES=/uapkf/portal/portal/login.jsp

修改主项目配置文件

/主项目工程名/WebContent/WEB-INF/configuration/platformconfig.properties

中ISC_LOGINURL参数为

ISC_LOGINURL=~/portal/default.jsp

2.21.1 登录界面

2.21.1.1   功能说明

该界面根据标准规范组定义设计的登录界面原型进行设计开发的,主要做为PMS2.0系统用户登录的入口,后期可能由于门户集成等因素,通过门户系统直接进入,因此该界面暂时做为系统登录的唯一入口。用户登录后,用户信息保存到session中,验证通过后直接转向首页面

2.21.1.2   操作展示

在浏览器上输入项目地址:(例如主项目名为:uapkf ),进入主界面

http://ip:端口/uapkf/portal/default.jsp

       登录界面如下:

输入用户名、密码后进入主界面。

2.21.2 吊顶栏

2.21.2.1   功能说明

吊顶栏是登陆系统后显示在页面最上端的工具栏集合。它包含了登陆人的相关信息,显示首页、待办、提醒、公告、常用菜单、搜索菜单、帮助,和退出系统功能。其中首页是将所有已打开的页面取消选中状态,最小化至状态栏中,显示首页内容;退出系统是注销当前登录人信息,退回登录页面(后期可能取消);待办、提醒、公告功能会打开相应链接页面;常用菜单、搜索菜单会打开一个面板,常用菜单是将用户常用的菜单列出,以供快速定位到菜单,搜索菜单面板中提供了模糊查询功能,以供快速定位到菜单。

 

2.21.2.2   使用说明

在页面中引入js文件

$import("portal.controls.TopBar");

在页面中根据需要使用初始化吊顶栏控件:

me.topToolbar = new portal.controls.TopBar(

me.hideItems:['onlinehelp','exit'....],//始化时设置隐藏的菜单

//初始化其他的一些属性

);//一般情况不用设置初始化属性

可以自定义用户菜单:

Me.topToolbar.userItems = [

               {

                    name: "searchmenu",

                    text: "搜索菜单",

                    onclick: _btn_onclick,

                    imageUrl: me.toolImages.searchmenu,

                    onclicktype: "panel",//点击菜单打开形式,分两种:1、panel(弹出层形式)2、url(主页面转向)

                    panelwidth: 220,//当点击菜单打开形式为panel时有用,panel的宽度

                    panelheight: 350,//当点击菜单打开形式为panel时有用,panel的高度

                    panelContent: _initSearchmenu//当点击菜单打开形式为panel时有用,弹出层的内容

                  }

            ]

设置提示字符:

Me.topToolbar.setRemindCount("waitdo", result);//两个参数为数组时,可同时为多个菜单设置提示字符

 

2.21.2.3   功能展示

加载首页面后吊顶效果:

点击常用菜单效果:

点击搜索菜单效果(这里支持模糊查询):

点击帮助菜单弹出帮助窗口:

2.21.3 主菜单

2.21.3.1   功能说明

菜单的使用,主要是注意在ISC中的菜单配置。菜单根据规范,分为六大中心、一级菜单、二级菜单、三级菜单,多出的菜单层级将不会被展示。六大中心、二级菜单不可点击,一级菜单、三级菜单可以点击打开页面。六大中心需要在配置项(Url)中添加#group来明确标识,未标识的将被降级为一级菜单使用。一级菜单左侧带有图标,图片的配置是在配置项url后添加 “#” +图片名称,如:#1.png。图片的命名暂时无规范,因此顺次序列命名。

2.21.3.2   使用说明

登录成功后,进入门户主页面。点击上方【系统导航】按钮,会下拉显示用户的可用菜单项。鼠标在下拉菜单项上面切换移动时,右侧会弹出并展示该一级菜单下的二级、三级菜单(在无二级、三级菜单时将不展示)。点击下拉菜单上方(下方)的切换按钮,下拉菜单将向上(向下)滑动一屏。

2.21.3.3   功能展示

 

2.21.4 状态栏

2.21.4.1   功能说明

状态栏提供了菜单点击后界面的收缩与关闭功能,依据界面规范组进行设计与开发。借鉴的IE/Google等浏览器选项卡功能,当菜单打开较多时,选项卡会压缩长度到最小。

2.21.4.2   操作展示

在界面底部,展示状态栏。如图:

每次打开过的菜单界面,都会记录在状态栏,点击每个状态栏选项卡,会收缩隐藏或打开菜单界面。

点击 x 图标,会关闭当前激活的界面。

当开打的选项卡过多时,选项卡长度及其上的文字会自动调整。

2.21.5 首页面

2.21.5.1   功能说明

首页面依据规范组提供的初始版本设计开发的功能,支持当前用户界面区域布局的定义、保存。支持多页展示界面布局,每页区域内容的选择加载。支持根据当前用户保存的布局的加载。每个用户可以定制自己的首页面。

2.21.5.2   操作展示

登录后主页面的居中的部分为首页面区域,由用户初始定义,界面如下:

l  首页面配置

进入菜单进入 ~/portal/main/index.jsp?state=edit界面,如下

编辑工具栏:点击“添加” 按钮,可以添加页区域,每个初始的页区域有12块空白块区域。点击“删除”按钮,可以删除当前页区域。点击“保存”,可以依据当前用户信息保存整个区域布局。

页区域:点击“上一页”、“下一页”及数字,可以查询及展示每页的布局。

空白块区域:初始12块空白块区域,点击右键,可以执行“增加”(增加图层)、向左(右、上、下)合并(调整界面块区域大小)、拆分(还原块区域大小)来控制块区域布局。

图层工具栏:点击“删除”按钮,可以删除图层。点击“选择”可以选首页面指标项目(参见2.22),来加载页面及图表。

2.21.6 总部首页面

2.21.6.1   功能说明

首页面依据规范组提供的初始版本设计开发的功能,支持当前用户界面区域布局的定义、保存。支持展示界面布局,每页区域内容的选择加载。支持根据当前用户保存的布局的加载。每个用户可以定制自己的首页面。

2.21.6.2   操作展示

登录后总部主页面的居中的部分为总部首页面区域,由用户初始定义。总分部首页面分为1、2、3三部分,如图所示1为页面头部,2为内容区域,3为底部,页面头部1和页面底部3使用公用区域,1和3区域与网省主页一样,规范请参考《界面设计规范》,内容区域2即总部主页界面如下:

l  首页面配置

进入菜单进入 ~/portal/zbmain/index.jsp?state=edit界面,如下

编辑工具栏:点击“新建” 按钮,可以添加页区域,每个初始的区域有2块空白块区域。点击“保存”,可以依据当前用户信息保存整个区域布局。

空白块区域:初始2块空白块区域,点击右键,可以执行“增加”(增加图层)、向左(右)合并(调整界面块区域大小)、拆分(还原块区域大小)来控制块区域布局。

图层工具栏:点击“删除”按钮,可以删除图层。点击“选择”可以选总部首页面指标项目(和网省指标项目配置类似参见2.22),来加载页面。

业务组织角色导航树区域:提供对该用户所属的所有业务组织角色进行首页面展示配置,当点击业务组织时不允许新建和保存总部首页配置。

可调整高度区域:是指可以通过鼠标拖动浅蓝色高度调整区域来动态调整该块区域的高度。点击保存将调整的块区域高度保存。

 

注意:总部首页和网省首页切换,需要改变主项目(如sgpms)的配置文件applicationconfig.properties中的总部首页开启开关,默认为WS(开启网省首页),取值有两种WS(网省)、ZB(总部),mainpages =ZB。

2.22   图表标准库

2.22.1.1   功能说明

图表标准库可以灵活配置多种图表,根据不同属性的组合,配置出不同式样的图表,主要有三大类:线形图,柱状图和饼图。主要服务于指标项目维护模块。注意:此功能模块由公共组件组来维护!

2.22.1.2   页面配置

页面路径:/pmsframework/chartStandard/index.jsp

页面菜单:系统配置/公共组件配置/图表标准库配置

进入图表标准库的配置主页面,如下图:

勾选一条记录,点击工具栏上面的“预览”按钮,弹出选择数据集个数的选择提示框,如图:

选择“单个数据集”,可以看到类似如下图所示的页面:

如果选择“多个数据集”,则可以看到类似如下图所示的页面:

不同的配置可以展示不同的图表,不一定是上面几个图片所展示的样子。

新建:点击工具栏中“新建”按钮,弹出如下页面

选择或填写好相关内容后点击“保存”按钮即可

删除:选择需要删除的数据,点击工具栏中“删除”按钮,系统弹出提示框:

点击“确认”按钮,删除选择的数据;点击“取消”,取消删除操作。

编辑:选择需要编辑的数据,点击工具栏中“编辑”按钮,系统弹出如下编辑页面:

编辑好之后点击上方工具栏里面的“保存”按钮即可保存内容。

2.22.1.3   注意事项

图表类型主要有:按点水平显示、按点垂直显示、按系列水平显示、按系列垂直显示、饼图。其中按点显示是指同一个横坐标点展示在一条Y轴上,而按系列是指一个数据集展示在一个区域内。

3D:图表3D展示,目前只支持饼图。

显示方式:柱状图、线形图和饼图。

分级方式:堆列,主要针对多个数据集的按点显示的柱状图,指同一个点上面的不同数据集柱状图相互叠加展示。

X轴坐标位置:有上和下两种。X轴展示在坐标上面和下面。

Y轴坐标位置:有左和右两种。Y轴展示在坐标左边和右边。

X轴坐标对齐方式:有区域中间和对齐标线。区域中间,指图形上的点显示在两个横坐标标线之间。对齐标线,指图形上的点显示在横坐标标线上面。

X轴方向颠倒:图形是否按照X轴方向上下颠倒。

Y轴方向颠倒:图形是的按照Y轴方向左右颠倒。

2.23   指标项目维护

2.23.1.1   功能说明

指标项目维护模块服务于首页面布局定义模块,根据配置的数据来源,实现展示图表和页面的功能。

2.23.1.2   页面配置

页面路径:/pmsframework/chartItem/index.jsp

页面菜单:系统配置/公共组件配置/指标项目维护

进入指标项目维护主页面,如下图:

勾选一条记录,点击工具栏上面的“预览”按钮,可以查看展示页面,如图

左边展示的是一个配置成图表的预览,右边是配置其他页面的预览。

新建:点击工具栏中“新建”按钮,弹出如下页面

若“是否是rest服务”选择“否”,那么配置的是非图表类型的指标项,数据来源是一般的url格式,内部服务格式为“~/模块/…/index.jsp”,外部的要写全路径的url。相应的页面如上图所示。

若“是否是rest服务”选择“是”,那么配置的是图表类型的指标项,数据来源格式如下“[{name:"",url:""},{name:"",url:""}]”,其中,那么是数据来源的名称,url是数据来源的rest风格的服务。多个数据来源用逗号隔开,前后用方括号括起来。相应的页面如下图所示

这时,横坐标字段和纵坐标字段必填,图表类型必选,图表类型来自图表标准库。

填好后点击上方工具栏里面的“测试预览”按钮可以在下方查看预览效果,如图

删除:选择需要删除的数据,点击工具栏中“删除”按钮,系统弹出提示框:

点击“确认”按钮,删除选择的数据;点击“取消”,取消删除操作。

编辑:选择需要编辑的数据,点击工具栏中的“编辑”按钮,系统弹出如下编辑页面:

其他操作与“新建”操作相同。

2.23.1.3   注意事项

此处配置数据来源是要注意两点:

1.       客户端配置数据来源的格式,主要分两种:rest服务和非rest服务。区别就是rest服务数据来源是用来展示图表的,非rest服务是用来展示其他页面的。具体格式已经在上面说明。

2.       对于rest服务数据来源,在服务端要注意返回类型为QueryResultObject,使用@ItemResponseBody注解方法。例如

@RequestMapping("/")

   public @ItemResponseBody

   QueryResultObject query(@QueryRequestParam("params") RequestCondition params) {

QueryResultObject queryResult = ……

……

return queryResult;

}

2.24   当前任务组件

2.24.1 待办任务

首页面登录后,在吊顶栏会有一个待办按钮:

待办后边的数字为当前用户需要处理的待办任务。

点击待办按钮后,会进入待办任务页面:

左侧列出当前登录用户需要处理的所有流程和环节,以及每个流程和环节下需要处理的工作项,点击左侧导航树,右侧会加载工作项列表。

点击任务名称超链接,会打开任务详情页面:

这里可以填写处理意见等信息,并发送和回退,也可以查看流程图信息。

注意:

对于回退的待办任务,需要在流程设计页面配置重做任务页面,才能在待办任务中打开详情并处理。

2.24.2 已办任务

左侧Tab页中选中已办任务标签,页面如下:

点击已办任务超链接,弹出已办任务详情页面:

2.24.3 流程迁移选择页面

在任务详情页面,点击发送按钮,会弹出流程迁移选择页面:

左侧会列出当前环节的下一个环节配置的角色和人员信息,供选择。

将需要发送的人员添加到右侧列表中后,点击确定,就可以发送给相应的人员。

2.24.4 页面交互说明

为统一管理,待办和已办页面提供了返回、发送、回退、追回等按钮,打开表单详情页面时,用户需要将页面中填写的内容作为相关数据,并进行流程发送,发送前需要做一些逻辑判断,发送后需要做一些修改状态等操作,所以需要在首页面和用户自定义页面之间进行交互。

配置方法:

在人工任务配置的jsp中增加如下代码(背景色标黄部分):

<body>

<inputtype="hidden"id="param"value=""onclick=""></input>

<mx:WebletContainerid="leaveRecordContainer"webletID="leaveRecord"bundleName="pmsframework">

</mx:WebletContainer>

</body>

其中Id必须为param。

数据交互设置:

如果需要为流程设置相关数据,在需要的地方增加如下代码:

document.getElementById("param").value= "{\"BUSINESSID\":\"" + recordid +"\"}";

方法交互设置:

为param对象绑定事件,即发送前后的触发事件,示例代码如下:

/**

        * 发送、回退、追回功能的验证和回调函数

        * @paramresult true发送成功、回退成功或追回成功 false失败

        *      typesend 发送 back 回退 recall追回

        *             beforeSend 点击首页面中的发送前 beforeBack 首页面回退前 beforeRecall 首页面追回前

        *             beforeSendClick 流程迁移选择页面中点击确定按钮前

        *        parent 流程迁移选择窗口对象

        *        p_callback 回调函数 有些判断如果需要异步调用,可用该函数处理

*        p_tips 操作成功或失败的提示信息

        * @returntrue 可以继续执行false 不允许继续执行

        */

       document.getElementById("param").bpmEvent =function(result,type,parent,p_callback,p_tips){

          if(type =="beforeSend")

          {

             alert("待办任务页面点击发送时验证");

             //返回true表示可以继续发送,返回false表示验证失败,不允许继续发送

             return true;

          }

          else if(type == "beforeSendClick")

          {

             //如果需要用异步弹框做判断,可以用p_callback作为回调函数

            if(typeof(p_callback)=="function")

             {

                var controller =newmxpms.views.UserSelMainViewController();

                 var options = {dispalyMask:false, title:"hehe", width:"650px", height:"400px", reusable:true, resizable:false};

                 //通过controller创建对话框

                 me.userSelWin = newmxpms.windows.WindowManager().createFromViewController(controller, options);

                 me.userSelWin.showDialog(p_callback);

             }

             //alert("流程迁移页面中点击确定时验证");

             //返回true表示可以继续发送,返回false表示验证失败,不允许继续发送

            //如果有异步处理,该处要返回false,并在异步弹出的对话框中,通过me.view.parent.returnValue = truefalse给出返回值

             return false;

            var obj = {};

             obj.successful= false;

             obj.hint= "只能选择一个用户发送!";

             return obj;

          }

          else if(type == "beforeBack")

          {

             alert("待办任务页面点击回退时验证");

             return false;

          }

          else if(type == "beforeRecall")

          {

             alert("待办任务页面点击追回时验证");

             return false;

          }

          if(result && type =="send")

          {

             alert("发送成功!");

          }

          else if(!result && type == "send")

          {

             alert("发送失败!错误原因为:"+p_tips);

          }

          else if(result && type == "back")

          {

             alert("回退成功!");

          }

          else if(!result && type == "back")

          {

             alert("回退失败!错误原因为:"+p_tips);

          }

          else if(result && type == "recall")

          {

             alert("追回成功!");

          }

          else if(!result && type == "recall")

          {

             alert("追回失败!错误原因为:"+p_tips);

          }

       };

//在首页面添加自定义按钮

var portalUtil =mxpms.utils.PortalUtil;

//获取按钮栏

var backContainer =portalUtil.getCurTaskContainer("undoBtn");

//增加按钮

var btnZdy =backContainer.controls[0].appendItem("zdy","自定义按钮",  "~/mx/resources/icons/pmsimage/fanhui.png");

btnZdy.on("click",function(){alert("hello");});

//隐藏回退按钮对于不想看到的按钮,只能隐藏,不要删掉

backContainer.controls[0].items[1].setVisible(false);

方法说明:

/**

     * 获取待办页面中的容器,便于各开发组自定义其中的按钮和任务栏信息

     * @paramtype "undoBtn"待办按钮栏 返回 发送 回退等 "doBtn"已办按钮栏 返回 追回等

     *             "task"待办已办任务栏 当前任务流程图 流程日志等

     * @returns容器

     */

portalUtil.getCurTaskContainer = function(type){}

//刷新待办任务页面

var portalUtil =mxpms.utils.PortalUtil;

/**

    * 刷新待办任务页面

    * @paramp_type "undo"待办 其他 同时刷新待办和已办

    */

portalUtil.refreshCurTaskPage();

2.24.5 其他配置

配置某些流程和环节不在待办任务中显示:

insertintoscyw.t_mxpms_curtask_processcfg

  (processdefname, activedefid)

values

  ('qjlc','bmjlsp')

第一个参数为流程定义名称,第二个参数为环节定义id

2.25   人员选择页面

2.25.1 功能说明

通过人员选择的弹出页面,可以选择出某部门下的人员信息,包括人员ID和人员姓名。

2.25.2 人员选择的页面图

1、人员选择单选页面

 

2、人员选择复选界面

2.25.3 使用说明

功能说明:进入此人员选择弹出页面后。

1、进入人员选择单选界面,点击左边的导航树,右边会对应显示该部门的下挂人员(不会显示所有的子部门的所有人员)。勾选右边的人员,然后点击“确定”按钮,则返回对于人员的ID、名称集合;

2、进入人员选择复选界面,点击左边的导航树,右边会对应显示该部门的下挂人员(不会显示所有的子部门的所有人员)。勾选“待选择”列表里面的人员,点击右移或左移按钮,将选择的人员信息集合添加或移除到“已选择”列表中,然后点击“确定”按钮,则返回已选择列表中已选择的人员的ID、名称集合。

 

确保引入包com.sgcc.pms.framework.isc,在页面weblet.js引入

requires:["pmsframeworkisc/iscmxpms"],

 

在页面的指定人员选择弹出页面的方法:

 

 /**

     * 人员选择单选弹出页面的方法

     */

   

     function openEmpSelWin() {

 //_param为指定部门的ID,可以不写。若不写这个,则人员选择弹出页面的部门导航树顶层节点,默认显示为当前人员的部门

     var _param = "900001510";//国家电网部门

     var _u = new iscmxpms.utils.CommSelUtil();

     //调用人员选择单选对话框

      Var win = _u.openUserSelWin(_param,me.getUserResult);

//调整窗体尺寸,默认尺寸为,即宽*高为600*500,可以根据实际业务需要调整

     //win.resizeTo(600,400);

     }

 

 /**

     * 人员选择复选弹出页面的方法

     */

     function openEmpCheckSelWin() {

 //_param为指定部门的ID,可以不写。若不写这个,则人员选择弹出页面的部门导航树顶层节点,默认显示为当前人员的部门

     var _param = "900001510";//国家电网部门

     var _u = new iscmxpms.utils.CommSelUtil();

         Var win= _u.openUserMultSelWin(_param,me.getUserResult);

//调整窗体尺寸,默认不改尺寸为最大尺寸,即宽*高为900*500,可以根据实际业务需要调整高度

     //win.resizeTo(900,400);

     }

 

     /**

      * 结果回调函数

      */

    me.getUserResult=function(){

         //查看返回值

            if(p_win.dialogResult){

                alert(p_win.dialogResult);

           //获取人员的其他信息

              alert(iscmxpms.getContext().returnObject);

            }   

    }

 

2.25.4 注意事项

修改页面时候,以人员选择单选界面为例,人员选择复选界面与其注意事项一致:

1、可以不用指定部门ID,但则人员选择弹出页面的部门导航树顶层节点,默认显示为当前人员的部门

即:去掉_param = "900001510";//国家电网部门

 调用时不写参数,只写回调函数 _u.openUserSelWin(me.getUserResult);

 

2.26   组织机构选择页面

2.26.1 功能说明

通过组织机构选择的弹出页面,可以选择出本单位或本省下的组织机构信息,包括单位名称和上级单位。

2.26.2 组织机构选择的页面图

1、组织机构选择单选页面

 

2、组织机构选择复选界面

2.26.3 使用说明

功能说明:进入此组织机构选择弹出页面后。进入组织机构单选界面,可以直接选择组织机构导航树上的节点,点击确定返回选中的单位和上级单位信息;

进入组织机构选择复选界面点击左边的导航树,勾选导航树的节点,点击左移或右移按钮,向右侧的Grid添加或移除选择的组织机构信息,然后点击“确定”按钮,则返回对应的单位和上级单位集合。

 

在页面weblet.js引入

requires:["pmsframeworkisc/iscmxpms"],

 

在页面的指定组织机构选择弹出页面的方法:

 

 /**

     * 组织机构选择单选弹出页面的方法

     */

   

     function opendepSelWin() {

//param是指定部门ID参数,如果不传,默认为当前登陆人的所属单位和所属网省加载组织机构导航树

    //radioShow是指定显示radio参数,如果不传,默认加载本单位和本网省两个radio

      var param ="100" ;

      var radioShow ="bdw" ;

        var _u = new iscmxpms.utils.CommSelUtil();

     Var win= _u.openOrgSelWin(me.getdepResult,param,radioShow);

//调整窗体尺寸,默认不改尺寸为最大尺寸,即宽*高为240*500,可以根据实际业务需要调整高度

     //win.resizeTo(240,400);

    }

 

 /**

     * 组织机构选择复选弹出页面的方法

     */

     function openEmpCheckSelWin() {

    //param是指定部门ID参数,如果不传,默认为当前登陆人的所属单位和所属网省加载组织机构导航树

//radioShow是指定显示radio参数,如果不传,默认加载本单位和本网省两个radio

             var param ="100" ;

         var radioShow ="bws" ;

        var _u = new iscmxpms.utils.CommSelUtil();

 Var win = _u.openOrgMultSelWin(me.getdepResult,param,radioShow);

//调整窗体尺寸,默认不改尺寸为最大尺寸,即宽*高为900*500,可以根据实际业务需要调整高度

     //win.resizeTo(900,400);

     }

     /**

       * 结果回调函数

       */

     me.getdepResult = function(p_win){

     //查看返回值

     if(p_win.dialogResult){

         alert(p_win.dialogResult);

     }

     }

 

2.26.4 注意事项

修改页面时候,以组织机构单选界面为例,组织机构复选界面与其注意事项一致:

1、可以不用指定部门ID,但则组织机构选择弹出页面的部门导航树顶层节点,默认显示为当前人员的部门

即:去掉_param = "900001510";//国家电网部门

 调用时不写参数,只写回调函数 _u.openDepSelWin(me.getUserResult,radioShow);

2、可以不用指定需显示radio参数,参数值可为bdw(本单位)、bws(本网省),如果不指定具体显示哪个radio,默认组织机构选择界面两个radio本单位和本省都会显示。

即去掉var radioShow="bws" ;//指定显示radio为本省

 调用时不写参数,只写回调函数 _u.openDepSelWin(me.getUserResult,param);

3、若不指定部门ID同时也不指定需显示radio,即组织机构导航树默认加载的时当前登录所在的本单位和本省的组织机构信息,即调用时

_u.openDepSelWin(me.getUserResult);

 

2.27   单列合并表格控件(陈建)

2.27.1 功能说明

单列合并表格控件(MergeGridControl),提供把相同列进行合并的功能。这个功能和报表中的合并相同列类似。

2.27.2 单列合并表格控件的效果图

注:下面的表格为合并后的效果(可以指定合并哪些列,上图指定合并的是NAME/NEWVALUE/ACTION)。虽然上图要求合并ACTION列,但由于前面列(NEWVALUE)的值不相同,则不合并。(多列合并列,可以指定优先级)

 

2.27.3 使用说明

在页面weblet.js引入

requires:["pmsframework/mxpms"],

 

在页面使用单列合并表格控件:

 

 var _mergeGrid = new mxpms.controls.MergeGridControl({

            dataGrid:_dataGrid,//grid对象

           mergeRows:"name,newvalue,action"//合并的列,按照优先级从高到低排列,逗号隔开

        });

   hSplit.addControl(_mergeGrid,1);

me.addControl(hSplit);

2.27.4 注意事项

修改页面时候:

1、_dataGrid代表你创建的DataGrid(目前单列合并表格控件,支持所有的DataGrid)

2、mergeRows:"name,newvalue,action"为指定哪些列需要合并,优先级从高到低排列.

3、如果你创建的DataGrid,有排序字段,则排序字段也加入到合并列中,并且优先级最高

2.28   高级查询区

2.28.1 使用说明

首先在配置页面进行配置设备目录及每个设备的条件配置。其中左侧的导航目录可以通过右键菜单进行分组和节点的创建、编辑。点选节点,在右侧配置信息中通过新建、批量新建方式创建属性列配置。创建的方式可参考上面的自定义查询组件配置。请注意控件的初始化参数一列的配置,必须是一个符合JSON格式的字符串。如下图:

在这里要特别注意CustomEditor控件的配置,如果要为CustomEditor控件设置onclick事件,可以这样设置(注意方法名必须为fn):

{"width":"100%", "onclick": "function fn(e){alert(1);}"}

在页面中根据需要使用高级查询区组件

/*提供一个高级查询区组件*/

var searchBox =new mxpms.datacontrols.AdvancedSearchBox({

              initHidden: false,

//控件的唯一标识

              alias: "abcdefghijklmnopqrstuvwxyz",

//条件选择窗口的设备分组id,跟配置页面的导航树中分组的id一致

              rootGroupId : "40288137410a7e0401410bf3206e000a",

              pagedControl: me.dataGrid,

              fields: [

                   {

                       name: "Abdzzj",

                       caption: "AA变电站名称"

                   },

                   {

                       name: "Ayxbm",

                       caption: "AA运行部门",

                       editorType: "CustomEditor"

                   },

                   {

                       name: "Awhdj",

                       caption: "AA污秽等级",

                       editorType: "NumberEditor"

                   },

                   {

                       name: "Adydj",

                       caption: "AA电压等级" ,

                       editorType: "DropDownEditor"

                   }

             ]

});

在页面中使用保存的常用树:

代码示例:

var dataTree =new mx.datacontrols.DataTree({

    baseUrl: mx.rootPath +"/pmsframework/rest/searchsavetree/tree/控件的alias/配置的节点id",

   onselectionchanged: function(e) {

        searchBox.loadSavedFields(e.target.selection.id);

   }

});

对树中节点名称进行变更或删除节点,可以在树的右键菜单中分别调用单表场景中的相应方法(参考:com.sgcc.pms.framework.base.service.rest.search.SearchsaveController)。

2.28.2 功能展示

配置页面:

条件添加页面:

条件排序页面:

高级查询区展示:

2.28.3 注意事项

1、控件的初始化配置参数必须为可被解析的JSON字符串

2、CumboEditor控件的onclick事件方法名必须为fn

2.29   Grid自定义排序

2.29.1 使用说明

根据需要,使用适用于Grid的符合可自定义排序规则的组件

/*提供一个通用的表格列排序的组件*/

var win = mxpms.windows.ModelWindow().sortColumnWindow({owner:me.dataGrid});

然后通过按钮的单击事件中显示win。

2.29.2 功能展示

配置页面:

2.29.3 注意事项

1、可排序项是当前显示的column,默认为正序排列,可以通过点击字切换正序/倒序排列规则

2、可以组合排序,多个列的先后顺序通过拖拽功能调整

3、初始化时需提供owner属性为待排序的grid

 

2.30   人员部门维护页面(陈建)

2.30.1 功能说明

ISC本地表维护页面,是用了管理生产运维库中的部门表和人员表,并且包含了手工同步ISC人员和部门数据的功能。

人员表:SCYW.ISC_USER_LOCEXT

部门表:SCYW.ISC_SPECIALORG_UNIT_LOCEXT

ISC人员部门维护页面:

http://ip:端口/uap项目/pmsframeworkisc/iscextconf/index.jsp

人员部门维护的同步设计,请看当前SVN目录的“PMS2.0部门人员扩展表与ISC同步概要设计.doc”

 

 

 

2.30.2 使用说明

维护页面的左侧为部门导航树,右侧为对应的下级部门信息和人员信息

点击“同步ISC数据”按钮,将同步指定的导航树部门和它的下级所有部门

部门的DataGrid可以维护管理级别和单位级别等特殊字段,以方便同步功能字段计算出管理单位和某具体单位。这部分功能主要是现场维护人员负责,但由于目前开发人员在使用,所以自己维护。

2.30.3 注意事项

1、这部分功能主要是现场维护人员负责,但由于目前开发人员在使用,所以自己维护单位级别、管理级别等单位,以方便获取到相应的数据。

 

2.31   Excel模版导出和excel数据导入维护页面(陈建)

2.31.1 功能说明

此页面维护:1、管理XX项目模块需要导出的表 2.管理具体某张表和excel的字段对应关系,如表中OBJ_ID字段对应Excel的A列、DEPTID字段对应Excel的B列  3、提高下载模版和导入功能,分别指excel模版的导出和excel数据的导入功能

访问URL:http://IP:端口号/sgpms/pmsframework/excelPage/index.jsp

 

 

2.31.2 使用说明

1.新建xx模块下的表

 

 

 

 

 

2.新建表字段与excel列的对应关系

 

 

 

3、使用下载模版和导入excel数据功能

 

 

 

4、公共组件包(pmsframework)还提供了移植“下载模版”和“导入”按钮功能

A.具体使用方法如下:在weblet中引入

requires:["pmsframework/mxpms"],

   B.在toolBar中自己增加下载excel模版按钮,并对点击事件修改如下:

me.Util=new mxpms.utils.FormExcelUtil();

me.Util.excelExportTemplate("4028819b409559e20140955f39230003");

C.在toolBar中自己增加导入excel数据按钮,并对点击事件修改如下:

 

me.Util=new mxpms.utils.FormExcelUtil({

//设置额外字段;额外字段为模版中没有的字段,但在导入到数据库时,需要增加的额外字段

//额外字段四个属性name:字段名,type:字段类型,formatString:格式化,value:默认值

 extColumn:[{name:"ID",type:"String",value:"310002140022011220"},

                 {name:"TOTAL",type:"Number",value:"280.21"},

                 {name:"KSSJ",type:"Time",value:"2011-11-11 11:11:11",

                  formatString:"YYYY-MM-DD HH24:MI:SS"}

                 ]

});

//me.Util.setExtColumn(extColumn)//设置额外字段

me.Util.excelImportToDatabase("4028819b409559e20140955f39230003",

p_callback, extColumn);

 

 

D.注意,”4028819b409559e20140955f39230003"为维护页面里表的OBJ_ID,如下图:

回调函数日志返回值:

{vlogs: [{index:"第1行",type:"警告",errs:null,warn:"备注字段为空;XX字段为空"},{index:"第2行",type:"正常",errs:null,warn:null},{index:"第3行",type:"错误",errs:"XXXXXX",warn:"备注字段为空;XX字段为空"}],ilogs:[…]}

2.31.3 注意事项

1)维护页面的下载模版和导入功能可以直接使用。针对某些页面只需要使用下载模版或导入excel数据功能的,可以使用移植按钮功能。

2)维护页面是最基本的页面,无论只使用导出execl模版或只使用导入数据功能,都要先配置维护页面

3)页面不支持excel的导出功能

 

2.32   系统消息配置

2.32.1 功能说明

通过系统消息配置页面对系统消息进行相关维护,管理员或其他相关人员在此页面对系统消息进行新建和编辑以及上传附件,用户在登陆系统后,会在吊顶栏中看到图标,点击后会出现消息查看框:

消息列表

详细信息

 

2.32.2 使用说明

1.查看及查询系统消息

点击菜单进去 系统信息配置 页面,可以通过消息标题和存储时间对消息进行简单的查询。

2.新建系统消息

点击新建按钮后,会弹出如上图所示的系统消息详细编辑页面,编辑好标题和内容并上传附件后,点击保存按钮进行数据的新建;点击关闭即放弃此次新建操作。

 

3.编辑已新建的系统消息

选择一条已有的系统消息,点击编辑按钮进入编辑页面,编辑完成后点击保存按钮对数据新建编辑保存,点击关闭按钮放弃此次编辑操作。

4.删除已有系统消息

选择一条已有的系统消息,点击删除按钮弹出上图所示提示框,点击确定按钮将删除选择的记录及其关联的附件,点击取消按钮即放弃此次删除操作。

2.32.3 注意事项

在编辑系统消息的时候,如果只是对附件进行操作,只需上传后关闭即可,此时点击保存无效。

2.33   系统告警/提醒配置

2.33.1 功能说明

通过告警/提醒配置页面对系统告警/提醒进行相关维护,管理员或其他相关人员在此页面对告警/提醒进行新建和编辑,用户在登陆系统后,会在吊顶栏中看到图标,点击后会系统打开告警/提醒页面,节点会体现出不同的告警或提醒的数量,点击不同的节点右侧的图形概览和详细列表会链接到配置好的页面查看详细信息:

告警/提醒的查询页面

告警/提醒的配置页面

 

2.33.2 使用说明

1.新建告警/提醒

配置页面会默认有两个树节点(告警信息和提醒信息,表示两种类型),点击一个树节点(选择父节点)点击右侧列表工具条理的新建按钮后,会弹出如上图所示的告警/提醒详细编辑页面,编辑好相关信息后,点击保存按钮进行数据的新建;点击关闭即放弃此次新建操作。

 

2.编辑已新建的告警/提醒

选择一条已有的系统消息,直接在列表中选择要编辑的列,可以直接编辑信息,无需弹出详细信息页面进行编辑,编辑后点击保存对此次编辑结果进行。

3.删除已有系统消息

选择一条已有的告警/提醒,点击删除按钮弹出上图所示提示框,点击确定按钮将删除选择的记录,点击取消按钮即放弃此次删除操作。

2.33.3 注意事项

1、图形概览、详细信息网页路径为:~/模块名/场景名/index.jsp

2、读取数量SQL为:表名称 where 用户字段=? [And 其他条件] ;不配时显示条数为0

3、编辑告警信息和提醒信息时 右击树节点选择进行编辑

 

2.34   页面导出Excel/Word/PDF/HTML(陈建)

2.34.1 功能说明

页面导出Excel、Word、Pdf、Html文档,属于服务器端导出,采用的是解析HTML元素方式导出的,页面不用传SQL语句等,到达所见即所得效果。

页面支持类型:form表单、自定义form表单、DataGrid类型(包括dataGrid的扩展)、table标签的自定义表格(支持合并和图片)、以及由上面元素所构成的视图。不支持的类型:导航树、各种标签、按钮等Word本身就不包含的内容。

 

 

2.34.2 功能截图

1.导出Excel

下面是导出Excel结果:

 

 

 

 

 

2.导出Word

下面是导出Word结果:

注意:变颜色的文字html写法:(要点,1.span标签 2.idspan 3.style属性支持下面两个)

<td >

            <span id= "span" style="color:rgb(100,100,100); font-size: 10px;">&nbsp;&nbsp;&nbsp;rgb100的颜色</span><br/>

            <span id= "span" style="color:rgb(202,200,200); font-size: 20px">&nbsp;&nbsp;&nbsp;rgb200的颜色</span><br/>

            <span id= "span" style="color:rgb(100,200,300); font-size: 10px">&nbsp;&nbsp;&nbsp;rgb300的颜色</span><br/>

    </td>

 

3.无边框的段内容

段文本内容的代码:

 

<table class="noBorder">

        <tr height="25px">//一个tr里只能读取到第一个td

            <td  colspan="2">

            <span id= "span" style="color:rgb(100,100,100); font-size: 10px;">&nbsp;&nbsp;&nbsp;rgb100的颜色</span><br/>

            <span id= "span" style="color:rgb(202,200,200); font-size: 20px">&nbsp;&nbsp;&nbsp;rgb200的颜色</span><br/>

            </td>

        </tr>

        <tr height="25px">

            <td align="left" style="padding-right: 5px; padding-left: 10px;"><font style="font-weight: bold;">部门名称1</font></td>   

        </tr>

        <tr height="25px">

            <td align="left" style="padding-right: 5px; padding-left: 10px;"><font style="font-weight: bold;">部门名称1</font></td>   

        </tr>

</table>  

 

 

 

2.34.3 使用说明

  在页面weblet.js引入

requires:["pmsframework/mxpms"],

 

添加导出文档的方法控制,如某个按钮事件:

function exportDocument(){

     //导出文档的工具类

        var util = new mxpms.utils.FormDocumentUtil(

            {

          //title为导出文档内容的标题,标题可为“”字符串

          title:"文档标题",

          //view为页面视图或支持类型的jquery对象

             view:$("body"),

          //fileName为导出的文档名称

             fileName:"20131026测试文档"

             });

    util.exportExcel();

//  util.exportWord();

//util.exportPdf();//注意一个方法只支持一种导出,原因是和response流有关

    //util.exportHtml();

}

 

2.34.4 注意事项

1、页面上的任意布局的文字:目前只支持放在table标签布局。建议文字的布局都用table标签控制,千万别用div,否则看不见那部分文字。

(请参考table的布局规范:table、tr、td,只能在td里放内容)

2、有合并的table表格,一定要控制好合并的属性:rowspan和colspan,

格式一定要正确,否则可能错位。

2.35   导出Excel

2.35.1 使用说明

该组件支持多表头导出和数据字典转译

var columns = [   

          {name: "objId", caption:"OBJ_ID" },

          {name: "bdzzj", caption:"变电站名称" },

          {name: "yxbm", caption:"运行班组" },

          {name: "dydj", caption:"电压等级*" },

          {name: "whdj", caption:"污秽等级" },

          {name: "tyrq", caption:"投运日期"},

          {name: "sfslz", caption:"是否枢纽站"},

          {name: "bzfs", caption:"布置方式"},

          {name: "zz", caption:"站址"}

];

 

var xls = new mxpms.utils.ExportToExcelUtil({

       groups: [{items:[{caption: "分组1",leftindex: "0", colspan: "2", rowspan:"3"},

             {caption: "分组2", leftindex: "2",colspan: "2", rowspan:"1"},

             {caption: "分组3", leftindex: "4",colspan: "4", rowspan:"1"},

             {caption: "分组4", leftindex: "8",colspan: "2", rowspan:"1"}]},

           {items:[

             {caption: "分组6",  leftindex: "2",colspan: "2", rowspan:"1"},

             {caption: "分组7",  leftindex: "4",colspan: "2", rowspan:"1"},

             {caption: "分组8",  leftindex:"6",colspan:"2", rowspan:"1"}]},

            {items:[

            {caption: "分组16",  leftindex: "2",colspan: "1", rowspan:"1"},

             {caption: "分组17",  leftindex: "3",colspan: "1", rowspan:"1"},

             {caption: "分组18",  leftindex: "4",colspan: "1", rowspan:"1"},

             {caption: "分组19",  leftindex: "5",colspan: "1", rowspan:"1"},

           {caption: "分组20",  leftindex: "6",colspan: "1", rowspan:"1"}]}

       ],

       widths: [50,20,20,20,10,11,10,10,30],

       columns: columns,

       params: {params: JSON.stringify({filter: "zz=111"})},

       url: grid.entityContainer.baseUrl

});

xls.load();

2.35.2 功能展示

2.35.3 注意事项

1、参数Columns不要直接使用grid的_columns属性,因为这个属性是控件的私有变量,且内容是不可控的,在新版本中内容有更新。

2、当设置Group时,将不再绘制Columns,这样是为了避免重复的绘制,因为使用分组的时候,一般我们的Columns都不会再使用。

3、公共组件提供的组件不适用于大数据量导出,如果数据量过大或数据字典过大,都会造成前端数据转json对象时丢失,在此情况下,请使用平台方法导出数据或重写renderData 方法。

 

2.36   导出多sheet页的Excel

提供两种完全不同的导出多sheet页的excel的方式:直接导出页面表格方式、通过配置导出数据库数据方式;两者选其一,一般直接导出页面表格方式可以满足业务组的大多数情况。

2.36.1 直接导出页面表格方式使用说明

直接调用刚刚组建组提供的方法,传入需要导出的表格集合、文件名称、sheet名称集合

var cutil = mxpms.utils.CommUtil();

      cutil.exportManySheet("测试导出多sheet页表格", [dataGrid1, dataGrid2…], ["第一页","第二页"…]);

 

2.36.2 通过配置导出数据库数据方式使用说明

这种方式需要先对数据源进行配置,然后通过调用功能导出使用者需要的结果。使用此功能需要进行两部分操作。

第一步,需要对导出的数据进行配置:

进入系统后,在浏览器中输入配置页面的网址(http://127.0.0.1:9000/sgpms/pmsframework/excelconf/index.jsp)

进入页面后,首先需要在左侧的“导出配置分组区”点击右键菜单选择“新建分组”功能,新建完“分组”;

然后选择新建后的“分组”节点点击右键菜单选择“新建节点”进行节点新建,点击分组右侧“导出数据配置区”会显示节点信息,选择需要编辑的节点数据,点击工具栏上的“编辑按钮”弹出编辑窗口可以再编辑窗口内对节点进行编辑,如下图,(节点信息里的“唯一标识”需要在导出的时候使用)这里一个“节点”对应导出excel中的一个sheet页;

最后点击新建好的“节点”,右侧“导出数据配置区”会显示出“配置信息”,通过“新建”按钮可以新建数据配置,这里可以针对需要到出的excal数据进行简单的合并行、列等配置,也可以针对进行比较高级的数据配置。

数据集配置:点击 “导出数据配置区”工具栏中的“管理数据集”按钮,页面弹出“数据集信息”配置页面:

数据集的分组和节点新建在左侧“数据集挂接区”进行,操作方式类似“导出数据”的分组和节点新建。新建完后点击“节点”右侧“数据集配置区”会显示配置页面

配置信息的“sql的map ID”需要起唯一名称以供选择,“sql内容”根据实际的需求配置正确的sql语句即可,“sql中提供的可选列”是“sql内容”的查询结果或是其中的一部分,配置完后点击“保存”按钮进行保存。

配置完“数据集配置”后,可以在excel的数据配置页面中的“关联数据集”字段选择配置好的“数据集配置”的字段“sql的map ID”,“绑定数据集的对应列”字段选择“数据集配置”的字段“sql中提供的可选列”(这里需要手动填写)。配置效果如下:

第二步:代码的调用:

var form = $("<form>");

form.attr('style', 'display:none');

form.attr('target', null);

form.attr('method', 'post');

form.attr('action', "http://127.0.0.1:9000/sgpms/pmsframework/rest/excel/download/");

                      

/**

*这里的“confid”指的是配置中的节点信息的唯一标识,请在配置页面中获取

**/

var hideInput = $('<input>');

hideInput.attr('type', 'hidden');

hideInput.attr('name', 'params');

hideInput.attr('value', JSON.stringify({sheet:[                                                                  {sheetname: "1",confid:"8a9fdc3d46a2611b0146a28bdf800008"},                                                                     {sheetname: "2",confid:"8a9fdc3d46a2611b0146a28bdf800008"},                                                                  {sheetname: "3",confid:"8a9fdc3d46a2611b0146a28bdf800008"},                                                               {sheetname: "4",confid:"8a9fdc3d46a2611b0146a28bdf800008"},                                                            {sheetname: "5",confid:"8a9fdc3d46a2611b0146a28bdf800008"}]}));

form.append(hideInput);

                      

var hideInput_fn = $('<input>');

hideInput_fn.attr('type', 'hidden');

hideInput_fn.attr('name', 'fileName');

hideInput_fn.attr('value', "文件名称");

form.append(hideInput_fn);

                      

form.bind("onsubmit", function(e){ window.open('about:blank', "_self"); });

$('body').append(form);

form.trigger("onsubmit");

form.submit();

form.remove();

 

 

2.37   流程分级过滤方案维护页面

2.37.1 功能说明

     在流程配置中,每一个环节都有参与人,但是没有对这些参与人进行过滤。流程分级过滤方案维护页面,可以通过配置流程中各环节的分级过滤方案,从而解决过滤参与人的问题。例如有一个流程,B环节配置的按所属地市方案过滤,则在发送给B环节的时候,B环节的参与人只能选择所属地市下的参与人。

2.37.2 功能截图

注:过滤类型为流程环节参与人的过滤条件

2.37.3 使用说明

  维护页面URL:http://IP:端口号/sgpms/pmsframework/workflowfilter/index.jsp

2.38   甘特图控件

2.38.1 使用说明

在页面中根据需要使用甘特图组件

var restUrl ="~/mxpmsdemo/rest/examemp/gantt"; //路径为自已模块的Rest服务路径

        /* 初始化 EntityContainer */       

var gridEntityContainer =new mx.datacontainers.GridEntityContainer({

            baseUrl : restUrl

        });

/*提供一个ganttGrid组件*/

var gattGrid =new mxpms.datacontrols.GanttGrid({

              entityContainer: gridEntityContainer,

              columns:[{name:"text", tree:true, width:'*' },

                                 {name:"start_date", align:"center" }/*,

                                     {name:"end_date", align: "center" ,width:'*'}*/],

                  columnWidth :250,

                  readOnly:false,

           containerid:"_test", //设置控件容器的ID,即命名,可以随意

              scale:"W"

        });

gattGrid.load();

GanttGrid的属性列表如下:

名称

说明

height

参见 Control 的 Control.height 属性。

width

参见 Control 的 Control.width 属性。

entityContainer

获取一个 EntityContainer 对象(通常是 GridEntityContainer 类型),表示表格的数据源。 请使用 setEntityContainer 方法设置该字段的值。

pageNaviBar

获取一个 PageNaviBar 对象。 表示当前 GanttGrid 的分页工具条。

chart

获取甘特图的对象

baseUrl

请参见 EntityContainer.baseUrl 属性。如果 GanttGrid 的 entityContainer 由外界创建,那么

该属性不需要设置; 否则需要设置该属性的值。

readOnly

获取或设置甘特图是否只读,默认为否

columns

获取或设置甘特图左边的列展示

[{name:"text", tree:true, width:'*' },       {name:"start_date", align:"center" },

{name:"end_date", align: "center" ,width:'*'}]

columnWidth

获取或设置甘特图左边列的总长度

scale

获取或设置甘特图的刻度

T为时间;D为天展示; M为月展示;W为周展示;Y为年展示。

scalestep

获取或设置刻度的间隔

nowTime

设置总时间刻度的当前时间

statDate

设置总时间刻度的开始时间

endDate

设置总时间进度的结束时间

filer

获取或设置表格的过滤条件。请使用 setFilter 方法设置该字段的值。

GanttGrid的订购事件列表如下:

onbeforeDetal

当双击任务条的时候,将触发该事件

参数 {task:task,cancel:false} 对象,即将被选择的项。

 cancel :true 时不弹出默认的

onbeforeTaskChanged

当任务移动改变前的时候,将触发该事件

参数 {task:task,cancel:false} 对象,即将被选择的项。

 cancel:true 关闭移动控制的

onafterTaskDrag

当任务移动改变后的时候,将触发该事件。

参数{task:task}对象,即被选择移动的项。

GanttGrid的主要方法列表如下:

setEntityContainer(p_entityContainer)

设置数据源

load

加载甘特图控件

getData

获取所有的task数据JSON数组[]

getChangeData

获取甘特图中发生变化的数据JSON数据[]

updateTask (p_id,startDate,endDate)

更新制定ID的任务的计划开始时间和结束时间

getTaskbyID (p_id)

通过ID获取任务信息

save

将变化的数据发送到服务器保存

Rest路径对应entityContainer.baseUrl + "/save"

setScaleunit (p_scale,p_step)

设置界面刻度和间隔

setPageSize (p_pageSize)

设置页面数量

 setFilter

设置 filter 字段的值

2.38.2 功能展示

默认的甘特图

刻度为年的甘特图

刻度为月的甘特图:

刻度为周的甘特图:

刻度为时间的甘特图:

2.38.3 注意事项

1、引入公共组件甘特图数据处理实体类

import  com.sgcc.pms.framework.base.entity.gantt.GanttNode;

属性介绍如下

/**

     * 节点ID

     */

    private Stringid;

   

    /**

     * 列节点文字

     */

    private Stringtext;

   

    /**

     * 任务长度(天数)可为空

     */

    private int duration;

   

    /**

     * 任务进度可为空

     */

    private float progress =1f;

   

    /**

     * 父任务ID有分组关系的必须录入

     */

    private Stringparent;

   

    /**

     * 是否默认打开

     */

    private boolean open;

   

    /**

     * 任务开始时间

     */

    private Datestart_date;

   

    /**

     * 任务结束时间

     */

    private Dateend_date;

   

    /**

     * 子任务列

     */

    private List<GanttNode>childNodes;

   

    /**

     * 任务条的内容

     */

    private Stringcontent;

 

 

2、服务端查询Rest服务的构建。开发者默认可以复制平台自动生成的query方法。

    @RequestMapping("/gantt")

    public @ItemResponseBody

    QueryResultObject queryGantt(@QueryRequestParam("params") RequestCondition params) {

        QueryResultObject queryResult = empsBizc.query(params);

        //测试Bean

        List<ExamEmp> result = queryResult.getItems();       

        List<GanttNode> allList = new ArrayList<GanttNode>();

//result转化为allList

         ….

queryResult.setItems(allList);

        return queryResult;

}

 

4、服务端保存Rest服务的构建

@RequestMapping(value = "/gantt/save", method = RequestMethod.POST)

    public @ItemResponseBody

List<GanttNode> saveGantt(@ItemsRequestBody List<Map> list){

     //…保存逻辑处理

}

 

2.39   Word模板读写

2.39.1 功能说明

 业务组通过读取特定的Word模板,传入文件流、实例数据给本接口方法。通过一定的逻辑处理,将数据写入Word文档中输出字节流。如图所示:

2.39.2 功能截图

模板示意

转义后的文档示例

注意:示例中只转义部分数据。并非完整的转义。

2.39.3 使用说明

 

String srcPath = "模板文件路径";

HashMap map = newHashMap(); //传入的数据源

map.put("qxdbh", "02");

map.put("sfqrgzdd", "5201314");

map.put("sfdwgz","");

map.put("fxsj","2013-03-11");

map.put("sfzyyh","张三");

/********表格循环List****************/

List<Map<String,String>> tabList = new ArrayList<Map<String,String>>();

Map<String,String> mm = new HashMap<String, String>();

mm.put("qxdzt", "测试0");

mm.put("gcsj", "测试2");

tabList.add(mm);

Map<String,String> mm2 = new HashMap<String, String>();

mm2.put("djr", "s");

mm2.put("ggnr", "工作ss内容1");

tabList.add(mm2);              

map.put("qxgc",tabList); //对应的each对象

InputStream in = new FileInputStream(srcPath);

ByteArrayOutputStream bStream =

WordTransferUtil. TemplateTransfer (in, map);//公共组件提供的方法

FileOutputStream outStream =new FileOutputStream(“输出文件路径”);

outStream.write(bStream.toByteArray());

outStream.close();

 

2.39.4 注意事项

l Word模板中段落中的占位符请采用“字符+删除线”来代表占位符

l Word模板中表格中的占位符,第一行使用类似“forEach(#{qxgl}){”代表循环的开始,使用#{qxgl.qxdzt}代表单元格的占位符;第三行采用“}”代表循环结束

l 由于WORD属于非结构化的文档,第三方开源POI对于WORD的支持不稳定,模板制定时,段落中的占位符(例如:qxdbh)尽量采用完整的一次性打入或者复制。

2.40   多层分组Grid

2.40.1 功能说明

MultiGroupItemGrid组件是一个轻量级的数据展示控件,需求源自运维检修组,主要用于统计展示。可以将查询数据结果集转换为可多级分层展示的Grid,支持数据字典转换、支持多级分组。但不支持多表头和分页及编辑等功能。

2.40.2 功能截图

示例图片(数据不准确):

2.40.3 使用说明

 

var grid = new mxpms.datacontrols.MultiGroupItemGrid({

          columns: [

                     {  name: "bdzzj", caption: "变电站站址", align: "center" },

                   {  name: "ssds", caption: "所属地市", align: "center", visible: false },

                   {  name: "dydj", caption: "电压等级", align: "center", haslink: "true", visible: false },

                   {  name: "whdj", caption: "污秽等级", align: "center", haslink: "true" },

                   {  name: "sfslz", caption: "是否枢纽站", align: "center",haslink: "true" },

                   {  name: "bzfs", caption: "布置方式", align: "center",haslink: "true" },

                     { name: "zz", caption: "站址", align: "center",haslink: "true" }

                  ],

          height: "250",

          expandedAll: false,

          oncellclick: function(e) {

             alert(1);

          },

          groupBy:"ssds,dydj",

          restUrl: demos.mappath("~/rest/pmssbdbdz/")

       });

       me.vSplit.addControl(grid, 1);

       grid.load();

 

2.40.4 注意事项

1、不支持多表头、分页功能

2、需要来源于运维检修组,如有其它需求请想公共组件提交需求单

3、轻量级的数据展示控件,只提供展示功能,适用于统计结果展示

4、分组列以逗号分隔,返回结果集中必须要有该列的数据

5、展示为链接的列,请在column上添加haslink: “true”

6、不想展示的列请设置visible:”false”,可以设置一个不存在的列展示

 

2.41   前端分页树控件

2.41.1 使用说明

前端分页树控件(mxpms.datacontrols.PagedDataTree),它的使用方法和平台树控件(mx.datacontrols.DataTree)一样,但是这里有两个分页时需要用到的属性,pageSize属性是指每次查询节点的个数,默认为展示1000条节点,allLoad属性是指采用客户端分页方式或服务端分页方式,默认为false服务端分页方式。

当进行客户端分页时,是对所有查询出的节点进行分页;而进行服务端分页时是对每一种节点类型进行分页。

me.treeView = new mxpms.datacontrols.PagedDataTree({

          baseUrl: mxpms.mappath("~/rest/pmstreeservice/tree/" + me._treeId),

          displayCheckBox: false

        });

2.41.2 功能展示

点击“…更多”会加载更多节点。

2.42   树节点的模糊查询定位控件

2.42.1 使用说明

树节点的模糊查询定位控件(mxpms.datacontrols.TreeSearchBox),它的使用方法和表格查询控件(SearchBox)类似,但是这里有两个使用时必须要设置的属性,tree属性是指页面中需要模糊查询定位的树控件(可以支持公共组建组提供的分页数控件PagedDataTree,或是其他业务组自己拓展的树控件), treeId属性是指业务树在配置页面获取的树id,如下表格中的_treeId。

Var treeView = new mxpms.datacontrols.PagedDataTree({

          baseUrl: mxpms.mappath("~/rest/pmstreeservice/tree/" + _treeId),

          displayCheckBox: false

        });

var treeSearchBox = new mxpms.datacontrols.TreeSearchBox({

          tree: treeView,

          treeId: _treeId

        });

因为需要反向搜索树节点的路径,使用前需要在业务树配置页面添加配置(反向sql)。如下图:

当节点类型是实体和动态分组时(通过sql语句查询的节点),需要配置。配置如:SELECTobj_id,mc FROM  mwt_ud_pd_sb_rh_yxwz  where yxdw='{0}'  and mc like '%{mc}%'

语句中的“obj_id,mc”是节点的主键和名称(一般情况就是绑定值配置的字段),语句中的“{0}”是上级节点的唯一主键(和过滤条件中的“{0}”意思相同)。

目前语句中必须要加上类似“   mc like '%{mc}%'   ”的节点名称模糊查询条件。

当遇到分组节点、单位(组织机构相关)节点时不需要配置。

功能展示

操作步骤:

1首先选择需要查询的节点的父节点(因为考虑性能,和查询的准确性),

2然后在输入框中输入需要查询的节点名称(支持模糊查询)。

如果有查询结果,会再下拉框中显示出模糊查询的结果集(如下图),

3最后点击需要定位的节点,控件将自动展开节点,并定位到查询结果处(如下图)。

 

2.43   人员部门维护页面新

2.43.1功能说明

ISC人员组织维护新页面,功能同旧版的人员部门维护页面一样,是用了管理生产运维库中的部门表和人员表,并且包含了手工同步ISC人员和部门数据的功能。

1、与旧版的人员部门维护在界面布局上有所不同,最左侧是ISC业务组织机构树,与ISC统一权限平台中的业务组织单位维护树保持一致。中间为扩展到本地的业务组织机构树,其内容是需要同步ISC业务组织后才会有,初始数据需要点击ISC业务组织机构树,右键点击“同步组织”实现。

2、与旧版功能上不同主要是原有的人员组织同步功能拆分为同步组织、同步人员、同步扩展字段三个功能及日志记录功能,便于错误排查。

人员扩展表:SCYW.ISC_USER_LOCEXT

部门扩展表:SCYW.ISC_SPECIALORG_UNIT_LOCEXT

ISC人员部门维护页面:

http://ip:端口/uap项目/pmsframeworkisc/orgusermain/index.jsp

 

人员部门维护的同步设计,请看当前SVN目录的“PMS2.0部门人员扩展表与ISC同步概要设计.doc”

2.43.2使用说明

维护页面的左侧为ISC业务组织单元树,中间是组织机构扩展信息树,右侧为对应的下级部门信息和人员信息。

1、点击ISC业务组织单元树,右键“同步组织”按钮,将同步指定的业务组织和它的下级所有业务组织;ISC组织机构同步后在组织“人员扩展信息区域”的本地扩展业务组织树右键点击“同步人员”,同步指定业务组织及其下级所有组织下挂的人员信息。注意:同步好人员信息后维护组织的“单位级别”的值,维护好以后在扩展业务组织树右键点击“同步扩展字段”,同步“所属地市”、“所属供电公司”、“所属网省”、“组织路径”、“所属运维单位”等字段的值。

2、 

部门的DataGrid可以维护管理级别和单位级别等特殊字段,以方便同步功能字段计算出管理单位和某具体单位。这部分功能主要是现场维护人员负责,但由于目前开发人员在使用,所以自己维护。

2.43.3注意事项

1、这部分功能主要是现场维护人员负责,需要现场人员维护单位级别、管理级别等单位,以方便获取到相应的数据,注意组织机构扩展表中的单位级别字段(此字段为扩展字段)一值不能为空,单位级别的值如下表:

级别编号

级别名称

1

国家电网公司

2

分部

3

省(自治区、直辖市)电力公司

4

地市供电单位(含超高压公司等)

5

县级供电单位

6

供电分局

801

输电班组

802

变电班组

803

配电班组

804

输变配一体化班组

2、同步以后的数据单位级别小于等于5的组织机构才会在设备台账中展示。

3、确保ISC的物化视图都有或正常使用,检查7张非常重要的物化视图是否丢失或失效,视图详细信息如下表:

序号

视图中文名称

视图名

备注

1

用户角色关联视图

getUsersBySpOrgId_MView

 

2

应用系统业务组织单元业务组织关联视图

getSpOrgCodeBySpOrgId_MView

 

3

用户角色业务组织单元关联视图

getUsersByOrg_MView

 

4

用户角色关联视图

getUsersByOrgRole_MView

 

5

用户应用系统角色关联视图

getUserOrgPathByUserId_MView

非常重要,若丢失同步获取人员信息就会不完整或获取不了。

6

用户角色角色分组关联视图

getUserByAppId_MView

 

7

创建基准组织业务组织单元关联视图

getBaseorgBySporgId_MView

 

 

4、确保ISC系统中的资源管理-业务组织维护-业务组织单元维护界面中的组织单元性质(值为:单位、部门、班组...)该值不能为空,且确保业务组织维护界面中的组织单元编码不为空,否则会造成人员组织同步时,部分数据同步失败,如SSBMID字段值。

5、所属运维单位取值逻辑是根据部门ID向上递归,直到找到单位级别为“3(省公司),4(地市公司),5(县级供电公司),6(供电分局)”或者专业性质等于“检修公司”的部门ID,作为该部门的所属运维单位。

 

3   建表语句

0 0
原创粉丝点击