NC客户化开发手册初级篇1.docx

上传人:b****4 文档编号:24532691 上传时间:2023-05-28 格式:DOCX 页数:26 大小:62.77KB
下载 相关 举报
NC客户化开发手册初级篇1.docx_第1页
第1页 / 共26页
NC客户化开发手册初级篇1.docx_第2页
第2页 / 共26页
NC客户化开发手册初级篇1.docx_第3页
第3页 / 共26页
NC客户化开发手册初级篇1.docx_第4页
第4页 / 共26页
NC客户化开发手册初级篇1.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

NC客户化开发手册初级篇1.docx

《NC客户化开发手册初级篇1.docx》由会员分享,可在线阅读,更多相关《NC客户化开发手册初级篇1.docx(26页珍藏版)》请在冰豆网上搜索。

NC客户化开发手册初级篇1.docx

NC客户化开发手册初级篇1

NC客户化开发手册

本手册是北京齐力创辉科技发展有限公司(TTS)内部培训资料,只限于公司内部应用,任何人未经过书面许可不得扩大本教程的使用范围。

严禁任何非法传播、翻印或仿制,违者必究!

©本手册的著作权属于北京齐力创辉科技发展有限公司

前言

目录

前言1

第一章规范篇2

1.1代码规范2

1.2注释规范2

1.3异常规范2

1.4其他规范2

第二章基础篇3

2.1单据信息3

2.1.1获取卡片和列表容器(Panel)3

2.1.2当前界面卡片/列表状态3

2.1.3获取/设置当前单据的操作状态:

3

2.1.4获取选择的树节点3

2.1.5是否单表体3

2.1.6设置单据卡片表头区域比例3

2.1.7设置表体页签状态3

2.1.8获取单据模板上定义的所有字段3

2.2VO的获取和赋值及更新3

2.2.1VO的获取3

2.2.2VO的操作4

2.3字段处理5

2.3.1表头字段值5

2.3.2表体字段值5

2.3.3字段设置可编辑:

5

2.3.4隐藏字段5

2.3.5设置数度5

2.3.6设置字段焦点6

2.4公式6

2.4.1执行、设置公式:

6

2.4.2公式解析器:

6

2.5单据行操作6

2.5.1获取表体选择行6

2.5.2删除表体的自动排序6

2.5.3行编辑状态:

6

2.5.4选中表体所有行6

2.5.5列表下,表头行可多选的实现7

2.5.6行操作(删除,增行等)7

2.6获取系统相关7

2.6.1常量的获取(公司,操作员,时间)7

2.6.2单据号的获取7

2.7程序健壮性及易用性8

2.7.1单据保存时强制调用非空验证方法:

8

2.7.2弹出消息框代码:

8

2.7.3在编辑事件中常用的判断8

2.7.4设置表体没有右键菜单方法8

第三章高级篇8

3.1审批流8

3.2后台预警8

3.3后台任务8

3.4消息8

3.5错误定位(日志分析)8

第一章规范篇

1.1代码规范

1.1.1程序中代码规范

1.1.1.1常量命名

所有的字符都必须大写。

采用有意义的单词组合表达,单词与单词之间以“_”下划线隔开。

命名尽量简短,不要超过16个字符。

程序开发中最好不要直接对literal进行工作,最好引入常量方式应用;只有在特别的情况下才能使用,如在for循环中初始化变量时可直接用-1,0,1这些常量。

例如:

publicfinalintMAX_SIZE=120;

publicfinalintMAX_WIDTH=100;

publicfinalStringPROPERTY_NAME="menu";

1.1.1.2变量命名

变量的命名包括实例变量,静态变量,函数参数的命名。

避免在命名中采用数字,除非命名意义明确,程序更加清晰,对实例变量的命名中不应该有数字。

变量名称是名词意义。

采用有符合问题域意义的单词或单词组合。

第一个单词全部小写,后续的每个单词采用首字母大写,其余小写(特殊单词除外,如URL)。

