package com.vci.client.portal.custom; import java.util.*; import com.vci.client.common.oq.OQTool; import com.vci.client.oq.QTClient; import com.vci.common.qt.object.Condition; import com.vci.common.qt.object.Connector; import com.vci.common.qt.object.QueryTemplate; import com.vci.corba.common.VCIError; import com.vci.corba.omd.data.BusinessObject; import com.vci.omd.constants.FileObjectType; public class CommonFileUI implements ICommonFileUI{ /** * * 获取文档关联的所有文件 * @param documentId,文档OID * @return * @throws PLMError * @throws VciException */ @Override public BusinessObject[] getAllFile(String documentId) throws VCIError { Map conditions = new HashMap(); conditions.put(FileObjectType.SELECT_DOCUMENT_ID, documentId); QueryTemplate qt2 = new QueryTemplate(); qt2.setId("btmQuery"); qt2.setBtmType(FileObjectType.FILE_DATA_TABLE); qt2.setType("btm"); List clauseList = new ArrayList(); clauseList.add("*"); qt2.setClauseList(clauseList); Condition cond = OQTool.getCondition(conditions); qt2.setCondition(cond); BusinessObject[] bos = QTClient.getService().findBTMObjects(qt2.getId(), OQTool.qtTOXMl(qt2).asXML()); return bos; } @Override public BusinessObject[] getMultiObjectFiles(String[] objIds) throws VCIError { List boList = new ArrayList(); List idList = new ArrayList(); for (int i = 0; i < objIds.length; i++) { idList.add(objIds[i]); if (i + 1 % 200 == 0) { BusinessObject[] cbos = getObjectFiles(idList.toArray(new String[0])); addArrayDataToList(boList, cbos); idList.clear(); } } if (idList.size() > 0) { BusinessObject[] cbos = getObjectFiles(idList.toArray(new String[0])); addArrayDataToList(boList, cbos); idList.clear(); } return boList.toArray(new BusinessObject[0]); } private void addArrayDataToList(List boList, BusinessObject[] cbos) { for (int i = 0; i < cbos.length; i++) { boList.add(cbos[i]); } } /** * 一次查询出对象数组的所有文件(一次传递的数量最多200个对象) * @param objIds * @return * @throws VCIError */ private BusinessObject[] getObjectFiles(String[] objIds) throws VCIError { QueryTemplate qt2 = new QueryTemplate(); qt2.setId("btmQuery"); qt2.setBtmType(FileObjectType.FILE_DATA_TABLE); qt2.setType("btm"); List clauseList = new ArrayList(); clauseList.add("*"); qt2.setClauseList(clauseList); Map map = new HashMap(); Condition condition_ = OQTool.getCondition(map); for(String documentId : objIds){ map.put(FileObjectType.SELECT_DOCUMENT_ID, documentId); Condition condition = OQTool.getCondition(map); condition_ = OQTool.mergeCondition(condition, condition_, Connector.OR); map.clear(); } qt2.setCondition(condition_); BusinessObject[] bos = QTClient.getService().findBTMObjects(qt2.getId(), OQTool.qtTOXMl(qt2).asXML()); return bos; } }