nc65单据穿透

nc65单据穿透

jych项目

1.支出合同台账合同号字段可以穿透到对应的单据上

一个合同号穿透到一个物质设备采购合同上

1.支出合同台账单据模板合同号字段卡片下和列表下高级属性勾选是否超链接
在这里插入图片描述

2.支出合同台账中增加监听类
HeadItemLinkListener.java

package nc.ui.jych.zchttz.ace.view;

import nc.desktop.ui.WorkbenchEnvironment;
import nc.funcnode.ui.FuncletInitData;
import nc.funcnode.ui.FuncletWindowLauncher;
import nc.ui.pub.bill.BillItemHyperlinkEvent;
import nc.ui.pub.bill.BillItemHyperlinkListener;
import nc.vo.jych.paymentorder.AggPaymentOrderVO;
import nc.vo.jych.utils.PenetrateQuery;
import nc.vo.jych.wzsbcght.AggWzsbcghtVO;
import nc.vo.jych.zchttz.ZchttzVO;
import nc.vo.pub.BusinessException;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.sm.funcreg.FuncRegisterVO;
import nc.vo.zkch.utils.NullValueUtils;

public class HeadItemLinkListener implements BillItemHyperlinkListener{
	public ListView list;
	@Override
	public void hyperlink(BillItemHyperlinkEvent event) {
		//获取超链接的字段
		String key = NullValueUtils.getNullStringValue(event.getItem().getKey());
		//获取行号
		int row  = event.getRow();
		//获取到这一行对应的 
		ZchttzVO vo = (ZchttzVO) getList().getBillCardPanel().getBillModel().getBodyValueRowVOByVisualValue(row, ZchttzVO.class.getName());
		String htbh = vo.getHtbh();
		try {
			FuncletInitData data = new FuncletInitData();
			data.setInitType(100);
			FuncRegisterVO funvo = null;
			if (key.equals("nyfkmny")) {
				AggPaymentOrderVO[] queryData = PenetrateQuery.getInstances().getZchttzPaymentData(htbh);
				data.setInitData(queryData);
				funvo = WorkbenchEnvironment.getInstance().getFuncRegisterVO("H7H1H136");
			} else if(key.equals("htbh")){//add by hanh
				AggWzsbcghtVO[] queryData = PenetrateQuery.getInstances().getQueryWzsbcghtVOByHt(htbh);
				data.setInitData(queryData);
				funvo = WorkbenchEnvironment.getInstance().getFuncRegisterVO("H7H1H162");
			}
			//需要进入节点
			FuncletWindowLauncher.openFuncNodeInTabbedPane(getList().getBillCardPanel(), funvo, data, null, true);
		} catch (BusinessException e) {
			// TODO 自动生成的 catch 块
			ExceptionUtils.wrappBusinessException(e.getMessage());
		}
	}
	public ListView getList() {
		return list;
	}

	public void setList(ListView list) {
		this.list = list;
	}

}

3.给监听类注入到对应字段
ListView.java

package nc.ui.jych.zchttz.ace.view;


public class ListView extends nc.ui.pubapp.uif2app.view.ShowUpableBatchBillTable{
	private static final long serialVersionUID = 1L;
	
	@Override
	public void initUI() {
		
		super.initUI();		
		getBillCardPanel().setTatolRowShow(true);
		HeadItemLinkListener listener = new HeadItemLinkListener();
		listener.setList(this);
		getBillCardPanel().getBodyItem("nyfkmny").addBillItemHyperlinkListener(listener);
		getBillCardPanel().getBodyItem("htbh").addBillItemHyperlinkListener(listener);
	}

}

4.在public端的工具类util包下的PenetrateQuery.java类中增加根据合同编号查询物质设备采购合同的方法

	/**
	 * 根据合同编号查询物质设备采购合同对应的物质设备采购合同登记
	 * add by hanh
	 */
	public AggWzsbcghtVO[] getQueryWzsbcghtVOByHt(String htbh) throws BusinessException {
		// TODO 自动生成的方法存根
		SqlBuilder sql = new SqlBuilder();
		sql.append(" select pk_wzsbcght ");
		sql.append(" from jych_wzsbcght ");
		sql.append(" where nvl(dr, 0) = 0	");
		sql.append(" and htbh = '"+htbh+"'");
		List<String> list = (List<String>) getBs().executeQuery(sql.toString(), new ColumnListProcessor());
		if (list != null  && list.size() >0) {
			AbstractBill[] bills = getQueryService().queryAbstractBillsByPks(AggWzsbcghtVO.class, list.toArray(new String[0]));
			List<AggWzsbcghtVO> aggvolist = new ArrayList<AggWzsbcghtVO>();
			for (AbstractBill bill : bills) {
				AggWzsbcghtVO aggvo = (AggWzsbcghtVO) bill;
				aggvolist.add(aggvo);
			}
			return aggvolist.toArray(new AggWzsbcghtVO[0]);
		}
		return null;
	}

5.在要穿透的物质设备采购合同单据中增加监听类
WzsbcghtListener.java

package nc.ui.jych.wzsbcght.ace.listener;

import nc.funcnode.ui.FuncletInitData;
import nc.vo.jych.wzsbcght.AggWzsbcghtVO;

public class WzsbcghtListener extends nc.ui.pubapp.uif2app.model.DefaultFuncNodeInitDataListener {

	@Override
	public void initData(FuncletInitData data) {
		// TODO 自动生成的方法存根
		if (data != null && data.getInitType() == 100) {
			AggWzsbcghtVO[] aggvos =  (AggWzsbcghtVO[])data.getInitData();
			getModel().initModel(aggvos);

		} else {
			super.initData(data);
		}
	}
}

6.在要穿透的物质设备采购合同单据的xml中注入新增加的监听类

	<!-- 打开节点监听 newadd-->
	<bean id="InitDataListener" class="nc.ui.jych.wzsbcght.ace.listener.WzsbcghtListener">
		<property name="model" ref="bmModel"/>
		<property name="context" ref="context"></property>
		<property name="voClassName" value="nc.vo.jych.wzsbcght.AggWzsbcghtVO"/>
	</bean>

2.销售合同台账合同号字段可以穿透到对应的单据上

一个合同号穿透到一个销售合同登记上(但考虑到这张单子有被金额穿透的情况,这种情况下点击该金额会有多个单子穿透到销售合同登记上,所以要和被按钮穿透的情况公用一个监听类,查到的数据就得用List去接收)

1.HeadItemlinkListener.java

package nc.ui.jych.xshttz.view;

import java.util.ArrayList;
import java.util.List;

import nc.bs.framework.common.NCLocator;
import nc.desktop.ui.WorkbenchEnvironment;
import nc.funcnode.ui.FuncletInitData;
import nc.funcnode.ui.FuncletWindowLauncher;
import nc.itf.jych.IXshttzMaintain;
import nc.ui.pub.bill.BillItemHyperlinkEvent;
import nc.ui.pub.bill.BillItemHyperlinkListener;
import nc.vo.jych.kpsq.AggKpsqVO;
import nc.vo.jych.receiptvoucher.AggReceiptVoucherVO;
import nc.vo.jych.utils.PenetrateQuery;
import nc.vo.jych.xshtdj.AggXshtdjVO;
import nc.vo.jych.xshttz.XshttzVO;
import nc.vo.pub.BusinessException;
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
import nc.vo.sm.funcreg.FuncRegisterVO;
import nc.vo.zkch.utils.NullValueUtils;

/**
 * 字段超链接监听
 * @author zhangjk
 * @ddate 20023-09-11
 */
public class HeadItemlinkListener implements BillItemHyperlinkListener{

	public ListView list;
	
	@Override
	public void hyperlink(BillItemHyperlinkEvent event) {
		//获取超链接的字段
		String key = NullValueUtils.getNullStringValue(event.getItem().getKey());
		//获取行号
		int row  = event.getRow();
		//获取到这一行对应的 
		XshttzVO vo = (XshttzVO) getList().getBillCardPanel().getBillModel().getBodyValueRowVOByVisualValue(row, XshttzVO.class.getName());
		String pk_xshtdj = vo.getPk_xshtdj();
		String htbh = vo.getHtbh();
		try {
			FuncletInitData data = new FuncletInitData();
			data.setInitType(100);
			FuncRegisterVO funvo = null;
			if (key.equals("ykpje")) {
				AggKpsqVO[] queryData = PenetrateQuery.getInstances().getQueryKpsqVOByHt(pk_xshtdj);

				data.setInitData(queryData);
				funvo = WorkbenchEnvironment.getInstance().getFuncRegisterVO("H7H1H181");
			} else if (key.equals("yskje")) {
				AggReceiptVoucherVO[] queryData = PenetrateQuery.getInstances().getQueryReceiptByHt(pk_xshtdj);

				data.setInitData(queryData);
				funvo = WorkbenchEnvironment.getInstance().getFuncRegisterVO("H7H1H135");
			} else if(key.equals("htbh")){//add by hanh
				AggXshtdjVO[] queryData = PenetrateQuery.getInstances().getQueryXshtdjVOByHt(htbh);
				List<AggXshtdjVO> list = new ArrayList<AggXshtdjVO>();
				list.add(queryData[0]);
				data.setInitData(list);
				funvo = WorkbenchEnvironment.getInstance().getFuncRegisterVO("H7H1H168");
			}
			//需要进入节点
			FuncletWindowLauncher.openFuncNodeInTabbedPane(getList().getBillCardPanel(), funvo, data, null, true);
		} catch (BusinessException e) {
			ExceptionUtils.wrappBusinessException(e.getMessage());
		}
	}

