|
@ -325,10 +325,10 @@ public class StdMetadataService extends SQLGeneralDAO {
|
|
|
}
|
|
|
|
|
|
public List getAllVersionMetadataList(String condition) {
|
|
|
//数据元列表应该是所选择的数据集列表的数据元并集去重 @modify by yingjie chen
|
|
|
//数据元列表应该是所选择的数据集列表的数据元并集去重 @modify by Yingjie Chen
|
|
|
try {
|
|
|
List<String> versionList = new ArrayList<>();
|
|
|
String sql = Constants.EMPTY;
|
|
|
Map<String,List<StdDataSetModel>> version2DataSetMap = new HashMap<>();
|
|
|
String sql;
|
|
|
ObjectMapper objectMapper = new ObjectMapper();
|
|
|
String code = Constants.EMPTY;
|
|
|
if (!StringUtil.isEmpty(condition)) {
|
|
@ -343,6 +343,7 @@ public class StdMetadataService extends SQLGeneralDAO {
|
|
|
List<StandardModel> standardModelList = criteria.list();
|
|
|
List<Integer> idList = standardModelList.stream().map(StandardModel::getId).collect(Collectors.toList());
|
|
|
List<StandardVersionModel> versionModelList;
|
|
|
Session session = getCurrentSession();
|
|
|
if (!CollectionUtil.isEmpty(idList)) {
|
|
|
String hql = "FROM StandardVersionModel WHERE publishTime is not null AND standardId IN :idList order by publishTime";
|
|
|
Query query = getCurrentSession().createQuery(hql);
|
|
@ -351,36 +352,41 @@ public class StdMetadataService extends SQLGeneralDAO {
|
|
|
for (StandardVersionModel versionModel : versionModelList) {
|
|
|
SqlCreator sqlDatasetCreator = new SqlCreator(StdDataSetModel.class);
|
|
|
StandardVersion version = new StandardVersion(versionModel.getVersion());
|
|
|
versionList.add(versionModel.getVersion());
|
|
|
sqlDatasetCreator.equalCondition("code", code);
|
|
|
sql = sql + sqlDatasetCreator.selectData(version.getDataSetTableName()) + Constants.UNION;
|
|
|
sql = sqlDatasetCreator.selectData(version.getDataSetTableName());
|
|
|
SQLQuery sqlQuery = session.createSQLQuery(sql);
|
|
|
BeanTransformer datasetTransformer = new BeanTransformer(StdDataSetModel.class);
|
|
|
sqlQuery.setResultTransformer(datasetTransformer);
|
|
|
sqlQuery.setParameter("code", code);
|
|
|
List<StdDataSetModel> dataList = sqlQuery.list();
|
|
|
if (dataList.size() > 0) {
|
|
|
version2DataSetMap.put(versionModel.getVersion(),dataList);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
BeanTransformer datasetTransformer = new BeanTransformer(StdDataSetModel.class);
|
|
|
if (!StringUtil.isEmpty(sql)) {
|
|
|
sql = sql.substring(0, sql.length() - Constants.UNION.length());
|
|
|
SQLQuery sqlQuery = getCurrentSession().createSQLQuery(sql);
|
|
|
sqlQuery.setResultTransformer(datasetTransformer);
|
|
|
sqlQuery.setParameter("code", code);
|
|
|
List<StdDataSetModel> modelList = sqlQuery.list();
|
|
|
|
|
|
if (!version2DataSetMap.isEmpty()) {
|
|
|
sql = Constants.EMPTY;
|
|
|
Integer count = 1;
|
|
|
Map<Integer, String> datasetIdMap = new HashMap<>();
|
|
|
|
|
|
for (StdDataSetModel model : modelList) {
|
|
|
Iterator iter = version2DataSetMap.entrySet().iterator();
|
|
|
while (iter.hasNext()) {
|
|
|
Map.Entry entry = (Map.Entry) iter.next();
|
|
|
SqlCreator sqlMetadataCreator = new SqlCreator(StdMetaDataModel.class);
|
|
|
sqlMetadataCreator.equalConditionQue("datasetId", model.getId());
|
|
|
for (String versionKey : versionList) {
|
|
|
datasetIdMap.put(count++, StringUtil.toString(model.getId()));
|
|
|
StandardVersion version = new StandardVersion(versionKey);
|
|
|
sql = sql + sqlMetadataCreator.selectSingleData(version.getMetaDataTableName()) + Constants.UNION;
|
|
|
}
|
|
|
StandardVersion version = new StandardVersion((String) entry.getKey());
|
|
|
List<StdDataSetModel> dataList = (List<StdDataSetModel>) entry.getValue();
|
|
|
datasetIdMap.put(count++, StringUtil.toString(dataList.get(0).getId()));
|
|
|
sqlMetadataCreator.equalConditionQue("datasetId", dataList.get(0).getId());
|
|
|
sql = sql + sqlMetadataCreator.selectData(version.getMetaDataTableName()) + Constants.UNION;
|
|
|
|
|
|
}
|
|
|
|
|
|
BeanTransformer metadataTransformer = new BeanTransformer(StdMetaDataModel.class);
|
|
|
List<StdMetaDataModel> distinctModelList = new ArrayList<>();
|
|
|
if (!StringUtil.isEmpty(sql)) {
|
|
|
sql = sql.substring(0, sql.length() - Constants.UNION.length());
|
|
|
SQLQuery sqlQuery;
|
|
|
sqlQuery = getCurrentSession().createSQLQuery(sql);
|
|
|
sqlQuery.setResultTransformer(metadataTransformer);
|
|
|
for (int i = 1; i < count; i++) {
|
|
@ -391,9 +397,7 @@ public class StdMetadataService extends SQLGeneralDAO {
|
|
|
for (StdMetaDataModel model : metadataList) {
|
|
|
meatadataModelMap.put(model.getCode(), model);
|
|
|
}
|
|
|
for (String key : meatadataModelMap.keySet()) {
|
|
|
distinctModelList.add(meatadataModelMap.get(key));
|
|
|
}
|
|
|
distinctModelList.addAll(meatadataModelMap.keySet().stream().map(meatadataModelMap::get).collect(Collectors.toList()));
|
|
|
}
|
|
|
|
|
|
return distinctModelList;
|