单据开发-业务单据List界面代码篇(GUI端)
8人赞赏了该文章
992次浏览
编辑于2022年03月18日 08:41:17
注公众号获取更多金蝶EAS开发方面的内容
因论坛版权要求,部分图片无法显示,可以直接方位微信公众号链接
https://mp.weixin.qq.com/s/lrbsxsux3Y98lbjmtd7Bqw
本篇文档介绍业务单据List界面的开发
和基础资料相同不需要写任何代码就可以实现增删改查
主要介绍List界面一些常用的代码
01
CU数据隔离
/** * list是否需要CU隔离, */ protected boolean isIgnoreCUFilter() { return false; }
02
Edit界面打开方式
/** * 设置edit界面打开方式为 newTab */ protected String getEditUIModal() { return UIFactoryName.NEWTAB; }
03
初始化按钮控制状态
/** * 初始化按钮状态 */ protected void initWorkButton() { super.initWorkButton(); btnAudit.setEnabled(true); //按钮可用 btnUnAudit.setEnabled(true); //按钮可用 //会集成父类很多无用的按钮,可以在这里通过setVisible 设置不可见 }
04
页面加载
/** * 页面加载 */ public void onLoad() throws Exception { super.onLoad(); //可以设置按钮的状态 //设置金额格式 String numberFormat = "%r-[=]{#,##0.00}n"; this.tblMain.getColumn("creditAmount").getStyleAttributes().setNumberFormat(numberFormat); }
05
向EDIT界面传递参数
/** * 通过ctx传递参数 */ protected void prepareUIContext(UIContext uiContext, ActionEvent e) { super.prepareUIContext(uiContext, e); uiContext.put("paramKey", "paramVal"); // 新增时 向EDIT 界面传递参数,如果需要可以使用 }
06
数据修改前验证
/** * 修改按钮aciton */ public void actionEdit_actionPerformed(ActionEvent e) throws Exception { //需要在 点击按钮前验证,故验证方法写在 supper之前 checkSelected(); //操作前检查是否选中行,父类方法 直接调用 String id = getSelectedKeyValue(); //获取选中行的ID,父类方法直接调用 ReWorkFlowUtil.isBillInWorkflow(id);//判断单据是否在流程中心,框架工具栏直接调用 ExpenseBillInfo info = ExpenseBillFactory.getRemoteInstance().getExpenseBillInfo(new ObjectUuidPK(id)); if(info.getBillState().equals(billStateEnum.AUDITING) ||info.getBillState().equals(billStateEnum.AUDIT)){ MsgBox.showWarning(this, "单据处于审批中/已审批状态,不能修改"); SysUtil.abort();//结束进程 } super.actionEdit_actionPerformed(e); }
07
数据删除前验证
/** * 删除按钮aciton */ public void actionRemove_actionPerformed(ActionEvent e) throws Exception { //需要在 点击按钮前验证,故验证方法写在 supper之前 checkSelected(); //操作前检查是否选中行,父类方法 直接调用 String id = getSelectedKeyValue(); //获取选中行的ID,父类方法直接调用 ReWorkFlowUtil.isBillInWorkflow(id);//判断单据是否在流程中心,框架工具栏直接调用 ExpenseBillInfo info = ExpenseBillFactory.getRemoteInstance().getExpenseBillInfo(new ObjectUuidPK(id)); if(info.getBillState().equals(billStateEnum.AUDITING)||info.getBillState().equals(billStateEnum.AUDIT)){ MsgBox.showWarning(this, "单据处于审批中/已审批状态,不能删除"); SysUtil.abort();//结束进程 } super.actionRemove_actionPerformed(e); }
08
数据审核
/** * 审核按钮aciton */ public void actionAudit_actionPerformed(ActionEvent e) throws Exception { // super.actionAudit_actionPerformed(e); // action为自己手动添加的action ,super 可以去掉 checkSelected(); //操作前检查是否选中行,父类方法 直接调用 String id = getSelectedKeyValue(); //获取选中行的ID,父类方法直接调用 ReWorkFlowUtil.isBillInWorkflow(id);//判断单据是否在流程中心,框架工具栏直接调用 IExpenseBill iBill = ExpenseBillFactory.getRemoteInstance(); ExpenseBillInfo info = iBill.getExpenseBillInfo(new ObjectUuidPK(id));//获取单据对象 if(!info.getBillState().equals(billStateEnum.SUBMIT)){ MsgBox.showWarning(this, "单据处于非已提交状态,不能直接审核"); SysUtil.abort();//结束进程 }else{ iBill.unpassAudit(new ObjectUuidPK(id), info); //调用后台bean方法,更新单据状态及其他 } refreshList(); }
09
数据反审核
/** * 反审核按钮aciton */ public void actionUnAudit_actionPerformed(ActionEvent e) throws Exception { // super.actionUnAudit_actionPerformed(e); // action为自己手动添加的action ,super 可以去掉 checkSelected(); //操作前检查是否选中行,父类方法 直接调用 String id = getSelectedKeyValue(); //获取选中行的ID,父类方法直接调用 IExpenseBill iBill = ExpenseBillFactory.getRemoteInstance(); ExpenseBillInfo info = iBill.getExpenseBillInfo(new ObjectUuidPK(id));//获取单据对象 if(!info.getBillState().equals(billStateEnum.AUDIT)){ MsgBox.showWarning(this, "单据处于非已审批状态,不能直接反审核"); SysUtil.abort();//结束进程 }else{ iBill.passAudit(new ObjectUuidPK(id), info); //调用后台bean方法,更新单据状态及其他 } refreshList(); }
10
排序与过滤
/** * list添加排序与过滤 */ protected IQueryExecutor getQueryExecutor(IMetaDataPK arg0, EntityViewInfo arg1) { EntityViewInfo view = (EntityViewInfo) arg1.clone(); //复制一个view view.getSorter().add(new SorterItemInfo("number")); //添加默认排序 //以下为添加默认过滤, 如自己新增的单子只有自己能看到(创建人必须等于当前人) //也可以写一些动态的排序,如左树右表结构,需要动态传递选中树节点的值 // FilterInfo filter = view.getFilter()==null?new FilterInfo():view.getFilter(); // filter.getFilterItems().add(new FilterItemInfo("creater.id",value,CompareType.EQUALS)); // view.setFilter(filter); return super.getQueryExecutor(arg0, view); }
11
table加载后修改值
/** * table加载完成后,修改相应的值 */ protected void afterTableFillData(KDTDataRequestEvent e) { super.afterTableFillData(e); //循环行 for (int i = e.getFirstRow(); i <= e.getLastRow(); i++) { //获取行对象 IRow row = this.tblMain.getRow(i); //获取行ID String id = (String) row.getCell("id").getValue(); //把创建人列,全部设置为张三 row.getCell("creator.name").setValue("张三"); //同理也可以单价*数量=金额来进行相应的计算 // BigDecimal price = (BigDecimal) row.getCell("price").getValue(); //获取单价 // BigDecimal count = (BigDecimal) row.getCell("count").getValue(); //获取数量 // row.getCell("amount").setValue(price.multiply(count) ); } }
12
整体展示
注:
为方便演示修改,删除,审核和反审核中存着大量重复代码,实际项目中可以进行封装
欢迎加入QQ群:557537072
关注微信公众号获取更多资讯
本文转载自:微信公众号
作者:黑白
原文链接:https://mp.weixin.qq.com/s/lrbsxsux3Y98lbjmtd7Bqw
赞 8
8人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读