用友nc65 uap开发参照节点数据拉单之一

用友nc65 uap开发参照节点数据拉单之一
一.如图所示:通过参照按钮调用查询模版查询合同节点数据,查询出符合条件的数据显示表头数据在面板,通过选择其中一条数据拉单参照到合同变更节点(编辑态)

调用查询面板

弹出框

将选中的数据显示在节点中

二、代码
xml按钮配置
<bean id="refAction" class="nc.ui.fdc_pr.h303113517.actions.RefAction">
	<property name="model"><ref bean="bmModel"/></property>
		<property name="editor" ref="billForm" />
		<property name="defaultUIF2RefEditor" ref="defaultUIF2RefEditor"></property>
		<property name="exceptionHandler"><ref bean="exceptionHandler" /></property>
	</bean>

	<!-- 导入编辑器 -->
	<bean id="defaultUIF2RefEditor" class="nc.itf.fdc.pub.DefaultUIF2RefEditor">
		<property name="addAction" ref="addAction" />
		<property name="billcardPanelEditor" ref="billForm" />
		<property name="appModel" ref="bmModel" />
	</bean>
按钮类
package nc.ui.fdc_pr.h303113517.actions;

import java.awt.Container;
import java.awt.event.ActionEvent;

import nc.bs.framework.common.NCLocator;
import nc.itf.fdc.pub.DefaultUIF2RefEditor;
import nc.itf.fdc_pr.IH303113510Maintain;
import nc.itf.fdc_pr.IH303201525Maintain;
import nc.ui.pub.beans.UIDialog;
import nc.ui.pub.pf.BillSourceVar;
import nc.ui.pubapp.uif2app.actions.AbstractReferenceAction;
import nc.ui.pubapp.uif2app.actions.AddAction;
import nc.ui.pubapp.uif2app.view.ShowUpableBillForm;
import nc.ui.querytemplate.IBillReferQuery;
import nc.ui.querytemplate.QueryConditionDLG;
import nc.ui.uif2.model.AbstractAppModel;
import nc.vo.fdc_pr.h303113510.AggRentPact;
import nc.vo.fdc_pr.h303113510.BailPact;
import nc.vo.fdc_pr.h303113510.HousePact;
import nc.vo.fdc_pr.h303113510.LesseePact;
import nc.vo.fdc_pr.h303113510.StandardPact;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.pubapp.AppContext;
import nc.vo.querytemplate.TemplateInfo;

/**
 * 
 * @author: zenglong
 * @ClassName: RefAction 
 * @Description: 参照类
 * @date: 2017年1月16日
 */
public class RefAction extends AbstractReferenceAction {
	private static final long serialVersionUID = -3387516993124229948L;
	private AbstractAppModel model;
	private AddAction addAction;
	private ShowUpableBillForm editor;
	private DefaultUIF2RefEditor defaultUIF2RefEditor = null;

	IH303201525Maintain query = NCLocator.getInstance().lookup(
			IH303201525Maintain.class);

	public AbstractAppModel getModel() {
		return model;
	}

	public void setModel(AbstractAppModel model) {
		this.model = model;
	}

	private IBillReferQuery dlg = null;
	private String funNode = "H303113510";

	public RefAction() {
		// TODO 自动生成的构造函数存根
		this.setBtnName("参照");
		this.setCode("refAction");

	}

	@Override
	public void doAction(ActionEvent arg0) throws Exception {
		//=====================查询模版显示============================
		if (dlg == null) {
			dlg = setConditionClient(null, model.getContext().getEntranceUI(),
					model.getContext().getPk_loginUser(), funNode, model
							.getContext().getPk_group());
		}
		if (dlg.showModal() != UIDialog.ID_OK) {
			return;
		}
		//======================单据模版显示===========================
		RefDlg bsDlg = createBillsourceDLG();
		// 加载模版
		bsDlg.addBillUI();
		// 加载数据
		bsDlg.loadHeadData();

		if (bsDlg.showModal() != UIDialog.ID_OK) {
			return;
		}
		//======================确定按钮后操作===========================
		AggRentPact[] m_tmpRetVos = (AggRentPact[]) bsDlg.getRetVos();// 获得单据面板数据
		if (null == m_tmpRetVos) {
			return;
		}

		bsDlg.setQueyDlg(dlg); // 放入查询模板对话框
		getDefaultUIF2RefEditor().addNew();
		getDefaultUIF2RefEditor().setValue(getAggVo(m_tmpRetVos[0]));

	}
	
	/**
	 * 因为只能达到当前显示面板的aggvo  所以还要通过主键查询
	 * @param vo
	 * @return
	 */
	public AggRentPact getAggVo(AggRentPact vo){
		IH303113510Maintain  service =NCLocator.getInstance().lookup(IH303113510Maintain.class);
		AggRentPact[] aggVo=service.query(" and nvl(dr,0)=0 and pk_head='"+vo.getParentVO().getPk_head()+"'");
		aggVo[0].getParentVO().setBexcgprom(UFBoolean.TRUE);//合同变更区别
		aggVo[0].getParentVO().setFversion(-2);//版本号设置为-2(便于后面修改)
		aggVo[0].getParentVO().setVdef20(aggVo[0].getParentVO().getPk_head());
		aggVo[0].getParentVO().setPk_pact(aggVo[0].getParentVO().getPk_head());
		aggVo[0].getParentVO().setPk_head("");
		aggVo[0].getParentVO().setApprovestatus(-1);//状态重新改变
		aggVo[0].getParentVO().setBillno("");//单据号
		StandardPact[] stanPact=(StandardPact[]) aggVo[0].getChildren(StandardPact.class);
		if (stanPact!=null) {
			for (StandardPact st : stanPact) {
				st.setReserve5(UFBoolean.TRUE);
				st.setPk_body("");
			}
		}
		//保证金,租户,房产主键清空
		BailPact[] bailPact= (BailPact[]) aggVo[0].getChildren(BailPact.class);
		if (bailPact!=null) {
		for (BailPact bail : bailPact) {
			bail.setPk_body("");
		 }
		}
		LesseePact[] lesseePact = (LesseePact[]) aggVo[0].getChildren(LesseePact.class);
		if (lesseePact!=null) {
			for (LesseePact lessee : lesseePact) {
				lessee.setPk_body("");
			}
		}
		HousePact[] houseVos = (HousePact[]) aggVo[0].getChildren(HousePact.class);
		if (houseVos!=null) {
			for (HousePact house : houseVos) {
				house.setPk_body("");
			}
		}
		return aggVo[0];
	}

