NC添加自定义显示公式方法

本文介绍了在NC系统中添加自定义显示公式的步骤,包括编写继承`NcInnerFunction`的JAVA类,配置XML文件,以及具体的功能实现示例,如检查用户是否上传签名图片的`isUserSign`函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

NC添加自定义显示公式的方法步骤大致是:

1.编写显示公式JAVA类,该类继承 import nc.vo.pub.formulaset.function.NcInnerFunction;例如:public class UserSign extends NcInnerFunction

2.编写配置文件,文件的路径放在与modules同级目录的resources\formulaconfig\custfunction目录下,文件编写要按照一定的格式,例:hzdev.xml

<?xml version="1.0" encoding="gb2312"?>
<formula-array>
<formula>
<customType>9</customType>
<functionName>isUserSign</functionName>
<functionClass>hz.vo.user.formula.UserSign</functionClass>
</formula>
</formula-array>


编写JAVA类逻辑处理代码,部署本地服务器,重启,单据模板配置显示公式。

代码例子如下:

package hz.vo.user.formula;


import java.util.List;


import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Logger;
import nc.itf.uap.busibean.IFileManager;
import nc.vo.jcom.lang.StringUtil;
import nc.vo.pub.BusinessException;
import nc.vo.pub.formulaset.core.ParseException;
import nc.vo.pub.formulaset.function.NcInnerFunction;
import nc.vo.uap.busibean.exception.BusiBeanException;
import nc.vo.uap.rbac.UserSignIcon;


/**
 * 查看用户是否已经上传签名显示公式
 * isUserSign(user_code):传入用户编码,返回用户是否已经上传签名图片信息,已经上传返回\"是\",否则返回\"否\"
 * @author xms
 * 
 */


public class UserSign extends NcInnerFunction {


private String sDir = "/user_signicon/";
private IFileManager fileManager;


public UserSign() {
this.numberOfParameters = 1;
this.functionType = 9;
}


@Override
public Object function(List param) throws ParseException {
Logger.debug("hz.vo.user.formula.UserSign");
Logger.debug("调用公式isUserSign(user_code),传入用户编码,返回用户是否已经上传签名图片信息");
if ((param == null) || (param.size() < 1)) {
return "否";
}
String user_code = (String) param.get(0);


UserSignIcon sign_icon = new UserSignIcon();
String sFilename = null;
try {
sFilename = getFilename(user_code);
} catch (BusinessException e) {
return "否";
}
if (StringUtil.isEmptyWithTrim(sFilename)) {
return "否";
}
String sPre = user_code + "_";
sign_icon.setIcon_name(sFilename.substring(sPre.length()));
try {
sign_icon.setIcon(getFileManager().readFile(this.sDir + sFilename));
} catch (BusiBeanException e) {
e.printStackTrace();
}
if (sign_icon.getIcon() == null || "".equals(sign_icon.getIcon())) {
return "否";
}


return "是";


}


@Override
public String getFunctionDesc() {
return "isUserSign(user_code):传入用户编码,返回用户是否已经上传签名图片信息,已经上传返回\"是\",否则返回\"否\"";
}


private String getFilename(String usercode) throws BusinessException {
String[] sAllFile = getFileManager().getAllFile(this.sDir, 0);
String sPre = usercode + "_";
int i = 0;
for (int iLen = sAllFile == null ? 0 : sAllFile.length; i < iLen; i++) {
if (sAllFile[i].startsWith(sPre)) {
return sAllFile[i];
}
}
return null;
}


public IFileManager getFileManager() {
if (this.fileManager == null) {
this.fileManager = ((IFileManager) NCLocator.getInstance().lookup(
IFileManager.class.getName()));
}
return this.fileManager;
}


}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值