命名尽量简短,不要超过16个字符。

除了生命周期很短的临时变量外,避免采用单字符作为变量名,实例变量的命名不要用单字符。

常用的单字符变量如整型用i、j、k、m、n字符型用c、d、e,坐标用x、y、z。

在某些情况下,变量可能需要加上类型前缀,所有的类型前缀必须是小写,他与变量名称的实体部分没有任何间隔,实体部的每个单词都是首字母大写,其余字母小写(特殊单词除外如URL),类的全局变量强烈建议使用,一般的类型前缀如下:

类型前缀

类型

例子

b

Boolean、boolean

bsingle

f

浮点数

fsize

d

UFDouble

dmoney

dt

Date

dtToday

c

Character,、char

cinput

obj

OBJECT变量

ObjUser

str

字符串(String,StringBuffer)

strFileName

i

整型数

iCount

ary

数组

aryName

conn

连接

ConnActiveConnection

stmt

Statement

StmtFindUser

rs

Resultset

RsUsers

al

ArrayList

alData

map

Map

map_key_value

set

Set

setValue

col

Collection

colNames

msg

消息

msgText

err

错误

errCode

btn

按钮

btnSubmit

不在特别的情况下,Java中不推荐采用前缀,而是推荐保持名称的语义

例如:

publicintwidth;

publicStringfileName;

publicstaticApplicationContextcontext;

1.1.1.3方法、类和接口的命名和规范

命名多数为动词结构。

采用有符合问题域意义的单词或单词组合。

第一个单词采用小写,后续的每个单词采用首字母大写,其余小写(特殊字除外如URL),没有特别理由不用下划线作为分隔符。

一般功能性的方法不允许方法的代码长度超过200行,如果方法实现逻辑比较复杂就拆分类若干个小方法,每个方法添加功能注释。

一个类文件最好不要超过2000行。

1.1.1.4包的命名

采用逻辑上的层次结构,从而减少依赖。

Ø产品模块对外的接口定义放在nc.itf.模块名.xx。

Ø服务的实现类nc.impl.模块名.xx。

Ø后台业务类代码nc.bs.xx。

Ø值对象命名:

nc.vo.模块名。

ØUI层命名:

nc.ui.模块名。

Ø命名简短,常采用缩写。

Ø包名所有字符都为小写。

Ø不要用java,javax作为自定义包的前缀。

1.1.2数据库设计规范

1.1.2.1sql书写规范

1)SQL语句全部使用小写。

2)连接符或运算符or、in、and、=、<=、>=,+,-等前后加上一个空格。

3)严禁使用select*…….形式的语句,必须指出select的具体字段,即selectcol1,col2,…fromtableawhere…。

★。

4)严禁使用insertintotablevalues(?

?

?

),必须指出具体要赋值的字段,即insertintotablea(col1,col2,…)values(?

?

…)。

5)SQL语句包含多表连接时,建议对每个表命名别名,对每个字段的使用都要带上表别名,即selecta.col1,a.col2,b.col3fromtableaa,tablebbwherea.col4=b.col5。

1.1.2.2性能规范

1)在进行多条记录的增加、修改、删除时,建议使用批处理功能,批处理的次数以整个SQL语句不超过相应数据库的SQL语句大小的限制为准。

2)禁止使用or超过500,如xx=’123’orxx=’456’,禁止在SQL语句中in中的元素个数在50以上。

3)禁止在一条SQL语句中使用3层以上的嵌套查询,如果有,请考虑使用临时表或中间结果集。

4)如果有多表连接时,应该有主从之分,并尽量从一个表取数。

1.1.2.3数据库字段级表名的命名规范

模块名称规则表,一般数据库表设计的前缀默认采用以下规则,以下表的详细信息请参考NC规范中的NC产品形态文档:

模块名称

系统规则名

模块名称

系统规则名

模块名称

系统规则名

UAP

系统管理

sm

UAP

pub

财务会计平台

dap

