Переглянути джерело

自动适配→适配结果应用数据集出现多个

chendi 8 роки тому
батько
коміт
49f4892ae4

+ 10 - 8
src/main/java/com/yihu/hos/standard/match/metadata/MetadataStrategyExecute.java

@ -26,6 +26,7 @@ public class MetadataStrategyExecute implements Runnable {
    private MetatdataStandardExistStrategy standardExistStrategy;
    private AdapterMetadataService adapterMetadataService;
    private MetatdataStandardNameStrategy standardNameStrategy;
    private IStdDataSetModelDao stdDataSetModelDao;
    public MetadataStrategyExecute(
            AdapterMetadataModel metadata,
@ -42,7 +43,7 @@ public class MetadataStrategyExecute implements Runnable {
        this.adapter_std_version = adapter_std_version;
        this.version = version;
        this.adapterMetadataService = adapterMetadataService;
        this.stdDataSetModelDao = stdDataSetModelDao;
        //项目之间学习适配
        standardExistStrategy = new MetatdataStandardExistStrategy();
@ -51,11 +52,18 @@ public class MetadataStrategyExecute implements Runnable {
        standardExistStrategy.setStdDataSetModelDao(stdDataSetModelDao);
        standardNameStrategy = new MetatdataStandardNameStrategy();
        standardNameStrategy.setAdapterMetadataService(adapterMetadataService);
        standardNameStrategy.setStdDataSetModelDao(stdDataSetModelDao);
    }
    @Override
    public void run() {
        try {
            //按名字相似度来适配
            if (standardNameStrategy.match(metadata, version, std_version)) {
                updateAdapt(version);
                return;
            }
            if (matchVO != null) {
                //项目间学习
                if (standardExistStrategy.match(metadata, matchVO,std_version,adapter_std_version, version)) {
@ -64,12 +72,6 @@ public class MetadataStrategyExecute implements Runnable {
                }
            }
            //按名字相似度来适配
            if (standardNameStrategy.match(metadata, version)) {
                updateAdapt(version);
                return;
            }
            updateAdapt(version);
        } catch (Exception e) {
            e.printStackTrace();
@ -113,7 +115,7 @@ public class MetadataStrategyExecute implements Runnable {
    public synchronized static Map getAllNumAndAdaptNum(String version) {
        Map<String, Integer> adapt = new HashMap<String, Integer>();
        List<Integer> list = size.get(version);
        if(list!=null){
        if(list!=null && list.size()>0){
            adapt.put("all", list.get(0));
            adapt.put("adapt", list.get(1));
        }

+ 45 - 29
src/main/java/com/yihu/hos/standard/match/metadata/MetatdataStandardNameStrategy.java

@ -1,13 +1,17 @@
package com.yihu.hos.standard.match.metadata;
import com.yihu.hos.standard.dao.IStdDataSetModelDao;
import com.yihu.hos.standard.model.adapter.AdapterMetadataModel;
import com.yihu.hos.standard.model.standard.StdDataSetModel;
import com.yihu.hos.standard.model.standard.StdMetaDataModel;
import com.yihu.hos.standard.service.adapter.AdapterMetadataService;
import com.yihu.hos.standard.util.LikeHashMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
@ -18,11 +22,39 @@ import java.util.Map;
@Component("metatdataStandardNameStrategy")
public class MetatdataStandardNameStrategy {
    private static LikeHashMap<String,StdMetaDataModel> nameMap=new LikeHashMap<String,StdMetaDataModel>();//机构名称的map
    private static LikeHashMap<String,StdMetaDataModel> remarkMap=new LikeHashMap<String,StdMetaDataModel>();//机构remark的map
    private static LikeHashMap<String, StdMetaDataModel> nameMap = new LikeHashMap<String, StdMetaDataModel>();//机构名称的map
    private static LikeHashMap<String, StdMetaDataModel> remarkMap = new LikeHashMap<String, StdMetaDataModel>();//机构remark的map
    private AdapterMetadataService adapterMetadataService;
    private IStdDataSetModelDao stdDataSetModelDao;
    public MetatdataStandardNameStrategy(AdapterMetadataService adapterMetadataService, IStdDataSetModelDao stdDataSetModelDao) {
        this.adapterMetadataService = adapterMetadataService;
        this.stdDataSetModelDao = stdDataSetModelDao;
    }
    public MetatdataStandardNameStrategy() {
    }
    public static Map<String, StdMetaDataModel> getRemarkMap() {
        return remarkMap;
    }
    public static void setRemarkMap(LikeHashMap<String, StdMetaDataModel> remarkMap) {
        MetatdataStandardNameStrategy.remarkMap = remarkMap;
    }
    public static Map<String, StdMetaDataModel> getNameMap() {
        return nameMap;
    }
    public static void setNameMap(LikeHashMap<String, StdMetaDataModel> nameMap) {
        MetatdataStandardNameStrategy.nameMap = nameMap;
    }
    public AdapterMetadataService getAdapterMetadataService() {
        return adapterMetadataService;
    }
@ -31,13 +63,12 @@ public class MetatdataStandardNameStrategy {
        this.adapterMetadataService = adapterMetadataService;
    }
    public MetatdataStandardNameStrategy(AdapterMetadataService adapterMetadataService) {
        this.adapterMetadataService = adapterMetadataService;
    public IStdDataSetModelDao getStdDataSetModelDao() {
        return stdDataSetModelDao;
    }
    public MetatdataStandardNameStrategy() {
    public void setStdDataSetModelDao(IStdDataSetModelDao stdDataSetModelDao) {
        this.stdDataSetModelDao = stdDataSetModelDao;
    }
    /**
@ -49,34 +80,19 @@ public class MetatdataStandardNameStrategy {
     * @throws Exception
     */
    @Transactional
    public boolean match(AdapterMetadataModel metadata, String version) throws Exception {
    public boolean match(AdapterMetadataModel metadata, String version, String std_version) throws Exception {
        StdDataSetModel stdDataset = stdDataSetModelDao.getDatasetName(std_version, metadata.getStdDatasetId());
        String name = metadata.getStdMetadataName();
        StdMetaDataModel orgStdeMetadata = nameMap.get(name, true);
        StdMetaDataModel orgStdeMetadata = nameMap.get(name + "_" + stdDataset.getCode(), true);
        if (orgStdeMetadata != null) {
            adapterMetadataService.saveAdapt(metadata, orgStdeMetadata, version,"2");
            adapterMetadataService.saveAdapt(metadata, orgStdeMetadata, version, "2");
            return true;
        }
        orgStdeMetadata=remarkMap.get(name,true);
        if (orgStdeMetadata != null ) {
            adapterMetadataService.saveAdapt(metadata, orgStdeMetadata, version,"2");
        orgStdeMetadata = remarkMap.get(name + "_" + stdDataset.getCode(), true);
        if (orgStdeMetadata != null) {
            adapterMetadataService.saveAdapt(metadata, orgStdeMetadata, version, "2");
            return true;
        }
        return false;
    }
    public static Map<String, StdMetaDataModel> getRemarkMap() {
        return remarkMap;
    }
    public static void setRemarkMap(LikeHashMap<String, StdMetaDataModel> remarkMap) {
        MetatdataStandardNameStrategy.remarkMap = remarkMap;
    }
    public static Map<String, StdMetaDataModel> getNameMap() {
        return nameMap;
    }
    public static void setNameMap(LikeHashMap<String, StdMetaDataModel> nameMap) {
        MetatdataStandardNameStrategy.nameMap = nameMap;
    }
}

+ 5 - 2
src/main/java/com/yihu/hos/standard/service/adapter/AdapterDatasetService.java

@ -653,8 +653,11 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        //設置匹配的机构数据緩存
        List<StdMetaDataModel> orgMetadatas = stdMetadataService.getList(adapter_std_version, null, null, null, null, null);//查找出机构所有的metadatas
        for (StdMetaDataModel stdMetadata:orgMetadatas){
            MetatdataStandardNameStrategy.getNameMap().put(stdMetadata.getName(),stdMetadata);
            MetatdataStandardNameStrategy.getRemarkMap().put(stdMetadata.getDefinition(),stdMetadata);
            StdDataSetModel stdDataset = stdDataSetModelDao.getDatasetName(std_version, stdMetadata.getDatasetId());
            if(null != stdDataset){
                MetatdataStandardNameStrategy.getNameMap().put(stdMetadata.getName() + "_" + stdDataset.getCode(),stdMetadata);
                MetatdataStandardNameStrategy.getRemarkMap().put(stdMetadata.getDefinition() + "_" + stdDataset.getCode(),stdMetadata);
            }
        }
        //执行匹配