	private RefDlg createBillsourceDLG() {

		// 载入来源单据展现对话框,并显示
		BillSourceVar bsVar = new BillSourceVar();
		bsVar.setBillType("H318");
		bsVar.setCurrBillOrTranstype("H318");
		bsVar.setFunNode("H303113511");
		//查询模板标识
		bsVar.setNodeKey("ref");
		bsVar.setPk_group(AppContext.getInstance().getPkGroup());
		bsVar.setPkField("pk_head");
		bsVar.setUserId(AppContext.getInstance().getPkUser());
		bsVar.setWhereStr(dlg.getWhereSQL());

		return new RefDlg(getModel().getContext().getEntranceUI(),
				bsVar);

	}

	/**
	 * 查询模板构建
	 * */
	private IBillReferQuery setConditionClient(String templateId,
			Container parent, final String pkOperator, final String funNode,
			String pkCorp) {
		TemplateInfo ti = new TemplateInfo();
		ti.setTemplateId(templateId);
		ti.setPk_Org(pkCorp);
		ti.setUserid(pkOperator);
		ti.setCurrentCorpPk(pkCorp);
		ti.setFunNode(funNode);
		ti.setNodekey("qt");

		QueryConditionDLG qcDlg = new QueryConditionDLG(parent, ti);

		qcDlg.setVisibleNormalPanel(true);
		return qcDlg;
	}

	public AddAction getAdd() {
		return addAction;
	}

	public void setAdd(AddAction addAction) {
		this.addAction = addAction;
	}

	public ShowUpableBillForm getEditor() {
		return editor;
	}

	public void setEditor(ShowUpableBillForm editor) {
		this.editor = editor;
	}

	public DefaultUIF2RefEditor getDefaultUIF2RefEditor() {
		return defaultUIF2RefEditor;
	}

	public void setDefaultUIF2RefEditor(
			DefaultUIF2RefEditor defaultUIF2RefEditor) {
		this.defaultUIF2RefEditor = defaultUIF2RefEditor;
	}

}
弹窗面板类
package nc.ui.fdc_pr.h303113517.actions;

import java.awt.BorderLayout;
import java.awt.Container;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JPanel;

import nc.bs.framework.common.NCLocator;
import nc.bs.logging.Logger;
import nc.funcnode.ui.AbstractFunclet;
import nc.itf.fdc_pr.IH303113510Maintain;
import nc.ui.pub.beans.MessageDialog;
import nc.ui.pub.beans.UIButton;
import nc.ui.pub.beans.UIDialog;
import nc.ui.pub.beans.UIPanel;
import nc.ui.pub.bill.BillListPanel;
import nc.ui.pub.pf.BillSourceDLG;
import nc.ui.pub.pf.BillSourceVar;
import nc.vo.fdc_pr.h303113510.AggRentPact;
import nc.vo.fdc_pr.h303113510.RentPact;
import nc.vo.pub.AggregatedValueObject;

/**
 * 
 * @author: zenglong
 * @ClassName: RefDlg 
 * @Description:参照查询结果显示面板 
 * @date: 2017年1月16日
 */
public class RefDlg  extends BillSourceDLG {

	private static final long serialVersionUID = 1L;

	public RefDlg(Container parent, BillSourceVar bsVar) {
		super(parent, bsVar);
		// TODO 自动生成的构造函数存根
	}
	
	@Override
	public void loadHeadData() {
		// TODO 自动生成的方法存根
		super.loadHeadData();
	}
	
	public String getHeadCondition() {
		return "approvestatus = 1 and nvl(dr,0)=0 ";
	}
	
	@Override
	public AggregatedValueObject[] getRetVos() {
		
		return super.getRetVos();
	}

	
	public void loadBodyData(int row) {
		try {
			
		} catch (Exception e) {
			Logger.error(e.getMessage(), e);
		}

	}
	
	/**
	 * "确定"按钮的响应,从界面获取被选单据VO
	 */
	public void onOk() {
		if (getbillListPanel().getHeadBillModel().getRowCount() > 0) {
			AggregatedValueObject[] selectedBillVOs = getbillListPanel().getMultiSelectedVOs(m_billVo,
					m_billHeadVo, m_billBodyVo);
			if(selectedBillVOs.length > 1){
				MessageDialog.showOkCancelDlg(this.getUIDialogContentPane(),
						"提示", "只能选择一行数据!");
				return;
			}
			retBillVo = selectedBillVOs.length > 0 ? selectedBillVOs[0] : null;
			retBillVos = selectedBillVOs;
		}
		this.closeOK();
	}

}






  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值