用友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);
}
}