收藏 分享(赏)

STUDIO生成主子孙单据开发说明.doc

上传人:精品资料 文档编号:10507015 上传时间:2019-11-24 格式:DOC 页数:42 大小:4.20MB
下载 相关 举报
STUDIO生成主子孙单据开发说明.doc_第1页
第1页 / 共42页
STUDIO生成主子孙单据开发说明.doc_第2页
第2页 / 共42页
STUDIO生成主子孙单据开发说明.doc_第3页
第3页 / 共42页
STUDIO生成主子孙单据开发说明.doc_第4页
第4页 / 共42页
STUDIO生成主子孙单据开发说明.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

1、 主子孙单据开发说明一元数据设计主子孙单据需要设计如上图的元数据模型,现在以上图元数据模型为例,叙述开发主子孙单据过程设计主子孙元数据,实体之间的对应关系都为组合关系,这和设计主子表单据类似。只是有几点需要注意:1. 点击主表实体(任务) 设计如下访问策略设置为 bodyOfAggVOAccess2.点击子表实体(分摊任务接收方) 设计如下,访问策略需要设计为 PojoAccessor2. 点击孙表实体(接收方子表) 设计如下3. 只有主表实体的类型为 AggVO,子表实体和孙表实体都为 NCVO二生成 VO点击生成 Java 代码,会生成如图几个 VO 类,需要注意的几点,必须在子表 VO

2、类中加上: 如图的孙表的属性,属性名字必须和单据模板对应的页签名字一样(这个是 SendVO 中加的,RecieveVO 也是同样的加上),加上这个属性时为了在保存的时候,能够把孙表的信息一块存入表中.同时还需要再孙表的 VO 类中加上 如图的属性(这个是 SendChildVO 中加的,RecieveChildVO 也同样 )。三设计模板设计完元数据和生成 VO 后,开始进行手工配置,这个节点没法使用向导生成,需要自行进行功能节点注册,菜单注册,单据模板初始化等等操作。这里需要说明是在设计单据模板。根据元数据,首先设计一个如下图样的主子表的模板接着再设计一个孙表模板:因为这里孙表实体是两个,

3、所以还需要再设计一个孙表模板最后进行功能节点默认模板设置:如下图:这里需要注意,节点标示一定要写,这里会在之后的 xml 配置中用到这个节点标识。四Xml 配置1.设计 model,主子孙界面需要设计如下图的 model2.元数据转换工厂:一个是主表和子表用,一个是孙表用3.数据模型和模板容器,如下图,其中 nodekeies 和之前配置的节点标识对应上4. 界面元素 xml:以下这个是孙表空行过滤,对应的页签 code,一定要和你单据模板初始化中的页签code 一样5. 单据操作代理这里的页签 code 和上面的一样,必须和单据模板里面设置的页签 code 一样以上 XML 是比较重要的部分

4、,全部的 XML 有附件,这里就不全部给出了。五开发中需要注意的问题:XML 配置完之后,就能够出现如图的主子孙界面了。不过主子孙单据开发和平常的单据会有些区别,这里一一说明:1. 界面初始化数据:界面初始化会用到 ModelDataManager 类,这个类又会调用代理类,来执行查询的数据,返回的数据才通过 ModelDataManager 来初始化到界面上:首先代理类必须继承 AbstractGrandQueryService 类然后开始远程调用查询。后台查询方法如下:需要注意的是:这里会专门用到查询孙表的方法,不然查询出来的数据没有孙表数据。如果不用这个封装好的类,那可以自己定义一个查询