基础数据

bd

外部交换平台

xx

管理会计平台

dmp

报表&BPM

报表

iufo

BI平台

bi

BPM

bpm

财务

总账管理

gl

收付报

arap

固定资产

fa

存货核算

ia

项目成本

jc

资金

资金结算

fts

资金监控

fvm

资金计划

fp

票据管理

fbm

信贷管理

fi

资金预测

fi

资金计息

fi

网上银行

ebank

预算

预算管理

ntb

人力资源

人力资源规划

HRP

职务职能管理

OM

员工信息管理

HI

招聘甄选管理

RM 

员工调配管理

HI

员工离职管理

HI

政策制度管理

HRPM

劳动合同管理

HRCM

培训开发管理

TRM

考勤管理

TBM

出差管理

HRBT

休假管理

HRLM

加班管理

HROM

绩效管理

PE

薪酬管理

WA

福利管理

BM

经理自助

MSS

基础设置

HR

人力资源取数函数

RPT

员工自助

ESS

 

 

供应链

采购管理

po

销售/分销管理

so

库存管理

ic

销售价格

prm

内部交易

to

供应商管理

vrm

合同管理

ct

委外加工

sc

发运管理

dm

供应链公共

scm

制造

设备管理

fm

成本管理

cm

制造基础数据

pd

需求管理

mm

生产计划

mm

生产定单

mm

车间作业

sf

能力计划

crp

装配计划

mm

检修管理

er

质量管理

质量管理

qc

其他

cdm

pm

2)所有表、视图、触发器、索引、函数、约束、主外键必须指定名称,规则如下:

对于各种数据库对象的命名规则,目前的NC系统中存在两种风格,采用拼音和采用英文的,目前这两种规范都可以,但是注释一定要清楚。

数据库对象

规则

最大长度

例子

系统规则名_名称

18

sm_firm

字段名

18

acc_code,acc_name

视图

v_系统规则名_名称(*)

18

ac_accsub

触发器

t_表名_名称(*)

18

t_firm

函数

f_名称

18

f_fun()

Check

ck_表名_字段名(*)

18

ck_gl_accsub_code

主键

pk_表名

18

pk_gl_accsub

外键

fk_表名_字段名(*)--此处超过18位处理

18

fk_gl_vouch_accsub_code

索引

i_表名_字段名(*)

18

i_gl_accsub_code

表空间

ts_名称

18

ts_sys

(*)注:

由于数据库对象之间的命名规则与最大长度限制可能造成命名存在冲突。

如存在,可以通过缩减表名或字段字符来实现;

1)所有的外键、约束、索引、函数、触发器、存储过程名不允许重复;

4)业务中主子表的命名规则:

系统规则名_名称或主表:

系统规则名_名称_h子表:

系统规则名_英文名称_b。

5)业务中主子子表的命名规则:

主表:

系统规则名_英文名称_h

子表:

系统规则名_英文名称_b

子子表:

系统规则名_英文名称_bs

1.1.2.4业务数据类型规范

类型

规则(使用SQLServer描述)

编码类

字符型。

依据规则确定用char还是varchar。

名称类

字符型。

依据规则确定用char还是varchar。

布尔类

Char

(1),Y/N

状态类

Smallint,用0,1,2,3……表示

级次类

16位整型Smallint

金额类

精确数值型,一般为decimal(20,8)

大金额

32,10

系统标识类

估计可能最大值<32,767:

16位整型smallint

估计可能最大值>32,767:

32位整型smallint

摘要备注类

可变字符型。

需要定义几种:

200,1000

价格数量类

精确数值型,一般为decimal(20,8)

单价类

精确数值型,一般为decimal(20,8)

比率类

精确数值型,一般为decimal(20,8)

3)不要用SQL保留字来命名表、视图、字段、索引。

数据库的保留字见各数据库厂商规范;

4)字符型字段的确定。

长度固定用char,不固定用varchar;

5)不要将Null与空串“”视为相同。

