各种常用方法
1、得到服务器时间的方法,返回类型UFDateTime
UFDateTime nowtime = AppContext.getInstance().getServerTime();
String day = nowtime.toString().substring(0, 10);

2、页面取值的方法
String ORG0001=salePurAdjustScale.getORG0001(InvocationInfoProxy.getInstance().getGroupId());

3、可以使用*Utils来查询更多的判空方法
判断字符串是否为空: StringUtils.isEmpty(customer),不包含“null”字符;
判断数组是否为空:ArrayUtils.isEmpty(vos)。

4、封装好的方法
删除
HYPubBO dmo = new HYPubBO();
dmo.deleteByWhereClause(SaleOrderHVO.class, " vdef20 = ‘“+ytpk+”’“);
SaleOrderHVO VO名称 " vdef20 = ‘”+ytpk+“’” 删除条件sql;
添加和审批
private void saveGeneralBill1(SaleOrderVO[] aggList ,String style)
throws BusinessException {
IPFBusiAction bsBusiAction = (IPFBusiAction) NCLocator.getInstance().lookup(IPFBusiAction.class.getName());
//节点的的类型
String billType = “30-06”;
//生成行号规则
BillRowNoVO.setVOsRowNoByRule(aggList, “crowno”);
// 集团编码
InvocationInfoProxy.getInstance().setGroupId(“00019B10000000000717”);
// 执行操作 WRITE,保存 APPROVE,审批
String IPF=IPFActionName.WRITE;
SaleOrderVO[] retObj=(SaleOrderVO[]) bsBusiAction.processBatch(IPF, billType, aggList, null, null, null);
if(“add”.equals(style)){
if (null != retObj) {
AggregatedValueObject[] tempObj = (AggregatedValueObject[]) retObj;
SaleOrderVO[] retObj1=(SaleOrderVO[])bsBusiAction.processBatch(IPFActionName.APPROVE, billType, tempObj, null, null, null);
}
}
}

5、封装的sql查询语句
查询出结果为VO的查询语句
List vosList1 = null;
vosList1 = (List) this.getDao().executeQuery(sql, new BeanListProcessor(SalVO.class));
查询出结果为其他的
Object query = null;
query = getDao().executeQuery(sql, new ColumnProcessor());
将组装好的VO进行添加或者修改
初始化DAO
BaseDAO baseDAO=null;
BaseDAO getDao() {
InvocationInfoProxy.getInstance().getUserDataSource();
if (null == baseDAO) {
baseDAO = new BaseDAO();
}
return baseDAO;
}
添加:this.getDao().insertVO(salvo);
修改:this.getDao().updateVO(salvo);
添加数组:this.getDao().insertVOList(salvo);
修改数组:this.getDao().updateVOList(salvo);
根据条件查询符合条件的VO
SuperVO[] superVO=null;
superVO = pubBO.queryByCondition(StordocVO.class, " name = ‘二线产成品库’ and pk_org=’“+pk_org+”’ and nvl(dr,0)=0");
根据主键查询数据的VO
CustomerVO customervo = (CustomerVO) pubBO.queryByPrimaryKey(CustomerVO.class, customer);
判断UFDouble的大小
snum.compareTo(UFDouble.ZERO_DBL)>=0判断snum和0那个大
UFDouble的加减乘除
乘法:nnum.multiply(nprice);
除法:ntaxrate.div(100) ;
加法:nnum.add(d1);
减法:ntaxmny.sub(nmny);
6、 笔记:
xml文件打上补丁以后不需要重新启动环境,如果页面没有生效,尝试将缓存清楚。
用后台存入数据,不启动标准产品保存,单据号重复不报错。

7、查询模块是否启用
SysInitGroupQuery.isCREDITEnabled()查询模块是否启用

原文链接:https://blog.csdn.net/ME_505734971/article/details/89011216

以下为本人持续更新

8、数据库访问工具

nc.vo.ecpubapp.tools.DBTool
该类的常用方法:1)、getConnection();//获取数据库连接2)、getDataSourceName();//获取数据源3)、getBaseDao();//获取BaseDao实例4)、getDBType();//获取数据库类型5)、getLoginPsn();//获取当前登录人对应人员信息6)、getPkOrg();//获取当前登录人对应的业务单元7)、getLoginPsnDept();//查询登录人所在的部门8)、getDeptPrincByPkDept(String pkDept);//根据部门主键查询部门负责人nc.impl.pubapp.pattern.database.DBTool

