|  | @ -2,17 +2,22 @@ package com.yihu.ehr.standard.service.adapter;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.JsonNode;
 | 
	
		
			
				|  |  | import com.fasterxml.jackson.databind.ObjectMapper;
 | 
	
		
			
				|  |  | import com.yihu.ehr.common.Services;
 | 
	
		
			
				|  |  | import com.yihu.ehr.crawler.dao.intf.ICrawlerDao;
 | 
	
		
			
				|  |  | import com.yihu.ehr.crawler.model.flow.CrawlerDataSetModel;
 | 
	
		
			
				|  |  | import com.yihu.ehr.crawler.model.flow.CrawlerFlowHeadModel;
 | 
	
		
			
				|  |  | import com.yihu.ehr.crawler.model.flow.CrawlerFlowModel;
 | 
	
		
			
				|  |  | import com.yihu.ehr.crawler.model.flow.resultModel.DtoAdapterScheme;
 | 
	
		
			
				|  |  | import com.yihu.ehr.crawler.model.flow.resultModel.DtoCrawlerDataSet;
 | 
	
		
			
				|  |  | import com.yihu.ehr.crawler.model.flow.resultModel.DtoSchemeVersionModel;
 | 
	
		
			
				|  |  | import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
 | 
	
		
			
				|  |  | import com.yihu.ehr.framework.constrant.Constants;
 | 
	
		
			
				|  |  | import com.yihu.ehr.framework.model.ActionResult;
 | 
	
		
			
				|  |  | import com.yihu.ehr.framework.model.DataGridResult;
 | 
	
		
			
				|  |  | import com.yihu.ehr.framework.model.DetailModelResult;
 | 
	
		
			
				|  |  | import com.yihu.ehr.framework.model.Result;
 | 
	
		
			
				|  |  | import com.yihu.ehr.framework.util.operator.CollectionUtil;
 | 
	
		
			
				|  |  | import com.yihu.ehr.framework.util.operator.StringUtil;
 | 
	
		
			
				|  |  | import com.yihu.ehr.resource.service.IStdService;
 | 
	
		
			
				|  |  | import com.yihu.ehr.standard.model.adapter.AdapterDatasetModel;
 | 
	
		
			
				|  |  | import com.yihu.ehr.standard.model.adapter.AdapterSchemeModel;
 | 
	
		
			
				|  |  | import com.yihu.ehr.standard.model.adapter.AdapterSchemeVersionModel;
 | 
	
	
		
			
				|  | @ -25,6 +30,7 @@ import org.hibernate.Query;
 | 
	
		
			
				|  |  | import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  | import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import javax.annotation.Resource;
 | 
	
		
			
				|  |  | import java.io.IOException;
 | 
	
		
			
				|  |  | import java.util.ArrayList;
 | 
	
		
			
				|  |  | import java.util.HashMap;
 | 
	
	
		
			
				|  | @ -40,6 +46,13 @@ public class AdapterSchemeService extends SQLGeneralDAO {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public static final String BEAN_ID = "AdapterSchemeService";
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Resource(name = Services.StdService)
 | 
	
		
			
				|  |  |     private IStdService stdManager;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     @Resource(name = "CrawlerDao")
 | 
	
		
			
				|  |  |     private ICrawlerDao crawlerDao;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public DetailModelResult getEntityList(String query, String order, Integer limit, Integer offset) {
 | 
	
		
			
				|  |  |         try {
 | 
	
		
			
				|  |  |             List list = getEntityList(AdapterSchemeModel.class, query, order, limit, offset);
 | 
	
	
		
			
				|  | @ -232,7 +245,7 @@ public class AdapterSchemeService extends SQLGeneralDAO {
 | 
	
		
			
				|  |  |                 resultDetailModel.setStdVersion(stdVersionMap.get(schemeModel.getStdVersion()).getVersion());
 | 
	
		
			
				|  |  |                 resultDetailModel.setStdVersionName(stdVersionMap.get(schemeModel.getStdVersion()).getName());
 | 
	
		
			
				|  |  |                 resultDetailModel.setPublisher(stdMap.get(schemeModel.getAdapterStdId()) == null ? "" : stdMap.get(schemeModel.getAdapterStdId()).getPublisher());
 | 
	
		
			
				|  |  |                 resultDetailModel.setAdapterName(stdMap.get(schemeModel.getAdapterStdId())==null?"":stdMap.get(schemeModel.getAdapterStdId()).getName());
 | 
	
		
			
				|  |  |                 resultDetailModel.setAdapterName(stdMap.get(schemeModel.getAdapterStdId()) == null ? "" : stdMap.get(schemeModel.getAdapterStdId()).getName());
 | 
	
		
			
				|  |  |                 if (stdVersionMap.get(schemeModel.getAdapterStdVersion()) != null) {
 | 
	
		
			
				|  |  |                     resultDetailModel.setAdapterVersionName(stdVersionMap.get(schemeModel.getAdapterStdVersion()).getName());
 | 
	
		
			
				|  |  |                     resultDetailModel.setAdapterStdVersion(stdVersionMap.get(schemeModel.getAdapterStdVersion()).getVersion());
 | 
	
	
		
			
				|  | @ -276,7 +289,7 @@ public class AdapterSchemeService extends SQLGeneralDAO {
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public boolean existSchemeVersionValid(Integer schemeId) {
 | 
	
		
			
				|  |  |         String hql="FROM AdapterSchemeVersionModel WHERE schemeId = :schemeId";
 | 
	
		
			
				|  |  |         String hql = "FROM AdapterSchemeVersionModel WHERE schemeId = :schemeId";
 | 
	
		
			
				|  |  |         Query query = getCurrentSession().createQuery(hql);
 | 
	
		
			
				|  |  |         query.setParameter("schemeId", schemeId);
 | 
	
		
			
				|  |  |         List<AdapterSchemeVersionModel> schemeVersionModelList = query.list();
 | 
	
	
		
			
				|  | @ -286,27 +299,25 @@ public class AdapterSchemeService extends SQLGeneralDAO {
 | 
	
		
			
				|  |  |         return false;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     public List<SchemeResultDetailModel> getSchemeList2() {
 | 
	
		
			
				|  |  |     public DetailModelResult getSchemeList() {
 | 
	
		
			
				|  |  |         String schemeHql = "FROM AdapterSchemeModel";
 | 
	
		
			
				|  |  |         Query query = getCurrentSession().createQuery(schemeHql);
 | 
	
		
			
				|  |  |         List<AdapterSchemeModel> adapterSchemeModelList = query.list();
 | 
	
		
			
				|  |  |         List<SchemeResultDetailModel> schemeList = new ArrayList<>();
 | 
	
		
			
				|  |  |         List<DtoAdapterScheme> schemeList = new ArrayList<>();
 | 
	
		
			
				|  |  |         DetailModelResult result=new DetailModelResult();
 | 
	
		
			
				|  |  |         for (AdapterSchemeModel schemeModel : adapterSchemeModelList) {
 | 
	
		
			
				|  |  |             String adapterVersionHql = "FROM AdapterSchemeVersionModel WHERE schemeId = :schemeId";
 | 
	
		
			
				|  |  |             String adapterVersionHql = "FROM AdapterSchemeVersionModel WHERE schemeId = :schemeId and publishStatus = 1";
 | 
	
		
			
				|  |  |             query = getCurrentSession().createQuery(adapterVersionHql);
 | 
	
		
			
				|  |  |             query.setParameter("schemeId", schemeModel.getId());
 | 
	
		
			
				|  |  |             List<AdapterSchemeVersionModel> versionModelList = query.list();
 | 
	
		
			
				|  |  |             String id = "" + schemeModel.getId();
 | 
	
		
			
				|  |  |             SchemeResultDetailModel resultDetailModel = new SchemeResultDetailModel();
 | 
	
		
			
				|  |  |             resultDetailModel.setId(id);
 | 
	
		
			
				|  |  |             resultDetailModel.setPid("");
 | 
	
		
			
				|  |  |             resultDetailModel.setType(0);
 | 
	
		
			
				|  |  |             DtoAdapterScheme resultDetailModel = new DtoAdapterScheme();
 | 
	
		
			
				|  |  |             resultDetailModel.setSchemeId(schemeModel.getId());
 | 
	
		
			
				|  |  |             resultDetailModel.setName(schemeModel.getName());
 | 
	
		
			
				|  |  |             resultDetailModel.setVersionList(versionModelList);
 | 
	
		
			
				|  |  |             schemeList.add(resultDetailModel);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return schemeList;
 | 
	
		
			
				|  |  |         result.setDetailModelList(schemeList);
 | 
	
		
			
				|  |  |         return result;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
	
		
			
				|  | @ -335,27 +346,6 @@ public class AdapterSchemeService extends SQLGeneralDAO {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 根据适配版本 获取数据集列表
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param schemeId
 | 
	
		
			
				|  |  |      * @param version
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public List<AdapterDatasetModel> getAdapterDataSets(Integer schemeId, String version) {
 | 
	
		
			
				|  |  |         List<AdapterDatasetModel> list = new ArrayList<>();
 | 
	
		
			
				|  |  |         String adapterVersionHql = "FROM AdapterSchemeVersionModel WHERE schemeId = :schemeId and version = :version";
 | 
	
		
			
				|  |  |         Query query = getCurrentSession().createQuery(adapterVersionHql);
 | 
	
		
			
				|  |  |         query.setParameter("schemeId", schemeId);
 | 
	
		
			
				|  |  |         query.setParameter("version", version);
 | 
	
		
			
				|  |  |         AdapterSchemeVersionModel versionModel = (AdapterSchemeVersionModel) query.uniqueResult();
 | 
	
		
			
				|  |  |         String tableName = "adapter_dataset_" + versionModel.getVersion();
 | 
	
		
			
				|  |  |         String adapterDataSetSql = "select * FROM " + tableName + " WHERE scheme_id = :schemeId";
 | 
	
		
			
				|  |  |         Query dataSetQuery = getCurrentSession().createSQLQuery(adapterDataSetSql).addEntity(AdapterDatasetModel.class);
 | 
	
		
			
				|  |  |         dataSetQuery.setParameter("schemeId", schemeId);
 | 
	
		
			
				|  |  |         List<AdapterDatasetModel> adapterDataSet = dataSetQuery.list();
 | 
	
		
			
				|  |  |         return adapterDataSet;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 保存编排映射关系
 | 
	
	
		
			
				|  | @ -375,33 +365,112 @@ public class AdapterSchemeService extends SQLGeneralDAO {
 | 
	
		
			
				|  |  |         query.setParameter("schemeId", schemeId);
 | 
	
		
			
				|  |  |         query.setParameter("version", version);
 | 
	
		
			
				|  |  |         AdapterSchemeVersionModel versionModel = (AdapterSchemeVersionModel) query.uniqueResult();
 | 
	
		
			
				|  |  |         for (Object item : jsonList) {
 | 
	
		
			
				|  |  |             JSONObject obj = JSONObject.fromObject(item);
 | 
	
		
			
				|  |  |             String from = obj.getString("from");
 | 
	
		
			
				|  |  |             String to = obj.getString("to");
 | 
	
		
			
				|  |  |             String fromPort = obj.getString("fromPort");
 | 
	
		
			
				|  |  |             String toPort = obj.getString("toPort");
 | 
	
		
			
				|  |  |             //TODO 保存编排关系
 | 
	
		
			
				|  |  |             CrawlerFlowModel crawlerFlow = new CrawlerFlowModel();
 | 
	
		
			
				|  |  |             crawlerFlow.setDatasetCode(to);
 | 
	
		
			
				|  |  |             crawlerFlow.setInputDatasetCode(from);
 | 
	
		
			
				|  |  |             crawlerFlow.setMetadataCode(toPort);
 | 
	
		
			
				|  |  |             crawlerFlow.setInputMetadataCode(fromPort);
 | 
	
		
			
				|  |  |             crawlerFlow.setSchemeVersionId(versionModel.getId());
 | 
	
		
			
				|  |  |             saveEntity(crawlerFlow);
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         if (jsonList!=null && jsonList.size()>0) {
 | 
	
		
			
				|  |  |             // 删除旧关联关系
 | 
	
		
			
				|  |  |             crawlerDao.deleteSchemeVersion(versionModel.getId());
 | 
	
		
			
				|  |  |             for (Object item : jsonList) {
 | 
	
		
			
				|  |  |                 JSONObject obj = JSONObject.fromObject(item);
 | 
	
		
			
				|  |  |                 String from = obj.getString("from");
 | 
	
		
			
				|  |  |                 String to = obj.getString("to");
 | 
	
		
			
				|  |  |                 String fromPort = obj.getString("fromPort");
 | 
	
		
			
				|  |  |                 String toPort = obj.getString("toPort");
 | 
	
		
			
				|  |  |                 // 保存编排关系
 | 
	
		
			
				|  |  |                 CrawlerFlowModel crawlerFlow = new CrawlerFlowModel();
 | 
	
		
			
				|  |  |                 crawlerFlow.setDatasetCode(to);
 | 
	
		
			
				|  |  |                 crawlerFlow.setInputDatasetCode(from);
 | 
	
		
			
				|  |  |                 crawlerFlow.setMetadataCode(toPort);
 | 
	
		
			
				|  |  |                 crawlerFlow.setInputMetadataCode(fromPort);
 | 
	
		
			
				|  |  |                 crawlerFlow.setSchemeVersionId(versionModel.getId());
 | 
	
		
			
				|  |  |                 saveEntity(crawlerFlow);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             // 删除编排头部信息
 | 
	
		
			
				|  |  |             crawlerDao.deleteCrawlerHead(versionModel.getId());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         for (Object item : entrances) {
 | 
	
		
			
				|  |  |             JSONObject obj = JSONObject.fromObject(item);
 | 
	
		
			
				|  |  |             String dataSet = obj.getString("dataSet");
 | 
	
		
			
				|  |  |             String meta = obj.getString("meta");
 | 
	
		
			
				|  |  |             //TODO  保存入口数据集
 | 
	
		
			
				|  |  |             CrawlerFlowHeadModel headModel = new CrawlerFlowHeadModel();
 | 
	
		
			
				|  |  |             headModel.setSchemeVersionId(versionModel.getId());
 | 
	
		
			
				|  |  |             headModel.setDatasetCode(dataSet);
 | 
	
		
			
				|  |  |             headModel.setMetadataCode(meta);
 | 
	
		
			
				|  |  |             saveEntity(headModel);
 | 
	
		
			
				|  |  |             for (Object item : entrances) {
 | 
	
		
			
				|  |  |                 JSONObject obj = JSONObject.fromObject(item);
 | 
	
		
			
				|  |  |                 String dataSet = obj.getString("dataSet");
 | 
	
		
			
				|  |  |                 String meta = obj.getString("meta");
 | 
	
		
			
				|  |  |                 //  保存入口数据集
 | 
	
		
			
				|  |  |                 CrawlerFlowHeadModel headModel = new CrawlerFlowHeadModel();
 | 
	
		
			
				|  |  |                 headModel.setSchemeVersionId(versionModel.getId());
 | 
	
		
			
				|  |  |                 headModel.setDatasetCode(dataSet);
 | 
	
		
			
				|  |  |                 headModel.setMetadataCode(meta);
 | 
	
		
			
				|  |  |                 saveEntity(headModel);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         return new ActionResult(true, "保存成功!");
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 获取任务编排数据集列表
 | 
	
		
			
				|  |  |      *
 | 
	
		
			
				|  |  |      * @param schemeVersionId
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public DetailModelResult getSchemeDataset(Integer schemeVersionId) throws Exception {
 | 
	
		
			
				|  |  |         String adapterVersionHql = "FROM AdapterSchemeVersionModel WHERE id = :id";
 | 
	
		
			
				|  |  |         Query query = getCurrentSession().createQuery(adapterVersionHql);
 | 
	
		
			
				|  |  |         query.setParameter("id", schemeVersionId);
 | 
	
		
			
				|  |  |         AdapterSchemeVersionModel versionModel = (AdapterSchemeVersionModel) query.uniqueResult();
 | 
	
		
			
				|  |  |         //获取适配数据集总和
 | 
	
		
			
				|  |  |         List<AdapterDatasetModel> datasetString = stdManager.getDatasetByScheme(versionModel.getVersion());
 | 
	
		
			
				|  |  |         JSONArray jsonArray = JSONArray.fromObject(datasetString);
 | 
	
		
			
				|  |  |         //获取编排数据集
 | 
	
		
			
				|  |  |         List<CrawlerDataSetModel> crawlerDataset = crawlerDao.getSchemeDataset(versionModel.getId());
 | 
	
		
			
				|  |  |         DetailModelResult re = new DetailModelResult();
 | 
	
		
			
				|  |  |         List<DtoCrawlerDataSet> list = new ArrayList<>();
 | 
	
		
			
				|  |  |         for (Object item : jsonArray) {
 | 
	
		
			
				|  |  |             JSONObject jsonItem = JSONObject.fromObject(item);
 | 
	
		
			
				|  |  |             String datasetId = jsonItem.getString("adapterDatasetId");
 | 
	
		
			
				|  |  |             //是否关联任务
 | 
	
		
			
				|  |  |             if (crawlerDataset != null && crawlerDataset.size() > 0) {
 | 
	
		
			
				|  |  |                 DtoCrawlerDataSet obj = new DtoCrawlerDataSet();
 | 
	
		
			
				|  |  |                 for (CrawlerDataSetModel cDataSet : crawlerDataset) {
 | 
	
		
			
				|  |  |                     if (cDataSet.getDatasetId().equals(datasetId)) {
 | 
	
		
			
				|  |  |                         obj.setSchemeVersionId(cDataSet.getSchemeVersionId());
 | 
	
		
			
				|  |  |                         obj.setDatasetId(cDataSet.getDatasetId());
 | 
	
		
			
				|  |  |                         obj.setDatasetCode(cDataSet.getDatasetCode());
 | 
	
		
			
				|  |  |                         obj.setDatasetName(cDataSet.getDatasetName());
 | 
	
		
			
				|  |  |                         obj.setSchemeId(cDataSet.getSchemeId());
 | 
	
		
			
				|  |  |                         obj.setChecked("1");
 | 
	
		
			
				|  |  |                         break;
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 list.add(obj);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         re.setDetailModelList(list);
 | 
	
		
			
				|  |  |         return re;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     /**
 | 
	
		
			
				|  |  |      * 获取任务编排 适配版本列表
 | 
	
		
			
				|  |  |      * @return
 | 
	
		
			
				|  |  |      * @throws Exception
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     public DetailModelResult getSchemeVersionList() throws Exception {
 | 
	
		
			
				|  |  |         List<DtoSchemeVersionModel> list=new ArrayList<>();
 | 
	
		
			
				|  |  |         String adapterVersionHql = "FROM AdapterSchemeVersionModel ";
 | 
	
		
			
				|  |  |         Query query = getCurrentSession().createQuery(adapterVersionHql);
 | 
	
		
			
				|  |  |         List<AdapterSchemeVersionModel> modelList =  query.list();
 | 
	
		
			
				|  |  |         DetailModelResult re = new DetailModelResult();
 | 
	
		
			
				|  |  |         if (modelList !=null && modelList.size()> 0){
 | 
	
		
			
				|  |  |             for (AdapterSchemeVersionModel model:modelList){
 | 
	
		
			
				|  |  |                 List<CrawlerDataSetModel> crawlerDataset = crawlerDao.getSchemeDataset(model.getId());
 | 
	
		
			
				|  |  |                 DtoSchemeVersionModel dtoModel=new DtoSchemeVersionModel();
 | 
	
		
			
				|  |  |                 dtoModel.setSchemeId(model.getSchemeId());
 | 
	
		
			
				|  |  |                 dtoModel.setId(model.getId());
 | 
	
		
			
				|  |  |                 dtoModel.setVersion(model.getVersion());
 | 
	
		
			
				|  |  |                 dtoModel.setName(model.getName());
 | 
	
		
			
				|  |  |                 dtoModel.setDataSets(crawlerDataset);
 | 
	
		
			
				|  |  |                 list.add(dtoModel);
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  |         re.setDetailModelList(list);
 | 
	
		
			
				|  |  |         return re;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |