nc65单据穿透

news2024/12/16 6:37:08

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);
		}
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何处理 Python 报错 can‘t multiply sequence by non-int of type float

大多数时候&#xff0c;当你在编程时遇到错误&#xff0c;你可以在错误信息中发现错误发生的原因以及如何解决它。 Python 错误 “TypeError: can’t multiply sequence by non-int of type float” 也不例外。 我准备了这篇文章&#xff0c;向你展示这个错误发生的原因以及如…

目标检测及锚框、IoU

1. 目标检测 物体检测&#xff08;目标检测&#xff09;是计算机视觉和数字图像处理的热门方向&#xff0c;意在判断一幅图像上是否存在感兴趣物体&#xff0c;并给出物体分类及位置等&#xff08;What and Where&#xff09;。本文主要进行物体检测研究背景、发展脉络、相关算…

MySQL的概念和sql语句

数据库的概念 数据库的概念&#xff1a;数据库是用来组织&#xff08;各个数据之间是有关联&#xff0c;是按规则组织起来的&#xff09;&#xff0c;存储和管理&#xff08;增&#xff0c;删&#xff0c;改&#xff0c;查&#xff09;的仓库 数据库管理系统&#xff08;DBMS&…

写保护设置——三、I2C EEPROM

三、I2C EEPROM I2C通讯的EEPROM只有硬保护&#xff0c;没有软保护。 以AT24C01A/02/04/16型EEPROM和AT24C02A/04A/08A/16A型EEPROM为例&#xff0c;管脚定义和写保护WP功能分别如下。 &#xff08;1&#xff09;AT24C01A/02/04/16型EEPROM 规格书&#xff1a; AT24C01A/02…

软件测试行情不好,我还是啃下了27K的offer

o “会代码吗&#xff1f;” o “会&#xff0c;Java、Python我都会一些&#xff01;” o “有没有用代码开发过一些测试工具平台呢&#xff1f;” o “额。。。这个。。。没做过。。。” o “那你回去等消息吧” 软件测试行业发展到今天&#xff0c;测试人员会代码&#x…

Jtti:Apache服务的反向代理及负载均衡怎么配置

配置Apache服务的反向代理和负载均衡可以帮助您分散负载并提高应用程序的可用性和性能。下面是一些通用的步骤&#xff0c;以配置Apache反向代理和负载均衡。 1. 安装和配置Apache&#xff1a; 确保您已经安装了Apache HTTP服务器。通常&#xff0c;Apache的配置文件位于/etc…

城中村智能水电表改造,提升居民生活品质

随着我国城市化进程的加快&#xff0c;城中村成为了城市发展的焦点。然而&#xff0c;由于历史原因&#xff0c;城中村的水电设施普遍存在老化、破损等问题&#xff0c;给居民生活带来诸多不便。为了提升城中村居民的生活品质&#xff0c;智能水电表的推广和改造已成为当务之急…

css:button实现el-radio效果

先看最终效果&#xff1a; ​​​ 思路&#xff1a; 一、 首先准备好按钮内容&#xff1a;const a [one,two,three] 将按钮循环展示出来&#xff0c;并设置一些样式&#xff0c;将按钮背景透明&#xff1a; <button v-for"(item,index) in a" :key"in…

创造健康、造福一方,强强联合共筑新疆妇幼健康梦

改善优生优育全程服务&#xff0c;提供优质生育全程医疗保健服务&#xff0c;强化孕前优生健康检查、产前筛查以及不孕不育诊治服务等&#xff0c;是国家《“十四五”国民健康规划》的重要内容。为向全疆群众提供国内一流的妇幼保健诊疗服务&#xff0c;满足群众“生的出、生的…

【威联通】共享文件夹设置

1. 前期准备 下载 QNAPQsyncClient 然后安装此软件&#xff0c;安装的目标文件夹可以更换到其他盘&#xff0c;如下图所示 点击 确定 点击 完成 弹出框中选择 中国 然后点击 套用 点击 跳过 点击 完成 勾选方框&#xff0c;然后点击 确定 第一个框中输入需要同步的 NAS IP 地址…

MFA-Conformer

基于多尺度特征聚合Conformer说话人识别模型的创新与应用 论文&#xff1a;https://arxiv.org/abs/2203.15249 代码&#xff1a;GitHub - zyzisyz/mfa_conformer 收录于 INTERSPEECH 2022 1. 简介 本文由清华大学与腾讯科技&#xff08;北京&#xff09;有限公司、台湾大学…

Android intent的一些小使用

目录&#xff1a; 1. Test5.java2. activity_main5.xml3. Empty.java (这个是用来带参数打开Activity按钮用的)4. activity_empty.xml5. 总结 一些基本的问题就不进行说明了&#xff0c;直接上代码&#xff01;&#xff01;&#xff01; // 最后的隐形intent和带返回值没有解决…

2023最新短剧小程序搭建,短剧分销系统功能介绍

#短剧小程序# 基础功能最近新增功能 1.对接流量主变现 2.影视作品观看 3.支持创作者入驻 4.PC独立后台管理 5.壁纸&#xff0c;表情包下载 6.内容管理分类&#xff0c;专题分类 7.可单次付费或月会员 8.会员开通与支付功能 9.微信端使用 10.后台数据清晰明了 11.可定制搭建 新…

安装Redis使用make命令报异常

报错信息如下&#xff1a; 解决方案&#xff1a; 安装 gcc yum install gcc-c -y清空编译失败残留文件&#xff1a; make distclean使用 make 命令进行编译&#xff1a; make -j 2 PREFIX/usr/local/redis install

JAVA实现生活废品回收系统 开源

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案&#xff0c;旨在鼓…

缓解光纤激光切割机老化之如何保养光纤激光切割机的光学镜片

激光切割头具备极高的精密度和昂贵的价格&#xff0c;是光纤激光切割机最关键的运行部分之一。在日常的光纤激光切割机维修过程中频繁出现的关于切割头使用寿命的问题就是内部光学镜片的污染及损坏。 部分导致光纤激光切割机激光切割头光学镜片污染的原因主要包括&#xff1a;对…

安卓开发实例:随机数

点击按钮生成一个1-100之间的随机数 activity_random_number.xml <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayoutxmlns:android"http://schemas.android.com/apk/res/android"xmlns:a…

Java实现电子元器件管理系统

目录 一、摘要1.1 项目简介1.2 项目录屏 二、研究内容三、界面展示3.1 登录&注册&主页3.2 元器件单位模块3.3 元器件仓库模块3.4 元器件供应商模块3.5 元器件品类模块3.6 元器件明细模块3.7 元器件类型模块3.8 元器件采购模块3.9 元器件领用模块3.10 系统基础模块 四、…

javascript错误处理和调试工具

目录 错误处理 try-catch语句 throw语句 Promise错误处理 调试工具 控制台打印 断点调试器 错误堆栈追踪 结论 1. 错误处理 2. 调试工具 3. 最佳实践和注意事项 结论 错误处理 try-catch语句 try-catch语句是处理JavaScript错误的基本方法。它允许我们尝试执行可…