nc - 参照开发

在这里插入图片描述

参照类型

  1. 列表型参照
    在这里插入图片描述
  2. 树型参照
    在这里插入图片描述
  3. 树表型参照
    在这里插入图片描述

建立参照类

参照基类:
对应于三种常用类型的参照,Model提供了三个抽象类:

  1. 列表参照: AbstractRefModel
  2. 树型参照: AbstractRefTreeModel
  3. 树表型参照: AbstractRefGridTreeModel

不同类型的参照对应的参照类须继承上述的相应基类

参照类代码示例:

  1. 列表参照:参考nc.ui.train.pub.ref.DemoTypeRefModel
package nc.ui.demo.db.pub.ref;

import nc.ui.bd.ref.AbstractRefModel;

public class DemoTypeRefModel extends AbstractRefModel {

	public DemoTypeRefModel() {
		super();
	}
	
	@Override
	public String[] getFieldCode() {//表数据的字段编码
		return new String[]{
				"code",
				"name"
		};
	}
	
	@Override
	public String[] getFieldName() {//表数据的字段名称
		return new String[]{
				"运输方式编码",
				"运输方式名称"
		};
	}
	
	@Override
	public String[] getHiddenFieldCode() {//表数据需要隐藏的字段编码
		return new String[]{
				"pk_sendtype"
		};
	}
	
	@Override
	public String getTableName() {//表数据的表名
		return "demo_demotype";
	}
	
	@Override
	public String getPkFieldCode() {//表数据的主键字段
		return "pk_sendtype";
	}
	
	@Override
	public String getRefCodeField() {//表数据的参照编码字段
		return "code";
	}
	
	@Override
	public String getRefNameField() {//表数据的参照名称字段
		return "name";
	}
	
	@Override
	public String getWherePart() {//表数据的过滤条件
//		return super.getWherePart();
		String wherePart = super.getWherePart();
		if(null == wherePart || "".equals(wherePart.trim())){
			wherePart = " isnull(dr,0) = 0 ";
		}else{
			wherePart += " and isnull(dr,0) = 0 ";
		}
		return wherePart;
	}
}

  1. 树形参照:参考nc.ui.train.pub.ref.CustClassRefModel
package nc.ui.demo.db.pub.ref;

import nc.ui.bd.ref.AbstractRefTreeModel;

public class CustClassRefModel extends AbstractRefTreeModel {

	public CustClassRefModel() {
		super();
	}

	@Override
	public int getClassDefaultFieldCount() {
		return super.getClassDefaultFieldCount();
	}
	
	@Override
	public String[] getFieldCode() {//参照数据的字段编码
		return new String[]{
				"code",
				"name"
		};
	}
	
	@Override
	public String[] getFieldName() {//参照数据的字段名称
		return new String[]{
				"客户编码",
				"客户名称"
		};
	}
	
	@Override
	public String[] getHiddenFieldCode() {//需要隐藏的参照数据的字段编码
		//lxiaofan
		//需要把涉及到但不用的字段放入,不仅是getFieldCode中的字段
		//例如此处还应该将getFatherField方法中的字段和getChildField方法中的字段放入
		return new String[]{"pk_custclass", "parent_id"};
	}
	
	@Override
	public String getTableName() {//参照数据的表名
		return "train_Entity3";
	}
	
	@Override
	public String getPkFieldCode() {//参照数据对应表的主键
		return "pk_custclass";
	}

	@Override
	public String getFatherField() {//树结构的父主键字段
		return "parent_id";
	}
	
	@Override
	public String getChildField() {//树结构的子主键字段
		return "pk_custclass";
	}
	
	@Override
	public String getRefCodeField() {//参照对应的编码字段
		return "code";
	}
	
	@Override
	public String getRefNameField() {//参照对应的名称字段
		return "name";
	}
	
	@Override
	public String getWherePart() {//参照数据的过滤条件
//		return super.getWherePart();
		String wherePart = super.getWherePart();
		if(null == wherePart || "".equals(wherePart.trim())){
			wherePart = " dr = 0 ";
		}else{
			wherePart += " and dr = 0 ";
		}
		return wherePart;
	}

}

  1. 树表型参照:参考nc.ui.train.pub.ref.CustRefModel
