NC客户化开发手册(中级篇)[1](3)

2019-06-11 10:39

/** 消息内容 */ private String m_message = null; /** 发送人PK */ private String m_sender = null;

/** 接收人pk */ private UserNameObject[] m_receiver = null; /** 发送时间 */ private UFDateTime m_sendDate = null; /** 标题 */ private String m_title = null;

/**消息优先级*/ private int priority = MessagePriority.PRI_NORMAL(另外两个常量是 PRI_LOW;PRI_HIGH); } 使用说明

该方法前后台均可使用,用于向指定的用户发送业务消息。执行效果为在消息中心的 待办事务中插入一条普通消息,双击时弹出消息内容对话框。 public class MessageTypes { /**

* 公告消息,可由任何人看到的消息 */

public final static int MSG_TYPE_PUBLIC = -1; /**

* 预警消息,预警平台产生的预警消息 */

public static final int MSG_TYPE_PA = 0; /**

* 对发消息,某人向另外一人直接发送的消息 */

public static final int MSG_TYPE_P2P = 1; /**

* 业务流消息,业务流平台产生的需要业务处理的推式消息 */

public final static int MSG_TYPE_BUSIFLOW_PUSH = 3; /**

* 业务流消息,业务流平台产生的需要业务处理的拉式消息 */

public final static int MSG_TYPE_BUSIFLOW_PULL = 4; /**

* 业务流消息 */

public final static int MSG_TYPE_BUSIFLOW = 5; /**

* 普通消息,一般的通知消息 */

public static final int MSG_TYPE_INFO = 6; /**

* 后台消息,类同于预警但又不同于预警 */

public static final int MSG_TYPE_BG = 10;

第 11 页 / 共 19 页

1.4.2 保存后推送审批流消息

//如果有审批流,则发消息

if(billstatus == IBillStatus.CHECKGOING){

PuTool.sendMessageToMen(voUI.getHeadVO().getCoperator(), //制单人 }

voUI.getHeadVO().getCapproverid(), voUI.getHeadVO().getPrimaryKey(), voUI.getVBillCode(),

ScmConst.PO_MaterialAppBill);

1.4.3 手工发送消息

String pk_wf_task = null;

// IPFMessage ipfmsg = (IPFMessage) NCLocator.getInstance() // .lookup(IPFMessage.class.getName());

// ipfmsg.insertBizMsgs(new WorkflownoteVO[] { noteVO }); UFDateTime now = new UFDateTime(new Date());

noteVO.setActiontype(WorkflownoteVO.WORKITEM_TYPE_APPROVE);

// 发送业务消息到待办事务 给制单人

WorkflownoteVO noteVO = new WorkflownoteVO(); noteVO.setBillid(parentVO.getPrimaryKey()); noteVO

.setBillno((String) parentVO

.getAttributeValue(\

String corp_user = (String) parentVO

.getAttributeValue(\

noteVO.setCheckman(corp_user.substring(5));

noteVO.setMessagenote(parentVO.getAttributeValue(\

+ \已补单。\

.getAttributeValue(\

noteVO.setPk_billtype((String) parentVO noteVO.setPk_corp(corp_user.substring(0, 4));

noteVO.setSenderman(ClientEnvironment.getInstance().getUser()

.getPrimaryKey());

+ (String) parentVO.getAttributeValue(\+ \

String sql = \

ResultSetProcessor rs = new ArrayListProcessor();

ArrayList al = (ArrayList) DBCacheFacade.runQuery(sql, rs); if (al != null && al.size() > 0) { }

Object[] ob = (Object[]) al.get(1); pk_wf_task = (String) ob[0];

第 12 页 / 共 19 页

String pk = billUpd.insertVO(noteVO);

noteVO.setIscheck(\

noteVO.setReceivedeleteflag(UFBoolean.FALSE); noteVO.setSenddate(now);

noteVO.setApprovestatus(WFTask.STATUS_Start); if (noteVO.getPk_businesstype() == null)

noteVO.setPk_businesstype(IPFConfigInfo.STATEBUSINESSTYPE);

1.5 文件操作 1.5.1 文件目录创建方法

//获得NC_HOME绝对路径

//目录如果不存在,则创建目录

java.io.File srcDir = new java.io.File(srcPath); java.io.File clsDir = new java.io.File(outPath); if (!srcDir.exists())

srcDir.mkdirs(); clsDir.mkdirs(); if (!clsDir.exists())

String nchome = RuntimeEnv.getInstance().getNCHome();

nchome = new File(nchome).getAbsoluteFile().getCanonicalFile().toString(); String moduleHome = nchome + \ + module; //System.out.println(\ //获得编译前后Java文件目录和Class文件目录 String outPath = \; if (isBSClass) else

outPath = moduleHome + \; String srcPath = moduleHome + \;

outPath = moduleHome + \;

1.5.2 单据导出

@Override

protected void onBoExport() throws Exception { ()

._getModuleCode(),((BillManageUI) getBillUI

()).getBillListPanel());

nc.ui.pub.print.PrintEntry print = new nc.ui.pub.print.PrintEntry print.setTemplateID(getBillUI()._getCorp().getPrimaryKey(),

._getModuleCode(), getBillUI()._getOperator(),

(null, dataSource); getBillUI()

nc.ui.pub.print.IDataSource dataSource = new ListPanelPRTS(getBillUI

第 13 页 / 共 19 页

getBillUI() }

.getBusinessType(), getBillUI().getNodeKey());

ScmPrintTool.exportExcelByPrintTemplet(print,null);

1.6 脚本 1.6.1 自定义脚本类

可以自定义自己的脚本类型及脚本类,只要在pub_busiclass表中将 actiontype(脚本类 型) 与 classname(脚本类) 对应上即可,然后再脚本类中通过执行脚本类将参数 传递进去即可,如下:

retObj = bsBusiAction.processAction(\自定义脚本类型\

\单据类型\dmakedate.toString(), null,

vo.m_preValueVo, null, null);

系统会根据【单据类型】和【自定义脚本类型】在pub_busiclass表中查找对应的脚 本类。

1.6.2 调用其他脚本

// 获取业务动作类

IPFBusiAction bsBusiAction = (IPFBusiAction)

NCLocator.getInstance().lookup(IPFBusiAction.class.getName());

// 调用其他单据类型的动作脚本(参数1:操作类型,比如;参数2:单据 类型;参数3:日期字符串;参数4:审批流、工作流执行过程中需要与用户 交互的上下文VO;参数5:聚合vo;参数6: 用户对象;参数7:环境参数) retObj = bsBusiAction.processAction(\RMBBillType.RMF_OUTBILL,

dmakedate.toString(),null,vo.m_preValueVo,null,

null);

1.7 事件监听

1.7.1 移除字段的参照监听添加新的监听类

示例代码如下:

BillItem headItem = billData.getHeadItem(“LOANBILLNO”);

if (headItem != null) {

UIRefPane loanRef = (UIRefPane) headItem.getComponent(); if (loanRef != null) { }

loanRef.getUIButton().removeActionListener(

loanRef.getUIButton().getListeners(

ActionListener.class)[0]);

loanRef.getUIButton().addActionListener(

new LoanBillListener(this));

loanRef.setAutoCheck(false);

第 14 页 / 共 19 页

}

1.7.2 页签转换事件监听

UI工厂生成的代码,如果是多页签(表头或表体),那么监听页签之间转换事件的方法如下: 在ClientUI类的initSelfData()中实现如下代码即可: //卡片表头增加页签转换事件监听

getBillCardWrapper().getBillCardPanel().getHeadTabbedPane().addChangeListener(new ChangeListener(){

public void stateChanged(ChangeEvent e) {

int index = getBillCardPanel().getHeadTabbedPane().getSelectedIndex(); String saleid = getBillCardPanel().getHeadItem(\getBillCardPanel().getHeadItem(\} });

//卡片表体增加页签转换事件监听

getBillCardWrapper().getBillCardPanel().getHeadTabbedPane().addChangeListener(new ChangeListener(){

public void stateChanged(ChangeEvent e) { } });

//列表表体增加页签转换事件监听

getBillListPanel().getBodyTabbedPane().addChangeListener(new ChangeListener(){ public void stateChanged(ChangeEvent e) { } });

1.8 NC常用开发技巧

1.8.1 得到表体某一列合计值

getBillListPanel().getBodyScrollPane(\getBillListPanel().getParentListPanel().setTotalRowShow(true); getBillCardPanel().setTatolRowShow(true); 然后获取获取合计行的值

getBillCardPanel().getTotalTableModel().getValueAt(\行号\列字段\

设置合计的模式

getHeadBillModel().setRowSelectMode(false);设置为false后,合计行为所有的的合计,默认的是合计选择行的合计

1.8.2 NC加锁

public void updateForEx(CubasdocVO cubasdoc) throws BusinessException,

DbException { // 获取锁

boolean islock = false;

islock = PKLock.getInstance().acquireBatchLock

第 15 页 / 共 19 页


NC客户化开发手册(中级篇)[1](3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:湖南华菱湘潭钢铁有限公司高线厂安全标准化自评报告 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: