|  | @ -2,9 +2,13 @@ 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.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;
 | 
	
	
		
			
				|  | @ -13,6 +17,7 @@ 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();
 | 
	
	
		
			
				|  | @ -375,33 +388,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;
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | }
 |