Browse Source

Merge branch 'master' of chendi/esb into master

huangzhiyong 8 năm trước cách đây
mục cha
commit
c806905c7f

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

@ -63,11 +63,13 @@ public class MetadataStrategyExecute implements Runnable {
                    return;
                }
            }
            //按名字相似度来适配
            if (standardNameStrategy.match(metadata, version)) {
                updateAdapt(version);
                return;
            }
            updateAdapt(version);
        } catch (Exception e) {
            e.printStackTrace();

+ 17 - 6
src/main/java/com/yihu/hos/standard/match/metadata/MetatdataStandardExistStrategy.java

@ -1,5 +1,6 @@
package com.yihu.hos.standard.match.metadata;
import com.yihu.hos.core.datatype.CollectionUtil;
import com.yihu.hos.standard.dao.IStdDataSetModelDao;
import com.yihu.hos.standard.dao.IStdMetaDataModelDao;
import com.yihu.hos.standard.match.matchModel.MetadataMatchVO;
@ -12,10 +13,12 @@ import com.yihu.hos.standard.service.adapter.AdapterMetadataService;
import com.yihu.hos.standard.util.GetChineseFirst;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.util.springutil.SpringBeanUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
@ -90,6 +93,7 @@ public class MetatdataStandardExistStrategy extends SQLGeneralDAO {
                StdDataSetModel adapterDataset = stdDataSetModelDao.getDatasetName(adapter_std_version, unAdaptStdId);
                if(stdDataset!=null){
                    String stdDatasetName = stdDataset.getName();
                    List<String> sqlList = new ArrayList<String>();
                    for (AdapterMetadataModel stdeMetadataTemp : adapterMetadatas) {
                        //利用名字來匹配
                        if (stdeMetadataTemp.getStdMetadataName().contains(strategyMetadata.getStdMetadataName())) {
@ -103,19 +107,26 @@ public class MetatdataStandardExistStrategy extends SQLGeneralDAO {
                                }
                                StdMetaDataModel orgMetadata = metadataTemps.get(0);
                                //保存适配
                                adapterMetadataService.saveAdapt(strategyMetadata, orgMetadata, version, adapterInfo);
//                                String strSql = adapterMetadataService.saveAdaptSql(strategyMetadata, orgMetadata, version, adapterInfo);
//                                if(null != strSql && !"".equals(strSql)){
//                                    sqlList.add(strSql);
//                                }
                                flag = true;
                                break;
                            }
                        }
                    }
//                    if(CollectionUtils.isNotEmpty(sqlList)){
//                        adapterMetadataService.insertBatch(sqlList);
//                    }
                }
                if (adapterDataset != null) {
                    adapterDatasetService = SpringBeanUtil.getService(AdapterDatasetService.BEAN_ID);
                    AdapterDatasetModel entity = adapterDatasetService.getAdapterDatasetByCode(version, adapterDataset.getCode());
                    adapterDatasetService.saveAdaptDataset(entity,adapterDataset,version);
                }
//                if (adapterDataset != null) {
//                    adapterDatasetService = SpringBeanUtil.getService(AdapterDatasetService.BEAN_ID);
//                    AdapterDatasetModel entity = adapterDatasetService.getAdapterDatasetByCode(version, adapterDataset.getCode());
//                    adapterDatasetService.saveAdaptDataset(entity,adapterDataset,version);
//                }
            }
        } catch (Exception e) {
            e.printStackTrace();

+ 65 - 8
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.match.matchModel.MetadataMatchVO;
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.AdapterDictModel;
import com.yihu.hos.standard.model.adapter.AdapterMetadataModel;
@ -16,6 +17,8 @@ import com.yihu.hos.standard.model.standard.StdDataSetModel;
import com.yihu.hos.standard.model.standard.StdMetaDataModel;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.standard.service.bo.StandardVersion;
import com.yihu.hos.standard.service.standard.StdMetadataService;
import com.yihu.hos.standard.util.GetChineseFirst;
import com.yihu.hos.web.framework.constant.ErrorCode;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
@ -23,8 +26,10 @@ import com.yihu.hos.web.framework.exception.ApiException;
import com.yihu.hos.web.framework.model.DetailModelResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.model.TreeView;
import com.yihu.hos.web.framework.util.springutil.SpringBeanUtil;
import com.yihu.hos.web.framework.util.sql.BeanTransformer;
import com.yihu.hos.web.framework.util.sql.SqlCreator;
import org.apache.commons.collections.CollectionUtils;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.beans.factory.annotation.Autowired;
@ -55,6 +60,11 @@ public class AdapterDatasetService extends SQLGeneralDAO {
    @Autowired
    private IStdDataSetModelDao stdDataSetModelDao;
    @Autowired
    private StdMetadataService stdMetadataService;
    private AdapterDatasetService adapterDatasetService;
    public AdapterDatasetService() {
    }
@ -640,24 +650,71 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        MetadataMatchVO matchVO = new MetadataMatchVO();
        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());//设置第一次匹配
        Set<String> sqlList = new HashSet<String>();
        for (AdapterMetadataModel unAdapterMetadataModel : unAdapterMetadataModels) {
            threadPoolTaskExecutor.execute(new MetadataStrategyExecute(unAdapterMetadataModel, matchVO, std_version,adapter_std_version,version, stdMetaDataModelDao,stdDataSetModelDao,adapterMetadataService));
            String metadataNameFirstCode = GetChineseFirst.cn2py(unAdapterMetadataModel.getStdMetadataName());//待匹配
            List<AdapterMetadataModel> adapterMetadatas = matchVO.getCodeAdapter().get(metadataNameFirstCode);//已存在
            if (adapterMetadatas != null && adapterMetadatas.size() > 0) {
                //获取待适配的数据集名
                Integer unAdaptStdId = unAdapterMetadataModel.getStdDatasetId();
                StdDataSetModel adapterDataset = stdDataSetModelDao.getDatasetName(adapter_std_version, unAdaptStdId);
                if (adapterDataset != null) {
                    adapterDatasetService = SpringBeanUtil.getService(AdapterDatasetService.BEAN_ID);
                    AdapterDatasetModel entity = adapterDatasetService.getAdapterDatasetByCode(version, adapterDataset.getCode());
                    String sqrSql = null;
                    if(null != entity){
                        sqrSql = adapterDatasetService.saveAdaptDatasetSql(entity, adapterDataset, version);
                    }
                    if(null != sqrSql && !"".equals(sqrSql)){
                        sqlList.add(sqrSql);
                    }
                }
            }
        }
        if(CollectionUtils.isNotEmpty(sqlList)){
            List list=new ArrayList();
            Iterator it=sqlList.iterator();
            while(it.hasNext()){
                list.add((String) it.next());
            }
            super.insertBatch(list);
        }
    }
    public void saveAdaptDataset(AdapterDatasetModel strategyDataset,StdDataSetModel orgDataset,String version) throws Exception {
        strategyDataset.setAdapterDatasetId(orgDataset.getId());
        strategyDataset.setAdapterDatasetCode(orgDataset.getCode());
        strategyDataset.setAdapterDatasetName(orgDataset.getName());
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(strategyDataset));
        SqlCreator sqlCreator = new SqlCreator(AdapterDatasetModel.class);
        String sql = sqlCreator.updateDataByTableKey(new AdapterVersion(version).getDataSetTableName(), jsonNode);
        Query query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
        if(null != strategyDataset){
            strategyDataset.setAdapterDatasetId(orgDataset.getId());
            strategyDataset.setAdapterDatasetCode(orgDataset.getCode());
            strategyDataset.setAdapterDatasetName(orgDataset.getName());
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(strategyDataset));
            SqlCreator sqlCreator = new SqlCreator(AdapterDatasetModel.class);
            String sql = sqlCreator.updateDataByTableKey(new AdapterVersion(version).getDataSetTableName(), jsonNode);
            Query query = getExeuteQuery(sqlCreator, sql);
            query.executeUpdate();
        }
    }
    public String saveAdaptDatasetSql(AdapterDatasetModel strategyDataset,StdDataSetModel orgDataset,String version) throws Exception {
        StringBuilder sqlBuffer = new StringBuilder();
        sqlBuffer.append(SqlConstants.UPDATE + new AdapterVersion(version).getDataSetTableName() + SqlConstants.SET);
        sqlBuffer.append(" adapter_dataset_id = " + orgDataset.getId());
        sqlBuffer.append(",adapter_dataset_code = '" + orgDataset.getCode() + "'");
        sqlBuffer.append(",adapter_dataset_name = '" + orgDataset.getName() + "'");
        sqlBuffer.append(" where id=" + strategyDataset.getId());
        return sqlBuffer.toString();
    }
}

