| 
					
				 | 
			
			
				@ -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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				} 
			 |