NC6.5创建单表树卡单据(注意事项)

一、选择树卡加载右侧数据

      xml中添加配置(不是优的配置,但确实能解决问题)

<bean id="typeAndDocMediator" class="nc.ui.hrpe.jxdy.JxdytreeMediator">
		<property name="typeAppModel" ref="hModel" />
		<property name="billForm" ref="billForm" />
		<property name="dataManager" ref="hModelModelDataManager" />
	</bean>

package nc.ui.hrpe.jxdy;

import nc.ui.hr.uif2.mediator.TypeAndDocMediator;
import nc.ui.hr.uif2.model.ITypeSupportModelDataManager;
import nc.ui.hrpe.jxdy.ace.serviceproxy.JxdyModelDataManager;
import nc.ui.pub.bill.BillCardPanel;
import nc.ui.pubapp.uif2app.event.OrgChangedEvent;
import nc.ui.pubapp.uif2app.view.BillForm;
import nc.ui.uif2.AppEvent;
import nc.ui.uif2.model.AppEventConst;
import nc.vo.hrpe.jxdy.JxdyVO;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.pub.lang.UFDate;


public class JxdytreeMediator extends TypeAndDocMediator {

    private BillForm billForm;
    private JxdyModelDataManager dataManager;

    
    @Override
    public void handleEvent(AppEvent event) {
        // 列表初始化
        if (AppEventConst.SELECTION_CHANGED.equals(event.getType())) {

            JxdyVO vo = (JxdyVO) getTypeAppModel().getSelectedData();
            if (vo != null) {
                String pk_org = vo.getPk_org();//组织
                String code = vo.getCode();//绩效单元编码
                String name = vo.getName();//绩效单元名称
                String pid = vo.getPid();//上级绩效单元
                String pk_group = vo.getPk_group();//集团
                String pk_jxdyxx = vo.getPk_jxdyxx();//绩效单元主键
                String creator = vo.getCreator();//创建人
                UFBoolean iscancel = vo.getIscancel();//是否取消
                String leader = vo.getLeader();//负责人
                String modifier = vo.getModifier();//最后修改人
                UFDate canceldate = vo.getCanceldate();//撤销日期
                Integer enablestate = vo.getEnablestate();//启用状态

                //getTypeAppModel().getContext().setPk_org(pk_org);
                BillCardPanel panel = this.getBillForm().getBillCardPanel();
                panel.setHeadItem("pk_jxdyxx",pk_jxdyxx);
                panel.setHeadItem("code", code);
                panel.setHeadItem("name", name);
                panel.setHeadItem("pid", pid);
                panel.setHeadItem("leader", leader);
                panel.setHeadItem("iscancel", iscancel);
                panel.setHeadItem("canceldate",canceldate);
                panel.setHeadItem("creator", creator);
                panel.setHeadItem("enablestate", enablestate);
                panel.setHeadItem("pk_org", pk_org);
                panel.setHeadItem("pk_group", pk_group);
            }
        }
        // 选择发生变化
        else if (AppEventConst.MODEL_INITIALIZED.equals(event.getType())) {
            
        }else if("nc.ui.pubapp.uif2app.event.OrgChangedEvent".equals(event.getType())){
            getTypeAppModel().getContext().setPk_org(((OrgChangedEvent) event).getNewPkOrg());
            this.getDataManager().initModel();
        }
    }

    public BillForm getBillForm() {
        return billForm;
    }

    public void setBillForm(BillForm billForm) {
        this.billForm = billForm;
    }

    public JxdyModelDataManager getDataManager() {
        return dataManager;
    }

    public void setDataManager(JxdyModelDataManager dataManager) {
        this.dataManager = dataManager;
    }

}

二、根据组织显示左侧树卡加载数据

      据说UAP-STUDIO6.5根据向导生成的树卡单据,但经过好多遍的发布单据,没成功一次。

在生成的xml文件中组织change监听事件注入model,如下红色配置。

<!-- 事件监听newadd -->
	<bean id="hModelEventMediator" class="nc.ui.pubapp.uif2app.model.AppEventHandlerMediator">
		<property name="model" ref="hModel" />
		<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.hrpe.jxdy.ace.handler.AceOrgChangeHandler" >
							<property name="billForm" ref="billForm" />
							<property name="model" ref="hModel"></property>
						</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.hrpe.jxdy.ace.handler.AceAddHandler" />
					</property>
				</bean>
			</list>
		</property>
	</bean><property name="model" ref="hModel"></property>
						</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.hrpe.jxdy.ace.handler.AceAddHandler" />
					</property>
				</bean>
			</list>
		</property>
	</bean>

nc.ui.hrpe.jxdy.ace.handler.AceOrgChangeHandler类handleAppEvent方法中添加如下代码:

String pk_org = e.getNewPkOrg();
		/**
		 * 下面进行根据组织过滤树卡数据
		 */
		IUAPQueryBS query = NCLocator.getInstance().lookup(IUAPQueryBS.class);
		List<JxdyVO> jxdyVOList = null;
		try {
			//查询需要加载的数据VO集合
			jxdyVOList = (List<JxdyVO>)query.retrieveByClause(JxdyVO.class, "dr=0 and pk_org='"+pk_org+"'");
			Object[] objs = jxdyVOList.toArray();
			this.getModel().initModel(objs);//加载树卡数据
		} catch (BusinessException e1) {
			e1.printStackTrace();
		}


