前言: 对单据的操作 离不开按钮事件 编辑事件等等
按钮即增删改查 或者是自定义按钮
(但是同样对按钮的操作 用友提供了拦截器 用来处理按钮前与按钮后事件 可查看如下链接
描述了拦截器的用法案例
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、清理缓存 测试