在不同的数据库中对这两者的理解是不相同的。

Oracle中空串与Null理解一样。

如果碰到这种情况统一用Null;

6)空值问题:

所有经常用来做为查询条件的字段都不允许使用空值,引用基础档案的,在基础档案增加表示空值的档案,其他使用N/A表示。

1.2注释规范

1.2.1类、方法注释

类、方法开始必须要加上注释,标注方法或者类的用途、作者、时间。

如果是方法注释必须加上方法的参数说明(注释每个参数代表的实际意义),

1.2.2主要算法注释

算法描述指在实现级别的描述注释,如在方法内的注释,对类实现的注释,这样使得程序更加易懂,方便程序算法的修改和BUG的修复。

一般采用块/行注释,对于简短的描述采用行注释,不要用文档注释。

注释的主要内容包括:

1)某些局部变量的意义和用途;

2)复杂的控制结构的注释,如循环、分枝、条件表达式,说明控制所要达到的目标;

3)复杂的代码段的描述,说明代码完成的功能,以及为什么这样做。

1.2.3修改原有产品或者其他人代码注释

如果是修改产品或者其他人代码时必须加上注释

1)如果是单行修改代码,注释要加上修改的目的、时间、修改人。

例如:

//editby张三增加此行代码目的2012-03-05

2)如果是块修改代码必须在要修改的代码开始和结尾做标记

例如:

//editby张三增加参照入库单生单的额外条件2012-03-05begin

中间部分添加修改的代码块

//editby张三增加参照入库单生单的额外条件2012-03-05end

3)如果是单行增加代码,注释要加上增加的目的、时间、修改人。

例如:

//addby张三增加此行代码目的2012-03-05

4)如果是块修改代码必须在要修改的代码开始和结尾做标记

例如:

/addby张三增加参照入库单生单的额外条件2012-03-05begin

中间部分添加修改的代码块

//addby张三增加参照入库单生单的额外条件2012-03-05end

1.2.4整体代码注释

比较长的代码,规定必须每行或者每隔一行必须有逻辑上的注释(即:

代码思路的注释)。

1.3异常规范

1.3.1代码中异常处理

代码中异常处理必须遵循NC平台的异常处理,禁止在自己写的方法中进行异常的扑捉、打印异常信息,如果在自己的代码中必须做异常的处理的话就进行异常的throw,由最外层的异常捕获机制进行捕获和用户的交互。

1.4其他规范

1.4.1SVN使用规范

1)SVN服务器的使用规范,每个人必须使用自己的用户,每天早上上班时进行代码的更新,每天下班前对已经完工的功能进行代码的提交。

2)代码在提交前必须先进行更新,预防自己本地的代码覆盖他人并发修改的代码。

1.4.2数据库服务器使用规范

在还原用户数据库到服务器上时,如果客户的数据库文件超过5G,必须建立单独的实例。

如果不超过5G就可以还原到公用的orcl实例中。

第二章基础篇

2

3

3.1单据信息

3.1.1获取卡片和列表容器(Panel)

☞卡片

UI端:

getBillCardPanelWrapper().getBillCardPanel()或者getBillCardPanel()

EventHandler:

getBillCardPanelWrapper().getBillCardPanel()

☞列表

UI端:

getBillCardPanelWrapper().getBillListPanel()或者getBillListPanel()

EventHandler:

getBillCardPanelWrapper().getBillListPanel()

3.1.2当前界面卡片/列表状态

getBillManageUI().isListPanelSelected()

3.1.3获取/设置当前单据的操作状态:

getBillUI().setBillOperate(intnewBillOperate);

getBillUI().getBillOperate()

3.1.4获取选择的树节点

getBillTreeCardUI().getBillTreeSelectNode();

getBillTreeCardUI().getBillTreeSelectNode().getData();

3.1.5是否单表体

isSingleDetail()true:

为单表体;false:

为单表头;(在校验类里)

3.1.6设置单据卡片表头区域比例

