Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	Hos-resource/src/main/java/com/yihu/ehr/crawler/controller/CrawlerController.java
#	Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterSchemeService.java
Ezreal 9 yıl önce
ebeveyn
işleme
2beb2ba10d

+ 46 - 0
Hos-resource/src/main/java/com/yihu/ehr/crawler/controller/CrawlerController.java

@ -65,6 +65,52 @@ public class CrawlerController {
        return Result.success("保存成功");
    }
    /**
     * 获取适配方案 数据集关系
     *
     * @param versionId 适配方案版本ID
     * @return
     */
    @RequestMapping("getSchemeDataSets")
    @ResponseBody
    public DetailModelResult getSchemeDataSets(
            @RequestParam(value = "versionId", required = true) Integer versionId,
            @RequestParam(value = "name", required = false) String name
    ) {
        try {
            return crawlerService.getSchemeDataset(versionId);
        } catch (Exception e) {
            e.printStackTrace();
            return new DetailModelResult();
        }
    }
    /**
     * 保存适配方案 数据映射关系
     *
     * @param version
     * @param data     映射关系
     * @return
     */
    @RequestMapping("saveSchemeRelation")
    @ResponseBody
    public ActionResult addSchemeRelation(
            @RequestParam(value = "version", required = true) String version,
            @RequestParam(value = "data", required = true) String data
    ) {
        try {
            return crawlerService.saveDataSetRelation( version, data);
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ActionResult();
        }
    }
    /**
     * 删除任务编排数据
     */

+ 2 - 2
Hos-resource/src/main/java/com/yihu/ehr/crawler/dao/CrawlerDatasetDao.java

@ -15,12 +15,12 @@ public class CrawlerDatasetDao extends SQLGeneralDAO {
    public static final String BEAN_ID = "CrawlerDatasetDao";
    public List<CrawlerDataSetModel> getCrawlerDatasetList(Integer versionId) throws Exception {
        String sql = "select * from crawler_dataset where scheme_version_id='"+versionId+"'";
        String sql = "select * from crawler_dataset where scheme_version_id='" + versionId + "'";
        return super.queryListBySql(sql, CrawlerDataSetModel.class);
    }
    public void deleteCrawlerDatasetList(Integer versionId) throws Exception {
        String sql = "delete from crawler_dataset where scheme_version_id='"+versionId+"'";
        String sql = "delete from crawler_dataset where scheme_version_id='" + versionId + "'";
        super.execute(sql);
    }
}

+ 15 - 0
Hos-resource/src/main/java/com/yihu/ehr/crawler/dao/CrawlerFlowDao.java

@ -1,13 +1,28 @@
package com.yihu.ehr.crawler.dao;
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.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeVersionModel;
import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
 * Created by HZY on 2016/4/27.
 */
@Repository("CrawlerFlowDao")
public class CrawlerFlowDao extends SQLGeneralDAO {
    public static final String BEAN_ID = "CrawlerFlowDao";
    public List<CrawlerFlowModel> getCrawlerFlowList(Integer versionId) {
        String adapterVersionHql = "FROM CrawlerFlowModel where schemeVersionId= :schemeVersionId";
        Query query = getCurrentSession().createQuery(adapterVersionHql);
        query.setParameter("schemeVersionId", versionId);
        List<CrawlerFlowModel> modelList = query.list();
        return modelList;
    }
}

+ 16 - 1
Hos-resource/src/main/java/com/yihu/ehr/crawler/dao/CrawlerFlowHeadDao.java

@ -1,16 +1,31 @@
package com.yihu.ehr.crawler.dao;
import com.yihu.ehr.crawler.model.flow.CrawlerFlowHeadModel;
import com.yihu.ehr.crawler.model.flow.CrawlerFlowModel;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
 * Created by HZY on 2016/4/27.
 */
@Repository("CrawlerFlowHeadDao")
public class CrawlerFlowHeadDao extends SQLGeneralDAO {
    public static final String BEAN_ID = "CrawlerFlowHeadDao";
    public void deleteCrawlerFlowHeadList(Integer versionId) throws Exception {
        String sql = "delete from crawler_flow_head where scheme_version_id='"+versionId+"'";
        String sql = "delete from crawler_flow_head where scheme_version_id='" + versionId + "'";
        super.execute(sql);
    }
    public List<CrawlerFlowHeadModel> getCrawlerFlowHeadList(Integer versionId) {
        String sql = "FROM CrawlerFlowHeadModel where schemeVersionId= :schemeVersionId";
        Query query = getCurrentSession().createQuery(sql);
        query.setParameter("schemeVersionId", versionId);
        List<CrawlerFlowHeadModel> modelList = query.list();
        return modelList;
    }
}

