Browse Source

根据名字自动适配

chenyongxing 8 years ago
parent
commit
7326232a2c

+ 8 - 0
src/main/java/com/yihu/hos/standard/match/dictionary/DictItemStrategyExecute.java

@ -26,6 +26,8 @@ public class DictItemStrategyExecute implements Runnable {
    private StdDictionaryEntryModelDao stdDictionaryEntryDao;
    private StdDictionaryEntryModelDao stdDictionaryEntryDao;
    private AdapterDictEntryService adapterDictEntryService;
    private AdapterDictEntryService adapterDictEntryService;
    private DictitemStandardNameStrategy dictitemStandardNameStrategy;
    public DictItemStrategyExecute(
    public DictItemStrategyExecute(
            AdapterDictEntryModel adapterDictEntryModel,
            AdapterDictEntryModel adapterDictEntryModel,
            DictItemMatchVO matchVO,
            DictItemMatchVO matchVO,
@ -43,6 +45,8 @@ public class DictItemStrategyExecute implements Runnable {
        standardExistStrategy.setStdDictionaryDao(stdDictionaryDao);
        standardExistStrategy.setStdDictionaryDao(stdDictionaryDao);
        standardExistStrategy.setStdDictionaryEntryDao(stdDictionaryEntryDao);
        standardExistStrategy.setStdDictionaryEntryDao(stdDictionaryEntryDao);
        standardExistStrategy.setAdapterDictEntryService(adapterDictEntryService);
        standardExistStrategy.setAdapterDictEntryService(adapterDictEntryService);
        dictitemStandardNameStrategy = new DictitemStandardNameStrategy();
        dictitemStandardNameStrategy.setAdapterDictEntryService(adapterDictEntryService);
    }
    }
    public static void setVersionYes(String version) {
    public static void setVersionYes(String version) {
@ -59,6 +63,10 @@ public class DictItemStrategyExecute implements Runnable {
                    return;
                    return;
                }
                }
            }
            }
            if (dictitemStandardNameStrategy.match(adapterDictEntryModel, version)) {
                updateAdapt(version);
                return;
            }
            updateAdapt(version);
            updateAdapt(version);
        } catch (Exception e) {
        } catch (Exception e) {
            e.printStackTrace();
            e.printStackTrace();

+ 62 - 0
src/main/java/com/yihu/hos/standard/match/dictionary/DictitemStandardNameStrategy.java

@ -0,0 +1,62 @@
package com.yihu.hos.standard.match.dictionary;
import com.yihu.hos.standard.model.adapter.AdapterDictEntryModel;
import com.yihu.hos.standard.model.standard.StdDictionaryEntryModel;
import com.yihu.hos.standard.service.adapter.AdapterDictEntryService;
import com.yihu.hos.standard.util.LikeHashMap;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
/**
 * Created by Administrator on 2016/7/4.
 */
@Scope("prototype")
@Component("dictitemStandardNameStrategy")
public class DictitemStandardNameStrategy {
    private AdapterDictEntryService adapterDictEntryService;
    public AdapterDictEntryService getAdapterDictEntryService() {
        return adapterDictEntryService;
    }
    public void setAdapterDictEntryService(AdapterDictEntryService adapterDictEntryService) {
        this.adapterDictEntryService = adapterDictEntryService;
    }
    public DictitemStandardNameStrategy(AdapterDictEntryService adapterDictEntryService) {
        this.adapterDictEntryService = adapterDictEntryService;
    }
    private static LikeHashMap<String,StdDictionaryEntryModel> nameMap=new LikeHashMap<String,StdDictionaryEntryModel>();//机构字典项值的map
    public DictitemStandardNameStrategy() {
    }
    @Transactional
    public boolean match(AdapterDictEntryModel adapterDictEntryModel, String version) throws Exception {
        StdDictionaryEntryModel orgDictItem = nameMap.get(adapterDictEntryModel.getStdEntryValue(), true);
        if (orgDictItem != null ) {
            adapterDictEntryService.saveAdapt(adapterDictEntryModel, orgDictItem, version,"2");
            return true;
        }
        return false;
    }
    public static Map<String, StdDictionaryEntryModel> getNameMap() {
        return nameMap;
    }
    public static void setNameMap(LikeHashMap<String, StdDictionaryEntryModel> nameMap) {
        DictitemStandardNameStrategy.nameMap = nameMap;
    }
}

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

@ -24,6 +24,7 @@ public class MetadataStrategyExecute implements Runnable {
    private String version;
    private String version;
    private MetatdataStandardExistStrategy standardExistStrategy;
    private MetatdataStandardExistStrategy standardExistStrategy;
    private AdapterMetadataService adapterMetadataService;
    private AdapterMetadataService adapterMetadataService;
    private MetatdataStandardNameStrategy standardNameStrategy;
    public MetadataStrategyExecute(
    public MetadataStrategyExecute(
            AdapterMetadataModel metadata,
            AdapterMetadataModel metadata,
@ -45,6 +46,8 @@ public class MetadataStrategyExecute implements Runnable {
        standardExistStrategy.setStdMetaDataModelDao(stdMetaDataModelDao);
        standardExistStrategy.setStdMetaDataModelDao(stdMetaDataModelDao);
        standardExistStrategy.setAdapterMetadataService(adapterMetadataService);
        standardExistStrategy.setAdapterMetadataService(adapterMetadataService);
        standardExistStrategy.setStdDataSetModelDao(stdDataSetModelDao);
        standardExistStrategy.setStdDataSetModelDao(stdDataSetModelDao);
        standardNameStrategy = new MetatdataStandardNameStrategy();
        standardNameStrategy.setAdapterMetadataService(adapterMetadataService);
    }
    }
    @Override
    @Override
@ -57,6 +60,11 @@ public class MetadataStrategyExecute implements Runnable {
                    return;
                    return;
                }
                }
            }
            }
            //按名字相似度来适配
            if (standardNameStrategy.match(metadata, version)) {
                updateAdapt(version);
                return;
            }
            updateAdapt(version);
            updateAdapt(version);
        } catch (Exception e) {
        } catch (Exception e) {
            e.printStackTrace();
            e.printStackTrace();

+ 82 - 0
src/main/java/com/yihu/hos/standard/match/metadata/MetatdataStandardNameStrategy.java

@ -0,0 +1,82 @@
package com.yihu.hos.standard.match.metadata;
import com.yihu.hos.standard.model.adapter.AdapterMetadataModel;
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.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.Map;
/**
 * Created by Administrator on 2016/7/4.
 */
@Scope("prototype")
@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 AdapterMetadataService adapterMetadataService;
    public AdapterMetadataService getAdapterMetadataService() {
        return adapterMetadataService;
    }
    public void setAdapterMetadataService(AdapterMetadataService adapterMetadataService) {
        this.adapterMetadataService = adapterMetadataService;
    }
    public MetatdataStandardNameStrategy(AdapterMetadataService adapterMetadataService) {
        this.adapterMetadataService = adapterMetadataService;
    }
    public MetatdataStandardNameStrategy() {
    }
    /**
     * 对传进来的metadata进行匹配
     *
     * @param metadata
     * @param version
     * @return
     * @throws Exception
     */
    @Transactional
    public boolean match(AdapterMetadataModel metadata, String version) throws Exception {
        String name = metadata.getStdMetadataName();
        StdMetaDataModel orgStdeMetadata = nameMap.get(name, true);
        if (orgStdeMetadata != null) {
            adapterMetadataService.saveAdapt(metadata, orgStdeMetadata, version,"2");
            return true;
        }
        orgStdeMetadata=remarkMap.get(name,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;
    }
}

+ 13 - 0
src/main/java/com/yihu/hos/standard/service/adapter/AdapterDatasetService.java

@ -8,6 +8,7 @@ import com.yihu.hos.standard.dao.IStdDataSetModelDao;
import com.yihu.hos.standard.dao.IStdMetaDataModelDao;
import com.yihu.hos.standard.dao.IStdMetaDataModelDao;
import com.yihu.hos.standard.match.matchModel.MetadataMatchVO;
import com.yihu.hos.standard.match.matchModel.MetadataMatchVO;
import com.yihu.hos.standard.match.metadata.MetadataStrategyExecute;
import com.yihu.hos.standard.match.metadata.MetadataStrategyExecute;
import com.yihu.hos.standard.match.metadata.MetatdataStandardNameStrategy;
import com.yihu.hos.standard.model.adapter.AdapterDatasetModel;
import com.yihu.hos.standard.model.adapter.AdapterDatasetModel;
import com.yihu.hos.standard.model.adapter.AdapterDictModel;
import com.yihu.hos.standard.model.adapter.AdapterDictModel;
import com.yihu.hos.standard.model.adapter.AdapterMetadataModel;
import com.yihu.hos.standard.model.adapter.AdapterMetadataModel;
@ -16,6 +17,7 @@ import com.yihu.hos.standard.model.standard.StdDataSetModel;
import com.yihu.hos.standard.model.standard.StdMetaDataModel;
import com.yihu.hos.standard.model.standard.StdMetaDataModel;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.standard.service.bo.StandardVersion;
import com.yihu.hos.standard.service.bo.StandardVersion;
import com.yihu.hos.standard.service.standard.StdMetadataService;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
@ -55,6 +57,9 @@ public class AdapterDatasetService extends SQLGeneralDAO {
    @Autowired
    @Autowired
    private IStdDataSetModelDao stdDataSetModelDao;
    private IStdDataSetModelDao stdDataSetModelDao;
    @Autowired
    private StdMetadataService stdMetadataService;
    public AdapterDatasetService() {
    public AdapterDatasetService() {
    }
    }
@ -640,6 +645,14 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        MetadataMatchVO matchVO = new MetadataMatchVO();
        MetadataMatchVO matchVO = new MetadataMatchVO();
        matchVO.setCodeAdapter(matchVO.geNameGroup(adapterMetadataModel));
        matchVO.setCodeAdapter(matchVO.geNameGroup(adapterMetadataModel));
        //設置匹配的机构数据緩存
        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);
        }
        //执行匹配
        //执行匹配
        MetadataStrategyExecute.setFirst(version, unAdapterMetadataModels.size());//设置第一次匹配
        MetadataStrategyExecute.setFirst(version, unAdapterMetadataModels.size());//设置第一次匹配