+ 20 - 0
src/main/java/com/yihu/hos/standard/service/adapter/AdapterMetadataService.java

@ -476,4 +476,24 @@ public class AdapterMetadataService extends SQLGeneralDAO {
        Query query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    public String saveAdaptSql(AdapterMetadataModel strategyMetadata,StdMetaDataModel orgMetadata,String version,String adapterInfo) throws Exception {
        StringBuilder sqlBuffer = new StringBuilder();
        if(null != orgMetadata){
            sqlBuffer.append(SqlConstants.UPDATE + new AdapterVersion(version).getMetaDataTableName() + SqlConstants.SET);
            sqlBuffer.append(" adapter_dataset_id = " + orgMetadata.getDatasetId());
            sqlBuffer.append(",adapter_metadata_id = " + orgMetadata.getId());
            sqlBuffer.append(",adapter_metadata_code = '" + orgMetadata.getCode() + "'");
            sqlBuffer.append(",adapter_metadata_name = '" + orgMetadata.getName() + "'");
            if(null != adapterInfo){
                sqlBuffer.append(",adapter_info = " + adapterInfo);
            }
            sqlBuffer.append(" where id=" + strategyMetadata.getId());
        }
        return sqlBuffer.toString();
    }
    public void insertBatch(final List<String> insertSqlList) {
        super.insertBatch(insertSqlList);
    }
}