|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
Teamcenter二次开发实例教程-报表开发教程
' z& { j* m( i$ M/ a" I4 ~' t0 d* r s. f; j% H( o; V
在大多数情况下,我们为客户做实施时,采用的是重新开发报表的功能。以满足客户多种多样的报表模板。然而Teamcenter8,9对报表开发有不错的支持。我们可以通过简单的配置开发出功能强大的报表。本文就Teamcenter OOTB报表技术展开讨论,希望能在众多报表开发方法中再增加一种可能性。
8 C) R, A: \ b 下面我对两类报表开发方式优缺点做了个简单对比: o: ~ m6 l) F* X1 F! R+ z% u
; N7 Q# o/ P0 ~+ s
传统报表开发手段& V9 N1 l' R8 f" X( u
OOTB报表) P- ^6 Y* R6 Q
比分
: q7 n$ L& n+ u1
$ [% }1 U) o+ \1 F自定义模板,灵活多变2 i! U8 T5 i- N9 S: k3 O8 N- ~
格式不能完全满足客户需求
n! w/ ~8 D+ |- C4 g( i) Q; ^; s或非常难满足客户需求* m8 T) s) h6 N$ J/ w
1:03 C4 |3 ?. C- q9 `: w3 r
2+ Z9 G9 M3 _: l- r
大量开发和代码维护
! r0 Z4 k; N" o: [8 J( E" E3 R或用POI,Excel报表
8 [& v. h B( B开发量小,仅需简单配置 x+ j3 h) D1 x9 R3 s3 q# u
1:1$ ~: {- I/ \: U0 P+ P
3# L2 {1 q- F! t1 R
遇到大数据量报表生成不了
0 L0 c4 \! W' |* s* v; `% z速度很慢
8 k- z% T2 p9 m5 Z: D7 P; Z* i处理大数据量有优势# U5 `) A1 s8 k9 u+ \% {( }8 K
速度非常快
( l1 R: l- |3 |) j8 E8 s1:2 i" o7 I+ S) r. i7 n2 ^
4! N' }( O$ x+ y' d) @5 Q' A* n g# Q
开发周期长,BUG多
2 U. p6 w( K. g: y开发迅速容易- G! y) y5 M- C, p" { }* H/ f
1:32 i0 _$ s6 c5 Z6 X. k! m" o0 u) E
; r& x: G2 }1 \一、报表生成
) m1 V& H r& T5 B7 K首先来开OOTB的零部件BOM+ }1 p! ?1 B5 W" T5 I* Y/ @
0 g$ {& D4 A$ [! b6 b8 d/ S4 }. C
右键点击顶层部件,生成报告。6 j) O$ N# v& I+ X& |
5 S% u7 b A) j$ t/ X" l ^; J' Q) B出现报告生成向导界面,选择PS – BOM结构,下一步, M3 c0 s6 \, N
?8 c( c4 C |- K8 e: Z# h6 [OOTB为我们提供了两种方式的报表:+ ]3 d& |- P- }! b& R
HTML% n9 u9 U( H1 X, o
XSL8 u- r: e+ u. i) ~4 P! g
每种报表都有对多国语言支持版本,所以下面对话框中有4个选项。我们选第一个。. F6 t. } u! g' G! |$ \- _. O6 k/ J
" C7 x) O0 i/ Q8 U
生成报表如下:
* B3 ?- v0 c" ~6 M3 }1 K, G$ S, P E m. M4 Z
2 L! r8 ?( D* m8 n* `7 d二、报表配置
0 n/ V$ L, {5 H9 V! w- V报表配置涉及两个Teamcenter应用程序:7 \5 f; P0 Y% V* K0 s5 C
报表构建器8 ?; ]) T, q7 y3 F- o
PLMXML
) B+ Z. M' I9 g1 |8 S报表构建器主要定义报表所应用的资源、模板文件和PLMXML导出规则
: z3 u" Z0 z! `4 L
: P. h5 T; _3 I# t4 nPLMXML主要负责以PLMXML格式导出BOM数据
$ ^. r4 ]! S6 g' t( d _
6 d6 J+ D4 l1 \0 s 4 H5 B7 _( b4 r9 n5 h
三、应用举例 K5 m6 Q# [0 O% ]2 E0 r, H+ r
下面对于一个具有广泛统计意义的功能用OOTB报表方式来实现。需求是:统计零件在整个BOM中的使用次数。0 y6 v2 b) h" R7 k+ x! z, p8 B
对于这个需求我们只需要增加一段带计算功能的代码就能实现。先通过系统的搜索功能找到html报表模板文件。' i' {+ l( @1 O, M& s' |
" y( P6 Z7 b% t) }% [/ K' Y选中找到的数据,右击,命名引用。
! Q9 K, r: n6 m- _, S; f* ^: R5 a5 I* e; t
点击导出,把模板保存到本地。
% h8 z; a$ t& q& `5 d( L! `3 R4 w9 t; _
下面对Javascript有一定要求。1 I0 N& g* L* N: B, v0 H0 R3 @: x
首先对表格增加一列来容纳计算的总数量:, `8 \4 f! j c& R( \* m0 N
) ^3 ]3 X' ~# H) y$ r; A; e" N. l
在xsl中找到上面两处代码增加、修改红框部分。- @+ u6 {/ H6 ~: v8 |
定义如下函数,并且在onload事件中调用8 m4 d; p4 k7 D9 U! b- |4 I
function showPart(){
0 w2 [# r3 x) }, `; x4 ?( d$ W8 R//获取html的表格对象
2 _0 U! L/ f0 V' V3 X, a$ i0 J |# gvar tb = document.getElementById("table");% C& z# o5 h( E1 m
//获取表格行对象
2 c: m1 l( }* X# j" h, Gvar rows = tb.rows;( A$ ~! J3 E v! l/ _" v
//循环遍历table所有行& d3 E7 b: y% s# k
for(var i = 3; rows.length>i; i++){: e" s; k+ V& `$ ^% s
//获取每一行的零件号0 K7 D$ _2 g: S/ P. `
var itemName = rows[i].cells[1].childNodes[0].innerHTML;- {9 d+ g! d. i- Y
//初始化零件总个数
- w6 ]! E% o# u u' Uvar quantity = 0;) @4 z G& ^0 R- X* ^. s
//循环进行比较! F% f$ R$ r t3 Y1 b
for(var n = 3; rows.length>n; n++){
9 u. e. @& _0 X Z//获取每一行的零件号
) ]- |7 [/ I& Dvar itemStr = rows[n].cells[1].childNodes[0].innerHTML;
. G) M1 Y/ Z* C+ [. v" D5 P6 k9 X; O//获取零件数量
% a7 `9 w3 I" @& ~' ]& Evar qt = rows[n].cells[4].childNodes[0].innerHTML;& X& d+ g, b/ n- G% f# [$ U9 L8 _
//判断是否是相同的零件
& w+ n4 _( r3 y( L. B& c2 \8 mif(itemStr == itemName){4 O, F3 e* t9 M) b
//若零件号相同,把数量进行累加2 k; R: y0 _, W! V( |- @0 k7 [
quantity = parseInt(quantity) + parseInt(qt);# H |3 n% {$ r
}$ P. k# c' ~% N- g( H% W# J! i: u
}- y7 k1 s: J3 t8 ^4 o* N
//在统计列显示总数量. N# p0 z# B n7 ~' n* p- q4 I# g& x
rows[i].cells[5].childNodes[0].innerHTML = quantity;! V; C7 q9 f$ g& W+ i
}
' v- B+ D! H! W. [+ B( E# f' S}5 l; |) T( \. l* X7 h
修改好后,保存回源数据集。注意先删除原来的再导入新的。' Z- t* D" U r4 v
$ i5 f- c" c4 H- H5 u
k' M: n0 T. ^0 n9 x. ]4 U5 a重新生成报表测试下:4 X3 M& I, y( ~8 X3 L8 c& r
|
|