Browse Source

Merge branch 'master' of zlf/esb into master

esb 9 years ago
parent
commit
2d9348b683
91 changed files with 9034 additions and 1258 deletions
  1. 309 35
      Hos-Framework/src/main/java/com/yihu/ehr/framework/common/dao/SQLGeneralDAO.java
  2. 28 0
      Hos-Framework/src/main/java/com/yihu/ehr/framework/common/dao/XSQLGeneralDAO.java
  3. 81 0
      Hos-Framework/src/main/java/com/yihu/ehr/framework/constrant/Constants.java
  4. 128 27
      Hos-Framework/src/main/java/com/yihu/ehr/framework/constrant/ErrorCode.java
  5. 5 5
      Hos-Framework/src/main/java/com/yihu/ehr/framework/constrant/TreeView.java
  6. 41 0
      Hos-Framework/src/main/java/com/yihu/ehr/framework/exception/ApiException.java
  7. 218 0
      Hos-Framework/src/main/java/com/yihu/ehr/framework/util/sql/BeanTransformer.java
  8. 106 0
      Hos-Framework/src/main/java/com/yihu/ehr/framework/util/sql/RequestParamTransformer.java
  9. 317 0
      Hos-Framework/src/main/java/com/yihu/ehr/framework/util/sql/SqlCreator.java
  10. 6 6
      Hos-resource/src/main/java/com/yihu/ehr/datacollect/controller/DataCollectController.java
  11. 6 4
      Hos-resource/src/main/java/com/yihu/ehr/datacollect/service/DatacollectManager.java
  12. 4 4
      Hos-resource/src/main/java/com/yihu/ehr/datacollect/service/DatacollectService.java
  13. 3 6
      Hos-resource/src/main/java/com/yihu/ehr/resource/service/impl/RsResourceServiceImpl.java
  14. 110 90
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/AdapterController.java
  15. 61 65
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/AdapterVersionController.java
  16. 40 49
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/PublisherController.java
  17. 44 55
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/SchemeController.java
  18. 85 83
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/SchemeDatasetController.java
  19. 62 63
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/SchemeDictController.java
  20. 73 72
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/SchemeDictEntryController.java
  21. 69 69
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/SchemeMetadataController.java
  22. 39 51
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/SchemeVersionController.java
  23. 44 56
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StandardController.java
  24. 57 61
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StandardVersionController.java
  25. 70 70
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StdDatasetController.java
  26. 71 69
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StdDictController.java
  27. 76 74
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StdDictEntryController.java
  28. 98 88
      Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StdMetadataController.java
  29. 18 1
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/AdapterDatasetModel.java
  30. 66 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/AdapterDatasetRelationModel.java
  31. 18 1
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/AdapterDictModel.java
  32. 20 1
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/AdapterDictentryModel.java
  33. 146 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/AdapterMetadataModel.java
  34. 62 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/AdapterSchemeDispatchModel.java
  35. 139 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/AdapterSchemeModel.java
  36. 121 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/AdapterSchemeVersionModel.java
  37. 1 1
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/AdapterDictEntryResultDetailModel.java
  38. 11 2
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/AdapterMetadataModel.java
  39. 2 2
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/ApiMetadataResultDetailModel.java
  40. 132 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/resultModel/SchemeResultDetailModel.java
  41. 105 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/resultModel/SchemeVersionResultDetailModel.java
  42. 28 3
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/StandardModel.java
  43. 153 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/standard/StandardVersionModel.java
  44. 83 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/standard/StdCDACatalogModel.java
  45. 48 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/standard/StdCDADatasetModel.java
  46. 92 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/standard/StdCDAModel.java
  47. 23 1
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/StdDataSetModel.java
  48. 87 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/standard/StdDatasetCatalogModel.java
  49. 21 3
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/StdDictionaryEntryModel.java
  50. 21 1
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/StdDictionaryModel.java
  51. 54 20
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/StdMetaDataModel.java
  52. 68 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/standard/StdPublisherModel.java
  53. 1 1
      Hos-resource/src/main/java/com/yihu/ehr/standard/model/StandardResultDetailModel.java
  54. 83 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterDatasetRelationService.java
  55. 400 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterDatasetService.java
  56. 147 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterDictService.java
  57. 296 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterDictentryService.java
  58. 351 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterMetadataService.java
  59. 59 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterSchemeDispatchService.java
  60. 256 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterSchemeService.java
  61. 356 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterSchemeVersionService.java
  62. 52 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/bo/AdapterVersion.java
  63. 60 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/bo/StandardVersion.java
  64. 429 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StandardService.java
  65. 334 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StandardVersionService.java
  66. 155 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdCDACatalogService.java
  67. 203 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdCDADatasetService.java
  68. 178 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdCDAService.java
  69. 148 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDatasetCatalogService.java
  70. 510 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDatasetService.java
  71. 293 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDictEntryService.java
  72. 299 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDictService.java
  73. 358 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdMetadataService.java
  74. 203 0
      Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdPublisherService.java
  75. 59 46
      Hos-resource/src/main/java/com/yihu/ehr/std/service/StdService.java
  76. 16 9
      Hos-resource/src/main/java/com/yihu/ehr/std/service/intf/IStdService.java
  77. 8 3
      Hos-resource/src/main/resources/spring/applicationContext.xml
  78. 1 1
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/adapterplan/adapterCustomizeJs.jsp
  79. 1 2
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/adapterplan/adapterDetailJs.jsp
  80. 3 11
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/adapterplan/configurationJs.jsp
  81. 1 9
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/adapterplan/indexJs.jsp
  82. 1 4
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/adapterplan/versionDetailJs.jsp
  83. 1 11
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/appIndexJs.jsp
  84. 0 2
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/dataset/updateDatasetJs.jsp
  85. 0 3
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/dataset/updateMetadataJs.jsp
  86. 0 2
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/dict/updateDictEntryJs.jsp
  87. 0 2
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/dict/updateDictJs.jsp
  88. 1 6
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/indexJs.jsp
  89. 0 3
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/publisherJs.jsp
  90. 0 3
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/standardDetailJs.jsp
  91. 1 2
      Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/versionDetailJs.jsp

+ 309 - 35
Hos-Framework/src/main/java/com/yihu/ehr/framework/common/dao/SQLGeneralDAO.java

@ -1,7 +1,22 @@
package com.yihu.ehr.framework.common.dao;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.model.DataGridResult;
import com.yihu.ehr.framework.util.log.LogService;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.NumberUtil;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.framework.util.operator.StringUtil;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.hibernate.jdbc.Work;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.simple.ParameterizedBeanPropertyRowMapper;
@ -10,6 +25,12 @@ import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@ -38,8 +59,7 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
        return hibernateTemplate;
    }
    @Override
    public DataGridResult getDataGridResult(String hql, Integer page, Integer rows) throws Exception {
    public DataGridResult getDataGridResult(String hql, Integer page, Integer rows) {
        DataGridResult dataGridResult = new DataGridResult();
@ -65,54 +85,45 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
        return dataGridResult;
    }
    //=========================hibernate start==============================
    @Override
    public void beginTransaction() throws Exception {
    public void beginTransaction() {
        hibernateTemplate.getSessionFactory().getCurrentSession().getTransaction().begin();
    }
    @Override
    public void commitTransaction() throws Exception {
    public void commitTransaction() {
        hibernateTemplate.getSessionFactory().getCurrentSession().getTransaction().commit();
    }
    @Override
    public void saveEntity(Object entity) throws Exception {
    public void saveEntity(Object entity) {
        if (entity == null) return;
        hibernateTemplate.save(entity);
    }
    @Override
    public void updateEntity(Object entity) throws Exception {
    public void updateEntity(Object entity) {
        if (entity == null) return;
        hibernateTemplate.update(entity);
    }
    @Override
    public void saveOrUpdateEntity(Object entity) throws Exception {
    public void saveOrUpdateEntity(Object entity) {
        if (entity == null) return;
        hibernateTemplate.saveOrUpdate(entity);
    }
    @Override
    public void mergeEntity(Object entity) throws Exception {
    public void mergeEntity(Object entity) {
        if (entity == null) return;
        hibernateTemplate.merge(entity);
    }
    @Override
    public void deleteEntity(Object entity) throws Exception {
    public void deleteEntity(Object entity) {
        if (entity == null) return;
        hibernateTemplate.delete(entity);
    }
    @Override
    public <T> void deleteEntity(Class<T> cls, Serializable id) throws Exception {
    public <T> void deleteEntity(Class<T> cls, Serializable id) {
        T obj = (T) hibernateTemplate.load(cls, id);
        hibernateTemplate.delete(obj);
    }
    @Override
    public <T> T getEntity(Class<T> cls, Serializable id) throws Exception {
    public <T> T getEntity(Class<T> cls, Serializable id) {
        return (T) hibernateTemplate.get(cls, id);
    }
    //=========================hibernate end==============================
@ -126,8 +137,7 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
     * 例如: queryListBySql("select * from person")
     * @author ding
     */
    @Override
    public List<Map<String, Object>> queryListBySql(String sql) throws Exception {
    public List<Map<String, Object>> queryListBySql(String sql) {
        List<Map<String, Object>> result = this.jdbcTemplate.queryForList(sql);
        return result;
    }
@ -141,8 +151,7 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
     * 例如: queryListBySql("select * from person where username=?",new Object[]{"admin"})
     * @author ding
     */
    @Override
    public List<Map<String, Object>> queryListBySql(String sql, List params) throws Exception {
    public List<Map<String, Object>> queryListBySql(String sql, List params) {
        List<Map<String, Object>> result = this.jdbcTemplate.queryForList(sql, params.toArray());
        return result;
    }
@ -156,9 +165,8 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
     * 例如: queryListBySql("select * from person", Person.class)
     * @author ding
     */
    @Override
    @SuppressWarnings({"rawtypes", "unchecked"})
    public <T> List<T> queryListBySql(String sql, Class obj) throws Exception {
    public <T> List<T> queryListBySql(String sql, Class obj) {
        RowMapper rowMapper = (RowMapper) ParameterizedBeanPropertyRowMapper.newInstance(obj);
        List<T> result = this.jdbcTemplate.query(sql, rowMapper);
        return result;
@ -174,9 +182,8 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
     * 例如: queryListBySql("select * from person where username=?",new Object[]{"admin"},Person.class)
     * @author ding
     */
    @Override
    @SuppressWarnings({"rawtypes", "unchecked"})
    public <T> List<T> queryListBySql(String sql, List params, Class obj) throws Exception {
    public <T> List<T> queryListBySql(String sql, List params, Class obj) {
        RowMapper rowMapper = (RowMapper) ParameterizedBeanPropertyRowMapper.newInstance(obj);
        List<T> result = this.jdbcTemplate.query(sql, params.toArray(), rowMapper);
        return result;
@ -192,9 +199,8 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
     * 例如: queryObjBySql("select * from person where username=?",new Object[]{"admin"},Person.class)
     * @author ding
     */
    @Override
    @SuppressWarnings({"rawtypes", "unchecked"})
    public <T> T queryObjBySql(String sql, List params, Class obj) throws Exception {
    public <T> T queryObjBySql(String sql, List params, Class obj) {
        RowMapper rowMapper = (RowMapper) ParameterizedBeanPropertyRowMapper.newInstance(obj);
        Object result = this.jdbcTemplate.queryForObject(sql, params.toArray(), rowMapper);
        return (T) result;
@ -209,9 +215,8 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
     * 例如: queryObjBySql("select * from person where username='admin'",Person.class)
     * @author ding
     */
    @Override
    @SuppressWarnings({"rawtypes", "unchecked"})
    public <T> T queryObjBySql(String sql, Class obj) throws Exception {
    public <T> T queryObjBySql(String sql, Class obj) {
        RowMapper rowMapper = (RowMapper) ParameterizedBeanPropertyRowMapper.newInstance(obj);
        Object result = this.jdbcTemplate.queryForObject(sql, rowMapper);
        return (T) result;
@ -220,8 +225,7 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
    /**
     * 获取单列值
     */
    @Override
    public <T> T scalarBySql(String sql,Class cls) throws Exception {
    public <T> T scalarBySql(String sql,Class cls) {
        Object result = this.jdbcTemplate.queryForObject(sql, cls);
        return (T) result;
    }
@ -231,10 +235,280 @@ public class SQLGeneralDAO implements XSQLGeneralDAO {
     * 执行SQL语句
     * @return
     */
    @Override
    public void execute(String sql) throws Exception
    {
        this.jdbcTemplate.execute(sql);
    }
    public <T> List getEntityList(Class<T> cls, String hql) {
        Query query = getCurrentSession().createQuery(hql);
        return query.list();
    }
    @Override
    public <T> List getEntityList(Class<T> cls, String condition, String order, Integer limit, Integer offset, ErrorCode errorCode) {
        try {
            Session session = getCurrentSession();
            Criteria criteria = session.createCriteria(cls);
            ObjectMapper objectMapper = new ObjectMapper();
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    if (jsonNode.get(fieldName).isInt()) {
                        criteria.add(Restrictions.eq(fieldName, jsonNode.get(fieldName).asInt()));
                    } else {
                        criteria.add(Restrictions.eq(fieldName, jsonNode.get(fieldName).asText()));
                    }
                }
            }
            if (!StringUtil.isEmpty(order)) {
                JsonNode jsonNode = objectMapper.readTree(order);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText().toUpperCase();
                    if (value.equals(Constants.ASC)) {
                        criteria.addOrder(Order.asc(fieldName));
                    } else if (value.equals(Constants.DESC)) {
                        criteria.addOrder(Order.desc(fieldName));
                    }
                }
            }
            if (limit != null) {
                criteria.setMaxResults(limit);
                if (offset != null) {
                    criteria.setFirstResult(offset);
                }
            }
            return criteria.list();
        } catch (Exception e) {
            throw new ApiException(errorCode);
        }
    }
    public <T> List getEntityListByParentId(Class<T> cls, String parentFiledName, Integer patentId, String condition, String order, Integer limit, Integer offset, ErrorCode errorCode) {
        try {
            Session session = getCurrentSession();
            Criteria criteria = session.createCriteria(cls);
            criteria.add(Restrictions.eq(parentFiledName, patentId));
            ObjectMapper objectMapper = new ObjectMapper();
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    if (jsonNode.get(fieldName).isInt()) {
                        criteria.add(Restrictions.eq(fieldName, jsonNode.get(fieldName).asInt()));
                    } else {
                        criteria.add(Restrictions.eq(fieldName, jsonNode.get(fieldName).asText()));
                    }
                }
            }
            if (!StringUtil.isEmpty(order)) {
                JsonNode jsonNode = objectMapper.readTree(order);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText().toUpperCase();
                    if (value.equals(Constants.ASC)) {
                        criteria.addOrder(Order.asc(fieldName));
                    } else if (value.equals(Constants.DESC)) {
                        criteria.addOrder(Order.desc(fieldName));
                    }
                }
            }
            if (limit != null) {
                criteria.setMaxResults(limit);
                if (offset != null) {
                    criteria.setFirstResult(offset);
                }
            }
            return criteria.list();
        } catch (Exception e) {
            throw new ApiException(errorCode);
        }
    }
    public List getList(Class tClass, String tableName, String condition, String order, Integer limit, Integer offset, ErrorCode errorCode) {
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText();
                    if (NumberUtil.isInteger(value)) {
                        sqlCreator.equalCondition(fieldName, Integer.parseInt(value));
                    } else {
                        sqlCreator.equalCondition(fieldName, value);
                    }
                }
            }
            if (!StringUtil.isEmpty(order)) {
                JsonNode jsonNode = objectMapper.readTree(order);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText().toUpperCase();
                    sqlCreator.order(fieldName, value);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        String sql = sqlCreator.selectData(tableName);
        Query query = getQuery(sqlCreator, sql);
        if (limit != null) {
            query.setMaxResults(limit);
            if (offset != null) {
                query.setFirstResult(offset * limit);
            }
        }
        return query.list();
    }
    public Integer getDataSetInt(Class tClass, String tableName, String condition) {
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText();
                    if (NumberUtil.isInteger(value)) {
                        sqlCreator.equalCondition(fieldName, Integer.parseInt(value));
                    } else {
                        sqlCreator.equalCondition(fieldName, value);
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        String sql = sqlCreator.countData(tableName);
        Query query = getQuery(sqlCreator, sql);
        Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
        return count;
    }
    @Override
    public Object get(Class tClass, String tableName, Integer id, ErrorCode errorCode) {
        try {
            SqlCreator sqlCreator = new SqlCreator(tClass);
            sqlCreator.equalCondition("id", id);
            String sql = sqlCreator.selectData(tableName);
            Query query = getQuery(sqlCreator, sql);
            return query.uniqueResult();
        } catch (Exception e) {
            throw new ApiException(errorCode);
        }
    }
    @Override
    public Query getQuery(SqlCreator sqlCreator, String sql) {
        Query query = getCurrentSession().createSQLQuery(sql);
        for (String key : sqlCreator.getKeyValueMap().keySet()) {
            Object value = sqlCreator.getKeyValueMap().get(key);
            if (value instanceof Collection) {
                query.setParameterList(key, (Collection) value);
            } else {
                query.setParameter(key, value);
            }
        }
        query.setResultTransformer(sqlCreator.getTransformer());
        return query;
    }
    @Override
    public void insertBatch(final List<String> insertSqlList) {
        Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        session.doWork(
                new Work() {
                    public void execute(Connection connection) throws SQLException {
                        if (!CollectionUtil.isEmpty(insertSqlList)) {
                            Statement stmt = connection.createStatement();
                            connection.setAutoCommit(false);
                            for (String sql : insertSqlList) {
                                stmt.addBatch(sql);
                            }
                            try {
                                stmt.executeBatch();
                            }  catch (Exception ex) {
                                LogService.getLogger().error("insertBatch-ERROR: ", ex);
                            }
                            stmt.close();
                        }
                    }
                }
        );
    }
    public Session openSession() {
        return getHibernateTemplate().getSessionFactory().openSession();
    }
    @Override
    public Session getCurrentSession() {
        return getHibernateTemplate().getSessionFactory().getCurrentSession();
    }
    @Override
    public Integer getMaxId(String tableName) {
        String sql = "select max(id) from " + tableName;
        Query query = getCurrentSession().createSQLQuery(sql);
        Object object = query.uniqueResult();
        Integer maxId = object == null ? 1 : Integer.parseInt(object.toString()) + 1;
        return maxId;
    }
    @Override
    public Query getExeuteQuery(SqlCreator sqlCreator, String sql) {
        Query query = getCurrentSession().createSQLQuery(sql);
        for (String key : sqlCreator.getKeyValueMap().keySet()) {
            Object value = sqlCreator.getKeyValueMap().get(key);
            if (value instanceof Collection) {
                query.setParameterList(key, (Collection) value);
            } else {
                query.setParameter(key, value);
            }
        }
        return query;
    }
    protected void doClose(Session session, Statement stmt, ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
                rs = null;
            } catch (Exception ex) {
                rs = null;
                LogService.getLogger().error("close-ResultSet ", ex);
                ex.printStackTrace();
            }
        }
        if (stmt != null) {
            try {
                stmt.close();
                stmt = null;
            } catch (Exception ex) {
                stmt = null;
                LogService.getLogger().error("close-ResultSet ", ex);
                ex.printStackTrace();
            }
        }
    }
}

+ 28 - 0
Hos-Framework/src/main/java/com/yihu/ehr/framework/common/dao/XSQLGeneralDAO.java

@ -1,6 +1,10 @@
package com.yihu.ehr.framework.common.dao;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.model.DataGridResult;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import org.hibernate.Query;
import org.hibernate.Session;
import java.io.Serializable;
import java.util.List;
@ -112,4 +116,28 @@ public interface XSQLGeneralDAO {
     * @return
     */
    void execute(String sql) throws Exception;
    public <T> List getEntityList(Class<T> cls, String hql);
    public <T> List getEntityList(Class<T> cls, String query, String order, Integer limit, Integer offset, ErrorCode errorCode);
    public <T> List getEntityListByParentId(Class<T> cls, String patentFiledName, Integer parentId, String query, String order, Integer limit, Integer offset, ErrorCode errorCode);
    public <T> List getList(Class<T> cls, String tableName, String condition, String order, Integer limit, Integer offset, ErrorCode errorCode);
    public <T> Integer getDataSetInt(Class<T> cls, String tableName, String condition);
    public <T> Object get(Class<T> cls, String tableName, Integer id, ErrorCode errorCode);
    public Session getCurrentSession();
    public Session openSession();
    public Query getQuery(SqlCreator sqlCreator, String sql);
    public Query getExeuteQuery(SqlCreator sqlCreator, String sql);
    public Integer getMaxId(String tableName);
    public void insertBatch(final List<String> insertSqlList);
}

+ 81 - 0
Hos-Framework/src/main/java/com/yihu/ehr/framework/constrant/Constants.java

@ -0,0 +1,81 @@
package com.yihu.ehr.framework.constrant;
/**
 * Created by lingfeng on 2015/6/23.
 */
public class Constants {
    public static final String CREATE_TABLE = " CREATE TABLE ";
    public static final String INSERT_INTO = " INSERT INTO ";
    public static final String ALTER_TABLE = " ALTER TABLE ";
    public static final String DROP_TABLE = " DROP TABLE ";
    public static final String SELECT = " SELECT ";
    public static final String UPDATE = "UPDATE ";
    public static final String DELETE = "DELETE ";
    public static final String FROM = " FROM ";
    public static final String WHERE = " WHERE ";
    public static final String COUNT = " COUNT(*) ";
    public static final String ASTERISK = "*";
    public static final String IN = " IN ";
    public static final String BETWEEN = " BETWEEN ";
    public static final String BEGIN = "begin";
    public static final String END = "end";
    public static final String LIKE = " LIKE ";
    public static final String OR = " OR ";
    public static final String EQUAL_MARK = " = ";
    public static final String NE_MARK = " != ";
    public static final String GREATER_EQUAL_MARK = " >= ";
    public static final String LESS_EQUAL_MARK = " <= ";
    public static final String GREATER_MARK = " > ";
    public static final String LESS_MARK = " < ";
    public static final String SET = " SET ";
    public static final String AND = " AND ";
    public static final String QUESTION_MARK = " ? ";
    public static final String ADD = " ADD ";
    public static final String NOT_NULL = " NOT NULL ";
    public static final String BLANK = " ";
    public static final String PRIMARY_KEY = "PRIMARY_KEY ";
    public static final String PERCENT = "%";
    public static final String LEFT_BRACKET = "(";
    public static final String RIGHT_BRACKET = ")";
    public static final String COMMA = ",";
    public static final String SEMICOLON = ";";
    public static final String COLON = ":";
    public static final String UNION = " UNION ";
    public static final String VALUES = " VALUES ";
    public static final String ORDER_BY = " ORDER BY ";
    public static final String ASC = "ASC";
    public static final String DESC = "DESC";
    public static final String ROW_FORMAT_DYNAMIC = "row_format=dynamic";
    public static final String USERNAME_KEY = "u2akgXkkRRkiiCVR";
    public static final String ACCESS_TOKEN = "accessToken";
    public static final String REFRESH_TOKEN = "refreshToken";
    public static final String TOKEN_FAILD = "tokenFaild";
    public static final String TOKEN_EXPIRED = "tokenExpired";
    public static final String EMPTY = "";
    public static final String CDA_FILE = "CDA_File";
    public static final String STANDARD_ZIP = "standard.zip";
    public static final String DOT = ".";
    public static final String UPDATE_TYPE = "update";
    public static final String DELETE_TYPE = "delete";
    public static final String ADD_TYPE = "add";
    public static final String TABLE_KEY = "id";
    public static final String FAILURE_FLG = "valid";
    public static final String UNDERLINE = "_";
    public static final String STD_PREFIX = "std_";
    public static final String ADAPTER_PREFIX = "adapter_";
    public static final String ORIGIN_PREFIX = "origin_";
    public static final String CODE_STR = "code";
    public static final String VALUE_STR = "value";
    public static final String STANDARD = "standard";
    public static final String OK = "ok";
    public static final String NO = "no";
    public static final Integer NUMBER_ZREO = 0;
    public static final Integer NUMBER_ONE = 1;
    public static final String MYSQL_DRIVER = "com.mysql.jdbc.Driver";
    public static final String ORACLE_DRIVER = "oracle.jdbc.driver.OracleDriver";
    public static final String SQLSERVER_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    public static final String MYSQL = "mysql";
    public static final String ORACLE = "oracle";
    public static final String SQLSERVER = "sqlserver";
}

+ 128 - 27
Hos-Framework/src/main/java/com/yihu/ehr/framework/constrant/ErrorCode.java

@ -1,14 +1,12 @@
package com.yihu.ehr.framework.constrant;
/**
 *
 * @author Sand
 * @version 1.0
 * @created 2015.08.10 17:49
 */
public enum ErrorCode {
    // 通用错误 -- 接口调用错误列表
    MissMethod("ehr.common.miss.method"),
    MissTimestamp("ehr.common.miss.timestamp"),
    MissAppKey("ehr.common.miss.appid"),
@ -22,33 +20,27 @@ public enum ErrorCode {
    InvalidApiVersion("ehr.common.invalid.version"),
    InvalidSign("ehr.common.invalid.sign"),
    InvalidSignMethod("ehr.common.invalid.signMethod"),
    InvalidParameterFormat("ehr.common.invalid.parameterFormat"),
    MissRequiredArgument("ehr.common.miss.required.argument"),
    MissParameter("ehr.common.miss.parameter"),
    InvalidParameter("ehr.common.invalid.parameter"),
    AppTokenExpired("ehr.common.appToken.expired"),
    // 通用错误 -- 查询错误列表
    QueryNoData("ehr.common.query.null"),
    QueryTotalCount("ehr.common.query.count"),
    // 通用错误 -- 更新错误列表
    SuccessSave("ehr.common.success.update"),
    InvalidUpdate("ehr.common.invalid.update"),
    // 通用错误 -- 新增错误列表
    SuccessAdd("ehr.common.success.create"),
    // 通用错误 -- 删除错误列表
    SuccessDelete("ehr.common.success.delete"),
    InvalidDelete("ehr.common.invalid.delete"),
    // 通用错误 -- 提示信息列表
    InputRequestSingle("ehr.common.input.request.single"),
    InputRequestMultiple("ehr.common.input.request.multiple"),
    // 功能错误信息列表
    // 功能错误信息列表 - 登录
    InvalidUser("ehr.invalid.user"),
    GetUserSecurityFailed("ehr.get.user.security.failed"),
    InvalidUserNameOrPwd("ehr.invalid.username.or.pwd"),
@ -57,32 +49,24 @@ public enum ErrorCode {
    MailHasValidate("ehr.login.mail.hasinvaild"),
    InvalidMail("ehr.login.mail.invaild"),
    //功能错误信息列表 - 用户管理
    ExistUserForCreate("ehr.user.exist.create"),
    SuccessPublicKeyCreate("ehr.publicKey.success.create"),
    // 功能错误信息列表 - 机构管理
    ExistOrgForCreate("ehr.org.exist.create"),
    // 功能错误信息列表 - 应用管理
    ExistOrgForStandard("ehr.org.exist.standard"),
    InvalidAppRegister("ehr.app.register.invalid"),
    // 功能错误信息列表 - 病人管理
    MissIdentityNo("ehr.patient.miss.identity.no"),
    InvalidIdentityNo("ehr.patient.invalid.identity.no"),
    PatientRegisterFailed("ehr.patient.register.failed"),
    InvalidFormatPatientRegister("ehr.patient.invalid.register.info"),
    PatientRegisterFailedForExist("ehr.patient.exist.create"),
    // 功能错误信息列表 - 病人管理 - 档案
    MissArchiveFile("ehr.archive.miss.file"),
    MissArchiveCrypto("ehr.archive.miss.cryptograph"),
    ParseArchiveCryptoFailed("ehr.archive.parse.cryptograph.failed"),
    SaveArchiveFailed("ehr.archive.save.failed"),
    // 功能错误信息列表 - 病人管理 - 卡
    // 功能错误信息列表 - 字典
    RepeatSysDictName("ehr.sysDict.name.repeat"),
    RepeatOrgDict("ehr.orgDict.repeat"),
    RepeatOrgDictItem("ehr.orgDictItem.repeat"),
@ -98,7 +82,6 @@ public enum ErrorCode {
    InvalidDelSysDictEntry("ehr.sysDictEntry.del.invalid"),
    InvalidUpdateSysDictEntry("ehr.sysDictEntry.update.invalid"),
    // 功能错误信息列表 - 标准化
    ParamError("ehr.std.param.error"),
    InvalidStdVersion("ehr.std.invalid.version"),
    GenerateArchiveFailed("ehr.std.generate.schema.file.failed"),
@ -109,37 +92,158 @@ public enum ErrorCode {
    GetStdVersionFailed("ehr.std.get.version.fail"),
    UnknownStdVersion("ehr.std.version.unknown"),
    // 功能错误信息列表 - CDA
    GetCDAVersionListFailed("ehr.cda.version.list.get.failed"),
    GetCDAVersionFailed("ehr.cda.version.get.failed"),
    SaveCDAVersionFailed("ehr.cda.version.save.failed"),
    GetCDAInfoFailed("ehr.std.get.CDA.list.failed"),
    StdVersionHasPublished("ehr.cda.version.published"),
    GetSchemeVersionListFailed("ehr.scheme.version.list.get.failed"),
    GetSchemeVersionFailed("ehr.scheme.version.get.failed"),
    SaveSchemeVersionFailed("ehr.scheme.version.save.failed"),
    UpdateSchemeVersionFailed("ehr.scheme.version.update.failed"),
    DeleteSchemeVersionFailed("ehr.scheme.version.delete.failed"),
    ExistSchemeVersionName("ehr.scheme.version.name.exist"),
    GetSchemeListFailed("ehr.schemeList.Get.failed"),
    GetSchemeFailed("ehr.scheme.Get.failed"),
    SaveSchemeFailed("ehr.scheme.Save.failed"),
    UpdateSchemeFailed("ehr.scheme.update.failed"),
    DeleteSchemeFailed("ehr.scheme.delete.failed"),
    ExistSchemeVersion("ehr.scheme.version.exist"),
    ExistSchemeName("ehr.scheme.name.exist"),
    GetSchemeDispatchListFailed("ehr.schemeDispatchList.Get.failed"),
    GetSchemeDispatchFailed("ehr.schemeDispatch.Get.failed"),
    SaveSchemeDispatchFailed("ehr.schemeDispatch.Save.failed"),
    UpdateSchemeDispatchFailed("ehr.schemeDispatch.update.failed"),
    DeleteSchemeDispatchFailed("ehr.schemeDispatch.delete.failed"),
    StandardGetListFailed("ehr.standard.getlist.failed"),
    StandardSaveFailed("ehr.standard.save.failed"),
    StandardDeleteFailed("ehr.standard.delete.failed"),
    StandardDeletePublished("ehr.standard.delete.published"),
    StandardUpdateFailed("ehr.standard.update.failed"),
    StandardGetFailed("ehr.standard.get.failed"),
    StandardForkFailed("ehr.standard.fork.failed"),
    StandardImportFailed("ehr.standard.import.failed"),
    StandardExportFailed("ehr.standard.export.failed"),
    ExistStandardCode("ehr.standard.code.exist"),
    ExistStandardName("ehr.standard.name.exist"),
    ExistStandardVersion("ehr.standard.version.exist"),
    StandardVersionGetListFailed("ehr.standard.version.getlist.failed"),
    StandardVersionSaveFailed("ehr.standard.version.save.failed"),
    StandardVersionDeleteFailed("ehr.standard.version.delete.failed"),
    StandardVersionDeletePublished("ehr.standard.version.delete.published"),
    StandardVersionUpdateFailed("ehr.standard.version.update.failed"),
    StandardVersionGetFailed("ehr.standard.version.get.failed"),
    StandardVersionForkFailed("ehr.standard.version.fork.failed"),
    StandardVersionPublishFailed("ehr.standard.version.publish.failed"),
    ExistStandardVersionName("ehr.standard.version.name.exist"),
    StandardVersionUsedDeleteFailed("ehr.standard.version.used.delete.failed"),
    StandardCDACatalogGetListFailed("ehr.standard.cda.catalog.getlist.failed"),
    StandardCDACatalogSaveFailed("ehr.standard.cda.catalog.save.failed"),
    StandardCDACatalogDeleteFailed("ehr.standard.cda.catalog.delete.failed"),
    StandardCDACatalogUpdateFailed("ehr.standard.cda.catalog.update.failed"),
    StandardCDACatalogGetFailed("ehr.standard.cda.catalog.get.failed"),
    StandardCDADatasetMissVersion("ehr.standard.cda.dataset.miss.verison"),
    StandardCDADatasetMissID("ehr.standard.cda.dataset.miss.id"),
    StandardCDADatasetGetListFailed("ehr.standard.cda.dataset.getlist.failed"),
    StandardCDADatasetSaveFailed("ehr.standard.cda.dataset.save.failed"),
    StandardCDADatasetDeleteFailed("ehr.standard.cda.dataset.delete.failed"),
    StandardCDADatasetUpdateFailed("ehr.standard.cda.dataset.update.failed"),
    StandardCDADatasetGetFailed("ehr.standard.cda.dataset.get.failed"),
    StandardCDAMissVersion("ehr.standard.cda.miss.verison"),
    StandardCDAMissID("ehr.standard.cda.miss.id"),
    StandardCDAGetListFailed("ehr.standard.cda.getlist.failed"),
    StandardCDASaveFailed("ehr.standard.cda.save.failed"),
    StandardCDADeleteFailed("ehr.standard.cda.delete.failed"),
    StandardCDAUpdateFailed("ehr.standard.cda.update.failed"),
    StandardCDAGetFailed("ehr.standard.cda.get.failed"),
    StandardDatasetCatalogMissID("ehr.standard.dataset.catalog.miss.id"),
    StandardDatasetCatalogGetListFailed("ehr.standard.dataset.catalog.getlist.failed"),
    StandardDatasetCatalogSaveFailed("ehr.standard.dataset.catalog.save.failed"),
    StandardDatasetCatalogDeleteFailed("ehr.standard.dataset.catalog.delete.failed"),
    StandardDatasetCatalogUpdateFailed("ehr.standard.dataset.catalog.update.failed"),
    StandardDatasetCatalogGetFailed("ehr.standard.dataset.catalog.get.failed"),
    StandardDatasetMissVersion("ehr.standard.dataset.miss.version"),
    StandardDatasetMissID("ehr.standard.dataset.miss.id"),
    StandardDatasetGetListFailed("ehr.standard.dataset.getlist.failed"),
    StandardDatasetSaveFailed("ehr.standard.dataset.save.failed"),
    StandardDatasetDeleteFailed("ehr.standard.dataset.delete.failed"),
    StandardDatasetUpdateFailed("ehr.standard.dataset.update.failed"),
    StandardDatasetGetFailed("ehr.standard.dataset.get.failed"),
    ExistStandardDatasetCode("ehr.standard.dataset.code.exist"),
    StandardMetaDataMissVersion("ehr.standard.metadatamiss.version"),
    StandardMetaDataMissID("ehr.standard.metadatamiss.id"),
    StandardMetaDataGetListFailed("ehr.standard.metadatagetlist.failed"),
    StandardMetaDataSaveFailed("ehr.standard.metadatasave.failed"),
    StandardMetaDataDeleteFailed("ehr.standard.metadatadelete.failed"),
    StandardMetaDataUpdateFailed("ehr.standard.metadataupdate.failed"),
    StandardMetaDataGetFailed("ehr.standard.metadataget.failed"),
    ExistStandardMetaDataCode("ehr.standard.metaData.code.exist"),
    StandardDictMissVersion("ehr.standard.dict.miss.version"),
    StandardDictMissID("ehr.standard.dict.miss.id"),
    StandardDictGetListFailed("ehr.standard.dict.getlist.failed"),
    StandardDictSaveFailed("ehr.standard.dict.save.failed"),
    StandardDictDeleteFailed("ehr.standard.dict.delete.failed"),
    StandardDictUpdateFailed("ehr.standard.dict.update.failed"),
    StandardDictGetFailed("ehr.standard.dict.get.failed"),
    ExistStandardDictCode("ehr.standard.dict.code.exist"),
    StandardDictEntryMissVersion("ehr.standard.dict.entry.miss.version"),
    StandardDictEntryMissID("ehr.standard.dict.entry.miss.id"),
    StandardDictEntryGetListFailed("ehr.standard.dict.entry.getlist.failed"),
    StandardDictEntrySaveFailed("ehr.standard.dict.entry.save.failed"),
    StandardDictEntryDeleteFailed("ehr.standard.dict.entry.delete.failed"),
    StandardDictEntryUpdateFailed("ehr.standard.dict.entry.update.failed"),
    StandardDictEntryGetFailed("ehr.standard.dict.entry.get.failed"),
    ExistStandardDictEntryCode("ehr.standard.dict.entry.code.exist"),
    // 功能错误信息列表 - 数据集
    GetDataSetListFailed("ehr.datasetlist.Get.failed"),
    GetDataSetFailed("ehr.dataset.Get.failed"),
    SavedatasetFailed("ehr.dataset.Save.failed"),
    UpdateDatasetFailed("ehr.dataset.update.failed"),
    DeleteDataSetFailed("ehr.dataset.delete.failed"),
    GetDataSetRelationListFailed("ehr.datasetRelationlist.Get.failed"),
    GetDataSetRelationFailed("ehr.datasetRelation.Get.failed"),
    SaveDatasetRelationFailed("ehr.datasetRelation.Save.failed"),
    UpdateatasetRelationFailed("ehr.datasetRelation.update.failed"),
    DeleteDataSetRelationFailed("ehr.datasetRelation.delete.failed"),
    GetMetaDataListFaield("ehr.metadatalist.Get.failed"),
    GetMetaDataFailed("ehr.metadata.Get.failed"),
    SaveMetaDataFailed("ehr.metadata.save.failed"),
    UpdateMetaDataFailed("ehr.metadata.update.failed"),
    DeleteMetaDataFailed("ehr.metadata.delete.failed"),
    // 功能错误信息列表 - 标准字典
    GetDictListFaild("ehr.dictlist.Get.failed"),
    GetDictFaild("ehr.dict.Get.failed"),
    GetDictEntryListFailed("ehr.dict.entries.get.failed"),
    GetDictEntryFailed("ehr.dict.entry.get.failed"),
    SaveDictFailed("ehr.dict.Save.failed"),
    UpdateDictFailed("ehr.dict.update.failed"),
    DeleteDictFailed("ehr.dict.delete.failed"),
    saveDictEntryFailed("ehr.dict.entry.save.failed"),
    UpdateDictEntryFailed("ehr.dict.entry.update.failed"),
    DeleteDictEntryFailed("ehr.dict.entry.delete.failed"),
    // 功能错误信息列表 - 标准数据来源
    GetPublisherListFaield("ehr.publisherList.get.failed"),
    GetPublisherFailed("ehr.publisher.get.failed"),
    SavePublisherFailed("ehr.publisher.save.failed"),
    UpdatePublisherFailed("ehr.publisher.update.failed"),
    DeletePublisherFailed("ehr.publisher.delete.failed"),
    GetStandardSourceFailed("ehr.std.get.source.list.failed"),
    // 接口模块连接错误信息列表 - 授权Token
    GenerateUserKeyFailed("ehr.security.generate.user.key.failed"),
    GetUserKeyFailed("ehr.security.get.user.key.failed"),
    UserAccessTokenExpired("ehr.security.token.expired"),
@ -150,16 +254,13 @@ public enum ErrorCode {
    NameIsNull("ehr.system.name.null"),
    VersionCodeIsNull("ehr.system.versioncode.null"),
    // 数据库连接错误信息列表 - 事件
    GetEhrArchiveFailed("ehr.ehr.get.archive"),
    GetEhrDataSetFailed("ehr.ehr.get.data.set"),
    // 数据库连接错误信息列表 - hbase
    CreateEhrDataSetTableFailed("ehr.ehr.create.data.set.table.failed"),
    TruncateTableFailed("ehr.hbase.truncate.table.failed"),
    GetTableFailed("ehr.hbase.get.table.failed"),
    // 数据库连接错误信息列表 - solr
    ClearSolrDataFailed("ehr.clear.solr.data.failed"),
    //

+ 5 - 5
Hos-Framework/src/main/java/com/yihu/ehr/framework/constrant/TreeView.java

@ -10,7 +10,7 @@ public class TreeView {
    private String id;
    private String pid;
    private String text;
    private Boolean isChecked;
    private Boolean ischecked;
    public String getId() {
        return id;
@ -36,11 +36,11 @@ public class TreeView {
        this.text = text;
    }
    public Boolean getIsChecked() {
        return isChecked;
    public Boolean getIschecked() {
        return ischecked;
    }
    public void setIsChecked(Boolean isChecked) {
        this.isChecked = isChecked;
    public void setIschecked(Boolean ischecked) {
        this.ischecked = ischecked;
    }
}

+ 41 - 0
Hos-Framework/src/main/java/com/yihu/ehr/framework/exception/ApiException.java

@ -0,0 +1,41 @@
package com.yihu.ehr.framework.exception;
import com.yihu.ehr.framework.constrant.ErrorCode;
/**
 * @author Sand
 * @version 1.0
 * @created 2015.12.20 16:05
 */
public class ApiException extends RuntimeException {
    private static final long serialVersionUID = 1464313464798414L;
    private ErrorCode errCode;
    private String errMsg;
    public ErrorCode getErrorCode() {
        return errCode;
    }
    public void setErrCode(ErrorCode errCode) {
        this.errCode = errCode;
    }
    public String getErrMsg() {
        return errMsg;
    }
    public void setErrMsg(String errMsg) {
        this.errMsg = errMsg;
    }
    public ApiException(ErrorCode errCode) {
        this.errCode = errCode;
    }
    public ApiException(ErrorCode errCode, String errMsg) {
        this.errCode = errCode;
        this.errMsg = errMsg;
    }
}

+ 218 - 0
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/sql/BeanTransformer.java

@ -0,0 +1,218 @@
package com.yihu.ehr.framework.util.sql;
import org.hibernate.transform.ResultTransformer;
import javax.persistence.Column;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @created Airhead 2015/12/26.
 */
public class BeanTransformer<T> implements ResultTransformer {
    private final Class<T> mapClass;
    public Map<String, String> columnToProperty;
    public Map<String, String> propertyToColumn;
    public BeanTransformer(Class<T> mapClass) {
        this.mapClass = mapClass;
        this.initColumnsToProperties();
        this.initPropertiesToColumns();
    }
    public Object transformTuple(Object[] tuple, String[] aliases) {
        try {
            PropertyDescriptor[] props = this.propertyDescriptors();
            int[] col2Pro = this.mapColumnsToProperties(aliases, props);
            return this.createBean(tuple, mapClass, props, col2Pro);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    @Override
    public List transformList(List list) {
        return list;
    }
    protected T newInstance(Class<T> c) throws Exception {
        try {
            return c.newInstance();
        } catch (InstantiationException | IllegalAccessException e) {
            throw new Exception("Cannot create " + c.getName() + ": " + e.getMessage());
        }
    }
    protected int[] mapColumnsToProperties(String[] aliases, PropertyDescriptor[] props) throws SQLException {
        int[] col2Pro = new int[aliases.length];
        Arrays.fill(col2Pro, -1);
        for (int col = 0; col < aliases.length; ++col) {
            String columnName = aliases[col];
            String propertyName = this.columnToProperty.get(columnName.toUpperCase());
            for (int i = 0; i < props.length; ++i) {
                if (propertyName.equals(props[i].getName())) {
                    col2Pro[col] = i;
                    break;
                }
            }
        }
        return col2Pro;
    }
    private T createBean(Object[] tuple, Class<T> type, PropertyDescriptor[] props, int[] col2Pro) throws Exception {
        T bean = this.newInstance(type);
        for (int i = 0; i < col2Pro.length; ++i) {
            int realIndex = col2Pro[i];
            if (realIndex != -1) {
                Object value = tuple[i];
                PropertyDescriptor prop = props[realIndex];
                this.callSetter(bean, prop, value);
            }
        }
        return bean;
    }
    private void callSetter(Object target, PropertyDescriptor prop, Object value) throws Exception {
        Method setter = prop.getWriteMethod();
        if (setter == null) {
            return;
        }
        Class<?>[] params = setter.getParameterTypes();
        try {
            // convert types for some popular ones
            if (value instanceof java.util.Date) {
                final String targetType = params[0].getName();
                if ("java.sql.Date".equals(targetType)) {
                    value = new java.sql.Date(((java.util.Date) value).getTime());
                } else if ("java.sql.Time".equals(targetType)) {
                    value = new java.sql.Time(((java.util.Date) value).getTime());
                } else if ("java.sql.Timestamp".equals(targetType)) {
                    Timestamp tsValue = (Timestamp) value;
                    int nanos = tsValue.getNanos();
                    value = new Timestamp(tsValue.getTime());
                    ((Timestamp) value).setNanos(nanos);
                }
            } else {
//                if (value instanceof String && params[0].isEnum()) {
//                    value = Enum.valueOf(params[0].asSubclass(Enum.class), (String) value);
//                }
            }
            // Don't call setter if the value object isn't the right type
            if (this.isCompatibleType(value, params[0])) {
                setter.invoke(target, new Object[]{value});
            } else {
                throw new Exception(
                        "Cannot set " + prop.getName() + ": incompatible types, cannot convert "
                                + value.getClass().getName() + " to " + params[0].getName());
                // value cannot be null here because isCompatibleType allows null
            }
        } catch (IllegalArgumentException | IllegalAccessException | InvocationTargetException e) {
            throw new SQLException(
                    "Cannot set " + prop.getName() + ": " + e.getMessage());
        }
    }
    private void initColumnsToProperties() {
        columnToProperty = new HashMap<>();
        Field[] fields = mapClass.getDeclaredFields();
        for (Field f : fields) {
            Column column = f.getAnnotation(Column.class);
            if (column == null) {
                continue;
            }
            String columnName = column.name();
            String propertyName = f.getName();
            columnToProperty.put(columnName.toUpperCase(), propertyName);
        }
    }
    private void initPropertiesToColumns() {
        propertyToColumn = new HashMap<>();
        Field[] fields = mapClass.getDeclaredFields();
        for (Field f : fields) {
            Column column = f.getAnnotation(Column.class);
            if (column == null) {
                continue;
            }
            String columnName = column.name();
            String propertyName = f.getName();
            propertyToColumn.put(propertyName,columnName.toUpperCase());
        }
    }
    private PropertyDescriptor[] propertyDescriptors() throws Exception {
        BeanInfo beanInfo = null;
        try {
            beanInfo = Introspector.getBeanInfo(mapClass);
        } catch (IntrospectionException e) {
            throw new Exception("Bean introspection failed: " + e.getMessage());
        }
        return beanInfo.getPropertyDescriptors();
    }
    private boolean isCompatibleType(Object value, Class<?> type) {
        // Do object check first, then primitives
        if (value == null || type.isInstance(value)) {
            return true;
        } else if (type.equals(Integer.TYPE) && value instanceof Integer) {
            return true;
        } else if (type.equals(Integer.TYPE) && value instanceof Long) {
            return true;
        } else if (type.equals(Long.TYPE) && value instanceof Long) {
            return true;
        } else if (type.equals(Double.TYPE) && value instanceof Double) {
            return true;
        } else if (type.equals(Float.TYPE) && value instanceof Float) {
            return true;
        } else if (type.equals(Short.TYPE) && value instanceof Short) {
            return true;
        } else if (type.equals(Byte.TYPE) && value instanceof Byte) {
            return true;
        } else if (type.equals(Character.TYPE) && value instanceof Character) {
            return true;
        } else if (type.equals(Boolean.TYPE) && value instanceof Boolean) {
            return true;
        }
        return false;
    }
}

+ 106 - 0
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/sql/RequestParamTransformer.java

@ -0,0 +1,106 @@
package com.yihu.ehr.framework.util.sql;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import java.io.IOException;
import java.util.*;
/**
 * @created Airhead 2015/12/29.
 */
public class RequestParamTransformer {
    public static final String SEPARATOR_FIELD = ",";
    public static final String SEPARATOR_KEYVALUE = ":";
    public static Map<String, Object> parseQuery(String query) throws ApiException {
        HashMap<String, Object> queryMap = new HashMap<String, Object>();
        if (StringUtils.isEmpty(query)) {
            return queryMap;
        }
        for (String cond : StringUtils.split(query, SEPARATOR_FIELD)) {
            String[] kv = StringUtils.split(cond, SEPARATOR_KEYVALUE);
            if (kv.length != 2) {
                throw new ApiException(ErrorCode.InvalidParameterFormat);
            }
            String key = kv[0];
            String value = kv[1];
            queryMap.put(key, value);
        }
        return queryMap;
    }
    public static List<String> parseField(String fields) {
        List<String> fieldList = new ArrayList<String>();
        if (StringUtils.isEmpty(fields)) {
            return fieldList;
        }
        String[] filters = StringUtils.split(fields, SEPARATOR_FIELD);
        return Arrays.asList(filters);
    }
    public static List<String> parseSortBy(String sortBy) {
        List<String> sortList = new ArrayList<String>();
        if (StringUtils.isEmpty(sortBy)) {
            return sortList;
        }
        String[] fields = StringUtils.split(sortBy, SEPARATOR_FIELD);
        return Arrays.asList(fields);
    }
    public static List<String> parseOrder(String order) {
        List<String> orderList = new ArrayList<String>();
        if (StringUtils.isEmpty(order)) {
            return orderList;
        }
        String[] fields = StringUtils.split(order, SEPARATOR_FIELD);
        return Arrays.asList(fields);
    }
    public static Long parseLimit(String limit) {
        if (StringUtils.isEmpty(limit)) {
            return -1L;
        }
        return NumberUtils.toLong(limit);
    }
    public static Long parseOffset(String offset) {
        if (StringUtils.isEmpty(offset)) {
            return 0L;
        }
        return NumberUtils.toLong(offset);
    }
    public static Map parseJsonToMap(String condition) {
        ObjectMapper objectMapper = new ObjectMapper();
        HashMap<String, String> map = new HashMap<String, String>();
        if (!StringUtil.isEmpty(condition)) {
            try {
                JsonNode jsonNode = objectMapper.readTree(condition);
                Iterator<String> fileNames = jsonNode.fieldNames();
                while (fileNames.hasNext()) {
                    String fieldName = fileNames.next();
                    String value = jsonNode.get(fieldName).asText();
                    map.put(fieldName, value);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return map;
    }
}

+ 317 - 0
Hos-Framework/src/main/java/com/yihu/ehr/framework/util/sql/SqlCreator.java

@ -0,0 +1,317 @@
package com.yihu.ehr.framework.util.sql;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.JsonNodeType;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by lingfeng on 2015/6/23.
 */
public class SqlCreator {
    private String tableName;
    private List<String> itemList;
    private List<String> itemValueList;
    private List<String> conditionList;
    private List<String> orderList;
    private Map<String, Object> keyValueMap;
    private BeanTransformer transformer;
    public SqlCreator(Class tClass) {
        keyValueMap = new HashMap<>();
        conditionList = new ArrayList<>();
        itemList = new ArrayList<>();
        itemValueList = new ArrayList<>();
        orderList = new ArrayList<>();
        transformer = new BeanTransformer(tClass);
    }
    public String insertData() {
        StringBuilder sqlBuffer = new StringBuilder();
        sqlBuffer.append(Constants.INSERT_INTO + tableName + Constants.LEFT_BRACKET);
        for (String item : itemList) {
            sqlBuffer.append(item + Constants.COMMA);
        }
        sqlBuffer.deleteCharAt(sqlBuffer.length() - 1);
        sqlBuffer.append(Constants.RIGHT_BRACKET + Constants.VALUES + Constants.LEFT_BRACKET);
        for (String item : itemValueList) {
            sqlBuffer.append(item + Constants.COMMA);
        }
        sqlBuffer.deleteCharAt(sqlBuffer.length() - 1);
        sqlBuffer.append(Constants.RIGHT_BRACKET + Constants.SEMICOLON);
        return sqlBuffer.toString();
    }
    public String insertData(String tabelName, JsonNode jsonNode) {
        setTableName(tabelName);
        for (Object key : transformer.columnToProperty.keySet()) {
            String property = StringUtil.toString(transformer.columnToProperty.get(key));
            JsonNode propertyJsonNode = jsonNode.get(property);
            if (propertyJsonNode != null) {
                itemList.add(StringUtil.toString(key));
                itemValueList.add(Constants.COLON + property);
                setKeyValueMapByType(property, propertyJsonNode, keyValueMap);
            }
        }
        return insertData();
    }
    public void setKeyValueMapByType(String property, JsonNode propertyJsonNode, Map<String, Object> keyValueMap) {
        JsonNodeType jsonNodeType = propertyJsonNode.getNodeType();
        if (jsonNodeType.equals(JsonNodeType.STRING)) {
            keyValueMap.put(property, propertyJsonNode.asText());
        } else if (jsonNodeType.equals(JsonNodeType.NUMBER)) {
            keyValueMap.put(property, propertyJsonNode.asInt());
        } else {
            keyValueMap.put(property, null);
        }
    }
    public String countData(String tabelName) {
        StringBuilder sqlBuffer = new StringBuilder();
        setTableName(tabelName);
        sqlBuffer.append(Constants.SELECT);
        sqlBuffer.append(Constants.COUNT);
        sqlBuffer.append(Constants.FROM + tableName);
        if (!CollectionUtil.isEmpty(conditionList)) {
            sqlBuffer.append(Constants.WHERE);
            sqlBuffer.append("1=1" + Constants.AND);
            for (String condition : conditionList) {
                sqlBuffer.append(condition + Constants.AND);
            }
            sqlBuffer.delete(sqlBuffer.length() - 4, sqlBuffer.length() - 1);
        }
        return sqlBuffer.toString();
    }
    public String selectData(String tabelName) {
        setTableName(tabelName);
        for(Object key : transformer.columnToProperty.keySet()){
            itemList.add(StringUtil.toString(key));
        }
        return selectData();
    }
    public String selectData() {
        StringBuilder sqlBuffer = new StringBuilder();
        sqlBuffer.append(Constants.SELECT);
        for (String item : itemList) {
            sqlBuffer.append(item + Constants.COMMA);
        }
        sqlBuffer.deleteCharAt(sqlBuffer.length() - 1);
        sqlBuffer.append(Constants.FROM + tableName);
        if (!CollectionUtil.isEmpty(conditionList)) {
            sqlBuffer.append(Constants.WHERE);
            sqlBuffer.append("1=1" + Constants.AND);
            for (String condition : conditionList) {
                sqlBuffer.append(condition + Constants.AND);
            }
            sqlBuffer.delete(sqlBuffer.length() - 4, sqlBuffer.length() - 1);
        }
        if (!CollectionUtil.isEmpty(orderList)) {
            for (String order : orderList) {
                sqlBuffer.append(order);
            }
            sqlBuffer.delete(sqlBuffer.length() - 1, sqlBuffer.length());
        }
        return sqlBuffer.toString();
    }
    public String updateDataByTableKey(String tabelName, JsonNode jsonNode) {
        setTableName(tabelName);
        StringBuilder sqlBuffer = new StringBuilder();
        sqlBuffer.append(Constants.UPDATE + tableName + Constants.SET);
        Map columnToProperty = transformer.columnToProperty;
        for (Object key : columnToProperty.keySet()) {
            String property = StringUtil.toString(columnToProperty.get(key));
            if (!property.equals(Constants.TABLE_KEY)) {
                sqlBuffer.append(key + Constants.EQUAL_MARK + Constants.COLON + property + Constants.COMMA);
                setKeyValueMapByType(property, jsonNode.get(property), keyValueMap);
            }
        }
        sqlBuffer.deleteCharAt(sqlBuffer.length() - 1);
        Object tableKey = columnToProperty.get(Constants.TABLE_KEY.toUpperCase());
        sqlBuffer.append(Constants.WHERE + Constants.TABLE_KEY + Constants.EQUAL_MARK + Constants.COLON + tableKey);
        String property = StringUtil.toString(tableKey);
        setKeyValueMapByType(property, jsonNode.get(property), keyValueMap);
        return sqlBuffer.toString();
    }
    public String betweenCondition(String item, Object value1, Object value2) {
        String condition = item + Constants.BETWEEN + Constants.BEGIN + item + Constants.AND + Constants.END + item;
        keyValueMap.put(Constants.BEGIN + item, value1);
        keyValueMap.put(Constants.END + item, value2);
        conditionList.add(condition);
        return condition;
    }
    public String greaterAndEqualCondition(String item, Object value) {
        String condition = item + Constants.GREATER_EQUAL_MARK + Constants.COLON + item;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
    }
    public String greaterCondition(String item, Object value) {
        String condition = item + Constants.GREATER_MARK + Constants.COLON + item;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
    }
    public String lessAndEqualCondition(String item, Object value) {
        String condition = item + Constants.LESS_EQUAL_MARK + Constants.COLON + item;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
    }
    public String lessCondition(String item, Object value) {
        String condition = item + Constants.LESS_MARK + Constants.COLON + item;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
    }
    public String equalCondition(String item, Object value) {
        String column = StringUtil.toString(transformer.propertyToColumn.get(item));
        String condition = column + Constants.EQUAL_MARK + Constants.COLON + item;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
    }
    public String inCondition(String item, Object value) {
        String column = StringUtil.toString(transformer.propertyToColumn.get(item));
        String condition = column + Constants.IN + Constants.LEFT_BRACKET + Constants.COLON + item + Constants.RIGHT_BRACKET;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
    }
    public String equalConditionQue(String item, Object value) {
        String column = StringUtil.toString(transformer.propertyToColumn.get(item));
        String condition = column + Constants.EQUAL_MARK + Constants.QUESTION_MARK;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
    }
    public String likeOrCondition(String item1, String item2, Object value) {
        if (!StringUtil.isEmpty(value)) {
            String column1 = StringUtil.toString(transformer.propertyToColumn.get(item1));
            String column2 = StringUtil.toString(transformer.propertyToColumn.get(item2));
            String condition = Constants.LEFT_BRACKET + column1 + Constants.LIKE + Constants.COLON + item1
                    + Constants.OR + column2 + Constants.LIKE + Constants.COLON + item2 + Constants.RIGHT_BRACKET;
            value = Constants.PERCENT + value + Constants.PERCENT;
            keyValueMap.put(item1, value);
            keyValueMap.put(item2, value);
            conditionList.add(condition);
            return condition;
        } else {
            return Constants.EMPTY;
        }
    }
    public String likeCondition(String item, Object value) {
        String column = StringUtil.toString(transformer.propertyToColumn.get(item));
        String condition = column + Constants.LIKE + Constants.COLON + item;
        value = Constants.PERCENT + value + Constants.PERCENT;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
    }
    public String neCondition(String item, Object value) {
        String column = StringUtil.toString(transformer.propertyToColumn.get(item));
        String condition = column + Constants.NE_MARK + Constants.COLON + item;
        keyValueMap.put(item, value);
        conditionList.add(condition);
        return condition;
    }
    public String order(String item, Object value) {
        String column = StringUtil.toString(transformer.propertyToColumn.get(item));
        String order;
        if (CollectionUtil.isEmpty(orderList)) {
            order = Constants.ORDER_BY + column + Constants.BLANK + value + Constants.COMMA;
        } else {
            order = column + Constants.BLANK + value + Constants.COMMA;
        }
        orderList.add(order);
        return order;
    }
    public String getTableName() {
        return tableName;
    }
    public void setTableName(String tableName) {
        this.tableName = tableName;
    }
    public List<String> getItemList() {
        return itemList;
    }
    public void setItemList(List<String> itemList) {
        this.itemList = itemList;
    }
    public List<String> getItemValueList() {
        return itemValueList;
    }
    public void setItemValueList(List<String> itemValueList) {
        this.itemValueList = itemValueList;
    }
    public List<String> getConditionList() {
        return conditionList;
    }
    public void setConditionList(List<String> conditionList) {
        this.conditionList = conditionList;
    }
    public Map<String, Object> getKeyValueMap() {
        return keyValueMap;
    }
    public void setKeyValueMap(Map<String, Object> keyValueMap) {
        this.keyValueMap = keyValueMap;
    }
    public List<String> getOrderList() {
        return orderList;
    }
    public void setOrderList(List<String> orderList) {
        this.orderList = orderList;
    }
    public BeanTransformer getTransformer() {
        return transformer;
    }
    public void setTransformer(BeanTransformer transformer) {
        this.transformer = transformer;
    }
}

+ 6 - 6
Hos-resource/src/main/java/com/yihu/ehr/datacollect/controller/DataCollectController.java

@ -9,8 +9,10 @@ import com.yihu.ehr.framework.constrant.DateConvert;
import com.yihu.ehr.framework.model.ActionResult;
import com.yihu.ehr.framework.model.Result;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.std.service.intf.IStdService;
import com.yihu.ehr.system.service.intf.IDatasourceManager;
import net.sf.json.JSONArray;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.PropertyUtils;
@ -21,10 +23,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
/**
 * 数据采集配置页面
@ -73,8 +72,9 @@ public class DataCollectController extends BaseController {
            }
            //获取方案列表
            String data = stdService.getSchemeVersion();
            model.addAttribute("schemeList", "{\"detailModelList\":"+(data.length()==0?"[]":data)+"}");
            List data = stdService.getSchemeVersion();
            JSONArray jsonArray = JSONArray.fromObject(data);
            model.addAttribute("schemeList", "{\"detailModelList\":"+(CollectionUtil.isEmpty(data)?"[]":jsonArray)+"}");
            model.addAttribute("contentPage", "/datacollect/editorJob");
            return "pageView";

+ 6 - 4
Hos-resource/src/main/java/com/yihu/ehr/datacollect/service/DatacollectManager.java

@ -10,6 +10,8 @@ import com.yihu.ehr.framework.model.DictItem;
import com.yihu.ehr.framework.model.SimpleChartItem;
import com.yihu.ehr.framework.util.quartz.QuartzManager;
import com.yihu.ehr.resource.model.RsDatasourceDataset;
import com.yihu.ehr.standard.model.adapter.AdapterDatasetModel;
import com.yihu.ehr.standard.model.standard.StdDataSetModel;
import com.yihu.ehr.std.service.intf.IStdService;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@ -204,7 +206,7 @@ public class DatacollectManager implements IDatacollectManager {
    public DataGridResult getSchemeDataset(String schemeId,String schemeVersion,String jobId) throws Exception
    {
        //获取适配数据集总和
        String datasetString = stdManager.getDatasetByScheme(schemeVersion);
        List<AdapterDatasetModel> datasetString = stdManager.getDatasetByScheme(schemeVersion);
        JSONArray jsonArray =  JSONArray.fromObject(datasetString);
        //获取任务数据集
        List<RsJobDataset> jobDataset = datacollectDao.getJobDataset(jobId);
@ -253,7 +255,7 @@ public class DatacollectManager implements IDatacollectManager {
    public DataGridResult getSchemeDatasetCol(String schemeId,String schemeVersion,String datasetId) throws Exception
    {
        //获取适配字段
        String datacolString = stdManager.getDatacolByScheme(schemeVersion, datasetId);
        List datacolString = stdManager.getDatacolByScheme(schemeVersion, datasetId);
        JSONArray datacolList = JSONArray.fromObject(datacolString);
        DataGridResult re = new DataGridResult();
@ -398,8 +400,8 @@ public class DatacollectManager implements IDatacollectManager {
    public DataGridResult getDatasetSource(String stdVersion) throws Exception
    {
        //获取版本下全部数据集
        String datasetString = stdManager.getDatasetByVersion(stdVersion);
        JSONArray datasetList = JSONArray.fromObject(datasetString);
        List<StdDataSetModel> stdDataSetModelList = stdManager.getDatasetByVersion(stdVersion);
        JSONArray datasetList = JSONArray.fromObject(stdDataSetModelList);
        //获取已配数据集
        List<RsDatasourceDataset> jobDataset = datacollectDao.getDatasourceDataset(stdVersion);

+ 4 - 4
Hos-resource/src/main/java/com/yihu/ehr/datacollect/service/DatacollectService.java

@ -141,7 +141,7 @@ public class DatacollectService implements IDatacollectService {
                dictCol.setAdapterDictId(dictId);
                dictCol.setAdapterDataType(dictType.length()>0?dictType:"1");//默认通过code转换字典
                //获取字典数据
                String dictString = stdService.getDictByScheme(schemeVersion,dictId);
                List dictString = stdService.getDictByScheme(schemeVersion,dictId);
                JSONArray dictAdapterArray = new JSONArray(dictString);
                dictCol.setDictList(dictAdapterArray);
@ -253,7 +253,7 @@ public class DatacollectService implements IDatacollectService {
            DBType dbType = db.dbType;
            //获取数据集映射
            String datasetString = stdService.getDatasetByScheme(schemeVersion, datasetId);
            List datasetString = stdService.getDatasetByScheme(schemeVersion, datasetId);
            JSONArray datasetList = new JSONArray(datasetString);
            String stdTableName ="";
            String adapterTableName ="";
@ -264,7 +264,7 @@ public class DatacollectService implements IDatacollectService {
            }
            //获取数据集字段映射结构
            String colString = stdService.getDatacolByScheme(schemeVersion,datasetId);
            List colString = stdService.getDatacolByScheme(schemeVersion,datasetId);
            JSONArray colList = new JSONArray(colString);
            if(colList!=null && colList.length()>0)
@ -543,7 +543,7 @@ public class DatacollectService implements IDatacollectService {
        //获取数据集字段映射结构
        String schemeVersion = log.getSchemeVersion();
        String datasetId = log.getJobDatasetId();
        String colString = stdService.getDatacolByScheme(schemeVersion,datasetId);
        List colString = stdService.getDatacolByScheme(schemeVersion,datasetId);
        JSONArray colList = new JSONArray(colString);
        List<JSONObject> list = db.query(sql);
        String message = intoMongodb(list,schemeVersion,stdDatasetCode,colList);

+ 3 - 6
Hos-resource/src/main/java/com/yihu/ehr/resource/service/impl/RsResourceServiceImpl.java

@ -163,8 +163,7 @@ public class RsResourceServiceImpl extends BaseHttpService implements IRsResourc
        DataGridResult re = new DataGridResult();
        if (StringUtils.isEmpty(params.get("datasetId"))) {
            String jsonS=stdService.datasetsAllVersionList().replace(":null", ":\"\"");
            re.setDetailModelList(net.sf.json.JSONArray.fromObject(jsonS));
            re.setDetailModelList(stdService.datasetsAllVersionList());
        } else {
            RsResourceDataset rd = resourceDatasetDao.getEntity(RsResourceDataset.class, (String) params.get("datasetId"));
            List list = new ArrayList();
@ -197,7 +196,7 @@ public class RsResourceServiceImpl extends BaseHttpService implements IRsResourc
        Map<String, Object> paramsTemp = new HashMap<String, Object>();
        paramsTemp.put("condition", JSONObject.fromObject(params).toString());
        String responseParasm = stdService.metadatasAllVersionList(paramsTemp);
        List responseParasm = stdService.metadatasAllVersionList(paramsTemp);
        JSONArray array = JSONArray.fromObject(responseParasm);
        if (array.size() == 0) {
            throw new Exception("该数据集没有数据元");
@ -278,10 +277,8 @@ public class RsResourceServiceImpl extends BaseHttpService implements IRsResourc
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("code", code);
        Map<String, Object> paramsTemp = new HashMap<String, Object>();
        paramsTemp.put("condition", JSONObject.fromObject(params).toString());
        //得到所有的数据元
        String responseParasm = stdService.metadatasAllVersionList(paramsTemp);
        List responseParasm = stdService.metadatasAllVersionList(params);
        JSONArray jr = JSONArray.fromObject(responseParasm);
        if (!StringUtils.isEmpty(datasetId)) {
            List<RsResourceMetadata> md = resourceMetadataDao.getMetadataByLocalDatssetId(datasetId);

+ 110 - 90
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/AdapterController.java

@ -1,45 +1,60 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.model.DictItem;
import com.yihu.ehr.framework.model.DictionaryResult;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeModel;
import com.yihu.ehr.standard.model.standard.StandardModel;
import com.yihu.ehr.standard.model.standard.StandardVersionModel;
import com.yihu.ehr.standard.model.standard.StdPublisherModel;
import com.yihu.ehr.standard.service.adapter.AdapterSchemeService;
import com.yihu.ehr.standard.service.standard.StandardService;
import com.yihu.ehr.standard.service.standard.StandardVersionService;
import com.yihu.ehr.standard.service.standard.StdPublisherService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by LLH on 2016/1/16.
 */
@Controller
@RestController("AdapterController")
@RequestMapping("/adapter")
@Api(protocols = "https", value = "AdapterController", description = "适配管理", tags = {"适配"})
public class AdapterController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = AdapterSchemeService.BEAN_ID)
    private AdapterSchemeService adapterSchemeService;
    @Resource(name = StandardService.BEAN_ID)
    private StandardService standardService;
    @Resource(name = StandardVersionService.BEAN_ID)
    private StandardVersionService standardVersionService;
    @Resource(name = StdPublisherService.BEAN_ID)
    private StdPublisherService stdPublisherService;
    /**
     * 查询适配方案首页信息(get)
     * @param condition
     * @return
     * @throws Exception
     */
    @RequestMapping("/searchSchemesList")
    @ResponseBody
    public String searchSchemesList(String condition) throws Exception {
        String url = "/api/v1.0/adapter_center/schemes";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("condition", condition);
        String resutl = HttpClientUtil.doGet( host+url, params, username, password);
        return resutl;
    @RequestMapping(value = "/searchSchemesList")
    @ApiOperation(value = "获取适配方案列表", response = AdapterSchemeModel.class, responseContainer = "List", produces = "application/json", notes = "获取适配方案列表")
    public List<AdapterSchemeModel> getList(
            @ApiParam(name = "condition", value = "Search param,Must be json")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        return adapterSchemeService.getEntityList(AdapterSchemeModel.class, condition, order, rows, page - 1, ErrorCode.GetSchemeListFailed);
    }
    /**
@ -48,14 +63,12 @@ public class AdapterController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/getForSchemeId")
    @ResponseBody
    public String getForStandardId(Integer schemeId) throws Exception {
        String url = "/api/v1.0/adapter_center/scheme";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("schemeId",schemeId);
        String resutl = HttpClientUtil.doGet( host+url,params,username,password);
        return resutl;
    @RequestMapping(value = "/getForSchemeId")
    @ApiOperation(value = "获取适配方案", response = AdapterSchemeModel.class, produces = "application/json", notes = "获取适配方案")
    public AdapterSchemeModel get(
            @ApiParam(name = "schemeId", value = "标准版本ID")
            @RequestParam(value = "schemeId") Integer schemeId) {
        return adapterSchemeService.get(schemeId);
    }
    /**
@ -65,13 +78,11 @@ public class AdapterController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/updateScheme")
    @ResponseBody
    public String updateScheme(String scheme) throws Exception {
        String url = "/api/v1.0/adapter_center/scheme";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("scheme",scheme);
        String resutl = HttpClientUtil.doPut(host + url, params, username, password);
        return resutl;
    @ApiOperation(value = "修改适配方案", response = AdapterSchemeModel.class, produces = "application/json", notes = "修改适配方案")
    public AdapterSchemeModel modify(
            @ApiParam(name = "scheme", value = "适配方案")
            @RequestParam(value = "scheme") String scheme) {
        return adapterSchemeService.update(scheme);
    }
    /**
@ -80,14 +91,12 @@ public class AdapterController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/addScheme")
    @ResponseBody
    public String addScheme(String scheme) throws Exception {
        String url = "/api/v1.0/adapter_center/scheme";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("scheme",scheme);
        String resutl = HttpClientUtil.doPost(host + url, params, username, password);
        return resutl;
    @RequestMapping(value = "/addScheme")
    @ApiOperation(value = "保存适配方案", response = AdapterSchemeModel.class, produces = "application/json", notes = "保存适配方案")
    public AdapterSchemeModel add(
            @ApiParam(name = "scheme", value = "适配方案信息")
            @RequestParam(value = "scheme") String scheme) {
        return adapterSchemeService.add(scheme);
    }
    /**
@ -96,14 +105,12 @@ public class AdapterController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/deleteScheme")
    @ResponseBody
    public String deleteScheme(Integer schemeId) throws Exception {
        String url = "/api/v1.0/adapter_center/scheme";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("schemeId",schemeId);
        String resutl = HttpClientUtil.doDelete(host + url, params, username, password);
        return resutl;
    @RequestMapping(value = "/deleteScheme")
    @ApiOperation(value = "删除适配方案", produces = "application/json", notes = "删除适配方案")
    public void delete(
            @ApiParam(name = "schemeId", value = "适配方案ID")
            @RequestParam(value = "schemeId") Integer schemeId) {
        adapterSchemeService.delete(schemeId);
    }
    /**
@ -112,23 +119,25 @@ public class AdapterController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/getStandards")
    @ResponseBody
    public DictionaryResult getStandards(String condition) throws Exception {
        String url = "/api/v1.0/standard_center/standards";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("condition",condition);
        String result = HttpClientUtil.doGet(host + url, params, username, password);
        JSONArray array = JSONArray.fromObject(result);
    @RequestMapping(value = "/getStandards")
    @ApiOperation(value = "获取标准列表", response = DictionaryResult.class, produces = "application/json", notes = "获取标准列表")
    public DictionaryResult getStandardList(
            @ApiParam(name = "condition", value = "Must be Json,其中type为区分集成与应用标准")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Must be Json")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        List<StandardModel> standardModelList = standardService.getList(condition, order, rows, page - 1);
        DictionaryResult dictionaryResult = new DictionaryResult();
        List<DictItem> detailModelList = new ArrayList<DictItem>();
        for(int i = 0; i < array.size(); i++){
            JSONObject jsonObject = array.getJSONObject(i);
        for(StandardModel standardModel : standardModelList){
            DictItem items = new DictItem();
            Integer  id = (Integer) jsonObject.get("id");
            String name = (String)jsonObject.get("name");
            Integer id = standardModel.getId();
            items.setCode(id.toString());
            items.setValue(name);
            items.setValue(standardModel.getName());
            detailModelList.add(items);
        }
        dictionaryResult.setDetailModelList(detailModelList);
@ -141,21 +150,28 @@ public class AdapterController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/getVersions")
    @ResponseBody
    public DictionaryResult getVersions(Integer standardId) throws Exception {
        String url = "/api/v1.0/standard_center/versions";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("standardId",standardId);
        String result = HttpClientUtil.doGet(host + url, params, username, password);
        JSONArray array = JSONArray.fromObject(result);
    @RequestMapping(value = "/getVersions")
    @ApiOperation(value = "获取标准版本列表", response = DictionaryResult.class, produces = "application/json", notes = "获取标准版本列表")
    public DictionaryResult getVersionList(
            @ApiParam(name = "apiVersion", value = "API版本号", defaultValue = "v1.0")
            @PathVariable(value = "apiVersion") String apiVersion,
            @ApiParam(name = "standardId", value = "标准ID")
            @RequestParam(value = "standardId") Integer standardId,
            @ApiParam(name = "condition", value = "Must be Json")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Must be Json")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        List<StandardVersionModel> standardVersionModelList = standardVersionService.getList(standardId, condition, order, rows, page - 1);
        DictionaryResult dictionaryResult = new DictionaryResult();
        List<DictItem> detailModelList = new ArrayList<DictItem>();
        for(int i = 0; i < array.size(); i++){
            JSONObject jsonObject = array.getJSONObject(i);
        for(StandardVersionModel standardVersionModel : standardVersionModelList){
            DictItem items = new DictItem();
            String  id = (String) jsonObject.get("version");
            String name = (String)jsonObject.get("name");
            String id = standardVersionModel.getVersion();
            String name = standardVersionModel.getName();
            items.setCode(id.toString());
            items.setValue(name);
            detailModelList.add(items);
@ -169,20 +185,24 @@ public class AdapterController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/getPublishers")
    @ResponseBody
    public DictionaryResult getPublishers() throws Exception {
        String url = "/api/v1.0/standard_center/publishers";
        Map<String, Object> params = new HashMap<String, Object>();
        String result = HttpClientUtil.doGet(host + url, params, username, password);
        JSONArray array = JSONArray.fromObject(result);
    @RequestMapping(value = "/getPublishers")
    @ApiOperation(value = "获取发布机构列表", response = DictionaryResult.class, produces = "application/json", notes = "获取发布机构列表")
    public DictionaryResult getPublishers(
            @ApiParam(name = "condition", value = "Must be Json")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Must be Json")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        List<StdPublisherModel> stdPublisherModelList = stdPublisherService.getList(condition, order, rows, page - 1);
        DictionaryResult dictionaryResult = new DictionaryResult();
        List<DictItem> detailModelList = new ArrayList<DictItem>();
        for(int i = 0; i < array.size(); i++){
            JSONObject jsonObject = array.getJSONObject(i);
        for(StdPublisherModel stdPublisherModel : stdPublisherModelList){
            DictItem items = new DictItem();
            String  id = (String) jsonObject.get("code");
            String name = (String)jsonObject.get("name");
            String id = stdPublisherModel.getCode();
            String name = stdPublisherModel.getName();
            items.setCode(id.toString());
            items.setValue(name);
            detailModelList.add(items);

+ 61 - 65
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/AdapterVersionController.java

@ -1,45 +1,44 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.model.DictItem;
import com.yihu.ehr.framework.model.DictionaryResult;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeVersionModel;
import com.yihu.ehr.standard.service.adapter.AdapterSchemeVersionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("AdapterVersionController")
@RequestMapping("/adapterversion")
@Api(protocols = "https", value = "AdapterVersionController", description = "适配版本管理", tags = {"适配"})
public class AdapterVersionController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = AdapterSchemeVersionService.BEAN_ID)
    private AdapterSchemeVersionService adapterSchemeVersion;
    /**
     * 根据版本id获取适配方案信息(get)
     * @param versionId
     * @return
     * @throws Exception
     */
    @RequestMapping("/getForVersionId")
    @ResponseBody
    public String getForVersionId(Integer versionId) throws Exception {
        String url = "/api/v1.0/adapter_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("versionId",versionId);
        String resutl = HttpClientUtil.doGet(host + url, params, username, password);
        return resutl;
    @RequestMapping(value = "/getForVersionId")
    @ApiOperation(value = "获取适配版本", response = AdapterSchemeVersionModel.class, produces = "application/json", notes = "获取适配版本")
    public AdapterSchemeVersionModel getForVersionId(
            @ApiParam(name = "versionId", value = "适配版本ID")
            @RequestParam(value = "versionId") Integer versionId) {
        return adapterSchemeVersion.get(versionId);
    }
    /**
@ -48,14 +47,12 @@ public class AdapterVersionController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/addVersion")
    @ResponseBody
    public String addVersion(String version) throws Exception {
        String url = "/api/v1.0/adapter_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("version",version);
        String resutl = HttpClientUtil.doPost(host + url, params, username, password);
        return resutl;
    @RequestMapping(value = "/addVersion")
    @ApiOperation(value = "保存适配版本", response = AdapterSchemeVersionModel.class, produces = "application/json", notes = "保存适配版本")
    public AdapterSchemeVersionModel add(
            @ApiParam(name = "version", value = "适配版本信息")
            @RequestParam(value = "version") String version) {
        return adapterSchemeVersion.add(version);
    }
    /**
@ -64,14 +61,12 @@ public class AdapterVersionController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/updateVersion")
    @ResponseBody
    public String updateVersion(String version) throws Exception {
        String url = "/api/v1.0/adapter_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("version",version);
        String resutl = HttpClientUtil.doPut(host + url, params, username, password);
        return resutl;
    @RequestMapping(value = "/updateVersion")
    @ApiOperation(value = "修改适配版本", response = AdapterSchemeVersionModel.class, produces = "application/json", notes = "修改适配版本")
    public AdapterSchemeVersionModel updateVersion(
            @ApiParam(name = "version", value = "标准版本")
            @RequestParam(value = "version") String version) {
        return adapterSchemeVersion.update(version);
    }
    /**
@ -81,13 +76,11 @@ public class AdapterVersionController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/publishVersion")
    @ResponseBody
    public String publishVersion(String version) throws Exception {
        String url = "/api/v1.0/adapter_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("version",version);
        String resutl = HttpClientUtil.doPut(host + url, params, username, password);
        return resutl;
    @ApiOperation(value = "发布适配版本", response = AdapterSchemeVersionModel.class, produces = "application/json", notes = "修改适配版本")
    public AdapterSchemeVersionModel publishVersion(
            @ApiParam(name = "version", value = "标准版本")
            @RequestParam(value = "version") String version) {
        return adapterSchemeVersion.update(version);
    }
    /**
@ -96,14 +89,12 @@ public class AdapterVersionController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/deleteVersion")
    @ResponseBody
    public String deleteVersion(Integer versionId) throws Exception {
        String url = "/api/v1.0/adapter_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("versionId",versionId);
        String resutl = HttpClientUtil.doDelete(host + url, params, username, password);
        return resutl;
    @RequestMapping(value = "/deleteVersion")
    @ApiOperation(value = "删除版本", produces = "application/json", notes = "删除版本")
    public void delete(
            @ApiParam(name = "versionId", value = "标准版本ID")
            @RequestParam(value = "versionId") Integer versionId) {
        adapterSchemeVersion.delete(versionId);
    }
    /**
@ -112,25 +103,31 @@ public class AdapterVersionController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/getVersions")
    @ResponseBody
    public DictionaryResult getVersions(Integer schemeId) throws Exception {
        String url = "/api/v1.0/adapter_center/versions";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("schemeId",schemeId);
        String result = HttpClientUtil.doGet(host + url, params, username, password);
        JSONArray array = JSONArray.fromObject(result);
    @RequestMapping(value = "/getVersions")
    @ApiOperation(value = "获取适配方案版本列表", response = DictionaryResult.class, produces = "application/json", notes = "获取标准版本列表")
    public DictionaryResult getList(
            @ApiParam(name = "schemeId", value = "适配方案ID")
            @RequestParam(value = "schemeId") Integer schemeId,
            @ApiParam(name = "condition", value = "Search param,Must be json")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        List<AdapterSchemeVersionModel> adapterSchemeVersionModelList = adapterSchemeVersion.getEntityListByParentId(
                AdapterSchemeVersionModel.class, "schemeId", schemeId, condition, order, rows, page - 1, ErrorCode.GetSchemeVersionListFailed);
        DictionaryResult dictionaryResult = new DictionaryResult();
        List<DictItem> detailModelList = new ArrayList<DictItem>();
        DictItem item = new DictItem();
        item.setCode("");
        item.setValue("-无-");
        detailModelList.add(item);
        for(int i = 0; i < array.size(); i++){
            JSONObject jsonObject = array.getJSONObject(i);
        for(AdapterSchemeVersionModel adapterSchemeVersionModel : adapterSchemeVersionModelList){
            DictItem items = new DictItem();
            String  id = (String) jsonObject.get("version");
            String name = (String)jsonObject.get("name");
            String id = adapterSchemeVersionModel.getVersion();
            String name = adapterSchemeVersionModel.getName();
            items.setCode(id.toString());
            items.setValue(name);
            detailModelList.add(items);
@ -138,5 +135,4 @@ public class AdapterVersionController extends BaseController {
        dictionaryResult.setDetailModelList(detailModelList);
        return dictionaryResult;
    }
}
}

+ 40 - 49
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/PublisherController.java

@ -1,39 +1,39 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import org.springframework.stereotype.Controller;
import com.yihu.ehr.standard.model.standard.StdPublisherModel;
import com.yihu.ehr.standard.service.standard.StdPublisherService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("PublisherController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "PublisherController", description = "发布者管理", tags = {"发布者"})
public class PublisherController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = StdPublisherService.BEAN_ID)
    private StdPublisherService stdPublisherService;
    /**
     * 根据标准ID获取发布机构(get)
     * @param publisherId
     * @return
     * @throws Exception
     */
    @RequestMapping("/getForPublisherId")
    @ResponseBody
    public String getForStandardId(Integer publisherId) throws Exception {
        String url = "/api/v1.0/standard_center/publisher";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("publisherId", publisherId);
        String result = HttpClientUtil.doGet(host+url,params,username,password);
        return result;
    @RequestMapping(value = "/getForPublisherId")
    @ApiOperation(value = "获取发布机构", response = StdPublisherModel.class, produces = "application/json", notes = "获取发布机构")
    public StdPublisherModel get(
            @ApiParam(name = "publisherId", value = "机构ID")
            @RequestParam(value = "publisherId") Integer publisherId) {
        return stdPublisherService.get(publisherId);
    }
    /**
@ -41,13 +41,10 @@ public class PublisherController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/getStandardPublisher")
    @ResponseBody
    public String getStandardPublisher() throws Exception {
        String url = "/api/v1.0/standard_center/publisher/standard";
        Map<String, Object> params = new HashMap<String, Object>();
        String result = HttpClientUtil.doGet(host+url,params,username,password);
        return result;
    @RequestMapping(value = "/getStandardPublisher")
    @ApiOperation(value = "获取发布机构", response = StdPublisherModel.class, produces = "application/json", notes = "获取发布机构")
    public StdPublisherModel get() {
        return stdPublisherService.getStandardPublisher();
    }
    /**
@ -56,14 +53,12 @@ public class PublisherController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/updatePublisher")
    @ResponseBody
    public String updateStandard(String publisher) throws Exception {
        String url = "/api/v1.0/standard_center/publisher";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("publisher", publisher);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/updatePublisher")
    @ApiOperation(value = "修改发布机构", response = StdPublisherModel.class, produces = "application/json", notes = "修改发布机构")
    public StdPublisherModel updatePublisher(
            @ApiParam(name = "publisher", value = "机构信息")
            @RequestParam(value = "publisher") String publisher) {
        return stdPublisherService.update(publisher);
    }
    /**
@ -72,14 +67,12 @@ public class PublisherController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/addPublisher")
    @ResponseBody
    public String addStandard(String publisher) throws Exception {
        String url = "/api/v1.0/standard_center/publisher";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("publisher", publisher);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/addPublisher")
    @ApiOperation(value = "保存发布机构", response = StdPublisherModel.class, produces = "application/json", notes = "保存发布机构")
    public StdPublisherModel addPublisher(
            @ApiParam(name = "publisher", value = "机构信息")
            @RequestParam(value = "publisher") String publisher) {
        return stdPublisherService.add(publisher);
    }
    /**
@ -88,14 +81,12 @@ public class PublisherController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/deletePublisher")
    @ResponseBody
    public String deleteStandard(Integer publisherId) throws Exception {
        String url = "/api/v1.0/standard_center/publisher";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("publisherId", publisherId);
        String result = HttpClientUtil.doDelete(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/deletePublisher")
    @ApiOperation(value = "删除发布机构", produces = "application/json", notes = "删除发布机构")
    public void deletePublisher(
            @ApiParam(name = "publisherId", value = "机构ID")
            @RequestParam(value = "publisherId") Integer publisherId) {
        stdPublisherService.delete(publisherId);
    }
}

+ 44 - 55
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/SchemeController.java

@ -1,39 +1,37 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import org.springframework.stereotype.Controller;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeModel;
import com.yihu.ehr.standard.model.adapter.resultModel.SchemeResultDetailModel;
import com.yihu.ehr.standard.service.adapter.AdapterSchemeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import java.util.List;
/**
 * Created by LLH on 2016/1/16.
 */
@Controller
@RestController("SchemeController")
@RequestMapping("/adapterCenter")
@Api(protocols = "https", value = "SchemeController", description = "适配方案管理", tags = {"适配方案"})
public class SchemeController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = AdapterSchemeService.BEAN_ID)
    private AdapterSchemeService adapterSchemeService;
    /**
     * 查询适配方案首页信息(get)
     * @param condition
     * @return
     * @throws Exception
     */
    @RequestMapping("/searchScheme")
    @ResponseBody
    public String searchSchemesList(String condition) throws Exception {
        String url = "/api/v1.0/adapter_center/scheme/list";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("condition", condition);
        String result = HttpClientUtil.doGet(host+url, params, username, password);
        return result;
    @RequestMapping(value = "/searchScheme")
    @ApiOperation(value = "获取方案列表", response = SchemeResultDetailModel.class, responseContainer = "List", notes = "获取方案列表")
    public List<SchemeResultDetailModel> searchScheme(
            @ApiParam(name = "condition", value = "查询条件:适配方案名称、适配方案版本名称")
            @RequestParam(value = "condition", required = false) String condition) {
        return adapterSchemeService.getSchemeList(condition);
    }
    /**
@ -42,14 +40,12 @@ public class SchemeController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/getForSchemeId")
    @ResponseBody
    public String getForStandardId(Integer schemeId) throws Exception {
        String url = "/api/v1.0/adapter_center/scheme";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("schemeId",schemeId);
        String result = HttpClientUtil.doGet( host+url,params,username,password);
        return result;
    @RequestMapping(value = "/getForSchemeId")
    @ApiOperation(value = "获取适配方案", response = AdapterSchemeModel.class, produces = "application/json", notes = "获取适配方案")
    public AdapterSchemeModel getForSchemeId(
            @ApiParam(name = "schemeId", value = "标准版本ID")
            @RequestParam(value = "schemeId") Integer schemeId) {
        return adapterSchemeService.get(schemeId);
    }
    /**
@ -58,14 +54,12 @@ public class SchemeController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/updateScheme")
    @ResponseBody
    public String updateScheme(String scheme) throws Exception {
        String url = "/api/v1.0/adapter_center/scheme";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("scheme",scheme);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/updateScheme")
    @ApiOperation(value = "修改适配方案", response = AdapterSchemeModel.class, produces = "application/json", notes = "修改适配方案")
    public AdapterSchemeModel updateScheme(
            @ApiParam(name = "scheme", value = "适配方案")
            @RequestParam(value = "scheme") String scheme) {
        return adapterSchemeService.update(scheme);
    }
    /**
@ -74,14 +68,12 @@ public class SchemeController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/addScheme")
    @ResponseBody
    public String addScheme(String scheme) throws Exception {
        String url = "/api/v1.0/adapter_center/scheme";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("scheme",scheme);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/addScheme")
    @ApiOperation(value = "保存适配方案", response = AdapterSchemeModel.class, produces = "application/json", notes = "保存适配方案")
    public AdapterSchemeModel addScheme(
            @ApiParam(name = "scheme", value = "适配方案信息")
            @RequestParam(value = "scheme") String scheme) {
        return adapterSchemeService.add(scheme);
    }
    /**
@ -90,14 +82,11 @@ public class SchemeController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/deleteScheme")
    @ResponseBody
    public String deleteScheme(Integer schemeId) throws Exception {
        String url = "/api/v1.0/adapter_center/scheme";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("schemeId",schemeId);
        String result = HttpClientUtil.doDelete(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/deleteScheme")
    @ApiOperation(value = "删除适配方案", produces = "application/json", notes = "删除适配方案")
    public void deleteScheme(
            @ApiParam(name = "schemeId", value = "适配方案ID")
            @RequestParam(value = "schemeId") Integer schemeId) {
        adapterSchemeService.delete(schemeId);
    }
}

+ 85 - 83
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/SchemeDatasetController.java

@ -1,29 +1,34 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.constrant.Result;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.constrant.TreeView;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import com.yihu.ehr.standard.model.AdapterDatasetModel;
import org.springframework.stereotype.Controller;
import com.yihu.ehr.standard.model.adapter.AdapterDatasetModel;
import com.yihu.ehr.standard.service.adapter.AdapterDatasetService;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("SchemeDatasetController")
@RequestMapping("/adapterCenter")
@Api(protocols = "https", value = "SchemeDatasetController", description = "适配数据集管理", tags = {"适配数据集"})
public class SchemeDatasetController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = AdapterDatasetService.BEAN_ID)
    private AdapterDatasetService datasetService;
    /**
     * 查询数据集列表信息(get)
     * @param adapterVersion
@ -34,23 +39,22 @@ public class SchemeDatasetController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/searchDatasetList")
    @ResponseBody
    public Result searchDatasetList(String adapterVersion,String condition,String order,Integer rows,Integer page) throws Exception {
        String url = "/api/v1.0/adapter_center/datasets/list";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("condition", condition);
        params.put("order", order);
        params.put("limit", rows);
        params.put("offset", page - 1);
    @RequestMapping(value = "/searchDatasetList")
    @ApiOperation(value = "获取数据集列表", response = Result.class, produces = "application/json", notes = "获取数据集列表")
    public Result getDatasetList(
            @ApiParam(name = "adapterVersion", value = "适配方案版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "condition", value = "查询条件:编码或名称")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        String resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        List<AdapterDatasetModel> dataSetModelList = jsonArrayToList(resultStr, AdapterDatasetModel.class);
        url = "/api/v1.0/adapter_center/datasets/totalCount";
        resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        Integer count = Integer.parseInt(resultStr);
        List<AdapterDatasetModel> dataSetModelList = datasetService.getDatasetList(AdapterDatasetModel.class, adapterVersion, condition, order, rows, page - 1);;
        Integer count = datasetService.getDatasetInt(AdapterDatasetModel.class, adapterVersion, condition);
        Result result = new Result();
        result.setDetailModelList(dataSetModelList);
        result.setTotalCount(count);
@ -58,71 +62,69 @@ public class SchemeDatasetController extends BaseController {
    }
    @RequestMapping("/getForDatasetId")
    @ResponseBody
    public String getForDatasetId(String adapterVersion, Integer datasetId) throws Exception {
        String url = "/api/v1.0/adapter_center/dataset";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("datasetId", datasetId);
        String result = HttpClientUtil.doGet(host+url,params,username,password);
        return result;
    @ApiOperation(value = "获取适配数据集", response = AdapterDatasetModel.class, produces = "application/json", notes = "获取适配数据集")
    public AdapterDatasetModel getForDatasetId(
            @ApiParam(name = "adapterVersion", value = "适配版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "datasetId", value = "适配数据集ID")
            @RequestParam(value = "datasetId") Integer datasetId) {
        AdapterVersion version = new AdapterVersion(adapterVersion);
        return (AdapterDatasetModel) datasetService.get(AdapterDatasetModel.class, version.getDataSetTableName(), datasetId, ErrorCode.GetDataSetListFailed);
    }
    @RequestMapping("/delDataset")
    @ResponseBody
    public String delDataset(String adapterVersion, Integer id) throws Exception {
        String url = "/api/v1.0/adapter_center/dataset";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("datasetId", id);
        String result = HttpClientUtil.doDelete(host+url,params,username,password);
        return result;
    @RequestMapping(value = "/delDataset")
    @ApiOperation(value = "删除数据集", produces = "application/json", notes = "删除适配数据集")
    public void delDataset(
            @ApiParam(name = "adapterVersion", value = "适配版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "datasetId", value = "适配数据集ID")
            @RequestParam(value = "datasetId") Integer datasetId) {
        datasetService.delete(adapterVersion, datasetId);
    }
    @RequestMapping("/updateDataset")
    @ResponseBody
    public String updateDataset(String adapterVersion, String dataset) throws Exception {
        String url = "/api/v1.0/adapter_center/dataset";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("dataset", dataset);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/updateDataset")
    @ApiOperation(value = "修改适配数据集", response = AdapterDatasetModel.class, produces = "application/json", notes = "修改适配数据集")
    public AdapterDatasetModel modify(
            @ApiParam(name = "adapterVersion", value = "适配版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "dataset", value = "数据集,JSON")
            @RequestParam(value = "dataset") String dataset) {
        return datasetService.modify(adapterVersion, dataset);
    }
    @RequestMapping("/addDataset")
    @ResponseBody
    public String addDataset(String adapterVersion, String dataset) throws Exception {
        String url = "/api/v1.0/adapter_center/dataset";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("dataset", dataset);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/addDataset")
    @ApiOperation(value = "保存适配数据集", response = AdapterDatasetModel.class, produces = "application/json", notes = "保存数据集")
    public AdapterDatasetModel add(
            @ApiParam(name = "adapterVersion", value = "适配版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "dataset", value = "数据集信息")
            @RequestParam(value = "dataset") String dataset) {
        return datasetService.add(adapterVersion, dataset);
    }
    @RequestMapping("/getAdapterDataset")
    @ResponseBody
    public String getAdapterDataset(String adapterVersion,String stdVersion) throws Exception {
        String url = "/api/v1.0/adapter_center/datasets/customization";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("stdVersion", stdVersion);
        String result = HttpClientUtil.doGet(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/getAdapterDataset")
    @ApiOperation(value = "获取定制数据集列表", response = TreeView.class, responseContainer = "List",produces = "application/json", notes = "获取数据集列表")
    public List<TreeView> getDatasetCustomize(
            @ApiParam(name = "adapterVersion", value = "适配版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion) {
        return datasetService.getDatasetCustomize(adapterVersion, stdVersion);
    }
    @RequestMapping(value = "/saveAdapterDataset",method = RequestMethod.POST)
    @ResponseBody
    public String saveAdapterDataset(Integer schemeId,String adapterVersion,String stdVersion,String datasetIdStr,String metaDataIdStr) throws Exception {
        String url = "/api/v1.0/adapter_center/datasets/customization";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("schemeId", schemeId);
        params.put("adapterVersion", adapterVersion);
        params.put("stdVersion", stdVersion);
        params.put("datasetIdStr", datasetIdStr.replaceAll("AD",""));
        params.put("metaDataIdStr", metaDataIdStr.replaceAll("AM",""));
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/saveAdapterDataset", method = RequestMethod.POST)
    @ApiOperation(value = "定制适配数据集", response = TreeView.class, responseContainer = "List",produces = "application/json", notes = "获取数据集列表")
    public boolean adapterDataSet(
            @ApiParam(name = "schemeId", value = "适配方案ID")
            @RequestParam(value = "schemeId") Integer schemeId,
            @ApiParam(name = "adapterVersion", value = "适配版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "datasetIdStr", value = "适配数据集信息")
            @RequestParam(value = "datasetIdStr") String datasetIdStr,
            @ApiParam(name = "metaDataIdStr", value = "适配数据元信息")
            @RequestParam(value = "metaDataIdStr") String metaDataIdStr) throws UnsupportedEncodingException {
        return datasetService.updateCustomize(schemeId, adapterVersion, stdVersion, datasetIdStr,metaDataIdStr);
    }
}

+ 62 - 63
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/SchemeDictController.java

@ -1,28 +1,31 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.constrant.Result;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import com.yihu.ehr.standard.model.AdapterDictModel;
import org.springframework.stereotype.Controller;
import com.yihu.ehr.standard.model.adapter.AdapterDictModel;
import com.yihu.ehr.standard.service.adapter.AdapterDictService;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("SchemeDictController")
@RequestMapping("/adapterCenter")
@Api(protocols = "https", value = "SchemeDictController", description = "适配字典管理", tags = {"适配字典"})
public class SchemeDictController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = AdapterDictService.BEAN_ID)
    private AdapterDictService dictService;
    /**
     * 查询字典列表信息(get)
     * @param adapterVersion
@ -33,71 +36,67 @@ public class SchemeDictController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/searchDictList")
    @ResponseBody
    public Result searchDictList(String adapterVersion,String condition,String order,Integer rows,Integer page) throws Exception {
        String url = "/api/v1.0/adapter_center/dicts/list";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("condition", condition);
        params.put("order", order);
        params.put("limit", rows);
        params.put("offset", page - 1);
    @RequestMapping(value = "/searchDictList")
    @ApiOperation(value = "获取字典列表", response = Result.class, produces = "application/json", notes = "获取字典列表")
    public Result searchDictList(
            @ApiParam(name = "adapterVersion", value = "适配标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "condition", value = "查询条件:编码或名称")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        List<AdapterDictModel> dictModelList = dictService.getDictList(AdapterDictModel.class, adapterVersion, condition, order, rows, page - 1);
        String resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        List<AdapterDictModel> dictModelList = jsonArrayToList(resultStr, AdapterDictModel.class);
        url = "/api/v1.0/adapter_center/dicts/totalCount";
        resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        Integer count = Integer.parseInt(resultStr);
        Integer count = dictService.getDictInt(AdapterDictModel.class, adapterVersion, condition);
        Result result = new Result();
        result.setDetailModelList(dictModelList);
        result.setTotalCount(count);
        return result;
    }
    @RequestMapping("/getForDictId")
    @ResponseBody
    public String getForDictId(String adapterVersion, Integer dictId) throws Exception {
        String url = "/api/v1.0/adapter_center/dict";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("dictId", dictId);
        String result = HttpClientUtil.doGet(host+url,params,username,password);
        return result;
    @RequestMapping(value = "/getForDictId")
    @ApiOperation(value = "获取字典", response = AdapterDictModel.class, produces = "application/json", notes = "获取字典")
    public AdapterDictModel get(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "dictId", value = "字典ID")
            @RequestParam(value = "dictId") Integer dictId) {
        AdapterVersion version = new AdapterVersion(adapterVersion);
        return (AdapterDictModel) dictService.get(AdapterDictModel.class, version.getDictTableName(), dictId, ErrorCode.GetDictFaild);
    }
    @RequestMapping("/delDict")
    @ResponseBody
    public String delDict(String adapterVersion, Integer id) throws Exception {
        String url = "/api/v1.0/adapter_center/dict";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("dictId", id);
        String result = HttpClientUtil.doDelete(host+url,params,username,password);
        return result;
    @RequestMapping(value = "/delDict")
    @ApiOperation(value = "删除字典", produces = "application/json", notes = "删除字典")
    public void delDict(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "dictId", value = "字典ID")
            @RequestParam(value = "dictId") Integer dictId) {
        dictService.delete(adapterVersion, dictId);
    }
    
    @RequestMapping("/updateDict")
    @ResponseBody
    public String updateDict(String adapterVersion, String dict) throws Exception {
        String url = "/api/v1.0/adapter_center/dict";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("dict", dict);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/updateDict")
    @ApiOperation(value = "修改字典", response = AdapterDictModel.class, produces = "application/json", notes = "修改字典")
    public AdapterDictModel updateDict(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "dict", value = "字典")
            @RequestParam(value = "dict") String dict) {
        return dictService.modify(adapterVersion, dict);
    }
    @RequestMapping("/addDict")
    @ResponseBody
    public String addDict(String adapterVersion, String dict) throws Exception {
        String url = "/api/v1.0/adapter_center/dict";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("dict", dict);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/addDict")
    @ApiOperation(value = "保存字典", response = AdapterDictModel.class, produces = "application/json", notes = "保存字典")
    public AdapterDictModel addDict(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "dict", value = "字典")
            @RequestParam(value = "dict") String dict) {
        return dictService.add(adapterVersion, dict);
    }
}

+ 73 - 72
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/SchemeDictEntryController.java

@ -1,28 +1,32 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.constrant.Result;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import com.yihu.ehr.standard.model.AdapterDictEntryResultDetailModel;
import org.springframework.stereotype.Controller;
import com.yihu.ehr.standard.model.adapter.AdapterDictentryModel;
import com.yihu.ehr.standard.model.adapter.resultModel.AdapterDictEntryResultDetailModel;
import com.yihu.ehr.standard.service.adapter.AdapterDictentryService;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("SchemeDictEntryController")
@RequestMapping("/adapterCenter")
@Api(protocols = "https", value = "SchemeDictEntryController", description = "适配字典项管理", tags = {"适配字典项"})
public class SchemeDictEntryController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = AdapterDictentryService.BEAN_ID)
    private AdapterDictentryService dictentryService;
    /**
     * 查询字典项列表信息(get)
     * @param adapterVersion
@ -33,82 +37,79 @@ public class SchemeDictEntryController extends BaseController {
     * @return
     * @throws Exception
     */
    @RequestMapping("/searchDictEntryList")
    @ResponseBody
    public Result searchDictEntryList(String adapterVersion,String condition,String order,Integer rows,Integer page) throws Exception {
        String url = "/api/v1.0/adapter_center/dictEntrys/list";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("condition", condition);
        params.put("order", order);
        params.put("limit", rows);
        params.put("offset", page - 1);
        String resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        List<AdapterDictEntryResultDetailModel> detailModelList = jsonArrayToList(resultStr, AdapterDictEntryResultDetailModel.class);
        url = "/api/v1.0/adapter_center/dictEntrys/totalCount";
        resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        Integer count = Integer.parseInt(resultStr);
    @RequestMapping(value = "/searchDictEntryList")
    @ApiOperation(value = "获取字典项列表", response = Result.class, produces = "application/json", notes = "获取字典项列表")
    public Result getDictEntryList(
            @ApiParam(name = "adapterVersion", value = "适配版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "condition", value = "查询条件")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        List<AdapterDictEntryResultDetailModel> detailModelList = dictentryService.getDictEntryList(AdapterDictentryModel.class, adapterVersion, condition, order, rows, page - 1);
        Integer count = dictentryService.getDictEntryInt(AdapterDictentryModel.class, adapterVersion, condition);
        Result result = new Result();
        result.setDetailModelList(detailModelList);
        result.setTotalCount(count);
        return result;
    }
    @RequestMapping("/getForDictEntryId")
    @ResponseBody
    public String getForDictEntryId(String adapterVersion, Integer dictId, Integer dictEntryId) throws Exception {
        String url = "/api/v1.0/adapter_center/dictEntry";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("dictId", dictId);
        params.put("dictEntryId", dictEntryId);
        String result = HttpClientUtil.doGet(host+url,params,username,password);
        return result;
    @RequestMapping(value = "/getForDictEntryId")
    @ApiOperation(value = "获取字典项", response = AdapterDictentryModel.class, produces = "application/json", notes = "获取字典项")
    public AdapterDictentryModel get(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "dictEntryId", value = "字典项ID")
            @RequestParam(value = "dictEntryId") Integer dictentryId) {
        AdapterVersion version = new AdapterVersion(adapterVersion);
        return (AdapterDictentryModel) dictentryService.get(AdapterDictentryModel.class, version.getDictEntryTableName(), dictentryId, ErrorCode.GetDictEntryFailed);
    }
    @RequestMapping("/updateDictEntry")
    @ResponseBody
    public String updateDictEntry(String adapterVersion, String dictEntry) throws Exception {
        String url = "/api/v1.0/adapter_center/dictEntry";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("dictEntry", dictEntry);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/updateDictEntry")
    @ApiOperation(value = "修改字典项", response = AdapterDictentryModel.class, produces = "application/json", notes = "修改字典项")
    public AdapterDictentryModel updateDictEntry(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "dictEntry", value = "字典项")
            @RequestParam(value = "dictEntry") String dictEntry) {
        return dictentryService.modify(adapterVersion, dictEntry);
    }
    @RequestMapping("/addDictEntry")
    @ResponseBody
    public String addDictEntry(String adapterVersion, String dictEntry) throws Exception {
        String url = "/api/v1.0/adapter_center/dictEntry";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("dictEntry", dictEntry);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @RequestMapping(value = "/addDictEntry")
    @ApiOperation(value = "保存字典项", response = AdapterDictentryModel.class, produces = "application/json", notes = "保存字典项")
    public AdapterDictentryModel add(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "dictEntry", value = "字典项")
            @RequestParam(value = "dictEntry") String dictEntry) {
        return dictentryService.add(adapterVersion, dictEntry);
    }
    @RequestMapping("/updateDictEntrys")
    @ResponseBody
    public String updateDictEntrys(String adapterVersion, String list) throws Exception {
        String url = "/api/v1.0/adapter_center/dictEntrys";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("list", list);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @ApiOperation(value = "保存字典项", response = AdapterDictEntryResultDetailModel.class, responseContainer = "list", produces = "application/json", notes = "保存数据元")
    public List<AdapterDictEntryResultDetailModel> updateDictEntrys(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "list", value = "字典项列表")
            @RequestParam(value = "list") String list) {
        return  dictentryService.updateDictEntrys(adapterVersion, list);
    }
    @RequestMapping("/delDictEntry")
    @ResponseBody
    public boolean delDictEntry(String adapterVersion, String list) throws Exception {
        String url = "/api/v1.0/adapter_center/dictEntry/single";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("list", list);
        HttpClientUtil.doDelete(host+url,params,username,password);
        return true;
    @ApiOperation(value = "删除字典项", response = AdapterDictentryModel.class, produces = "application/json", notes = "删除字典项,若字典项表为空管理字典清掉")
    public void delete(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "dictEntryId", value = "字典项ID")
            @RequestParam(value = "dictEntryId") Integer dictEntryId,
            @ApiParam(name = "stdDictId", value = "标准字典ID")
            @RequestParam(value = "stdDictId") Integer stdDictId,
            @ApiParam(name = "adapterDictId", value = "适配字典ID")
            @RequestParam(value = "adapterDictId") Integer adapterDictId) {
        dictentryService.deleteMultiple(adapterVersion, dictEntryId, stdDictId, adapterDictId);
    }
}

+ 69 - 69
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/SchemeMetadataController.java

@ -1,28 +1,31 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.constrant.Result;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import com.yihu.ehr.standard.model.ApiMetadataResultDetailModel;
import org.springframework.stereotype.Controller;
import com.yihu.ehr.standard.model.adapter.AdapterMetadataModel;
import com.yihu.ehr.standard.model.adapter.resultModel.ApiMetadataResultDetailModel;
import com.yihu.ehr.standard.service.adapter.AdapterMetadataService;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("SchemeMetadataController")
@RequestMapping("/adapterCenter")
@Api(protocols = "https", value = "SchemeMetadataController", description = "适配字典管理", tags = {"适配字典"})
public class SchemeMetadataController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = AdapterMetadataService.BEAN_ID)
    private AdapterMetadataService metadataService;
    /**
     * 查询数据元列表信息(get)
     * @param adapterVersion
@ -34,22 +37,20 @@ public class SchemeMetadataController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/searchMetadataList")
    @ResponseBody
    public Result searchMetadataList(String adapterVersion,String condition,String order,Integer rows,Integer page) throws Exception {
        String url = "/api/v1.0/adapter_center/metadatas/list";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("condition", condition);
        params.put("order", order);
        params.put("limit", rows);
        params.put("offset", page - 1);
        String resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        List<ApiMetadataResultDetailModel> metadataModelList = jsonArrayToList(resultStr, ApiMetadataResultDetailModel.class);
        url = "/api/v1.0/adapter_center/metadatas/totalCount";
        resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        Integer count = Integer.parseInt(resultStr);
    @ApiOperation(value = "获取数据元列表", response = Result.class, produces = "application/json", notes = "获取数据元列表")
    public Result getMetadataList(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "condition", value = "查询条件")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        List<ApiMetadataResultDetailModel> metadataModelList = metadataService.getMetadataList(AdapterMetadataModel.class, adapterVersion, condition, order, rows, page - 1);
        Integer count = metadataService.getMetadataCount(AdapterMetadataModel.class, adapterVersion, condition);
        Result result = new Result();
        result.setDetailModelList(metadataModelList);
        result.setTotalCount(count);
@ -57,58 +58,57 @@ public class SchemeMetadataController extends BaseController {
    }
    @RequestMapping("/getForMetadataId")
    @ResponseBody
    public String getForMetadataId(String adapterVersion, Integer datasetId, Integer metadataId) throws Exception {
        String url = "/api/v1.0/adapter_center/metadata";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("datasetId", datasetId);
        params.put("metadataId", metadataId);
        String result = HttpClientUtil.doGet(host+url,params,username,password);
        return result;
    @ApiOperation(value = "获取数据元", response = AdapterMetadataModel.class, produces = "application/json", notes = "获取数据元")
    public AdapterMetadataModel get(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "metadataId", value = "数据元ID")
            @RequestParam(value = "metadataId") Integer metadataId) {
        AdapterVersion version = new AdapterVersion(adapterVersion);
        return (AdapterMetadataModel) metadataService.get(AdapterMetadataModel.class, version.getMetaDataTableName(), metadataId, ErrorCode.GetMetaDataFailed);
    }
    @RequestMapping("/updateMetadata")
    @ResponseBody
    public String updateMetadata(String adapterVersion, String metadata) throws Exception {
        String url = "/api/v1.0/adapter_center/metadata";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("metadata", metadata);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @ApiOperation(value = "修改数据元", response = AdapterMetadataModel.class, produces = "application/json", notes = "修改数据元")
    public AdapterMetadataModel updateMetadata(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "metadata", value = "数据元")
            @RequestParam(value = "metadata") String metadata) {
        return metadataService.modify(adapterVersion, metadata);
    }
    @RequestMapping("/addMetadata")
    @ResponseBody
    public String addMetadata(String adapterVersion, String metadata) throws Exception {
        String url = "/api/v1.0/adapter_center/metadata";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("metadata", metadata);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @ApiOperation(value = "保存数据元", response = AdapterMetadataModel.class, produces = "application/json", notes = "保存数据元")
    public AdapterMetadataModel addMetadata(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "metadata", value = "数据元")
            @RequestParam(value = "metadata") String metadata) {
        return metadataService.add(adapterVersion, metadata);
    }
    @RequestMapping("/updateMetadatas")
    @ResponseBody
    public String updateMetadatas(String adapterVersion, String list) throws Exception {
        String url = "/api/v1.0/adapter_center/metadatas";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("list", list);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @ApiOperation(value = "保存数据元", response = ApiMetadataResultDetailModel.class, responseContainer = "list", produces = "application/json", notes = "保存数据元")
    public List<ApiMetadataResultDetailModel> updateMetadatas(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "list", value = "数据元列表")
            @RequestParam(value = "list") String list) {
        return metadataService.updateMetadatas(adapterVersion, list);
    }
    @RequestMapping("/delMetadata")
    @ResponseBody
    public boolean delDictEntry(String adapterVersion, String list) throws Exception {
        String url = "/api/v1.0/adapter_center/metadata/single";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("adapterVersion", adapterVersion);
        params.put("list", list);
        HttpClientUtil.doDelete(host+url,params,username,password);
        return true;
    @ApiOperation(value = "删除数据元", produces = "application/json", notes = "删除数据元")
    public void delete(
            @ApiParam(name = "adapterVersion", value = "标准版本号")
            @RequestParam(value = "adapterVersion") String adapterVersion,
            @ApiParam(name = "metadataId", value = "数据元ID")
            @RequestParam(value = "metadataId") Integer metadataId,
            @ApiParam(name = "stdDatasetId", value = "标准数据集ID")
            @RequestParam(value = "stdDatasetId") Integer stdDatasetId,
            @ApiParam(name = "adapterDatasetId", value = "适配数据集ID")
            @RequestParam(value = "adapterDatasetId") Integer adapterDatasetId) {
        metadataService.deleteMultiple(adapterVersion, metadataId, stdDatasetId, adapterDatasetId);
    }
}

+ 39 - 51
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/SchemeVersionController.java

@ -1,25 +1,23 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import org.springframework.stereotype.Controller;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeVersionModel;
import com.yihu.ehr.standard.service.adapter.AdapterSchemeVersionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("SchemeVersionController")
@RequestMapping("/adapterCenter")
@Api(protocols = "https", value = "SchemeVersionController", description = "适配版本管理", tags = {"适配版本"})
public class SchemeVersionController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = AdapterSchemeVersionService.BEAN_ID)
    private AdapterSchemeVersionService adapterSchemeVersion;
    /**
     * 根据版本id获取适配方案信息(get)
     * @param versionId
@ -27,13 +25,11 @@ public class SchemeVersionController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/getForVersionId")
    @ResponseBody
    public String getForVersionId(Integer versionId) throws Exception {
        String url = "/api/v1.0/adapter_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("versionId",versionId);
        String result = HttpClientUtil.doGet(host + url, params, username, password);
        return result;
    @ApiOperation(value = "获取适配版本", response = AdapterSchemeVersionModel.class, produces = "application/json", notes = "获取适配版本")
    public AdapterSchemeVersionModel get(
            @ApiParam(name = "versionId", value = "适配版本ID")
            @RequestParam(value = "versionId") Integer versionId) {
        return adapterSchemeVersion.get(versionId);
    }
    /**
@ -43,13 +39,11 @@ public class SchemeVersionController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/addVersion")
    @ResponseBody
    public String addVersion(String version) throws Exception {
        String url = "/api/v1.0/adapter_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("version",version);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @ApiOperation(value = "保存适配版本", response = AdapterSchemeVersionModel.class, produces = "application/json", notes = "保存适配版本")
    public AdapterSchemeVersionModel add(
            @ApiParam(name = "version", value = "适配版本信息")
            @RequestParam(value = "version") String version) {
        return adapterSchemeVersion.add(version);
    }
    /**
@ -59,13 +53,11 @@ public class SchemeVersionController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/updateVersion")
    @ResponseBody
    public String updateVersion(String version) throws Exception {
        String url = "/api/v1.0/adapter_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("version",version);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @ApiOperation(value = "修改适配版本", response = AdapterSchemeVersionModel.class, produces = "application/json", notes = "修改适配版本")
    public AdapterSchemeVersionModel modify(
            @ApiParam(name = "version", value = "标准版本")
            @RequestParam(value = "version") String version) {
        return adapterSchemeVersion.update(version);
    }
    /**
@ -75,14 +67,13 @@ public class SchemeVersionController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/publishVersion")
    @ResponseBody
    public String publishVersion(Integer versionId, String publisher) throws Exception {
        String url = "/api/v1.0/adapter_center/version/publish";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("versionId", versionId);
        params.put("publisher", publisher);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @ApiOperation(value = "发布适配版本", response = AdapterSchemeVersionModel.class, produces = "application/json", notes = "发布适配版本")
    public AdapterSchemeVersionModel publish(
            @ApiParam(name = "versionId", value = "适配版本ID")
            @RequestParam(value = "versionId") Integer versionId,
            @ApiParam(name = "publisher", value = "发布者")
            @RequestParam(value = "publisher", required = false) String publisher) {
        return adapterSchemeVersion.publish(versionId, publisher);
    }
    /**
@ -92,13 +83,10 @@ public class SchemeVersionController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/deleteVersion")
    @ResponseBody
    public String deleteVersion(Integer versionId) throws Exception {
        String url = "/api/v1.0/adapter_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("versionId",versionId);
        String result = HttpClientUtil.doDelete(host + url, params, username, password);
        return result;
    @ApiOperation(value = "删除版本", produces = "application/json", notes = "删除版本")
    public void delete(
            @ApiParam(name = "versionId", value = "标准版本ID")
            @RequestParam(value = "versionId") Integer versionId) {
        adapterSchemeVersion.delete(versionId);
    }
}

+ 44 - 56
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StandardController.java

@ -1,26 +1,26 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import com.yihu.ehr.standard.model.StandardResultDetailModel;
import org.springframework.stereotype.Controller;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.standard.model.standard.StandardModel;
import com.yihu.ehr.standard.model.standard.resultModel.StandardResultDetailModel;
import com.yihu.ehr.standard.service.standard.StandardService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("StandardController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "StandardController", description = "标准管理", tags = {"标准"})
public class StandardController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = StandardService.BEAN_ID)
    private StandardService standardService;
    /**
     * 查询集成标准首页信息(get)
@ -29,13 +29,11 @@ public class StandardController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/searchStandard")
    @ResponseBody
    public String searchStandard(String condition) throws Exception {
        String url = "/api/v1.0/standard_center/standards/list";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("condition", condition);
        String result = HttpClientUtil.doGet(host + url, params, username, password);
        return result;
    @ApiOperation(value = "获取标准列表", response = StandardResultDetailModel.class, responseContainer = "List", notes = "获取标准列表")
    public List<StandardResultDetailModel> searchStandard(
            @ApiParam(name = "condition", value = "查询条件name:厂商、标准、标准版本名称,标准类别type:0为集成标准,1为应用标准")
            @RequestParam(value = "condition", required = false) String condition) {
        return standardService.getStandardList(condition);
    }
    /**
@ -44,12 +42,11 @@ public class StandardController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/getSysParamList")
    @ResponseBody
    public String getSysParamList() throws Exception {
        String url = "/api/v1.0/standard_center/standards/sysparam";
        Map<String, Object> params = new HashMap<String, Object>();
        String result = HttpClientUtil.doGet(host + url, params, username, password);
        return result;
    @ApiOperation(value = "获取集成标准系统参数", response = String.class, notes = "获取集成标准系统参数")
    public String getSysParamList() {
        List<Object[]> list = standardService.getSysParamList();
        String code = StringUtil.toString(list.get(0)[0]);
        return code;
    }
@ -60,13 +57,11 @@ public class StandardController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/getForStandardId")
    @ResponseBody
    public String getForStandardId(Integer standardId) throws Exception {
        String url = "/api/v1.0/standard_center/standard";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("standardId",standardId);
        String result = HttpClientUtil.doGet( host+url,params,username,password);
        return result;
    @ApiOperation(value = "获取标准", response = StandardModel.class, produces = "application/json", notes = "获取标准")
    public StandardModel getForStandardId(
            @ApiParam(name = "standardId", value = "标准ID")
            @RequestParam(value = "standardId") Integer standardId){
        return standardService.get(standardId);
    }
    /**
@ -76,13 +71,11 @@ public class StandardController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/updateStandard")
    @ResponseBody
    public String updateStandard(String standard) throws Exception {
        String url = "/api/v1.0/standard_center/standard";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("standard",standard);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @ApiOperation(value = "修改标准", response = StandardModel.class, produces = "application/json", notes = "修改标准")
    public StandardModel modify(
            @ApiParam(name = "standard", value = "标准基本信息")
            @RequestParam(value = "standard") String standard) {
        return standardService.update(standard);
    }
    /**
@ -92,13 +85,11 @@ public class StandardController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/addStandard")
    @ResponseBody
    public String addStandard(String standard) throws Exception {
        String url = "/api/v1.0/standard_center/standard";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("standard",standard);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @ApiOperation(value = "保存标准", response = StandardModel.class, produces = "application/json", notes = "保存标准")
    public StandardModel add(
            @ApiParam(name = "standard", value = "标准基本信息")
            @RequestParam(value = "standard") String standard) {
        return (StandardModel) standardService.add(standard);
    }
    /**
@ -108,13 +99,10 @@ public class StandardController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/deleteStandard")
    @ResponseBody
    public String deleteStandard(Integer standardId) throws Exception {
        String url = "/api/v1.0/standard_center/standard";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("standardId",standardId);
        String result = HttpClientUtil.doDelete(host + url, params, username, password);
        return result;
    @ApiOperation(value = "删除标准", produces = "application/json", notes = "删除标准")
    public void delete(
            @ApiParam(name = "standardId", value = "标准ID")
            @RequestParam(value = "standardId") Integer standardId) {
        standardService.delete(standardId);
    }
}

+ 57 - 61
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StandardVersionController.java

@ -2,30 +2,29 @@ package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.model.DictItem;
import com.yihu.ehr.framework.model.DictionaryResult;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import com.yihu.ehr.standard.model.standard.StandardVersionModel;
import com.yihu.ehr.standard.service.standard.StandardVersionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("StandardVersionController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "StandardVersionController", description = "标准版本管理", tags = {"标准版本"})
public class StandardVersionController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = StandardVersionService.BEAN_ID)
    private StandardVersionService standardVersionService;
    /**
     * 根据版本id获取标准版本信息(get)
     * @param versionId
@ -33,13 +32,11 @@ public class StandardVersionController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/getForVersionId")
    @ResponseBody
    public String getForVersionId(String versionId) throws Exception {
        String url = "/api/v1.0/standard_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("versionId",Integer.parseInt(versionId));
        String result = HttpClientUtil.doGet(host + url, params, username, password);
        return result;
    @ApiOperation(value = "获取标准版本", response = StandardVersionModel.class, produces = "application/json", notes = "获取标准版本")
    public StandardVersionModel getForVersionId(
            @ApiParam(name = "versionId", value = "标准版本ID")
            @RequestParam(value = "versionId") Integer versionId) {
        return standardVersionService.get(versionId);
    }
    /**
@ -49,13 +46,11 @@ public class StandardVersionController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/addVersion")
    @ResponseBody
    public String addVersion(String version) throws Exception {
        String url = "/api/v1.0/standard_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("version",version);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @ApiOperation(value = "保存标准版本", response = StandardVersionModel.class, produces = "application/json", notes = "保存标准版本")
    public StandardVersionModel addVersion(
            @ApiParam(name = "version", value = "标准版本信息")
            @RequestParam(value = "version") String version) {
        return (StandardVersionModel) standardVersionService.add(version);
    }
    /**
@ -65,13 +60,11 @@ public class StandardVersionController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/updateVersion")
    @ResponseBody
    public String updateVersion(String version) throws Exception {
        String url = "/api/v1.0/standard_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("version",version);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @ApiOperation(value = "修改版本", response = StandardVersionModel.class, produces = "application/json", notes = "修改版本")
    public StandardVersionModel updateVersion(
            @ApiParam(name = "version", value = "标准版本")
            @RequestParam(value = "version") String version) {
        return standardVersionService.update(version);
    }
    /**
@ -82,14 +75,13 @@ public class StandardVersionController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/publishVersion")
    @ResponseBody
    public String publishVersion(Integer versionId,String publisher) throws Exception {
        String url = "/api/v1.0/standard_center/version/publish";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("versionId",versionId);
        params.put("publisher",publisher);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @ApiOperation(value = "发布版本", response = StandardVersionModel.class, produces = "application/json", notes = "发布版本")
    public StandardVersionModel publish(
            @ApiParam(name = "versionId", value = "标准版本ID")
            @RequestParam(value = "versionId") Integer versionId,
            @ApiParam(name = "publisher", value = "发布者")
            @RequestParam(value = "publisher") String publisher) {
        return standardVersionService.publish(versionId, publisher);
    }
    /**
@ -99,14 +91,13 @@ public class StandardVersionController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/deleteVersion")
    @ResponseBody
    public String deleteVersion(Integer versionId,String version) throws Exception {
        String url = "/api/v1.0/standard_center/version";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("versionId",versionId);
        params.put("version",version);
        String result = HttpClientUtil.doDelete(host + url, params, username, password);
        return result;
    @ApiOperation(value = "删除版本", produces = "application/json", notes = "删除版本")
    public void delete(
            @ApiParam(name = "versionId", value = "标准版本ID")
            @RequestParam(value = "versionId") Integer versionId,
            @ApiParam(name = "version", value = "标准版本值")
            @RequestParam(value = "version") String version) {
        standardVersionService.delete(versionId,version);
    }
    /**
@ -116,24 +107,29 @@ public class StandardVersionController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/getVersions")
    @ResponseBody
    public DictionaryResult getVersions(Integer standardId) throws Exception {
        String url = "/api/v1.0/standard_center/versions";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("standardId",standardId);
        String result = HttpClientUtil.doGet(host + url, params, username, password);
        JSONArray array = JSONArray.fromObject(result);
    @ApiOperation(value = "获取标准版本列表", response = DictionaryResult.class, produces = "application/json", notes = "获取标准版本列表")
    public DictionaryResult getVersions(
            @ApiParam(name = "standardId", value = "标准ID")
            @RequestParam(value = "standardId") Integer standardId,
            @ApiParam(name = "condition", value = "Must be Json")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Must be Json")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        List<StandardVersionModel> standardVersionModelList = standardVersionService.getList(standardId, condition, order, rows, page - 1);
        DictionaryResult dictionaryResult = new DictionaryResult();
        List<DictItem> detailModelList = new ArrayList<DictItem>();
        DictItem item = new DictItem();
        item.setCode("");
        item.setValue("-无-");
        detailModelList.add(item);
        for(int i = 0; i < array.size(); i++){
            JSONObject jsonObject = array.getJSONObject(i);
        for (StandardVersionModel standardVersionModel : standardVersionModelList) {
            DictItem items = new DictItem();
            String  id = (String) jsonObject.get("version");
            String name = (String)jsonObject.get("name");
            String  id = standardVersionModel.getVersion();
            String name = standardVersionModel.getName();
            items.setCode(id.toString());
            items.setValue(name);
            detailModelList.add(items);

+ 70 - 70
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StdDatasetController.java

@ -1,17 +1,20 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.constrant.Result;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.standard.model.Select2;
import com.yihu.ehr.standard.model.StdDataSetModel;
import com.yihu.ehr.standard.model.standard.StdDataSetModel;
import com.yihu.ehr.standard.service.standard.StdDatasetService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -19,13 +22,12 @@ import java.util.Map;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("StdDatasetController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "StdDatasetController", description = "标准数据集管理", tags = {"标准数据集"})
public class StdDatasetController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = StdDatasetService.BEAN_ID)
    private StdDatasetService stdDatasetService;
    /**
     * 查询数据集列表信息(get)
     * @param stdVersion
@ -37,22 +39,20 @@ public class StdDatasetController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/searchDatasetList")
    @ResponseBody
    public Result searchDatasetList(String stdVersion,String condition,String order,Integer rows,Integer page) throws Exception {
        String url = "/api/v1.0/standard_center/datasets/list";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("condition", condition);
        params.put("order", order);
        params.put("limit", rows);
        params.put("offset", page - 1);
        String resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        List<StdDataSetModel> dataSetModelList = jsonArrayToList(resultStr, StdDataSetModel.class);
        url = "/api/v1.0/standard_center/datasets/totalCount";
        resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        Integer count = Integer.parseInt(resultStr);
    @ApiOperation(value = "获取数据集列表", response = Result.class, produces = "application/json", notes = "获取数据集列表")
    public Result searchDatasetList(
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "condition", value = "查询条件:编码或名称")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        List<StdDataSetModel> dataSetModelList = stdDatasetService.getDatasetList(StdDataSetModel.class, stdVersion, condition, order, rows, page - 1);
        Integer count = stdDatasetService.getDatasetInt(StdDataSetModel.class, stdVersion, condition);
        Result result = new Result();
        result.setDetailModelList(dataSetModelList);
        result.setTotalCount(count);
@ -60,52 +60,60 @@ public class StdDatasetController extends BaseController {
    }
    @RequestMapping("/getForDatasetId")
    @ResponseBody
    public String getForDatasetId(String stdVersion, Integer datasetId) throws Exception {
        String url = "/api/v1.0/standard_center/dataset";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("datasetId", datasetId);
        String result = HttpClientUtil.doGet(host+url,params,username,password);
        return result;
    @ApiOperation(value = "获取数据集", response = StdDataSetModel.class, produces = "application/json", notes = "获取数据集")
    public StdDataSetModel getForDatasetId(
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "datasetId", value = "数据集ID")
            @RequestParam(value = "datasetId") Integer datasetId) {
        return stdDatasetService.get(stdVersion, datasetId);
    }
    @RequestMapping("/delDataset")
    @ResponseBody
    public String delDataset(String stdVersion, Integer id) throws Exception {
        String url = "/api/v1.0/standard_center/dataset";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("datasetId", id);
        String result = HttpClientUtil.doDelete(host+url,params,username,password);
        return result;
    @ApiOperation(value = "删除数据集", produces = "application/json", notes = "删除数据集")
    public void delDataset(
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "datasetId", value = "数据集ID")
            @RequestParam(value = "datasetId") Integer datasetId) {
        stdDatasetService.delete(stdVersion, datasetId);
    }
    @RequestMapping("/updateDataset")
    @ResponseBody
    public String updateDataset(String stdVersion, String dataset) throws Exception {
        String url = "/api/v1.0/standard_center/dataset";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("dataset", dataset);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @ApiOperation(value = "修改数据集", response = StdDataSetModel.class, produces = "application/json", notes = "修改数据集")
    public StdDataSetModel updateDataset(
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "dataset", value = "数据集")
            @RequestParam(value = "dataset") String dataset) {
        return (StdDataSetModel) stdDatasetService.update(stdVersion, dataset);
    }
    @RequestMapping("/addDataset")
    @ResponseBody
    public String addDataset(String stdVersion, String dataset) throws Exception {
        String url = "/api/v1.0/standard_center/dataset";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("dataset", dataset);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @ApiOperation(value = "保存数据集", response = StdDataSetModel.class, produces = "application/json", notes = "保存数据集")
    public StdDataSetModel add(
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "dataset", value = "数据集")
            @RequestParam(value = "dataset") String dataset) {
        return stdDatasetService.add(stdVersion, dataset);
    }
    @RequestMapping(value="/getDatasetCodeValues")
    @ResponseBody
    public String getDatasetCodeValues(String stdVersion, String q,String initVal, String order, Integer rows) throws Exception {
    @ApiOperation(value = "获取数据集下拉框信息", response = Result.class, produces = "application/json", notes = "获取机构数据元下拉框信息")
    public Result getSelectList(
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "q", value = "数据集名称或编码", required = false)
            @RequestParam(value = "q", required = false) String q,
            @ApiParam(name = "initVal", value = "初始化数据集名称或编码", required = false)
            @RequestParam(value = "initVal", required = false) String initVal,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        Map<String,String> condition = new HashMap<String,String>();
        if(!StringUtil.isEmpty(q)){
            condition.put("name", q);
@ -115,17 +123,9 @@ public class StdDatasetController extends BaseController {
            condition.put("initVal", initVal);//默认值
        }
        JSONObject jsonpObject = JSONObject.fromObject(condition);
        String url = "/api/v1.0/standard_center/datasets/selectList";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("condition", jsonpObject.toString());
        params.put("order", order);
        params.put("limit", rows);
        params.put("offset", 0);
        String resultStr = HttpClientUtil.doGet(host+url,params,username,password);
        List<Select2> detailModelList = jsonArrayToList(resultStr, Select2.class);
        List<Select2> detailModelList = stdDatasetService.getDatasetSelectList(stdVersion, jsonpObject.toString(), order, rows, 0);
        Result result = getResult(detailModelList, detailModelList.size(), 1, rows);
        return result.toJson();
        return result;
    }
}

+ 71 - 69
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StdDictController.java

@ -1,17 +1,20 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.constrant.Result;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.standard.model.Select2;
import com.yihu.ehr.standard.model.StdDictionaryModel;
import com.yihu.ehr.standard.model.standard.StdDictionaryModel;
import com.yihu.ehr.standard.service.standard.StdDictService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -19,13 +22,12 @@ import java.util.Map;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("StdDictController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "StdDictController", description = "标准字典管理", tags = {"标准字典"})
public class StdDictController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = StdDictService.BEAN_ID)
    StdDictService stdDictService;
    /**
     * 查询字典列表信息(get)
     * @param stdVersion
@ -37,22 +39,20 @@ public class StdDictController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/searchDictList")
    @ResponseBody
    public Result searchDictList(String stdVersion,String condition,String order,Integer rows,Integer page) throws Exception {
        String url = "/api/v1.0/standard_center/dicts/list";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("condition", condition);
        params.put("order", order);
        params.put("limit", rows);
        params.put("offset", page - 1);
        String resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        List<StdDictionaryModel> dictModelList = jsonArrayToList(resultStr, StdDictionaryModel.class);
        url = "/api/v1.0/standard_center/dicts/totalCount";
        resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        Integer count = Integer.parseInt(resultStr);
    @ApiOperation(value = "获取字典列表", response = Result.class, produces = "application/json", notes = "获取字典列表")
    public Result getDictList(
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "condition", value = "查询条件:编码或名称")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        List<StdDictionaryModel> dictModelList = stdDictService.getDictList(StdDictionaryModel.class, stdVersion, condition, order, rows, page - 1);
        Integer count = stdDictService.getDictInt(StdDictionaryModel.class, stdVersion, condition);
        Result result = new Result();
        result.setDetailModelList(dictModelList);
        result.setTotalCount(count);
@ -60,52 +60,61 @@ public class StdDictController extends BaseController {
    }
    @RequestMapping("/getForDictId")
    @ResponseBody
    public String getForDictId(String stdVersion, Integer dictId) throws Exception {
        String url = "/api/v1.0/standard_center/dict";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("dictId", dictId);
        String result = HttpClientUtil.doGet(host+url,params,username,password);
        return result;
    @ApiOperation(value = "获取字典", response = StdDictionaryModel.class, produces = "application/json", notes = "获取字典")
    public StdDictionaryModel get(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "dictId", value = "字典ID")
            @RequestParam(value = "dictId") Integer dictId) {
        return stdDictService.get(stdVersion, dictId);
    }
    @RequestMapping("/delDict")
    @ResponseBody
    public boolean delDict(String stdVersion, Integer id) throws Exception {
        String url = "/api/v1.0/standard_center/dict";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("dictId", id);
         HttpClientUtil.doDelete(host+url,params,username,password);
        return true;
    @ApiOperation(value = "删除字典", produces = "application/json", notes = "删除字典")
    public void delete(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "dictId", value = "字典ID")
            @RequestParam(value = "dictId") Integer dictId) {
        stdDictService.delete(stdVersion, dictId);
    }
    
    @RequestMapping("/updateDict")
    @ResponseBody
    public String updateDict(String stdVersion, String dict) throws Exception {
        String url = "/api/v1.0/standard_center/dict";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("dict", dict);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @ApiOperation(value = "修改字典", response = StdDictionaryModel.class, produces = "application/json", notes = "修改字典")
    public StdDictionaryModel modify(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "dict", value = "字典")
            @RequestParam(value = "dict") String dict) {
        return (StdDictionaryModel) stdDictService.update(stdVersion, dict);
    }
    @RequestMapping("/addDict")
    @ResponseBody
    public String addDict(String stdVersion, String dict) throws Exception {
        String url = "/api/v1.0/standard_center/dict";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("dict", dict);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @ApiOperation(value = "保存字典", response = StdDictionaryModel.class, produces = "application/json", notes = "保存字典")
    public StdDictionaryModel addDict(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "dict", value = "字典")
            @RequestParam(value = "dict") String dict) {
        return (StdDictionaryModel) stdDictService.add(stdVersion, dict);
    }
    @RequestMapping(value="/getDictCodeValues")
    @ResponseBody
    public String getDictCodeValues(String stdVersion, String q, String initVal, String order, Integer rows) throws Exception {
    @ApiOperation(value = "获取字典下拉框信息", response = String.class, produces = "application/json", notes = "获取字典下拉框信息")
    public String getSelectList(
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "q", value = "数据集名称或编码", required = false)
            @RequestParam(value = "q", required = false) String q,
            @ApiParam(name = "initVal", value = "初始化数据集名称或编码", required = false)
            @RequestParam(value = "initVal", required = false) String initVal,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        Map<String,String> condition = new HashMap<String,String>();
        if(!StringUtil.isEmpty(q)){
            condition.put("name", q);
@ -114,15 +123,8 @@ public class StdDictController extends BaseController {
            condition.put("initVal", initVal);//默认值
        }
        JSONObject jsonpObject = JSONObject.fromObject(condition);
        String url = "/api/v1.0/standard_center/dicts/selectList";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("condition", jsonpObject.toString());
        params.put("order", order);
        params.put("limit", rows);
        params.put("offset", 0);
        String resultStr = HttpClientUtil.doGet(host+url,params,username,password);
        List<Select2> detailModelList = jsonArrayToList(resultStr, Select2.class);
        List<StdDictionaryModel> dictList = stdDictService.getDictList(StdDictionaryModel.class, stdVersion, jsonpObject.toString(), order, rows, 0);
        List<Select2> detailModelList = stdDictService.getDictSelectList(dictList);
        Result result = getResult(detailModelList, detailModelList.size(), 1, rows);
        return result.toJson();

+ 76 - 74
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StdDictEntryController.java

@ -1,17 +1,20 @@
package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.constrant.Result;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.standard.model.Select2;
import com.yihu.ehr.standard.model.StdDictionaryEntryModel;
import com.yihu.ehr.standard.model.standard.StdDictionaryEntryModel;
import com.yihu.ehr.standard.service.standard.StdDictEntryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -19,13 +22,12 @@ import java.util.Map;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("StdDictEntryController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "StdDictEntryController", description = "标准字典项管理", tags = {"标准字典项"})
public class StdDictEntryController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = StdDictEntryService.BEAN_ID)
    StdDictEntryService stdDictEntryService;
    /**
     * 查询字典项列表信息(get)
     * @param stdVersion
@ -38,80 +40,89 @@ public class StdDictEntryController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/searchDictEntryList")
    @ResponseBody
    public Result searchDictEntryList(String stdVersion,Integer dictId,String condition,String order,Integer rows,Integer page) throws Exception {
    @ApiOperation(value = "获取字典项列表", response = StdDictionaryEntryModel.class, responseContainer = "List",produces = "application/json", notes = "获取字典项列表")
    public Result getDictEntryList(
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "dictId", value = "字典ID")
            @RequestParam(value = "dictId") Integer dictId,
            @ApiParam(name = "condition", value = "查询条件")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        Result result = new Result();
        if(dictId==null){//没有字典数据时,返回空数据
            return result;
        }
        String url = "/api/v1.0/standard_center/dictEntrys/list";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("dictId", dictId);
        params.put("condition", condition);
        params.put("order", order);
        params.put("limit", rows);
        params.put("offset", page - 1);
        String resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        List<StdDictionaryEntryModel> detailModelList = jsonArrayToList(resultStr, StdDictionaryEntryModel.class);
        url = "/api/v1.0/standard_center/dictEntrys/totalCount";
        resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        Integer count = Integer.parseInt(resultStr);
        List<StdDictionaryEntryModel> detailModelList = stdDictEntryService.getDictEntryList(StdDictionaryEntryModel.class, stdVersion, dictId, condition, order, rows, page - 1);
        Integer count = stdDictEntryService.getDictEntryInt(StdDictionaryEntryModel.class, stdVersion, dictId, condition, order, rows, page - 1);
        result.setDetailModelList(detailModelList);
        result.setTotalCount(count);
        return result;
    }
    @RequestMapping("/getForDictEntryId")
    @ResponseBody
    public String getForDictEntryId(String stdVersion, Integer dictId, Integer dictEntryId) throws Exception {
        String url = "/api/v1.0/standard_center/dictEntry";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("dictId", dictId);
        params.put("dictEntryId", dictEntryId);
        String result = HttpClientUtil.doGet(host+url,params,username,password);
        return result;
    @ApiOperation(value = "获取字典", response = StdDictionaryEntryModel.class, produces = "application/json", notes = "获取字典")
    public StdDictionaryEntryModel get(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "dictEntryId", value = "字典ID")
            @RequestParam(value = "dictEntryId") Integer dictEntryId) {
        return stdDictEntryService.get(stdVersion, dictEntryId);
    }
    @RequestMapping("/delDictEntry")
    @ResponseBody
    public boolean delDictEntry(String stdVersion, Integer id) throws Exception {
        String url = "/api/v1.0/standard_center/dictEntry";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("dictEntryId", id);
        HttpClientUtil.doDelete( host+url,params,username,password);
        return true;
    @ApiOperation(value = "删除字典", produces = "application/json", notes = "删除字典")
    public void delete(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "dictEntryId", value = "字典ID")
            @RequestParam(value = "dictEntryId") Integer dictEntryId) {
        stdDictEntryService.delete(stdVersion, dictEntryId);
    }
    @RequestMapping("/updateDictEntry")
    @ResponseBody
    public String updateDictEntry(String stdVersion, String dictEntry) throws Exception {
        String url = "/api/v1.0/standard_center/dictEntry";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("dictEntry", dictEntry);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @ApiOperation(value = "修改字典", response = StdDictionaryEntryModel.class, produces = "application/json", notes = "修改字典")
    public StdDictionaryEntryModel modify(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "dictEntry", value = "字典")
            @RequestParam(value = "dictEntry") String dictEntry) {
        return (StdDictionaryEntryModel) stdDictEntryService.update(stdVersion, dictEntry);
    }
    @RequestMapping("/addDictEntry")
    @ResponseBody
    public String addDictEntry(String stdVersion, String dictEntry) throws Exception {
        String url = "/api/v1.0/standard_center/dictEntry";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("dictEntry", dictEntry);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @ApiOperation(value = "保存字典", response = StdDictionaryEntryModel.class, produces = "application/json", notes = "保存字典")
    public StdDictionaryEntryModel add(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "dictEntry", value = "字典")
            @RequestParam(value = "dictEntry") String dictEntry) {
        return (StdDictionaryEntryModel) stdDictEntryService.add(stdVersion, dictEntry);
    }
    @RequestMapping(value="/getDictEntryCodeValues")
    @ResponseBody
    public String getDictEntryCodeValues(String stdVersion, Integer dictId, String q, String initDictValue, String order, Integer rows) throws Exception {
    @ApiOperation(value = "获取字典下拉框信息", response = Result.class, produces = "application/json", notes = "获取适配字典下拉框信息")
    public Result searchOrgDictItem(
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "dictId", value = "数据集ID")
            @RequestParam(value = "dictId") Integer dictId,
            @ApiParam(name = "q", value = "字典名称或编码", required = false)
            @RequestParam(value = "q", required = false) String q,
            @ApiParam(name = "initDictValue", value = "初始化字典名称或编码", required = false)
            @RequestParam(value = "initDictValue", required = false) String initDictValue,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        Map<String,String> condition = new HashMap<String,String>();
        if (StringUtil.isEmpty(initDictValue)) {
            initDictValue = "";
@ -122,18 +133,9 @@ public class StdDictEntryController extends BaseController {
            condition.put("name", q);
        }
        JSONObject jsonpObject = JSONObject.fromObject(condition);
        String url = "/api/v1.0/standard_center/dictEntrys/selectList";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("dictId", dictId);
        params.put("condition", jsonpObject.toString());
        params.put("order", order);
        params.put("limit", rows);
        params.put("offset", 0);
        String resultStr = HttpClientUtil.doGet(host+url,params,username,password);
        List<Select2> detailModelList = jsonArrayToList(resultStr, Select2.class);
        List<StdDictionaryEntryModel> dictEntryModelList = stdDictEntryService.getDictEntryList(StdDictionaryEntryModel.class, stdVersion, dictId, jsonpObject.toString(), order, rows, 0);
        List<Select2> detailModelList = stdDictEntryService.getDictEntrySelectList(dictEntryModelList);
        Result result = getResult(detailModelList, detailModelList.size(), 1, rows);
        return result.toJson();
        return result;
    }
}

+ 98 - 88
Hos-resource/src/main/java/com/yihu/ehr/standard/controller/StdMetadataController.java

@ -3,18 +3,22 @@ package com.yihu.ehr.standard.controller;
import com.yihu.ehr.framework.constrant.Result;
import com.yihu.ehr.framework.model.DictItem;
import com.yihu.ehr.framework.model.DictionaryResult;
import com.yihu.ehr.framework.util.ResourceProperties;
import com.yihu.ehr.framework.util.controller.BaseController;
import com.yihu.ehr.framework.util.httpclient.HttpClientUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.standard.model.Select2;
import com.yihu.ehr.standard.model.StdMetaDataModel;
import net.sf.json.JSONArray;
import com.yihu.ehr.standard.model.standard.StdDictionaryModel;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
import com.yihu.ehr.standard.service.standard.StdDictService;
import com.yihu.ehr.standard.service.standard.StdMetadataService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@ -23,13 +27,14 @@ import java.util.Map;
/**
 * Created by LLH on 2016/1/6.
 */
@Controller
@RestController("StdMetadataController")
@RequestMapping("/standardCenter")
@Api(protocols = "https", value = "StdMetadataController", description = "标准数据元管理", tags = {"标准数据元"})
public class StdMetadataController extends BaseController {
    private static   String host = "http://"+ ResourceProperties.getProperty("serverip")+":"+ResourceProperties.getProperty("port");
    private static   String username = ResourceProperties.getProperty("username");
    private static   String password = ResourceProperties.getProperty("password");
    @Resource(name = StdMetadataService.BEAN_ID)
    StdMetadataService stdMetadataService;
    @Resource(name = StdDictService.BEAN_ID)
    StdDictService stdDictService;
    /**
     * 查询数据元列表信息(get)
     * @param stdVersion
@ -42,80 +47,89 @@ public class StdMetadataController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/searchMetadataList")
    @ResponseBody
    public Result searchMetadataList(String stdVersion,Integer datasetId,String condition,String order,Integer rows,Integer page) throws Exception {
    @ApiOperation(value = "获取数据元列表", response = Result.class, produces = "application/json", notes = "获取数据元列表")
    public Result getMetadataList(
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "datasetId", value = "数据集ID")
            @RequestParam(value = "datasetId") Integer datasetId,
            @ApiParam(name = "condition", value = "查询条件")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        List<StdMetaDataModel> metadataModelList = stdMetadataService.getMetadataList(StdMetaDataModel.class, stdVersion, datasetId, condition, order, rows, page - 1);
        Integer count = stdMetadataService.getMetadataCount(StdMetaDataModel.class, stdVersion, datasetId, condition);
        Result result = new Result();
        if(datasetId==null){//没有数据集数据时,返回空数据
            return result;
        }
        String url = "/api/v1.0/standard_center/metadatas/list";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("datasetId", datasetId);
        params.put("condition", condition);
        params.put("order", order);
        params.put("limit", rows);
        params.put("offset", page - 1);
        String resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        List<StdMetaDataModel> metadataModelList = jsonArrayToList(resultStr, StdMetaDataModel.class);
        url = "/api/v1.0/standard_center/metadatas/totalCount";
        resultStr = HttpClientUtil.doGet(host+url, params, username, password);
        Integer count = Integer.parseInt(resultStr);
        result.setDetailModelList(metadataModelList);
        result.setTotalCount(count);
        return result;
    }
    @RequestMapping("/getForMetadataId")
    @ResponseBody
    public String getForMetadataId(String stdVersion, Integer datasetId, Integer metadataId) throws Exception {
        String url = "/api/v1.0/standard_center/metadata";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("datasetId", datasetId);
        params.put("metadataId", metadataId);
        String result = HttpClientUtil.doGet(host+url,params,username,password);
        return result;
    @ApiOperation(value = "获取数据元", response = StdMetaDataModel.class, produces = "application/json", notes = "获取数据元")
    public StdMetaDataModel getForMetadataId(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "metadataId", value = "数据元ID")
            @RequestParam(value = "metadataId") Integer metadataId) {
        return stdMetadataService.get(stdVersion, metadataId);
    }
    @RequestMapping("/delMetaData")
    @ResponseBody
    public boolean delMetaData(String stdVersion, Integer id) throws Exception {
        String url = "/api/v1.0/standard_center/metadata";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("metadataId", id);
        HttpClientUtil.doDelete( host+url,params,username,password);
        return true;
    @ApiOperation(value = "删除数据元", produces = "application/json", notes = "删除数据元")
    public void delMetaData(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "metadataId", value = "数据元ID")
            @RequestParam(value = "metadataId") Integer metadataId) {
        stdMetadataService.delete(stdVersion, metadataId);
    }
    @RequestMapping("/updateMetadata")
    @ResponseBody
    public String updateMetadata(String stdVersion, String metadata) throws Exception {
        String url = "/api/v1.0/standard_center/metadata";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("metadata", metadata);
        String result = HttpClientUtil.doPut(host + url, params, username, password);
        return result;
    @ApiOperation(value = "修改数据元", response = StdMetaDataModel.class, produces = "application/json", notes = "修改数据元")
    public StdMetaDataModel updateMetadata(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "metadata", value = "数据元")
            @RequestParam(value = "metadata") String metadata) {
        return stdMetadataService.update(stdVersion, metadata);
    }
    @RequestMapping("/addMetadata")
    @ResponseBody
    public String addMetadata(String stdVersion, String metadata) throws Exception {
        String url = "/api/v1.0/standard_center/metadata";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("metadata", metadata);
        String result = HttpClientUtil.doPost(host + url, params, username, password);
        return result;
    @ApiOperation(value = "保存数据元", response = StdMetaDataModel.class, produces = "application/json", notes = "保存数据元")
    public StdMetaDataModel addMetadata(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "metadata", value = "数据元")
            @RequestParam(value = "metadata") String metadata) {
        return (StdMetaDataModel) stdMetadataService.add(stdVersion, metadata);
    }
    @RequestMapping(value="/getMetadataCodeValues")
    @ResponseBody
    public String getMetadataCodeValues(String stdVersion, Integer datasetId, String q, String initMetadataNm, String order, Integer rows) throws Exception {
    @ApiOperation(value = "获取数据元下拉框信息", response = String.class, produces = "application/json", notes = "获取机构数据元下拉框信息")
    public String getSelectList(
            @ApiParam(name = "stdVersion", value = "标准版本号")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "datasetId", value = "数据集ID")
            @RequestParam(value = "datasetId") Integer datasetId,
            @ApiParam(name = "q", value = "数据元名称或编码", required = false)
            @RequestParam(value = "q", required = false) String q,
            @ApiParam(name = "initMetadataNm", value = "初始化数据元名称或编码", required = false)
            @RequestParam(value = "initMetadataNm", required = false) String initMetadataNm,
            @ApiParam(name = "order", value = "Order param,Must be json.ascending:asc,descending:desc")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        Map<String,String> condition = new HashMap<String,String>();
        if (StringUtil.isEmpty(initMetadataNm)) {
            initMetadataNm = "";
@ -126,17 +140,8 @@ public class StdMetadataController extends BaseController {
            condition.put("name", q);
        }
        JSONObject jsonpObject = JSONObject.fromObject(condition);
        String url = "/api/v1.0/standard_center/metadatas/selectList";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion", stdVersion);
        params.put("datasetId", datasetId);
        params.put("condition", jsonpObject.toString());
        params.put("order", order);
        params.put("limit", rows);
        params.put("offset", 0);
        String resultStr = HttpClientUtil.doGet(host+url,params,username,password);
        List<Select2> detailModelList = jsonArrayToList(resultStr, Select2.class);
        List<StdMetaDataModel> metadataList = stdMetadataService.getMetadataList(StdMetaDataModel.class, stdVersion, datasetId, jsonpObject.toString(), order, rows, 0);
        List<Select2> detailModelList = stdMetadataService.getMetadataSelectList(metadataList);
        Result result = getResult(detailModelList, detailModelList.size(), 1, rows);
        return result.toJson();
    }
@ -148,24 +153,29 @@ public class StdMetadataController extends BaseController {
     * @throws Exception
     */
    @RequestMapping("/getDicts")
    @ResponseBody
    public DictionaryResult getDicts(String stdVersion) throws Exception {
        String url = "/api/v1.0/standard_center/dicts";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("stdVersion",stdVersion);
        String result = HttpClientUtil.doGet(host + url, params, username, password);
        JSONArray array = JSONArray.fromObject(result);
    @ApiOperation(value = "获取字典列表", response = DictionaryResult.class, produces = "application/json", notes = "获取字典列表")
    public DictionaryResult getList(
            @ApiParam(name = "stdVersion", value = "stdVersion")
            @RequestParam(value = "stdVersion") String stdVersion,
            @ApiParam(name = "condition", value = "Must be Json")
            @RequestParam(value = "condition", required = false) String condition,
            @ApiParam(name = "order", value = "Must be Json")
            @RequestParam(value = "order", required = false) String order,
            @ApiParam(name = "rows", value = "Limit the size of result set. Must be an integer")
            @RequestParam(value = "rows", required = false) Integer rows,
            @ApiParam(name = "page", value = "Start position of result set. Must be an integer")
            @RequestParam(value = "page", required = false) Integer page) {
        List<StdDictionaryModel> stdDictionaryModelList = stdDictService.getList(stdVersion, condition, order, rows, page - 1);
        DictionaryResult dictionaryResult = new DictionaryResult();
        List<DictItem> detailModelList = new ArrayList<DictItem>();
        DictItem item = new DictItem();
        item.setCode("");
        item.setValue("-无-");
        detailModelList.add(item);
        for(int i = 0; i < array.size(); i++){
            JSONObject jsonObject = array.getJSONObject(i);
        for (StdDictionaryModel stdDictionaryModel : stdDictionaryModelList) {
            DictItem items = new DictItem();
            Integer  id = (Integer) jsonObject.get("id");
            String name = (String)jsonObject.get("name");
            Integer  id = stdDictionaryModel.getId();
            String name = stdDictionaryModel.getName();
            items.setCode(id.toString());
            items.setValue(name);
            detailModelList.add(items);

+ 18 - 1
Hos-resource/src/main/java/com/yihu/ehr/standard/model/AdapterDatasetModel.java

@ -1,16 +1,33 @@
package com.yihu.ehr.standard.model;
package com.yihu.ehr.standard.model.adapter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
 * Created by lingfeng on 2015/9/16.
 */
public class AdapterDatasetModel {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "scheme_id")
    private Integer schemeId;
    @Column(name = "std_dataset_id")
    private Integer stdDatasetId;
    @Column(name = "std_dataset_code")
    private String stdDatasetCode;
    @Column(name = "std_dataset_name")
    private String stdDatasetName;
    @Column(name = "adapter_dataset_id")
    private Integer adapterDatasetId;
    @Column(name = "adapter_dataset_code")
    private String adapterDatasetCode;
    @Column(name = "adapter_dataset_name")
    private String adapterDatasetName;
    public Integer getId() {

+ 66 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/AdapterDatasetRelationModel.java

@ -0,0 +1,66 @@
package com.yihu.ehr.standard.model.adapter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
 * Created by lingfeng on 2015/9/16.
 */
public class AdapterDatasetRelationModel {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "scheme_id")
    private Integer schemeId;
    @Column(name = "master_dataset_id")
    private Integer masterdatasetId;
    @Column(name = "master_metadata_id")
    private Integer masterMetadataId;
    @Column(name = "foreign_metadata_id")
    private Integer foreignMetadataId;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Integer schemeId) {
        this.schemeId = schemeId;
    }
    public Integer getMasterdatasetId() {
        return masterdatasetId;
    }
    public void setMasterdatasetId(Integer masterdatasetId) {
        this.masterdatasetId = masterdatasetId;
    }
    public Integer getMasterMetadataId() {
        return masterMetadataId;
    }
    public void setMasterMetadataId(Integer masterMetadataId) {
        this.masterMetadataId = masterMetadataId;
    }
    public Integer getForeignMetadataId() {
        return foreignMetadataId;
    }
    public void setForeignMetadataId(Integer foreignMetadataId) {
        this.foreignMetadataId = foreignMetadataId;
    }
}

+ 18 - 1
Hos-resource/src/main/java/com/yihu/ehr/standard/model/AdapterDictModel.java

@ -1,16 +1,33 @@
package com.yihu.ehr.standard.model;
package com.yihu.ehr.standard.model.adapter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
 * Created by lingfeng on 2015/9/16.
 */
public class AdapterDictModel {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "scheme_id")
    private Integer schemeId;
    @Column(name = "std_dict_id")
    private Integer stdDictId;
    @Column(name = "std_dict_code")
    private String stdDictCode;
    @Column(name = "std_dict_name")
    private String stdDictName;
    @Column(name = "adapter_dict_id")
    private Integer adapterDictId;
    @Column(name = "adapter_dict_code")
    private String adapterDictCode;
    @Column(name = "adapter_dict_name")
    private String adapterDictName;
    public Integer getId() {

+ 20 - 1
Hos-resource/src/main/java/com/yihu/ehr/standard/model/AdapterDictentryModel.java

@ -1,18 +1,37 @@
package com.yihu.ehr.standard.model;
package com.yihu.ehr.standard.model.adapter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
 * Created by lingfeng on 2015/9/16.
 */
public class AdapterDictentryModel {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "scheme_id")
    private Integer schemeId;
    @Column(name = "std_dict_id")
    private Integer stdDictId;
    @Column(name = "std_entry_id")
    private Integer stdEntryId;
    @Column(name = "std_entry_code")
    private String stdEntryCode;
    @Column(name = "std_entry_value")
    private String stdEntryValue;
    @Column(name = "adapter_dict_id")
    private Integer adapterDictId;
    @Column(name = "adapter_entry_id")
    private Integer adapterEntryId;
    @Column(name = "adapter_entry_code")
    private String adapterEntryCode;
    @Column(name = "adapter_entry_value")
    private String adapterEntryValue;
    public Integer getId() {

+ 146 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/AdapterMetadataModel.java

@ -0,0 +1,146 @@
package com.yihu.ehr.standard.model.adapter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
 * Created by lingfeng on 2015/9/16.
 */
public class AdapterMetadataModel {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "scheme_id")
    private Integer schemeId;
    @Column(name = "std_dataset_id")
    private Integer stdDatasetId;
    @Column(name = "std_metadata_id")
    private Integer stdMetadataId;
    @Column(name = "std_metadata_code")
    private String stdMetadataCode;
    @Column(name = "std_metadata_name")
    private String stdMetadataName;
    @Column(name = "std_dict_id")
    private Integer stdDictId;
    @Column(name = "adapter_dataset_id")
    private Integer adapterDatasetId;
    @Column(name = "adapter_metadata_id")
    private Integer adapterMetadataId;
    @Column(name = "adapter_metadata_code")
    private String adapterMetadataCode;
    @Column(name = "adapter_metadata_name")
    private String adapterMetadataName;
    @Column(name = "adapter_data_type")
    private Integer adapterDataType;
    @Column(name = "adapter_dict_id")
    private Integer adapterDictId;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Integer schemeId) {
        this.schemeId = schemeId;
    }
    public Integer getStdDatasetId() {
        return stdDatasetId;
    }
    public void setStdDatasetId(Integer stdDatasetId) {
        this.stdDatasetId = stdDatasetId;
    }
    public Integer getStdMetadataId() {
        return stdMetadataId;
    }
    public void setStdMetadataId(Integer stdMetadataId) {
        this.stdMetadataId = stdMetadataId;
    }
    public String getStdMetadataCode() {
        return stdMetadataCode;
    }
    public void setStdMetadataCode(String stdMetadataCode) {
        this.stdMetadataCode = stdMetadataCode;
    }
    public String getStdMetadataName() {
        return stdMetadataName;
    }
    public void setStdMetadataName(String stdMetadataName) {
        this.stdMetadataName = stdMetadataName;
    }
    public Integer getStdDictId() {
        return stdDictId;
    }
    public void setStdDictId(Integer stdDictId) {
        this.stdDictId = stdDictId;
    }
    public Integer getAdapterDatasetId() {
        return adapterDatasetId;
    }
    public void setAdapterDatasetId(Integer adapterDatasetId) {
        this.adapterDatasetId = adapterDatasetId;
    }
    public Integer getAdapterMetadataId() {
        return adapterMetadataId;
    }
    public void setAdapterMetadataId(Integer adapterMetadataId) {
        this.adapterMetadataId = adapterMetadataId;
    }
    public String getAdapterMetadataCode() {
        return adapterMetadataCode;
    }
    public void setAdapterMetadataCode(String adapterMetadataCode) {
        this.adapterMetadataCode = adapterMetadataCode;
    }
    public String getAdapterMetadataName() {
        return adapterMetadataName;
    }
    public void setAdapterMetadataName(String adapterMetadataName) {
        this.adapterMetadataName = adapterMetadataName;
    }
    public Integer getAdapterDataType() {
        return adapterDataType;
    }
    public void setAdapterDataType(Integer adapterDataType) {
        this.adapterDataType = adapterDataType;
    }
    public Integer getAdapterDictId() {
        return adapterDictId;
    }
    public void setAdapterDictId(Integer adapterDictId) {
        this.adapterDictId = adapterDictId;
    }
}

+ 62 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/AdapterSchemeDispatchModel.java

@ -0,0 +1,62 @@
package com.yihu.ehr.standard.model.adapter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.Date;
/**
 * 标准版本模型
 *
 * @Created by lingfeng 2015/12/23.
 */
@Entity
@Table(name = "adapter_scheme_dispatch")
public class AdapterSchemeDispatchModel {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "scheme_id")
    private Integer schemeId;
    @Column(name = "org_code")
    private String orgCode;
    @Column(name = "org_name")
    private String orgName;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Integer schemeId) {
        this.schemeId = schemeId;
    }
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
}

+ 139 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/AdapterSchemeModel.java

@ -0,0 +1,139 @@
package com.yihu.ehr.standard.model.adapter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
/**
 * 标准版本模型
 *
 * @Created by lingfeng 2015/12/23.
 */
@Entity
@Table(name = "adapter_scheme")
public class AdapterSchemeModel {
    public static final String TABLE_NAME = "ADAPTER_SCHEME";
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "parent_id")
    private Integer parentId;
    @Column(name = "name")
    private String name;
    @Column(name = "type")
    private String type;
    @Column(name = "description")
    private String description;
    @Column(name = "status")
    private Integer status;
    @Column(name = "std_id")
    private Integer stdId;
    @Column(name = "std_version")
    private String stdVersion;
    @Column(name = "adapter_std_id")
    private Integer adapterStdId;
    @Column(name = "adapter_std_version")
    private String adapterStdVersion;
    @Column(name = "adapter_publisher_org_code")
    private String adapterPublisherOrgCode;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getParentId() {
        return parentId;
    }
    public void setParentId(Integer parentId) {
        this.parentId = parentId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public Integer getStdId() {
        return stdId;
    }
    public void setStdId(Integer stdId) {
        this.stdId = stdId;
    }
    public String getStdVersion() {
        return stdVersion;
    }
    public void setStdVersion(String stdVersion) {
        this.stdVersion = stdVersion;
    }
    public Integer getAdapterStdId() {
        return adapterStdId;
    }
    public void setAdapterStdId(Integer adapterStdId) {
        this.adapterStdId = adapterStdId;
    }
    public String getAdapterStdVersion() {
        return adapterStdVersion;
    }
    public void setAdapterStdVersion(String adapterStdVersion) {
        this.adapterStdVersion = adapterStdVersion;
    }
    public String getAdapterPublisherOrgCode() {
        return adapterPublisherOrgCode;
    }
    public void setAdapterPublisherOrgCode(String adapterPublisherOrgCode) {
        this.adapterPublisherOrgCode = adapterPublisherOrgCode;
    }
}

+ 121 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/AdapterSchemeVersionModel.java

@ -0,0 +1,121 @@
package com.yihu.ehr.standard.model.adapter;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.Date;
/**
 * 标准版本模型
 *
 * @created lingfeng 2015/12/23.
 */
@Entity
@Table(name = "adapter_scheme_version")
public class AdapterSchemeVersionModel {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "scheme_id")
    private Integer schemeId;
    @Column(name = "name")
    private String name;
    @Column(name = "version")
    private String version;
    @Column(name = "publish_time")
    private Date publishTime;
    @Column(name = "publish_user")
    private String publishUser;
    @Column(name = "base_version")
    private String baseVersion;
    @Column(name = "publish_status")
    private Integer publishStatus;
    @Column(name = "path")
    private String path;
    public AdapterSchemeVersionModel(){
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Integer schemeId) {
        this.schemeId = schemeId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    public Date getPublishTime() {
        return publishTime;
    }
    public void setPublishTime(Date publishTime) {
        this.publishTime = publishTime;
    }
    public String getBaseVersion() {
        return baseVersion;
    }
    public void setBaseVersion(String baseVersion) {
        this.baseVersion = baseVersion;
    }
    public Integer getPublishStatus() {
        return publishStatus;
    }
    public void setPublishStatus(Integer publishStatus) {
        this.publishStatus = publishStatus;
    }
    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }
    public String getPublishUser() {
        return publishUser;
    }
    public void setPublishUser(String publishUser) {
        this.publishUser = publishUser;
    }
}

+ 1 - 1
Hos-resource/src/main/java/com/yihu/ehr/standard/model/AdapterDictEntryResultDetailModel.java

@ -1,4 +1,4 @@
package com.yihu.ehr.standard.model;
package com.yihu.ehr.standard.model.adapter.resultModel;
/**
 * Created by lingfeng on 2015/9/16.

+ 11 - 2
Hos-resource/src/main/java/com/yihu/ehr/standard/model/AdapterMetadataModel.java

@ -1,9 +1,9 @@
package com.yihu.ehr.standard.model;
package com.yihu.ehr.standard.model.adapter.resultModel;
/**
 * Created by lingfeng on 2015/9/16.
 */
public class AdapterMetadataModel {
public class AdapterMetadataResultDetailModel {
    private Integer id;
    private Integer schemeId;
    private Integer stdDatasetId;
@ -16,6 +16,7 @@ public class AdapterMetadataModel {
    private String adapterMetadataCode;
    private String adapterMetadataName;
    private Integer adapterDataType;
    private String adapterMetadataType;
    private Integer adapterDictId;
    public Integer getId() {
@ -121,4 +122,12 @@ public class AdapterMetadataModel {
    public void setAdapterDictId(Integer adapterDictId) {
        this.adapterDictId = adapterDictId;
    }
    public String getAdapterMetadataType() {
        return adapterMetadataType;
    }
    public void setAdapterMetadataType(String adapterMetadataType) {
        this.adapterMetadataType = adapterMetadataType;
    }
}

+ 2 - 2
Hos-resource/src/main/java/com/yihu/ehr/standard/model/ApiMetadataResultDetailModel.java

@ -1,7 +1,7 @@
package com.yihu.ehr.standard.model;
package com.yihu.ehr.standard.model.adapter.resultModel;
/**
 * Created by lingfeng on 2015/9/16.
 * Created by lingfeng on 2015/9/18.
 */
public class ApiMetadataResultDetailModel {
    private Integer id;

+ 132 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/resultModel/SchemeResultDetailModel.java

@ -0,0 +1,132 @@
package com.yihu.ehr.standard.model.adapter.resultModel;
import java.io.Serializable;
public class SchemeResultDetailModel implements Serializable {
    String id;
    String pid;
    String name;
    Integer status;
    String stdName;
    String stdVersionName;
    String stdVersion;
    String publisher;
    String adapterName;
    String adapterVersionName;
    String adapterStdVersion;
    String version;
    Integer type;
    String date;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPid() {
        return pid;
    }
    public void setPid(String pid) {
        this.pid = pid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getStdName() {
        return stdName;
    }
    public void setStdName(String stdName) {
        this.stdName = stdName;
    }
    public String getStdVersionName() {
        return stdVersionName;
    }
    public void setStdVersionName(String stdVersionName) {
        this.stdVersionName = stdVersionName;
    }
    public String getPublisher() {
        return publisher;
    }
    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }
    public String getAdapterName() {
        return adapterName;
    }
    public void setAdapterName(String adapterName) {
        this.adapterName = adapterName;
    }
    public String getAdapterVersionName() {
        return adapterVersionName;
    }
    public void setAdapterVersionName(String adapterVersionName) {
        this.adapterVersionName = adapterVersionName;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    public String getStdVersion() {
        return stdVersion;
    }
    public void setStdVersion(String stdVersion) {
        this.stdVersion = stdVersion;
    }
    public String getAdapterStdVersion() {
        return adapterStdVersion;
    }
    public void setAdapterStdVersion(String adapterStdVersion) {
        this.adapterStdVersion = adapterStdVersion;
    }
}

+ 105 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/adapter/resultModel/SchemeVersionResultDetailModel.java

@ -0,0 +1,105 @@
package com.yihu.ehr.standard.model.adapter.resultModel;
import java.util.Date;
/**
 * 标准版本模型
 *
 * @created lingfeng 2015/12/23.
 */
public class SchemeVersionResultDetailModel {
    private Integer id;
    private Integer schemeId;
    private String name;
    private String schemeName;
    private String version;
    private Date publishTime;
    private String publishUser;
    private String baseVersion;
    private Integer publishStatus;
    private String path;
    public SchemeVersionResultDetailModel(){
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Integer schemeId) {
        this.schemeId = schemeId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSchemeName() {
        return schemeName;
    }
    public void setSchemeName(String schemeName) {
        this.schemeName = schemeName;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    public Date getPublishTime() {
        return publishTime;
    }
    public void setPublishTime(Date publishTime) {
        this.publishTime = publishTime;
    }
    public String getPublishUser() {
        return publishUser;
    }
    public void setPublishUser(String publishUser) {
        this.publishUser = publishUser;
    }
    public String getBaseVersion() {
        return baseVersion;
    }
    public void setBaseVersion(String baseVersion) {
        this.baseVersion = baseVersion;
    }
    public Integer getPublishStatus() {
        return publishStatus;
    }
    public void setPublishStatus(Integer publishStatus) {
        this.publishStatus = publishStatus;
    }
    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }
}

+ 28 - 3
Hos-resource/src/main/java/com/yihu/ehr/standard/model/StandardModel.java

@ -1,5 +1,8 @@
package com.yihu.ehr.standard.model;
package com.yihu.ehr.standard.model.standard;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
@ -7,16 +10,38 @@ import java.io.Serializable;
 *
 * @created Airhead 2015/12/23.
 */
public class StandardModel implements Serializable {
@Entity
@Table(name = "std_info")
public class StandardModel  implements Serializable {
    public static final String TABLE_NAME = "STD_INFO";
    @Id
    @GenericGenerator(name = "generator", strategy = "")
    @Column(name = "id")
    private Integer id;
    @Column(name = "name")
    private String name;
    @Column(name = "code")
    private String code;
    @Column(name = "publisher")
    private String publisher;
    @Column(name = "publisher_org_code")
    private String publisherOrgCode;
    @Column(name = "summary")
    private String summary;
    @Column(name = "ref_standard")
    private String refStandard;
    @Column(name = "ref_standard_version")
    private String refStandardVersion;
    @Column(name = "version_status")
    private Integer versionStatus;
    public StandardModel(){

+ 153 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/standard/StandardVersionModel.java

@ -0,0 +1,153 @@
package com.yihu.ehr.standard.model.standard;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
 * 标准版本模型
 *
 * @created Airhead 2015/12/23.
 */
@Entity
@Table(name = "std_version")
public class StandardVersionModel implements Serializable {
    public static final String TABLE_NAME = "STD_VERSION";
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "version")
    private String version;
    @Column(name = "std_id")
    private Integer standardId;
    @Column(name = "name")
    private String name;
    @Column(name = "publish_time")
    private Date publishTime;
    @Column(name = "publish_user")
    private String publishUser;
    @Column(name = "base_version")
    private String baseVersion;
    @Column(name = "primary_version")
    private String primaryVersion;
    @Column(name = "publish_status")
    private Integer publishStatus;
    @Column(name = "path")
    private String path;
    public StandardVersionModel(){
    }
    public StandardVersionModel(StandardVersionModel standardVersionModel){
        this.id = standardVersionModel.id;
        this.version = standardVersionModel.version;
        this.standardId = standardVersionModel.standardId;
        this.name = standardVersionModel.name;
        this.publishTime = standardVersionModel.publishTime;
        this.publishUser = standardVersionModel.publishUser;
        this.baseVersion = standardVersionModel.baseVersion;
        this.primaryVersion = standardVersionModel.primaryVersion;
        this.publishStatus = standardVersionModel.publishStatus;
        this.path = standardVersionModel.path;
    }
    public static String getTableName() {
        return TABLE_NAME;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    public Integer getStandardId() {
        return standardId;
    }
    public void setStandardId(Integer standardId) {
        this.standardId = standardId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Date getPublishTime() {
        return publishTime;
    }
    public void setPublishTime(Date publishTime) {
        this.publishTime = publishTime;
    }
    public String getPublishUser() {
        return publishUser;
    }
    public void setPublishUser(String publishUser) {
        this.publishUser = publishUser;
    }
    public String getBaseVersion() {
        return baseVersion;
    }
    public void setBaseVersion(String baseVersion) {
        this.baseVersion = baseVersion;
    }
    public String getPrimaryVersion() {
        return primaryVersion;
    }
    public void setPrimaryVersion(String primaryVersion) {
        this.primaryVersion = primaryVersion;
    }
    public Integer getPublishStatus() {
        return publishStatus;
    }
    public void setPublishStatus(Integer publishStatus) {
        this.publishStatus = publishStatus;
    }
    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }
}

+ 83 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/standard/StdCDACatalogModel.java

@ -0,0 +1,83 @@
package com.yihu.ehr.standard.model.standard;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
/**
 * CDA类型模型
 *
 * @created Airhead 2015/12/23.
 */
@Entity
@Table(name = "std_cda_catalog")
public class StdCDACatalogModel {
    public static String TABLE_NAME="STD_CDA_CATALOG";
    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "code")
    private String code;
    @Column(name = "name")
    private String name;
    @Column(name = "parent_id")
    private Integer parentID;
    @Column(name = "sort")
    private String sort;
    @Column(name = "description")
    private String description;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getParentID() {
        return parentID;
    }
    public void setParentID(Integer parentID) {
        this.parentID = parentID;
    }
    public String getSort() {
        return sort;
    }
    public void setSort(String sort) {
        this.sort = sort;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
}

+ 48 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/standard/StdCDADatasetModel.java

@ -0,0 +1,48 @@
package com.yihu.ehr.standard.model.standard;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.Id;
/**
 * CDA与数据集关系模型
 *
 * @created Airhead 2015/12/23.
 */
public class StdCDADatasetModel {
    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "cda_id")
    private Integer cdaID;
    @Column(name = "dataset_id")
    private Integer datasetId;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getCdaID() {
        return cdaID;
    }
    public void setCdaID(Integer cdaID) {
        this.cdaID = cdaID;
    }
    public Integer getdatasetId() {
        return datasetId;
    }
    public void setdatasetId(Integer datasetId) {
        this.datasetId = datasetId;
    }
}

+ 92 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/standard/StdCDAModel.java

@ -0,0 +1,92 @@
package com.yihu.ehr.standard.model.standard;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.Id;
/**
 * @created Airhead 2015/12/23.
 */
public class StdCDAModel {
    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "std_id")
    private Integer standardId;
    @Column(name = "code")
    private String code;
    @Column(name = "name")
    private String name;
    @Column(name = "path")
    private String path;
    @Column(name = "description")
    private String description;
    @Column(name = "catalog_id")
    private Integer catalogID;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getstandardId() {
        return standardId;
    }
    public void setstandardId(Integer standardId) {
        this.standardId = standardId;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public Integer getCatalogID() {
        return catalogID;
    }
    public void setCatalogID(Integer catalogID) {
        this.catalogID = catalogID;
    }
}

+ 23 - 1
Hos-resource/src/main/java/com/yihu/ehr/standard/model/StdDataSetModel.java

@ -1,16 +1,38 @@
package com.yihu.ehr.standard.model;
package com.yihu.ehr.standard.model.standard;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.Id;
/**
 * Created by wq on 2015/9/16.
 */
public class StdDataSetModel {
    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "std_id")
    private Integer standardId;
    @Column(name = "code")
    private String code;
    @Column(name = "name")
    private String name;
    @Column(name = "language")
    private String language;
    @Column(name = "catalog")
    private Integer catalog;
    @Column(name = "summary")
    private String summary;
    @Column(name = "class_model")
    private String classModel;
    public Integer getId() {

+ 87 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/standard/StdDatasetCatalogModel.java

@ -0,0 +1,87 @@
package com.yihu.ehr.standard.model.standard;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**
 * 数据集模型
 *
 * @created Airhead 2015/12/23.
 */
@Entity
@Table(name = "std_dataset_catalog")
public class StdDatasetCatalogModel {
    public static String TABLE_NAME = "STD_DATASET_CATALOG";
    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "name")
    private String name;
    @Column(name = "code")
    private String code;
    @Column(name = "parent_id")
    private Integer parentID;
    @Column(name = "sort")
    private String sort;
    @Column(name = "description")
    private String description;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public Integer getParentID() {
        return parentID;
    }
    public void setParentID(Integer parentID) {
        this.parentID = parentID;
    }
    public String getSort() {
        return sort;
    }
    public void setSort(String sort) {
        this.sort = sort;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
}

+ 21 - 3
Hos-resource/src/main/java/com/yihu/ehr/standard/model/StdDictionaryEntryModel.java

@ -1,14 +1,32 @@
package com.yihu.ehr.standard.model;
package com.yihu.ehr.standard.model.standard;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.Id;
/**
 * @created Airhead 2015/12/23.
 */
public class StdDictionaryEntryModel {
    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "std_id")
    private Integer standardId;
    @Column(name = "dict_id")
    private Integer dictId;
    @Column(name = "code")
    private String code;
    @Column(name = "value")
    private String value;
    @Column(name = "description")
    private String description;
    public Integer getId() {
@ -27,11 +45,11 @@ public class StdDictionaryEntryModel {
        this.standardId = standardId;
    }
    public Integer getdictId() {
    public Integer getDictId() {
        return dictId;
    }
    public void setdictId(Integer dictId) {
    public void setDictId(Integer dictId) {
        this.dictId = dictId;
    }

+ 21 - 1
Hos-resource/src/main/java/com/yihu/ehr/standard/model/StdDictionaryModel.java

@ -1,4 +1,9 @@
package com.yihu.ehr.standard.model;
package com.yihu.ehr.standard.model.standard;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.Id;
/**
 * 标准数据字典模型
@ -6,12 +11,27 @@ package com.yihu.ehr.standard.model;
 * @created Airhead 2015/12/23.
 */
public class StdDictionaryModel {
    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "std_id")
    private Integer standardId;
    @Column(name = "code")
    private String code;
    @Column(name = "name")
    private String name;
    @Column(name = "define")
    private String define;
    @Column(name = "description")
    private String description;
    @Column(name = "parent_id")
    private Integer parentId;
    public Integer getId() {

+ 54 - 20
Hos-resource/src/main/java/com/yihu/ehr/standard/model/StdMetaDataModel.java

@ -1,23 +1,59 @@
package com.yihu.ehr.standard.model;
package com.yihu.ehr.standard.model.standard;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.Id;
/**
 * Created by wq on 2015/9/22.
 */
public class StdMetaDataModel {
    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;                    // 数据元ID
    private Integer stdandardID;           //标准ID
    @Column(name = "std_id")
    private Integer standardId;           //标准ID
    @Column(name = "dataset_id")
    private Integer datasetId;             //数据集ID
    @Column(name = "code")
    private String code;           // 内部代码
    @Column(name = "de_code")
    private String deCode;                 // 标准元编码
    @Column(name = "name")
    private String name;                // 名称
    @Column(name = "type")
    private String type;                // 数据元数据类型
    @Column(name = "format")
    private String format;              // 表示格式
    @Column(name = "dict_id")
    private Integer dictId;                //字典ID
    @Column(name = "definition")
    private String definition;          // 标准元定义, 即说明
    @Column(name = "nullable")
    private Integer nullable;           // 是否可为空
    @Column(name = "column_length")
    private String columnLength;         // 数据长度
    @Column(name = "column_type")
    private String columnType;          // 数据类型
    @Column(name = "column_name")
    private String columnName;          // 字段名
    @Column(name = "primary_key")
    private Integer primaryKey;         // 是否为主键
    public Integer getId() {
@ -28,30 +64,22 @@ public class StdMetaDataModel {
        this.id = id;
    }
    public Integer getStdandardID() {
        return stdandardID;
    public Integer getStandardId() {
        return standardId;
    }
    public void setStdandardID(Integer stdandardID) {
        this.stdandardID = stdandardID;
    public void setStandardId(Integer standardId) {
        this.standardId = standardId;
    }
    public Integer getdatasetId() {
    public Integer getDatasetId() {
        return datasetId;
    }
    public void setdatasetId(Integer datasetId) {
    public void setDatasetId(Integer datasetId) {
        this.datasetId = datasetId;
    }
    public String getDeCode() {
        return deCode;
    }
    public void setDeCode(String deCode) {
        this.deCode = deCode;
    }
    public String getCode() {
        return code;
    }
@ -60,6 +88,14 @@ public class StdMetaDataModel {
        this.code = code;
    }
    public String getDeCode() {
        return deCode;
    }
    public void setDeCode(String deCode) {
        this.deCode = deCode;
    }
    public String getName() {
        return name;
    }
@ -84,11 +120,11 @@ public class StdMetaDataModel {
        this.format = format;
    }
    public Integer getdictId() {
    public Integer getDictId() {
        return dictId;
    }
    public void setdictId(Integer dictId) {
    public void setDictId(Integer dictId) {
        this.dictId = dictId;
    }
@ -139,6 +175,4 @@ public class StdMetaDataModel {
    public void setPrimaryKey(Integer primaryKey) {
        this.primaryKey = primaryKey;
    }
}

+ 68 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/model/standard/StdPublisherModel.java

@ -0,0 +1,68 @@
package com.yihu.ehr.standard.model.standard;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 标准基本信息
 *
 * @created Airhead 2015/12/23.
 */
@Entity
@Table(name = "std_publisher")
public class StdPublisherModel implements Serializable {
    public static final String TABLE_NAME = "STD_PUBLISHER";
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Integer id;
    @Column(name = "name")
    private String name;
    @Column(name = "code")
    private String code;
    @Column(name = "description")
    private String description;
    public static String getTableName() {
        return TABLE_NAME;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
}

+ 1 - 1
Hos-resource/src/main/java/com/yihu/ehr/standard/model/StandardResultDetailModel.java

@ -1,4 +1,4 @@
package com.yihu.ehr.standard.model;
package com.yihu.ehr.standard.model.standard.resultModel;
import java.io.Serializable;

+ 83 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterDatasetRelationService.java

@ -0,0 +1,83 @@
package com.yihu.ehr.standard.service.adapter;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.adapter.AdapterDatasetRelationModel;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Transactional
@Service("AdapterDatasetRelationService")
public class AdapterDatasetRelationService extends SQLGeneralDAO {
    public static final String BEAN_ID = "AdapterDatasetRelationService";
    public AdapterDatasetRelationService() {
    }
    public void finalize() throws Throwable {
        super.finalize();
    }
    public AdapterDatasetRelationModel add(String adapterVersion, String datasetRelation) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterDatasetRelationModel adapterDatasetRelationModel = objectMapper.readValue(datasetRelation, AdapterDatasetRelationModel.class);
            Session session = getCurrentSession();
            String sql = "select max(id) from " + version.getMetaDataTableName();
            Query query = session.createSQLQuery(sql);
            Object object = query.uniqueResult();
            adapterDatasetRelationModel.setId(object == null ? 1 : Integer.parseInt(object.toString()) + 1);
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDatasetRelationModel));
            SqlCreator sqlCreator = new SqlCreator(AdapterDatasetRelationModel.class);
            sql = sqlCreator.insertData(version.getMetaDataTableName(), jsonNode);
            query = getExeuteQuery(sqlCreator, sql);
            query.executeUpdate();
            return adapterDatasetRelationModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.SaveDatasetRelationFailed);
        }
    }
    public void delete(String adapterVersion, Integer datasetRelationId) {
        try {
            if (adapterVersion == null || adapterVersion.length() == 0) {
                throw new ApiException(ErrorCode.InvalidStdVersion);
            }
            AdapterVersion version = new AdapterVersion(adapterVersion);
            Session session = getCurrentSession();
            String sql = "delete from " + version.getMetaDataTableName() + " where id = :id";
            Query query = session.createSQLQuery(sql);
            query.setInteger("id", datasetRelationId);
            query.executeUpdate();
        } catch (Exception e) {
            throw new ApiException(ErrorCode.DeleteDataSetRelationFailed);
        }
    }
    public AdapterDatasetRelationModel modify(String adapterVersion, String datasetRelation) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterDatasetRelationModel adapterDatasetRelationModel = objectMapper.readValue(datasetRelation, AdapterDatasetRelationModel.class);
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDatasetRelationModel));
            SqlCreator sqlCreator = new SqlCreator(AdapterDatasetRelationModel.class);
            String sql = sqlCreator.updateDataByTableKey(version.getMetaDataTableName(), jsonNode);
            Query query = getExeuteQuery(sqlCreator, sql);
            query.executeUpdate();
            return adapterDatasetRelationModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.UpdateatasetRelationFailed);
        }
    }
}

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

@ -0,0 +1,400 @@
package com.yihu.ehr.standard.service.adapter;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.constrant.TreeView;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.adapter.AdapterDatasetModel;
import com.yihu.ehr.standard.model.adapter.AdapterMetadataModel;
import com.yihu.ehr.standard.model.standard.StdDataSetModel;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import com.yihu.ehr.standard.service.bo.StandardVersion;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
@Transactional
@Service("AdapterDatasetService")
public class AdapterDatasetService extends SQLGeneralDAO {
    public static final String BEAN_ID = "AdapterDatasetService";
    public AdapterDatasetService() {
    }
    public void finalize() throws Throwable {
        super.finalize();
    }
    public AdapterDatasetModel add(String adapterVersion, String dataset) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterDatasetModel adapterDatasetModel = objectMapper.readValue(dataset, AdapterDatasetModel.class);
            adapterDatasetModel.setId(getMaxId(version.getDataSetTableName()));
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDatasetModel));
            SqlCreator sqlCreator = new SqlCreator(AdapterDatasetModel.class);
            String sql = sqlCreator.insertData(version.getDataSetTableName(), jsonNode);
            Query query = getExeuteQuery(sqlCreator, sql);
            query.executeUpdate();
            return adapterDatasetModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.SavedatasetFailed);
        }
    }
    public void delete(String adapterVersion, Integer datasetId) {
        try {
            if (adapterVersion == null || adapterVersion.length() == 0) {
                throw new ApiException(ErrorCode.InvalidStdVersion);
            }
            AdapterVersion version = new AdapterVersion(adapterVersion);
            Session session = getCurrentSession();
            String sql = "delete from " + version.getDataSetTableName() + " where id = :id";
            Query query = session.createSQLQuery(sql);
            query.setInteger("id", datasetId);
            query.executeUpdate();
        } catch (Exception e) {
            throw new ApiException(ErrorCode.DeleteDataSetFailed);
        }
    }
    public AdapterDatasetModel modify(String adapterVersion, String dataset) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper =  new ObjectMapper();
            AdapterDatasetModel adapterDatasetModel = objectMapper.readValue(dataset, AdapterDatasetModel.class);
            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();
            return adapterDatasetModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.UpdateDatasetFailed);
        }
    }
    public List getDatasetList(Class tClass, String version, String condition, String order, Integer limit, Integer offset) {
        try {
            AdapterVersion adapterVersion = new AdapterVersion(version);
            String tableName = adapterVersion.getDataSetTableName();
            SqlCreator sqlCreator = new SqlCreator(tClass);
            ObjectMapper objectMapper =  new ObjectMapper();
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.likeOrCondition("stdDatasetName", "stdDatasetCode", name);
            }
            if (!StringUtil.isEmpty(order)) {
                JsonNode jsonNode = objectMapper.readTree(order);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText().toUpperCase();
                    sqlCreator.order(fieldName, value);
                }
            }
            String sql = sqlCreator.selectData(tableName);
            Query query = getQuery(sqlCreator, sql);
            if (limit != null) {
                query.setMaxResults(limit);
                if (offset != null) {
                    query.setFirstResult(offset * limit);
                }
            }
            return query.list();
        } catch (Exception e) {
            e.printStackTrace();
            throw new ApiException(ErrorCode.GetDataSetListFailed);
        }
    }
    public Integer getDatasetInt(Class tClass, String version, String condition) {
        try {
            AdapterVersion adapterVersion = new AdapterVersion(version);
            String tableName = adapterVersion.getDataSetTableName();
            SqlCreator sqlCreator = new SqlCreator(tClass);
            ObjectMapper objectMapper =  new ObjectMapper();
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.likeOrCondition("stdDatasetName", "stdDatasetCode", name);
            }
            String sql = sqlCreator.countData(tableName);
            Query query = getCurrentSession().createSQLQuery(sql);
            for (String key : sqlCreator.getKeyValueMap().keySet()) {
                query.setParameter(key, sqlCreator.getKeyValueMap().get(key));
            }
            Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
            return count;
        } catch (Exception e) {
            e.printStackTrace();
            throw new ApiException(ErrorCode.GetDataSetListFailed);
        }
    }
    public void getAdapterCustomize(String adapterVersion, List<TreeView> treeViewList, List<Integer> hasCheckDatasetIdList, List<Integer> hasCheckMetadataIdList) {
        boolean adapter = false;  //定制是否添加根节点
        //获取所有定制数据集
        AdapterVersion aVersion = new AdapterVersion(adapterVersion);
        List<AdapterDatasetModel> adapterDataSetList = getList(AdapterDatasetModel.class, aVersion.getDataSetTableName(), "", "", null, null, ErrorCode.GetDataSetListFailed);
        List<AdapterMetadataModel> adapterMetaDataList = getList(AdapterMetadataModel.class, aVersion.getMetaDataTableName(), "", "", null, null, ErrorCode.GetMetaDataListFaield);
        List<TreeView> adapterCustomizeList = new ArrayList<>();
        //数据集
        for (AdapterDatasetModel adapterDataset : adapterDataSetList) {
            TreeView parent = new TreeView();
            parent.setId("AD" + adapterDataset.getStdDatasetId());
            parent.setPid("A0");
            parent.setText(adapterDataset.getStdDatasetName());
            parent.setIschecked(true);
            adapterCustomizeList.add(parent);
            adapter = true;
            hasCheckDatasetIdList.add(adapterDataset.getStdDatasetId());
        }
        //数据元
        for (AdapterMetadataModel adapterMetadat : adapterMetaDataList) {
            TreeView child = new TreeView();
            child.setId("AM" + adapterMetadat.getStdMetadataId());
            child.setPid("AD" + adapterMetadat.getStdDatasetId());
            child.setText(adapterMetadat.getStdMetadataName());
            child.setIschecked(true);
            adapterCustomizeList.add(child);
            adapter = true;
            hasCheckMetadataIdList.add(adapterMetadat.getStdMetadataId());
        }
        //根节点
        if (adapter) {
            TreeView adapterRoot = new TreeView();
            adapterRoot.setId("A0");
            adapterRoot.setPid("-1");
            adapterRoot.setText("数据集");
            adapterRoot.setIschecked(true);
            adapterCustomizeList.add(adapterRoot);
        }
        treeViewList.addAll(adapterCustomizeList);
    }
    public void getStdCustomize(String stdVersion, List<TreeView> treeViewList, List<Integer> hasCheckDatasetIdList, List<Integer> hasCheckMetadataIdList) {
        String id;
        boolean check;     //是否勾选
        boolean std = false;      //标准是否添加根节点
        long childCheckCount;
        long datasetCount=0;
        //获取所有标准数据集
        StandardVersion sVersion = new StandardVersion(stdVersion);
        List<StdDataSetModel> dataSetList = getList(StdDataSetModel.class, sVersion.getDataSetTableName(),  "", "", null, null, ErrorCode.GetDataSetListFailed);
        String idListStr = Constants.EMPTY;
        for (StdDataSetModel dataSet : dataSetList) {
            idListStr += dataSet.getId() + Constants.COMMA;
        }
        Map<Integer, List<StdMetaDataModel>> stdDataSetModelMap = new HashMap<>();
        if (!StringUtil.isEmpty(idListStr)) {
            String tableName = sVersion.getMetaDataTableName();
            SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
            String sql = sqlCreator.selectData(tableName);
            Query query = getQuery(sqlCreator, sql);
            List<StdMetaDataModel> stdMetaDataModelList = query.list();
            for (StdMetaDataModel stdMetaDataModel : stdMetaDataModelList) {
                List<StdMetaDataModel> stdMetaDataModels = stdDataSetModelMap.get(stdMetaDataModel.getDatasetId());
                if (stdMetaDataModels == null) {
                    stdMetaDataModels = new ArrayList<>();
                }
                stdMetaDataModels.add(stdMetaDataModel);
                stdDataSetModelMap.put(stdMetaDataModel.getDatasetId(), stdMetaDataModels);
            }
        }
        List<TreeView> stdCustomizeList = new ArrayList<>();
        for (StdDataSetModel dataSet : dataSetList) {
            TreeView parent = new TreeView();
            parent.setId("SD" + dataSet.getId());
            parent.setPid("S0");
            parent.setText(dataSet.getName());
            parent.setIschecked(false);
            std = true;
            childCheckCount = 0;
            List<StdMetaDataModel> metaDataList = stdDataSetModelMap.get(dataSet.getId());
            if (!CollectionUtil.isEmpty(metaDataList)) {
                for (StdMetaDataModel metaData : metaDataList) {
                    id = String.valueOf(metaData.getId());
                    if (hasCheckMetadataIdList.contains(metaData.getId())) {
                        check = true;
                        childCheckCount++;
                    } else {
                        check = false;
                    }
                    TreeView child = new TreeView();
                    child.setId("SM" + id);
                    child.setPid("SD" + dataSet.getId());
                    child.setText(metaData.getName());
                    child.setIschecked(check);
                    stdCustomizeList.add(child);
                }
                std = true;
            }
            if (!CollectionUtil.isEmpty(metaDataList) && metaDataList.size() == childCheckCount && childCheckCount > 0) {
                parent.setIschecked(true);//子节点全选
                datasetCount++;
            } else if (CollectionUtil.isEmpty(metaDataList) && hasCheckDatasetIdList.contains(dataSet.getId())) {
                parent.setIschecked(true);
                datasetCount++;
            }
            stdCustomizeList.add(parent);
        }
        //根节点
        if (std) {
            TreeView stdRoot = new TreeView();
            stdRoot.setId("S0");
            stdRoot.setPid("-1");
            stdRoot.setText("数据集");
            if(datasetCount==dataSetList.size()){
                stdRoot.setIschecked(true);
            }else {
                stdRoot.setIschecked(false);
            }
            stdCustomizeList.add(stdRoot);
        }
        treeViewList.addAll(stdCustomizeList);
    }
    public List<TreeView> getDatasetCustomize(String adapterVersion, String stdVersion) {
        try {
            List<TreeView> treeViewList = new ArrayList<>();
            List<Integer> hasCheckDatasetIdList = new ArrayList<>();
            List<Integer> hasCheckMetadataIdList = new ArrayList<>();
            getAdapterCustomize(adapterVersion, treeViewList, hasCheckDatasetIdList, hasCheckMetadataIdList);
            getStdCustomize(stdVersion, treeViewList, hasCheckDatasetIdList, hasCheckMetadataIdList);
            return treeViewList;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.GetDataSetListFailed);
        }
    }
    public boolean updateCustomize(Integer schemeId, String adapterVersion, String stdVersion, String datasetIdStr,String metaDataIdStr) {
        AdapterVersion aVersion = new AdapterVersion(adapterVersion);
        StandardVersion sVersion = new StandardVersion(stdVersion);
        try {
            String[] datasetIdList = datasetIdStr.split(",");
            String[] metadataIdList = metaDataIdStr.split(",");
            List<Integer> newDatasetIdList = new ArrayList<>();
            List<Integer> newMetadataIdList = new ArrayList<>();
            for (String datasetId : datasetIdList) {
                if(!StringUtil.isStrEmpty(datasetId)){
                    Integer newDatasetId = Integer.parseInt(datasetId);
                    newDatasetIdList.add(newDatasetId);
                }
            }
            for (String metadataId : metadataIdList) {
                if(!StringUtil.isStrEmpty(metadataId)){
                    Integer newMetadataId = Integer.parseInt(metadataId);
                    newMetadataIdList.add(newMetadataId);
                }
            }
            updateDatasetCustomizeData(schemeId, aVersion, sVersion, newDatasetIdList, newMetadataIdList);
            return true;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.UpdateDatasetFailed);
        }
    }
    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());
        List<StdMetaDataModel> metadataList = new ArrayList<StdMetaDataModel>();
        if(newMetadataIdList.size()>0){
            SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
            sqlCreator.inCondition("id", newMetadataIdList);
            String sql = sqlCreator.selectData(sVersion.getMetaDataTableName());
            Query query = getQuery(sqlCreator, sql);
             metadataList = query.list();
        }
        List<Integer> newDictdList = new ArrayList<>();
        for (StdMetaDataModel stdMetaDataModel : metadataList) {
            if (stdMetaDataModel.getDictId() != null && !newDictdList.contains(stdMetaDataModel.getDictId())) {
                newDictdList.add(stdMetaDataModel.getDictId());
            }
        }
        if(newDatasetIdList.size()>0){
            insertSqlList.add(insertData(aVersion.getDataSetTableName(), sVersion.getDataSetTableName(),
                    new String[]{"id,std_dataset_id,std_dataset_code,std_dataset_name"},
                    new String[]{"id,id,code,name"},
                    schemeId,
                    "id",
                    newDatasetIdList));
        }
        if(newMetadataIdList.size()>0){
            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,id,code,name,dataset_id,dict_id"},
                    schemeId,
                    "id",
                    newMetadataIdList));
        }
        if(newDictdList.size()>0){
            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"},
                    schemeId,
                    "id",
                    newDictdList));
            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"},
                    schemeId,
                    "dict_id",
                    newDictdList));
        }
        if(insertSqlList.size()>0){
            insertBatch(insertSqlList);
        }
    }
    private String insertData(String adapterTableName, String stdTableName, String[] item1, String[] item2, Integer schemeId, 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.INSERT_INTO + adapterTableName + Constants.LEFT_BRACKET);
        for (String it : item1) {
            sql.append(it + Constants.COMMA);
        }
        sql.append("scheme_id" + Constants.RIGHT_BRACKET + Constants.LEFT_BRACKET + Constants.SELECT );
        for (String it : item2) {
            sql.append(it + Constants.COMMA);
        }
        sql.append(schemeId + Constants.FROM + stdTableName + Constants.WHERE + item + Constants.IN + idStr + Constants.RIGHT_BRACKET);
        return sql.toString();
    }
}

+ 147 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterDictService.java

@ -0,0 +1,147 @@
package com.yihu.ehr.standard.service.adapter;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.adapter.AdapterDictModel;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Iterator;
import java.util.List;
@Transactional
@Service("AdapterDictService")
public class AdapterDictService extends SQLGeneralDAO {
    public static final String BEAN_ID = "AdapterDictService";
    public AdapterDictService() {
    }
    public void finalize() throws Throwable {
        super.finalize();
    }
    public AdapterDictModel add(String adapterVersion, String dict) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterDictModel adapterDictModel = objectMapper.readValue(dict, AdapterDictModel.class);
            Session session = getCurrentSession();
            String sql = "select max(id) from " + version.getMetaDataTableName();
            Query query = session.createSQLQuery(sql);
            Object object = query.uniqueResult();
            adapterDictModel.setId(object == null ? 1 : Integer.parseInt(object.toString()) + 1);
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDictModel));
            SqlCreator sqlCreator = new SqlCreator(AdapterDictModel.class);
            sql = sqlCreator.insertData(version.getMetaDataTableName(), jsonNode);
            query = getExeuteQuery(sqlCreator, sql);
            query.executeUpdate();
            return adapterDictModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.SaveDictFailed);
        }
    }
    public void delete(String adapterVersion, Integer dictId) {
        try {
            if (adapterVersion == null || adapterVersion.length() == 0) {
                throw new ApiException(ErrorCode.InvalidStdVersion);
            }
            AdapterVersion version = new AdapterVersion(adapterVersion);
            Session session = getCurrentSession();
            String sql = "delete from " + version.getMetaDataTableName() + " where id = :id";
            Query query = session.createSQLQuery(sql);
            query.setInteger("id", dictId);
            query.executeUpdate();
        } catch (Exception e) {
            throw new ApiException(ErrorCode.DeleteDictFailed);
        }
    }
    public AdapterDictModel modify(String adapterVersion, String dict) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterDictModel adapterDictModel = objectMapper.readValue(dict, AdapterDictModel.class);
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDictModel));
            SqlCreator sqlCreator = new SqlCreator(AdapterDictModel.class);
            String sql = sqlCreator.updateDataByTableKey(version.getMetaDataTableName(), jsonNode);
            Query query = getExeuteQuery(sqlCreator, sql);
            query.executeUpdate();
            return adapterDictModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.UpdateDictFailed);
        }
    }
    public List getDictList(Class tClass, String adapterVersion, String condition, String order, Integer limit, Integer offset) {
        AdapterVersion version = new AdapterVersion(adapterVersion);
        String tableName = version.getDictTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.likeOrCondition("stdDictCode", "stdDictName", name);
            }
            if (!StringUtil.isEmpty(order)) {
                JsonNode jsonNode = objectMapper.readTree(order);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText().toUpperCase();
                    sqlCreator.order(fieldName, value);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        String sql = sqlCreator.selectData(tableName);
        Query query = getQuery(sqlCreator, sql);
        if (limit != null) {
            query.setMaxResults(limit);
            if (offset != null) {
                query.setFirstResult(offset * limit);
            }
        }
        return query.list();
    }
    public Integer getDictInt(Class tClass, String adapterVersion, String condition) {
        AdapterVersion version = new AdapterVersion(adapterVersion);
        String tableName = version.getDictTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.likeOrCondition("stdDictCode", "stdDictName", name);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        String sql = sqlCreator.countData(tableName);
        Query query = getCurrentSession().createSQLQuery(sql);
        for (String key : sqlCreator.getKeyValueMap().keySet()) {
            query.setParameter(key, sqlCreator.getKeyValueMap().get(key));
        }
        Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
        return count;
    }
}

+ 296 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterDictentryService.java

@ -0,0 +1,296 @@
package com.yihu.ehr.standard.service.adapter;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.adapter.AdapterDictModel;
import com.yihu.ehr.standard.model.adapter.AdapterDictentryModel;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeModel;
import com.yihu.ehr.standard.model.adapter.resultModel.AdapterDictEntryResultDetailModel;
import com.yihu.ehr.standard.model.standard.StdDictionaryModel;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import com.yihu.ehr.standard.service.bo.StandardVersion;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.*;
@Transactional
@Service("AdapterDictentryService")
public class AdapterDictentryService extends SQLGeneralDAO {
    public static final String BEAN_ID = "AdapterDictentryService";
    public AdapterDictentryService() {
    }
    public void finalize() throws Throwable {
        super.finalize();
    }
    public AdapterDictentryModel add(String adapterVersion, String dictentry) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterDictentryModel adapterDictentryModel = objectMapper.readValue(dictentry, AdapterDictentryModel.class);
            Session session = getCurrentSession();
            String sql = "select max(id) from " + version.getDictEntryTableName();
            Query query = session.createSQLQuery(sql);
            Object object = query.uniqueResult();
            adapterDictentryModel.setId(object == null ? 1 : Integer.parseInt(object.toString()) + 1);
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDictentryModel));
            SqlCreator sqlCreator = new SqlCreator(AdapterDictentryModel.class);
            sql = sqlCreator.insertData(version.getDictEntryTableName(), jsonNode);
            query = getExeuteQuery(sqlCreator, sql);
            query.executeUpdate();
            return adapterDictentryModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.saveDictEntryFailed);
        }
    }
    public void delete(String adapterVersion, Integer dictentryId) {
        try {
            if (adapterVersion == null || adapterVersion.length() == 0) throw new IllegalArgumentException("无效版本");
            AdapterVersion version = new AdapterVersion(adapterVersion);
            Session session = getCurrentSession();
            String sql = "delete from " + version.getDictEntryTableName() + " where id = :id";
            Query query = session.createSQLQuery(sql);
            query.setInteger("id", dictentryId);
            query.executeUpdate();
        } catch (Exception e) {
            throw new ApiException(ErrorCode.DeleteDictEntryFailed);
        }
    }
    public AdapterDictentryModel modify(String adapterVersion, String dictentry) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterDictentryModel adapterDictentryModel = objectMapper.readValue(dictentry, AdapterDictentryModel.class);
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDictentryModel));
            SqlCreator sqlCreator = new SqlCreator(AdapterDictentryModel.class);
            String sql = sqlCreator.updateDataByTableKey(version.getDictEntryTableName(), jsonNode);
            Query query = getExeuteQuery(sqlCreator, sql);
            query.executeUpdate();
            return adapterDictentryModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.UpdateDictEntryFailed);
        }
    }
    public List getDictEntryList(Class tClass, String adapterVersion, String condition, String order, Integer limit, Integer offset) {
        AdapterVersion version = new AdapterVersion(adapterVersion);
        String tableName = version.getDictEntryTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        if (!StringUtil.isEmpty(condition)) {
            try {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.equalCondition("stdDictId", jsonNode.get("stdDictId").asInt());
                sqlCreator.likeOrCondition("stdEntryCode", "stdEntryValue", name);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
            if (!StringUtil.isEmpty(order)) {
                JsonNode jsonNode = objectMapper.readTree(order);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText().toUpperCase();
                    sqlCreator.order(fieldName, value);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        String sql = sqlCreator.selectData(tableName);
        Query query = getQuery(sqlCreator, sql);
        if (limit != null) {
            query.setMaxResults(limit);
            if (offset != null) {
                query.setFirstResult(offset * limit);
            }
        }
        List<AdapterDictentryModel> modelList = query.list();
        List<Integer> idList = new ArrayList<>();
        Map<Integer, StdDictionaryModel> stdDictModelMap = new HashMap<>();
        Integer schemeId = null;
        for (AdapterDictentryModel model : modelList) {
            if (model.getAdapterDictId() != null) {
                schemeId = model.getSchemeId();
                idList.add(model.getAdapterDictId());
            }
        }
        if (!CollectionUtil.isEmpty(idList)) {
            AdapterSchemeModel scheme = getEntity(AdapterSchemeModel.class, schemeId);
            StandardVersion standardVersion = new StandardVersion(scheme.getAdapterStdVersion());
            tableName = standardVersion.getDictTableName();
            sqlCreator = new SqlCreator(StdDictionaryModel.class);
            sqlCreator.inCondition("id", idList);
            sql = sqlCreator.selectData(tableName);
            query = getQuery(sqlCreator, sql);
            List<StdDictionaryModel> stdDictModelList = query.list();
            for (StdDictionaryModel model : stdDictModelList) {
                stdDictModelMap.put(model.getId(), model);
            }
        }
        List<AdapterDictEntryResultDetailModel> detailModelList = new ArrayList<>();
        for (AdapterDictentryModel model : modelList) {
            AdapterDictEntryResultDetailModel detailModel = new AdapterDictEntryResultDetailModel();
            detailModel.setId(model.getId());
            detailModel.setSchemeId(model.getSchemeId());
            detailModel.setAdapterDictId(model.getAdapterDictId());
            detailModel.setAdapterEntryId(model.getAdapterEntryId());
            detailModel.setAdapterEntryCode(model.getAdapterEntryCode());
            detailModel.setAdapterEntryValue(model.getAdapterEntryValue());
            detailModel.setStdDictId(model.getStdDictId());
            detailModel.setStdEntryId(model.getStdEntryId());
            detailModel.setStdEntryCode(model.getStdEntryCode());
            detailModel.setStdEntryValue(model.getStdEntryValue());
            if (stdDictModelMap.get(model.getAdapterDictId()) != null) {
                detailModel.setAdapterDictCode(stdDictModelMap.get(model.getAdapterDictId()).getCode());
                detailModel.setAdapterDictName(stdDictModelMap.get(model.getAdapterDictId()).getName());
            }
            detailModelList.add(detailModel);
        }
        return detailModelList;
    }
    public Integer getDictEntryInt(Class tClass, String adapterVersion, String condition) {
        AdapterVersion version = new AdapterVersion(adapterVersion);
        String tableName = version.getDictEntryTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        if (!StringUtil.isEmpty(condition)) {
            try {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.equalCondition("stdDictId", jsonNode.get("stdDictId").asInt());
                sqlCreator.likeOrCondition("stdEntryCode", "stdEntryValue", name);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        String sql = sqlCreator.countData(tableName);
        Query query = getCurrentSession().createSQLQuery(sql);
        for (String key : sqlCreator.getKeyValueMap().keySet()) {
            query.setParameter(key, sqlCreator.getKeyValueMap().get(key));
        }
        Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
        return count;
    }
    public List<AdapterDictEntryResultDetailModel> updateDictEntrys(String adapterVersion, String list) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            List<AdapterDictEntryResultDetailModel> adapterDictEntryList = Arrays.asList(objectMapper.readValue(list, AdapterDictEntryResultDetailModel[].class));
            List<Integer> idList = new ArrayList<>();
            Map<Integer, AdapterDictEntryResultDetailModel> dictEntryResultMap = new HashMap<>();
            Integer maxId = null;
            for (AdapterDictEntryResultDetailModel dictEntryModel : adapterDictEntryList) {
                AdapterDictentryModel adapterDictentryModel = new AdapterDictentryModel();
                adapterDictentryModel.setId(dictEntryModel.getId());
                adapterDictentryModel.setSchemeId(dictEntryModel.getSchemeId());
                adapterDictentryModel.setAdapterDictId(dictEntryModel.getAdapterDictId());
                adapterDictentryModel.setAdapterEntryId(dictEntryModel.getAdapterEntryId());
                adapterDictentryModel.setAdapterEntryCode(dictEntryModel.getAdapterEntryCode());
                adapterDictentryModel.setAdapterEntryValue(dictEntryModel.getAdapterEntryValue());
                adapterDictentryModel.setStdDictId(dictEntryModel.getStdDictId());
                adapterDictentryModel.setStdEntryId(dictEntryModel.getStdEntryId());
                adapterDictentryModel.setStdEntryCode(dictEntryModel.getStdEntryCode());
                adapterDictentryModel.setStdEntryValue(dictEntryModel.getStdEntryValue());
                idList.add(dictEntryModel.getStdDictId());
                dictEntryResultMap.put(dictEntryModel.getStdDictId(), dictEntryModel);
                SqlCreator sqlCreator = new SqlCreator(AdapterDictentryModel.class);
                String sql;
                if (dictEntryModel.getId() == null) {
                    if (maxId == null) {
                        sql = "select max(id) from " + version.getDictEntryTableName();
                        Query query = getCurrentSession().createSQLQuery(sql);
                        Object object = query.uniqueResult();
                        maxId = object == null ? 1 : Integer.parseInt(object.toString()) + 1;
                    }
                    adapterDictentryModel.setId(maxId++);
                    JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDictentryModel));
                    sql = sqlCreator.insertData(version.getDictEntryTableName(), jsonNode);
                } else {
                    JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterDictentryModel));
                    sql = sqlCreator.updateDataByTableKey(version.getDictEntryTableName(), jsonNode);
                }
                Query query = getExeuteQuery(sqlCreator, sql);
                query.executeUpdate();
            }
            if (!CollectionUtil.isEmpty(idList)) {
                String tableName = version.getDictTableName();
                SqlCreator sqlCreator = new SqlCreator(AdapterDictModel.class);
                sqlCreator.inCondition("stdDictId", idList);
                String sql = sqlCreator.selectData(tableName);
                Query query = getQuery(sqlCreator, sql);
                List<AdapterDictModel> adapterDictModelList = query.list();
                for (AdapterDictModel model : adapterDictModelList) {
                    AdapterDictEntryResultDetailModel dictentryModel = dictEntryResultMap.get(model.getStdDictId());
                    model.setAdapterDictId(dictentryModel.getAdapterDictId());
                    model.setAdapterDictCode(dictentryModel.getAdapterDictCode());
                    model.setAdapterDictName(dictentryModel.getAdapterDictName());
                    JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(model));
                    sqlCreator = new SqlCreator(AdapterDictModel.class);
                    sql = sqlCreator.updateDataByTableKey(version.getDictTableName(), jsonNode);
                    query = getExeuteQuery(sqlCreator, sql);
                    query.executeUpdate();
                }
            }
            return adapterDictEntryList;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.saveDictEntryFailed);
        }
    }
    public void deleteMultiple(String adapterVersion, Integer dictEntryId, Integer stdDictId, Integer adapterDictId) {
        try {
            if (adapterVersion == null || adapterVersion.length() == 0) {
                throw new ApiException(ErrorCode.InvalidStdVersion);
            }
            AdapterVersion version = new AdapterVersion(adapterVersion);
            Session session = getCurrentSession();
            String sql = "delete from " + version.getDictEntryTableName() + " where id = :id";
            Query query = session.createSQLQuery(sql);
            query.setInteger("id", dictEntryId);
            query.executeUpdate();
            SqlCreator sqlCreator = new SqlCreator(AdapterDictentryModel.class);
            sqlCreator.equalCondition("stdDictId", stdDictId);
            sqlCreator.equalCondition("adapterDictId", adapterDictId);
            sql = sqlCreator.countData(version.getDictEntryTableName());
            query = getExeuteQuery(sqlCreator, sql);
            Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
            if (count == 0) {
                sql = "delete from " + version.getDictTableName() + " where std_dict_id = :stdDictId and adapter_dict_id = :adapterDictId";
                query = session.createSQLQuery(sql);
                query.setInteger("stdDictId", stdDictId);
                query.setInteger("adapterDictId", adapterDictId);
                query.executeUpdate();
            }
        } catch (Exception e) {
            throw new ApiException(ErrorCode.DeleteDictEntryFailed);
        }
    }
}

+ 351 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterMetadataService.java

@ -0,0 +1,351 @@
package com.yihu.ehr.standard.service.adapter;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.adapter.AdapterDatasetModel;
import com.yihu.ehr.standard.model.adapter.AdapterMetadataModel;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeModel;
import com.yihu.ehr.standard.model.adapter.resultModel.AdapterMetadataResultDetailModel;
import com.yihu.ehr.standard.model.adapter.resultModel.ApiMetadataResultDetailModel;
import com.yihu.ehr.standard.model.standard.StdDataSetModel;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import com.yihu.ehr.standard.service.bo.StandardVersion;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.*;
@Transactional
@Service("AdapterMetadataService")
public class AdapterMetadataService extends SQLGeneralDAO {
    public static final String BEAN_ID = "AdapterMetadataService";
    public AdapterMetadataService() {
    }
    public void finalize() throws Throwable {
        super.finalize();
    }
    public AdapterMetadataModel add(String adapterVersion, String metadata) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterMetadataModel adapterMetadataModel = objectMapper.readValue(metadata, AdapterMetadataModel.class);
            Session session = getCurrentSession();
            String sql = "select max(id) from " + version.getMetaDataTableName();
            Query query = session.createSQLQuery(sql);
            Object object = query.uniqueResult();
            adapterMetadataModel.setId(object == null ? 1 : Integer.parseInt(object.toString()) + 1);
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterMetadataModel));
            SqlCreator sqlCreator = new SqlCreator(AdapterMetadataModel.class);
            sql = sqlCreator.insertData(version.getMetaDataTableName(), jsonNode);
            query = getExeuteQuery(sqlCreator, sql);
            query.executeUpdate();
            return adapterMetadataModel;
        } catch (Exception e) {
           throw new ApiException(ErrorCode.SaveMetaDataFailed);
        }
    }
    public void delete(String adapterVersion, Integer metadataId) {
        try {
            if (adapterVersion == null || adapterVersion.length() == 0) {
                throw new ApiException(ErrorCode.InvalidStdVersion);
            }
            AdapterVersion version = new AdapterVersion(adapterVersion);
            Session session = getCurrentSession();
            String sql = "delete from " + version.getMetaDataTableName() + " where id = :id";
            Query query = session.createSQLQuery(sql);
            query.setInteger("id", metadataId);
            query.executeUpdate();
        } catch (Exception e) {
            throw new ApiException(ErrorCode.SaveMetaDataFailed);
        }
    }
    public AdapterMetadataModel modify(String adapterVersion, String metadata) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterMetadataModel adapterMetadataModel = objectMapper.readValue(metadata, AdapterMetadataModel.class);
            JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterMetadataModel));
            SqlCreator sqlCreator = new SqlCreator(AdapterMetadataModel.class);
            String sql = sqlCreator.updateDataByTableKey(version.getMetaDataTableName(), jsonNode);
            Query query = getExeuteQuery(sqlCreator, sql);
            query.executeUpdate();
            return adapterMetadataModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.UpdateMetaDataFailed);
        }
    }
    public List getMetadataList(Class tClass, String adapterVersion, String condition, String order, Integer limit, Integer offset) {
        AdapterVersion version = new AdapterVersion(adapterVersion);
        String tableName = version.getMetaDataTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        if (!StringUtil.isEmpty(condition)) {
            try {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.equalCondition("stdDatasetId", jsonNode.get("stdDatasetId").asInt());
                sqlCreator.likeOrCondition("stdMetadataCode", "stdMetadataName", name);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
            if (!StringUtil.isEmpty(order)) {
                JsonNode jsonNode = objectMapper.readTree(order);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText().toUpperCase();
                    sqlCreator.order(fieldName, value);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        String sql = sqlCreator.selectData(tableName);
        Query query = getQuery(sqlCreator, sql);
        if (limit != null) {
            query.setMaxResults(limit);
            if (offset != null) {
                query.setFirstResult(offset * limit);
            }
        }
        List<AdapterMetadataModel> modelList = query.list();
        List<Integer> idList = new ArrayList<>();
        Map<Integer, StdDataSetModel> stdDatasetModelMap = new HashMap<>();
        Integer schemeId = null;
        for (AdapterMetadataModel model : modelList) {
            if (model.getAdapterDatasetId() != null) {
                schemeId = model.getSchemeId();
                idList.add(model.getAdapterDatasetId());
            }
        }
        if (!CollectionUtil.isEmpty(idList)) {
            AdapterSchemeModel scheme = getEntity(AdapterSchemeModel.class, schemeId);
            StandardVersion standardVersion = new StandardVersion(scheme.getAdapterStdVersion());
            tableName = standardVersion.getDataSetTableName();
            sqlCreator = new SqlCreator(StdDataSetModel.class);
            sqlCreator.inCondition("id", idList);
            sql = sqlCreator.selectData(tableName);
            query = getQuery(sqlCreator, sql);
            List<StdDataSetModel> stdDatasetModelList = query.list();
            for (StdDataSetModel model : stdDatasetModelList) {
                stdDatasetModelMap.put(model.getId(), model);
            }
        }
        List<ApiMetadataResultDetailModel> detailModelList = new ArrayList<>();
        for (AdapterMetadataModel model : modelList) {
            ApiMetadataResultDetailModel detailModel = new ApiMetadataResultDetailModel();
            detailModel.setId(model.getId());
            detailModel.setSchemeId(model.getSchemeId());
            detailModel.setAdapterDatasetId(model.getAdapterDatasetId());
            detailModel.setAdapterDictId(model.getAdapterDictId());
            detailModel.setAdapterDataType(model.getAdapterDataType());
            detailModel.setAdapterMetadataId(model.getAdapterMetadataId());
            detailModel.setAdapterMetadataCode(model.getAdapterMetadataCode());
            detailModel.setAdapterMetadataName(model.getAdapterMetadataName());
            detailModel.setAdapterDictId(model.getAdapterDictId());
            detailModel.setStdDictId(model.getStdDictId());
            detailModel.setStdDatasetId(model.getStdDatasetId());
            detailModel.setStdMetadataId(model.getStdMetadataId());
            detailModel.setStdMetadataCode(model.getStdMetadataCode());
            detailModel.setStdMetadataName(model.getStdMetadataName());
            if (stdDatasetModelMap.get(model.getAdapterDatasetId()) != null) {
                detailModel.setAdapterDatasetCode(stdDatasetModelMap.get(model.getAdapterDatasetId()).getCode());
                detailModel.setAdapterDatasetName(stdDatasetModelMap.get(model.getAdapterDatasetId()).getName());
            }
            detailModelList.add(detailModel);
        }
        return detailModelList;
    }
    public Integer getMetadataCount(Class tClass, String adapterVersion, String condition) {
        AdapterVersion version = new AdapterVersion(adapterVersion);
        String tableName = version.getMetaDataTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        if (!StringUtil.isEmpty(condition)) {
            try {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.equalCondition("stdDatasetId", jsonNode.get("stdDatasetId").asInt());
                sqlCreator.likeOrCondition("stdMetadataCode", "stdMetadataName", name);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        String sql = sqlCreator.countData(tableName);
        Query query = getCurrentSession().createSQLQuery(sql);
        for (String key : sqlCreator.getKeyValueMap().keySet()) {
            query.setParameter(key, sqlCreator.getKeyValueMap().get(key));
        }
        Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
        return count;
    }
    public List getInfoList(String adapterVersion, String condition, String order, Integer limit, Integer offset) {
        AdapterVersion version = new AdapterVersion(adapterVersion);
        List<AdapterMetadataModel> metadataModelList = getList(AdapterMetadataModel.class, version.getMetaDataTableName(), condition, order, limit, offset, ErrorCode.GetMetaDataListFaield);
        List<Integer> idList = new ArrayList<>();
        Map<Integer, StdMetaDataModel> stdMetaDataModelMap = new HashMap<>();
        Integer schemeId = null;
        for (AdapterMetadataModel model : metadataModelList) {
            if (model.getAdapterMetadataId() != null) {
                idList.add(model.getAdapterMetadataId());
                schemeId = model.getSchemeId();
            }
        }
        if (!CollectionUtil.isEmpty(idList)) {
            AdapterSchemeModel scheme = getEntity(AdapterSchemeModel.class, schemeId);
            StandardVersion standardVersion = new StandardVersion(scheme.getAdapterStdVersion());
            String tableName = standardVersion.getMetaDataTableName();
            SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
            sqlCreator.inCondition("id", idList);
            String sql = sqlCreator.selectData(tableName);
            Query query = getQuery(sqlCreator, sql);
            List<StdMetaDataModel> stdMetadataModelList = query.list();
            for (StdMetaDataModel model : stdMetadataModelList) {
                stdMetaDataModelMap.put(model.getId(), model);
            }
        }
        List<AdapterMetadataResultDetailModel> detailModelList = new ArrayList<>();
        for (AdapterMetadataModel model : metadataModelList) {
            AdapterMetadataResultDetailModel detailModel = new AdapterMetadataResultDetailModel();
            detailModel.setId(model.getId());
            detailModel.setSchemeId(model.getSchemeId());
            detailModel.setAdapterDatasetId(model.getAdapterDatasetId());
            detailModel.setAdapterDictId(model.getAdapterDictId());
            detailModel.setAdapterDataType(model.getAdapterDataType());
            detailModel.setAdapterMetadataId(model.getAdapterMetadataId());
            detailModel.setAdapterMetadataCode(model.getAdapterMetadataCode());
            detailModel.setAdapterMetadataName(model.getAdapterMetadataName());
            detailModel.setAdapterDictId(model.getAdapterDictId());
            detailModel.setStdDictId(model.getStdDictId());
            detailModel.setStdDatasetId(model.getStdDatasetId());
            detailModel.setStdMetadataCode(model.getStdMetadataCode());
            detailModel.setStdMetadataName(model.getStdMetadataName());
            if (stdMetaDataModelMap.get(model.getAdapterMetadataId()) != null) {
                detailModel.setAdapterMetadataType(stdMetaDataModelMap.get(model.getAdapterMetadataId()).getColumnType());
            }
            detailModelList.add(detailModel);
        }
        return detailModelList;
    }
    public List<ApiMetadataResultDetailModel> updateMetadatas(String adapterVersion, String list) {
        try {
            AdapterVersion version = new AdapterVersion(adapterVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            List<ApiMetadataResultDetailModel> adapterMetadataList = Arrays.asList(objectMapper.readValue(list, ApiMetadataResultDetailModel[].class));
            List<String> sqlList = new ArrayList<>();
            List<Integer> idList = new ArrayList<>();
            Map<Integer, ApiMetadataResultDetailModel> metadataResultMap = new HashMap<>();
            for (ApiMetadataResultDetailModel metadataModel : adapterMetadataList) {
                AdapterMetadataModel adapterMetadataModel = new AdapterMetadataModel();
                adapterMetadataModel.setId(metadataModel.getId());
                adapterMetadataModel.setSchemeId(metadataModel.getSchemeId());
                adapterMetadataModel.setAdapterDatasetId(metadataModel.getAdapterDatasetId());
                adapterMetadataModel.setAdapterDictId(metadataModel.getAdapterDictId());
                adapterMetadataModel.setAdapterDataType(metadataModel.getAdapterDataType());
                adapterMetadataModel.setAdapterMetadataId(metadataModel.getAdapterMetadataId());
                adapterMetadataModel.setAdapterMetadataCode(metadataModel.getAdapterMetadataCode());
                adapterMetadataModel.setAdapterMetadataName(metadataModel.getAdapterMetadataName());
                adapterMetadataModel.setAdapterDictId(metadataModel.getAdapterDictId());
                adapterMetadataModel.setStdDictId(metadataModel.getStdDictId());
                adapterMetadataModel.setStdMetadataId(metadataModel.getStdMetadataId());
                adapterMetadataModel.setStdDatasetId(metadataModel.getStdDatasetId());
                adapterMetadataModel.setStdMetadataCode(metadataModel.getStdMetadataCode());
                adapterMetadataModel.setStdMetadataName(metadataModel.getStdMetadataName());
                idList.add(metadataModel.getStdDatasetId());
                metadataResultMap.put(metadataModel.getStdDatasetId(), metadataModel);
                JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(adapterMetadataModel));
                SqlCreator sqlCreator = new SqlCreator(AdapterMetadataModel.class);
                String sql = sqlCreator.updateDataByTableKey(version.getMetaDataTableName(), jsonNode);
                sqlList.add(sql);
                Query query = getExeuteQuery(sqlCreator, sql);
                query.executeUpdate();
            }
            if (!CollectionUtil.isEmpty(idList)) {
                String tableName = version.getDataSetTableName();
                SqlCreator sqlCreator = new SqlCreator(AdapterDatasetModel.class);
                sqlCreator.inCondition("stdDatasetId", idList);
                String sql = sqlCreator.selectData(tableName);
                Query query = getQuery(sqlCreator, sql);
                List<AdapterDatasetModel> adapterDatasetModelList = query.list();
                for (AdapterDatasetModel model : adapterDatasetModelList) {
                    ApiMetadataResultDetailModel metadataModel = metadataResultMap.get(model.getStdDatasetId());
                    model.setAdapterDatasetId(metadataModel.getAdapterDatasetId());
                    model.setAdapterDatasetCode(metadataModel.getAdapterDatasetCode());
                    model.setAdapterDatasetName(metadataModel.getAdapterDatasetName());
                    JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(model));
                    sqlCreator = new SqlCreator(AdapterDatasetModel.class);
                    sql = sqlCreator.updateDataByTableKey(version.getDataSetTableName(), jsonNode);
                    sqlList.add(sql);
                    query = getExeuteQuery(sqlCreator, sql);
                    query.executeUpdate();
                }
            }
            return adapterMetadataList;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.SaveMetaDataFailed);
        }
    }
    public void deleteMultiple(String adapterVersion, Integer metadataId, Integer stdDatasetId, Integer adapterDatasetId) {
        try {
            if (adapterVersion == null || adapterVersion.length() == 0) {
                throw new ApiException(ErrorCode.InvalidStdVersion);
            }
            AdapterVersion version = new AdapterVersion(adapterVersion);
            Session session = getCurrentSession();
            String sql = "delete from " + version.getMetaDataTableName() + " where id = :id";
            Query query = session.createSQLQuery(sql);
            query.setInteger("id", metadataId);
            query.executeUpdate();
            SqlCreator sqlCreator = new SqlCreator(AdapterMetadataModel.class);
            sqlCreator.equalCondition("stdDatasetId", stdDatasetId);
            sqlCreator.equalCondition("adapterDatasetId", adapterDatasetId);
            sql = sqlCreator.countData(version.getMetaDataTableName());
            query = getExeuteQuery(sqlCreator, sql);
            Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
            if (count == 0) {
                sql = "delete from " + version.getDataSetTableName() + " where std_dataset_id = :stdDatasetId and adapter_dataset_id = :adapterDatasetId";
                query = session.createSQLQuery(sql);
                query.setInteger("stdDatasetId", stdDatasetId);
                query.setInteger("adapterDatasetId", adapterDatasetId);
                query.executeUpdate();
            }
        } catch (Exception e) {
            throw new ApiException(ErrorCode.DeleteDictEntryFailed);
        }
    }
}

+ 59 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterSchemeDispatchService.java

@ -0,0 +1,59 @@
package com.yihu.ehr.standard.service.adapter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeDispatchModel;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
 * @created lingfeng 2015/12/25.
 */
@Transactional
@Service("AdapterSchemeDispatchService")
public class AdapterSchemeDispatchService extends SQLGeneralDAO {
    public static final String BEAN_ID = "AdapterSchemeDispatchService";
    public AdapterSchemeDispatchModel add(String dispatcher) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterSchemeDispatchModel model = objectMapper.readValue(dispatcher, AdapterSchemeDispatchModel.class);
            saveEntity(model);
            return model;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.SaveSchemeFailed);
        }
    }
    public void delete(Integer dispatchId) {
        try {
            AdapterSchemeDispatchModel model = getEntity(AdapterSchemeDispatchModel.class, dispatchId);
            deleteEntity(model);
        } catch (Exception e) {
            throw new ApiException(ErrorCode.DeleteSchemeFailed);
        }
    }
    public AdapterSchemeDispatchModel update(String dispatcher) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterSchemeDispatchModel model = objectMapper.readValue(dispatcher, AdapterSchemeDispatchModel.class);
            updateEntity(model);
            return model;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.UpdateSchemeFailed);
        }
    }
    public AdapterSchemeDispatchModel get(Integer dispatchId) {
        try {
            AdapterSchemeDispatchModel model = getEntity(AdapterSchemeDispatchModel.class, dispatchId);
            return model;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.GetSchemeFailed);
        }
    }
}

+ 256 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterSchemeService.java

@ -0,0 +1,256 @@
package com.yihu.ehr.standard.service.adapter;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeModel;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeVersionModel;
import com.yihu.ehr.standard.model.adapter.resultModel.SchemeResultDetailModel;
import com.yihu.ehr.standard.model.standard.StandardModel;
import com.yihu.ehr.standard.model.standard.StandardVersionModel;
import org.hibernate.Query;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @created lingfeng 2015/12/25.
 */
@Transactional
@Service("AdapterSchemeService")
public class AdapterSchemeService extends SQLGeneralDAO {
    public static final String BEAN_ID = "AdapterSchemeService";
    public AdapterSchemeModel add(String scheme) {
        Boolean existFlg = false;
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterSchemeModel model = objectMapper.readValue(scheme, AdapterSchemeModel.class);
            existFlg = schemeNameValidate(model.getName());
            if (!existFlg) {
                model.setStatus(0);
                saveEntity(model);
            }
            return model;
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistSchemeName);
        } else {
            throw new ApiException(ErrorCode.SaveSchemeFailed);
        }
    }
    public Boolean schemeNameValidate(String name) {
        String sql = "FROM AdapterSchemeModel WHERE name = :name";
        Query query = getCurrentSession().createQuery(sql);
        query.setParameter("name", name);
        List<AdapterSchemeModel> list = query.list();
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public void delete(Integer schemeId) {
        Boolean existFlg = false;
        try {
            AdapterSchemeModel model = getEntity(AdapterSchemeModel.class, schemeId);
            existFlg = existSchemeVersionValid(schemeId);
            if (!existFlg) {
                deleteEntity(model);
                return;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistSchemeVersion);
        } else {
            throw new ApiException(ErrorCode.DeleteSchemeFailed);
        }
    }
    public Boolean schemeNameValidate(Integer schemeId, String name) {
        String sql = "FROM AdapterSchemeModel WHERE name = :name and id != :schemeId";
        Query query = getCurrentSession().createQuery(sql);
        query.setParameter("name", name);
        query.setParameter("schemeId", schemeId);
        List<AdapterSchemeModel> list = query.list();
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public AdapterSchemeModel update(String scheme) {
        Boolean existFlg = false;
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterSchemeModel model = objectMapper.readValue(scheme, AdapterSchemeModel.class);
            existFlg = schemeNameValidate(model.getId(), model.getName());
            if (!existFlg) {
                updateEntity(model);
                return model;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistSchemeName);
        } else {
            throw new ApiException(ErrorCode.UpdateSchemeFailed);
        }
    }
    public AdapterSchemeModel get(Integer schemeId) {
        try {
            AdapterSchemeModel model = getEntity(AdapterSchemeModel.class, schemeId);
            return model;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.GetSchemeFailed);
        }
    }
    public List<SchemeResultDetailModel> getSchemeList(String condition) {
        String name = Constants.EMPTY;
        if (!StringUtil.isEmpty(condition)) {
            ObjectMapper objectMapper = new ObjectMapper();
            try {
                JsonNode jsonNode = objectMapper.readTree(condition);
                if (jsonNode.get("name") != null) {
                    name = jsonNode.get("name").asText();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        String schemeHql = "FROM AdapterSchemeModel";
        Query query = getCurrentSession().createQuery(schemeHql);
        List<AdapterSchemeModel> adapterSchemeModelList = query.list();
        List<Integer> schemeIdList = new ArrayList<>();
        List<Integer> stdIdList = new ArrayList<>();
        List<String> versionList = new ArrayList<>();
        Map<Integer, AdapterSchemeVersionModel> schemeVersionMap = new HashMap<>();
        Map<Integer, StandardModel> stdMap = new HashMap<>();
        Map<String, StandardVersionModel> stdVersionMap = new HashMap<>();
        for (AdapterSchemeModel adapterSchemeModel : adapterSchemeModelList) {
            schemeIdList.add(adapterSchemeModel.getId());
            stdIdList.add(adapterSchemeModel.getStdId());
            stdIdList.add(adapterSchemeModel.getAdapterStdId());
            versionList.add(adapterSchemeModel.getStdVersion());
            versionList.add(adapterSchemeModel.getAdapterStdVersion());
        }
        if (CollectionUtil.isEmpty(schemeIdList)) {
            schemeIdList.add(null);
        }
        if (CollectionUtil.isEmpty(stdIdList)) {
            stdIdList.add(null);
        }
        if (CollectionUtil.isEmpty(versionList)) {
            versionList.add(Constants.EMPTY);
        }
        String adapterVersionHql = "FROM AdapterSchemeVersionModel WHERE schemeId IN :schemeIdList";
        query = getCurrentSession().createQuery(adapterVersionHql);
        query.setParameterList("schemeIdList", schemeIdList);
        List<AdapterSchemeVersionModel> versionModelList = query.list();
        for (AdapterSchemeVersionModel model : versionModelList) {
            schemeVersionMap.put(model.getId(), model);
        }
        String standardHql = "FROM StandardModel WHERE id IN :stdIdList";
        query = getCurrentSession().createQuery(standardHql);
        query.setParameterList("stdIdList", stdIdList);
        List<StandardModel> stdModelList = query.list();
        for (StandardModel model : stdModelList) {
            stdMap.put(model.getId(), model);
        }
        String stdVersionHql = "FROM StandardVersionModel WHERE version IN :versionList";
        query = getCurrentSession().createQuery(stdVersionHql);
        query.setParameterList("versionList", versionList);
        List<StandardVersionModel> stdVersionList = query.list();
        for (StandardVersionModel model : stdVersionList) {
            stdVersionMap.put(model.getVersion(), model);
        }
        List<SchemeResultDetailModel> resultDetailModelList = new ArrayList<>();
        Map<String, SchemeResultDetailModel> resultDetailModelMap = new HashMap<>();
        Map<String, SchemeResultDetailModel> resultDetailModelCheckMap = new HashMap<>();
        Map<String, SchemeResultDetailModel> resultDetailModelAddMap = new HashMap<>();
        for (AdapterSchemeModel schemeModel : adapterSchemeModelList) {
            String id = "scheme" + schemeModel.getId();
            SchemeResultDetailModel resultDetailModel = new SchemeResultDetailModel();
            resultDetailModel.setId(id);
            resultDetailModel.setPid("");
            resultDetailModel.setType(0);
            resultDetailModel.setName(schemeModel.getName());
            resultDetailModel.setStdName(stdMap.get(schemeModel.getStdId()).getName());
            resultDetailModel.setStdVersion(stdVersionMap.get(schemeModel.getStdVersion()).getVersion());
            resultDetailModel.setStdVersionName(stdVersionMap.get(schemeModel.getStdVersion()).getName());
            resultDetailModel.setPublisher(stdMap.get(schemeModel.getAdapterStdId()) == null ? "" : stdMap.get(schemeModel.getAdapterStdId()).getPublisher());
            resultDetailModel.setAdapterName(stdMap.get(schemeModel.getAdapterStdId())==null?"":stdMap.get(schemeModel.getAdapterStdId()).getName());
            if (stdVersionMap.get(schemeModel.getAdapterStdVersion()) != null) {
                resultDetailModel.setAdapterVersionName(stdVersionMap.get(schemeModel.getAdapterStdVersion()).getName());
                resultDetailModel.setAdapterStdVersion(stdVersionMap.get(schemeModel.getAdapterStdVersion()).getVersion());
            }
            if (StringUtil.isEmpty(name) || schemeModel.getName().contains(name)) {
                resultDetailModelCheckMap.put(id, resultDetailModel);
                resultDetailModelAddMap.put(id, resultDetailModel);
                resultDetailModelList.add(resultDetailModel);
            }
            resultDetailModelMap.put(id, resultDetailModel);
        }
        for (AdapterSchemeVersionModel versionModel : versionModelList) {
            String pid = "scheme" + versionModel.getSchemeId();
            String id = "version" + versionModel.getId();
            SchemeResultDetailModel resultDetailModel = new SchemeResultDetailModel();
            resultDetailModel.setId(id);
            resultDetailModel.setPid(pid);
            resultDetailModel.setName(versionModel.getName());
            resultDetailModel.setStatus(versionModel.getPublishStatus());
            resultDetailModel.setDate(StringUtil.toString(versionModel.getPublishTime()));
            resultDetailModel.setVersion(versionModel.getVersion());
            resultDetailModel.setType(1);
            if (resultDetailModelCheckMap.containsKey(pid)) {
                resultDetailModelList.add(resultDetailModel);
            } else if (StringUtil.isEmpty(name) || versionModel.getName().contains(name)) {
                resultDetailModelList.add(resultDetailModel);
                if (!resultDetailModelAddMap.containsKey(pid)) {
                    resultDetailModelAddMap.put(pid, resultDetailModelMap.get(resultDetailModel.getPid()));
                    resultDetailModelList.add(resultDetailModelMap.get(resultDetailModel.getPid()));
                }
            }
        }
        return resultDetailModelList;
    }
    public boolean existSchemeVersionValid(Integer schemeId) {
        String hql="FROM AdapterSchemeVersionModel WHERE schemeId = :schemeId";
        Query query = getCurrentSession().createQuery(hql);
        query.setParameter("schemeId", schemeId);
        List<AdapterSchemeVersionModel> schemeVersionModelList = query.list();
        if (!CollectionUtil.isEmpty(schemeVersionModelList)) {
            return true;
        }
        return false;
    }
}

+ 356 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/adapter/AdapterSchemeVersionService.java

@ -0,0 +1,356 @@
package com.yihu.ehr.standard.service.adapter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeModel;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeVersionModel;
import com.yihu.ehr.standard.model.adapter.resultModel.SchemeVersionResultDetailModel;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
import com.yihu.ehr.standard.service.bo.AdapterVersion;
import com.yihu.ehr.standard.service.bo.StandardVersion;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
 * @Created by lingfeng 2015/12/25.
 */
@Transactional
@Service("AdapterSchemeVersionService")
public class AdapterSchemeVersionService extends SQLGeneralDAO {
    public static final String BEAN_ID = "AdapterSchemeVersionService";
    public AdapterSchemeVersionModel add(String version) {
        Boolean existFlg = false;
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterSchemeVersionModel versionModel = objectMapper.readValue(version, AdapterSchemeVersionModel.class);
            existFlg = schemeVersionNameValidate(versionModel.getSchemeId(), versionModel.getName());
            if (!existFlg) {
                AdapterVersion adapterVersion = AdapterVersion.generateVersion();
                versionModel.setVersion(adapterVersion.getVersion());
                versionModel.setPublishStatus(0);
                saveEntity(versionModel);
                if (!StringUtil.isEmpty(versionModel.getBaseVersion())) {
                    AdapterSchemeVersionModel baseVersionModel = getByVersion(versionModel.getBaseVersion());
                    AdapterVersion baseVersion = new AdapterVersion(baseVersionModel.getVersion());
                    AdapterVersion newVersion = new AdapterVersion(versionModel.getVersion());
                    buildVersionTables(baseVersion, newVersion);
                } else {
                    buildVersionTables(versionModel);
                }
                return versionModel;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistSchemeVersionName);
        } else {
            throw new ApiException(ErrorCode.SaveSchemeVersionFailed);
        }
    }
    public Boolean schemeVersionNameValidate(Integer schemeId, String name) {
        String sql = "FROM AdapterSchemeVersionModel WHERE schemeId = :schemeId and name = :name";
        Query query = getCurrentSession().createQuery(sql);
        query.setParameter("schemeId", schemeId);
        query.setParameter("name", name);
        List<AdapterSchemeVersionModel> list = query.list();
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public AdapterSchemeVersionModel update(String version) {
        Boolean existFlg = false;
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            AdapterSchemeVersionModel versionModel = objectMapper.readValue(version, AdapterSchemeVersionModel.class);
            existFlg = schemeVersionNameValidate(versionModel.getSchemeId(), versionModel.getId(), versionModel.getName());
            if (!existFlg) {
                updateEntity(versionModel);
                return versionModel;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistSchemeVersionName);
        } else {
            throw new ApiException(ErrorCode.UpdateSchemeVersionFailed);
        }
    }
    public Boolean schemeVersionNameValidate(Integer schemeId, Integer versionId, String name) {
        String sql = "FROM AdapterSchemeVersionModel WHERE schemeId = :schemeId and name = :name and id != :versionId";
        Query query = getCurrentSession().createQuery(sql);
        query.setParameter("schemeId", schemeId);
        query.setParameter("name", name);
        query.setParameter("versionId", versionId);
        List<AdapterSchemeVersionModel> list = query.list();
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public void delete(Integer versionId) {
        Boolean publishedFlg = false;
        try {
            AdapterSchemeVersionModel versionModel = getEntity(AdapterSchemeVersionModel.class, versionId);
            if (versionModel.getPublishStatus() != null && versionModel.getPublishStatus() == 1) {
                publishedFlg = true;
            } else {
                this.deleteEntity(versionModel);
                deleteVersionTables(new AdapterVersion(versionModel.getVersion()));
                return;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (publishedFlg) {
            throw new ApiException(ErrorCode.StdVersionHasPublished);
        } else {
            throw new ApiException(ErrorCode.DeleteSchemeVersionFailed);
        }
    }
    public AdapterSchemeVersionModel get(Integer versionId) {
        try {
            AdapterSchemeVersionModel versionModel = getEntity(AdapterSchemeVersionModel.class, versionId);
            return versionModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.GetSchemeVersionFailed);
        }
    }
    public AdapterSchemeVersionModel getByVersion(String version) {
        try {
            String sql = "FROM AdapterSchemeVersionModel WHERE version = :version";
            Query query = getCurrentSession().createQuery(sql);
            query.setParameter("version", version);
            List<AdapterSchemeVersionModel> list = query.list();
            if (CollectionUtil.isEmpty(list)) {
                return null;
            }
            AdapterSchemeVersionModel versionModel = list.get(0);
            return versionModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.GetSchemeVersionFailed);
        }
    }
    public AdapterSchemeVersionModel fork(Integer versionId) {
        try {
            AdapterSchemeVersionModel baseVersionModel = getEntity(AdapterSchemeVersionModel.class, versionId);
            AdapterSchemeVersionModel newVersionModel = new AdapterSchemeVersionModel();
            newVersionModel.setBaseVersion(baseVersionModel.getVersion());
            newVersionModel.setSchemeId(baseVersionModel.getSchemeId());
            newVersionModel.setPublishTime(new Date());
            this.saveEntity(newVersionModel);
            AdapterVersion baseVersion = new AdapterVersion(baseVersionModel.getVersion());
            AdapterVersion newVersion = new AdapterVersion(newVersionModel.getVersion());
            buildVersionTables(baseVersion, newVersion);
            return newVersionModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.SaveSchemeVersionFailed);
        }
    }
    public AdapterSchemeVersionModel publish(Integer versionId, String publisher) {
        try {
            AdapterSchemeVersionModel adapterSchemeVersionModel = getEntity(AdapterSchemeVersionModel.class, versionId);
            //TODO:generate standard version file;
            adapterSchemeVersionModel.setPublishTime(new Date());
            adapterSchemeVersionModel.setPublishUser(publisher);
            adapterSchemeVersionModel.setPublishStatus(1);
            this.updateEntity(adapterSchemeVersionModel);
            return adapterSchemeVersionModel;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.UpdateSchemeVersionFailed);
        }
    }
    private void deleteVersionTables(AdapterVersion version) {
        String[] tables = {version.getDataSetTableName(),
                version.getMetaDataTableName(),
                version.getDictTableName(),
                version.getDictEntryTableName(),
                version.getDatasetRelationTableName()};
        List<String> deleteSqlList = new ArrayList<>();
        for (int i = 0; i < tables.length; ++i) {
            String table = tables[i];
            deleteSqlList.add(Constants.DROP_TABLE + table);
        }
        insertBatch(deleteSqlList);
    }
    private void buildVersionTables(AdapterVersion baseVersion, AdapterVersion newVersion) {
        String[] newTables = {newVersion.getDataSetTableName(),
                newVersion.getMetaDataTableName(),
                newVersion.getDictTableName(),
                newVersion.getDictEntryTableName()};
        String[] baseTables = {baseVersion.getDataSetTableName(),
                baseVersion.getMetaDataTableName(),
                baseVersion.getDictTableName(),
                baseVersion.getDictEntryTableName()};
        Session session = getCurrentSession();
        for (int i = 0; i < baseTables.length; ++i) {
            String baseTable = baseTables[i];
            String newTable = newTables[i];
            Query query = session.createSQLQuery(Constants.CREATE_TABLE + newTable + Constants.LIKE + baseTable);
            query.executeUpdate();
            query = session.createSQLQuery(Constants.INSERT_INTO + newTable + Constants.SELECT + "*" + Constants.FROM + baseTable);
            query.executeUpdate();
        }
    }
    public List<SchemeVersionResultDetailModel> getPublishedList() {
        try {
            Session session = getCurrentSession();
            Criteria criteria = session.createCriteria(AdapterSchemeVersionModel.class);
            criteria.add(Restrictions.eq("publishStatus",1));
            List<AdapterSchemeVersionModel> versionModelList = criteria.list();
            List<Integer> schemeIdList = new ArrayList<>();
            Map<Integer, String> schemeMap = new HashMap<>();
            for (AdapterSchemeVersionModel model : versionModelList) {
                schemeIdList.add(model.getSchemeId());
            }
            if (CollectionUtil.isEmpty(schemeIdList)) {
                schemeIdList.add(null);
            }
            criteria = session.createCriteria(AdapterSchemeModel.class);
            criteria.add(Restrictions.in("id", schemeIdList));
            List<AdapterSchemeModel> schemeList = criteria.list();
            for (AdapterSchemeModel schemeModel : schemeList) {
                schemeMap.put(schemeModel.getId(), schemeModel.getName());
            }
            List<SchemeVersionResultDetailModel> detailModelList = new ArrayList<>();
            for (AdapterSchemeVersionModel model : versionModelList) {
                SchemeVersionResultDetailModel detailModel = new SchemeVersionResultDetailModel();
                detailModel.setId(model.getId());
                detailModel.setName(model.getName());
                detailModel.setSchemeId(model.getSchemeId());
                detailModel.setSchemeName(schemeMap.get(model.getSchemeId()));
                detailModel.setVersion(model.getVersion());
                detailModel.setBaseVersion(model.getBaseVersion());
                detailModel.setPublishStatus(model.getPublishStatus());
                detailModel.setPublishUser(model.getPublishUser());
                detailModel.setPublishTime(model.getPublishTime());
                detailModelList.add(detailModel);
            }
            return detailModelList;
        } catch (Exception e) {
            throw new ApiException(ErrorCode.GetSchemeVersionListFailed);
        }
    }
    private void buildVersionTables(AdapterSchemeVersionModel versionModel) {
        AdapterVersion adapterVersion = new AdapterVersion(versionModel.getVersion());
        AdapterSchemeModel scheme = getEntity(AdapterSchemeModel.class, versionModel.getSchemeId());
        StandardVersion stdVersion = new StandardVersion(scheme.getStdVersion());
        insertBatch(createTable(adapterVersion));
        List<String> sqlList = new ArrayList<>();
        SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
        String sql = sqlCreator.selectData(stdVersion.getMetaDataTableName());
        Query query = getQuery(sqlCreator, sql);
        List<StdMetaDataModel> metadataList = query.list();
        List<Integer> newDictdList = new ArrayList<>();
        for (StdMetaDataModel stdMetaDataModel : metadataList) {
            if (stdMetaDataModel.getDictId() != null && !newDictdList.contains(stdMetaDataModel.getDictId())) {
                newDictdList.add(stdMetaDataModel.getDictId());
            }
        }
        sqlList.add(insertData(adapterVersion.getDataSetTableName(), stdVersion.getDataSetTableName(),
                new String[]{"id,std_dataset_id,std_dataset_code,std_dataset_name"},
                new String[]{"id,id,code,name"},
                scheme.getId(),
                "",
                null));
        sqlList.add(insertData(adapterVersion.getMetaDataTableName(), stdVersion.getMetaDataTableName(),
                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"},
                scheme.getId(),
                "",
                null));
        sqlList.add(insertData(adapterVersion.getDictTableName(), stdVersion.getDictTableName(),
                new String[] {"id,std_dict_id,std_dict_code,std_dict_name"},
                new String[] {"id,id,code,name"},
                scheme.getId(),
                "id",
                newDictdList));
        sqlList.add(insertData(adapterVersion.getDictEntryTableName(), stdVersion.getDictEntryTableName(),
                new String[] {"id,std_entry_id,std_entry_code,std_entry_value,std_dict_id"},
                new String[] {"id,id,code,value,dict_id"},
                scheme.getId(),
                "dict_id",
                newDictdList));
        insertBatch(sqlList);
    }
    private List<String> createTable(AdapterVersion adapterVersion) {
        List<String> sqlList = new ArrayList<>();
        List<String> adapterTableList = new ArrayList<>();
        adapterTableList.add(adapterVersion.DataSetTablePrefix);
        adapterTableList.add(adapterVersion.MetaDataTablePrefix);
        adapterTableList.add(adapterVersion.DictTablePrefix);
        adapterTableList.add(adapterVersion.DictEntryTablePrefix);
        adapterTableList.add(adapterVersion.DatasetRelationTablePrefix);
        for (String table : adapterTableList){
            String sql = Constants.CREATE_TABLE + table + Constants.UNDERLINE + adapterVersion.getVersion() + Constants.LIKE + table;
            sqlList.add(sql);
        }
        return sqlList;
    }
    private String insertData(String adapterTableName, String stdTableName, String[] item1, String[] item2, Integer schemeId, String item, List<Integer> idList) {
        StringBuffer sql = new StringBuffer();
        String idStr = Constants.EMPTY;
        if (!CollectionUtil.isEmpty(idList)) {
            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.INSERT_INTO + adapterTableName + Constants.LEFT_BRACKET);
        for (String it : item1) {
            sql.append(it + Constants.COMMA);
        }
        sql.append("scheme_id" + Constants.RIGHT_BRACKET + Constants.LEFT_BRACKET + Constants.SELECT );
        for (String it : item2) {
            sql.append(it + Constants.COMMA);
        }
        sql.append(schemeId + Constants.FROM + stdTableName);
        if (!StringUtil.isEmpty(item)) {
            sql.append(Constants.WHERE + item +Constants.IN + idStr);
        }
        sql.append(Constants.RIGHT_BRACKET);
        return sql.toString();
    }
}

+ 52 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/bo/AdapterVersion.java

@ -0,0 +1,52 @@
package com.yihu.ehr.standard.service.bo;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.util.ObjectVersion;
public class AdapterVersion {
    public static final String FBVersion = "000000000000";
    public final static String DataSetTablePrefix = "adapter_dataset";
    public final static String MetaDataTablePrefix = "adapter_metadata";
    public final static String DictTablePrefix = "adapter_dict";
    public final static String DictEntryTablePrefix = "adapter_dictentry";
    public final static String DatasetRelationTablePrefix = "adapter_dataset_relation";
    private ObjectVersion version;
    public AdapterVersion(String version) {
        this.version = new ObjectVersion(version);
    }
    public static AdapterVersion generateVersion() {
        ObjectVersion objectVersion = new ObjectVersion();
        return new AdapterVersion(objectVersion.toString());
    }
    public String getDataSetTableName() {
        return DataSetTablePrefix + Constants.UNDERLINE + version;
    }
    public String getMetaDataTableName() {
        return MetaDataTablePrefix + Constants.UNDERLINE + version;
    }
    public String getDictTableName() {
        return DictTablePrefix + Constants.UNDERLINE + version;
    }
    public String getDictEntryTableName() {
        return DictEntryTablePrefix + Constants.UNDERLINE + version;
    }
    public String getDatasetRelationTableName() {
        return DatasetRelationTablePrefix + Constants.UNDERLINE + version;
    }
    public String getVersion() {
        return version.toString();
    }
    public void finalize() throws Throwable {
    }
}

+ 60 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/bo/StandardVersion.java

@ -0,0 +1,60 @@
package com.yihu.ehr.standard.service.bo;
import com.yihu.ehr.framework.util.ObjectVersion;
public class StandardVersion {
    public final static String VersionBoundSymbol = "_";
    public final static String DataSetTable = "std_dataset";
    public final static String MetaDataTable = "std_metadata";
    public final static String DictTable = "std_dictionary";
    public final static String DictEntryTable = "std_dictionary_entry";
    public final static String CDADocumentTable = "std_cda_document";
    public final static String CDADatasetTable = "std_cda_dataset";
    private ObjectVersion version;
    public StandardVersion(String version) {
        this.version = new ObjectVersion(version);
    }
    public StandardVersion() {
    }
    public static StandardVersion generateVersion() {
        ObjectVersion objectVersion = new ObjectVersion();
        return new StandardVersion(objectVersion.toString());
    }
    public String getDataSetTableName() {
        return DataSetTable + VersionBoundSymbol + version;
    }
    public String getMetaDataTableName() {
        return MetaDataTable + VersionBoundSymbol + version;
    }
    public String getDictTableName() {
        return DictTable + VersionBoundSymbol + version;
    }
    public String getDictEntryTableName() {
        return DictEntryTable + VersionBoundSymbol + version;
    }
    public String getCDATableName() {
        return CDADocumentTable + VersionBoundSymbol + version;
    }
    public String getCDADatasetTableName() {
        return CDADatasetTable + VersionBoundSymbol + version;
    }
    public String getVersion() {
        return version.toString();
    }
    public void finalize() throws Throwable {
    }
}

+ 429 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StandardService.java

@ -0,0 +1,429 @@
package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.RequestParamTransformer;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.standard.StandardModel;
import com.yihu.ehr.standard.model.standard.StandardVersionModel;
import com.yihu.ehr.standard.model.standard.StdPublisherModel;
import com.yihu.ehr.standard.model.standard.resultModel.StandardResultDetailModel;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @created Airhead 2015/12/23.
 */
@Transactional
@Service("StandardService")
public class StandardService extends SQLGeneralDAO {
    public static final String BEAN_ID = "StandardService";
    public List<StandardModel> getList(String condition, String order, Integer limit, Integer offset) {
        try {
            Map queryMap = RequestParamTransformer.parseJsonToMap(condition);
            Map orderMap = RequestParamTransformer.parseJsonToMap(order);
            return this.getList(queryMap, orderMap, limit, offset);
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardGetListFailed);
    }
    public Object add(String standard) {
        Boolean existCodeFlg = false;
        Boolean existNameFlg = false;
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            StandardModel standardModel = objectMapper.readValue(standard, StandardModel.class);
            existCodeFlg = standardCodeValidate(standardModel.getCode());
            existNameFlg = standardNameValidate(standardModel.getName());
            if (!existCodeFlg && !existNameFlg) {
                this.add(standardModel);
                return standardModel;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (existCodeFlg) {
            throw new ApiException(ErrorCode.ExistStandardCode);
        } else if (existNameFlg) {
            throw new ApiException(ErrorCode.ExistStandardName);
        } else {
            throw new ApiException(ErrorCode.StandardSaveFailed);
        }
    }
    public Boolean standardCodeValidate(String code) {
        Map<String, String> query = new HashMap<>();
        Map<String, String> order = new HashMap<>();
        query.put("code", code);
        List<StandardModel> list = getList(query, order, 1, 0);
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public Boolean standardNameValidate(String name) {
        Map<String, String> query = new HashMap<>();
        Map<String, String> order = new HashMap<>();
        query.put("name", name);
        List<StandardModel> list = getList(query, order, 1, 0);
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public void delete(Integer standardId) {
        Boolean publishedFlg = false;
        Boolean existFlg = false;
        try {
            StandardModel standardModel = get(standardId);
            if (standardModel == null) {
                return;
            }
            if (standardModel.getVersionStatus().equals(1)) {
                publishedFlg = true;
            }
            existFlg = existStandardVersionValid(standardModel.getId());
            if (!publishedFlg && !existFlg) {
                Session session = getCurrentSession();
                String sql = "delete from " + StandardModel.TABLE_NAME + " where id = :id";
                Query query = session.createSQLQuery(sql);
                query.setLong("id", standardId);
                query.executeUpdate();
                return;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (publishedFlg) {
            throw new ApiException(ErrorCode.StandardDeletePublished);
        } else if (existFlg) {
            throw new ApiException(ErrorCode.ExistStandardVersion);
        } else {
            throw new ApiException(ErrorCode.StandardDeleteFailed);
        }
    }
    public Boolean standardNameValidate(Integer standardId, String name) {
        String sql = "FROM StandardModel WHERE name = :name and id != :standardId";
        Query query = getCurrentSession().createQuery(sql);
        query.setParameter("standardId", standardId);
        query.setParameter("name", name);
        List<StandardModel> list = query.list();
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public Boolean standardCodeValidate(Integer standardId, String code) {
        String sql = "FROM StandardModel WHERE code = :code and id != :standardId";
        Query query = getCurrentSession().createQuery(sql);
        query.setParameter("standardId", standardId);
        query.setParameter("code", code);
        List<StandardModel> list = query.list();
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public StandardModel update(String standard) {
        Boolean existCodeFlg = false;
        Boolean existNameFlg = false;
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            StandardModel standardModel = objectMapper.readValue(standard, StandardModel.class);
            existCodeFlg = standardCodeValidate(standardModel.getId(), standardModel.getCode());
            existNameFlg = standardNameValidate(standardModel.getId(), standardModel.getName());
            if (!existCodeFlg && !existNameFlg) {
                this.update(standardModel);
            }
            return standardModel;
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (existCodeFlg) {
            throw new ApiException(ErrorCode.ExistStandardCode);
        } else if (existNameFlg) {
            throw new ApiException(ErrorCode.ExistStandardName);
        } else {
            throw new ApiException(ErrorCode.StandardUpdateFailed);
        }
    }
    public StandardModel get(Integer standardId) {
        try {
            SqlCreator sqlCreator = new SqlCreator(StandardModel.class);
            sqlCreator.equalCondition("id", standardId);
            String sql = sqlCreator.selectData(StandardModel.TABLE_NAME);
            Query query = getQuery(sqlCreator, sql);
            return (StandardModel) query.uniqueResult();
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardGetFailed);
    }
    public List<Object[]> getSysParamList() {
        String paramSql = "select s.param_value,s.org_id from system_param s where s.param_key = '"+ Constants.STANDARD+"'";
        Query paramQuery = getCurrentSession().createSQLQuery(paramSql);
        List<Object[]> list = paramQuery.list();
        return list;
    }
    public List<StandardResultDetailModel> getStandardListFormat(List<StdPublisherModel> publisherModelList,
                                                                 List<StandardModel> standardModelList,
                                                                 List<StandardVersionModel> versionModelList,
                                                                 Map<String, String> codeToIdMap,
                                                                 String name) {
        List<StandardResultDetailModel> resultDetailModelList = new ArrayList<>();
        Map<String, StandardResultDetailModel> resultDetailModelMap = new HashMap<>();
        Map<String, StandardResultDetailModel> resultDetailModelCheckMap = new HashMap<>();
        Map<String, StandardResultDetailModel> resultDetailModelAddMap = new HashMap<>();
        for (StdPublisherModel publisherModel : publisherModelList) {
            StandardResultDetailModel resultDetailModel = new StandardResultDetailModel();
            String id = "publisher" + publisherModel.getId();
            resultDetailModel.setId(id);
            resultDetailModel.setName(publisherModel.getName());
            resultDetailModel.setType(0);
            resultDetailModel.setCode(publisherModel.getCode());
            codeToIdMap.put(publisherModel.getCode(), id);
            if (StringUtil.isEmpty(name) || publisherModel.getName().contains(name)) {
                resultDetailModelCheckMap.put(id, resultDetailModel);
                resultDetailModelAddMap.put(id, resultDetailModel);
                resultDetailModelList.add(resultDetailModel);
            }
            resultDetailModelMap.put(id, resultDetailModel);
        }
        for (StandardModel standardModel : standardModelList) {
            String pid = codeToIdMap.get(standardModel.getPublisherOrgCode());
            if (StringUtil.isEmpty(pid)) {
                continue;
            }
            String id = "standard" + standardModel.getId();
            StandardResultDetailModel resultDetailModel = new StandardResultDetailModel();
            resultDetailModel.setId(id);
            resultDetailModel.setPid(codeToIdMap.get(standardModel.getPublisherOrgCode()));
            resultDetailModel.setType(1);
            resultDetailModel.setName(standardModel.getName());
            resultDetailModel.setCode(standardModel.getCode());
            if (resultDetailModelCheckMap.containsKey(pid)) {
                resultDetailModelCheckMap.put(id, resultDetailModel);
                resultDetailModelList.add(resultDetailModel);
                resultDetailModelAddMap.put(id, resultDetailModel);
            } else if (StringUtil.isEmpty(name) || standardModel.getName().contains(name)) {
                resultDetailModelCheckMap.put(id, resultDetailModel);
                resultDetailModelList.add(resultDetailModel);
                if (!resultDetailModelAddMap.containsKey(pid)) {
                    resultDetailModelAddMap.put(pid, resultDetailModel);
                    resultDetailModelList.add(resultDetailModelMap.get(pid));
                }
            }
            resultDetailModelMap.put(id, resultDetailModel);
        }
        for (StandardVersionModel versionModel : versionModelList) {
            String pid = "standard" + versionModel.getStandardId();
            String id = "version" + versionModel.getId();
            StandardResultDetailModel resultDetailModel = new StandardResultDetailModel();
            resultDetailModel.setId(id);
            resultDetailModel.setPid(pid);
            resultDetailModel.setPublisher(versionModel.getPublishUser());
            resultDetailModel.setStatus(versionModel.getPublishStatus());
            resultDetailModel.setName(versionModel.getName());
            resultDetailModel.setCode(versionModel.getVersion());
            resultDetailModel.setDate(StringUtil.toString(versionModel.getPublishTime()));
            resultDetailModel.setType(2);
            if (resultDetailModelCheckMap.containsKey(pid)) {
                resultDetailModelList.add(resultDetailModel);
            } else if (StringUtil.isEmpty(name) || versionModel.getName().contains(name)) {
                resultDetailModelList.add(resultDetailModel);
                if (!resultDetailModelAddMap.containsKey(pid)) {
                    resultDetailModelAddMap.put(resultDetailModel.getPid(), resultDetailModelMap.get(resultDetailModel.getPid()));
                    resultDetailModelAddMap.put(resultDetailModelMap.get(resultDetailModel.getPid()).getPid(), resultDetailModelMap.get(resultDetailModelMap.get(resultDetailModel.getPid()).getPid()));
                    resultDetailModelList.add(resultDetailModelMap.get(resultDetailModel.getPid()));
                    resultDetailModelList.add(resultDetailModelMap.get(resultDetailModelMap.get(resultDetailModel.getPid()).getPid()));
                }
            }
        }
        return resultDetailModelList;
    }
    public List<StandardResultDetailModel> getStandardList(String condition) {
        String name = Constants.EMPTY;
        Integer type = null;
        SqlCreator sqlCreator = new SqlCreator(StandardModel.class);
        if (!StringUtil.isEmpty(condition)) {
            ObjectMapper objectMapper = new ObjectMapper();
            try {
                JsonNode jsonNode = objectMapper.readTree(condition);
                if (jsonNode.get("type") != null) {
                    type = jsonNode.get("type").asInt();
                }
                if (jsonNode.get("name") != null) {
                    name = jsonNode.get("name").asText();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        String publisherCode = Constants.EMPTY;
        String publisherHql = Constants.EMPTY;
        if (type != null) {
            List<Object[]> list = getSysParamList();
            String code = StringUtil.toString(list.get(0)[0]);
            publisherCode = StringUtil.toString(list.get(0)[1]);
            if (type == 0) {
                sqlCreator.equalCondition("code", code);
                publisherHql = "FROM StdPublisherModel where code = :publisherCode";
            } else if (type == 1) {
                sqlCreator.neCondition("code", code);
                publisherHql = "FROM StdPublisherModel where code != :publisherCode";
            }
        }
        String sql = sqlCreator.selectData(StandardModel.TABLE_NAME);
        Query sessionQuery = getQuery(sqlCreator, sql);
        List<StandardModel> standardModelList = sessionQuery.list();
        Map<String, String> codeToIdMap = new HashMap<>();
        List<Integer> idList = new ArrayList<>();
        for (StandardModel standardModel : standardModelList) {
            idList.add(standardModel.getId());
        }
        if (CollectionUtil.isEmpty(idList)) {
            idList.add(null);
        }
        Query query = getCurrentSession().createQuery(publisherHql);
        query.setParameter("publisherCode", publisherCode);
        List<StdPublisherModel> publisherModelList = query.list();
        String versionHql = "FROM StandardVersionModel WHERE standardId IN :idList";
        query = getCurrentSession().createQuery(versionHql);
        query.setParameterList("idList", idList);
        List<StandardVersionModel> versionModelList = query.list();
        List<StandardResultDetailModel> resultDetailModelList = getStandardListFormat(publisherModelList,
                                                                                        standardModelList,
                                                                                        versionModelList,
                                                                                        codeToIdMap,
                                                                                        name);
        return resultDetailModelList;
    }
    //TODO:TEST
    public StandardModel fork(Integer standardId) {
        try {
            StandardModel baseStandard = get(standardId);
            StandardModel newStandard = new StandardModel(baseStandard);
            newStandard.setId(null);
            newStandard.setName(baseStandard.getName() + "-副本");
            newStandard.setCode(baseStandard.getCode() + "-副本");
            newStandard.setVersionStatus(0);
            saveEntity(newStandard);
            return newStandard;
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardForkFailed);
    }
    private void update(StandardModel standardModel) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(standardModel));
        SqlCreator sqlCreator = new SqlCreator(StandardModel.class);
        String sql = sqlCreator.updateDataByTableKey(StandardModel.TABLE_NAME, jsonNode);
        Query query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private void add(StandardModel standardModel) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        Session session = getCurrentSession();
        String sql = "select max(id) from " + StandardModel.TABLE_NAME;
        Query query = session.createSQLQuery(sql);
        Object object = query.uniqueResult();
        standardModel.setId(object == null ? 1 : Integer.parseInt(object.toString()) + 1);
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(standardModel));
        SqlCreator sqlCreator = new SqlCreator(StandardModel.class);
        sql = sqlCreator.insertData(StandardModel.TABLE_NAME, jsonNode);
        query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private List<StandardModel> getList(Map<String, String> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StandardModel.class);
        for (String key : query.keySet()) {
            if (key.equals("type")) {
                Integer type = Integer.parseInt(query.get(key));
                List<Object[]> list = getSysParamList();
                String code = StringUtil.toString(list.get(0)[0]);
                if (type == 0) {
                    sqlCreator.equalCondition("code", code);
                } else if (type == 1) {
                    sqlCreator.neCondition("code", code);
                }
            } else {
                sqlCreator.equalCondition(key, query.get(key));
            }
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        }
        String sql = sqlCreator.selectData(StandardModel.TABLE_NAME);
        Query sessionQuery = getQuery(sqlCreator, sql);
        if (limit != null) {
            sessionQuery.setMaxResults(limit);
            if (offset != null) {
                sessionQuery.setFirstResult(offset);
            }
        }
        return (List<StandardModel>) sessionQuery.list();
    }
    public boolean existStandardVersionValid(Integer standardId) {
        String hql="FROM StandardVersionModel WHERE standardId = :standardId";
        Query query = getCurrentSession().createQuery(hql);
        query.setParameter("standardId", standardId);
        List<StandardVersionModel> standardModelList = query.list();
        if (!CollectionUtil.isEmpty(standardModelList)) {
            return true;
        }
        return false;
    }
}

+ 334 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StandardVersionService.java

@ -0,0 +1,334 @@
package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.RequestParamTransformer;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.adapter.AdapterSchemeModel;
import com.yihu.ehr.standard.model.standard.StandardVersionModel;
import com.yihu.ehr.standard.service.bo.StandardVersion;
import org.hibernate.Query;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.*;
/**
 * @created Airhead 2015/12/25.
 */
@Transactional
@Service("StandardVersionService")
public class StandardVersionService extends SQLGeneralDAO {
    public static final String BEAN_ID = "StandardVersionService";
    public List<StandardVersionModel> getList(Integer standardId, String condition, String order, Integer limit, Integer offset) {
        try {
            Map queryMap = RequestParamTransformer.parseJsonToMap(condition);
            Map orderMap = RequestParamTransformer.parseJsonToMap(order);
            return this.getList(standardId, queryMap, orderMap, limit, offset);
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardVersionGetListFailed);
    }
    public Object add(String version) {
        Boolean existFlg = false;
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            StandardVersionModel versionModel = objectMapper.readValue(version, StandardVersionModel.class);
            existFlg = versionNameValidate(versionModel.getStandardId(), versionModel.getName());
            if (!existFlg) {
                this.add(versionModel);
                return versionModel;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistStandardVersionName);
        } else {
            throw new ApiException(ErrorCode.StandardVersionSaveFailed);
        }
    }
    public Boolean versionNameValidate(Integer standardId, String versionName) {
            Map<String, String> query = new HashMap<>();
            Map<String, String> order = new HashMap<>();
            query.put("name", versionName);
            List<StandardVersionModel> list = getList(standardId, query, order, 1, 0);
            if (!CollectionUtil.isEmpty(list)) {
                return true;
            }
            return false;
    }
    public Boolean versionNameValidate(Integer standardId, Integer versionId, String versionName) {
        String sql = "FROM StandardVersionModel WHERE name = :name and standardId = :standardId and id != :versionId";
        Query query = getCurrentSession().createQuery(sql);
        query.setParameter("standardId", standardId);
        query.setParameter("name", versionName);
        query.setParameter("versionId", versionId);
        List<StandardVersionModel> list = query.list();
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public void delete(Integer versionId,String version) {
        Boolean existFlg = false;
        Boolean useredFlg = false;
        try {
            StandardVersionModel versionModel = get(versionId);
            if (versionModel.getPublishStatus() == 1) {
                existFlg = true;
            } else {
                String sql = "FROM AdapterSchemeModel WHERE stdVersion = :stdVersion or adapterStdVersion =  :adapterStdVersion";
                Query query = getCurrentSession().createQuery(sql);
                query.setParameter("stdVersion", version);
                query.setParameter("adapterStdVersion", version);
                List<AdapterSchemeModel> list = query.list();
                if (!CollectionUtil.isEmpty(list)) {
                    useredFlg = true;
                }else{
                    this.delete(versionModel);
                    deleteVersionTables(new StandardVersion(versionModel.getVersion()));
                    return;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.StandardVersionDeleteFailed);
        } if(useredFlg){
            throw new ApiException(ErrorCode.StandardVersionUsedDeleteFailed);
        }else {
            throw new ApiException(ErrorCode.StandardVersionDeletePublished);
        }
    }
    public StandardVersionModel update(String version) {
        Boolean existFlg = false;
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            StandardVersionModel versionModel = objectMapper.readValue(version, StandardVersionModel.class);
            existFlg = versionNameValidate(versionModel.getStandardId(), versionModel.getId(), versionModel.getName());
            if (!existFlg) {
                this.update(versionModel);
                return versionModel;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistStandardVersionName);
        } else {
            throw new ApiException(ErrorCode.StandardVersionUpdateFailed);
        }
    }
    public StandardVersionModel get(Integer versionId) {
        try {
            StandardVersionModel versionModel = this.myGet(versionId);
            return versionModel;
        } catch (DataAccessException e) {
            throw new ApiException(ErrorCode.StandardVersionGetFailed);
        }
    }
    public StandardVersionModel fork(Integer versionId) {
        try {
            return this.myFork(versionId);
        } catch (DataAccessException | IOException e) {
            throw new ApiException(ErrorCode.StandardVersionForkFailed);
        }
    }
    public StandardVersionModel publish(Integer versionId, String publisher) {
        try {
            return this.myPublish(versionId, publisher);
        } catch (DataAccessException e) {
            throw new ApiException(ErrorCode.StandardVersionPublishFailed);
        }
    }
    public StandardVersionModel getLastestVersion(Integer standardId) {
        Map<String, String> query = new HashMap<>();
        Map<String, String> order = new HashMap<>();
        order.put("publisher", Constants.DESC);
        List<StandardVersionModel> list = getList(standardId, query, order, 1, 0);
        if (list != null && list.size() != 0) {
            return list.get(0);
        }
        return null;
    }
    public StandardVersionModel myPublish(Integer versionId, String publisher) {
        StandardVersionModel standardVersionModel = myGet(versionId);
        //TODO:generate standard version file;
        String path = "";
        standardVersionModel.setPath(path);
        standardVersionModel.setPublishTime(new Date());
        standardVersionModel.setPublishUser(publisher);
        standardVersionModel.setPublishStatus(1);
        this.update(standardVersionModel);
        return standardVersionModel;
    }
    private StandardVersionModel myFork(Integer versionId) throws IOException {
        StandardVersionModel baseVersionModel = myGet(versionId);
        StandardVersionModel newVersionModel = new StandardVersionModel();
        newVersionModel.setBaseVersion(baseVersionModel.getVersion());
        newVersionModel.setName(baseVersionModel.getName() + " Copy");
        newVersionModel.setPrimaryVersion(baseVersionModel.getPrimaryVersion());
        newVersionModel.setPublishTime(new Date());
        this.add(newVersionModel);
        StandardVersion baseVersion = new StandardVersion(baseVersionModel.getVersion());
        StandardVersion newVersion = new StandardVersion(newVersionModel.getVersion());
        buildVersionTables(baseVersion, newVersion, baseVersionModel.getStandardId());
        return newVersionModel;
    }
    private StandardVersionModel myGet(Integer versionId) {
        SqlCreator sqlCreator = new SqlCreator(StandardVersionModel.class);
        sqlCreator.equalCondition("id", versionId);
        String sql = sqlCreator.selectData(StandardVersionModel.TABLE_NAME);
        Query query = getQuery(sqlCreator, sql);
        return (StandardVersionModel) query.uniqueResult();
    }
    private void delete(StandardVersionModel standardVersionModel) {
        deleteEntity(standardVersionModel);
    }
    private void update(StandardVersionModel standardVersionModel) {
        try {
            updateEntity(standardVersionModel);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private void  add(StandardVersionModel standardVersionModel) {
        StandardVersion standardVersion = StandardVersion.generateVersion();
        standardVersionModel.setVersion(standardVersion.getVersion());
        standardVersionModel.setPublishTime(null);
        standardVersionModel.setPublishStatus(0);
        saveEntity(standardVersionModel);
        String baseVer = standardVersionModel.getBaseVersion();
        StandardVersion baseVersion = StringUtil.isEmpty(baseVer) ? null : new StandardVersion(baseVer);
        StandardVersion newVersion = new StandardVersion(standardVersionModel.getVersion());
        buildVersionTables(baseVersion, newVersion, standardVersionModel.getStandardId());
    }
    private List<StandardVersionModel> getList(Integer standardId, Map<String, String> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StandardVersionModel.class);
        sqlCreator.equalCondition("standardId", standardId);
        sqlCreator.equalCondition("publishStatus", 1);
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        }
        String sql = sqlCreator.selectData(StandardVersionModel.TABLE_NAME);
        Query sessionQuery = getQuery(sqlCreator, sql);
        if (limit != null) {
            sessionQuery.setMaxResults(limit);
            if (offset != null) {
                sessionQuery.setFirstResult(offset);
            }
        }
        return (List<StandardVersionModel>) sessionQuery.list();
    }
    private void deleteVersionTables(StandardVersion version) {
        String[] tables = {version.getDataSetTableName(),
                version.getMetaDataTableName(),
                version.getDictTableName(),
                version.getDictEntryTableName()
                /*version.getCDATableName(),
               /* version.getCDADatasetTableName()*/};
        List<String> deleteSql = new ArrayList<>();
        for (int i = 0; i < tables.length; ++i) {
            String table = tables[i];
            deleteSql.add(Constants.DROP_TABLE + table);
        }
        insertBatch(deleteSql);
    }
    private void buildVersionTables(StandardVersion baseVersion, StandardVersion newVersion, Integer standardId) {
        String[] newTables = {newVersion.getDataSetTableName(),
                newVersion.getMetaDataTableName(),
                newVersion.getDictTableName(),
                newVersion.getDictEntryTableName()
               /* newVersion.getCDATableName(),
                newVersion.getCDADatasetTableName()*/};
        String[] baseTables;
        if (baseVersion == null) {
            String[] templateTables = {StandardVersion.DataSetTable,
                    StandardVersion.MetaDataTable,
                    StandardVersion.DictTable,
                    StandardVersion.DictEntryTable
                   /* StandardVersion.CDADocumentTable,
                    StandardVersion.CDADatasetTable*/};
            baseTables = templateTables;
        } else {
            String[] templateTables = {baseVersion.getDataSetTableName(),
                    baseVersion.getMetaDataTableName(),
                    baseVersion.getDictTableName(),
                    baseVersion.getDictEntryTableName()
                    /*baseVersion.getCDATableName(),
                    baseVersion.getCDADatasetTableName()*/};
            baseTables = templateTables;
        }
        List<String> createSql = new ArrayList<>();
        List<String> insertSql = new ArrayList<>();
        List<String> updateSql = new ArrayList<>();
        for (int i = 0; i < baseTables.length; ++i) {
            String baseTable = baseTables[i];
            String newTable = newTables[i];
            createSql.add(Constants.CREATE_TABLE + newTable + Constants.LIKE + baseTable);
        }
        for (int i = 0; i < baseTables.length; ++i) {
            String baseTable = baseTables[i];
            String newTable = newTables[i];
            insertSql.add(Constants.INSERT_INTO + newTable + Constants.SELECT + Constants.ASTERISK + Constants.FROM + baseTable);
        }
        for (int i = 0; i < baseTables.length; ++i) {
            String baseTable = baseTables[i];
            String newTable = newTables[i];
            updateSql.add(Constants.UPDATE + newTable + Constants.SET + " STD_ID = " + standardId);
        }
        insertBatch(createSql);
        insertBatch(insertSql);
        insertBatch(updateSql);
    }
}

+ 155 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdCDACatalogService.java

@ -0,0 +1,155 @@
package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.NumberUtil;
import com.yihu.ehr.framework.util.sql.RequestParamTransformer;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.standard.StdCDACatalogModel;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
 * @author AndyCai
 * @version 1.0
 * @created 11-12月-2015 15:53:02
 */
@Transactional
@Service("StdCDACatalogService")
public class StdCDACatalogService extends SQLGeneralDAO {
    public static final String BEAN_ID = "StdCDACatalogService";
    public StdCDACatalogService() {
    }
    public void finalize() throws Throwable {
    }
    public List<StdCDACatalogModel> getList(String condition, String order, Integer limit, Integer offset) {
        try {
            Map queryMap = RequestParamTransformer.parseJsonToMap(condition);
            Map orderMap = RequestParamTransformer.parseJsonToMap(order);
            return this.getList(queryMap, orderMap, limit, offset);
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardCDACatalogGetListFailed);
    }
    public Object add(String catalog) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            StdCDACatalogModel standardModel = objectMapper.readValue(catalog, StdCDACatalogModel.class);
            this.add(standardModel);
            return standardModel.getId();
        } catch (IOException e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardCDACatalogSaveFailed);
    }
    public void delete(Integer catalogId) {
        try {
            if (catalogId != null) {
                StdCDACatalogModel stdCdaCatalogModel = get(catalogId);
                deleteEntity(stdCdaCatalogModel);
            }
        } catch (DataAccessException e) {
            throw new ApiException(ErrorCode.StandardCDACatalogDeleteFailed);
        }
    }
    public Object update(String catalog) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            StdCDACatalogModel standardModel = objectMapper.readValue(catalog, StdCDACatalogModel.class);
            this.update(standardModel);
            return standardModel;
        } catch (IOException e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardCDACatalogUpdateFailed);
    }
    public StdCDACatalogModel get(Integer catalogId) {
        try {
            Integer id = NumberUtil.toInteger(catalogId);
            if (id != null) {
                SqlCreator sqlCreator = new SqlCreator(StdCDACatalogModel.class);
                sqlCreator.equalCondition("id",catalogId);
                String sql = sqlCreator.selectData(StdCDACatalogModel.TABLE_NAME);
                Query query = getQuery(sqlCreator, sql);
                return (StdCDACatalogModel) query.uniqueResult();
            }
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardCDACatalogGetFailed);
    }
    private void update(StdCDACatalogModel stdCDACatalogModel) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdCDACatalogModel));
        SqlCreator sqlCreator = new SqlCreator(StdCDACatalogModel.class);
        String sql = sqlCreator.updateDataByTableKey(StdCDACatalogModel.TABLE_NAME, jsonNode);
        Query query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private void add(StdCDACatalogModel stdCDACatalogModel) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        Session session = getCurrentSession();
        String sql = "select max(id) from " + StdCDACatalogModel.TABLE_NAME;
        Query query = session.createSQLQuery(sql);
        Object object = query.uniqueResult();
        stdCDACatalogModel.setId(object == null ? 1 : Integer.parseInt(object.toString()) + 1);
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdCDACatalogModel));
        SqlCreator sqlCreator = new SqlCreator(StdCDACatalogModel.class);
        sql = sqlCreator.insertData(StdCDACatalogModel.TABLE_NAME, jsonNode);
        query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private List<StdCDACatalogModel> getList(Map<String, String> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdCDACatalogModel.class);
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        }
        String sql = sqlCreator.selectData(StdCDACatalogModel.TABLE_NAME);
        Query sessionQuery = getQuery(sqlCreator, sql);
        if (limit != null) {
            sessionQuery.setMaxResults(limit);
            if (offset != null) {
                sessionQuery.setFirstResult(offset);
            }
        }
        return (List<StdCDACatalogModel>) sessionQuery.list();
    }
}

+ 203 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdCDADatasetService.java

@ -0,0 +1,203 @@
package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.BeanTransformer;
import com.yihu.ehr.framework.util.sql.RequestParamTransformer;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.standard.StdCDADatasetModel;
import com.yihu.ehr.standard.service.bo.StandardVersion;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
 * @author AndyCai
 * @version 1.0
 * @created 02-9月-2015 14:00:55
 */
@Transactional
@Service("StdCDADatasetService")
public class StdCDADatasetService extends SQLGeneralDAO {
    public static final String BEAN_ID = "StdCDADatasetService";
    public StdCDADatasetService() {
    }
    public void finalize() throws Throwable {
    }
    public List<StdCDADatasetModel> getList(String stdVersion, String condition, String order, Integer limit, Integer offset) {
        try {
            Map queryMap = RequestParamTransformer.parseJsonToMap(condition);
            Map orderMap = RequestParamTransformer.parseJsonToMap(order);
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            return this.getList(standardVersion, queryMap, orderMap, limit, offset);
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardCDADatasetGetListFailed);
    }
    public StdCDADatasetModel add(String stdVersion, String cdaDataset) {
        if (stdVersion.equals("{stdVersion}")) {
            throw new ApiException(ErrorCode.StandardCDADatasetMissVersion);
        }
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            StdCDADatasetModel stdCdaDatasetModel = objectMapper.readValue(cdaDataset, StdCDADatasetModel.class);
            this.add(standardVersion, stdCdaDatasetModel);
            return stdCdaDatasetModel;
        } catch (IOException e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardCDADatasetSaveFailed);
    }
    public void delete(String stdVersion, Integer cdadatasetId) {
        if (StringUtil.isEmpty(stdVersion)) {
            throw new ApiException(ErrorCode.StandardCDADatasetMissVersion);
        }
        if (cdadatasetId == null) {
            throw new ApiException(ErrorCode.StandardCDADatasetMissID);
        }
        try {
            if (cdadatasetId != null) {
                StandardVersion standardVersion = new StandardVersion(stdVersion);
                Session session = getCurrentSession();
                String sql = "delete from " + standardVersion.getCDADatasetTableName() + " where id = :id";
                Query query = session.createSQLQuery(sql);
                query.setInteger("id", cdadatasetId);
                query.executeUpdate();
            }
        } catch (Exception e) {
            throw new ApiException(ErrorCode.StandardCDADatasetDeleteFailed);
        }
    }
    public StdCDADatasetModel update(String stdVersion, String cdaDataset) {
        if (stdVersion.equals("{stdVersion}")) {
            throw new ApiException(ErrorCode.StandardCDADatasetMissVersion);
        }
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            StdCDADatasetModel stdCdaDatasetModel = objectMapper.readValue(cdaDataset, StdCDADatasetModel.class);
            this.modify(standardVersion, stdCdaDatasetModel);
            return stdCdaDatasetModel;
        } catch (IOException e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardCDADatasetUpdateFailed);
    }
    public StdCDADatasetModel get(String stdVersion, Integer cdadatasetId) {
        if (StringUtil.isEmpty(stdVersion)) {
            throw new ApiException(ErrorCode.StandardCDADatasetMissVersion);
        }
        if (cdadatasetId == null) {
            throw new ApiException(ErrorCode.StandardCDADatasetMissID);
        }
        try {
            if (cdadatasetId != null) {
                StandardVersion standardVersion = new StandardVersion(stdVersion);
                Session session = getCurrentSession();
                String cdaDatasetTableName = standardVersion.getCDADatasetTableName();
                String sql = "select id, cda_id, dataset_id from " + cdaDatasetTableName + " where id = :id";
                Query query = session.createSQLQuery(sql);
                query.setInteger("id", cdadatasetId);
                query.setResultTransformer(new BeanTransformer<>(StdCDADatasetModel.class));
                return (StdCDADatasetModel) query.uniqueResult();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardCDADatasetGetFailed);
    }
    private void modify(StandardVersion standardVersion, StdCDADatasetModel stdCdaDatasetModel) {
        Session session = getCurrentSession();
        String cdaDatasetTableName = standardVersion.getCDADatasetTableName();
        String sql = "update " + cdaDatasetTableName +
                "set " +
                "id = :id, " +
                "cda_id = :cda_id, " +
                "dataset_id = :dataset_id " +
                "where id = :id";
        Query query = session.createSQLQuery(sql);
        query.setInteger("id", stdCdaDatasetModel.getId());
        query.setInteger("cda_id", stdCdaDatasetModel.getCdaID());
        query.setInteger("dataset_id", stdCdaDatasetModel.getdatasetId());
        query.executeUpdate();
    }
    private void add(StandardVersion standardVersion, StdCDADatasetModel stdCdaDatasetModel) {
        Session session = getCurrentSession();
        String cdaDatasetTableName = standardVersion.getCDADatasetTableName();
        ObjectMapper objectMapper = new ObjectMapper();
        String sql = "select max(id) from " + cdaDatasetTableName;
        Query query = session.createSQLQuery(sql);
        Object object = query.uniqueResult();
        stdCdaDatasetModel.setId(object == null ? 1 : Integer.parseInt(object.toString()) + 1);
        sql = "insert into " + cdaDatasetTableName + "(id, cda_id, dataset_id)"
                + "VALUES (:id, :cda_id, :dataset_id)";
        query = session.createSQLQuery(sql);
        query.setInteger("id", stdCdaDatasetModel.getId());
        query.setInteger("cda_id", stdCdaDatasetModel.getCdaID());
        query.setInteger("dataset_id", stdCdaDatasetModel.getdatasetId());
        query.executeUpdate();
    }
    private List<StdCDADatasetModel> getList(StandardVersion standardVersion, Map<String, String> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdCDADatasetModel.class);
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        }
        String sql = sqlCreator.selectData(standardVersion.getCDADatasetTableName());
        Query sessionQuery = getQuery(sqlCreator, sql);
        if (limit != null) {
            sessionQuery.setMaxResults(limit);
            if (offset != null) {
                sessionQuery.setFirstResult(offset);
            }
        }
        return (List<StdCDADatasetModel>) sessionQuery.list();
    }
}//end CDADatasetRelationshipManager

+ 178 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdCDAService.java

@ -0,0 +1,178 @@
package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.BeanTransformer;
import com.yihu.ehr.framework.util.sql.RequestParamTransformer;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.standard.StdCDAModel;
import com.yihu.ehr.standard.service.bo.StandardVersion;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
 * @author AndyCai
 * @version 1.0
 * @created 01-9月-2015 17:17:50
 */
@Transactional
@Service("StdCDAService")
public class StdCDAService extends SQLGeneralDAO {
    public static final String BEAN_ID = "StdCDAService";
    public StdCDAService() {
    }
    public List<StdCDAModel> getList(String stdVersion, String condition, String order, Integer limit, Integer offset) {
        try {
            Map queryMap = RequestParamTransformer.parseJsonToMap(condition);
            Map orderMap = RequestParamTransformer.parseJsonToMap(order);
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            return this.getList(standardVersion, queryMap, orderMap, limit, offset);
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardCDAGetListFailed);
    }
    public Object add(String stdVersion, String cda) {
        if (stdVersion.equals("{stdVersion}")) {
            throw new ApiException(ErrorCode.StandardCDAMissVersion);
        }
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            StdCDAModel stdCdaModel = objectMapper.readValue(cda, StdCDAModel.class);
            this.add(standardVersion, stdCdaModel);
            return stdCdaModel.getId();
        } catch (IOException e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardCDASaveFailed);
    }
    public void delete(String stdVersion, Integer cdaId) {
        if (StringUtil.isEmpty(stdVersion)) {
            throw new ApiException(ErrorCode.StandardCDAMissVersion);
        }
        try {
            if (cdaId != null) {
                StandardVersion standardVersion = new StandardVersion(stdVersion);
                Session session = getCurrentSession();
                String sql = "delete from " + standardVersion.getCDATableName() + " where id = :id";
                Query query = session.createSQLQuery(sql);
                query.setInteger("id", cdaId);
                query.executeUpdate();
            }
        } catch (Exception e) {
            throw new ApiException(ErrorCode.StandardCDADeleteFailed);
        }
    }
    public Object update(String stdVersion, String cda) {
        if (stdVersion.equals("{stdVersion}")) {
            throw new ApiException(ErrorCode.StandardCDAMissVersion);
        }
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            StdCDAModel stdCdaModel = objectMapper.readValue(cda, StdCDAModel.class);
            this.modify(standardVersion, stdCdaModel);
            return stdCdaModel;
        } catch (IOException e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardCDAUpdateFailed);
    }
    public StdCDAModel get(String stdVersion, Integer cdaId) {
        if (stdVersion.equals("{stdVersion}")) {
            throw new ApiException(ErrorCode.StandardCDAMissVersion);
        }
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            return this.get(standardVersion, cdaId);
        } catch (Exception e) {
        }
        throw new ApiException(ErrorCode.StandardCDAGetFailed);
    }
    private StdCDAModel get(StandardVersion standardVersion, Integer cdaId) {
        Session session = getCurrentSession();
        String cdaTableName = standardVersion.getCDATableName();
        String sql = "select id, std_id, code, name, path, description, catalog_id from " + cdaTableName + " where id = :id";
        Query query = session.createSQLQuery(sql);
        query.setInteger("id", cdaId);
        query.setResultTransformer(new BeanTransformer<>(StdCDAModel.class));
        return (StdCDAModel) query.uniqueResult();
    }
    private void modify(StandardVersion standardVersion, StdCDAModel stdCdaModel) throws IOException {
        String cdaTableName = standardVersion.getCDATableName();
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdCdaModel));
        SqlCreator sqlCreator = new SqlCreator(StdCDAModel.class);
        String sql = sqlCreator.updateDataByTableKey(cdaTableName, jsonNode);
        Query query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private void add(StandardVersion standardVersion, StdCDAModel stdCdaModel) throws IOException {
        String cdaTableName = standardVersion.getCDATableName();
        ObjectMapper objectMapper = new ObjectMapper();
        Session session = getCurrentSession();
        String sql = "select max(id) from " + cdaTableName;
        Query query = session.createSQLQuery(sql);
        Object object = query.uniqueResult();
        stdCdaModel.setId(object == null ? 1 : Integer.parseInt(object.toString()) + 1);
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdCdaModel));
        SqlCreator sqlCreator = new SqlCreator(StdCDAModel.class);
        sql = sqlCreator.insertData(cdaTableName, jsonNode);
        query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private List<StdCDAModel> getList(StandardVersion standardVersion, Map<String, String> query,  Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdCDAModel.class);
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        }
        String sql = sqlCreator.selectData(standardVersion.getCDATableName());
        Query sessionQuery = getQuery(sqlCreator, sql);
        if (limit != null) {
            sessionQuery.setMaxResults(limit);
            if (offset != null) {
                sessionQuery.setFirstResult(offset);
            }
        }
        return (List<StdCDAModel>) sessionQuery.list();
    }
}//end CDADocumentManager

+ 148 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDatasetCatalogService.java

@ -0,0 +1,148 @@
package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.sql.RequestParamTransformer;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.standard.StdDatasetCatalogModel;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
 * @created Airhead 2015/12/28.
 */
@Transactional
@Service("StdDatasetCatalogService")
public class StdDatasetCatalogService extends SQLGeneralDAO {
    public static final String BEAN_ID = "StdDatasetCatalogService";
    public StdDatasetCatalogService() {
    }
    public void finalize() throws Throwable {
    }
    public List<StdDatasetCatalogModel> getList(String condition, String order, Integer limit, Integer offset) {
        try {
            Map queryMap = RequestParamTransformer.parseJsonToMap(condition);
            Map orderMap = RequestParamTransformer.parseJsonToMap(order);
            return this.getList(queryMap, orderMap, limit, offset);
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardDatasetCatalogGetListFailed);
    }
    public Object add(String catalog) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            StdDatasetCatalogModel stdDatasetCatalogModel = objectMapper.readValue(catalog, StdDatasetCatalogModel.class);
            this.add(stdDatasetCatalogModel);
            return stdDatasetCatalogModel.getId();
        } catch (IOException e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardDatasetCatalogSaveFailed);
    }
    public void delete(Integer catalogId) {
        try {
            if (catalogId != null) {
                StdDatasetCatalogModel cdaCatalogModel = get(catalogId);
                deleteEntity(cdaCatalogModel);
            }
        } catch (DataAccessException e) {
            throw new ApiException(ErrorCode.StandardDatasetCatalogDeleteFailed);
        }
    }
    public Object update(String catalog) {
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            StdDatasetCatalogModel stdDatasetCatalogModel = objectMapper.readValue(catalog, StdDatasetCatalogModel.class);
            this.modify(stdDatasetCatalogModel);
            return stdDatasetCatalogModel;
        } catch (IOException e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardDatasetCatalogUpdateFailed);
    }
    public StdDatasetCatalogModel get(Integer catalogId) {
        if (catalogId == null) {
            throw new ApiException(ErrorCode.StandardDatasetCatalogMissID);
        }
        
        try {
            if (catalogId != null) {
                Session session = getCurrentSession();
                String hql = "FROM StdDatasetCatalogModel where id = ?";
                Query query = session.createQuery(hql);
                query.setParameter(0, catalogId);
                return (StdDatasetCatalogModel) query.uniqueResult();
            }
        } catch (DataAccessException e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardDatasetCatalogGetFailed);
    }
    private void modify(StdDatasetCatalogModel stdDatasetCatalogModel) throws IOException {
        updateEntity(stdDatasetCatalogModel);
    }
    private void add(StdDatasetCatalogModel stdDatasetCatalogModel) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        Session session = getCurrentSession();
        String sql = "select max(id) from " + StdDatasetCatalogModel.TABLE_NAME;
        Query query = session.createSQLQuery(sql);
        Object object = query.uniqueResult();
        stdDatasetCatalogModel.setId(object == null ? 1 : Integer.parseInt(object.toString()) + 1);
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdDatasetCatalogModel));
        SqlCreator sqlCreator = new SqlCreator(StdDatasetCatalogModel.class);
        sql = sqlCreator.insertData(StdDatasetCatalogModel.TABLE_NAME, jsonNode);
        query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private List<StdDatasetCatalogModel> getList(Map<String, String> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdDatasetCatalogModel.class);
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        }
        String sql = sqlCreator.selectData(StdDatasetCatalogModel.TABLE_NAME);
        Query sessionQuery = getQuery(sqlCreator, sql);
        if (limit != null) {
            sessionQuery.setMaxResults(limit);
            if (offset != null) {
                sessionQuery.setFirstResult(offset);
            }
        }
        return (List<StdDatasetCatalogModel>) sessionQuery.list();
    }
}

+ 510 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDatasetService.java

@ -0,0 +1,510 @@
package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.BeanTransformer;
import com.yihu.ehr.framework.util.sql.RequestParamTransformer;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.Select2;
import com.yihu.ehr.standard.model.standard.StandardVersionModel;
import com.yihu.ehr.standard.model.standard.StdDataSetModel;
import com.yihu.ehr.standard.model.standard.StdDictionaryModel;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
import com.yihu.ehr.standard.service.bo.StandardVersion;
import jxl.Sheet;
import jxl.Workbook;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
/**
 * 数据集管理器.
 *
 * @author Sand
 * @version 1.0
 * @created 30-6月-2015 16:19:05
 */
@Transactional
@Service("StdDatasetService")
public class StdDatasetService extends SQLGeneralDAO {
    public static final String BEAN_ID = "StdDatasetService";
    public StdDatasetService() {
    }
    public void finalize() throws Throwable {
        super.finalize();
    }
    public List<StdDataSetModel> getList(String stdVersion, String condition, String order, Integer limit, Integer offset) {
        try {
            Map queryMap = RequestParamTransformer.parseJsonToMap(condition);
            Map orderMap = RequestParamTransformer.parseJsonToMap(order);
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            return this.getList(standardVersion, queryMap, orderMap, limit, offset);
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardDatasetGetListFailed);
    }
    public StdDataSetModel add(String stdVersion, String dataset) {
        if (stdVersion.equals("{stdVersion}")) {
            throw new ApiException(ErrorCode.StandardDatasetMissVersion);
        }
        Boolean existFlg = false;
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            StdDataSetModel stdDataSetModel = objectMapper.readValue(dataset, StdDataSetModel.class);
            existFlg = datasetCodeValidate(standardVersion, stdDataSetModel.getCode());
            if (!existFlg) {
                this.add(standardVersion.getDataSetTableName(), stdDataSetModel);
                return stdDataSetModel;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistStandardDatasetCode);
        } else {
            throw new ApiException(ErrorCode.StandardDatasetSaveFailed);
        }
    }
    public Boolean datasetCodeValidate(StandardVersion standardVersion, String code) {
        Map<String, String> query = new HashMap<>();
        Map<String, String> order = new HashMap<>();
        query.put("code", code);
        List<StdDataSetModel> list = this.getList(standardVersion, query, order, 1, 0);
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public void delete(String stdVersion, Integer datasetId) {
        if (StringUtil.isEmpty(stdVersion)) {
            throw new ApiException(ErrorCode.StandardDatasetMissVersion);
        }
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            if (datasetId != null) {
                this.delete(standardVersion, datasetId);
            }
        } catch (Exception e) {
            throw new ApiException(ErrorCode.StandardDatasetDeleteFailed);
        }
    }
    public Boolean datasetCodeValidate(StandardVersion standardVersion, Integer datasetId,  String code) {
        SqlCreator sqlCreator = new SqlCreator(StdDataSetModel.class);
        sqlCreator.equalCondition("code", code);
        sqlCreator.neCondition("id", datasetId);
        String sql = sqlCreator.selectData(standardVersion.getDataSetTableName());
        Query sessionQuery = getQuery(sqlCreator, sql);
        List<StdDataSetModel> list = sessionQuery.list();
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public Object update(String stdVersion, String dataset) {
        if (StringUtil.isEmpty(stdVersion)) {
            throw new ApiException(ErrorCode.StandardDatasetMissVersion);
        }
        Boolean existFlg = false;
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            StdDataSetModel stdDataSetModel = objectMapper.readValue(dataset, StdDataSetModel.class);
            existFlg = datasetCodeValidate(standardVersion, stdDataSetModel.getId(), stdDataSetModel.getCode());
            if (!existFlg) {
                this.update(standardVersion, stdDataSetModel);
                return stdDataSetModel;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistStandardDatasetCode);
        } else {
            throw new ApiException(ErrorCode.StandardDatasetUpdateFailed);
        }
    }
    public StdDataSetModel get(String stdVersion, Integer datasetId) {
        if (StringUtil.isEmpty(stdVersion)) {
            throw new ApiException(ErrorCode.StandardDatasetMissVersion);
        }
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            if (datasetId != null) {
                return this.get(standardVersion, datasetId);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardDatasetGetFailed);
    }
    private StdDataSetModel get(StandardVersion standardVersion, Integer datasetId) {
        String dataSetTable = standardVersion.getDataSetTableName();
        SqlCreator sqlCreator = new SqlCreator(StdDataSetModel.class);
        sqlCreator.equalCondition("id", datasetId);
        String sql = sqlCreator.selectData(dataSetTable);
        Query query = getQuery(sqlCreator, sql);
        return (StdDataSetModel) query.uniqueResult();
    }
    private void update(StandardVersion standardVersion, StdDataSetModel stdDataSetModel) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdDataSetModel));
        SqlCreator sqlCreator = new SqlCreator(StdDataSetModel.class);
        String dataSetTable = standardVersion.getDataSetTableName();
        String sql = sqlCreator.updateDataByTableKey(dataSetTable, jsonNode);
        Query query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private void delete(StandardVersion standardVersion, Integer datasetId) {
        Session session = getCurrentSession();
        String sql = "delete from " + standardVersion.getDataSetTableName() + " where id = :id";
        Query query = session.createSQLQuery(sql);
        query.setInteger("id", datasetId);
        query.executeUpdate();
        sql = "delete from " + standardVersion.getMetaDataTableName() + " where dataset_id = :datasetId";
        query = session.createSQLQuery(sql);
        query.setInteger("datasetId", datasetId);
        query.executeUpdate();
    }
    private void add(String dataSetTable, StdDataSetModel stdDataSetModel) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        stdDataSetModel.setId(getMaxId(dataSetTable));
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdDataSetModel));
        SqlCreator sqlCreator = new SqlCreator(StdDataSetModel.class);
        String sql = sqlCreator.insertData(dataSetTable, jsonNode);
        Query query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private List<StdDataSetModel> getList(StandardVersion standardVersion, Map<String, String> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdDataSetModel.class);
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        }
        String sql = sqlCreator.selectData(standardVersion.getDataSetTableName());
        Query sessionQuery = getQuery(sqlCreator, sql);
        if (limit != null) {
            sessionQuery.setMaxResults(limit);
            if (offset != null) {
                sessionQuery.setFirstResult(offset);
            }
        }
        return (List<StdDataSetModel>) sessionQuery.list();
    }
    public List getDatasetList(Class tClass, String stdVersion, String condition, String order, Integer limit, Integer offset) {
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            String tableName = standardVersion.getDataSetTableName();
            SqlCreator sqlCreator = new SqlCreator(tClass);
            ObjectMapper objectMapper = new ObjectMapper();
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                if(jsonNode.get("initVal")!=null && !jsonNode.get("initVal").asText().isEmpty()){
                    String initName = jsonNode.get("initVal").asText();
                    sqlCreator.neCondition("code",initName);
                }else if(jsonNode.get("name")!=null && !jsonNode.get("name").asText().isEmpty()){
                    String name = jsonNode.get("name").asText();
                    sqlCreator.likeOrCondition("code", "name", name);
                }
            }
            if (!StringUtil.isEmpty(order)) {
                JsonNode jsonNode = objectMapper.readTree(order);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText().toUpperCase();
                    sqlCreator.order(fieldName, value);
                }
            }
            String sql = sqlCreator.selectData(tableName);
            Query query = getQuery(sqlCreator, sql);
            if (limit != null) {
                query.setMaxResults(limit);
                if (offset != null) {
                    query.setFirstResult(offset * limit);
                }
            }
            return query.list();
        } catch (Exception e) {
            e.printStackTrace();
            throw new ApiException(ErrorCode.GetDataSetListFailed);
        }
    }
    public Integer getDatasetInt(Class tClass, String stdVersion, String condition) {
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            String tableName = standardVersion.getDataSetTableName();
            SqlCreator sqlCreator = new SqlCreator(tClass);
            ObjectMapper objectMapper = new ObjectMapper();
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.likeOrCondition("code", "name", name);
            }
            String sql = sqlCreator.countData(tableName);
            Query query = getCurrentSession().createSQLQuery(sql);
            for (String key : sqlCreator.getKeyValueMap().keySet()) {
                query.setParameter(key, sqlCreator.getKeyValueMap().get(key));
            }
            Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
            return count;
        } catch (Exception e) {
            e.printStackTrace();
            throw new ApiException(ErrorCode.GetDataSetListFailed);
        }
    }
    public List<Select2> getDatasetSelectList(String stdVersion, String condition, String order, Integer limit, Integer offset) {
        List<StdDataSetModel> datasetList = getDatasetList(StdDataSetModel.class, stdVersion, condition, order, limit, offset);
        List<Select2> detailModelList = new ArrayList<>();
        for (StdDataSetModel stdDataSetModel : datasetList) {
            Select2 select2 = new Select2();
            select2.setId(stdDataSetModel.getId() + Constants.COMMA + stdDataSetModel.getCode());
            select2.setText(stdDataSetModel.getName());
            detailModelList.add(select2);
        }
        return detailModelList;
    }
    public List getAllVersionDatasetList() {
        try {
            String hql = "FROM StandardVersionModel WHERE publishTime is not null order by publishTime";
            Query query = getCurrentSession().createQuery(hql);
            List<StandardVersionModel> versionModelList = query.list();
            String sql = Constants.EMPTY;
            BeanTransformer transformer = new BeanTransformer(StdDataSetModel.class);
            for (StandardVersionModel versionModel : versionModelList) {
                SqlCreator sqlCreator = new SqlCreator(StdDataSetModel.class);
                StandardVersion version = new StandardVersion(versionModel.getVersion());
                sql = sql + sqlCreator.selectData(version.getDataSetTableName()) + Constants.UNION;
            }
            if (!StringUtil.isEmpty(sql)) {
                sql = sql.substring(0, sql.length() - Constants.UNION.length());
                SQLQuery sqlQuery = getCurrentSession().createSQLQuery(sql);
                sqlQuery.setResultTransformer(transformer);
                List<StdDataSetModel> modelList = sqlQuery.list();
                List<StdDataSetModel> distinctModelList = new ArrayList<>();
                Map<String, StdDataSetModel> datasetModelMap = new HashMap<>();
                for (StdDataSetModel model : modelList) {
                    datasetModelMap.put(model.getCode(), model);
                }
                for (String key : datasetModelMap.keySet()) {
                    distinctModelList.add(datasetModelMap.get(key));
                }
                return distinctModelList;
            } else {
                return new ArrayList<>();
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new ApiException(ErrorCode.GetDataSetListFailed);
        }
    }
    //从excel导入数据集、数据元
    public void importFromExcel(String filePath, String stdVersion){
        String datasetTable;
        String metadataTable;
        String dictTable;
        if (StringUtil.isEmpty(stdVersion)) {
            datasetTable = "std_dataset";
            metadataTable = "std_metadata";
            dictTable = "std_dictionary";
        } else {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            datasetTable = standardVersion.getDataSetTableName();
            metadataTable = standardVersion.getMetaDataTableName();
            dictTable = standardVersion.getDictTableName();
        }
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryModel.class);
        String sql = sqlCreator.selectData(dictTable);
        Query sessionQuery = getQuery(sqlCreator, sql);
        List<StdDictionaryModel> stdDictList = sessionQuery.list();
        Map<String, Integer> stdDictMap = new HashMap<>();
        for (StdDictionaryModel dict : stdDictList) {
            stdDictMap.put(dict.getCode(), dict.getId());
        }
        try {
            InputStream is = new FileInputStream(filePath);
            Workbook rwb = Workbook.getWorkbook(is);
            Sheet[] sheets = rwb.getSheets();
            for (Sheet sheet : sheets) {
                StdDataSetModel stdDataSetModel = new StdDataSetModel();
                //获取数据集信息
                String sheetName = sheet.getName(); //sheet名字
                String dataSetNname = sheet.getCell(1, 0).getContents();//名称
                String dataSetCode = sheet.getCell(1, 1).getContents();//标识
                String reference = sheet.getCell(1, 2).getContents();//参考
                String summary = sheet.getCell(1, 3).getContents();//备注
                //todo:test--测试时备注做区别,方便删除测试,summary变量区别
                //summary="测试excel导入";
                //todo:test--测试时code区别,否则测试不成功,因为code唯一
                //dataSetCode = dataSetCode+"excel";
                if (dataSetNname==null || dataSetNname.equals("")){
                    throw new Exception(sheetName+"数据集名称不能为空,请检查!");
                }
                if (dataSetCode==null || dataSetCode.equals("")){
                    throw new Exception(sheetName +"数据集标识不能为空,请检查!");
                }
                //插入数据集信息
                stdDataSetModel.setCode(dataSetCode);//code唯一
                stdDataSetModel.setName(dataSetNname);
                stdDataSetModel.setstandardId(2);
                //获取数据元信息
                Set<String> set = new HashSet<String>();
                List<StdMetaDataModel> metaDataList = new ArrayList<>();
                int rows = sheet.getRows();
                for (int j = 0; j < rows - 5; j++) {
                    StdMetaDataModel metaData = new StdMetaDataModel();
                    int row = j + 5;
                    String innerCode = sheet.getCell(1, row).getContents();//内部标识
                    String code = sheet.getCell(2, row).getContents();//数据元编码
                    String name = sheet.getCell(3, row).getContents();//数据元名称
                    String definition = sheet.getCell(4, row).getContents();//数据元定义
                    String type = sheet.getCell(5, row).getContents();//数据类型
                    String format = sheet.getCell(6, row).getContents();//表示形式
                    String dictCode = sheet.getCell(7, row).getContents();//术语范围值
                    String columnName = sheet.getCell(8, row).getContents();//列名
                    String columnType = sheet.getCell(9, row).getContents();//列类型
                    String columnLength = sheet.getCell(10, row).getContents();//列长度
                    String primaryKey = sheet.getCell(11, row).getContents();//主键
                    String nullable = sheet.getCell(12, row).getContents();//可为空
                    Integer pk = 0;
                    Integer isNull = 1;
                    if (!StringUtil.isEmpty(primaryKey)) {
                        pk = Integer.parseInt(primaryKey);
                    }
                    if (!StringUtil.isEmpty(nullable)) {
                        isNull = Integer.parseInt(nullable);
                    }
                    //todo:test--测试时备注做区别,方便删除测试,definition变量区别
                    //definition="测试excel导入";
                    //数据元的校验,一个不通过则全部不保存
                    if (innerCode==null || innerCode.equals("")){
                        throw new Exception(sheetName+"第"+(row+1)+"行内部标识不能为空,请检查!");
                    }else{
                        //innerCode要唯一
                        set.add(innerCode);
                        if (set.toArray(new String[set.size()]).length != j+1){
                            //innerCode重复
                            throw new Exception(sheetName+"第"+(row+1)+"行内部标识已存在,请检查!");
                        }
                    }
                    if (StringUtil.isEmpty(code)){
                        throw new Exception(sheetName+"第"+(row+1)+"行数据元编码不能为空,请检查!");
                    }
                    if (StringUtil.isEmpty(name)){
                        throw new Exception(sheetName+"第"+(row+1)+"行数据元名称不能为空,请检查!");
                    }
                    if (StringUtil.isEmpty(columnName)){
                        throw new Exception(sheetName+"第"+(row+1)+"行列名不能为空,请检查!");
                    }
                    if (pk == 1 && isNull == 1){
                        throw new Exception(sheetName+"第"+(row+1)+"行主键不能为空,请检查!");
                    }
                    //数据类型与列类型一致 S、L、N、D、DT、T、BY
                    if ((type.contains("S") && !columnType.contains("VARCHAR")) || (type.equals("D") && !columnType.equals("DATE"))  || (type.equals("DT") && !columnType.equals("DATETIME"))) {
                        throw new Exception(sheetName+"第"+(row+1)+"行数据类型与列类型不匹配,请检查!");
                    }
                    //插入数据元信息
                    metaData.setId(0);//为0内部自增
                    metaData.setCode(innerCode);
                    metaData.setName(name);
                    metaData.setDeCode(code);
                    metaData.setType(type);
                    if (!StringUtil.isEmpty(dictCode)) {
                        metaData.setDictId(stdDictMap.get(dictCode));
                    }
                    metaData.setFormat(format);
                    metaData.setDefinition(definition);
                    metaData.setColumnName(columnName);
                    metaData.setColumnLength(columnLength);
                    metaData.setColumnType(columnType);
                    metaData.setPrimaryKey(0);
                    metaData.setPrimaryKey(pk);
                    metaData.setNullable(isNull);
                    metaDataList.add(metaData);
                    //metaDataManager.saveMetaData(dataSet, metaData);//保存数据元
                }
                //数据集入库
                add(datasetTable, stdDataSetModel);//保存数据集信息
                Integer metaDataMaxId = getMaxId(metadataTable);
                //数据元入库
                if (metaDataList.size()>0){
                    for (StdMetaDataModel metaData : metaDataList) {
                        sqlCreator = new SqlCreator(StdMetaDataModel.class);
                        metaData.setDatasetId(stdDataSetModel.getId());
                        metaData.setId(metaDataMaxId++);
                        metaData.setStandardId(2);
                        ObjectMapper objectMapper = new ObjectMapper();
                        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(metaData));
                        sql = sqlCreator.insertData(metadataTable, jsonNode);
                        Query query = getExeuteQuery(sqlCreator, sql);
                        query.executeUpdate();
                    }
                }
            }
            //关闭
            rwb.close();
            is.close();
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

+ 293 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDictEntryService.java

@ -0,0 +1,293 @@
package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.RequestParamTransformer;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.Select2;
import com.yihu.ehr.standard.model.standard.StdDictionaryEntryModel;
import com.yihu.ehr.standard.service.bo.StandardVersion;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.*;
/**
 * @author Sand
 * @version 1.0
 * @created 16-7月-2015 20:57:06
 */
@Transactional
@Service("StdDictEntryService")
public class StdDictEntryService extends SQLGeneralDAO {
    public static final String BEAN_ID = "StdDictEntryService";
    public StdDictEntryService() {
    }
    public void finalize() throws Throwable {
    }
    public List<StdDictionaryEntryModel> getList(String stdVersion,Integer dictId, String condition, String order, Integer limit, Integer offset) {
        try {
            Map queryMap = RequestParamTransformer.parseJsonToMap(condition);
            Map orderMap = RequestParamTransformer.parseJsonToMap(order);
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            return this.getList(standardVersion, dictId, queryMap, orderMap, limit, offset);
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardDictEntryGetListFailed);
    }
    public Object add(String stdVersion, String dictEntry) {
        Boolean existFlg = false;
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            StdDictionaryEntryModel stdDictionaryEntryModel = objectMapper.readValue(dictEntry, StdDictionaryEntryModel.class);
            existFlg = dictEntryCodeValidate(standardVersion, stdDictionaryEntryModel.getDictId(), stdDictionaryEntryModel.getCode());
            if (!existFlg) {
                this.add(standardVersion, stdDictionaryEntryModel);
                return stdDictionaryEntryModel;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistStandardDictEntryCode);
        } else {
            throw new ApiException(ErrorCode.StandardDictEntrySaveFailed);
        }
    }
    public Boolean dictEntryCodeValidate(StandardVersion standardVersion, Integer dictId, String code) {
        Map<String, String> query = new HashMap<>();
        Map<String, String> order = new HashMap<>();
        query.put("code", code);
        List<StdDictionaryEntryModel> list = this.getList(standardVersion, dictId, query, order, 1, 0);
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public void delete(String stdVersion, Integer dictEntryId) {
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            if (dictEntryId != null) {
                this.delete(standardVersion, dictEntryId);
            }
        } catch (Exception e) {
            throw new ApiException(ErrorCode.StandardDictEntryDeleteFailed);
        }
    }
    public Boolean dictEntryCodeValidate(StandardVersion standardVersion, Integer dictId, Integer dictEntryId, String code) {
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryEntryModel.class);
        sqlCreator.equalCondition("dictId", dictId);
        sqlCreator.equalCondition("code", code);
        sqlCreator.neCondition("id", dictEntryId);
        String sql = sqlCreator.selectData(standardVersion.getDictEntryTableName());
        Query sessionQuery = getQuery(sqlCreator, sql);
        List<StdDictionaryEntryModel> list = sessionQuery.list();
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public Object update(String stdVersion, String dictEntry) {
        Boolean existFlg = false;
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            StdDictionaryEntryModel stdDictionaryEntryModel = objectMapper.readValue(dictEntry, StdDictionaryEntryModel.class);
            existFlg = dictEntryCodeValidate(standardVersion, stdDictionaryEntryModel.getDictId(), stdDictionaryEntryModel.getId(), stdDictionaryEntryModel.getCode());
            if (!existFlg) {
                this.modify(standardVersion, stdDictionaryEntryModel);
                return stdDictionaryEntryModel;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistStandardDictEntryCode);
        } else {
            throw new ApiException(ErrorCode.StandardDictEntryUpdateFailed);
        }
    }
    public StdDictionaryEntryModel get(String stdVersion, Integer dictEntryId) {
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            if (dictEntryId != null) {
                return this.get(standardVersion, dictEntryId);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardDictEntryGetFailed);
    }
    private StdDictionaryEntryModel get(StandardVersion standardVersion, Integer dictEntryId) {
        String dictEntryTableName = standardVersion.getDictEntryTableName();
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryEntryModel.class);
        sqlCreator.equalCondition("id", dictEntryId);
        String sql = sqlCreator.selectData(dictEntryTableName);
        Query query = getQuery(sqlCreator, sql);
        return (StdDictionaryEntryModel) query.uniqueResult();
    }
    private void modify(StandardVersion standardVersion, StdDictionaryEntryModel stdDictionaryEntryModel) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdDictionaryEntryModel));
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryEntryModel.class);
        String dictEntryTableName = standardVersion.getDictEntryTableName();
        String sql = sqlCreator.updateDataByTableKey(dictEntryTableName, jsonNode);
        Query query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private void delete(StandardVersion standardVersion, Integer dictEntryId) {
        Session session = getCurrentSession();
        String sql = "delete from " + standardVersion.getDictEntryTableName() + " where id = :id";
        Query query = session.createSQLQuery(sql);
        query.setInteger("id", dictEntryId);
        query.executeUpdate();
    }
    private void add(StandardVersion standardVersion, StdDictionaryEntryModel stdDictionaryEntryModel) throws IOException {
        Session session = getCurrentSession();
        String dictEntryTableName = standardVersion.getDictEntryTableName();
        String sql = "select max(id) from " + dictEntryTableName;
        Query query = session.createSQLQuery(sql);
        Object object = query.uniqueResult();
        Integer id = object == null ? 1 : Integer.parseInt(object.toString()) + 1;
        stdDictionaryEntryModel.setId(id);
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdDictionaryEntryModel));
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryEntryModel.class);
        sql = sqlCreator.insertData(dictEntryTableName, jsonNode);
        query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private List<StdDictionaryEntryModel> getList(StandardVersion standardVersion, Integer dictId, Map<String, String> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryEntryModel.class);
        sqlCreator.equalCondition("dictId", dictId);
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        }
        String sql = sqlCreator.selectData(standardVersion.getDictEntryTableName());
        Query sessionQuery = getQuery(sqlCreator, sql);
        if (limit != null) {
            sessionQuery.setMaxResults(limit);
            if (offset != null) {
                sessionQuery.setFirstResult(offset);
            }
        }
        return (List<StdDictionaryEntryModel>) sessionQuery.list();
    }
    public List getDictEntryList(Class tClass, String stdVersion, Integer dictId, String condition, String order, Integer limit, Integer offset) {
        StandardVersion standardVersion = new StandardVersion(stdVersion);
        String tableName = standardVersion.getDictEntryTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        sqlCreator.equalCondition("dictId", dictId);
        if (!StringUtil.isEmpty(condition)) {
            try {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.likeOrCondition("code", "value", name);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
            if (!StringUtil.isEmpty(order)) {
                JsonNode jsonNode = objectMapper.readTree(order);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText().toUpperCase();
                    sqlCreator.order(fieldName, value);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        String sql = sqlCreator.selectData(tableName);
        Query query = getQuery(sqlCreator, sql);
        if (limit != null) {
            query.setMaxResults(limit);
            if (offset != null) {
                query.setFirstResult(offset * limit);
            }
        }
        return query.list();
    }
    public Integer getDictEntryInt(Class tClass, String stdVersion, Integer dictId, String condition, String order, Integer limit, Integer offset) {
        StandardVersion standardVersion = new StandardVersion(stdVersion);
        String tableName = standardVersion.getDictEntryTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        sqlCreator.equalCondition("dictId", dictId);
        if (!StringUtil.isEmpty(condition)) {
            try {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.likeOrCondition("code", "value", name);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        String sql = sqlCreator.countData(tableName);
        Query query = getCurrentSession().createSQLQuery(sql);
        for (String key : sqlCreator.getKeyValueMap().keySet()) {
            query.setParameter(key, sqlCreator.getKeyValueMap().get(key));
        }
        Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
        return count;
    }
    public List<Select2> getDictEntrySelectList(List<StdDictionaryEntryModel> dictEntryList) {
        List<Select2> detailModelList = new ArrayList<>();
        for (StdDictionaryEntryModel dictEntry : dictEntryList) {
            Select2 select2 = new Select2();
            select2.setId(dictEntry.getId() + Constants.COMMA + dictEntry.getCode());
            select2.setText(dictEntry.getValue());
            detailModelList.add(select2);
        }
        return detailModelList;
    }
}//end DictEntryManager

+ 299 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdDictService.java

@ -0,0 +1,299 @@
package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.BeanTransformer;
import com.yihu.ehr.framework.util.sql.RequestParamTransformer;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.Select2;
import com.yihu.ehr.standard.model.standard.StdDictionaryModel;
import com.yihu.ehr.standard.service.bo.StandardVersion;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.*;
/**
 * @author Sand
 * @version 1.0
 * @created 14-7月-2015 15:44:21
 */
@Transactional
@Service("StdDictService")
public class StdDictService extends SQLGeneralDAO {
    public static final String BEAN_ID = "StdDictService";
    public StdDictService() {
    }
    public void finalize() throws Throwable {
    }
    public List<StdDictionaryModel> getList(String stdVersion, String condition, String order, Integer limit, Integer offset) {
        try{
            Map<String, String> queryMap = RequestParamTransformer.parseJsonToMap(condition);
            Map<String, String> orderMap = RequestParamTransformer.parseJsonToMap(order);
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            return this.getList(standardVersion, queryMap, orderMap, limit, offset);
        }catch (Exception e){
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardDictGetListFailed);
    }
    public Object add(String stdVersion, String dict) {
        Boolean existFlg = false;
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            StdDictionaryModel stdDictionaryModel = objectMapper.readValue(dict, StdDictionaryModel.class);
            existFlg = dictCodeValidate(standardVersion, stdDictionaryModel.getCode());
            if (!existFlg) {
                this.add(standardVersion, stdDictionaryModel);
                return stdDictionaryModel;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistStandardDictCode);
        } else {
            throw new ApiException(ErrorCode.StandardDictSaveFailed);
        }
    }
    public Boolean dictCodeValidate(StandardVersion standardVersion, String code) {
        Map<String, String> query = new HashMap<>();
        Map<String, String> order = new HashMap<>();
        query.put("code", code);
        List<StdDictionaryModel> list = this.getList(standardVersion, query, order, 1, 0);
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public void delete(String stdVersion, Integer dictId) {
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            if (dictId != null) {
                this.delete(standardVersion, dictId);
            }
        } catch (Exception e) {
            throw new ApiException(ErrorCode.StandardDictDeleteFailed);
        }
    }
    public Boolean dictCodeValidate(StandardVersion standardVersion, Integer dictId, String code) {
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryModel.class);
        sqlCreator.equalCondition("code", code);
        sqlCreator.neCondition("id", dictId);
        String sql = sqlCreator.selectData(standardVersion.getDictTableName());
        Query sessionQuery = getQuery(sqlCreator, sql);
        List<StdDictionaryModel> list = sessionQuery.list();
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public Object update(String stdVersion, String dict) {
        Boolean existFlg = false;
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            StdDictionaryModel stdDictionaryModel = objectMapper.readValue(dict, StdDictionaryModel.class);
            existFlg = dictCodeValidate(standardVersion, stdDictionaryModel.getId(), stdDictionaryModel.getCode());
            if (!existFlg) {
                this.modify(standardVersion, stdDictionaryModel);
                return stdDictionaryModel;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistStandardDictCode);
        } else {
            throw new ApiException(ErrorCode.StandardDictUpdateFailed);
        }
    }
    public StdDictionaryModel get(String stdVersion, Integer dictId) {
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            if (dictId != null) {
                return this.get(standardVersion, dictId);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardDictGetFailed);
    }
    private StdDictionaryModel get(StandardVersion standardVersion, Integer dictId) {
        Session session = getCurrentSession();
        String dictTableName = standardVersion.getDictTableName();
        String sql = "select id, std_id, code, name, define, description, parent_id from " + dictTableName + " where id = :id";
        Query query = session.createSQLQuery(sql);
        query.setInteger("id", dictId);
        query.setResultTransformer(new BeanTransformer<>(StdDictionaryModel.class));
        return (StdDictionaryModel) query.uniqueResult();
    }
    private void modify(StandardVersion standardVersion, StdDictionaryModel stdDictionaryModel) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        String strTableName = standardVersion.getDictTableName();
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdDictionaryModel));
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryModel.class);
        String sql = sqlCreator.updateDataByTableKey(strTableName, jsonNode);
        Query query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private void delete(StandardVersion standardVersion, Integer dictId) {
        Session session = getCurrentSession();
        String sql = "delete from " + standardVersion.getDictTableName() + " where id = :id";
        Query query = session.createSQLQuery(sql);
        query.setInteger("id", dictId);
        query.executeUpdate();
        sql = "delete from " + standardVersion.getDictEntryTableName() + " where dict_id = :dictId";
        query = session.createSQLQuery(sql);
        query.setInteger("dictId", dictId);
        query.executeUpdate();
    }
    private void add(StandardVersion standardVersion, StdDictionaryModel stdDictionaryModel) throws IOException {
        Session session = getCurrentSession();
        ObjectMapper objectMapper = new ObjectMapper();
        String strTableName = standardVersion.getDictTableName();
        String sql = null;
        sql = "select max(id) from " + strTableName;
        Query query = session.createSQLQuery(sql);
        Object object = query.uniqueResult();
        Integer id = object == null ? 1 : Integer.parseInt(object.toString()) + 1;
        stdDictionaryModel.setId(id);
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdDictionaryModel));
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryModel.class);
        sql = sqlCreator.insertData(strTableName, jsonNode);
        query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private List<StdDictionaryModel> getList(StandardVersion standardVersion, Map<String, String> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdDictionaryModel.class);
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        }
        String sql = sqlCreator.selectData(standardVersion.getDictTableName());
        Query sessionQuery = getQuery(sqlCreator, sql);
        if (limit != null) {
            sessionQuery.setMaxResults(limit);
            if (offset != null) {
                sessionQuery.setFirstResult(offset);
            }
        }
        return (List<StdDictionaryModel>) sessionQuery.list();
    }
    public List getDictList(Class tClass, String stdVersion, String condition, String order, Integer limit, Integer offset) {
        StandardVersion standardVersion = new StandardVersion(stdVersion);
        String tableName = standardVersion.getDictTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                if(jsonNode.get("initVal")!=null && !jsonNode.get("initVal").asText().isEmpty()){
                    String initName = jsonNode.get("initVal").asText();
                    sqlCreator.neCondition("code",initName);
                }else if(jsonNode.get("name")!=null && !jsonNode.get("name").asText().isEmpty()){
                    String name = jsonNode.get("name").asText();
                    sqlCreator.likeOrCondition("code", "name", name);
                }
            }
            if (!StringUtil.isEmpty(order)) {
                JsonNode jsonNode = objectMapper.readTree(order);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText().toUpperCase();
                    sqlCreator.order(fieldName, value);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        String sql = sqlCreator.selectData(tableName);
        Query query = getQuery(sqlCreator, sql);
        if (limit != null) {
            query.setMaxResults(limit);
            if (offset != null) {
                query.setFirstResult(offset * limit);
            }
        }
        return query.list();
    }
    public Integer getDictInt(Class tClass, String stdVersion, String condition) {
        StandardVersion standardVersion = new StandardVersion(stdVersion);
        String tableName = standardVersion.getDictTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.likeOrCondition("code", "name", name);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        String sql = sqlCreator.countData(tableName);
        Query query = getCurrentSession().createSQLQuery(sql);
        for (String key : sqlCreator.getKeyValueMap().keySet()) {
            query.setParameter(key, sqlCreator.getKeyValueMap().get(key));
        }
        Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
        return count;
    }
    public List<Select2> getDictSelectList(List<StdDictionaryModel> dictList) {
        List<Select2> detailModelList = new ArrayList<>();
        for (StdDictionaryModel dictModel : dictList) {
            Select2 select2 = new Select2();
            select2.setId(dictModel.getId() + Constants.COMMA + dictModel.getCode());
            select2.setText(dictModel.getName());
            detailModelList.add(select2);
        }
        return detailModelList;
    }
}

+ 358 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdMetadataService.java

@ -0,0 +1,358 @@
package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.BeanTransformer;
import com.yihu.ehr.framework.util.sql.RequestParamTransformer;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.Select2;
import com.yihu.ehr.standard.model.standard.StandardVersionModel;
import com.yihu.ehr.standard.model.standard.StdDataSetModel;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
import com.yihu.ehr.standard.service.bo.StandardVersion;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.util.*;
/**
 * 数据元管理接口实现。
 *
 * @author Sand
 * @version 1.0
 * @created 2015.07.10 15:22
 */
@Transactional
@Service("StdMetadataService")
public class StdMetadataService extends SQLGeneralDAO {
    public static final String BEAN_ID = "StdMetadataService";
    public StdMetadataService() {
    }
    public List<StdMetaDataModel> getList(String stdVersion, Integer datasetId, String condition, String order, Integer limit, Integer offset) {
        try{
            Map<String, String> queryMap = RequestParamTransformer.parseJsonToMap(condition);
            Map<String, String> orderMap = RequestParamTransformer.parseJsonToMap(order);
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            return this.getList(standardVersion, datasetId, queryMap, orderMap, limit, offset);
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardMetaDataGetListFailed);
    }
    public Object add(String stdVersion, String metadata) {
        Boolean existFlg = false;
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            StdMetaDataModel stdMetaDataModel = objectMapper.readValue(metadata, StdMetaDataModel.class);
            existFlg = metadataCodeValidate(standardVersion, stdMetaDataModel.getDatasetId(), stdMetaDataModel.getCode());
            if (!existFlg) {
                this.add(standardVersion, stdMetaDataModel);
                return stdMetaDataModel;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistStandardMetaDataCode);
        } else {
            throw new ApiException(ErrorCode.StandardMetaDataSaveFailed);
        }
    }
    public Boolean metadataCodeValidate(StandardVersion standardVersion, Integer datasetId, String code) {
        Map<String, String> query = new HashMap<>();
        Map<String, String> order = new HashMap<>();
        query.put("code", code);
        List<StdMetaDataModel> list = this.getList(standardVersion, datasetId, query, order, 1, 0);
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public void delete(String stdVersion, Integer metadataId) {
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            if (metadataId != null) {
                this.delete(standardVersion, metadataId);
            }
        } catch (Exception e) {
            throw new ApiException(ErrorCode.StandardMetaDataDeleteFailed);
        }
    }
    public Boolean metadataCodeValidate(StandardVersion standardVersion, Integer datasetId, Integer metadataId, String code) {
        SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
        sqlCreator.equalCondition("datasetId", datasetId);
        sqlCreator.equalCondition("code", code);
        sqlCreator.neCondition("id", metadataId);
        String sql = sqlCreator.selectData(standardVersion.getMetaDataTableName());
        Query sessionQuery = getQuery(sqlCreator, sql);
        List<StdMetaDataModel> list = sessionQuery.list();
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
    public StdMetaDataModel update(String stdVersion, String metadata) {
        Boolean existFlg = false;
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            ObjectMapper objectMapper = new ObjectMapper();
            StdMetaDataModel stdMetaDataModel = objectMapper.readValue(metadata, StdMetaDataModel.class);
            existFlg = metadataCodeValidate(standardVersion, stdMetaDataModel.getDatasetId(), stdMetaDataModel.getId(), stdMetaDataModel.getCode());
            if (!existFlg) {
                this.modify(standardVersion, stdMetaDataModel);
                return stdMetaDataModel;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistStandardMetaDataCode);
        } else {
            throw new ApiException(ErrorCode.StandardMetaDataUpdateFailed);
        }
    }
    public StdMetaDataModel get(String stdVersion, Integer metadataId) {
        try {
            StandardVersion standardVersion = new StandardVersion(stdVersion);
            if (metadataId != null) {
                String metaDataTableName = standardVersion.getMetaDataTableName();
                SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
                sqlCreator.equalCondition("id", metadataId);
                String sql = sqlCreator.selectData(metaDataTableName);
                Query query = getQuery(sqlCreator, sql);
                return (StdMetaDataModel) query.uniqueResult();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.StandardMetaDataGetFailed);
    }
    private void modify(StandardVersion standardVersion, StdMetaDataModel stdMetaDataModel) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdMetaDataModel));
        SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
        String metaDataTableName = standardVersion.getMetaDataTableName();
        String sql = sqlCreator.updateDataByTableKey(metaDataTableName, jsonNode);
        Query query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private void delete(StandardVersion standardVersion, Integer metadataId) {
        Session session = getCurrentSession();
        String sql = "delete from " + standardVersion.getMetaDataTableName() + " where id = :id";
        Query query = session.createSQLQuery(sql);
        query.setInteger("id", metadataId);
        query.executeUpdate();
    }
    private void add(StandardVersion standardVersion, StdMetaDataModel stdMetaDataModel) throws IOException {
        Session session = getCurrentSession();
        String metaDataTableName = standardVersion.getMetaDataTableName();
        String sql = "select max(id) from " + metaDataTableName;
        Query query = session.createSQLQuery(sql);
        Object object = query.uniqueResult();
        stdMetaDataModel.setId(object == null ? 1 : Integer.parseInt(object.toString()) + 1);
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(objectMapper.writeValueAsString(stdMetaDataModel));
        SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
        sql = sqlCreator.insertData(metaDataTableName, jsonNode);
        query = getExeuteQuery(sqlCreator, sql);
        query.executeUpdate();
    }
    private List<StdMetaDataModel> getList(StandardVersion standardVersion, Integer datasetId, Map<String, String> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdMetaDataModel.class);
        sqlCreator.equalCondition("datasetId", datasetId);
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        }
        String sql = sqlCreator.selectData(standardVersion.getMetaDataTableName());
        Query sessionQuery = getQuery(sqlCreator, sql);
        if (limit != null) {
            sessionQuery.setMaxResults(limit);
            if (offset != null) {
                sessionQuery.setFirstResult(offset);
            }
        }
        return (List<StdMetaDataModel>) sessionQuery.list();
    }
    public List getMetadataList(Class tClass, String stdVersion, Integer datasetId, String condition, String order, Integer limit, Integer offset) {
        StandardVersion standardVersion = new StandardVersion(stdVersion);
        String tableName = standardVersion.getMetaDataTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        sqlCreator.equalCondition("datasetId", datasetId);
        if (!StringUtil.isEmpty(condition)) {
            try {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.likeOrCondition("code", "name", name);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        try {
            if (!StringUtil.isEmpty(order)) {
                JsonNode jsonNode = objectMapper.readTree(order);
                Iterator<String> fieldNames = jsonNode.fieldNames();
                while (fieldNames.hasNext()) {
                    String fieldName = fieldNames.next();
                    String value = jsonNode.get(fieldName).asText().toUpperCase();
                    sqlCreator.order(fieldName, value);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        String sql = sqlCreator.selectData(tableName);
        Query query = getQuery(sqlCreator, sql);
        if (limit != null) {
            query.setMaxResults(limit);
            if (offset != null) {
                query.setFirstResult(offset * limit);
            }
        }
        return query.list();
    }
    public Integer getMetadataCount(Class tClass, String stdVersion, Integer datasetId, String condition) {
        StandardVersion standardVersion = new StandardVersion(stdVersion);
        String tableName = standardVersion.getMetaDataTableName();
        SqlCreator sqlCreator = new SqlCreator(tClass);
        ObjectMapper objectMapper = new ObjectMapper();
        sqlCreator.equalCondition("datasetId", datasetId);
        if (!StringUtil.isEmpty(condition)) {
            try {
                JsonNode jsonNode = objectMapper.readTree(condition);
                String name = jsonNode.get("name").asText();
                sqlCreator.likeOrCondition("code", "name", name);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        String sql = sqlCreator.countData(tableName);
        Query query = getCurrentSession().createSQLQuery(sql);
        for (String key : sqlCreator.getKeyValueMap().keySet()) {
            query.setParameter(key, sqlCreator.getKeyValueMap().get(key));
        }
        Integer count = Integer.parseInt(StringUtil.toString(query.list().get(0)));
        return count;
    }
    public List<Select2> getMetadataSelectList(List<StdMetaDataModel> metaDataList) {
        List<Select2> detailModelList = new ArrayList<>();
        for (StdMetaDataModel metaDataModel : metaDataList) {
            Select2 select2 = new Select2();
            select2.setId(metaDataModel.getId() + Constants.COMMA + metaDataModel.getCode());
            select2.setText(metaDataModel.getName());
            detailModelList.add(select2);
        }
        return detailModelList;
    }
    public List getAllVersionMetadataList(String condition) {
        try {
            Map<Integer, String> versionMap = new HashMap<>();
            String sql = Constants.EMPTY;
            ObjectMapper objectMapper = new ObjectMapper();
            String code = Constants.EMPTY;
            if (!StringUtil.isEmpty(condition)) {
                JsonNode jsonNode = objectMapper.readTree(condition);
                code = jsonNode.get("code").asText();
            }
            String hql = "FROM StandardVersionModel WHERE publishTime is not null order by publishTime";
            Query query = getCurrentSession().createQuery(hql);
            List<StandardVersionModel> versionModelList = query.list();
            for (StandardVersionModel versionModel : versionModelList) {
                SqlCreator sqlDatasetCreator = new SqlCreator(StdDataSetModel.class);
                StandardVersion version = new StandardVersion(versionModel.getVersion());
                versionMap.put(versionModel.getStandardId(), versionModel.getVersion());
                sqlDatasetCreator.equalCondition("code", code);
                sql = sql + sqlDatasetCreator.selectData(version.getDataSetTableName()) + Constants.UNION;
            }
            BeanTransformer datasetTransformer = new BeanTransformer(StdDataSetModel.class);
            if (!StringUtil.isEmpty(sql)) {
                sql = sql.substring(0, sql.length() - Constants.UNION.length());
                SQLQuery sqlQuery = getCurrentSession().createSQLQuery(sql);
                sqlQuery.setResultTransformer(datasetTransformer);
                sqlQuery.setParameter("code", code);
                List<StdDataSetModel> modelList = sqlQuery.list();
                sql = Constants.EMPTY;
                Integer count =  1;
                Map<Integer, String> datasetIdMap = new HashMap<>();
                for (StdDataSetModel model : modelList) {
                    SqlCreator sqlMetadataCreator = new SqlCreator(StdMetaDataModel.class);
                    StandardVersion version = new StandardVersion(versionMap.get(model.getstandardId()));
                    datasetIdMap.put(count++, StringUtil.toString(model.getId()));
                    sqlMetadataCreator.equalConditionQue("datasetId", model.getId());
                    sql = sql + sqlMetadataCreator.selectData(version.getMetaDataTableName()) + Constants.UNION;
                }
                BeanTransformer metadataTransformer = new BeanTransformer(StdMetaDataModel.class);
                List<StdMetaDataModel> distinctModelList = new ArrayList<>();
                if (!StringUtil.isEmpty(sql)) {
                    sql = sql.substring(0, sql.length() - Constants.UNION.length());
                    sqlQuery = getCurrentSession().createSQLQuery(sql);
                    sqlQuery.setResultTransformer(metadataTransformer);
                    for (int i=1; i<count; i++) {
                        sqlQuery.setParameter(i-1, datasetIdMap.get(i));
                    }
                    List<StdMetaDataModel> metadataList = sqlQuery.list();
                    Map<String, StdMetaDataModel> meatadataModelMap = new HashMap<>();
                    for (StdMetaDataModel model : metadataList) {
                        meatadataModelMap.put(model.getCode(), model);
                    }
                    for (String key : meatadataModelMap.keySet()) {
                        distinctModelList.add(meatadataModelMap.get(key));
                    }
                }
                return distinctModelList;
            } else  {
                return new ArrayList<>();
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new ApiException(ErrorCode.GetDataSetListFailed);
        }
    }
}

+ 203 - 0
Hos-resource/src/main/java/com/yihu/ehr/standard/service/standard/StdPublisherService.java

@ -0,0 +1,203 @@
package com.yihu.ehr.standard.service.standard;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.ehr.framework.common.dao.SQLGeneralDAO;
import com.yihu.ehr.framework.constrant.Constants;
import com.yihu.ehr.framework.constrant.ErrorCode;
import com.yihu.ehr.framework.exception.ApiException;
import com.yihu.ehr.framework.util.operator.CollectionUtil;
import com.yihu.ehr.framework.util.operator.StringUtil;
import com.yihu.ehr.framework.util.sql.RequestParamTransformer;
import com.yihu.ehr.framework.util.sql.SqlCreator;
import com.yihu.ehr.standard.model.standard.StandardModel;
import com.yihu.ehr.standard.model.standard.StdPublisherModel;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
 * @created Airhead 2015/12/23.
 */
@Transactional
@Service("StdPublisherService")
public class StdPublisherService extends SQLGeneralDAO {
    public static final String BEAN_ID = "StdPublisherService";
    public List<StdPublisherModel> getList(String condition, String order, Integer limit, Integer offset) {
        try{
            Map<String, String> queryMap = RequestParamTransformer.parseJsonToMap(condition);
            Map<String, String> orderMap = RequestParamTransformer.parseJsonToMap(order);
            return this.getList(queryMap, orderMap, limit, offset);
        } catch (Exception e) {
            e.printStackTrace();
        }
        throw new ApiException(ErrorCode.GetPublisherListFaield);
    }
    private List<StdPublisherModel> getList(Map<String, String> query, Map<String, String> order, Integer limit, Integer offset) {
        SqlCreator sqlCreator = new SqlCreator(StdPublisherModel.class);
        for (String key : query.keySet()) {
            sqlCreator.equalCondition(key, query.get(key));
        }
        for (String key : order.keySet()) {
            sqlCreator.order(key, order.get(key));
        }
        sqlCreator.neCondition("code", "jkzl");
        String sql = sqlCreator.selectData(StdPublisherModel.TABLE_NAME);
        Query sessionQuery = getQuery(sqlCreator, sql);
        if (limit != null) {
            sessionQuery.setMaxResults(limit);
            if (offset != null) {
                sessionQuery.setFirstResult(offset);
            }
        }
        return (List<StdPublisherModel>) sessionQuery.list();
    }
    public StdPublisherModel add(String publisher) {
        Boolean existFlg = true;
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            StdPublisherModel stdPublisherModel = objectMapper.readValue(publisher, StdPublisherModel.class);
            existFlg = existPublisherValid(stdPublisherModel.getCode(), stdPublisherModel.getName());
            if (!existFlg) {
                saveEntity(stdPublisherModel);
                return stdPublisherModel;
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistOrgForCreate);
        } else {
            throw new ApiException(ErrorCode.SavePublisherFailed);
        }
    }
    public void delete(Integer stdPublisherId) {
        Boolean existFlg = false;
        try {
            StdPublisherModel publisherModel = getEntity(StdPublisherModel.class, stdPublisherId);
            existFlg = existStandardValid(publisherModel.getCode());
            if (!existFlg) {
                String hql = "delete from StdPublisherModel where id = :id";
                Query query = getCurrentSession().createQuery(hql);
                query.setInteger("id", publisherModel.getId());
                query.executeUpdate();
                return;
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistOrgForStandard);
        } else {
            throw new ApiException(ErrorCode.SavePublisherFailed);
        }
}
    public StdPublisherModel update(String publisher) {
        Boolean existFlg;
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            StdPublisherModel stdPublisherModel = objectMapper.readValue(publisher, StdPublisherModel.class);
            StdPublisherModel publisherModel = getEntity(StdPublisherModel.class, stdPublisherModel.getId());
            existFlg = existPublisherValid(stdPublisherModel.getId(), stdPublisherModel.getCode(), stdPublisherModel.getName());
            if (!existFlg) {
                String sql = "update std_info set publisher = :publisher,publisher_org_code = :stdPublisherOrgCode" +
                        " where publisher_org_code = :publisherOrgCode";
                SQLQuery sqlQuery = getCurrentSession().createSQLQuery(sql);
                sqlQuery.setParameter("publisher", stdPublisherModel.getName());
                sqlQuery.setParameter("stdPublisherOrgCode", stdPublisherModel.getCode());
                sqlQuery.setParameter("publisherOrgCode", publisherModel.getCode());
                sqlQuery.executeUpdate();
                publisherModel.setCode(stdPublisherModel.getCode());
                publisherModel.setName(stdPublisherModel.getName());
                publisherModel.setDescription(stdPublisherModel.getDescription());
                updateEntity(publisherModel);
                return stdPublisherModel;
            }
        }catch (Exception e) {
            throw new ApiException(ErrorCode.UpdatePublisherFailed);
        }
        if (existFlg) {
            throw new ApiException(ErrorCode.ExistOrgForCreate);
        } else {
            throw new ApiException(ErrorCode.SavePublisherFailed);
        }
    }
    public StdPublisherModel get(Integer stdPublisherId) {
        try {
            SqlCreator sqlCreator = new SqlCreator(StdPublisherModel.class);
            sqlCreator.equalCondition("id", stdPublisherId);
            String sql = sqlCreator.selectData(StdPublisherModel.TABLE_NAME);
            Query query = getQuery(sqlCreator, sql);
            return (StdPublisherModel) query.uniqueResult();
        } catch (Exception e) {
            throw new ApiException(ErrorCode.GetPublisherFailed);
        }
    }
    public StdPublisherModel getStandardPublisher() {
        try {
            SqlCreator sqlCreator = new SqlCreator(StdPublisherModel.class);
            String paramSql = "select s.org_id from system_param s where s.param_key = '"+ Constants.STANDARD+"'";
            Query paramQuery = getCurrentSession().createSQLQuery(paramSql);
            List list = paramQuery.list();
            String publisherCode = StringUtil.toString(list.get(0));
            sqlCreator.equalCondition("code", publisherCode);
            String sql = sqlCreator.selectData(StdPublisherModel.TABLE_NAME);
            Query query = getQuery(sqlCreator, sql);
            return (StdPublisherModel) query.uniqueResult();
        } catch (Exception e) {
            throw new ApiException(ErrorCode.GetPublisherFailed);
        }
    }
    public boolean existStandardValid(String code) {
        String hql="FROM StandardModel WHERE publisherOrgCode = :code";
        Query query = getCurrentSession().createQuery(hql);
        query.setParameter("code", code);
        List<StandardModel> standardModelList = query.list();
        if (standardModelList.size() > 0) {
           return true;
        }
        return false;
    }
    public boolean existPublisherValid(Integer publiserId, String code, String name) {
        String hql="FROM StdPublisherModel WHERE code = :code or name = :name";
        Query query = getCurrentSession().createQuery(hql);
        query.setParameter("code", code);
        query.setParameter("name", name);
        List<StdPublisherModel> list = query.list();
        if (!CollectionUtil.isEmpty(list)) {
            if (list.get(0).getId() != publiserId) {
                return true;
            }
        }
        return false;
    }
    public boolean existPublisherValid(String code, String name) {
        String hql="FROM StdPublisherModel WHERE code = :code or name = :name";
        Query query = getCurrentSession().createQuery(hql);
        query.setParameter("code", code);
        query.setParameter("name", name);
        List<StdPublisherModel> list = query.list();
        if (!CollectionUtil.isEmpty(list)) {
            return true;
        }
        return false;
    }
}

File diff suppressed because it is too large
+ 59 - 46
Hos-resource/src/main/java/com/yihu/ehr/std/service/StdService.java


+ 16 - 9
Hos-resource/src/main/java/com/yihu/ehr/std/service/intf/IStdService.java

@ -2,7 +2,14 @@ package com.yihu.ehr.std.service.intf;
import com.yihu.ehr.framework.model.DictionaryResult;
import com.yihu.ehr.standard.model.adapter.AdapterDatasetModel;
import com.yihu.ehr.standard.model.adapter.AdapterDictentryModel;
import com.yihu.ehr.standard.model.adapter.resultModel.AdapterMetadataResultDetailModel;
import com.yihu.ehr.standard.model.adapter.resultModel.SchemeVersionResultDetailModel;
import com.yihu.ehr.standard.model.standard.StdDataSetModel;
import com.yihu.ehr.standard.model.standard.StdMetaDataModel;
import java.util.List;
import java.util.Map;
/**
@ -19,35 +26,35 @@ public interface IStdService {
    /**
     * 获取适配方案列表
     */
    public String getSchemeVersion() throws Exception;
    public List<SchemeVersionResultDetailModel> getSchemeVersion() throws Exception;
    /**
     * 通过适配方案获取数据集列表
     */
    public String getDatasetByScheme(String schemeVersion) throws Exception;
    public List<AdapterDatasetModel> getDatasetByScheme(String schemeVersion) throws Exception;
    /**
     * 通过适配方案+应用数据集ID获取数据集列表
     */
    public String getDatasetByScheme(String schemeVersion,String adapterDatasetId) throws Exception;
    public List<AdapterDatasetModel> getDatasetByScheme(String schemeVersion,String adapterDatasetId) throws Exception;
    /**
     * 通过适配方案获取字段列表
     */
    public String getDatacolByScheme(String schemeVersion, String datasetId) throws Exception;
    public List<AdapterMetadataResultDetailModel> getDatacolByScheme(String schemeVersion, String datasetId) throws Exception;
    /**
     * 通过适配方案获取字典列表
     */
    public String getDictByScheme(String schemeVersion, String dictId) throws Exception;
    public List<AdapterDictentryModel> getDictByScheme(String schemeVersion, String dictId) throws Exception;
    /******************************** 标准版本 *****************************************************/
    /**
     * 通过标准版本获取数据集列表
     */
    public String getDatasetByVersion(String stdVersion) throws Exception;
    public List<StdDataSetModel> getDatasetByVersion(String stdVersion) throws Exception;
    public String metadatasAllVersionList(Map<String, Object> params) throws Exception;
    public List<StdMetaDataModel> metadatasAllVersionList(Map<String, Object> params) throws Exception;
    public String datasetsAllVersionList() throws Exception;
    public List<StdDataSetModel> datasetsAllVersionList() throws Exception;
}

+ 8 - 3
Hos-resource/src/main/resources/spring/applicationContext.xml

@ -17,8 +17,7 @@
       >
    <!--业务Beans, 使用注解方式配置-->
    <context:component-scan base-package="com.yihu">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    <context:component-scan base-package="com.yihu.ehr">
    </context:component-scan>
    <!--====================返回为null的时候转“”==========================-->
    <mvc:annotation-driven>
@ -59,6 +58,12 @@
    <!--Hibernate 会话管理器配置-->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="packagesToScan">
            <list>
                <!-- 可以加多个包 -->
                <value>com.yihu.ehr.standard.model</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <value>
                hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
@ -80,7 +85,7 @@
    <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <tx:annotation-driven transaction-manager="txManager"/>
    <tx:annotation-driven transaction-manager="txManager" proxy-target-class="true"/>
    <!--Redis 连接池配置-->
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">

+ 1 - 1
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/adapterplan/adapterCustomizeJs.jsp

@ -101,7 +101,7 @@
          dataType: "json",
          data: {adapterVersion:adapterVersion,stdVersion: stdVersion},
          success: function (data) {
            var schemeDataset = $.parseJSON(data);
            var schemeDataset = data;
            for(var i = 0;i<schemeDataset.length;i++){
              var Id = schemeDataset[i].id;
              if(Id.substring(0,1)=="S"){//定制标准数据集数据(左树)

+ 1 - 2
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/adapterplan/adapterDetailJs.jsp

@ -48,7 +48,7 @@
            success: function (data) {
              if(data!=null){
                
                data = $.parseJSON(data);
                data = data;
                u.$form.attrScan();
                u.$form.Fields.fillValues({
                  name: data.name,
@ -99,7 +99,6 @@
            dataType: "json",
            data:{scheme: JSON.stringify(dataJson[0])},
            success: function (data) {
              data = $.parseJSON(data);
              debugger
              if(Util.isStrEmpty(data.message)){
                $.ligerDialog.alert("保存成功", "提示", "success", function () {

+ 3 - 11
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/adapterplan/configurationJs.jsp

@ -620,10 +620,6 @@
              dataType : "json",
              async:false,
              success :function(data){
                if(!Util.isStrEmpty(data)){
                  data = $.parseJSON(data);
                }
                if(Util.isStrEmpty(data.message)){
                  entryMaster.reloadGrid(); //重新查询,返回json记录集
                  $.ligerDialog.success("保存成功!");
@ -691,10 +687,6 @@
              dataType : "json",
              async:false,
              success :function(data){
                
                if(!Util.isStrEmpty(data)){
                  data = $.parseJSON(data);
                }
                if(Util.isStrEmpty(data.message)){
                  entryMaster.reloadGrid(); //重新查询,返回json记录集
                  $.ligerDialog.success("保存成功!");
@ -1077,7 +1069,7 @@
                        || targer=="adapterDictCode" || targer=="adapterEntryCode" || targer=="stdEntryCode"){//由于机构适配值的数据格式为id:id+“,”+code,text:name,但是机构适配值为id:id+","+name,text:code,所以需要重新组装数据
                  var toData;
                  var toArr = [];
                  var resultData = $.parseJSON(data).detailModelList;
                  var resultData = data.detailModelList;
                  if(targer=="adapterDatasetCode" || targer=="adapterDictCode" && resultData.length>0){//查询结果有值,才填充原本选中的值
                    toArr.push({id:selectId,text:selectText});
                  }
@ -1097,7 +1089,7 @@
                }else{//机构适配名称
                  if(targer=="adapterDatasetName" || targer=="adapterDictName"){
                    var resultData = [];
                    var detailModelList = $.parseJSON(data).detailModelList;
                    var detailModelList = data.detailModelList;
                    if(detailModelList.length>0){
                      resultData.push({id:selectId,text:selectText});
                    }
@ -1110,7 +1102,7 @@
                    };
                  }else{
                    return {
                      results:  $.parseJSON(data).detailModelList
                      results:  data.detailModelList
                    };
                  }

+ 1 - 9
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/adapterplan/indexJs.jsp

@ -82,7 +82,7 @@
        data:{condition: JSON.stringify({"type":type,"name":name})},
        success: function (data) {
          var resultArr = [];
          var array = $.parseJSON(data);
          var array = data;
          for(var i=0;i<array.length;i++){
             resultArr.push(array[i]);
          }
@ -203,7 +203,6 @@
                  dataType: "json",
                  data:{versionId: Number(id), publisher:""},
                  success: function (data) {
                    data = $.parseJSON(data);
                    if(Util.isStrEmpty(data.message)){
                      $.ligerDialog.success("发布成功!");
                      adapterplan.list.getTypeList();
@ -280,10 +279,6 @@
            dataType: "json",
            data: {schemeId: Number(schemeId)},
            success: function (data) {
              if(!Util.isStrEmpty(data)){
                data = $.parseJSON(data);
              }
              if(Util.isStrEmpty(data.message)){
                $.ligerDialog.success("删除成功!");
                adapterplan.list.getTypeList();
@ -310,9 +305,6 @@
            dataType: "json",
            data: {versionId: Number(versionId)},
            success: function (data) {
              if(!Util.isStrEmpty(data)){
                data = $.parseJSON(data);
              }
              if(Util.isStrEmpty(data.message)){
                $.ligerDialog.success("删除成功!");
                adapterplan.list.getTypeList();

+ 1 - 4
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/adapterplan/versionDetailJs.jsp

@ -68,7 +68,7 @@
                data: {versionId: versionId},
                success: function (data) {
                  if(data!=null){
                    u._getData = $.parseJSON(data);
                    u._getData = data;
                    if (type != '') {//新增或修改
                      u.$addform.attrScan();
@ -102,7 +102,6 @@
        }
        var _url = "";
        var resultData;
        debugger
        adapterplan.version.$addform.attrScan();
        var jsonString = $.parseJSON(adapterplan.version.$addform.Fields.toJsonString());
        if( $("#type").val()=="add"){//新增保存
@ -124,8 +123,6 @@
          dataType: "json",
          data:{version:  JSON.stringify(resultData)},
          success: function (data) {
            debugger
            data = $.parseJSON(data);
            if(Util.isStrEmpty(data.message)){
              $.ligerDialog.alert("保存成功", "提示", "success", function () {
                parent.adapterplan.list.getTypeList();//刷新数据

+ 1 - 11
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/appIndexJs.jsp

@ -85,7 +85,7 @@
        data:{condition: JSON.stringify({"type":type,"name":name})},
        success: function (data) {
          var resultArr = [];
          var array = $.parseJSON(data);
          var array = data;
          for(var i=0;i<array.length;i++){
            resultArr.push(array[i]);
          }
@ -267,9 +267,6 @@
              dataType: "json",
              data: {standardId: standardId},
              success: function (data) {
                if(!Util.isStrEmpty(data)){
                  data = $.parseJSON(data);
                }
                if(Util.isStrEmpty(data.message)){
                  $.ligerDialog.success("删除成功!");
                  standard.list.getTypeList();
@ -295,9 +292,6 @@
            dataType: "json",
            data: {publisherId: publisherId},
            success: function (data) {
              if(!Util.isStrEmpty(data)){
                data = $.parseJSON(data);
              }
              if(Util.isStrEmpty(data.message)){
                $.ligerDialog.success("删除成功!");
                standard.list.getTypeList();
@ -323,10 +317,6 @@
            dataType: "json",
            data: {versionId: versionId,version:version},
            success: function (data) {
              if(!Util.isStrEmpty(data)){
                data = $.parseJSON(data);
              }
              debugger
              if(Util.isStrEmpty(data.message)){
                $.ligerDialog.success("删除成功!");
                standard.list.getTypeList();

+ 0 - 2
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/dataset/updateDatasetJs.jsp

@ -30,7 +30,6 @@
              data: {datasetId: id,stdVersion:version},
              success: function (data) {
                if(data!=null){
                  data = $.parseJSON(data);
                  if(type=="modify" ){
                    u.$type_form.attrScan();
                    u.$type_form.Fields.fillValues({
@ -90,7 +89,6 @@
            dataType: "json",
            data:{dataset: JSON.stringify(dataJson[0]),stdVersion:$("#std_version").val(),standardId:$("#standard_id").val()},
            success: function (data) {
              data = $.parseJSON(data);
              if(Util.isStrEmpty(data.message)){
                $.ligerDialog.alert("保存成功", "提示", "success", function () {
                  parent.master.reloadGrid();

+ 0 - 3
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/dataset/updateMetadataJs.jsp

@ -44,8 +44,6 @@
                data: {datasetId: datasetId,stdVersion:version,metadataId:metadataId},
                success: function (data) {
                  if(data!=null){
                    data = $.parseJSON(data);
                    
                    if(type=="modify"){//修改数据元信息
                      u.$type_form.attrScan();
                      u.$type_form.Fields.fillValues({
@ -142,7 +140,6 @@
              dataType: "json",
              data:{metadata: JSON.stringify(dataJson[0]),stdVersion:$("#std_version").val()},
              success: function (data) {
                data = $.parseJSON(data);
                if(Util.isStrEmpty(data.message)){
                  $.ligerDialog.alert("保存成功", "提示", "success", function () {
                    parent.entryMaster.reloadGrid();

+ 0 - 2
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/dict/updateDictEntryJs.jsp

@ -38,7 +38,6 @@
            data: {dictId: dictId,stdVersion:version,dictEntryId:dictEntryId},
            success: function (data) {
              if(data!=null){
                data = $.parseJSON(data);
                if(type=="modify"){
                  u.$type_form.attrScan();
                  u.$type_form.Fields.fillValues({
@ -93,7 +92,6 @@
          dataType: "json",
          data:{dictEntry: JSON.stringify(dataJson[0]),stdVersion:$("#std_version").val()},
          success: function (data) {
            data = $.parseJSON(data);
            debugger
            if(Util.isStrEmpty(data.message)){
              $.ligerDialog.alert("保存成功", "提示", "success", function () {

+ 0 - 2
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/dict/updateDictJs.jsp

@ -34,7 +34,6 @@
            success: function (data) {
              debugger
              if(data!=null){
                data = $.parseJSON(data);
                if(type=="modify" ){
                  u.$type_form.attrScan();
                  u.$type_form.Fields.fillValues({
@ -95,7 +94,6 @@
          dataType: "json",
          data:{dict: JSON.stringify(dataJson[0]),stdVersion:$("#std_version").val()},
          success: function (data) {
            data = $.parseJSON(data);
            if(Util.isStrEmpty(data.message)){
              $.ligerDialog.alert("保存成功", "提示", "success", function () {
                parent.master.reloadGrid();

+ 1 - 6
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/indexJs.jsp

@ -82,7 +82,7 @@
        data:{condition: JSON.stringify({"type":type,"name":name})},
        success: function (data) {
          var resultArr = [];
          var array = $.parseJSON(data);
          var array = data;
          for(var i=0;i<array.length;i++){
            if(array[i]!=null && array[i].type!=0){
              resultArr.push(array[i]);
@ -205,7 +205,6 @@
            dataType: "json",
            data: {versionId: versionId,publisher:""},
            success: function (data) {
              data = $.parseJSON(data);
              if(Util.isStrEmpty(data.message)){
                $.ligerDialog.success("发布成功!");
                standard.list.getTypeList();
@ -256,7 +255,6 @@
              dataType: "json",
              data: {standardId: standardId},
              success: function (data) {
                data = $.parseJSON(data);
                if(Util.isStrEmpty(data.message)){
                  $.ligerDialog.success("删除成功!");
                  standard.list.getTypeList();
@ -282,9 +280,6 @@
            dataType: "json",
            data: {versionId: versionId,version:version},
            success: function (data) {
              if(!Util.isStrEmpty(data)){
                data = $.parseJSON(data);
              }
              if(Util.isStrEmpty(data.message)){
                $.ligerDialog.success("删除成功!");
                standard.list.getTypeList();

+ 0 - 3
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/publisherJs.jsp

@ -32,7 +32,6 @@
                  data: {publisherId: publisherId},
                  success: function (data) {
                    if(data!=null){
                        data = $.parseJSON(data);
                      u.$form.attrScan();
                      u.$form.Fields.fillValues({
                        code: data.code,
@ -77,8 +76,6 @@
              dataType: "json",
              data:{publisher: JSON.stringify(dataJson[0])},
              success: function (data) {
                  debugger
                  data = $.parseJSON(data);
                  if(Util.isStrEmpty(data.message)){
                      $.ligerDialog.alert("保存成功", "提示", "success", function () {
                          parent.standard.list.getTypeList();//刷新数据

+ 0 - 3
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/standardDetailJs.jsp

@ -39,7 +39,6 @@
                  data: {standardId: standardId},
                  success: function (data) {
                    if(data!=null){
                        data = $.parseJSON(data);
                        $("#lbl_publisher").text(data.publisher);
                        $("#lbl_publisherOrgCode").text(data.publisherOrgCode);
                      u.$form.attrScan();
@ -79,7 +78,6 @@
                  dataType: "json",
                  success: function (data) {
                      if(data!=null){
                          data = $.parseJSON(data);
                          $("#lbl_publisher").text(data.name);
                          $("#lbl_publisherOrgCode").text(data.code);
                      }
@ -124,7 +122,6 @@
              dataType: "json",
              data:{standard: JSON.stringify(dataJson[0])},
              success: function (data) {
                  data = $.parseJSON(data);
                  if(Util.isStrEmpty(data.message)){
                      $.ligerDialog.alert("保存成功", "提示", "success", function () {
                          parent.standard.list.getTypeList();//刷新数据

+ 1 - 2
Hos-resource/src/main/webapp/WEB-INF/ehr/jsp/standard/integration/versionDetailJs.jsp

@ -68,7 +68,7 @@
                data: {versionId: versionId},
                success: function (data) {
                      if(data!=null){
                        u._getData =  $.parseJSON(data);
                        u._getData = data;
                          debugger
                          if(type == ""){//查看标准版本信息
                              $("#lbl_version").text(u._getData.version);
@ -156,7 +156,6 @@
                dataType: "json",
                data:{version:  JSON.stringify(resultData)},
                success: function (data) {
                    data = $.parseJSON(data);
                    if(Util.isStrEmpty(data.message)){
                        $.ligerDialog.alert("保存成功", "提示", "success", function () {
                            parent.standard.list.getTypeList();//刷新数据