	public ListView getList() {
		return list;
	}

	public void setList(ListView list) {
		this.list = list;
	}
	
	private IXshttzMaintain service;

	private IXshttzMaintain getService(){
		if(service == null){
			service = NCLocator.getInstance().lookup(IXshttzMaintain.class);
		}
		return service;
	}

}

2.XshtdjListener.java

package nc.ui.jych.xshtdj.ace.listener;

import java.util.List;

import nc.funcnode.ui.FuncletInitData;
import nc.vo.jych.xshtdj.AggXshtdjVO;

public class XshtdjListener extends nc.ui.pubapp.uif2app.model.DefaultFuncNodeInitDataListener {

	@Override
	public void initData(FuncletInitData data) {
		// TODO 自动生成的方法存根
		if (data != null && data.getInitType() == 100) {
			List<AggXshtdjVO> aggvolist =  (List<AggXshtdjVO>)data.getInitData();
			getModel().initModel(aggvolist.toArray(new AggXshtdjVO[0]));

		} else {
			super.initData(data);
		}
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/106093.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法通过村第十六关-滑动窗口|黄金笔记|结合堆的应用

文章目录 前言堆与滑动窗口结合的问题总结 前言 提示&#xff1a;不论记忆多么痛苦&#xff0c;它属于过去&#xff0c;已经逝去了&#xff0c;我们为什么还执着于它并让它代表我们&#xff1f;我们就这样&#xff0c;所以&#xff0c;我们受苦。 --丹津葩默 这个还是一个比较重…

LSTM 与 GRU

RNN无法处理长距离依赖问题&#xff0c;通俗点就是不能处理一些较长的序列数据&#xff0c;那么今天就来介绍一下两个能处理长距离依赖问题地RNN变种结构&#xff0c;LSTM和GRU。 1. LSTM&#xff08;Long short-term memory&#xff09; 1.1 LSTM结构 上左图是普通RNN结构图…

目标检测技术概述

什么是目标检测&#xff1f; 在计算机视觉众多的技术领域中&#xff0c;目标检测&#xff08;Object Detection&#xff09;也是一项非常基础的任务&#xff0c;图像分割、物体追踪、关键点检测等通常都要依赖于目标检测。在目标检测时&#xff0c;由于每张图像中物体的数量、…

JAVA入门总结回顾

1.常用的DOS命令&#xff1a;DOS窗口常用命令-CSDN博客 2.检查jdk是否安装成功&#xff1a;在cmd中输入java -version或者java或者javac。出现相应的对应显示内容。 3.JDK&#xff0c;JRE之间的关系&#xff1a;JDK是JAVA的开发工具包&#xff0c;JRE是JAVA的的运行环境。JRE…

硬件安全与机器学习的结合

文章目录 1. A HT Detection and Diagnosis Method for Gate-level Netlists based on Machine Learning摘要Introduction 2. 基于多维结构特征的硬件木马检测技术摘要Instruction 3. A Hardware Trojan Detection and Diagnosis Method for Gate-Level Netlists Based on Diff…

非遗主题网站的设计与实现基于PHP实现

包括源码参考论文 下载地址: https://juzhendongli.store/commodity/details/18

Slax Linux 获得增强的会话管理和启动参数选项

Slax Linux 的创建者和维护者托马斯-马特吉切克&#xff08;Tomas Matejicek&#xff09;在自己生日这天&#xff08;生日快乐&#xff01;&#xff09;发布了其小巧便携的 GNU/Linux 发行版的新版本&#xff0c;带来了各种增强功能和错误修复。 新发布的 Slax Linux 版本&…

On Moving Object Segmentation from Monocular Video with Transformers 论文阅读

论文信息 标题&#xff1a;On Moving Object Segmentation from Monocular Video with Transformers 作者&#xff1a; 来源&#xff1a;ICCV 时间&#xff1a;2023 代码地址&#xff1a;暂无 Abstract 通过单个移动摄像机进行移动对象检测和分割是一项具有挑战性的任务&am…

Fabric.js 复制粘贴元素

本文简介 点赞 关注 收藏 学会了 当你要复制一个 fabric 的元素时&#xff0c;你考虑到的是什么&#xff1f;是深拷贝当前选中对象再添加到画布中&#xff1f; 其实&#xff0c;fabric.js 提供了一个克隆方法&#xff0c;在 fabric.js 官网的案例里也有这个demo&#xff1a…

【博士每天一篇文献-算法】Gradient Episodic Memory for Continual Learning

阅读时间&#xff1a;2023-10-26 1 介绍 年份&#xff1a;2017 作者&#xff1a;David Lopez-Paz, Marc’Aurelio Ranzato 期刊&#xff1a;Part of Advances in Neural Information Processing Systems 30 (NIPS 2017) 引用量&#xff1a;2044 针对持续学习中灾难性遗忘问题…

[推荐]Linux安装与配置虚拟机之虚拟机服务器坏境配置

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《Spring与Mybatis集成整合》《Vue.js使用》 ⛺️ 越努力 &#xff0c;越幸运。 一.操作系统 1. 简介 操作系统&#xff08;perating System&#xff0c;简称OS&#xff09;是一种系统软件…

二维码智慧门牌管理系统升级解决方案:一级属性 二级属性

文章目录 前言一、什么是智慧门牌管理系统&#xff1f;二、一级属性 vs. 二级属性三、升级中的实践意义 前言 在本文中&#xff0c;我们将深入探讨二维码智慧门牌管理系统的升级解决方案&#xff0c;特别聚焦于一级属性和二级属性的关键概念。我们将详细解释这些概念&#xff…

计算机网络——理论知识总结(上)

开新番&#xff0c;因为博主备考的学校计网只考察1/6的分值&#xff0c;而且定位偏向于送分题&#xff0c;因此在备考时并没有很高强度的复习。本帖基于王道考研的教辅总结归纳&#xff0c;虽然是408的教材&#xff0c;但忽略其中有难度的部分&#xff0c;如计算题、画图题等&a…

TCP三次握手具体过程

四次挥手 1&#xff09;客户端进程发出连接释放报文&#xff0c;并且停止发送数据。释放数据报文首部&#xff0c;FIN1&#xff0c;其序列号为sequ&#xff08;等于前已经传送过来的数据的最后一个字节的序号加1)&#xff0c;此时&#xff0c;客户端进入FIN_WAIT_1&#xff08…

Mac怎么清理磁盘空间?释放Mac磁盘空间有效方法

相信很多使用macOS系统的小伙伴都收到过提示“磁盘空间已满”消息&#xff0c;尤其是采用SSD固态硬盘的MacBook系列&#xff0c;120G的硬盘空间本就捉襟见肘&#xff0c;使用一段时间后&#xff0c;即使自己没有存放很多大文件&#xff0c; Mac的磁盘很快就满了。那么&#xff…

MR混合现实情景实训教学系统在旅游管理专业中的应用

在旅游管理专业中&#xff0c;MR混合现实情景实训教学系统的主要应用包括但不限于以下几个方面&#xff1a; 1. 实地考察的替代&#xff1a;对于一些无法实地考察的景点或设施&#xff0c;学生可以通过MR系统进行虚拟参观&#xff0c;从而了解其实际情况。这不仅可以减少时间和…

计算机网络之数据链路层(全)

[复习提示] 王道&#xff1a;本章是历年考试中考查的重点。要求在了解数据链路层基本概念和功能的基础上&#xff0c;重点掌握滑动窗口机制、三种可靠传输协议、各种MAC协议、HDLC协议和PPP协议&#xff0c;特别是CSMA/CD协议和以太网帧格式&#xff0c;以及局域网的争用期和最…

c++学习MFC还是QT?

c学习MFC还是QT&#xff1f; 建议学习Qt, Qt开发不仅跨平台&#xff0c;而且社区活跃度和网上的资料也比较多一点&#xff0c;特别是跨平台这一点很重要&#xff0c;最近很多小伙伴找我&#xff0c;说想要一些QT资料&#xff0c;然后我根据自己从业十年经验&#xff0c;熬夜搞了…

Xcode iOS app启用文件共享

在info.plist中添加如下两个配置 Supports opening documents in place Application supports iTunes file sharing 结果都为YES&#xff0c;如下图所示&#xff1a; 然后&#xff0c;iOS设备查看&#xff0c;文件->我的iPhone列表中有一个和你工程名相同的文件夹出现&…

设备管理软件管理系统

从设备检查到设备保养&#xff0c;再到设备维护&#xff0c;全方位视角掌握设备状态的管理软件。让企业员工可以随时随地的查看设备的各种信息&#xff1a;巡检信息、保养计划、备件更换提醒、维修保养资料等。 1、一物一码&#xff0c;建立设备电子档案“身份证” 精准管控每一…