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 clauseList = new ArrayList(); //TODO 查询列 显示列 clauseList.add("*"); qt.setClauseList(clauseList); Condition con = new Condition(); qt.setCondition(con); HashMap ciMap = new HashMap(); //创建嵌套查询条件 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 clauseList = new ArrayList(); 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 ciMap = new HashMap(); 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 queryCondition = new HashMap(); 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 clauseList = new ArrayList(); //TODO 查询列 显示列 clauseList.add("*"); qt.setClauseList(clauseList); Condition con = new Condition(); qt.setCondition(con); HashMap ciMap = new HashMap(); //设置嵌套查询条件 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 clauseListse = new ArrayList(); 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; } }