package nc.ui.demo.db.pub.ref;

import nc.ui.bd.ref.AbstractRefGridTreeModel;

public class CustRefModel extends AbstractRefGridTreeModel {

	public CustRefModel() {
		super();
	}
	
	@Override
	public int getClassDefaultFieldCount() {
		return super.getClassDefaultFieldCount();
	}
	
	@Override
	public String[] getClassFieldCode() {//树结构的字段编码
		return new String[]{
				"code",
				"name",
				"parent_id",
				"pk_custclass"
		};
	}
	
	@Override
	public String getClassTableName() {//树结构的表名
		return "train_Entity3";
	}
	
	@Override
	public String getClassFatherField() {//树结构的父主键字段
		return "parent_id";
	}
	
	@Override
	public String getClassChildField() {//树结构的子主键字段
		return "pk_custclass";
	}
	
	@Override
	public String getClassWherePart() {//树结构的过滤条件
//		return super.getClassWherePart();
		String wherePart = super.getClassWherePart();
		if(null == wherePart || "".equals(wherePart.trim())){
			wherePart = " isnull(dr,0) = 0 ";
		}else{
			wherePart += " and isnull(dr,0) = 0 ";
		}
		return wherePart;
	}
	
	@Override
	public String getClassJoinField() {//树结构:树和表关联的字段
		return "pk_custclass";
	}
	
	@Override
	public String getDocJoinField() {//表数据:树和表关联的字段
		return "pk_supclass";
	}
	
	@Override
	public String[] getFieldCode() {//表数据的字段编码
		return new String[]{
				"code",
				"name"
		};
	}
	
	@Override
	public String[] getFieldName() {//表数据的字段名称
		return new String[]{
				"客户编码",
				"客户名称"
		};
	}
	
	@Override
	public String[] getHiddenFieldCode() {//表数据需要隐藏的字段编码
		return new String[]{
				"pk_cust",
				"pk_supclass"
		};
	}
	
	@Override
	public String getTableName() {//表数据的表名
		return "train_Entity6";
	}
	
	@Override
	public String getPkFieldCode() {//表数据的主键字段
		return "pk_cust";
	}
	
	@Override
	public String getRefCodeField() {//表数据的参照编码字段
		return "code";
	}
	
	@Override
	public String getRefNameField() {//表数据的参照名称字段
		return "name";
	}
	
	@Override
	public String getWherePart() {//表数据的过滤条件
//		return super.getWherePart();
		String wherePart = super.getWherePart();
		if(null == wherePart || "".equals(wherePart.trim())){
			wherePart = " isnull(dr,0) = 0 ";
		}else{
			wherePart += " and isnull(dr,0) = 0 ";
		}
		return wherePart;
	}

}

注意:
树表型参照需要区分配置树结构和表数据的构造属性,要理清树结构与表结构的关联关系

注册参照类

必须在bd_refinfo表中注册参照类,在元数据操作界面中设置参照,注册参照类示例sql脚本如下:
insert into BD_REFINFO (CODE, DR, ISNEEDPARA, ISSPECIALREF, METADATATYPENAME, MODULENAME, NAME, PARA1, PARA2, PARA3, PK_REFINFO, REFCLASS, REFSYSTEM, REFTYPE, RESERV1, RESERV2, RESERV3, RESID, RESIDPATH, TS, WHEREPART)
values ('XXXXX', 0, null, null, null, 'uap', 'YYYYY', null, null, null, '0001Z0100000001TRAIN', 'nc.ui.train.pub.ref.XXXRefModel', null, 1, null, null, null, ‘YYYYY', 'ref', '2013-10-05 22:57:13', null);
※NAME字段需全局唯一,不可重复
※PK_REFINFO字段需长度为20,且全局唯一
※REFTYPE字段是参照类型:0 列表参照 1 树型参照 2 树表参照

在这里插入图片描述

设置参照

设置参照:

  • 一个实体可以设置多个参照,但必须设置一个缺省参照
  • 获取参照属性时,不设置则取属性对应实体的缺省参照
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

参照档案

点击【类型】属性的图标按钮
在弹出对话框界面,选择需要的实体参照
【参照名称】下拉列表中选择正确的参照类型
在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值