NC65二开单据单据追溯功能开发

一.单据元数据字段增加字段
来源单据主键
来源单据类型

二.设置单据按钮&&修改单据类型
单据增加按钮

<bean id="linkQueryAction" class="nc.ui.so.socontract.ace.action.common.UserDefLinkQueryAction"><property name="model"><ref bean="bmModel"/></property><property name="billType" value="HD01"/><property name="exceptionHandler"><ref bean="exceptionHandler" /></property></bean>
package nc.ui.so.socontract.ace.action.common;import nc.ui.pubapp.uif2app.actions.LinkQueryAction;
import nc.ui.scmpub.action.SCMActionInitializer;public class UserDefLinkQueryAction extends LinkQueryAction {public UserDefLinkQueryAction() {// TODO Auto-generated constructor stubsetOpenMode(1);SCMActionInitializer.initializeAction(this, "BillLinkQuery");}
}

设置来源单据数据查询类

三.实现类代码:

package nc.vo.so.socontract.linkquery;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import nc.bs.logging.Logger;
import nc.bs.pf.pub.PfDataCache;
import nc.bs.trade.billsource.DefaultDataFinder;
import nc.jdbc.framework.JdbcSession;
import nc.jdbc.framework.PersistenceManager;
import nc.jdbc.framework.SQLParameter;
import nc.jdbc.framework.exception.DbException;
import nc.jdbc.framework.processor.BeanListProcessor;
import nc.jdbc.framework.processor.ResultSetProcessor;
import nc.uif.pub.exception.UifRuntimeException;
import nc.vo.pu.pub.util.ArrayUtil;
import nc.vo.pubapp.pattern.pub.SqlBuilder;
import nc.vo.trade.billsource.LightBillVO;/*** 军品销售合同单据联查类* @author Think**/
public class ContractSrcFinder extends DefaultDataFinder {@Overridepublic LightBillVO[] getForwardBills(String srcBillType,String curBillType, String... srcBillID) {// TODO Auto-generated method stubif(!"30".equals(srcBillType)){return super.getForwardBills(srcBillType, curBillType, srcBillID);}else{SqlBuilder sql = new SqlBuilder();
//          sql.append("SELECT distinct pk_head id,'"+curBillType+"' code FROM  so_socontract_b ");
//          sql.append(" where dr = 0 ");
//          // and csrcid = '"+srcBillID+"' and  csrctype='"+srcBillType+"'"
//          sql.append(" and  csrcid ",srcBillID);
//          //sql.append(" and csrctype ",srcBillType);String pk= PfDataCache.getBillTypeInfo(curBillType).getPk_billtypeid();sql.append("SELECT distinct t1.pk_head id,t1.vbillcode code,t1.pk_billtypecode type,'"+pk+"' transtypepk,t2.csrcid sourceID  FROM SO_SOCONTRACT_H t1 ");sql.append("LEFT JOIN SO_SOCONTRACT_B t2 on t1.PK_HEAD = t2.PK_HEAD");sql.append(" WHERE t1.dr = 0 And t2.dr =0 ");sql.append(" and t2.csrcid ",srcBillID);PersistenceManager sessionManager = null;try {sessionManager = PersistenceManager.getInstance();JdbcSession session = sessionManager.getJdbcSession();ArrayList result =(ArrayList) session.executeQuery(sql.toString(),new BeanListProcessor(LightBillVO.class));if (result.size() == 0) {return null;}else {return (LightBillVO[]) result.toArray(new LightBillVO[result.size()]);}}catch (DbException e) {Logger.error(e.getMessage(), e);throw new UifRuntimeException("getForwardBills error");}finally {sessionManager.release();}}}public LightBillVO[] getSoContractSourceBills(String curBillType, String curBillID){SqlBuilder sqlbuilder = new SqlBuilder();sqlbuilder.append("select * from so_saleorder where csaleorderid in ( ");sqlbuilder.append(" select csrcid from so_socontract_b where dr = 0 and pk_head  =  ? ");sqlbuilder.append(" ) and dr = 0 ");PersistenceManager sessionManager = null;try {sessionManager = PersistenceManager.getInstance();JdbcSession session = sessionManager.getJdbcSession();SQLParameter para = new SQLParameter();para.addParam(curBillID);ResultSetProcessor p = new ResultSetProcessor(){@Overridepublic Object handleResultSet(ResultSet rs)throws SQLException {// TODO Auto-generated method stubArrayList al = new ArrayList();while(rs.next()){String id = rs.getString("csaleorderid");String code = rs.getString("vbillcode");if (id != null && id.trim().length() > 0) {LightBillVO svo = new LightBillVO();svo.setType("30");svo.setID(id);svo.setCode(code);al.add(svo);}}return al;}};ArrayList<LightBillVO> result =(ArrayList<LightBillVO>) session.executeQuery(sqlbuilder.toString(),para, p);if (result.size() == 0) {return null;}// 增补上游单据号for (LightBillVO vo : result) {List<String> info = this.getBillCodeAndCorp(vo.getType(), vo.getID());if (info != null) {vo.setCode(info.get(0));vo.setCorp(info.get(1));}}return result.toArray(new nc.vo.trade.billsource.LightBillVO[result.size()]);}catch (DbException e) {Logger.error(e.getMessage(), e);throw new UifRuntimeException(e.getMessage());}finally {sessionManager.release();}}@Overridepublic LightBillVO[] getSourceBills(String curBillType, String curBillID) {// TODO Auto-generated method stub//return super.getSourceBills(curBillType, curBillID);LightBillVO[] source = super.getSourceBills(curBillType, curBillID);LightBillVO[] sosource = this.getSoContractSourceBills(curBillType, curBillID);return ArrayUtil.combinArrays(source,sosource);}
}

四.效果

NC65二开单据单据追溯功能开发相关推荐

  1. Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述—— 隐鹤 / HelloWorld...

    Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述---- 隐鹤  /  HelloWorld 1. 引言 自本人第一篇博文"Excel阅读模式/单元格行列指示/聚光灯 ...

  2. NC65二开单据增加参照生成

    1.在单据类型管理中对二开的单据设置上下游关系 2.退出客户端,清理缓存. 3.在流程管理中的单据转换规则中配置单据转换规则 配置里面的来源单据显示类,来源单据查询类,来源单据单据查询模板标识 4.定 ...

  3. 用友uap nc65开发-单据联查相关开发

    用友uap nc65开发-单据联查相关开发 1.单据联查:针对有上下游数据单据,通过单据联查使用图形化界面显示该单据上下游.本教程分两部分,上游和下游. 2.前期配置:xml配置对应的按钮,这里指定当 ...

  4. 从零开始安卓端相机功能开发(二)让我们来开发一个相机

    目前已有章节大家可以去学习也可以参考一下 1.从零开始安卓端相机功能开发(一)了解用什么去开发以及流程 2.从零开始安卓端相机功能开发(二)让我们来开发一个相机 3.从零开始开发Android相机ap ...

  5. 【GD32F427开发板试用】二、USB库移植与双USB CDC-ACM功能开发

    本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站.作者:chenjie [GD32F427开发板试用]一.环境搭建与freertos移植 [GD ...

  6. Android学习之高德地图的通用功能开发步骤(二)

    周一又来了,我就接着上次的开发步骤(一)来吧,继续把高德地图的相关简单功能分享一下 上次写到了第六步,接着写第七步吧. 第七步:定位 + 地图选点 + 路径规划 + 实时导航 以下是我的这个功能Nav ...

  7. SpringBoot对接微信小程序支付功能开发(二,支付回调功能)

    接着上一篇: SpringBoot对接微信小程序支付功能开发(一,下单功能) 在上一篇下单功能中我们有传支付结果回调地址. 下面是回调接口实现 package com.office.miniapp.c ...

  8. Windows Phone 开发——相机功能开发

    原文:Windows Phone 开发--相机功能开发 相机功能是手机区别于PC的一大功能,在做手机应用时,如果合理的利用了拍照功能,可能会给自己的应用增色很多.使用Windows Phone的相机功 ...

  9. SNMP功能开发简介 六 snmp功能开发阶段性总结

    先说客户需求:能够通过SNMP协议获取设备信息便于管理.客户提出的需求信息转化成MIB结点都是Get类请求. 背景&方案:我们的产品业务层是使用Go语言开发的,系统层基于OpenWrt(一个嵌 ...

最新文章

  1. BZOJ 2156 「国家集训队」星际探索(最短路)【BZOJ计划】
  2. 中国移动2016年NAT独立设备集采:迪普科技连续三年入围
  3. 【ArcObject开发】实验:ArcGIS Desktop开发方式入门基础教程
  4. 【摘转留用】35前要考虑的
  5. windows环境下unicode编程总结
  6. java drawstring字体大小_java – 不同大小的JLabel中心drawString()文本
  7. Oracle10g下载地址--多平台下的32位和64位
  8. network 一级,二级,子域名
  9. linux df命令无反馈,Linux df 命令长时间没有返回
  10. 硬盘格式化后数据能不能恢复,硬盘格式化数据怎么恢复
  11. IDEA运行java文件环境配置
  12. 视觉检测售价_视觉自动化检测设备多少钱一台,它是如何报价的?
  13. 2020届春招实习面经(含阿里、腾讯、网易、京东、华为、美团、快手、字节跳动)
  14. Software defect prediction—— LSTM
  15. 20135323符运锦---信息安全系统设计基础第一周学习总结
  16. 解决方案:ppt打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿
  17. Windows使用SSH登录VM虚拟机
  18. ESP32 + ESP-IDF |GPIO 02 - 使用高分辨率定时器,每100ms时间间隔驱动外部两个LED灯闪烁
  19. SCANDY让你的手机变成扫描仪
  20. 一辞脚本分享的导入抖音号关注私信脚本,导入抖音号关注私信软件详细教学

热门文章

  1. 微信小程序查看到评论
  2. 给在北漂准备租房的菜鸟一点建议
  3. 入校以来现实表现三段式
  4. 32位 和 64位系统区别
  5. 【科研试剂】16-Heptadecynoic acid,93813-16-2,16-庚二酸
  6. 【机器学习】深入剖析主成分分析(PCA)与协方差矩阵
  7. java对接大华SDK摄像头监控
  8. 贫贱不能移 威武不能屈 富贵不能淫
  9. 黑马人工智能怎么样-黑马类达内的资本化教育扩张模式
  10. 区块链史上的一次冰河世纪,凛冬之下,随处可见的烂尾链