5、出封装好 vo 的方法,使其是主子孙 VO:Overridepublic AggMgsSchoolVO queryAllData(String whereSql)throws BusinessException AggMgsSchoolVO aggVOs = null;/EfficientBillQuery是根据sql 条件(以and开始)进行单据VO高效查询的工具类EfficientBillQuery efq = new EfficientBillQuery(AggMgsSchoolVO.class);try aggVOs = efq.query(whereSql); catch (Exce

6、ption e) throw new BusinessException(e.getMessage();if(aggVOs.length 0)for (int j = 0; j 0)for (int j = 0; j tas = (List) bd.retrieveByClause(MgsTeacheraVO.class, “dr = 0 and pk_c_a in“+pk_c_a_lists);/查询出MgsTeacherbVO数据List tbs = (List) bd.retrieveByClause(MgsTeacherbVO.class, “dr = 0 and pk_c_b in“

7、+pk_c_b_lists);/封装为主子孙的VOfor(int k = 0; k lavos = new HashSet(); String pk_c_a = mgscai.getPk_c_a();for(int j = 0 ; j lbvos = new HashSet(); String pk_c_b = mgscbi.getPk_c_b();for(int j = 0 ; j 这是一个主子孙单据单据简化工具.在保存前,打断点看看孙表数据是否传到后台,如下图:前台代码需要新增:在保存按钮里面,注入主子孙管理的 model,再保存方法里面再调用如图红线标注的方法 保存数据以后,界面依然是卡

8、片界面,如果此时不做特殊处理,那么返回到列表界面的时候,当前选中的数据就是增加前选中的数据,所以我们需要在返回按钮当中做特殊的处理。重写返回按钮,强制发一个事件即可。nc.ui.xgh_study.maingrand.action.UEReturnActionEx同样修改,删除和新增类似这里不一一说明。3. 第一次打开界面问题主子孙界面第一次在打开界面时,可能孙表模板被隐藏,第二次打开才能显示,这里的解决办法是:列表界面:重写这个类,ponents.grand.ListGrandPanelComposite将 readListCacheInfo()方法重写卡片界面类似如果孙表的数据不能显示,在

9、数据初始化的时候代码如下:4. 卡片界面保存问题需要重写这个类ponents.grand.CardGrandPanelComposite在初始化界面的时候调用如下方法:/* 重写下初始化方法 平台代码没有考虑多页签的问题 需要给每个子页签都添加上伪列* * param mainBillForm* void TODO(参数说明)*/private void constructPreColumBillItem(BillForm mainBillForm) String bodyTableCodes = mainBillForm.getBillCardPanel().getBillData().ge

10、tBodyTableCodes();for (int i = 0; i 0)continue;/ 添加伪列操作BillItem bodyItems = billModel.getBodyItems();BillItem newItem = new BillItem();BillItem newItems = Arrays.copyOf(bodyItems, bodyItems.length + 1);newItem.setKey(“precolumn“);newItem.setShow(false);newItem.setNull(false);newItem.setShowOrder(bod

11、yItems.length + 1);newItemsbodyItems.length = newItem;billModel.setBodyItems(newItems);mainBillForm.getBillCardPanel().getBodyPanel(bodyTableCodesi).setTableModel(billModel);在保存按钮的 doAction 方法中需要修改为如下代码,这样自己手动增加伪列,否则在保存的时候就会显示错误数据。5. 在主子孙单据中,由于是将一个主子表和一个孙表糅合在一起,所以在操作列表界面或者是卡片界面时都是通过ponents.grand.Lis

12、tGrandPanelComposite 需要重写的方法:private void tabChangeProcess() / 获得当前选中行int currentRow = (BillListView) this.mainPanel).getBillListPanel().getBodyTable().getSelectedRow();String currentbodyTabCode = (BillListView) this.getMainPanel().getBillListPanel().getChildListPanel().getTableCode();/ 根据当前子页签获取孙表v

13、iewBillListView grandListView = (BillListView) this.getMaingrandrelationship().getBodyTabTOGrandListComposite().get(currentbodyTabCode);/ 加载孙模板this.getMainGrandAssist().updateGrandListByBodyTab(this);if (grandListView != null ShowUpableBillListViewEx billListViewEx = (ShowUpableBillListViewEx) this.

14、getMainPanel();/ 获取类路径String bodyClassName = billListViewEx.getBillListPanel().getBodyBillModel(currentbodyTabCode).getTabvo().getBillMetaDataBusinessEntity().getFullClassName();List grandVOList = this.getMainGrandAssist().getGrandListDataByMainRow(BillListView) this.mainPanel,currentRow, grandListV

15、iew, bodyClassName,this.getMaingrandrelationship();if (grandVOList != null) / 孙面板加载数据并显示grandListView.getBillListPanel().getBodyBillModel().setBodyDataVO(grandVOList.toArray(new SuperVO0);grandListView.getBillListPanel().getBodyBillModel().loadLoadRelationItemValue();grandListView.getBillListPanel()

16、.getBodyBillModel().execLoadFormula(); else grandListView.getBillListPanel().getBodyBillModel().clearBodyData();else/如果子表没有数据,则先清空孙表数据,再强制发送一次数据选择改变事件this.clearGrandData();(BillListView) this.getMainPanel().getModel().fireEvent(new AppEvent(AppEventConst.SELECTION_CHANGED);Overridepublic void handle

17、Event(AppEvent event) if (event instanceof ListBodyTabChangedEvent) /页签改变时的处理this.tabChangeProcess();return; else if (event.getType().equals(MainGrandEventTypeEnum.loadcardgranddata.toString() CardPanelEventUtil.grandListModelInit(this);super.handleEvent(event);/* 清除孙表数据*/private void clearGrandData

18、() String currentbodyTabCode =(BillListView) this.getMainPanel().getBillListPanel().getChildListPanel().getTableCode();/ 根据当前子页签获取孙表viewBillListView grandListView =(BillListView) this.getMaingrandrelationship().getBodyTabTOGrandListComposite().get(currentbodyTabCode);if (grandListView != null) Strin

19、g grandTabCodes = grandListView.getBillListPanel().getBillListData().getBodyTableCodes();for (String grandTabcode : grandTabCodes) grandListView.getBillListPanel().getBillListData().getBodyBillModel(grandTabcode).clearBodyData();和ponents.grand.CardGrandPanelComposite来进行操作的,例如事件的处理,给孙表设值等等。6 点击查询按钮,需要根据查询面板得到语句,再进行查询,重写查询 Action:附件:红色部分需要小心配置主子孙单据完整 xml :pm01pm0101pm0102recieve

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报