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

来源:互联网 发布:伍声2009淘宝店服装店 编辑:程序博客网 时间:2024/04/30 03:39
用友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");}@Overridepublic 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 自动生成的构造函数存根}@Overridepublic void loadHeadData() {// TODO 自动生成的方法存根super.loadHeadData();}public String getHeadCondition() {return "approvestatus = 1 and nvl(dr,0)=0 ";}@Overridepublic 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();}}






0 0
原创粉丝点击