+ 15 - 0
src/main/java/com/yihu/hos/standard/service/adapter/AdapterDictService.java

@ -6,11 +6,15 @@ import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.standard.dao.IStdDictionaryModelDao;
import com.yihu.hos.standard.dao.IStdDictionaryModelDao;
import com.yihu.hos.standard.dao.StdDictionaryEntryModelDao;
import com.yihu.hos.standard.dao.StdDictionaryEntryModelDao;
import com.yihu.hos.standard.match.dictionary.DictItemStrategyExecute;
import com.yihu.hos.standard.match.dictionary.DictItemStrategyExecute;
import com.yihu.hos.standard.match.dictionary.DictitemStandardNameStrategy;
import com.yihu.hos.standard.match.matchModel.DictItemMatchVO;
import com.yihu.hos.standard.match.matchModel.DictItemMatchVO;
import com.yihu.hos.standard.model.adapter.AdapterDictEntryModel;
import com.yihu.hos.standard.model.adapter.AdapterDictEntryModel;
import com.yihu.hos.standard.model.adapter.AdapterDictModel;
import com.yihu.hos.standard.model.adapter.AdapterDictModel;
import com.yihu.hos.standard.model.adapter.AdapterSchemeVersionModel;
import com.yihu.hos.standard.model.adapter.AdapterSchemeVersionModel;
import com.yihu.hos.standard.model.standard.StdDictionaryEntryModel;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.standard.service.bo.StandardVersion;
import com.yihu.hos.standard.service.standard.StdDictService;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.model.Result;
@ -46,6 +50,9 @@ public class AdapterDictService extends SQLGeneralDAO {
    @Autowired
    @Autowired
    private StdDictionaryEntryModelDao stdDictionaryEntryDao;
    private StdDictionaryEntryModelDao stdDictionaryEntryDao;
    @Autowired
    private StdDictService stdDictService;
    public AdapterDictService() {
    public AdapterDictService() {
    }
    }
@ -210,6 +217,14 @@ public class AdapterDictService extends SQLGeneralDAO {
        DictItemMatchVO matchVO= new DictItemMatchVO();
        DictItemMatchVO matchVO= new DictItemMatchVO();
        matchVO.setCodeAdapter(matchVO.geNameGroup(adapterDictEntryModels));
        matchVO.setCodeAdapter(matchVO.geNameGroup(adapterDictEntryModels));
        //設置匹配的机构数据緩存
        StandardVersion standardVersion = new StandardVersion(adapter_std_version);
        List<StdDictionaryEntryModel> dictItems = stdDictService.getDicEntryList(standardVersion, null, null, null, null);
        for (StdDictionaryEntryModel stdDictItem:dictItems){
            DictitemStandardNameStrategy.getNameMap().put(stdDictItem.getValue(),stdDictItem);
        }
        //执行匹配
        //执行匹配
        DictItemStrategyExecute.setFirst(version, unAdapterDictEntryModels.size());//设置第一次匹配
        DictItemStrategyExecute.setFirst(version, unAdapterDictEntryModels.size());//设置第一次匹配

+ 9 - 5
src/main/java/com/yihu/hos/standard/service/standard/StdDictService.java

@ -258,13 +258,17 @@ public class StdDictService extends SQLGeneralDAO {
        return (List<StdDictionaryModel>) sessionQuery.list();
        return (List<StdDictionaryModel>) sessionQuery.list();
    }
    }
    private List<StdDictionaryEntryModel> getDicEntryList(StandardVersion standardVersion, Map<String, Object> query, Map<String, String> order, Integer limit, Integer offset) {
    public List<StdDictionaryEntryModel> getDicEntryList(StandardVersion standardVersion, Map<String, Object> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryEntryModel.class);
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryEntryModel.class);
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        if(null!=query){
            for (String key : query.keySet()) {
                sqlCreator.equalCondition(key, query.get(key));
            }
        }
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        if(order!=null){
            for (String key : order.keySet()) {
                sqlCreator.order(key, order.get(key));
            }
        }
        }
        String sql = sqlCreator.selectData(standardVersion.getDictEntryTableName());
        String sql = sqlCreator.selectData(standardVersion.getDictEntryTableName());

+ 3 - 1
src/main/java/com/yihu/hos/standard/service/standard/StdMetadataService.java

@ -201,7 +201,9 @@ public class StdMetadataService extends SQLGeneralDAO {
    private List<StdMetaDataModel> getList(StandardVersion standardVersion, Integer datasetId, Map<String, Object> query, Map<String, String> order, Integer limit, Integer offset) {
    private List<StdMetaDataModel> getList(StandardVersion standardVersion, Integer datasetId, Map<String, Object> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
        SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
        sqlCreator.equalCondition("datasetId", datasetId);
        if(null!=datasetId){
            sqlCreator.equalCondition("datasetId", datasetId);
        }
        for (String key : query.keySet()) {
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
            sqlCreator.equalCondition(key, query.get(key));
        }
        }