9、客户端环境变量。
nc.ui.pub.ClientEnvironment
该类常用方法:
1)、getDate();//当前登录的日期。
2)、getEndDateOfAccountPeriod();//登录日期所有会计期间的结束日期
3)、getCorporation();//获取当前登录的公司,但该方法在NC65中已去掉不可用
4)、getBusinessDate();//获取当前登录的业务日期
5)、getGroupId();//返回集团主键
6)、getServerTime();//获得所登录的服务器日期时间。
7)、getServerURL();//获得服务器的URL。
8)、getUser();//当前登录的用户

10、nc.desktop.ui.WorkbenchEnvironment.getInstance().getUserPowers();//获取当前登录人的用户权限

11、根据单据类型获取主表的关键字段(使用平台基础类:nc.vo.pf.change.PfUtilBaseTools)

// 获取主表的关键字段
String pkField = PfUtilBaseTools.findPkField(billType);
/**
* 查询单据类型对应的实体的数据库表主键字段
*
*  @param billType        单据类型PK
* @return
* @throws BusinessException
*/
public static String findPkField(String billType) throws BusinessException {// 从元数据模型获取IBean bean = PfMetadataTools.queryMetaOfBilltype(billType);return bean.getTable().getPrimaryKeyName();
}/**
* 获得所有基础档案VO。
*/
public static BasedocVO[] getAllBasedocVO() {BasedocTempVO[] vos;ClassVO[] classVOs = null;try {classVOs = queryAllRefInfoVOs();} catch (Exception e) {Logger.error(e.getMessage(), e);}// Convert the classVO the BasedocTempVOif (classVOs == null)return null;vos = new BasedocTempVO[classVOs.length];for (int i = 0; i < vos.length; i++) {vos[i] = new BasedocTempVO();vos[i].setDocName(classVOs[i].getDisplayName());vos[i].setDocPK(classVOs[i].getPrimaryKey());vos[i].setDocCode(classVOs[i].getName());String refModelName = classVOs[i].getRefModelName();if (refModelName != null && refModelName.contains(";")) {// 取第一个(默认)参照名称vos[i].setRefNodeName(refModelName.split(";")[0]);} else {vos[i].setRefNodeName(refModelName);}}return vos;
}

12、流程平台元数据应用工具类:nc.uap.pf.metadata.PfMetadataTools

13、根据相关的查询条件以及连接表来查询某个实体的值:nc.impl.pubapp.pattern.data.vo.VOQuery

如:

/*** 根据实体的主键查询VO* * @param keys 主键数组* @return 实体数据*/public E[] query(String[] keys) {IAttributeMeta primaryKey = this.voMeta.getPrimaryAttribute();TimeLog.logStart();IDQueryCondition tool = new IDQueryCondition();String idSQL = tool.build(primaryKey, keys);String sql = this.constructSQL(this.queryAttributes, idSQL, null, null);TimeLog.info("组织sql语句"); /*-=notranslate=-*/TimeLog.logStart();DataAccessUtils dao = new DataAccessUtils();IRowSet rowset = dao.query(sql);E[] vos = this.constructVO(this.queryAttributes, rowset);TimeLog.info("从数据库中装载VO"); /*-=notranslate=-*/TimeLog.logStart();E[] returnVOs = this.sortByKey(keys, vos);TimeLog.info("根据ID对VO进行排序"); /*-=notranslate=-*/return returnVOs;}

