浏览代码

Merge branch 'master' of chenyj/cyj into master

esb 9 年之前
父节点
当前提交
8d974b6cc4
共有 1 个文件被更改,包括 149 次插入38 次删除
  1. 149 38
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterDatasetService.java

+ 149 - 38
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterDatasetService.java

@ -15,6 +15,7 @@ import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.BeanTransformer;
import com.yihu.ehr.framework.util.sql.BeanTransformer;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.adapter.AdapterDatasetModel;
import com.yihu.ehr.standard.model.adapter.AdapterDatasetModel;
import com.yihu.ehr.standard.model.adapter.AdapterDictModel;
import com.yihu.ehr.standard.model.adapter.AdapterMetadataModel;
import com.yihu.ehr.standard.model.adapter.AdapterMetadataModel;
import com.yihu.ehr.standard.model.standard.StdDataSetModel;
import com.yihu.ehr.standard.model.standard.StdDataSetModel;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
@ -26,6 +27,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.*;
@Transactional
@Transactional
@Service("AdapterDatasetService")
@Service("AdapterDatasetService")
public class AdapterDatasetService extends SQLGeneralDAO {
public class AdapterDatasetService extends SQLGeneralDAO {
@ -78,7 +80,7 @@ public class AdapterDatasetService extends SQLGeneralDAO {
    public Result modify(String adapterVersion, String dataset) {
    public Result modify(String adapterVersion, String dataset) {
        try {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper =  new ObjectMapper();
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterDatasetModel adapterDatasetModel = objectMapper.readValue(dataset, AdapterDatasetModel.class);
            AdapterDatasetModel adapterDatasetModel = objectMapper.readValue(dataset, AdapterDatasetModel.class);
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDatasetModel));
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDatasetModel));
            SqlCreator sqlCreator = new SqlCreator(AdapterDatasetModel.class);
            SqlCreator sqlCreator = new SqlCreator(AdapterDatasetModel.class);
@ -123,7 +125,7 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        AdapterVersion adapterVersion = new AdapterVersion(version);
        AdapterVersion adapterVersion = new AdapterVersion(version);
        String tableName = adapterVersion.getDataSetTableName();
        String tableName = adapterVersion.getDataSetTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper =  new ObjectMapper();
        ObjectMapper objectMapper = new ObjectMapper();
        if (!StringUtil.isEmpty(condition)) {
        if (!StringUtil.isEmpty(condition)) {
            JsonNode jsonNode = objectMapper.readTree(condition);
            JsonNode jsonNode = objectMapper.readTree(condition);
            String name = jsonNode.get("name").asText();
            String name = jsonNode.get("name").asText();
@ -149,11 +151,11 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        return query.list();
        return query.list();
    }
    }
    public Integer getDatasetInt(Class tClass,  AdapterVersion adapterVersion, String condition) {
    public Integer getDatasetInt(Class tClass, AdapterVersion adapterVersion, String condition) {
        try {
        try {
            String tableName = adapterVersion.getDataSetTableName();
            String tableName = adapterVersion.getDataSetTableName();
            SqlCreator sqlCreator = new SqlCreator(tClass);
            SqlCreator sqlCreator = new SqlCreator(tClass);
            ObjectMapper objectMapper =  new ObjectMapper();
            ObjectMapper objectMapper = new ObjectMapper();
            if (!StringUtil.isEmpty(condition)) {
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                String name = jsonNode.get("name").asText();
@ -218,11 +220,11 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        boolean check;     //是否勾选
        boolean check;     //是否勾选
        boolean std = false;      //标准是否添加根节点
        boolean std = false;      //标准是否添加根节点
        long childCheckCount;
        long childCheckCount;
        long datasetCount=0;
        long datasetCount = 0;
        //获取所有标准数据集
        //获取所有标准数据集
        StandardVersion sVersion = new StandardVersion(stdVersion);
        StandardVersion sVersion = new StandardVersion(stdVersion);
        List<StdDataSetModel> dataSetList = getList(StdDataSetModel.class, sVersion.getDataSetTableName(),  "", "", null, null);
        List<StdDataSetModel> dataSetList = getList(StdDataSetModel.class, sVersion.getDataSetTableName(), "", "", null, null);
        String idListStr = Constants.EMPTY;
        String idListStr = Constants.EMPTY;
        for (StdDataSetModel dataSet : dataSetList) {
        for (StdDataSetModel dataSet : dataSetList) {
            idListStr += dataSet.getId() + Constants.COMMA;
            idListStr += dataSet.getId() + Constants.COMMA;
@ -288,9 +290,9 @@ public class AdapterDatasetService extends SQLGeneralDAO {
            stdRoot.setId("S0");
            stdRoot.setId("S0");
            stdRoot.setPid("-1");
            stdRoot.setPid("-1");
            stdRoot.setText("数据集");
            stdRoot.setText("数据集");
            if(datasetCount==dataSetList.size()){
            if (datasetCount == dataSetList.size()) {
                stdRoot.setIschecked(true);
                stdRoot.setIschecked(true);
            }else {
            } else {
                stdRoot.setIschecked(false);
                stdRoot.setIschecked(false);
            }
            }
@ -315,7 +317,7 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        }
        }
    }
    }
    public Result updateCustomize(Integer schemeId, String adapterVersion, String stdVersion, String datasetIdStr,String metaDataIdStr) {
    public Result updateCustomize(Integer schemeId, String adapterVersion, String stdVersion, String datasetIdStr, String metaDataIdStr) {
        AdapterVersion aVersion = new AdapterVersion(adapterVersion);
        AdapterVersion aVersion = new AdapterVersion(adapterVersion);
        StandardVersion sVersion = new StandardVersion(stdVersion);
        StandardVersion sVersion = new StandardVersion(stdVersion);
        try {
        try {
@ -325,40 +327,39 @@ public class AdapterDatasetService extends SQLGeneralDAO {
            List<Integer> newMetadataIdList = new ArrayList<>();
            List<Integer> newMetadataIdList = new ArrayList<>();
            for (String datasetId : datasetIdList) {
            for (String datasetId : datasetIdList) {
                if(!StringUtil.isStrEmpty(datasetId)){
                if (!StringUtil.isStrEmpty(datasetId)) {
                    Integer newDatasetId = Integer.parseInt(datasetId);
                    Integer newDatasetId = Integer.parseInt(datasetId);
                    newDatasetIdList.add(newDatasetId);
                    newDatasetIdList.add(newDatasetId);
                }
                }
            }
            }
            for (String metadataId : metadataIdList) {
            for (String metadataId : metadataIdList) {
                if(!StringUtil.isStrEmpty(metadataId)){
                if (!StringUtil.isStrEmpty(metadataId)) {
                    Integer newMetadataId = Integer.parseInt(metadataId);
                    Integer newMetadataId = Integer.parseInt(metadataId);
                    newMetadataIdList.add(newMetadataId);
                    newMetadataIdList.add(newMetadataId);
                }
                }
            }
            }
            if (newDatasetIdList.size() == 0) {
                return Result.error("定制内容为空");
            }
            updateDatasetCustomizeData(schemeId, aVersion, sVersion, newDatasetIdList, newMetadataIdList);
            updateDatasetCustomizeData(schemeId, aVersion, sVersion, newDatasetIdList, newMetadataIdList);
            return Result.success("定制数据集成功");
            return Result.success("定制数据集成功");
        } catch (Exception e) {
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("定制数据集失败");
            return Result.error("定制数据集失败");
        }
        }
    }
    }
    public void updateDatasetCustomizeData(Integer schemeId, AdapterVersion aVersion, StandardVersion sVersion, List<Integer> newDatasetIdList, List<Integer> newMetadataIdList) {
        List<String> insertSqlList = new ArrayList<>();
        insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDataSetTableName());
        insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getMetaDataTableName());
        insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDictTableName());
        insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDictEntryTableName());
    public void updateDatasetCustomizeData(Integer schemeId, AdapterVersion aVersion, StandardVersion sVersion, List<Integer> newDatasetIdList, List<Integer> newMetadataIdList) throws Exception {
        List<StdMetaDataModel> metadataList = new ArrayList<StdMetaDataModel>();
        List<StdMetaDataModel> metadataList = new ArrayList<StdMetaDataModel>();
        if(newMetadataIdList.size()>0){
        if (newMetadataIdList.size() > 0) {
            SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
            SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
            sqlCreator.inCondition("id", newMetadataIdList);
            sqlCreator.inCondition("id", newMetadataIdList);
            String sql = sqlCreator.selectData(sVersion.getMetaDataTableName());
            String sql = sqlCreator.selectData(sVersion.getMetaDataTableName());
            Query query = getQuery(sqlCreator, sql);
            Query query = getQuery(sqlCreator, sql);
             metadataList = query.list();
            metadataList = query.list();
        }
        }
        List<Integer> newDictdList = new ArrayList<>();
        List<Integer> newDictdList = new ArrayList<>();
@ -368,44 +369,148 @@ public class AdapterDatasetService extends SQLGeneralDAO {
            }
            }
        }
        }
        if(newDatasetIdList.size()>0){
        List<String> insertSqlList = new ArrayList<>();
        // 找出新增 删除  modify by cyj
        List<AdapterDatasetModel> datasetModels = selectData(aVersion.getDataSetTableName(), AdapterDatasetModel.class);
        List<AdapterMetadataModel> metadataModels = selectData(aVersion.getMetaDataTableName(), AdapterMetadataModel.class);
        List<AdapterDictModel> dictModels = selectData(aVersion.getDictTableName(), AdapterDictModel.class);
//        List<AdapterDictEntryModel> dictEntryModels = selectData(aVersion.getDictEntryTableName(), AdapterDictEntryModel.class);
        List<Integer> oldDatasetIdList = new ArrayList<>();
        for (AdapterDatasetModel datasetModel : datasetModels) {
            oldDatasetIdList.add(datasetModel.getId());
        }
        List<Integer> oldMetadataIdList = new ArrayList<>();
        for (AdapterMetadataModel metadataModel : metadataModels) {
            oldMetadataIdList.add(metadataModel.getId());
        }
        List<Integer> oldDictIdList = new ArrayList<>();
        for (AdapterDictModel dictModel : dictModels) {
            oldDictIdList.add(dictModel.getId());
        }
//        List<Integer> oldDictEntryIdList = new ArrayList<>();
//        for (AdapterDictEntryModel entryModel : dictEntryModels) {
//            oldDictEntryIdList.add(entryModel.getStdDictId());
//        }
        Map<String, List<Integer>> datasetMap = getDiffId(newDatasetIdList, oldDatasetIdList);
        Map<String, List<Integer>> metaMap = getDiffId(newMetadataIdList, oldMetadataIdList);
        Map<String, List<Integer>> dicMap = getDiffId(newDictdList, oldDictIdList);
//        Map<String,List<Integer>> dicEntryMap = getDiffId(newDictdList,oldDictEntryIdList);
//        add del
        List<Integer> delDatasetList = datasetMap.get("del");
        if (delDatasetList.size() > 0) {
            insertSqlList.add(delData(aVersion.getDataSetTableName(), "id", delDatasetList));
        }
        List<Integer> delMetaList = metaMap.get("del");
        if (delMetaList.size() > 0) {
            insertSqlList.add(delData(aVersion.getMetaDataTableName(), "id", delMetaList));
        }
        List<Integer> delDicList = dicMap.get("del");
        if (delDicList.size() > 0) {
            insertSqlList.add(delData(aVersion.getDictTableName(), "id", delDicList));
            insertSqlList.add(delData(aVersion.getDictEntryTableName(), "std_dict_id", delDicList));
        }
/*        insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDataSetTableName());
        insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getMetaDataTableName());
        insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDictTableName());
        insertSqlList.add(Constants.DELETE + Constants.FROM + aVersion.getDictEntryTableName());*/
        List<Integer> addDataSetList = datasetMap.get("add");
        if (addDataSetList.size() > 0) {
            insertSqlList.add(insertData(aVersion.getDataSetTableName(), sVersion.getDataSetTableName(),
            insertSqlList.add(insertData(aVersion.getDataSetTableName(), sVersion.getDataSetTableName(),
                    new String[]{"id,std_dataset_id,std_dataset_code,std_dataset_name"},
                    new String[]{"id,std_dataset_id,std_dataset_code,std_dataset_name"},
                    new String[]{"id,id,code,name"},
                    new String[]{"id,id,code,name"},
                    schemeId,
                    schemeId,
                    "id",
                    "id",
                    newDatasetIdList));
                    addDataSetList));
        }
        }
        if(newMetadataIdList.size()>0){
        List<Integer> addMetaList = metaMap.get("add");
        if (addMetaList.size() > 0) {
            insertSqlList.add(insertData(aVersion.getMetaDataTableName(), sVersion.getMetaDataTableName(),
            insertSqlList.add(insertData(aVersion.getMetaDataTableName(), sVersion.getMetaDataTableName(),
                    new String[]{"id,std_metadata_id,std_metadata_code,std_metadata_name,std_dataset_id,std_dict_id"},
                    new String[]{"id,std_metadata_id,std_metadata_code,std_metadata_name,std_dataset_id,std_dict_id"},
                    new String[]{"id,id,code,name,dataset_id,dict_id"},
                    new String[]{"id,id,code,name,dataset_id,dict_id"},
                    schemeId,
                    schemeId,
                    "id",
                    "id",
                    newMetadataIdList));
                    addMetaList));
        }
        }
        if(newDictdList.size()>0){
        List<Integer> addDicList = metaMap.get("add");
        if (addDicList.size() > 0) {
            insertSqlList.add(insertData(aVersion.getDictTableName(), sVersion.getDictTableName(),
            insertSqlList.add(insertData(aVersion.getDictTableName(), sVersion.getDictTableName(),
                    new String[] {"id,std_dict_id,std_dict_code,std_dict_name"},
                    new String[] {"id,id,code,name"},
                    new String[]{"id,std_dict_id,std_dict_code,std_dict_name"},
                    new String[]{"id,id,code,name"},
                    schemeId,
                    schemeId,
                    "id",
                    "id",
                    newDictdList));
                    addDicList));
            insertSqlList.add(insertData(aVersion.getDictEntryTableName(), sVersion.getDictEntryTableName(),
            insertSqlList.add(insertData(aVersion.getDictEntryTableName(), sVersion.getDictEntryTableName(),
                    new String[] {"id,std_entry_id,std_entry_code,std_entry_value,std_dict_id"},
                    new String[] {"id,id,code,value,dict_id"},
                    new String[]{"id,std_entry_id,std_entry_code,std_entry_value,std_dict_id"},
                    new String[]{"id,id,code,value,dict_id"},
                    schemeId,
                    schemeId,
                    "dict_id",
                    "dict_id",
                    newDictdList));
                    addDicList));
        }
        }
        if(insertSqlList.size()>0){
        if (insertSqlList.size() > 0) {
            insertBatch(insertSqlList);
            insertBatch(insertSqlList);
        }
        }
    }
    }
    private String delData(String adapterTableName, String item, List<Integer> idList) {
        StringBuffer sql = new StringBuffer();
        String idStr = Constants.EMPTY;
        for (Integer id : idList) {
            idStr += id + Constants.COMMA;
        }
        if (!StringUtil.isEmpty(idStr)) {
            idStr = Constants.LEFT_BRACKET + idStr.substring(0, idStr.length() - 1) + Constants.RIGHT_BRACKET;
        }
        sql.append(Constants.DELETE + Constants.FROM).append(adapterTableName).append(Constants.WHERE).append(item).append(Constants.IN).append(idStr);
        return sql.toString();
    }
    /**
     * 将第一个数组放入map(id,1) 然后循环第二个数组,如果map中找到对应键值就+1  不存在设置 1
     *
     * @param firtList   new
     * @param secondList old
     */
    private Map<String, List<Integer>> getDiffId(List<Integer> firtList, List<Integer> secondList) {
        Map<Integer, Integer> map = new HashMap<>();
        for (Integer id : firtList) {
            map.put(id, 1);
        }
        for (Integer id1 : secondList) {
            Integer flag = map.get(id1);
            if (flag != null) {
                map.put(id1, ++flag);
            } else {
                map.put(id1, 1);
            }
        }
        List<Integer> diffLs = new ArrayList<>();
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if (entry.getValue() == 1) {
                diffLs.add(entry.getKey());
            }
        }
        List<Integer> delIDLs = new ArrayList<>();
        List<Integer> addIDLs = new ArrayList<>();
        for (Integer diffL : diffLs) {
            if (firtList.contains(diffL)) {
                addIDLs.add(diffL);
            } else if (secondList.contains(diffL)) {
                delIDLs.add(diffL);
            }
        }
        Map<String, List<Integer>> listMap = new HashMap<>();
        listMap.put("del", delIDLs);
        listMap.put("add", addIDLs);
        return listMap;
    }
    private String insertData(String adapterTableName, String stdTableName, String[] item1, String[] item2, Integer schemeId, String item, List<Integer> idList) {
    private String insertData(String adapterTableName, String stdTableName, String[] item1, String[] item2, Integer schemeId, String item, List<Integer> idList) {
        StringBuffer sql = new StringBuffer();
        StringBuffer sql = new StringBuffer();
        String idStr = Constants.EMPTY;
        String idStr = Constants.EMPTY;
@ -413,14 +518,14 @@ public class AdapterDatasetService extends SQLGeneralDAO {
            idStr += id + Constants.COMMA;
            idStr += id + Constants.COMMA;
        }
        }
        if (!StringUtil.isEmpty(idStr)) {
        if (!StringUtil.isEmpty(idStr)) {
            idStr = Constants.LEFT_BRACKET + idStr.substring(0, idStr.length() - 1) +  Constants.RIGHT_BRACKET;
            idStr = Constants.LEFT_BRACKET + idStr.substring(0, idStr.length() - 1) + Constants.RIGHT_BRACKET;
        }
        }
        sql.append(Constants.INSERT_INTO + adapterTableName + Constants.LEFT_BRACKET);
        sql.append(Constants.INSERT_INTO + adapterTableName + Constants.LEFT_BRACKET);
        for (String it : item1) {
        for (String it : item1) {
            sql.append(it + Constants.COMMA);
            sql.append(it + Constants.COMMA);
        }
        }
        sql.append("scheme_id" + Constants.RIGHT_BRACKET + Constants.LEFT_BRACKET + Constants.SELECT );
        sql.append("scheme_id" + Constants.RIGHT_BRACKET + Constants.LEFT_BRACKET + Constants.SELECT);
        for (String it : item2) {
        for (String it : item2) {
            sql.append(it + Constants.COMMA);
            sql.append(it + Constants.COMMA);
        }
        }
@ -428,6 +533,12 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        return sql.toString();
        return sql.toString();
    }
    }
    public List selectData(String adapterTableName, Class clazz) throws Exception {
        StringBuffer sql = new StringBuffer();
        sql.append("SELECT * FROM ").append(adapterTableName);
        return queryListBySql(sql.toString(), clazz);
    }
    public List getAdapterDatasetNotNullList(AdapterVersion adapterVersion, String condition) {
    public List getAdapterDatasetNotNullList(AdapterVersion adapterVersion, String condition) {
        try {
        try {
            StringBuffer sql = new StringBuffer();
            StringBuffer sql = new StringBuffer();
@ -463,16 +574,16 @@ public class AdapterDatasetService extends SQLGeneralDAO {
        }
        }
    }
    }
    public AdapterDatasetModel getAdapterDatasetByCode(String version,String datasetCode) {
    public AdapterDatasetModel getAdapterDatasetByCode(String version, String datasetCode) {
        try {
        try {
            if (StringUtil.isEmpty(datasetCode)) {
            if (StringUtil.isEmpty(datasetCode)) {
                return null;
                return null;
            }
            }
            SqlCreator sqlCreator = new SqlCreator(AdapterDatasetModel.class);
            SqlCreator sqlCreator = new SqlCreator(AdapterDatasetModel.class);
            sqlCreator.equalCondition("stdDatasetCode", datasetCode);
            sqlCreator.equalCondition("stdDatasetCode", datasetCode);
            String sql = sqlCreator.selectData("adapter_dataset_"+version);
            String sql = sqlCreator.selectData("adapter_dataset_" + version);
            Query query = getQuery(sqlCreator, sql);
            Query query = getQuery(sqlCreator, sql);
            return (AdapterDatasetModel)query.uniqueResult();
            return (AdapterDatasetModel) query.uniqueResult();
        } catch (Exception e) {
        } catch (Exception e) {
            e.printStackTrace();
            e.printStackTrace();
            return null;
            return null;