NC6流程单据开发相关问题优化

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

目录

 

前言

1、单据组织没有显示在最上边

1.1、问题描述

1.2、解决方案

2、人员部门编辑(联动)事件

2.1、问题描述

2.2、解决方案

3、单据列表功能分页功能

3.1、问题描述

3.2、解决方案 

4、单据表体行号功能

4.1、问题描述

4.2、解决方案 

5、表单新增设置默认值

5.1、问题描述

5.2、解决方案 

 结语


前言

  通过前边几篇文章的开发后,我们基本实现了单据开发功能,但是要想真正用起来,这中间必然而然的会出现各种问题。在这里博主将会列举相关问题及解决方案。喜欢的小伙伴可以点点收藏点点赞,感谢支持!

1、单据组织没有显示在最上边

1.1、问题描述

  标准单据在点击新增之后,首先要选择组织,这样设计的目的是为了确定表单曲全局过滤,如部门人员等需基于组织过滤。但是我们开的单据有些时候组织并不在最上行,导致后续各种问题,例如部门人员无法选择,组织切换事件等等问题。

1.2、解决方案

  首先我们需要保证元数据的组织字段要对应具体业务单元,例如我的是资产组织。其次需要在【功能注册】节点,修改组织类型为对应类型,切记不可选全局。

f91df3d4ff45472799ae05890911f6c7.png

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();
		}
	}
}

 结语

  在完成基本功能后,我们需要对客户需求进行个性化定制功能,如默认字段,保存校验等。本篇也主要是记录下博主此刻遇到过的问题,本篇章会随着问题暴露而实时更新,在此也希望各位业界大佬给小弟做补充!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪仔搬砖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值