14、取到卡片界面中,表头和表体所有的数据 注:getValue()只能取到变化的表体 wangled

 /*** 取到卡片界面中,表头和表体所有的数据 注:getValue()只能取到变化的表体 wangled*/public JKBXVO getJKBXVO() {JKBXVO value = (JKBXVO) getValue();JKBXVO bxvo = (JKBXVO) value.clone();bxvo.setChildrenVO(null);bxvo.setContrastVO(null);bxvo.setcShareDetailVo(null);bxvo.setAccruedVerifyVO(null);String djdl = value.getParentVO().getDjdl();BillTabVO[] billTabVOs = getBillCardPanel().getBillData().getBillTabVOs(IBillItem.BODY);for (BillTabVO billTabVO : billTabVOs) {String metaDataPath = billTabVO.getMetadatapath();if (BXConstans.ER_BUSITEM.equals(metaDataPath) || BXConstans.JK_BUSITEM.equals(metaDataPath)|| metaDataPath == null) {BXBusItemVO[] bodyValueVOs = null;if (djdl != null && djdl.equals(BXConstans.JK_DJDL)) {// 借款业务行多页签bodyValueVOs = (BXBusItemVO[]) getBillCardPanel().getBillModel(billTabVO.getTabcode()).getBodyValueVOs(JKBusItemVO.class.getName());} else {// 报销业务行多页签bodyValueVOs = (BXBusItemVO[]) getBillCardPanel().getBillModel(billTabVO.getTabcode()).getBodyValueVOs(BXBusItemVO.class.getName());}if (!ArrayUtils.isEmpty(bodyValueVOs)) {for (BXBusItemVO bxBusItemVO : bodyValueVOs) {bxBusItemVO.setTablecode(billTabVO.getTabcode());}}BXBusItemVO[] childrenVO = bxvo.getChildrenVO();if (!ArrayUtils.isEmpty(childrenVO)) {bxvo.setChildrenVO((BXBusItemVO[]) ArrayUtils.addAll(childrenVO, bodyValueVOs));} else {bxvo.setChildrenVO(bodyValueVOs);}} else if (BXConstans.CONST_PAGE.equals(metaDataPath)) {// 冲销页签BxcontrastVO[] bodyValueVOs = (BxcontrastVO[]) getBillCardPanel().getBillModel(billTabVO.getTabcode()).getBodyValueVOs(BxcontrastVO.class.getName());bxvo.setContrastVO(bodyValueVOs);} else if (BXConstans.CS_Metadatapath.equals(metaDataPath)) {// 分摊页签CShareDetailVO[] bodyValueVOs = (CShareDetailVO[]) getBillCardPanel().getBillModel(billTabVO.getTabcode()).getBodyValueVOs(CShareDetailVO.class.getName());bxvo.setcShareDetailVo(bodyValueVOs);} else if (BXConstans.AccruedVerify_Metadatapath.equals(metaDataPath)) {// 核销预提明细页签AccruedVerifyVO[] bodyValueVOs = (AccruedVerifyVO[]) getBillCardPanel().getBillModel(billTabVO.getTabcode()).getBodyValueVOs(AccruedVerifyVO.class.getName());bxvo.setAccruedVerifyVO(bodyValueVOs);bxvo.setVerifyAccruedUpdate(this.isVerifyAccrued());}}helper.prepareForNullJe(bxvo);return bxvo;}

15、将前台的单据默认值与传过来的VO值合并

 /*** 将前台的单据默认值与传过来的VO值合并* * @param backVO* @param frontVO*/private void combineVO(JKBXVO backVO, JKBXVO frontVO) {if (backVO.getParentVO().getPk_jkbx() == null || frontVO.getParentVO().getPk_jkbx() == null|| backVO.getParentVO().getPk_jkbx().equals(frontVO.getParentVO().getPk_jkbx())) {backVO.getParentVO().combineVO(frontVO.getParentVO());}}

16、设置表体行状态

 /*** 设置表体行状态*/private void resetRowState() {BillCardPanel billCard = getBillCardPanel();String[] bodyTableCodes = billCard.getBillData().getBodyTableCodes();for (String tableCode : bodyTableCodes) {BillModel billModel = billCard.getBillModel(tableCode);int rowCount = billModel.getRowCount();if (rowCount <= 0) {continue;}int rowState = BillModel.ADD;for (int i = 0; i < rowCount; i++) {if (billModel.getRowState(i) != BillModel.UNSTATE) {billModel.setRowState(i, rowState);}}}}

16、得到当前单据的业务页签

 /*** 得到当前单据的业务页签* * @return*/private String getBusPageCode() {if (isBX()) {return BXConstans.BUS_PAGE;}return BXConstans.BUS_PAGE_JK;}private boolean isBX() {String currentBillTypeCode = ((ErmBillBillManageModel) getModel()).getCurrentBillTypeCode();DjLXVO currentDjlx = ((ErmBillBillManageModel) getModel()).getCurrentDjlx(currentBillTypeCode);return BXConstans.BX_DJDL.equals(currentDjlx.getDjdl());}

17、 设置单据状态

getBillCardPanel().getBillData().setBillstatus(VOStatus.NEW);

18、NC产品常用工具类

ValueCheckUtil.isTrue()//一个UFBoolean值,是否为trueStringUtil.java//工具类,JAVA String的一些工具方法ValueCheckUtil.java//工具类,本类主要完成以下功能:值(任意类型)常用检查、判断工具类MathTool.java//数学运算工具类,包括比较大小ValueUtils.java工具类可以安全的进行类型转换,不必担心强转失败

NC65登录接口类和方法

nc.login.bs.INCLoginService.loginForceStaticPWD(LoginRequest loginRequest, boolean isForceLogin) throws BusinessException;nc.login.bs.INCLoginService.login(LoginRequest loginRequest, boolean isForceLogin) throws BusinessExceptionnc.login.bs.impl.LoginEngine

NC65系统用户登陆验证逻辑

//假设登陆用户名为 lsl,登陆密码为 1234poiu
String sql = "select * from sm_user where user_code = 'lsl' ";
UserVO userVO = null;
try {userVO = (UserVO) new BaseDAO().executeQuery(sql, new BeanProcessor(UserVO.class));
} catch (DAOException e) {e.printStackTrace();
}
boolean check = nc.vo.uap.rbac.util.RbacUserPwdUtil.checkUserPassword(userVO, "1234poiu");

NC65系统单据添加表头编辑前事件

1、代码

package nc.ui.arap.handler;import nc.ui.pub.beans.UIRefPane;
import nc.ui.pubapp.uif2app.event.IAppEventHandler;
import nc.ui.pubapp.uif2app.event.card.CardHeadTailBeforeEditEvent;
import nc.vo.arap.payable.PayableBillVO;public class CardHeadTailBeforeEditDistribute implements IAppEventHandler<CardHeadTailBeforeEditEvent>{@Overridepublic void handleAppEvent(CardHeadTailBeforeEditEvent e) {// TODO 自动生成的方法存根if(PayableBillVO.DEF70.equals(e.getKey())){//编辑表头机场合同字段过滤掉合同已履行完成的合同UIRefPane ref =  (UIRefPane) e.getBillCardPanel().getHeadItem(e.getKey()).getComponent();ref.getRefModel().addWherePart(" and xsjc_jchtmanage.sfwb='N' ");}}}

2、xml注册

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><bean id="pubappEventHandlerMediator" class="nc.ui.pubapp.uif2app.model.AppEventHandlerMediator"><property name="model" ref="ManageAppModel" /><property name="handlerGroup"><list><bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup"><property name="event" value="nc.ui.pubapp.uif2app.event.card.CardHeadTailBeforeEditEvent" /><property name="handler"><bean class="nc.ui.arap.handler.CardHeadTailBeforeEditDistribute"></bean></property></bean></list></property></bean></beans>

NC 开发各种常用方法相关推荐

  1. NC开发各种常用方法

    各种常用方法 1.得到服务器时间的方法,返回类型UFDateTime UFDateTime nowtime = AppContext.getInstance().getServerTime(); St ...

  2. NC 开发环境因电脑高分辨率导致系统文字、图标变小等。

    NC 增大UAP-STUDIO eclipse开发工具的分辨率与图标大小即NC 开发环境因电脑高分辨率导致系统文字.图标变小.如下图: 解决以上问题方案如下: 1.找到eclipse软件 选中鼠标有点 ...

  3. NC开发软件的错误以及改正

    主要是用友NC开发中的软件报错,以及如何更正. 有很多时候,不是代码问题,而是软件问题..这也是最烦人的,在百度上基本上也都有相应解决办法,我就稍微总结了一下NC开发中的软件问题. 1,plsql链接 ...

  4. NC开发笔记——NC63开发方法总结

    1.提示信息输出 方法一:写在ToPanel里面的publicvoid valueChanged(ValueChangedEvent event) {方法中添加如下代码 ShowStatusBarMs ...

  5. NC开发笔记——单据模板编辑显示公式使用

    单据模板编辑显示公式使用 (一) 公式使用场景 用户使用产品时,往往对单据上的字段取值有各种不同的需求.为此单据模板提供 了模板公式功能,可以让实施顾问或者用户通过配置各种公式,并且不用修改代码,从 ...

  6. 用友NC开发本地启动客户端时界面空白问题的解决

    本地启动客户端时,登录界面是空白的,仅有右上角的部分文字. 报的异常如下: at java.util.Properties$LineReader.readLine(Properties.java:36 ...

  7. android中的常用方法,android开发中常用方法总结

    1.判断是否在后台运行: import android.app.ActivityManager; import android.content.Context; import java.util.Li ...

  8. iOS开发-UITableView常用方法

    UITableView常用来展示数据,类似于Android中的ListView,相对于Android中的ListView而言,UITableView的实现是非常简单,继承UITableViewData ...

  9. 关于NX/UG使用KF二次开发的常用方法

    1.KF打印消息框 (Integer) msg: ug_printMessage({"这是一个消息框"});    (List) demandvalue: {msg:}; 2.KF ...

最新文章

  1. Redis 概念以及底层数据结构
  2. 5G的3大应用场景落地开花,中国或将引领全球5G产业发展
  3. 为严苛而生,Lenovo ThinkSystem SR950优势尽显
  4. ERROR in ./node_modules/element-ui/lib/theme-chalk/fonts/element-icons.ttf 1:0 Module parse failed:
  5. 谈谈利用JavaScript结合相对单位rem实现自适应布局的简单而实用的方法
  6. 【ArcGIS遇上Python】ArcGIS Python实现批量化矢量和栅格数据重命名
  7. 升级drupal4.0.0_Drupal从1.0到8.0的简要历史
  8. 枚举类型的用法 很不错的定义不同类型的工具
  9. Ceph Block Device块设备操作
  10. AspNetPager分页控制
  11. Ubuntu下装codeblocks
  12. 乘风破浪程序猿,拒绝原地踏步!
  13. oracle有条件执行插入语句
  14. 订单里面有多个商品的问题怎么解决
  15. Atcoder 284题解
  16. 计算机管理 服务无响应,电脑任务栏假死点击没反应的解决方法(win7与xp)
  17. SwitchyOmega情景模式
  18. 立冬了,我们该怎么养生
  19. YouTube-8M视频数据集概览
  20. 六:Grafana-Boom Theme用法

热门文章

  1. 低版本IntelliJ IDEA升级到IntelliJ IDEA 2021.3.3
  2. Android模拟器打不开或者模拟器找不到
  3. 刘自立:我看1936年柏林奥运会
  4. win10wifi多了数字_win10和周年版的WIFI都喜欢断断续续
  5. 网络基础——网络传输基本流程
  6. Qt编写安防视频监控系统19-日志查询
  7. Certificate doesn't match any of the subject alternative names问题的解决
  8. vc2010 VA安装
  9. 2017年爱奇艺校招模拟笔试编程
  10. 危机下的暴走族 伟库用云实现“小康”