经过测试,功能实现。

看到有朋友回复问左树和右边界面数据联动问题,下面是代码示例:

1、xml增加配

<!--
		 a)层次模型和管理模型之间的协调者,以Mediator结尾,不区分大小写; 
		 b)该类对两个模型进行监听,负责相互事件的中转;
		 c)属性可以扩展;
	-->
	<bean id="CorpMediator" class="nc.ui.tmpub.corpentrustunit.treemanage.CorpMediator">
		<property name="treeModel" ref="HAppModel"></property>
		<property name="bmModel" ref="bmModel"></property><!--name="model" 此处一定要修改为bmModel   dingxm -->
		<property name="manageModelDataManager" ref="ManageModelDataManager"></property>
	</bean>

2、代码

package nc.ui.tmpub.corpentrustunit.treemanage;

import nc.ui.uif2.AppEvent;
import nc.ui.uif2.AppEventListener;
import nc.ui.uif2.UIState;
import nc.ui.uif2.model.AppEventConst;
import nc.ui.uif2.model.BillManageModel;
import nc.ui.uif2.model.HierachicalDataAppModel;
import nc.vo.org.CorpVO;

public class CorpMediator implements AppEventListener {

	private HierachicalDataAppModel treeModel;
	//private BillManageModel manageAppModel;
	private BillManageModel bmModel;
	private CorpentrustunitModelDataManager manageModelDataManager;
	
	public static String TREE_STATUS_CHANGED = "TREE_STATUS_CHANGED";
	public static int TREE_DISABLE = 1;
	public static int TREE_ENABLE = 0;
	
	/*public BillManageModel getManageAppModel() {
		return manageAppModel;
	}*/
	public BillManageModel getBmModel() {
		return bmModel;
	}
	
	public HierachicalDataAppModel getTreeModel() {
		return treeModel;
	}

	public CorpentrustunitModelDataManager getManageModelDataManager() {
		return manageModelDataManager;
	}
	
	public void setTreeModel(HierachicalDataAppModel treeModel) {
		this.treeModel = treeModel;
		treeModel.addAppEventListener(this);
	}

/*	public void setManageAppModel(BillManageModel manageAppModel) {
		this.manageAppModel = manageAppModel;
		this.manageAppModel.addAppEventListener(this);
	}*/
	public void setBmModel(BillManageModel bmModel) {
		this.bmModel = bmModel;
		this.bmModel.addAppEventListener(this);
	}
	
	public void setManageModelDataManager(
			CorpentrustunitModelDataManager manageModelDataManager) {
		this.manageModelDataManager = manageModelDataManager;
	}
	
	public CorpMediator() {
		super();
	}

	@Override
	public void handleEvent(AppEvent event) {
		if(event.getSource() == getBmModel()){//数据初始化判断
			Object[] treedatas = getTreeModel().getAllDatas();
			if (AppEventConst.MODEL_INITIALIZED.equals(event.getType()) 
					&& (null == treedatas || treedatas.length <= 0)) {//只有树数据为空,即未构造时执行,否则死循环
				try {
					Object[] data = getTreeModel().getService().queryByDataVisibilitySetting(
							getBmModel().getContext());
					getTreeModel().initModel(data);
				} catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		}else 
		if (event.getSource() == getTreeModel()) {
			/**
			 * robin
			 * 树选择改变事件
			 */
			if (AppEventConst.SELECTION_CHANGED.equals(event.getType())) {
				CorpVO classVO = (CorpVO) getTreeModel()
						.getSelectedData();
				String classID = classVO == null ? "" : classVO.getPrimaryKey();
				
				/**
				 * robin
				 * 这里构建根据树节点相关参数查询管理单据主键的过滤条件
				 */
				String sql = " pk_org = '"+classID+"' ";
				/**
				 * robin end
				 */
				getManageModelDataManager().initModelBySqlWhere(sql);
			}
		} else {
			if (AppEventConst.UISTATE_CHANGED.equals(event.getType())) {
				if (getManageModelDataManager().getModel().getUiState() == UIState.EDIT) {
					getTreeModel().fireEvent(
							new AppEvent(TREE_STATUS_CHANGED, getTreeModel(),
									TREE_DISABLE));
				} else {
					getTreeModel().fireEvent(
							new AppEvent(TREE_STATUS_CHANGED, getTreeModel(),
									TREE_ENABLE));
				}
			}
		}
		/**新增带出树主键**robin**2013-01-15**START**/
		/**
		 * 处理方式比较拙劣,待寻求新方法
		 */
		if(event instanceof nc.ui.pubapp.uif2app.event.billform.AddEvent){
			Object obj = getTreeModel().getSelectedNode().getUserObject();
			if(null != obj && obj instanceof CorpVO){
				String treepk = ((CorpVO)obj).getPrimaryKey();
				String pk_org = ((CorpVO)obj).getPk_corp();
				nc.ui.pubapp.bill.BillCardPanel cp = (nc.ui.pubapp.bill.BillCardPanel)(
						(nc.ui.pubapp.uif2app.event.billform.AddEvent)
						event).getBillForm().getBillCardPanel();
				cp.setHeadItem("pk_org", pk_org);
			}
		}

	}



}

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值