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<String, String> conditions = new HashMap<String, String>();
|
conditions.put(FileObjectType.SELECT_DOCUMENT_ID, documentId);
|
|
QueryTemplate qt2 = new QueryTemplate();
|
qt2.setId("btmQuery");
|
qt2.setBtmType(FileObjectType.FILE_DATA_TABLE);
|
qt2.setType("btm");
|
List<String> clauseList = new ArrayList<String>();
|
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<BusinessObject> boList = new ArrayList<BusinessObject>();
|
List<String> idList = new ArrayList<String>();
|
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<BusinessObject> 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<String> clauseList = new ArrayList<String>();
|
clauseList.add("*");
|
qt2.setClauseList(clauseList);
|
|
Map<String, String> map = new HashMap<String, String>();
|
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;
|
}
|
}
|