Browse Source

自动适配数据集未适配bug 修复;

huangzhiyong 8 years ago
parent
commit
747d1dd4d8

+ 1 - 1
src/main/java/com/yihu/hos/standard/controller/AdapterMetadataController.java

@ -149,7 +149,7 @@ public class AdapterMetadataController extends BaseController {
                    return actionResult;
                }
            }
            adapterDatasetService.strategy(version,adapter_std_version);
            adapterDatasetService.strategy(version,std_version,adapter_std_version);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error(e.getMessage());

+ 11 - 11
src/main/java/com/yihu/hos/standard/dao/StdDataSetModelDao.java

@ -1,17 +1,10 @@
package com.yihu.hos.standard.dao;
import com.yihu.hos.standard.model.adapter.AdapterMetadataModel;
import com.yihu.hos.standard.model.standard.StdDataSetModel;
import com.yihu.hos.standard.service.bo.AdapterVersion;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.model.DataGridResult;
import com.yihu.hos.web.framework.util.sql.BeanTransformer;
import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
/**
 * Created by Administrator on 2016/5/4.
@ -22,9 +15,16 @@ public class StdDataSetModelDao extends SQLGeneralDAO implements IStdDataSetMode
    public StdDataSetModel getDatasetName(String version ,Integer id){
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT d.*").append(" FROM std_dataset_").append(version).append(" d where d.id ="+id);
        Query query = getCurrentSession().createSQLQuery(sql.toString());
        query.setResultTransformer(new BeanTransformer(StdDataSetModel.class));
        StdDataSetModel stdDataSetModel =(StdDataSetModel) query.uniqueResult();
        return stdDataSetModel;
        try {
            Query query = getCurrentSession().createSQLQuery(sql.toString());
            query.setResultTransformer(new BeanTransformer(StdDataSetModel.class));
            StdDataSetModel stdDataSetModel =(StdDataSetModel) query.uniqueResult();
            return stdDataSetModel;
        }catch (Exception e){
            System.out.println("错误SQL:"+sql.toString());
            e.printStackTrace();
            return null;
        }
    }
}

+ 14 - 5
src/main/java/com/yihu/hos/standard/dao/StdMetaDataModelDao.java

@ -16,10 +16,19 @@ public class StdMetaDataModelDao extends SQLGeneralDAO implements IStdMetaDataMo
    public List<StdMetaDataModel> getMetadata(String adapter_std_version, String orgMetadataName,String orgDatasetName){
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT m.*").append(" FROM std_metadata_"+adapter_std_version).append(" m inner join std_dataset_"+adapter_std_version )
                .append(" d on d.id= m.dataset_id where m.name like '%" + orgMetadataName + "%' and d.name like '%" + orgDatasetName+"%'");
        Query query = getCurrentSession().createSQLQuery(sql.toString());
        query.setResultTransformer(new BeanTransformer(StdMetaDataModel.class));
        List<StdMetaDataModel> list = query.list();
        return list;
                .append(" d on d.id= m.dataset_id where m.name like ? and d.name like ?");
        try {
            Query query = getCurrentSession().createSQLQuery(sql.toString());
            query.setParameter(0,"%" + orgMetadataName + "%");
            query.setParameter(1,"%" + orgDatasetName + "%");
            query.setResultTransformer(new BeanTransformer(StdMetaDataModel.class));
            List<StdMetaDataModel> list = query.list();
            return list;
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("错误Like SQL:"+sql.toString());
            return null;
        }
    }
}

+ 4 - 1
src/main/java/com/yihu/hos/standard/match/metadata/MetadataStrategyExecute.java

@ -20,6 +20,7 @@ public class MetadataStrategyExecute implements Runnable {
    private AdapterMetadataModel metadata;
    private MetadataMatchVO matchVO;
    public static Map<String, List<Integer>> size = new HashMap<String, List<Integer>>();
    private String std_version;
    private String adapter_std_version;
    private String version;
    private MetatdataStandardExistStrategy standardExistStrategy;
@ -28,6 +29,7 @@ public class MetadataStrategyExecute implements Runnable {
    public MetadataStrategyExecute(
            AdapterMetadataModel metadata,
            MetadataMatchVO matchVO,
            String std_version,
            String adapter_std_version,
            String version,
            IStdMetaDataModelDao stdMetaDataModelDao,
@ -35,6 +37,7 @@ public class MetadataStrategyExecute implements Runnable {
            AdapterMetadataService adapterMetadataService) {
        this.metadata = metadata;
        this.matchVO = matchVO;
        this.std_version = std_version;
        this.adapter_std_version = adapter_std_version;
        this.version = version;
        this.adapterMetadataService = adapterMetadataService;
@ -52,7 +55,7 @@ public class MetadataStrategyExecute implements Runnable {
        try {
            if (matchVO != null) {
                //项目间学习
                if (standardExistStrategy.match(metadata, matchVO,adapter_std_version, version)) {
                if (standardExistStrategy.match(metadata, matchVO,std_version,adapter_std_version, version)) {
                    updateAdapt(version);
                    return;
                }

+ 38 - 34
src/main/java/com/yihu/hos/standard/match/metadata/MetatdataStandardExistStrategy.java

@ -38,9 +38,9 @@ public class MetatdataStandardExistStrategy extends SQLGeneralDAO {
        this.adapterDatasetService = adapterDatasetService;
    }
    public MetatdataStandardExistStrategy(IStdMetaDataModelDao stdMetaDataModelDao){
       this.stdMetaDataModelDao = stdMetaDataModelDao;
   }
    public MetatdataStandardExistStrategy(IStdMetaDataModelDao stdMetaDataModelDao) {
        this.stdMetaDataModelDao = stdMetaDataModelDao;
    }
    public IStdMetaDataModelDao getStdMetaDataModelDao() {
        return stdMetaDataModelDao;
@ -68,6 +68,7 @@ public class MetatdataStandardExistStrategy extends SQLGeneralDAO {
    public MetatdataStandardExistStrategy() {
    }
    /**
     * 对传进来的StdeMetadata进行匹配
     *
@ -77,42 +78,45 @@ public class MetatdataStandardExistStrategy extends SQLGeneralDAO {
     * @throws Exception
     */
    @Transactional
    public boolean match(AdapterMetadataModel strategyMetadata,MetadataMatchVO matchVO, String adapter_std_version,String version ) throws Exception {
    public boolean match(AdapterMetadataModel strategyMetadata, MetadataMatchVO matchVO, String std_version, String adapter_std_version, String version) {
        boolean flag = false;
        String metadataNameFirstCode= GetChineseFirst.cn2py(strategyMetadata.getStdMetadataName());//待匹配
        List<AdapterMetadataModel> adapterMetadatas=matchVO.getCodeAdapter().get(metadataNameFirstCode);//已存在
        if(adapterMetadatas!=null&&adapterMetadatas.size()>0){
            //获取待适配的数据集名
            Integer unAdaptDatasetId = strategyMetadata.getStdDatasetId();
            Integer adapterDatasetId = strategyMetadata.getAdapterDatasetId();
            StdDataSetModel stdDataset = stdDataSetModelDao.getDatasetName(adapter_std_version, unAdaptDatasetId);
            StdDataSetModel adapterDataset = stdDataSetModelDao.getDatasetName(adapter_std_version, unAdaptDatasetId);
            String stdDatasetName = stdDataset.getName();
            for (AdapterMetadataModel stdeMetadataTemp : adapterMetadatas) {
                //利用名字來匹配
                if(stdeMetadataTemp.getStdMetadataName().contains(strategyMetadata.getStdMetadataName())){
                    String orgMetadataName= stdeMetadataTemp.getAdapterMetadataName();
                    //根据名字查找出 该项目下面的数据元名称
                    List<StdMetaDataModel> metadataTemps = stdMetaDataModelDao.getMetadata(adapter_std_version,orgMetadataName,stdDatasetName);
                    if(metadataTemps!=null&&metadataTemps.size()>0){
                        String adapterInfo = "1";//找到默认为疑似适配
                        if(metadataTemps.size()==1){//找到条数为1,默认为完全适配
                            adapterInfo="2";
        try {
            String metadataNameFirstCode = GetChineseFirst.cn2py(strategyMetadata.getStdMetadataName());//待匹配
            List<AdapterMetadataModel> adapterMetadatas = matchVO.getCodeAdapter().get(metadataNameFirstCode);//已存在
            if (adapterMetadatas != null && adapterMetadatas.size() > 0) {
                //获取待适配的数据集名
                Integer unAdaptStdId = strategyMetadata.getStdDatasetId();
                StdDataSetModel stdDataset = stdDataSetModelDao.getDatasetName(std_version, unAdaptStdId);
                StdDataSetModel adapterDataset = stdDataSetModelDao.getDatasetName(adapter_std_version, unAdaptStdId);
                String stdDatasetName = stdDataset.getName();
                for (AdapterMetadataModel stdeMetadataTemp : adapterMetadatas) {
                    //利用名字來匹配
                    if (stdeMetadataTemp.getStdMetadataName().contains(strategyMetadata.getStdMetadataName())) {
                        String orgMetadataName = stdeMetadataTemp.getAdapterMetadataName();
                        //根据名字查找出 该项目下面的数据元名称
                        List<StdMetaDataModel> metadataTemps = stdMetaDataModelDao.getMetadata(adapter_std_version, orgMetadataName, stdDatasetName);
                        if (metadataTemps != null && metadataTemps.size() > 0) {
                            String adapterInfo = "1";//找到默认为疑似适配
                            if (metadataTemps.size() == 1) {//找到条数为1,默认为完全适配
                                adapterInfo = "2";
                            }
                            StdMetaDataModel orgMetadata = metadataTemps.get(0);
                            //保存适配
                            adapterMetadataService.saveAdapt(strategyMetadata, orgMetadata, version, adapterInfo);
                            flag = true;
                            break;
                        }
                        StdMetaDataModel orgMetadata=metadataTemps.get(0);
                        //保存适配
                        adapterMetadataService.saveAdapt(strategyMetadata, orgMetadata, version,adapterInfo);
                        flag=true;
                        break;
                    }
                }
                if (adapterDataset != null) {
                    adapterDatasetService = SpringBeanUtil.getService(AdapterDatasetService.BEAN_ID);
                    AdapterDatasetModel entity = adapterDatasetService.getAdapterDatasetByCode(version, adapterDataset.getCode());
                    adapterDatasetService.saveAdaptDataset(entity,adapterDataset,version);
                }
            }
            adapterDatasetService = SpringBeanUtil.getService(AdapterDatasetService.BEAN_ID);
            AdapterDatasetModel entity = adapterDatasetService.getAdapterDatasetByCode( version,adapterDataset.getCode());
            entity.setAdapterDatasetId(strategyMetadata.getAdapterDatasetId());
            entity.setAdapterDatasetCode(adapterDataset.getCode());
            entity.setAdapterDatasetName(adapterDataset.getName());
            adapterDatasetService.modifyAdapterDateset(version,entity);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }

+ 3 - 1
src/main/java/com/yihu/hos/standard/model/adapter/AdapterSchemeModel.java

@ -1,6 +1,7 @@
package com.yihu.hos.standard.model.adapter;
import com.yihu.hos.web.framework.model.Result;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
@ -15,7 +16,8 @@ import java.io.Serializable;
public class AdapterSchemeModel extends Result implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    private Integer id;
    @Column(name="parent_id")

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

@ -622,7 +622,7 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        }
    }
    public void strategy(String version,String adapter_std_version) throws Exception {
    public void strategy(String version,String std_version,String adapter_std_version) throws Exception {
        List<AdapterMetadataModel> unAdapterMetadataModels =  adapterMetadataService.getAllUnAdaptMetadata(version);//等待适配的标准数据元
        List<AdapterMetadataModel> adapterMetadataModel = new ArrayList<AdapterMetadataModel>();//之前已经适配好的适配方案
        //获取所有未匹配的
@ -644,25 +644,20 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        MetadataStrategyExecute.setFirst(version, unAdapterMetadataModels.size());//设置第一次匹配
        for (AdapterMetadataModel unAdapterMetadataModel : unAdapterMetadataModels) {
            threadPoolTaskExecutor.execute(new MetadataStrategyExecute(unAdapterMetadataModel, matchVO, adapter_std_version,version, stdMetaDataModelDao,stdDataSetModelDao,adapterMetadataService));
            threadPoolTaskExecutor.execute(new MetadataStrategyExecute(unAdapterMetadataModel, matchVO, std_version,adapter_std_version,version, stdMetaDataModelDao,stdDataSetModelDao,adapterMetadataService));
        }
    }
    public Result modifyAdapterDateset(String adapterVersion, AdapterDatasetModel adapterDatasetModel) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDatasetModel));
            SqlCreator sqlCreator = new SqlCreator(AdapterDatasetModel.class);
            String sql = sqlCreator.updateDataByTableKey(version.getDataSetTableName(), jsonNode);
            Query query = getExeuteQuery(sqlCreator, sql);
            query.executeUpdate();
            adapterDatasetModel.setSuccessFlg(true);
            adapterDatasetModel.setMessage("修改适配数据集成功");
            return adapterDatasetModel;
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("修改适配数据集失败");
        }
    
    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();
    }
}

+ 3 - 3
src/main/resources/application.yml

@ -72,7 +72,7 @@ spring:
  #SAAS管理员账号,暂时配置在此处
  datasource:
      driverClassName: com.mysql.jdbc.Driver
      url: jdbc:mysql://172.17.110.202:8066/global_db?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true
      url: jdbc:mysql://172.19.103.57:8066/global_db?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true
      username: hos
      password: 123456
      test-on-borrow: true
@ -91,7 +91,7 @@ spring:
    show-sql: false
  data:
    mongodb:
      host: 172.17.110.202
      host: 172.19.103.57
      port: 27017
      username: esb
      password: esb
@ -99,7 +99,7 @@ spring:
      gridFsDatabase: dfs
      database: runtime
  activemq:
    broker-url: tcp://172.17.110.202:61616?wireFormat.maxInactivityDuration=0
    broker-url: tcp://172.19.103.57:61616?wireFormat.maxInactivityDuration=0
    user: admin
    password: admin
    pooled: false