((nc.ui.pub.bill.BillCardLayout)getBillCardPanel().getLayout()).setHeadScale(80);

3.1.7设置表体页签状态

☞显示状态:

getBillCardPanel().getBodyPanel("").setVisible(false);

☞可用状态:

getBillCardPanel().getBillModel("subbillb").setEnabled(false);

☞获取当前页签编码:

getBillCardPanelWrapper().getBillCardPanel().getCurrentBodyTableCode()

3.1.8获取单据模板上定义的所有字段

nc.vo.pub.bill.BillTempletBodyVO[]tbodyvos=

(nc.vo.pub.bill.BillTempletBodyVO[])billCardPanel.getTempletData().getChildrenVO();

3.1.9列表启用表头多选对话框

getBillListPanel().setParentMultiSelect(true);

3.2VO的获取和赋值及更新

3.2.1VO的获取

3.2.1.1getBufferData():

EventHandler中可以直接调用,可以获取单据对应的缓存数据,getBufferData().getCurrentVO()卡片下为获取当前单据的VO对象,列表下则为获取当前选择行的VO对象。

UI类当和EventHandler类在同一个包下时,也可以直接调用该方法。

当UI类与EventHandler类不在同一个包下时,可以通过getManageEventHandler()获取EventHandler对象,然后再调用EventHandler的getBufferData()获取缓存数据。

3.2.1.2界面取值

☞得到单据表体当前被选中的VO:

getBillCardPanelWrapper().getSelectedBodyVOs();//如果没有被选择的行那么返回NULL

☞从界面上得到VO

getBillCardPanelWrapper().getBillVOFromUI();//得到界面上全部数据的VO

getBillListWrapper().getVOFromUI()//被选择行的VO

☞得到界面变化数据的VO

(ClientUI)getChangedVOFromUI()或者getBillListWrapper().getChangedVOFromUI()

3.2.1.3通过VO的className

☞卡片

getBillCardPanel().getBillData().getBillValueVO(billVOName,headVOName,bodyVOName)

getBillCardPanel().getBillData().getBillValueChangeVO(billVOName,headVOName,bodyVOName)

☞列表

getBillListPanel().getBillListData().getBillSelectValueVO(billVOName,headVOName,bodyVOName)

getBillListPanel().getBillListData().getBillSelectValueVOs(billVOName,headVOName,bodyVOName)

getBillListPanel().getBillListData().getBillValueVO(row,billVOName,headVOName,bodyVOName)

3.2.1.4通过PK值查询

InvbasdocVOinvbasdocVO=(InvbasdocVO)HYPubBO_Client.queryByPrimaryKey(InvbasdocVO.class,pk_inv);

3.2.2VO的操作

3.2.2.1界面VO操作

☞设置Buffer中的TS到当前设置VO:

setTSFormBufferToVO(billVO);billVO为AggregatedValueObject类型

☞得到当前VO的一个副本:

getBufferData().getCurrentVOClone()

☞刷新某一行的VO

BillManageUI.getBillListWrapper().updateListVo(hvo,selectedRows[i]);

3.2.2.2VO的数据库操作

3.2.2.2.1SuperVO

针对SuperVO,通用的方式为下面两种。

如果是特殊的单据如供应链等需要特殊的操作,不能使用下面的方法

☞前台:

HYPubBO_Client

☞后台:

BaseDAO

3.2.2.2.2(供应链)的GeneralBillHelper类

ret=GeneralBillHelper.queryBills(单据类型,(QryConditionVO)voCond);

3.3字段处理

3.3.1表头字段值

取值

☞getBillCardPanel().getHeadItem("strKey").getValueObject()

☞表头VO.getAttributeValue('"字段名");

赋值

☞表头VO.setAttributeValue("字段名",值);聚合VO.setHeaderValue("字段名",值);

☞getBillCardPanel().setHeadItem("字段名",值);

3.3.2表体字段值

获取

☞getBillC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1