+ 41 - 0
Hos-resource/src/main/java/com/yihu/ehr/crawler/model/flow/resultModel/FlowMapping.java

@ -0,0 +1,41 @@
package com.yihu.ehr.crawler.model.flow.resultModel;
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
/**
 * 适配方案映射数据类
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/4/28.
 */
public class FlowMapping implements Serializable {
    private List<FlowEntrance> entrances;
    private List<FlowLines> lines;
    private Integer schemeVersionId;
    public List<FlowEntrance> getEntrances() {
        return entrances;
    }
    public void setEntrances(List<FlowEntrance> entrances) {
        this.entrances = entrances;
    }
    public List<FlowLines> getLines() {
        return lines;
    }
    public void setLines(List<FlowLines> lines) {
        this.lines = lines;
    }
    public Integer getSchemeVersionId() {
        return schemeVersionId;
    }
    public void setSchemeVersionId(Integer schemeVersionId) {
        this.schemeVersionId = schemeVersionId;
    }
}

+ 64 - 16
Hos-resource/src/main/java/com/yihu/ehr/crawler/service/CrawlerService.java

@ -7,6 +7,9 @@ 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.CrawlerDatasetResultDetailModel;
import com.yihu.ehr.crawler.model.flow.resultModel.FlowEntrance;
import com.yihu.ehr.crawler.model.flow.resultModel.FlowLines;
import com.yihu.ehr.crawler.model.flow.resultModel.FlowMapping;
import com.yihu.ehr.framework.model.ActionResult;
import com.yihu.ehr.framework.model.DetailModelResult;
import com.yihu.ehr.standard.model.adapter.AdapterDatasetModel;
@ -42,8 +45,8 @@ public class CrawlerService {
    /**
     * 保存编排映射关系
     *
     * @param version  适配方案版本
     * @param json     映射数据
     * @param version 适配方案版本
     * @param json    映射数据
     * @return
     * @throws Exception
     */
@ -52,7 +55,7 @@ public class CrawlerService {
        JSONArray jsonList = root.getJSONArray("lines");
        JSONArray entrances = root.getJSONArray("entrances");
        AdapterSchemeVersionModel versionModel = adapterSchemeVersionService.getByVersion(version);
        if (jsonList!=null && jsonList.size()>0) {
        if (jsonList != null && jsonList.size() > 0) {
            // 删除旧关联关系
            crawlerDatasetDao.deleteCrawlerDatasetList(versionModel.getId());
            for (Object item : jsonList) {
@ -104,31 +107,32 @@ public class CrawlerService {
        List<CrawlerDataSetModel> crawlerDataset = crawlerDatasetDao.getCrawlerDatasetList(versionModel.getId());
        DetailModelResult re = new DetailModelResult();
        List<CrawlerDatasetResultDetailModel> list = new ArrayList<>();
        for (AdapterDatasetModel adapterDatasetModel : adapterDatasetModelList) {
            Integer datasetId = adapterDatasetModel.getAdapterDatasetId();
            //是否关联任务
        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) {
                CrawlerDatasetResultDetailModel obj = new CrawlerDatasetResultDetailModel();
                for (CrawlerDataSetModel cDataSet : crawlerDataset) {
                    if (cDataSet.getDatasetId() == datasetId) {
                    if (cDataSet.getDatasetId().equals(datasetModel.getAdapterDatasetId())) {
                        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);
            }
            list.add(obj);
        }
        re.setDetailModelList(list);
        return re;
    }
    /**
     * 保存任务编排数据
     *
     * @param json
     * @return
     * @throws Exception
@ -137,8 +141,7 @@ public class CrawlerService {
        JSONArray jsonList = JSONArray.fromObject(json);
        for(Object item : jsonList)
        {
        for (Object item : jsonList) {
            JSONObject obj = JSONObject.fromObject(item);
            String schemeId = obj.getString("schemeId");
            String version = obj.getString("version");
@ -146,7 +149,7 @@ public class CrawlerService {
            JSONArray dataSets = obj.getJSONArray("dataSets");
            //保存数据集
            for (Object o : dataSets) {
                JSONObject dataSet =  JSONObject.fromObject(o);
                JSONObject dataSet = JSONObject.fromObject(o);
                String datasetId = dataSet.getString("datasetId");
                String datasetCode = dataSet.getString("datasetCode");
                String datasetName = dataSet.getString("datasetName");
@ -165,4 +168,49 @@ public class CrawlerService {
            }
        }
    }
    /**
     * 获取适配方案映射数据
     *
     * @param schemeVersionId
     * @return
     */
    public FlowMapping getFlowMappingDataset(Integer schemeVersionId) {
        FlowMapping flowMapping = new FlowMapping();
        List<FlowEntrance> entrances = getFlowEntrances(schemeVersionId);
        List<FlowLines> lines = getFlowLines(schemeVersionId);
        flowMapping.setSchemeVersionId(schemeVersionId);
        flowMapping.setEntrances(entrances);
        flowMapping.setLines(lines);
        return flowMapping;
    }
    public List<FlowEntrance> getFlowEntrances(Integer schemeVersionId) {
        List<FlowEntrance> entrances = new ArrayList<>();
        List<CrawlerFlowHeadModel> modelList = crawlerFlowHeadDao.getCrawlerFlowHeadList(schemeVersionId);
        for (CrawlerFlowHeadModel headModel : modelList) {
            FlowEntrance entrance = new FlowEntrance();
            entrance.setDataSet(headModel.getDatasetCode());
            entrance.setMeta(headModel.getMetadataCode());
            entrances.add(entrance);
        }
        return entrances;
    }
    public List<FlowLines> getFlowLines(Integer schemeVersionId) {
        List<FlowLines> lines = new ArrayList<>();
        List<CrawlerFlowModel> modelList = crawlerFlowDao.getCrawlerFlowList(schemeVersionId);
        for (CrawlerFlowModel model : modelList) {
            FlowLines line = new FlowLines();
            line.setFrom(model.getInputDatasetCode());
            line.setFromPort(model.getInputMetadataCode());
            line.setTo(model.getDatasetCode());
            line.setToPort(model.getMetadataCode());
            lines.add(line);
        }
        return lines;
    }
}

+ 2 - 156
Hos-resource/src/main/java/com/yihu/ehr/datacollect/controller/DataCollectController.java

@ -1,28 +1,22 @@
package com.yihu.ehr.datacollect.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.common.Services;
import com.yihu.ehr.datacollect.model.RsJobConfig;
import com.yihu.ehr.datacollect.model.RsJobLog;
import com.yihu.ehr.datacollect.service.intf.IDatacollectManager;
import com.yihu.ehr.datacollect.service.intf.IDatacollectService;
import com.yihu.ehr.framework.constrant.DateConvert;
import com.yihu.ehr.framework.model.*;
import com.yihu.ehr.framework.model.ActionResult;
import com.yihu.ehr.framework.model.Result;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.resource.service.IStdService;
import com.yihu.ehr.standard.model.adapter.resultModel.SchemeResultDetailModel;
import com.yihu.ehr.standard.model.standard.StandardModel;
import com.yihu.ehr.standard.service.adapter.AdapterSchemeService;
import com.yihu.ehr.system.service.intf.IDatasourceManager;
import net.sf.json.JSONArray;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
@ -444,152 +438,4 @@ public class DataCollectController extends BaseController {
            return Result.error(ex.getMessage());
        }
    }
    /**
     * 获取适配方案-版本下拉框列表
     * @return
     */
    @RequestMapping("getLayout")
    @ResponseBody
    public DetailModelResult getLayout() {
        try {
            DetailModelResult schemeResultDetailModels = adapterSchemeService.getSchemeList();
            return schemeResultDetailModels;
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }
    /**
     * 获取任务编排 适配版本列表
     * @return
     */
    @RequestMapping("getSchemeVersionList")
    @ResponseBody
    public DetailModelResult getSchemeVersionList() {
        try {
            DetailModelResult schemeResultDetailModels = adapterSchemeService.getSchemeVersionList();
            return schemeResultDetailModels;
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }
    /**
     * 保存或更新 任务编排信息
     *
     * @param list 适配方案 数据集关系
     * @return
     */
    @RequestMapping("updateSchemeList")
    @ResponseBody
    public Result saveOrUpdateSchemes(String list) {
        try {
            return adapterSchemeService.saveOrUpdateSchemeList(list);
        } catch (Exception ex) {
            return Result.error(ex.getMessage());
        }
    }
    /**
     * 获取适配方案 数据集关系
     *
     * @param versionId 适配方案版本ID
     * @return
     */
    @RequestMapping("getSchemeDataSets")
    @ResponseBody
    public DetailModelResult getSchemeDataSets(
            @RequestParam(value = "versionId", required = true) Integer versionId
    ) {
        try {
            return adapterSchemeService.getSchemeDataset(versionId);
        } catch (Exception e) {
            e.printStackTrace();
            return new DetailModelResult();
        }
    }
    /**
     * 保存适配方案数据集关系 (暂定)
     *
     * @param schemeId
     * @param version
     * @param data     映射关系
     * @return
     */
    @RequestMapping("addSchemeRelation")
    @ResponseBody
    public ActionResult addSchemeRelation(
            @RequestParam(value = "schemeId", required = true) Integer schemeId,
            @RequestParam(value = "version", required = true) String version,
            @RequestParam(value = "data", required = true) String data
    ) {
        try {
            return adapterSchemeService.saveDataSetRelation(schemeId, version, data);
        } catch (Exception ex) {
            ex.printStackTrace();
            return new ActionResult();
        }
    }
    /**
     * 保存适配方案 数据映射关系
     *
     * @param schemeId
     * @param version
     * @param data
     * @return
     */
    @RequestMapping("saveCrawlerFlow")
    @ResponseBody
    public Result saveCrawlerFlowRelation(
            @RequestParam(value = "schemeId", required = true) Integer schemeId,
            @RequestParam(value = "version", required = true) String version,
            @RequestParam(value = "data", required = true) String data
    ) {
        try {
            return adapterSchemeService.saveDataSetRelation(schemeId, version, data);
        } catch (Exception ex) {
            return Result.error(ex.getMessage());
        }
    }
    /*
 任务编排
  */
    @RequestMapping("jobLayout")
    public String jobLayout(Model model) {
        model.addAttribute("contentPage", "/datacollect/jobLayout");
        return "partView";
    }
    /*
   任务编排数据映射
    */
    @RequestMapping("jobDataMapping")
    public String jobDataMapping(Model model, String jobId) {
        try {
            model.addAttribute("contentPage", "/datacollect/dataMapping");
            return "pageView";
        } catch (Exception ex) {
            model.addAttribute("contentPage", "/datacollect/dataMapping");
            return "pageView";
        }
    }
    @RequestMapping("datasetDetail")
    public String datasetDetail(Model model,Integer schemeId,String schemeNm,String version) {
        model.addAttribute("contentPage", "/datacollect/datasetDetail");
        model.addAttribute("schemeId",schemeId);
        model.addAttribute("version",version);
        model.addAttribute("schemeNm",schemeNm);
        return "pageView";
    }
}

+ 12 - 193
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterSchemeService.java

@ -2,35 +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.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;
import com.yihu.ehr.standard.model.adapter.resultModel.SchemeResultDetailModel;
import com.yihu.ehr.standard.model.adapter.resultModel.AdapterSchemeResultDetailModel;
import com.yihu.ehr.standard.model.adapter.resultModel.AdapterSchemeResultModel;
import com.yihu.ehr.standard.model.standard.StandardModel;
import com.yihu.ehr.standard.model.standard.StandardVersionModel;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
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;
@ -46,13 +33,6 @@ 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);
@ -229,14 +209,14 @@ public class AdapterSchemeService extends SQLGeneralDAO {
                stdVersionMap.put(model.getVersion(), model);
            }
            List<SchemeResultDetailModel> resultDetailModelList = new ArrayList<>();
            Map<String, SchemeResultDetailModel> resultDetailModelMap = new HashMap<>();
            Map<String, SchemeResultDetailModel> resultDetailModelCheckMap = new HashMap<>();
            Map<String, SchemeResultDetailModel> resultDetailModelAddMap = new HashMap<>();
            List<AdapterSchemeResultDetailModel> resultDetailModelList = new ArrayList<>();
            Map<String, AdapterSchemeResultDetailModel> resultDetailModelMap = new HashMap<>();
            Map<String, AdapterSchemeResultDetailModel> resultDetailModelCheckMap = new HashMap<>();
            Map<String, AdapterSchemeResultDetailModel> resultDetailModelAddMap = new HashMap<>();
            for (AdapterSchemeModel schemeModel : adapterSchemeModelList) {
                String id = "scheme" + schemeModel.getId();
                SchemeResultDetailModel resultDetailModel = new SchemeResultDetailModel();
                AdapterSchemeResultDetailModel resultDetailModel = new AdapterSchemeResultDetailModel();
                resultDetailModel.setId(id);
                resultDetailModel.setPid("");
                resultDetailModel.setType(0);
@ -261,7 +241,7 @@ public class AdapterSchemeService extends SQLGeneralDAO {
            for (AdapterSchemeVersionModel versionModel : versionModelList) {
                String pid = "scheme" + versionModel.getSchemeId();
                String id = "version" + versionModel.getId();
                SchemeResultDetailModel resultDetailModel = new SchemeResultDetailModel();
                AdapterSchemeResultDetailModel resultDetailModel = new AdapterSchemeResultDetailModel();
                resultDetailModel.setId(id);
                resultDetailModel.setPid(pid);
                resultDetailModel.setName(versionModel.getName());
@ -299,18 +279,18 @@ public class AdapterSchemeService extends SQLGeneralDAO {
        return false;
    }
    public DetailModelResult getSchemeList() {
    public DetailModelResult getAdapterSchemeResultModelList() {
        String schemeHql = "FROM AdapterSchemeModel";
        Query query = getCurrentSession().createQuery(schemeHql);
        List<AdapterSchemeModel> adapterSchemeModelList = query.list();
        List<DtoAdapterScheme> schemeList = new ArrayList<>();
        DetailModelResult result=new DetailModelResult();
        List<AdapterSchemeResultModel> schemeList = new ArrayList<>();
        DetailModelResult result = new DetailModelResult();
        for (AdapterSchemeModel schemeModel : adapterSchemeModelList) {
            String adapterVersionHql = "FROM AdapterSchemeVersionModel WHERE schemeId = :schemeId and publishStatus = 1";
            query = getCurrentSession().createQuery(adapterVersionHql);
            query.setParameter("schemeId", schemeModel.getId());
            List<AdapterSchemeVersionModel> versionModelList = query.list();
            DtoAdapterScheme resultDetailModel = new DtoAdapterScheme();
            AdapterSchemeResultModel resultDetailModel = new AdapterSchemeResultModel();
            resultDetailModel.setSchemeId(schemeModel.getId());
            resultDetailModel.setName(schemeModel.getName());
            resultDetailModel.setVersionList(versionModelList);
@ -319,165 +299,4 @@ public class AdapterSchemeService extends SQLGeneralDAO {
        result.setDetailModelList(schemeList);
        return result;
    }
    /**
     * 新增或修改
     *
     * @param json
     * @return
     * @throws Exception
     */
    public ActionResult saveOrUpdateSchemeList(String json) throws Exception {
        JSONArray jsonList = JSONArray.fromObject(json);
        for (Object item : jsonList) {
            JSONObject obj = JSONObject.fromObject(item);
            if (obj.containsKey("id") && obj.getString("id").length() > 0) {
                String id = obj.getString("id");
                //修改
                AdapterSchemeVersionModel schemeVersion = (AdapterSchemeVersionModel) JSONObject.toBean(obj, AdapterSchemeVersionModel.class);
                updateEntity(schemeVersion);
            } else {
                //新增
                AdapterSchemeVersionModel schemeVersion = (AdapterSchemeVersionModel) JSONObject.toBean(obj, AdapterSchemeVersionModel.class);
                saveEntity(schemeVersion);
            }
        }
        return new ActionResult(true, "保存成功!");
    }
    /**
     * 保存编排映射关系
     *
     * @param schemeId 适配方案ID
     * @param version  适配方案版本
     * @param json     映射数据
     * @return
     * @throws Exception
     */
    public ActionResult saveDataSetRelation(Integer schemeId, String version, String json) throws Exception {
        JSONObject root = JSONObject.fromObject(json);
        JSONArray jsonList = root.getJSONArray("lines");
        JSONArray entrances = root.getJSONArray("entrances");
        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();
        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());
                saveOrUpdateEntity(crawlerFlow);
            }
            // 删除编排头部信息
//            crawlerDao.deleteCrawlerHead(versionModel.getId());
            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);
                saveOrUpdateEntity(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 (AdapterDatasetModel datasetModel:datasetString){
            DtoCrawlerDataSet obj = new DtoCrawlerDataSet();
            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.getId())) {
                        obj.setSchemeVersionId(cDataSet.getSchemeVersionId());
                        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());
                String dataSets=getAppendDataSets(crawlerDataset);
                DtoSchemeVersionModel dtoModel=new DtoSchemeVersionModel();
                dtoModel.setSchemeId(model.getSchemeId());
                dtoModel.setId(model.getId());
                dtoModel.setVersion(model.getVersion());
                dtoModel.setName(model.getName());
                dtoModel.setDataSets(dataSets);
                list.add(dtoModel);
            }
        }
        re.setDetailModelList(list);
        return re;
    }
    public String getAppendDataSets(List<CrawlerDataSetModel> crawlerDataset ){
        StringBuffer buffer=new StringBuffer();
        for (CrawlerDataSetModel crawlerDataSetModel:crawlerDataset){
            buffer.append(crawlerDataSetModel.getDatasetName()).append(",");
        }
        return buffer.toString();
    }
}