|
@ -1,5 +1,7 @@
|
|
|
package com.yihu.ehr.crawler.service;
|
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
import com.yihu.ehr.crawler.dao.CrawlerDatasetDao;
|
|
|
import com.yihu.ehr.crawler.dao.CrawlerFlowDao;
|
|
|
import com.yihu.ehr.crawler.dao.CrawlerFlowHeadDao;
|
|
@ -20,10 +22,12 @@ import com.yihu.ehr.standard.service.adapter.AdapterSchemeVersionService;
|
|
|
import com.yihu.ehr.standard.service.bo.AdapterVersion;
|
|
|
import net.sf.json.JSONArray;
|
|
|
import net.sf.json.JSONObject;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.io.IOException;
|
|
|
import java.util.*;
|
|
|
|
|
|
@Transactional
|
|
@ -44,7 +48,11 @@ public class CrawlerService {
|
|
|
private CrawlerFlowHeadDao crawlerFlowHeadDao;
|
|
|
@Resource(name = AdapterMetadataService.BEAN_ID)
|
|
|
private AdapterMetadataService adapterMetadataService;
|
|
|
private static Map<Integer,List<FlowLines>> lineCache= new HashMap<>();
|
|
|
|
|
|
public static Map<Integer, List<FlowLines>> getLineCache() {
|
|
|
return lineCache;
|
|
|
}
|
|
|
/**
|
|
|
* 保存编排映射关系
|
|
|
*
|
|
@ -57,10 +65,10 @@ public class CrawlerService {
|
|
|
JSONObject root = JSONObject.fromObject(json);
|
|
|
JSONArray jsonList = root.getJSONArray("lines");
|
|
|
JSONArray entrances = root.getJSONArray("entrances");
|
|
|
AdapterSchemeVersionModel versionModel = adapterSchemeVersionService.getByVersion(version);
|
|
|
AdapterSchemeVersionModel versionModel = (AdapterSchemeVersionModel) adapterSchemeVersionService.get(Integer.valueOf(version));
|
|
|
if (jsonList != null && jsonList.size() > 0) {
|
|
|
// 删除旧关联关系
|
|
|
crawlerDatasetDao.deleteCrawlerDatasetList(versionModel.getId());
|
|
|
crawlerFlowDao.deleteCrawlerFlowList(versionModel.getId());
|
|
|
for (Object item : jsonList) {
|
|
|
JSONObject obj = JSONObject.fromObject(item);
|
|
|
String from = obj.getString("from");
|
|
@ -106,29 +114,38 @@ public class CrawlerService {
|
|
|
AdapterSchemeVersionModel versionModel = (AdapterSchemeVersionModel) adapterSchemeVersionService.get(schemeVersionId);
|
|
|
//获取适配数据集总和
|
|
|
Map<String,Object> map = new HashMap<String,Object>();
|
|
|
map.put("name", datasetName);
|
|
|
List<AdapterDatasetModel> adapterDatasetModelList = adapterDatasetService.getDatasetList(AdapterDatasetModel.class, versionModel.getVersion(), net.sf.json.JSONObject.fromObject(map).toString(), null, null, null);
|
|
|
String condition=null;
|
|
|
if (datasetName!=null && !"".equals(datasetName)){
|
|
|
map.put("name", datasetName);
|
|
|
condition=net.sf.json.JSONObject.fromObject(map).toString();
|
|
|
}
|
|
|
List<AdapterDatasetModel> adapterDatasetModelList = adapterDatasetService.getDatasetList(AdapterDatasetModel.class, versionModel.getVersion(), condition, null, null, null);
|
|
|
//获取编排数据集
|
|
|
List<CrawlerDataSetModel> crawlerDataset = crawlerDatasetDao.getCrawlerDatasetList(versionModel.getId());
|
|
|
DetailModelResult re = new DetailModelResult();
|
|
|
List<CrawlerDatasetResultDetailModel> list = new ArrayList<>();
|
|
|
for (AdapterDatasetModel datasetModel : adapterDatasetModelList) {
|
|
|
CrawlerDatasetResultDetailModel obj = new CrawlerDatasetResultDetailModel();
|
|
|
obj.setSchemeVersionId(schemeVersionId);
|
|
|
obj.setDatasetId(datasetModel.getStdDatasetId());
|
|
|
obj.setDatasetCode(datasetModel.getStdDatasetCode());
|
|
|
obj.setDatasetName(datasetModel.getStdDatasetName());
|
|
|
obj.setSchemeId(datasetModel.getSchemeId());
|
|
|
if (crawlerDataset != null && crawlerDataset.size() > 0) {
|
|
|
for (CrawlerDataSetModel cDataSet : crawlerDataset) {
|
|
|
if (cDataSet.getDatasetId().equals(datasetModel.getAdapterDatasetId())) {
|
|
|
obj.setSchemeVersionId(cDataSet.getSchemeVersionId());
|
|
|
obj.setChecked("1");
|
|
|
break;
|
|
|
if (!StringUtil.isStrEmpty(datasetModel.getAdapterDatasetCode())){
|
|
|
List<AdapterMetadataModel> metadatas = adapterMetadataService.getAdapterMetadataByDataset(versionModel.getVersion(), datasetModel.getId());
|
|
|
if (metadatas != null && metadatas.size() > 0) {
|
|
|
CrawlerDatasetResultDetailModel obj = new CrawlerDatasetResultDetailModel();
|
|
|
obj.setSchemeVersionId(schemeVersionId);
|
|
|
obj.setDatasetId(datasetModel.getId());
|
|
|
obj.setDatasetCode(datasetModel.getStdDatasetCode());
|
|
|
obj.setDatasetName(datasetModel.getStdDatasetName());
|
|
|
obj.setSchemeId(datasetModel.getSchemeId());
|
|
|
if (crawlerDataset != null && crawlerDataset.size() > 0) {
|
|
|
for (CrawlerDataSetModel cDataSet : crawlerDataset) {
|
|
|
if (cDataSet.getDatasetId().equals(datasetModel.getId())) {
|
|
|
obj.setSchemeVersionId(cDataSet.getSchemeVersionId());
|
|
|
obj.setChecked("1");
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
list.add(obj);
|
|
|
}
|
|
|
list.add(obj);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
re.setDetailModelList(list);
|
|
@ -149,32 +166,46 @@ public class CrawlerService {
|
|
|
for (Object item : jsonList) {
|
|
|
JSONObject obj = JSONObject.fromObject(item);
|
|
|
String schemeId = obj.getString("schemeId");
|
|
|
String version = obj.getString("version");
|
|
|
AdapterSchemeVersionModel versionModel = adapterSchemeVersionService.getByVersion(version);
|
|
|
String versionId = obj.getString("versionId");
|
|
|
AdapterSchemeVersionModel versionModel = (AdapterSchemeVersionModel) adapterSchemeVersionService.get(Integer.valueOf(versionId));
|
|
|
AdapterVersion adapterVersion = new AdapterVersion(versionModel.getVersion());
|
|
|
//删除已存在的数据集
|
|
|
crawlerDatasetDao.deleteCrawlerDatasetList(versionModel.getId());
|
|
|
JSONArray dataSets = obj.getJSONArray("dataSets");
|
|
|
//重新存入数据集
|
|
|
for (Object o : dataSets) {
|
|
|
JSONObject dataSet = JSONObject.fromObject(o);
|
|
|
String datasetId = dataSet.getString("datasetId");
|
|
|
String datasetCode = dataSet.getString("datasetCode");
|
|
|
String datasetName = dataSet.getString("datasetName");
|
|
|
CrawlerDataSetModel dataSetModel = new CrawlerDataSetModel();
|
|
|
dataSetModel.setSchemeVersionId(versionModel.getId());
|
|
|
dataSetModel.setSchemeId(Integer.valueOf(schemeId));
|
|
|
dataSetModel.setDatasetId(Integer.valueOf(datasetId));
|
|
|
dataSetModel.setDatasetCode(datasetCode);
|
|
|
dataSetModel.setDatasetName(datasetName);
|
|
|
crawlerDatasetDao.saveEntity(dataSetModel);
|
|
|
List<AdapterDatasetModel> adapterDatasetModelList = new ArrayList<>();
|
|
|
//根据id字符串获取编排数据集
|
|
|
if (obj.containsKey("dataSets")) {
|
|
|
List<Integer> newDatasetIdList = new ArrayList<>();
|
|
|
String dataSetStr = obj.getString("dataSets");
|
|
|
if (StringUtils.isNotBlank(dataSetStr)) {
|
|
|
String[] IdList = dataSetStr.split(",");
|
|
|
for (String aIdList : IdList) {
|
|
|
if (!Objects.equals(aIdList, "")) {
|
|
|
Integer DaSetId = Integer.valueOf(aIdList);
|
|
|
newDatasetIdList.add(DaSetId);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
adapterDatasetModelList = adapterDatasetService.getListByAdapterDatasetIdList(adapterVersion, newDatasetIdList);
|
|
|
for (AdapterDatasetModel model : adapterDatasetModelList) {
|
|
|
CrawlerDataSetModel dataSetModel = new CrawlerDataSetModel();
|
|
|
dataSetModel.setSchemeId(Integer.valueOf(schemeId));
|
|
|
dataSetModel.setSchemeVersionId(versionModel.getId());
|
|
|
dataSetModel.setDatasetId(model.getId());
|
|
|
dataSetModel.setDatasetCode(model.getStdDatasetCode());
|
|
|
dataSetModel.setDatasetName(model.getStdDatasetName());
|
|
|
crawlerDatasetDao.saveEntity(dataSetModel);
|
|
|
}
|
|
|
}
|
|
|
//如果存在编排映射关系,进行保存操作
|
|
|
|
|
|
//如果保存传入编排映射关系,进行保存操作
|
|
|
if (obj.containsKey("relation") && !Objects.equals(obj.getString("relation"), "")) {
|
|
|
saveDataSetRelation(version,json);
|
|
|
saveDataSetRelation(versionId,obj.getString("relation"));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
public List<FlowEntrance> getFlowEntrances(Integer schemeVersionId) {
|
|
|
List<FlowEntrance> entrances = new ArrayList<>();
|
|
|
List<CrawlerFlowHeadModel> modelList = crawlerFlowHeadDao.getCrawlerFlowHeadList(schemeVersionId);
|
|
@ -202,13 +233,14 @@ public class CrawlerService {
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 删除编排数据
|
|
|
* @param version
|
|
|
*/
|
|
|
@Transactional
|
|
|
public String deleteJobData(String version) {
|
|
|
AdapterSchemeVersionModel versionModel = adapterSchemeVersionService.getByVersion(version);
|
|
|
AdapterSchemeVersionModel versionModel = (AdapterSchemeVersionModel) adapterSchemeVersionService.get(Integer.valueOf(version));
|
|
|
if (versionModel == null || versionModel.getId() == null) {
|
|
|
return "删除失败";
|
|
|
}
|
|
@ -234,9 +266,9 @@ public class CrawlerService {
|
|
|
public DetailModelResult getDataSetResult(Integer limit, Integer offset){
|
|
|
try {
|
|
|
StringBuffer stringBuffer = new StringBuffer();
|
|
|
String sql = "SELECT a.scheme_id, a.scheme_version_id, GROUP_CONCAT(a.dataset_id SEPARATOR ';') AS datasetId, GROUP_CONCAT(a.dataset_name SEPARATOR ';') AS datasetName" +
|
|
|
" FROM ( SELECT scheme_id, scheme_version_id, CONCAT(dataset_id) AS dataset_id, CONCAT( dataset_code, ',', dataset_name ) AS dataset_name FROM crawler_dataset ) a" +
|
|
|
" GROUP BY a.scheme_id, a.scheme_version_id";
|
|
|
String sql = "SELECT 1 as status, a.scheme_id, a.scheme_version_id, GROUP_CONCAT(a.dataset_id SEPARATOR ',') AS datasetId, GROUP_CONCAT(a.dataset_name SEPARATOR ',') AS datasetName" +
|
|
|
" FROM crawler_dataset a " +
|
|
|
" GROUP BY a.scheme_id, a.scheme_version_id ";
|
|
|
stringBuffer.append(sql);
|
|
|
if (limit != null && offset != null) {
|
|
|
if (limit > 0 && offset > 0) {
|
|
@ -245,9 +277,12 @@ public class CrawlerService {
|
|
|
}
|
|
|
stringBuffer.append(" ;");
|
|
|
|
|
|
Integer total = crawlerDatasetDao.getTotalRows();
|
|
|
|
|
|
List list = crawlerDatasetDao.queryListBySql(stringBuffer.toString());
|
|
|
DetailModelResult detailModelResult = DetailModelResult.success("获取数据集成功");
|
|
|
detailModelResult.setDetailModelList(list);
|
|
|
detailModelResult.setTotalCount(total);
|
|
|
return detailModelResult;
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
@ -255,6 +290,8 @@ public class CrawlerService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取编排已选择的适配数据集
|
|
|
*
|
|
@ -285,20 +322,20 @@ public class CrawlerService {
|
|
|
List<CrawlerDataSetModel> crawlerDataset = crawlerDatasetDao.getCrawlerDatasetList(versionModel.getId());
|
|
|
List<MappingDataset> list = new ArrayList<>();
|
|
|
for (AdapterDatasetModel datasetModel : adapterDatasetModelList) {
|
|
|
MappingDataset obj = new MappingDataset();
|
|
|
if (crawlerDataset != null && crawlerDataset.size() > 0) {
|
|
|
for (CrawlerDataSetModel cDataSet : crawlerDataset) {
|
|
|
if (cDataSet.getDatasetId().equals(datasetModel.getAdapterDatasetId())) {
|
|
|
// if (crawlerDataset != null && crawlerDataset.size() > 0) {
|
|
|
MappingDataset obj = new MappingDataset();
|
|
|
// for (CrawlerDataSetModel cDataSet : crawlerDataset) {
|
|
|
if ( !StringUtil.isStrEmpty(datasetModel.getAdapterDatasetCode())) {
|
|
|
List<MappingMetadata> metadatas = getMappingMetaDatasByDataset(versionModel.getVersion(), datasetModel.getAdapterDatasetId());
|
|
|
obj.setId(datasetModel.getStdDatasetId());
|
|
|
obj.setCode(datasetModel.getStdDatasetCode());
|
|
|
obj.setName(datasetModel.getStdDatasetName());
|
|
|
obj.setData(metadatas);
|
|
|
break;
|
|
|
// break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
list.add(obj);
|
|
|
// }
|
|
|
list.add(obj);
|
|
|
// }
|
|
|
}
|
|
|
return list;
|
|
|
}
|
|
@ -312,14 +349,17 @@ public class CrawlerService {
|
|
|
*/
|
|
|
public List<MappingMetadata> getMappingMetaDatasByDataset(String adapterVersion, Integer dataSetId) {
|
|
|
List<AdapterMetadataModel> adapterMetadataModels = adapterMetadataService.getAdapterMetadataByDataset(adapterVersion, dataSetId);
|
|
|
AdapterDatasetModel adapterDatasetModel= adapterMetadataService.getAdapterMetadata(adapterVersion, dataSetId);
|
|
|
List<MappingMetadata> resultList = new ArrayList<>();
|
|
|
if (adapterMetadataModels != null && adapterMetadataModels.size() > 0) {
|
|
|
for (AdapterMetadataModel metadataModel : adapterMetadataModels) {
|
|
|
MappingMetadata metadata = new MappingMetadata();
|
|
|
metadata.setId(metadataModel.getAdapterMetadataId());
|
|
|
metadata.setCode(metadataModel.getAdapterMetadataCode());
|
|
|
metadata.setName(metadataModel.getAdapterMetadataName());
|
|
|
resultList.add(metadata);
|
|
|
if(!StringUtil.isStrEmpty( metadataModel.getAdapterMetadataCode())){
|
|
|
MappingMetadata metadata = new MappingMetadata();
|
|
|
metadata.setId(metadataModel.getAdapterMetadataId());
|
|
|
metadata.setCode(adapterDatasetModel.getAdapterDatasetCode()+"-"+metadataModel.getAdapterMetadataCode());
|
|
|
metadata.setName(metadataModel.getAdapterMetadataName());
|
|
|
resultList.add(metadata);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return resultList;
|
|
@ -332,11 +372,16 @@ public class CrawlerService {
|
|
|
* @param datasetIdStr
|
|
|
* @return
|
|
|
*/
|
|
|
public String getRelations(Integer schemeVersionId, String datasetIdStr) {
|
|
|
public String getRelations(Integer schemeVersionId, String datasetIdStr,String lineStr) {
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
try {
|
|
|
List<MappingDataset> datasets = getSchemeDatasetByChecked(schemeVersionId, datasetIdStr);
|
|
|
List<FlowLines> lines = getFlowLines(schemeVersionId);
|
|
|
if (StringUtil.isEmpty(lineStr)){
|
|
|
lines = getFlowLines(schemeVersionId);
|
|
|
}else {
|
|
|
lines=lineCache.get(schemeVersionId);
|
|
|
}
|
|
|
jsonObject.put("tables", datasets);
|
|
|
jsonObject.put("rels", lines);
|
|
|
} catch (Exception e) {
|
|
@ -345,4 +390,14 @@ public class CrawlerService {
|
|
|
return jsonObject.toString();
|
|
|
}
|
|
|
|
|
|
|
|
|
public void setLinesCache(Integer schemeVersionId,String lines) throws IOException {
|
|
|
ObjectMapper objectMapper=new ObjectMapper();
|
|
|
ObjectNode rootNode=objectMapper.readValue(lines,ObjectNode.class);
|
|
|
String lineJson=rootNode.get("lines").toString();
|
|
|
List<FlowLines> line=objectMapper.readValue(lineJson,List.class);
|
|
|
lineCache.put(schemeVersionId,line);
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|