NC65 重写系统按钮类

前言: 对单据的操作 离不开按钮事件 编辑事件等等

            按钮即增删改查 或者是自定义按钮

            (但是同样对按钮的操作 用友提供了拦截器 用来处理按钮前与按钮后事件  可查看如下链接

            描述了拦截器的用法案例

            https://blog.csdn.net/qq_19004705/article/details/82658069)

            下面针对按钮的重写进行案例介绍

举例:按钮保存类重写

需求:在按钮保存后执行更新数据

1、重写按钮类 既然是重写 那么我们先要找到保存按钮类是什么?

      打开配置文件,修改前的配置文件如下所示:

	<!--======= 动作:[newActions] [保存] ===========-->
	<bean id="saveScriptAction" class="nc.ui.pubapp.uif2app.actions.pflow.SaveScriptAction">
		<property name="model"><ref bean="bmModel"/></property> 
		<property name="editor"><ref bean="billForm"/></property>
		<property name="billType" value="OA06" />
		<property name="filledUpInFlow" value="true" />
		<property name="actionName" value="SAVEBASE" />
		<property name="exceptionHandler"><ref bean="exceptionHandler" /></property>
	</bean>

    

2、新建一个类 继承 nc.ui.pubapp.uif2app.actions.pflow.SaveScriptAction

      重写doAction方法,这里要是注意一定要实现 super.doAction(e);

      不然数据无法保存

3、代码案例:   

package nc.ui.fdgyl.oahkjh.action;
 
import java.awt.event.ActionEvent;
import java.util.Properties;
 
import nc.bs.framework.common.NCLocator;
import nc.itf.fdgyl.IFdDBService;
import nc.itf.fdgyl.IOahkjhMaintain;
import nc.ui.fdgyl.oahkjh.action.RefreshSingleAction;
import nc.ui.pubapp.uif2app.actions.pflow.SaveScriptAction;
import nc.ui.pubapp.uif2app.query2.model.IModelDataManager;
import nc.ui.pubapp.uif2app.view.BillForm;
import nc.ui.tools.query.PubTools;
import nc.vo.fdgyl.oahkjh.AggOahkjhHVO;
import nc.vo.fdgyl.oahkjh.OahkjhBVO;
import nc.vo.fdgyl.oahkjh.OahkjhHVO;
 
public class SaveHkjhAction extends SaveScriptAction{
 
	private static final long serialVersionUID = 1L;
  
    private IModelDataManager dataManager;
	public IModelDataManager getDataManager() {
		return this.dataManager;
	}
	public void setDataManager(IModelDataManager dataManager) {
		this.dataManager = dataManager;
	}
	private BillForm editor;
    public BillForm getEditor() {
		return editor;
	}
	public void setEditor(BillForm editor) {
		this.editor = editor;
	}
    private RefreshSingleAction refreshaction;
	public RefreshSingleAction getRefreshaction() {
		return refreshaction;
	}
	public void setRefreshaction(RefreshSingleAction refreshaction) {
		this.refreshaction = refreshaction;
	}
	@Override
	public void doAction(ActionEvent e) throws Exception {
		super.doAction(e);
		AggOahkjhHVO aggvo = (AggOahkjhHVO)this.getModel().getSelectedData();
		IOahkjhMaintain iservice = (IOahkjhMaintain) NCLocator.getInstance().lookup(
				IOahkjhMaintain.class);
		IFdDBService iquery = (IFdDBService) NCLocator.getInstance().lookup(
				IFdDBService.class);
		Properties p = PubTools.getParameterInfo();
		String design = p.getProperty("design");
		if (aggvo == null){
			return;
		}
		OahkjhHVO hvo = (OahkjhHVO) aggvo.getParentVO();
		Object objsfsp = hvo.getAttributeValue("sfsp");
		String user = this.model.getContext().getPk_loginUser();// 当前登录用户
		String pk_oahkjh_h =  hvo.getAttributeValue("pk_oahkjh_h").toString();
		String vbillcode   =  hvo.getAttributeValue("vbillcode").toString();
		if(objsfsp!=null&&"Y".equals(objsfsp.toString()))
		{
		    iservice.CreateAggoafkdHVOS(user, pk_oahkjh_h, vbillcode);
		}
		//回写金额 --->得到界面数据
		OahkjhBVO[] bvos = (OahkjhBVO[]) getEditor().getBillCardPanel().getBillModel().getBodyValueVOs(OahkjhBVO.class.getName());
		StringBuffer sbupdate = new StringBuffer();
		String sql = "";
		if(bvos!=null)
		{
			for(int i = 0 ;i <bvos.length ; i++)
			{
				OahkjhBVO tempbvo = bvos[i];
				Object objlsh = tempbvo.getAttributeValue("nc_lsh");
				if(objlsh==null)
					continue;
				String lsh = objlsh.toString();
				Object objfkfp = tempbvo.getAttributeValue("nc_fkfp");
				if(objfkfp==null)
					continue;
				String fkfp = objfkfp.toString();
				double oldfkje = iservice.getByfpjeForHkjh(lsh, vbillcode)+Double.parseDouble(fkfp);
				sql = " update fdgyl_oadjtb_h set nc_syje =(nc_zjje-"+oldfkje+") where nc_lsh = '"+lsh+"';";
				sbupdate.append(sql);	
			}
			if(sbupdate!=null&&sbupdate.length()>0)
			{
				iquery.updateDatas(sbupdate, design);
			}
		}
	}
}

4、配置文件调整:修改后的按钮配置

	<!--======= 动作:[newActions] [保存] ===========-->
	<bean id="saveScriptAction" class="nc.ui.fdgyl.oahkjh.action.SaveHkjhAction">
		<property name="model"><ref bean="bmModel"/></property> 
		<property name="editor"><ref bean="billForm"/></property>
		<property name="billType" value="OA06" />
		<property name="filledUpInFlow" value="true" />
		<property name="actionName" value="SAVEBASE" />
		<property name="exceptionHandler"><ref bean="exceptionHandler" /></property>
	</bean>

5、清理缓存 测试

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值