package com.vci.test.oq;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.dom4j.DocumentException;
|
import org.dom4j.DocumentHelper;
|
|
import com.vci.client.common.oq.OQTool;
|
import com.vci.client.common.providers.ServiceProvider;
|
import com.vci.client.omd.provider.ApProvider;
|
import com.vci.client.oq.QTClient;
|
import com.vci.client.oq.QTDClient;
|
import com.vci.client.oq.ui.QTPanelForLink;
|
import com.vci.client.oq.ui.QueryResultDialog;
|
import com.vci.common.qt.object.Condition;
|
import com.vci.common.qt.object.ConditionItem;
|
import com.vci.common.qt.object.LeafInfo;
|
import com.vci.common.qt.object.LeafValue;
|
import com.vci.common.qt.object.Operator;
|
import com.vci.common.qt.object.QTConstants;
|
import com.vci.common.qt.object.QueryTemplate;
|
import com.vci.corba.common.VCIError;
|
import com.vci.corba.omd.atm.AttribItem;
|
import com.vci.corba.omd.data.BusinessObject;
|
import com.vci.corba.omd.data.LinkObject;
|
import com.vci.corba.omd.qtm.QTInfo;
|
import com.vci.omd.objects.OtherInfo;
|
|
/**
|
* @Title :客户端QT查询API使用示例
|
* @Description :
|
* @Copyright :宏博远达科技有限公司
|
* @Author :平台与规划部/ZhongGY/E-mail:zhonggy@vci-tech.com
|
* @Date :2015-7-6
|
* @Version :1
|
* @Other :产生注释:Alt+Shift+J
|
*/
|
public class TestQTAPI {
|
//业务对象嵌套查询
|
public static BusinessObject[] testBOQt() {
|
QueryTemplate qt = new QueryTemplate();
|
qt.setId("qt1");
|
qt.setType(QTConstants.TYPE_BTM);
|
//TODO String qtId =
|
qt.setBtmType("part");
|
List<String> clauseList = new ArrayList<String>();
|
//TODO 查询列 显示列
|
clauseList.add("*");
|
qt.setClauseList(clauseList);
|
Condition con = new Condition();
|
qt.setCondition(con);
|
HashMap<String, ConditionItem> ciMap = new HashMap<String, ConditionItem>();
|
//创建嵌套查询条件
|
ConditionItem ci = new ConditionItem();
|
ci.setId("test1");
|
ci.setLeafFlag(true);
|
LeafInfo leafInfo = new LeafInfo();
|
leafInfo.setClause("ownproduct");
|
leafInfo.setOperator(Operator.IN);
|
//获取参照属性的查询模板
|
QueryTemplate qtse = getRefQT("ownproduct", "code", "=", "test");
|
LeafValue lValue = new LeafValue();
|
lValue.setQueryTemplate(qtse);
|
leafInfo.setValue(lValue);
|
ci.setLeafInfo(leafInfo);
|
|
ciMap.put(ci.getId(), ci);
|
con.setCIMap(ciMap);
|
con.setRootCIName(con.getRootCINameByCIMap(ciMap));
|
BusinessObject[] result = null;
|
try {
|
//执行查询
|
result = QTClient.getService().findBTMObjects(qt.getId(), OQTool.qtTOXMl(qt).asXML());
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
return result;
|
|
}
|
//获取参照属性的查询模板
|
private static QueryTemplate getRefQT(String refAbName, String clause,
|
String operator, String ordinaryValue) {
|
QueryTemplate qt = new QueryTemplate();
|
List<String> clauseList = new ArrayList<String>();
|
clauseList.add("OID");
|
qt.setClauseList(clauseList);
|
AttribItem refAb = ApProvider.getAbItemByName(refAbName);
|
OtherInfo otherInfo = OtherInfo.getOtherInfoByText(refAb.other);
|
int refFlag = otherInfo.getRefFlag();
|
String type = otherInfo.getRefTypeName();
|
if(refFlag == 0){
|
qt.setType(QTConstants.TYPE_BTM);
|
qt.setBtmType(type);
|
}else if(refFlag == 1){
|
qt.setType(QTConstants.TYPE_LINK);
|
qt.setLinkType(type);
|
}
|
Condition condition = new Condition();
|
qt.setCondition(condition);
|
condition.setRootCIName("ci1");
|
HashMap<String, ConditionItem> ciMap = new HashMap<String, ConditionItem>();
|
condition.setCIMap(ciMap);
|
ConditionItem ci = new ConditionItem();
|
ci.setId("ci1");
|
ciMap.put(ci.getId(), ci);
|
ci.setLeafFlag(true);
|
LeafInfo leafInfo = new LeafInfo();
|
if(clause.contains(".")){
|
int fpIndex = clause.indexOf(".");
|
String refAbName_ = clause.substring(0, fpIndex);
|
clause = clause.substring(fpIndex + 1);
|
leafInfo.setClause(refAbName_);
|
leafInfo.setOperator(Operator.IN);
|
QueryTemplate qt_ = getRefQT(refAbName_, clause, operator, ordinaryValue);
|
LeafValue lValue = new LeafValue();
|
lValue.setQueryTemplate(qt_);
|
leafInfo.setValue(lValue);
|
qt.setId("qt_" + refAbName + "_" + refAbName_);
|
}else{
|
leafInfo.setClause(clause);
|
leafInfo.setOperator(operator);
|
LeafValue lValue = new LeafValue();
|
lValue.setOrdinaryValue(ordinaryValue);
|
leafInfo.setValue(lValue);
|
qt.setId("qt_" + refAbName + "_" + clause);
|
}
|
ci.setLeafInfo(leafInfo);
|
condition.setCIMap(ciMap);
|
return qt;
|
}
|
public static void main(String[] args) {
|
// System.err.println(testBOQt().length);
|
// System.err.println(testLinkQt().length);
|
|
try {
|
String sql = "select cc.* from platformbtm_codeclassify cc where cc.id='XC.0922.001'";
|
String[] paramValues = new String[]{};
|
String[][] vals = QTClient.getService().queryBySqlAndValuesWithoutKey(sql, paramValues);
|
System.out.println(vals.length);
|
|
String sql2 = "select cc.* from platformbtm_codeclassify cc where cc.id=?";
|
String[] paramValues2 = new String[]{"XC.0922.001"};
|
String[][] vals2 = QTClient.getService().queryBySqlAndValuesWithoutKey(sql2, paramValues2);
|
System.out.println(vals2.length);
|
|
System.out.println(vals.length == vals2.length);
|
|
// testIteratorQuery();
|
} catch (Throwable e){
|
e.printStackTrace();
|
}
|
}
|
|
private static void testIteratorQuery() throws VCIError, DocumentException {
|
String queryTemplate = "QueryChildViewClassiyByParentOid";
|
QTInfo wrapper = ServiceProvider.getOMDService().getQTDService().getQT(queryTemplate);
|
QueryTemplate qt = OQTool.getQTByDoc(DocumentHelper.parseText(wrapper.qtText), queryTemplate);
|
Map<String, String> queryCondition = new HashMap<String, String>();
|
queryCondition.put("viewparentclsfoid", "68EB3389-D836-79CD-8467-34E0BCBD85B8");
|
Condition cond = OQTool.getCondition(queryCondition);
|
qt.setCondition(cond);
|
BusinessObject[] bos = QTClient.getService().findBTMObjects(qt.getId(), OQTool.qtTOXMl(qt).asXML());
|
System.out.println(bos.length);
|
}
|
//链接类型嵌套查询
|
private static LinkObject[] testLinkQt() {
|
// TODO Auto-generated method stub
|
QueryTemplate qt = new QueryTemplate();
|
qt.setId("qt1");
|
qt.setType(QTConstants.TYPE_LINK);
|
//TODO String qtId =
|
qt.setLinkType("ebom");
|
//设置正反向查询
|
// qt.setDirection("positiva");
|
qt.setBtmType("part");
|
if(QTPanelForLink.getInstance().isAllType()){
|
qt.setBtmType("*");
|
}
|
//设置查询多少层
|
qt.setLevel(5);
|
List<String> clauseList = new ArrayList<String>();
|
//TODO 查询列 显示列
|
clauseList.add("*");
|
qt.setClauseList(clauseList);
|
Condition con = new Condition();
|
qt.setCondition(con);
|
HashMap<String, ConditionItem> ciMap = new HashMap<String, ConditionItem>();
|
//设置嵌套查询条件
|
ConditionItem ci = new ConditionItem();
|
ci.setId("test1");
|
ci.setLeafFlag(true);
|
LeafInfo leafInfo = new LeafInfo();
|
leafInfo.setClause("f_oid");
|
leafInfo.setOperator(Operator.IN);
|
LeafValue lValue = new LeafValue();
|
leafInfo.setValue(lValue);
|
|
try {
|
//获取嵌套条件的查询模板
|
QTInfo qtm = ServiceProvider.getOMDService().getQTDService().getQT("productTreeQueryTemplate");
|
String qtText = qtm.qtText;
|
QueryTemplate qt_ = OQTool.getQTByQTText(qtm.qtName, qtText);
|
List<String> clauseListse = new ArrayList<String>();
|
clauseListse.add("t_oid");
|
qt_.setClauseList(clauseListse);
|
lValue.setQueryTemplate(qt_);
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
} catch (DocumentException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
ci.setLeafInfo(leafInfo);
|
ciMap.put(ci.getId(), ci);
|
con.setCIMap(ciMap);
|
con.setRootCIName(con.getRootCINameByCIMap(ciMap));
|
LinkObject[] result = null;
|
try {
|
//执行查询
|
result = QTClient.getService().findLTObjects(qt.getId(), OQTool.qtTOXMl(qt).asXML());
|
//TODO clauseList 查询显示列
|
QueryResultDialog dialog = new QueryResultDialog(result, qt.getClauseList());
|
dialog.setVisible(true);
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
return result;
|
}
|
}
|