目录
前言
通过前边几篇文章的开发后,我们基本实现了单据开发功能,但是要想真正用起来,这中间必然而然的会出现各种问题。在这里博主将会列举相关问题及解决方案。喜欢的小伙伴可以点点收藏点点赞,感谢支持!
1、单据组织没有显示在最上边
1.1、问题描述
标准单据在点击新增之后,首先要选择组织,这样设计的目的是为了确定表单曲全局过滤,如部门人员等需基于组织过滤。但是我们开的单据有些时候组织并不在最上行,导致后续各种问题,例如部门人员无法选择,组织切换事件等等问题。
1.2、解决方案
首先我们需要保证元数据的组织字段要对应具体业务单元,例如我的是资产组织。其次需要在【功能注册】节点,修改组织类型为对应类型,切记不可选全局。

2、人员部门编辑(联动)事件
2.1、问题描述
通常我们在表单选择完人员后,需要自动带出其相应部门,反之亦然。
2.2、解决方案
可在XML的事件监听中添加相应事件,如:
<!-- 事件监听newadd -->
<bean id="bmModelEventMediator" class="nc.ui.pubapp.uif2app.model.AppEventHandlerMediator">
<property name="model" ref="bmModel" />
<property name="handlerGroup">
<list>
<!-- nc.ui.pubapp.uif2app.event.OrgChangedEvent -->
<bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup">
<property name="event" value="nc.ui.pubapp.uif2app.event.OrgChangedEvent" />
<property name="handler">
<bean class="nc.ui.aim.worderplan.ace.handler.AceOrgChangeHandler" >
<property name="billForm" ref="billForm" />
</bean>
</property>
</bean>
<!-- nc.ui.pubapp.uif2app.event.billform.AddEvent -->
<bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup">
<property name="event" value="nc.ui.pubapp.uif2app.event.billform.AddEvent" />
<property name="handler">
<bean class="nc.ui.aim.worderplan.ace.handler.AceAddHandler" />
</property>
</bean>
<!-- 人员编辑前事件 -->
<bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup">
<property name="event" value="nc.ui.pubapp.uif2app.event.card.CardHeadTailBeforeEditEvent" />
<property name="handler" ref="deptAndPsnBeforeEditHandler" />
</bean>
<!-- 跨组织选部门编辑后事件 -->
<bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup">
<property name="event" value="nc.ui.pubapp.uif2app.event.card.CardHeadTailAfterEditEvent" />
<property name="handler" ref="psnAfterEditHandler" />
</bean>
</list>
</property>
</bean>
<!-- 跨组织选部门、人员编辑前事件 -->
<bean id="deptAndPsnBeforeEditHandler" class="nc.ui.pm.handler.DeptAndPsnBeforeEditHandler">
<property name="pk_dept" value="pk_dept"/>
<property name="pk_psn" value="pk_psndoc" />
<property name="cardForm" ref="billForm" />
</bean>
<!-- 跨组织选部门编辑后事件 -->
<bean id="psnAfterEditHandler" class="nc.ui.pm.handler.PsnAfterEditHandler">
<property name="pk_dept" value="pk_dept"/>
<property name="pk_psn" value="pk_psndoc" />
<property name="cardForm" ref="billForm" />
</bean>
3、单据列表功能分页功能
3.1、问题描述
有些时候我们生成的单据并没有分页功能,这样当查询数据量大的时候会导致查询变慢,所以默认情况下我们需要分页处理。
3.2、解决方案
可通过XML里直接配置分页功能,如:
<!-- 数据模型管理器,主要负责各种方式的模型初始化 -->
<bean id="bmModelModelDataManager" class="nc.ui.pubapp.uif2app.model.pagination.PaginationModelDataManager">
<property name="model">
<ref bean="bmModel"/>
</property>
<property name="pageQueryService">
<ref bean="pageQueryService"/>
</property>
<property name="paginationModel">
<ref bean="paginationModel"/>
</property>
</bean>
<bean id="paginationModel" class="nc.ui.pubapp.uif2app.model.pagination.PubPaginationModel" init-method="init">
<property name="paginationQueryService">
<ref bean="bmModelModelService" />
</property>
<property name="pageSize" value="10" ></property>
</bean>
<bean id="pageQueryService" class="nc.ui.pubapp.uif2app.model.pagination.UIPageQueryService">
<property name="allPagePkQueryServiceMethod" value="nc.itf.aim.IWorderPlanMaintain.queryPks" ></property>
<property name="dataOfPksQueryServiceMethod" value="nc.itf.aim.IWorderPlanMaintain.queryObjectByPks" ></property>
</bean>
<bean id="pageBar" class="nc.ui.uif2.components.pagination.PaginationBar">
<property name="context">
<ref bean="context"/>
</property>
<property name="paginationModel" ref="paginationModel" ></property>
</bean>
4、单据表体行号功能
4.1、问题描述
需求描述:单据新增界面自动增行并且行号自动生成。
4.2、解决方案
可通过XML里直接配置分页功能,如:
<!-- 行号自动处理 -->
<bean id="rowNoMediator" class="nc.ui.pubapp.uif2app.view.RowNoMediator">
<property name="model" ref="bmModel" />
<property name="editor" ref="billForm" />
</bean>
<!--====== 视图元素:[PUBAPP表单控件(ShowUpableBillForm)实例对象] ==============-->
<bean id="billForm" class="nc.ui.pubapp.uif2app.view.ShowUpableBillForm" init-method="initUI">
<property name="model">
<ref bean="bmModel" />
</property>
<property name="nodekey" value="bt" />
<!-- 是否自动增行 -->
<property name="autoAddLine" value="true" />
<property name="blankChildrenFilter">
<!-- 简单的根据一个字段是否为空的空行过滤器,因为多数情况下都是判断存货是否为空来过滤空行 -->
<bean
class="nc.ui.pubapp.uif2app.view.value.MultiFieldsBlankChildrenFilter">
<property name="filterMap">
<map>
<entry>
<key>
<value>bodys</value>
</key><!--页签code -->
<!--检验是否空行字段code -->
<list>
<value>rowno</value>
<value>orderno</value>
</list>
</entry>
</map>
</property>
</bean>
</property>
<!-- 表体行操作按钮注册,这只是一组默认设置,开发人员需要自己在此添加其他需要的表体行操作按钮 -->
<property name="bodyLineActions">
<list>
<bean class="nc.ui.pubapp.uif2app.actions.BodyAddLineAction" />
<bean class="nc.ui.pubapp.uif2app.actions.BodyInsertLineAction" />
<bean class="nc.ui.pubapp.uif2app.actions.BodyDelLineAction" />
</list>
</property>
</bean>
5、表单新增设置默认值
5.1、问题描述
新增时默认集团,组织,单据日期,审批状态。
5.2、解决方案
XML里新增编辑事件,XML代码如:
<!-- 事件监听newadd -->
<bean id="bmModelEventMediator" class="nc.ui.pubapp.uif2app.model.AppEventHandlerMediator">
<property name="model" ref="bmModel" />
<property name="handlerGroup">
<list>
<!-- nc.ui.pubapp.uif2app.event.OrgChangedEvent -->
<bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup">
<property name="event" value="nc.ui.pubapp.uif2app.event.OrgChangedEvent" />
<property name="handler">
<bean class="nc.ui.aim.worderplan.ace.handler.AceOrgChangeHandler" >
<property name="billForm" ref="billForm" />
</bean>
</property>
</bean>
<!-- nc.ui.pubapp.uif2app.event.billform.AddEvent -->
<bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup">
<property name="event" value="nc.ui.pubapp.uif2app.event.billform.AddEvent" />
<property name="handler">
<bean class="nc.ui.aim.worderplan.ace.handler.AceAddHandler" />
</property>
</bean>
<!-- 人员编辑前事件 -->
<bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup">
<property name="event" value="nc.ui.pubapp.uif2app.event.card.CardHeadTailBeforeEditEvent" />
<property name="handler" ref="deptAndPsnBeforeEditHandler" />
</bean>
<!-- 跨组织选部门编辑后事件 -->
<bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup">
<property name="event" value="nc.ui.pubapp.uif2app.event.card.CardHeadTailAfterEditEvent" />
<property name="handler" ref="psnAfterEditHandler" />
</bean>
</list>
</property>
java代码如:
package nc.ui.aim.worderplan.ace.handler;
import nc.ui.pubapp.uif2app.event.IAppEventHandler;
import nc.ui.pubapp.uif2app.event.billform.AddEvent;
import nc.vo.pub.pf.BillStatusEnum;
import nc.vo.pubapp.AppContext;
import nc.ui.pub.bill.BillCardPanel;
@SuppressWarnings("restriction")
public class AceAddHandler implements IAppEventHandler<AddEvent> {
@Override
public void handleAppEvent(AddEvent e) {
String pk_group = e.getContext().getPk_group();
String pk_org = e.getContext().getPk_org();
BillCardPanel panel = e.getBillForm().getBillCardPanel();
// 设置主组织默认值
panel.setHeadItem("pk_group", pk_group);
panel.setHeadItem("pk_org", pk_org);
// 设置单据状态、单据业务日期默认值
panel.setHeadItem("approvestatus", BillStatusEnum.FREE.value());
panel.setHeadItem("billdate", AppContext.getInstance().getBusiDate());
if(panel.getRowCount() < 1){
// panel.getBodyPanel().addLine();
}
}
}
结语
在完成基本功能后,我们需要对客户需求进行个性化定制功能,如默认字段,保存校验等。本篇也主要是记录下博主此刻遇到过的问题,本篇章会随着问题暴露而实时更新,在此也希望各位业界大佬给小弟做补充!

本文档详细描述了在开发过程中遇到的五个问题,包括单据组织位置、人员部门联动、分页功能、表体行号自动生成以及新增表单设置默认值。每个问题都附有解决方案和示例代码,旨在帮助开发者解决实际开发中的常见问题。
1035

被折叠的 条评论
为什么被折叠?



