用友nc65 uap开发查询模版中对于特定条件添加查询条件

用友nc65 uap开发查询模版中对于特定节点添加查询条件

1.目标:对于H303113510节点加入限定条件,使得在调用查询模版后,sql语句加入固定条件。

2.代码:

package nc.ui.pub.fdcpr.query.action;

import nc.ui.pr.H30301.LogonBO_Client;
import nc.ui.pubapp.uif2app.query2.QueryConditionDLGDelegator;
import nc.ui.pubapp.uif2app.query2.action.DefaultQueryAction;
import nc.ui.querytemplate.querytree.IQueryScheme;

public class FdcprQueryAction extends DefaultQueryAction{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	public static final String QUERY_CONDITION = "all_condition";
	
	@Override
	public QueryConditionDLGDelegator getQryDLGDelegator() {
		
		QueryConditionDLGDelegator qcondit=super.getQryDLGDelegator();
		//此处是为查询模板弹出框进行的服务中心设置默认值。
		if(qcondit!=null){
			String funnode=getFunNode();
			if(funnode.equals("H303113510")){
				qcondit.setDefaultValue("reserve1", LogonBO_Client.getManageUnit());
			}else if(funnode.equals("你需要的功能节点")){
				//书写你的相关查询模板上代表服务中心的条件的字段
//				qcondit.setDefaultValue("pk_managementsecid", LogonBO_Client.getManageUnit());
			}
			else{
				qcondit.setDefaultValue("pk_managementsecid", LogonBO_Client.getManageUnit());
			}
		}
		
		return qcondit;
	}

	/** Key:返回查询条件where语句 */
	public static final String KEY_SQL_WHERE = "where";
	/** Key:返回表连接式from-where语句 */
	public static final String KEY_SQL_TABLE_JOIN = "tablejoin";
	/** Key:返回表列表式(逗号分隔式)from-where语句 */
	public static final String KEY_SQL_TABLE_LIST = "tablelist";
	@Override
	protected void executeQuery(IQueryScheme queryScheme) {
		if(queryScheme!=null){
			
			//这是普通的条件,非元数据的单据调用,在65中基本不用。
//			if( queryScheme instanceof nc.ui.querytemplate.querytree.QueryScheme){
//				nc.ui.querytemplate.querytree.QueryScheme qsme=(nc.ui.querytemplate.querytree.QueryScheme)queryScheme;
//				qsme.putWhereSQLOnly(" pk_managementsecid = '"+LogonBO_Client.getManageUnit()+"' ");
//			}
			
			//这是交叉多表的调用,有元数据的形式。
			Object sql1=queryScheme.get(KEY_SQL_TABLE_JOIN);
			String funnode=getFunNode();
			//当是合同的时候,用的是预留字段reserve1
			if(funnode.equals("H303113510")){
				if(sql1 instanceof nc.ui.querytemplate.querytree.FromWhereSQLImpl){
					nc.ui.querytemplate.querytree.FromWhereSQLImpl fsi =( nc.ui.querytemplate.querytree.FromWhereSQLImpl)sql1;
					String fromsql = fsi.getWhere();
					if(fromsql!=null){
						fromsql = fromsql +" and fdc_pr_rentpact.reserve1 = '"+LogonBO_Client.getManageUnit()+"' and fdc_pr_rentpact.fversion=-1 ";
					}else{
						fromsql =" fdc_pr_rentpact.reserve1 = '"+LogonBO_Client.getManageUnit()+"' and fdc_pr_rentpact.fversion=-1 ";
					}
					fsi.setWhere(fromsql);
				}
			}else if(funnode.equals("你需要的功能节点")){
				//拼接语句中的服务中心是代表数据库中的字段,是数据库
			}else{
				
				if(sql1 instanceof nc.ui.querytemplate.querytree.FromWhereSQLImpl){
					nc.ui.querytemplate.querytree.FromWhereSQLImpl fsi =( nc.ui.querytemplate.querytree.FromWhereSQLImpl)sql1;
					String fromsql = fsi.getWhere();
					if(fromsql!=null){
						fromsql = fromsql +" and pk_managementsecid = '"+LogonBO_Client.getManageUnit()+"' ";
					}else{
						fromsql =" pk_managementsecid = '"+LogonBO_Client.getManageUnit()+"' ";
					}
					fsi.setWhere(fromsql);
				}
			}
			
			//逗号隔开的形式关联表,这里暂时不做处理。
//			Object sql2=queryScheme.get(KEY_SQL_TABLE_LIST);
//			if(sql2 instanceof nc.ui.querytemplate.querytree.FromWhereSQLImpl){
//				nc.ui.querytemplate.querytree.FromWhereSQLImpl fsi2 =( nc.ui.querytemplate.querytree.FromWhereSQLImpl)sql2;
//				fsi2.setWhere(" pk_managementsecid = '"+LogonBO_Client.getManageUnit()+"' ");
//			}
			
		}
		super.executeQuery(queryScheme);
	}
}


你可能感兴趣的:(用友nc,nc65,uap,xml,用友,用友nc)