فهرست منبع

Merge branch 'master' of http://192.168.1.220:10080/esb/esb

zhenglingfeng 8 سال پیش
والد
کامیت
a78620ba24
100فایلهای تغییر یافته به همراه550 افزوده شده و 3512 حذف شده
  1. 2 2
      esb.iml
  2. 3 3
      hos-arbiter/pom.xml
  3. 0 52
      hos-arbiter/src/main/java/com/yihu/hos/arbiter/configuration/MongoConfiguration.java
  4. 18 0
      hos-arbiter/src/main/java/com/yihu/hos/arbiter/models/BrokerServer.java
  5. 1 0
      hos-arbiter/src/main/java/com/yihu/hos/arbiter/services/BrokerServerService.java
  6. 3 3
      hos-arbiter/src/main/resources/application.yml
  7. 3 3
      hos-broker/pom.xml
  8. 1 3
      hos-broker/src/main/java/com/yihu/hos/broker/HosBrokerApplication.java
  9. 2 4
      hos-broker/src/main/java/com/yihu/hos/broker/common/constants/MonitorConstant.java
  10. 2 2
      hos-broker/src/main/java/com/yihu/hos/broker/common/scheduler/MonitorScheduler.java
  11. 1 1
      hos-broker/src/main/java/com/yihu/hos/broker/models/BusinessLog.java
  12. 5 0
      hos-broker/src/main/java/com/yihu/hos/broker/services/BrokerServerService.java
  13. 30 81
      hos-broker/src/main/java/com/yihu/hos/broker/services/ServiceMonitorService.java
  14. 12 11
      hos-broker/src/main/java/com/yihu/hos/broker/services/camel/ESBCamelService.java
  15. 0 75
      hos-broker/src/main/java/com/yihu/hos/broker/util/MongodbUtil.java
  16. 7 0
      hos-broker/src/main/resources/application.yml
  17. 7 7
      hos-camel/pom.xml
  18. 1 1
      hos-core/pom.xml
  19. 5 2
      hos-rest/hos-rest.iml
  20. 110 95
      hos-rest/pom.xml
  21. 2 2
      hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/CollectHelper.java
  22. 1 1
      hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/CrawlerService.java
  23. 1 1
      hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/DatacollectService.java
  24. 0 24
      hos-saas/.gitignore
  25. BIN
      hos-saas/.mvn/wrapper/maven-wrapper.jar
  26. 0 1
      hos-saas/.mvn/wrapper/maven-wrapper.properties
  27. 0 233
      hos-saas/mvnw
  28. 0 145
      hos-saas/mvnw.cmd
  29. 0 95
      hos-saas/pom.xml
  30. 0 19
      hos-saas/src/main/java/com/yihu/hos/saas/HosSaasApplication.java
  31. 0 31
      hos-saas/src/main/java/com/yihu/hos/saas/configurations/HibernateConfiguration.java
  32. 0 33
      hos-saas/src/main/java/com/yihu/hos/saas/configurations/ServiceConfiguration.java
  33. 0 27
      hos-saas/src/main/java/com/yihu/hos/saas/configurations/WebMvcConfiguration.java
  34. 0 8
      hos-saas/src/main/java/com/yihu/hos/saas/constants/ContextAttributes.java
  35. 0 32
      hos-saas/src/main/java/com/yihu/hos/saas/controllers/AuthenticateController.java
  36. 0 23
      hos-saas/src/main/java/com/yihu/hos/saas/controllers/HelloController.java
  37. 0 20
      hos-saas/src/main/java/com/yihu/hos/saas/daos/TenantDao.java
  38. 0 10
      hos-saas/src/main/java/com/yihu/hos/saas/daos/TestDao.java
  39. 0 20
      hos-saas/src/main/java/com/yihu/hos/saas/daos/UserDao.java
  40. 0 16
      hos-saas/src/main/java/com/yihu/hos/saas/daos/UserTenantDao.java
  41. 0 23
      hos-saas/src/main/java/com/yihu/hos/saas/interceptors/AuthenticateInterceptor.java
  42. 0 34
      hos-saas/src/main/java/com/yihu/hos/saas/interceptors/ChangeSchemaInterceptor.java
  43. 0 107
      hos-saas/src/main/java/com/yihu/hos/saas/models/TenantModel.java
  44. 0 44
      hos-saas/src/main/java/com/yihu/hos/saas/models/TestModel.java
  45. 0 77
      hos-saas/src/main/java/com/yihu/hos/saas/models/UserModel.java
  46. 0 57
      hos-saas/src/main/java/com/yihu/hos/saas/models/UserTenantModel.java
  47. 0 45
      hos-saas/src/main/java/com/yihu/hos/saas/models/bo/UserSession.java
  48. 0 17
      hos-saas/src/main/java/com/yihu/hos/saas/services/AuthenticateService.java
  49. 0 11
      hos-saas/src/main/java/com/yihu/hos/saas/services/HelloService.java
  50. 0 62
      hos-saas/src/main/java/com/yihu/hos/saas/services/impl/AuthenticateServiceImpl.java
  51. 0 13
      hos-saas/src/main/java/com/yihu/hos/saas/services/impl/HelloServiceImpl.java
  52. 0 31
      hos-saas/src/main/java/com/yihu/hos/saas/services/mockimpl/AuthenticateServiceMockImpl.java
  53. 0 19
      hos-saas/src/main/java/com/yihu/hos/saas/services/mockimpl/HelloServiceMockImpl.java
  54. 0 60
      hos-saas/src/main/java/com/yihu/hos/saas/utils/LocalContext.java
  55. 0 14
      hos-saas/src/main/resources/META-INF/additional-spring-configuration-metadata.json
  56. 0 9
      hos-saas/src/main/resources/application.yml
  57. 0 16
      hos-saas/src/test/java/com/yihu/hos/HosSaasApplicationTests.java
  58. 8 2
      hos-web-camel-dependencies/pom.xml
  59. 4 19
      hos-web-framework-dependencies/pom.xml
  60. 2 2
      hos-web-framework/pom.xml
  61. 119 350
      hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/GridFSUtil.java
  62. 14 6
      pom.xml
  63. 2 2
      src/main/java/com/yihu/hos/common/CollectHelper.java
  64. 3 4
      src/main/java/com/yihu/hos/config/MongoConfig.java
  65. 0 198
      src/main/java/com/yihu/hos/crawler/model/config/SysConfig.java
  66. 0 389
      src/main/java/com/yihu/hos/crawler/service/EsbHttp.java
  67. 8 35
      src/main/java/com/yihu/hos/datacollect/controller/DataCollectController.java
  68. 0 41
      src/main/java/com/yihu/hos/datacollect/controller/DataPushController.java
  69. 12 12
      src/main/java/com/yihu/hos/datacollect/dao/DatacollectDao.java
  70. 4 6
      src/main/java/com/yihu/hos/datacollect/dao/DatacollectLogDao.java
  71. 0 92
      src/main/java/com/yihu/hos/datacollect/dao/intf/IDatacollectDao.java
  72. 0 29
      src/main/java/com/yihu/hos/datacollect/dao/intf/IDatacollectLogDao.java
  73. 27 25
      src/main/java/com/yihu/hos/datacollect/service/DatacollectManager.java
  74. 14 16
      src/main/java/com/yihu/hos/datacollect/service/DatacollectService.java
  75. 0 171
      src/main/java/com/yihu/hos/datacollect/service/DatapushService.java
  76. 0 96
      src/main/java/com/yihu/hos/datacollect/service/intf/IDatacollectManager.java
  77. 0 20
      src/main/java/com/yihu/hos/datacollect/service/intf/IDatacollectService.java
  78. 0 15
      src/main/java/com/yihu/hos/datacollect/service/intf/IDatapushService.java
  79. 63 0
      src/main/java/com/yihu/hos/monitor/controller/ServiceMonitorController.java
  80. 5 0
      src/main/java/com/yihu/hos/monitor/dao/ServiceMonitorDao.java
  81. 17 3
      src/main/java/com/yihu/hos/monitor/service/ServiceMonitorService.java
  82. 4 4
      src/main/java/com/yihu/hos/resource/controller/RsCategoryController.java
  83. 3 3
      src/main/java/com/yihu/hos/resource/controller/RsDimensionController.java
  84. 6 6
      src/main/java/com/yihu/hos/resource/controller/RsResourceController.java
  85. 5 5
      src/main/java/com/yihu/hos/resource/controller/RsResourceRestController.java
  86. 3 4
      src/main/java/com/yihu/hos/resource/controller/StdController.java
  87. 0 21
      src/main/java/com/yihu/hos/resource/dao/IRsAppResourceDao.java
  88. 0 17
      src/main/java/com/yihu/hos/resource/dao/IRsAppResourceDetailDao.java
  89. 0 27
      src/main/java/com/yihu/hos/resource/dao/IRsCategoryDao.java
  90. 0 17
      src/main/java/com/yihu/hos/resource/dao/IRsDemensionCategoryDao.java
  91. 0 9
      src/main/java/com/yihu/hos/resource/dao/IRsDimensionDao.java
  92. 0 13
      src/main/java/com/yihu/hos/resource/dao/IRsResourceCategoryDao.java
  93. 0 28
      src/main/java/com/yihu/hos/resource/dao/IRsResourceDao.java
  94. 0 13
      src/main/java/com/yihu/hos/resource/dao/IRsResourceDatasetDao.java
  95. 0 17
      src/main/java/com/yihu/hos/resource/dao/IRsResourceDimensionDao.java
  96. 0 28
      src/main/java/com/yihu/hos/resource/dao/IRsResourceMetadataDao.java
  97. 0 13
      src/main/java/com/yihu/hos/resource/dao/IRsResourceRestDao.java
  98. 0 20
      src/main/java/com/yihu/hos/resource/dao/IRsResourceRestDetailDao.java
  99. 10 9
      src/main/java/com/yihu/hos/resource/dao/impl/RsAppResourceDaoImpl.java
  100. 0 0
      src/main/java/com/yihu/hos/resource/dao/impl/RsAppResourceDetailDaoImpl.java

+ 2 - 2
esb.iml

@ -96,8 +96,6 @@
    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: javax.transaction:javax.transaction-api:1.2" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:ehr-dbhelper:1.1.9" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:html2image:0.9" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-orm:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.apache.tiles:tiles-extras:3.0.5" level="project" />
@ -181,6 +179,8 @@
    <orderEntry type="library" name="Maven: org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec:1.0.1" level="project" />
    <orderEntry type="library" name="Maven: org.jasypt:jasypt:1.9.0" level="project" />
    <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.9" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:ehr-dbhelper:1.1.9" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:html2image:0.9" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-starter-test:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test:1.4.1.RELEASE" level="project" />
    <orderEntry type="library" scope="TEST" name="Maven: org.springframework.boot:spring-boot-test-autoconfigure:1.4.1.RELEASE" level="project" />

+ 3 - 3
hos-arbiter/pom.xml

@ -4,7 +4,7 @@
    <modelVersion>4.0.0</modelVersion>
    <artifactId>hos-arbiter</artifactId>
    <version>1.1.1-SNAPSHOT</version>
    <version>1.3.0</version>
    <packaging>jar</packaging>
    <name>hos-arbiter</name>
@ -13,7 +13,7 @@
    <parent>
        <groupId>com.yihu.hos</groupId>
        <artifactId>hos-web-camel-dependencies</artifactId>
        <version>1.1.1-SNAPSHOT</version>
        <version>1.3.0</version>
        <relativePath>../hos-web-camel-dependencies</relativePath><!-- lookup parent from repository -->
    </parent>
@ -38,7 +38,7 @@
        <dependency>
            <groupId>com.yihu.hos</groupId>
            <artifactId>hos-web-framework</artifactId>
            <version>1.1.1-SNAPSHOT</version>
            <version>1.3.0</version>
        </dependency>
    </dependencies>
    <build>

+ 0 - 52
hos-arbiter/src/main/java/com/yihu/hos/arbiter/configuration/MongoConfiguration.java

@ -1,52 +0,0 @@
package com.yihu.hos.arbiter.configuration;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.core.MongoTemplate;
import static java.util.Collections.singletonList;
/**
 * @created Airhead 2016/7/27.
 */
@Configuration
public class MongoConfiguration extends AbstractMongoConfiguration {
//    @Value("${spring.data.mongodb.uri}")
//    private String uri;
    @Value("${spring.data.mongodb.host}")
    private String host;
    @Value("${spring.data.mongodb.port}")
    private int port;
    @Value("${spring.data.mongodb.username}")
    private String username;
    @Value("${spring.data.mongodb.password}")
    private String password;
    @Value("${spring.data.mongodb.authenticationDatabase}")
    private String authenticationDatabase;
    @Value("${spring.data.mongodb.database}")
    private String database;
    @Override
    public String getDatabaseName() {
        return database;
    }
    @Override
    @Bean
    public Mongo mongo() throws Exception {
        return new MongoClient(singletonList(new ServerAddress(host, port)),
                singletonList(MongoCredential.createCredential(username, authenticationDatabase, password.toCharArray())));
    }
    public MongoTemplate mongoTemplate() throws Exception {
        return new MongoTemplate(mongo(), getDatabaseName());
    }
}

+ 18 - 0
hos-arbiter/src/main/java/com/yihu/hos/arbiter/models/BrokerServer.java

@ -14,6 +14,7 @@ import java.util.Date;
public class BrokerServer {
    @Id
    private String id;
    private String tenant;
    private String hostName;
    private String hostAddress;
    private int port;
@ -37,6 +38,14 @@ public class BrokerServer {
        return false;
    }
    public String getTenant() {
        return tenant;
    }
    public void setTenant(String tenant) {
        this.tenant = tenant;
    }
    public String getId() {
        return id;
    }
@ -119,6 +128,15 @@ public class BrokerServer {
        String routeCode;
        String type;
        Date updated;
        String tenant;
        public String getTenant() {
            return tenant;
        }
        public void setTenant(String tenant) {
            this.tenant = tenant;
        }
        public String getRouteCode() {
            return routeCode;

+ 1 - 0
hos-arbiter/src/main/java/com/yihu/hos/arbiter/services/BrokerServerService.java

@ -50,6 +50,7 @@ public class BrokerServerService {
        query.addCriteria(Criteria.where("port").is(brokerServer.getPort()));
        Update update = new Update();
        update.set("tenant", brokerServer.getTenant());
        update.set("hostName", brokerServer.getHostName());
        update.set("hostAddress", brokerServer.getHostAddress());
        update.set("port", brokerServer.getPort());

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

@ -16,7 +16,7 @@ spring:
      username: esb
      password: esb
      authenticationDatabase: admin
      database: configuration
      database: runtime
  activemq:
    broker-url: tcp://172.19.103.57:61616
    user: admin
@ -64,7 +64,7 @@ spring:
      username: esb
      password: esb
      authenticationDatabase: admin
      database: configuration
      database: runtime
  activemq:
    broker-url: tcp://172.19.103.86:61616
    user: admin
@ -84,7 +84,7 @@ spring:
      username: esb
      password: esb
      authenticationDatabase: admin
      database: configuration
      database: runtime
  activemq:
    broker-url: tcp://172.19.103.58:61616
    user: admin

+ 3 - 3
hos-broker/pom.xml

@ -4,7 +4,7 @@
    <modelVersion>4.0.0</modelVersion>
    <artifactId>hos-broker</artifactId>
    <version>1.1.1-SNAPSHOT</version>
    <version>1.3.0</version>
    <packaging>war</packaging>
    <name>hos-broker</name>
@ -13,7 +13,7 @@
    <parent>
        <groupId>com.yihu.hos</groupId>
        <artifactId>hos-web-camel-dependencies</artifactId>
        <version>1.1.1-SNAPSHOT</version>
        <version>1.3.0</version>
        <relativePath>../hos-web-camel-dependencies</relativePath><!-- lookup parent from repository -->
    </parent>
@ -53,7 +53,7 @@
        <dependency>
            <groupId>com.yihu.hos</groupId>
            <artifactId>hos-web-framework</artifactId>
            <version>1.1.1-SNAPSHOT</version>
            <version>1.3.0</version>
            <exclusions>
                <exclusion>
                        <groupId>org.springframework.boot</groupId>

+ 1 - 3
hos-broker/src/main/java/com/yihu/hos/broker/HosBrokerApplication.java

@ -4,13 +4,11 @@ import com.yihu.hos.broker.services.camel.CamelStartBoot;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
@SpringBootApplication
@EnableScheduling
public class HosBrokerApplication extends SpringBootServletInitializer implements CommandLineRunner {

+ 2 - 4
hos-broker/src/main/java/com/yihu/hos/broker/common/constants/MonitorConstant.java

@ -6,11 +6,9 @@ package com.yihu.hos.broker.common.constants;
 * Created at 2016/11/3.
 */
public class MonitorConstant {
    public static String MONITOR = "monitor";
    public static String MONITOR_DATABASE = "log";
    public static String SERVER = "server";
    public static String HOST = "host";
    public static String HOST = "host";     //这个是否需要,可以在runtime库中使用brokerServer?
    public static String CPU = "cpu";

+ 2 - 2
hos-broker/src/main/java/com/yihu/hos/broker/common/scheduler/MonitorScheduler.java

@ -68,7 +68,7 @@ public class MonitorScheduler {
     */
    public String collectEnvHealth() {
        try {
            mongoOperations = new MongoTemplate(mongo, MonitorConstant.MONITOR);
            mongoOperations = new MongoTemplate(mongo, MonitorConstant.MONITOR_DATABASE);
            Document result = null;
            result = new Document();
            result.put("tenant", tenant);
@ -137,7 +137,7 @@ public class MonitorScheduler {
//    @Scheduled(cron = "0 0 12 * * ?") //每天中午12点触发
    @Scheduled(fixedDelay = 3600 * 24 * 1000, initialDelay = 3000) //每天中午12点触发
    public void checkHost() {
        mongoOperations = new MongoTemplate(mongo, MonitorConstant.MONITOR);
        mongoOperations = new MongoTemplate(mongo, MonitorConstant.MONITOR_DATABASE);
        DBCollection envCollection = mongoOperations.getCollection(MonitorConstant.HOST);
        BasicDBObject queryObject = new BasicDBObject().append(QueryOperators.AND,
                new BasicDBObject[]{

+ 1 - 1
hos-broker/src/main/java/com/yihu/hos/broker/models/BusinessLog.java

@ -9,7 +9,7 @@ import java.util.Date;
/**
 * @created Airhead 2016/8/8.
 */
@Document(collection = "businessLog")
@Document(collection = "business")
public class BusinessLog {
    @Id
    private String id;

+ 5 - 0
hos-broker/src/main/java/com/yihu/hos/broker/services/BrokerServerService.java

@ -15,6 +15,7 @@ import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.IOException;
@ -33,6 +34,9 @@ public class BrokerServerService implements DisposableBean {
    private ApplicationConfiguration applicationConfiguration;
    @Autowired
    private ArbiterConfiguration arbiterConfiguration;
    @Value("${hos.tenant.name}")
    private String tenant;
    private String hostName;
    private String hostAddress;
    private int port;
@ -44,6 +48,7 @@ public class BrokerServerService implements DisposableBean {
            port = applicationConfiguration.getPort();
            ObjectMapper objectMapper = new ObjectMapper();
            ObjectNode objectNode = objectMapper.createObjectNode();
            objectNode.put("tenant", tenant);
            objectNode.put("hostName", hostName);
            objectNode.put("hostAddress", hostAddress);
            objectNode.put("port", port);

+ 30 - 81
hos-broker/src/main/java/com/yihu/hos/broker/services/ServiceMonitorService.java

@ -3,11 +3,11 @@ package com.yihu.hos.broker.services;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.*;
import com.yihu.hos.broker.models.BusinessLog;
import com.yihu.hos.broker.models.ServiceMetrics;
import com.yihu.hos.core.datatype.DateUtil;
import com.yihu.hos.core.datatype.NumberUtil;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.broker.models.BusinessLog;
import com.yihu.hos.broker.models.ServiceMetrics;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@ -15,7 +15,10 @@ import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.*;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2016/1/27.
@ -31,61 +34,6 @@ public class ServiceMonitorService {
    private MongoOperations mongoOperations;
    private DBCollection businessLog;
//    public Result mapReduce(String beginTime, String endTime) {
//        DBCollection businessLogDB = mongoOperations.getCollection(mongoOperations
//                .getCollectionName(BusinessLog.class));
//
//        String map = "function(){emit(this.breadcrumbId, this.fireTime);}";
//        String reduce = "function(key, values){ return values[0];}";
//        String out = reduceTableName;
//        BasicDBObject queryObject = new BasicDBObject().append(QueryOperators.AND,
//                new BasicDBObject[]{
//                        new BasicDBObject().append("fireTime",
//                            new BasicDBObject().append(QueryOperators.GTE, DateUtil.toTimestamp(beginTime))),
//                        new BasicDBObject().append("fireTime",
//                                new BasicDBObject().append(QueryOperators.LT, DateUtil.toTimestamp(endTime)))});
//
//        MapReduceOutput mapReduceOutput = businessLogDB.mapReduce(map,
//                reduce.toString(), out, queryObject);
//        DBCollection resultColl = mapReduceOutput.getOutputCollection();
//        DBCursor cursor = resultColl.find();
//        String result = "";
//
//        while (cursor.hasNext()) {
//            result += cursor.next();
//        }
//        return Result.success(result);
//    }
//
//    public JSONObject aggregate(String beginTime, String endTime) {
//        DBCollection reduceDB = mongoOperations.getCollection(mongoOperations
//                .getCollectionName(ReduceResult.class));
//        BasicDBObject queryObject = new BasicDBObject().append(QueryOperators.AND,
//                new BasicDBObject[]{
//                        new BasicDBObject().append("value",
//                                new BasicDBObject().append(QueryOperators.GTE, DateUtil.toTimestamp(beginTime))),
//                        new BasicDBObject().append("value",
//                                new BasicDBObject().append(QueryOperators.LT, DateUtil.toTimestamp(endTime)))});
//
//        DBObject match = new BasicDBObject("$match", queryObject);
//
//        // Now the $group operation
//        DBObject groupFields = new BasicDBObject( "_id", new BasicDBObject("$minute", "$value"));
//        groupFields.put("pv", new BasicDBObject( "$sum", 1));
//        DBObject group = new BasicDBObject("$group", groupFields);
//
//        // build the $sort operation
//        DBObject sortFields =  new BasicDBObject( "_id", 1);
//        DBObject sort = new BasicDBObject("$sort", sortFields );
//        // run aggregation
//        AggregationOutput output = reduceDB.aggregate(match, group, sort);
//        String result = "";
//        for (DBObject dbObject : output.results()) {
//            result += dbObject.toString();
//        }
//        JSONObject jsonObject = new JSONObject(result);
//        return jsonObject;
//    }
    public DBCollection getBusinessLog() {
        if (businessLog == null) {
@ -95,6 +43,7 @@ public class ServiceMonitorService {
        return businessLog;
    }
    public void bandwidth(String beginTime, String endTime, List<String> codeList) {
        DBObject match = getMatchFields(beginTime, endTime);
@ -103,7 +52,7 @@ public class ServiceMonitorService {
        DBObject serviceGroup = getServiceGroupFields();
        // run aggregation
        AggregationOutput flowOutput = getBusinessLog().aggregate(match, flowGroup, sort);
       //流程带宽
        //流程带宽
        Map<String, Integer> bandwidthMapF = new HashMap<>();
        for (DBObject dbObject : flowOutput.results()) {
            Integer count = Integer.parseInt(StringUtil.toString(dbObject.get("count")));
@ -117,7 +66,7 @@ public class ServiceMonitorService {
                bandwidthMapF.put(code, bodyLength);
            }
        }
       //服务带宽
        //服务带宽
        // run aggregation
        AggregationOutput serviceOutput = getBusinessLog().aggregate(match, serviceGroup, sort);
        Map<String, Integer> bandwidthMapS = new HashMap<>();
@ -140,7 +89,7 @@ public class ServiceMonitorService {
                Integer flowCalls = bandwidthMapF.get(code);
                bandwidth = NumberUtil.divideBigDecimal(BigDecimal.valueOf(flowCalls), BigDecimal.valueOf(interval));
            } else if (!StringUtil.isEmpty(bandwidthMapS.get(code))) {
                Integer serviceCalls = bandwidthMapS.get(code)/2;
                Integer serviceCalls = bandwidthMapS.get(code) / 2;
                bandwidth = NumberUtil.divideBigDecimal(BigDecimal.valueOf(serviceCalls), BigDecimal.valueOf(interval));
            }
            saveServiceMetrics(code, "bandwidth", bandwidth.toString(), endTime);
@ -162,7 +111,7 @@ public class ServiceMonitorService {
            BasicDBObject id = (BasicDBObject) dbObject.get("_id");
            String code = StringUtil.toString(id.get("routeId"));
            Integer total = Integer.parseInt(StringUtil.toString(dbObject.get("total")));
            if (total == count/2) {
            if (total == count / 2) {
                if (qpsMapF.containsKey(code)) {
                    Integer flowCalls = qpsMapF.get(code);
                    qpsMapF.put(code, ++flowCalls);
@ -195,7 +144,7 @@ public class ServiceMonitorService {
                Integer flowCalls = qpsMapF.get(code);
                qps = NumberUtil.divideBigDecimal(BigDecimal.valueOf(flowCalls), BigDecimal.valueOf(interval));
            } else if (!StringUtil.isEmpty(qpsMapS.get(code))) {
                Integer serviceCalls = qpsMapS.get(code)/2;
                Integer serviceCalls = qpsMapS.get(code) / 2;
                qps = NumberUtil.divideBigDecimal(BigDecimal.valueOf(serviceCalls), BigDecimal.valueOf(interval));
            }
            saveServiceMetrics(code, "qps", qps.toString(), endTime);
@ -215,7 +164,7 @@ public class ServiceMonitorService {
            Integer count = Integer.parseInt(StringUtil.toString(dbObject.get("count")));
            BasicDBObject id = (BasicDBObject) dbObject.get("_id");
            String code = StringUtil.toString(id.get("routeId"));
            if (total == count/2) {
            if (total == count / 2) {
                if (usageMapSuccessF.containsKey(code)) {
                    Integer countTemp = usageMapSuccessF.get(code);
                    usageMapSuccessF.put(code, ++countTemp);
@ -268,21 +217,21 @@ public class ServiceMonitorService {
            JSONObject result = new JSONObject();
            Integer successCountF = isNull(usageMapSuccessF.get(code));
            Integer failureCountF = isNull(usageMapFailF.get(code));
            Integer successCountS= isNull(usageMapSuccessS.get(code));
            Integer successCountS = isNull(usageMapSuccessS.get(code));
            Integer failureCountS = isNull(usageMapFailS.get(code));
            if (successCountF > 0 || failureCountF > 0) {
                result.put("totalCount", successCountF + failureCountF);
                result.put("successCount", successCountF);
                result.put("failureCount",failureCountF);
                result.put("failureCount", failureCountF);
            } else if (successCountS > 0 || failureCountS > 0) {
                result.put("totalCount", successCountS + failureCountS);
                result.put("successCount", successCountS);
                result.put("failureCount",failureCountS);
                result.put("failureCount", failureCountS);
            } else {
                result.put("totalCount", 0);
                result.put("successCount", 0);
                result.put("failureCount",0);
                result.put("failureCount", 0);
            }
            ObjectMapper objectMapper = new ObjectMapper();
            saveServiceMetrics(code, "usage", objectMapper.writeValueAsString(result.toString()), endTime);
@ -363,46 +312,46 @@ public class ServiceMonitorService {
    public DBObject getServiceGroupFields() {
        // Now the $group operation
        DBObject groupFields = new BasicDBObject( "_id",
        DBObject groupFields = new BasicDBObject("_id",
                new BasicDBObject("id", "$_id")
                        .append("code", "$code"));
        groupFields.put("count", new BasicDBObject( "$sum", 1));
        groupFields.put("bodyLength", new BasicDBObject( "$sum", "$bodyLength"));
        groupFields.put("total", new BasicDBObject( "$first", "$totalServers"));
        groupFields.put("count", new BasicDBObject("$sum", 1));
        groupFields.put("bodyLength", new BasicDBObject("$sum", "$bodyLength"));
        groupFields.put("total", new BasicDBObject("$first", "$totalServers"));
        return new BasicDBObject("$group", groupFields);
    }
    public DBObject getFlowGroupFields() {
        // Now the $group operation
        DBObject groupFields = new BasicDBObject( "_id",
        DBObject groupFields = new BasicDBObject("_id",
                new BasicDBObject("breadcrumbId", "$breadcrumbId")
                        .append("routeId", "$routeId"));
        groupFields.put("count", new BasicDBObject( "$sum", 1));
        groupFields.put("bodyLength", new BasicDBObject( "$sum", "$bodyLength"));
        groupFields.put("total", new BasicDBObject( "$first", "$totalServers"));
        groupFields.put("beginTime", new BasicDBObject( "$first", "$fireTimeSource"));
        groupFields.put("count", new BasicDBObject("$sum", 1));
        groupFields.put("bodyLength", new BasicDBObject("$sum", "$bodyLength"));
        groupFields.put("total", new BasicDBObject("$first", "$totalServers"));
        groupFields.put("beginTime", new BasicDBObject("$first", "$fireTimeSource"));
        groupFields.put("endTime", new BasicDBObject("$last", "$fireTimeSource"));
        return new BasicDBObject("$group", groupFields);
    }
    public DBObject getSortFields() {
        DBObject sortFields =  new BasicDBObject( "_id", 1);
        return new BasicDBObject("$sort", sortFields );
        DBObject sortFields = new BasicDBObject("_id", 1);
        return new BasicDBObject("$sort", sortFields);
    }
    public long getInterval(String beginTime, String endTime) {
        Date from = DateUtil.toTimestamp(beginTime, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
        Date to = DateUtil.toTimestamp(endTime, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
        long interval = (to.getTime() - from.getTime())/1000;
        long interval = (to.getTime() - from.getTime()) / 1000;
        return interval;
    }
    public long getIntervalExact(String beginTime, String endTime) {
        Date from = DateUtil.toTimestamp(beginTime, DateUtil.DEFAULT_TIMESTAMP_FORMAT);
        Date to = DateUtil.toTimestamp(endTime, DateUtil.DEFAULT_TIMESTAMP_FORMAT);
        long interval = (to.getTime() - from.getTime())/1000;
        long interval = (to.getTime() - from.getTime()) / 1000;
        return interval;
    }

+ 12 - 11
hos-broker/src/main/java/com/yihu/hos/broker/services/camel/ESBCamelService.java

@ -157,8 +157,8 @@ public class ESBCamelService {
            if (serviceFlowValid.is()) return Result.error("必要的入参数据不正确,请检查!");
            ServiceFlow serviceFlow = serviceFlowValid.getServiceFlow();
            ArrayList<ServiceFlow.HandleFile> handleFiles =  serviceFlowValid.getHandleFiles();
            if (handleFiles!=null) {
            ArrayList<ServiceFlow.HandleFile> handleFiles = serviceFlowValid.getHandleFiles();
            if (handleFiles != null) {
                for (ServiceFlow.HandleFile handleFile : handleFiles) {
                    String routeCode = serviceFlow.getRouteCode();
                    SystemCamelContext.getContext().stopRoute(routeCode);
@ -254,27 +254,27 @@ public class ESBCamelService {
//        String fileName = DES.decrypt(handleFile.getFilePath(), DES.COMMON_PASSWORD);
//        MongoDatabase db = mongoConfig.mongoClient().getDatabase(dbName);
//
//        boolean read = GridFSUtil.readFile(db, outputStream, fileName);
//        boolean read = GridFSUtil.readFileContent(db, outputStream, fileName);
//        if (!read) {
//            logger.error("not mongo file, fileName:" + fileName);
//            return false;
//        }
        //从中心下载java文件
        String downUrl = centerUrl+"/tenant/down/"+handleFile.getFilePath();
        String sourcePath = ClassFileUtil.downFile(downUrl, resource, handleFile.getPackageName(), handleFile.getClassName(), ClassFileUtil.JAVA_FILE);
        String downUrl = centerUrl + "/tenant/down/" + handleFile.getFilePath();
        String sourcePath =  ClassFileUtil.downFile(downUrl, resource, handleFile.getPackageName(), handleFile.getClassName(), ClassFileUtil.JAVA_FILE);
        if (sourcePath==null){
        if (sourcePath == null) {
            return false;
        }
        logger.info(sourcePath);
        boolean succ = CamelCompiler.compile(sourcePath, resource.getPath());
        if (succ){
        if (succ) {
            //编译成功后将class文件上传至mongodb;文件名为类名+ routeCode
            String packagePath = StringUtil.replaceStrAll(handleFile.getPackageName(), ".", "/");
            String classPath =  resource.getPath()+ packagePath + "/" + handleFile.getClassName() + ClassFileUtil.CLASS_FILE;
            GridFSUtil.uploadFile(dbName, classPath, handleFile.getClassName()+handleFile.getRouteCode() + ClassFileUtil.CLASS_FILE);
            GridFSUtil.uploadFile(classPath, handleFile.getClassName()+handleFile.getRouteCode() + ClassFileUtil.CLASS_FILE,null);
        }
        return succ;
    }
@ -296,14 +296,15 @@ public class ESBCamelService {
    }
    /**
     *  删除 serviceFlow记录
     * 删除 serviceFlow记录
     *
     * @param routeCode
     */
    private void deleteServiceFlow(String routeCode){
    private void deleteServiceFlow(String routeCode) {
        try {
            MongoDatabase db = mongoConfig.mongoClient().getDatabase(configuration);
            MongoCollection<Document> collection = db.getCollection(serviceFlow);
            DeleteResult result = collection.deleteMany(Filters.eq("routeCode",routeCode));
            DeleteResult result = collection.deleteMany(Filters.eq("routeCode", routeCode));
        } catch (Exception e) {
            e.printStackTrace();
        }

+ 0 - 75
hos-broker/src/main/java/com/yihu/hos/broker/util/MongodbUtil.java

@ -1,75 +0,0 @@
package com.yihu.hos.broker.util;
import com.mongodb.client.MongoDatabase;
import com.yihu.ehr.dbhelper.mongodb.MongodbFactory;
import com.yihu.ehr.dbhelper.mongodb.MongodbHelper;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.bson.Document;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/10/13.
 */
public class MongodbUtil extends MongodbHelper {
    private MongoDatabase db;
    public String errorMessage;
    public MongodbUtil() {
        this.db = MongodbFactory.getDB();
    }
    public MongodbUtil(String dbName) {
        this.db = MongodbFactory.getDB(dbName);
    }
    public synchronized boolean insert(String name, Document data) {
        try {
            this.db.getCollection(name).insertOne(data);
            return true;
        } catch (Exception var4) {
            var4.printStackTrace();
            this.errorMessage = var4.getMessage();
            return false;
        }
    }
    public synchronized boolean insertArray(String name, List<JSONObject> data) {
        try {
            this.db.getCollection(name).insertOne(Document.parse(data.toString()));
            return true;
        } catch (Exception var4) {
            var4.printStackTrace();
            this.errorMessage = var4.getMessage();
            return false;
        }
    }
    public synchronized boolean insertList(String name,JSONArray dataList) {
        try {
            ArrayList e = new ArrayList();
            Iterator var4 = dataList.iterator();
            while(var4.hasNext()) {
                JSONObject json = (JSONObject)var4.next();
                Document doc = Document.parse(json.toString());
                e.add(doc);
            }
            this.db.getCollection(name).insertMany(e);
            return true;
        } catch (Exception var7) {
            var7.printStackTrace();
            this.errorMessage = var7.getMessage();
            return false;
        }
    }
}

+ 7 - 0
hos-broker/src/main/resources/application.yml

@ -42,6 +42,7 @@ spring:
      password: esb
      authenticationDatabase: admin
      database: log
      gridFsDatabase: dfs
  gateway:
    ip: localhost
    port: 8066
@ -84,6 +85,7 @@ spring:
      password: esb
      authenticationDatabase: admin
      database: log
      gridFsDatabase: dfs
  gateway:
    ip: localhost
    port: 8066
@ -124,14 +126,19 @@ spring:
      password: esb
      authenticationDatabase: admin
      database: log
      gridFsDatabase: dfs
  gateway:
    ip: localhost
    port: 8066
server:
  port: 9999
hos:
  esb:
    rest-url: http://192.168.131.119:8080/esb
  arbiter:
    enable: true
    url: http://192.168.131.38:10135
  timer:
      period: 10000
  tenant:
    name: yichang

+ 7 - 7
hos-camel/pom.xml

@ -6,10 +6,16 @@
    <groupId>hos-camel</groupId>
    <artifactId>hos-camel</artifactId>
    <version>1.0-SNAPSHOT</version>
    <version>1.3.0</version>
    <name>hos-camel</name>
    <description>IEP内置业务流程编排模块,本部分内容的维护主要是为了保证代码的完整性。后期如果使用编排工具后,这部分内容是不需要的。</description>
    <parent>
        <groupId>com.yihu.hos</groupId>
        <artifactId>hos-web-camel-dependencies</artifactId>
        <version>1.3.0</version>
        <relativePath>../hos-web-camel-dependencies</relativePath> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <dependency>
@ -24,10 +30,4 @@
        </dependency>
    </dependencies>
    <parent>
        <groupId>com.yihu.hos</groupId>
        <artifactId>hos-web-camel-dependencies</artifactId>
        <version>1.1.1-SNAPSHOT</version>
        <relativePath>../hos-web-camel-dependencies</relativePath> <!-- lookup parent from repository -->
    </parent>
</project>

+ 1 - 1
hos-core/pom.xml

@ -6,7 +6,7 @@
    <groupId>com.yihu.hos</groupId>
    <artifactId>hos-core</artifactId>
    <version>1.1.1-SNAPSHOT</version>
    <version>1.3.0</version>
    <packaging>jar</packaging>
    <name>hos-core</name>

+ 5 - 2
hos-rest/hos-rest.iml

@ -178,8 +178,6 @@
    <orderEntry type="library" name="Maven: io.springfox:springfox-spring-web:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.4.0" level="project" />
    <orderEntry type="library" name="Maven: javax.transaction:javax.transaction-api:1.2" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:ehr-dbhelper:1.1.9" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:html2image:0.9" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-orm:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.3.3.RELEASE" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:api-dict:1.6.0" level="project" />
@ -196,6 +194,8 @@
    <orderEntry type="library" name="Maven: org.javassist:javassist:3.20.0-GA" level="project" />
    <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" />
    <orderEntry type="library" name="Maven: org.jboss:jandex:1.1.0.Final" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:ehr-dbhelper:1.1.9" level="project" />
    <orderEntry type="library" name="Maven: com.yihu.core:html2image:0.9" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-core:2.18.0" level="project" />
    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-core:2.2.11" level="project" />
    <orderEntry type="library" name="Maven: com.sun.xml.bind:jaxb-impl:2.2.11" level="project" />
@ -257,6 +257,9 @@
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-client:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-jmx:9.3.11.v20160721" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-jetty-common:2.18.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-mongodb:2.18.0" level="project" />
    <orderEntry type="library" name="Maven: org.apache.camel:camel-jackson:2.18.0" level="project" />
    <orderEntry type="library" name="Maven: com.fasterxml.jackson.module:jackson-module-jaxb-annotations:2.8.3" level="project" />
    <orderEntry type="library" name="Maven: xom:xom:1.2.5" level="project" />
    <orderEntry type="library" name="Maven: xerces:xercesImpl:2.8.0" level="project" />
    <orderEntry type="library" name="Maven: xalan:xalan:2.7.0" level="project" />

+ 110 - 95
hos-rest/pom.xml

@ -1,107 +1,122 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
	<groupId>com.yihu.hos</groupId>
	<artifactId>hos-rest</artifactId>
	<version>1.1.1-SNAPSHOT</version>
	<packaging>jar</packaging>
    <groupId>com.yihu.hos</groupId>
    <artifactId>hos-rest</artifactId>
    <version>1.3.0</version>
    <packaging>jar</packaging>
	<name>hos-rest</name>
	<description>ESB业务服务模块,实现ESB基础业务逻辑</description>
    <name>hos-rest</name>
    <description>ESB业务服务模块,实现ESB基础业务逻辑</description>
	<parent>
		<groupId>com.yihu.hos</groupId>
		<artifactId>hos-web-camel-dependencies</artifactId>
		<version>1.1.1-SNAPSHOT</version>
		<relativePath>../hos-web-camel-dependencies</relativePath><!-- lookup parent from repository -->
	</parent>
    <parent>
        <groupId>com.yihu.hos</groupId>
        <artifactId>hos-web-camel-dependencies</artifactId>
        <version>1.3.0</version>
        <relativePath>../hos-web-camel-dependencies</relativePath><!-- lookup parent from repository -->
    </parent>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
	<!--用于发布到服务器 对应setting的对应server表情里面的id -->
	<distributionManagement>
		<repository>
			<id>Releases</id>
			<name>Releases</name>
			<url>http://172.19.103.47:8081/nexus/content/repositories/releases/</url>
		</repository>
		<snapshotRepository>
			<id>snapshots</id>
			<name>Snapshots</name>
			<url>http://172.19.103.47:8081/nexus/content/repositories/snapshots/</url>
		</snapshotRepository>
	</distributionManagement>
	<repositories>
		<repository>
			<id>repositoryCentral</id>
			<name>repositoryCentral</name>
			<url>http://172.19.103.47:8081/nexus/content/repositories/central/</url>
		</repository>
		<repository>
			<id>repositoryReleases</id>
			<name>repositoryReleases</name>
			<url>http://172.19.103.47:8081/nexus/content/repositories/releases/</url>
		</repository>
	</repositories>
    <!--用于发布到服务器 对应setting的对应server表情里面的id -->
    <distributionManagement>
        <repository>
            <id>Releases</id>
            <name>Releases</name>
            <url>http://172.19.103.47:8081/nexus/content/repositories/releases/</url>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>Snapshots</name>
            <url>http://172.19.103.47:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
    <repositories>
        <repository>
            <id>repositoryCentral</id>
            <name>repositoryCentral</name>
            <url>http://172.19.103.47:8081/nexus/content/repositories/central/</url>
        </repository>
        <repository>
            <id>repositoryReleases</id>
            <name>repositoryReleases</name>
            <url>http://172.19.103.47:8081/nexus/content/repositories/releases/</url>
        </repository>
    </repositories>
	<dependencies>
		<dependency>
			<groupId>com.yihu.hos</groupId>
			<artifactId>hos-web-framework</artifactId>
			<version>1.1.1-SNAPSHOT</version>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-data-jpa</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>com.yihu.core</groupId>
			<artifactId>api-dict</artifactId>
			<version>1.6.0</version>
		</dependency>
		<dependency>
			<groupId>com.yihu.core</groupId>
			<artifactId>core-rpc</artifactId>
			<version>2.2.0</version>
		</dependency>
		<dependency>
			<groupId>com.yihu.core</groupId>
			<artifactId>api-config</artifactId>
			<version>2.2.0</version>
		</dependency>
		<dependency>
			<groupId>com.yihu.core</groupId>
			<artifactId>core-db</artifactId>
			<version>1.3.0</version>
		</dependency>
    <dependencies>
        <dependency>
            <groupId>com.yihu.hos</groupId>
            <artifactId>hos-web-framework</artifactId>
            <version>1.3.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-data-jpa</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.core</groupId>
            <artifactId>api-dict</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.core</groupId>
            <artifactId>core-rpc</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.core</groupId>
            <artifactId>api-config</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.core</groupId>
            <artifactId>core-db</artifactId>
            <version>1.3.0</version>
        </dependency>
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>4.3.11.Final</version>
		</dependency>
	</dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.11.Final</version>
        </dependency>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.core</groupId>
            <artifactId>ehr-dbhelper</artifactId>
            <version>1.1.9</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.core</groupId>
            <artifactId>html2image</artifactId>
            <version>0.9</version>
        </dependency>
    </dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

+ 2 - 2
hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/CollectHelper.java

@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.mongodb.BasicDBObject;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.gridfs.model.GridFSFile;
import com.mongodb.gridfs.GridFSDBFile;
import com.yihu.ehr.dbhelper.mongodb.MongodbHelper;
import com.yihu.hos.core.datatype.DateUtil;
import com.yihu.hos.core.file.FileUtil;
@ -116,7 +116,7 @@ public class CollectHelper {
                documentNode = objectMapper.createObjectNode();
                List files = (List) document.get("files_id");
                String cdaDocumentId = (String) document.get("cda_doc_id");
                List<GridFSFile> fs = GridFSUtil.findFsFiles(dbGridFS, files);
                List<GridFSDBFile> fs = GridFSUtil.findFsFiles(dbGridFS, files);
                String filePath = getDocumentDir(patient);
                Map<String, StringBuffer> map = GridFSUtil.downFileList("mydb", filePath, fs);//�����
                for (Map.Entry<String, StringBuffer> entry : map.entrySet()) {

+ 1 - 1
hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/CrawlerService.java

@ -599,7 +599,7 @@ public class CrawlerService {
                    Blob blob=(Blob)jsonObject.get("CONTENT");
                    String type= (String) jsonObject.get("REPORT_TYPE");
                    try {
                        ObjectId objectId= GridFSUtil.uploadFile("files", blob, type, null);
                        ObjectId objectId= GridFSUtil.uploadFile( blob, type, null);
                        jsonObject.put("CONTENT",objectId);
//                        InputStream in=blob.getBinaryStream();
//                        String path="e:/test/blob/"+UUID.randomUUID().toString()+"."+type;

+ 1 - 1
hos-rest/src/main/java/com/yihu/hos/rest/services/crawler/DatacollectService.java

@ -959,7 +959,7 @@ public class DatacollectService {
                        params.put("patient_id", patientId);
                        params.put("event_no", eventNo);
                        try {
                            ObjectId objectId = GridFSUtil.uploadFile("files", blob, type, params);
                            ObjectId objectId = GridFSUtil.uploadFile( blob, type, params);
                            jsonObject.put("CONTENT", objectId);
                        } catch (Exception e) {
                            e.printStackTrace();

+ 0 - 24
hos-saas/.gitignore

@ -1,24 +0,0 @@
target/
!.mvn/wrapper/maven-wrapper.jar
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
nbproject/private/
build/
nbbuild/
dist/
nbdist/
.nb-gradle/

BIN
hos-saas/.mvn/wrapper/maven-wrapper.jar


+ 0 - 1
hos-saas/.mvn/wrapper/maven-wrapper.properties

@ -1 +0,0 @@
distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip

+ 0 - 233
hos-saas/mvnw

@ -1,233 +0,0 @@
#!/bin/sh
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven2 Start Up Batch script
#
# Required ENV vars:
# ------------------
#   JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
#   M2_HOME - location of maven2's installed home dir
#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
#     e.g. to debug Maven itself, use
#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if [ -z "$MAVEN_SKIP_RC" ] ; then
  if [ -f /etc/mavenrc ] ; then
    . /etc/mavenrc
  fi
  if [ -f "$HOME/.mavenrc" ] ; then
    . "$HOME/.mavenrc"
  fi
fi
# OS specific support.  $var _must_ be set to either true or false.
cygwin=false;
darwin=false;
mingw=false
case "`uname`" in
  CYGWIN*) cygwin=true ;;
  MINGW*) mingw=true;;
  Darwin*) darwin=true
           #
           # Look for the Apple JDKs first to preserve the existing behaviour, and then look
           # for the new JDKs provided by Oracle.
           #
           if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then
             #
             # Apple JDKs
             #
             export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
           fi
           if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then
             #
             # Apple JDKs
             #
             export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
           fi
           if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then
             #
             # Oracle JDKs
             #
             export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
           fi
           if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then
             #
             # Apple JDKs
             #
             export JAVA_HOME=`/usr/libexec/java_home`
           fi
           ;;
esac
if [ -z "$JAVA_HOME" ] ; then
  if [ -r /etc/gentoo-release ] ; then
    JAVA_HOME=`java-config --jre-home`
  fi
fi
if [ -z "$M2_HOME" ] ; then
  ## resolve links - $0 may be a link to maven's home
  PRG="$0"
  # need this for relative symlinks
  while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
      PRG="$link"
    else
      PRG="`dirname "$PRG"`/$link"
    fi
  done
  saveddir=`pwd`
  M2_HOME=`dirname "$PRG"`/..
  # make it fully qualified
  M2_HOME=`cd "$M2_HOME" && pwd`
  cd "$saveddir"
  # echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --unix "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
# For Migwn, ensure paths are in UNIX format before anything is touched
if $mingw ; then
  [ -n "$M2_HOME" ] &&
    M2_HOME="`(cd "$M2_HOME"; pwd)`"
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
  # TODO classpath?
fi
if [ -z "$JAVA_HOME" ]; then
  javaExecutable="`which javac`"
  if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
    # readlink(1) is not available as standard on Solaris 10.
    readLink=`which readlink`
    if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
      if $darwin ; then
        javaHome="`dirname \"$javaExecutable\"`"
        javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
      else
        javaExecutable="`readlink -f \"$javaExecutable\"`"
      fi
      javaHome="`dirname \"$javaExecutable\"`"
      javaHome=`expr "$javaHome" : '\(.*\)/bin'`
      JAVA_HOME="$javaHome"
      export JAVA_HOME
    fi
  fi
fi
if [ -z "$JAVACMD" ] ; then
  if [ -n "$JAVA_HOME"  ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$JAVA_HOME/jre/sh/java"
    else
      JAVACMD="$JAVA_HOME/bin/java"
    fi
  else
    JAVACMD="`which java`"
  fi
fi
if [ ! -x "$JAVACMD" ] ; then
  echo "Error: JAVA_HOME is not defined correctly." >&2
  echo "  We cannot execute $JAVACMD" >&2
  exit 1
fi
if [ -z "$JAVA_HOME" ] ; then
  echo "Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
  [ -n "$M2_HOME" ] &&
    M2_HOME=`cygpath --path --windows "$M2_HOME"`
  [ -n "$JAVA_HOME" ] &&
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
  [ -n "$CLASSPATH" ] &&
    CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
fi
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
  local basedir=$(pwd)
  local wdir=$(pwd)
  while [ "$wdir" != '/' ] ; do
    if [ -d "$wdir"/.mvn ] ; then
      basedir=$wdir
      break
    fi
    wdir=$(cd "$wdir/.."; pwd)
  done
  echo "${basedir}"
}
# concatenates all lines of a file
concat_lines() {
  if [ -f "$1" ]; then
    echo "$(tr -s '\n' ' ' < "$1")"
  fi
}
export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)}
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
exec "$JAVACMD" \
  $MAVEN_OPTS \
  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
  "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
  ${WRAPPER_LAUNCHER} "$@"

+ 0 - 145
hos-saas/mvnw.cmd

@ -1,145 +0,0 @@
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements.  See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership.  The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License.  You may obtain a copy of the License at
@REM
@REM    http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied.  See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven2 Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM     e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat"
if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd"
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
set MAVEN_CMD_LINE_ARGS=%*
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar""
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat"
if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
exit /B %ERROR_CODE%

+ 0 - 95
hos-saas/pom.xml

@ -1,95 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.yihu.hos</groupId>
    <artifactId>hos-saas</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
    <name>hos-saas</name>
    <description>Demo project for Spring Boot</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>repo1.maven.org</id>
            <name>Maven Repository Repo1</name>
            <url>http://repo1.maven.org/maven2/</url>
        </repository>
        <repository>
            <id>spring-releases</id>
            <name>Spring Releases</name>
            <url>https://repo.spring.io/libs-release</url>
        </repository>
        <repository>
            <id>org.jboss.repository.releases</id>
            <name>JBoss Maven Release Repository</name>
            <url>https://repository.jboss.org/nexus/content/repositories/releases</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <name>Spring Releases</name>
            <url>https://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
</project>

+ 0 - 19
hos-saas/src/main/java/com/yihu/hos/saas/HosSaasApplication.java

@ -1,19 +0,0 @@
package com.yihu.hos.saas;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
@SpringBootApplication
public class HosSaasApplication extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(HosSaasApplication.class, args);
    }
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(HosSaasApplication.class);
    }
}

+ 0 - 31
hos-saas/src/main/java/com/yihu/hos/saas/configurations/HibernateConfiguration.java

@ -1,31 +0,0 @@
package com.yihu.hos.saas.configurations;
import org.hibernate.Interceptor;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.jta.JtaTransactionManager;
import javax.sql.DataSource;
import java.util.Map;
/**
 * @created Airhead 2016/11/14.
 */
@Configuration
public class HibernateConfiguration extends HibernateJpaAutoConfiguration {
    @Autowired
    private Interceptor changeSchemaInterceptor;
    public HibernateConfiguration(DataSource dataSource, JpaProperties jpaProperties, ObjectProvider<JtaTransactionManager> jtaTransactionManagerProvider) {
        super(dataSource, jpaProperties, jtaTransactionManagerProvider);
    }
    @Override
    protected void customizeVendorProperties(Map<String, Object> vendorProperties) {
        vendorProperties.put("hibernate.ejb.interceptor", changeSchemaInterceptor);
        super.customizeVendorProperties(vendorProperties);
    }
}

+ 0 - 33
hos-saas/src/main/java/com/yihu/hos/saas/configurations/ServiceConfiguration.java

@ -1,33 +0,0 @@
package com.yihu.hos.saas.configurations;
import com.yihu.hos.saas.services.AuthenticateService;
import com.yihu.hos.saas.services.HelloService;
import com.yihu.hos.saas.services.impl.AuthenticateServiceImpl;
import com.yihu.hos.saas.services.impl.HelloServiceImpl;
import com.yihu.hos.saas.services.mockimpl.AuthenticateServiceMockImpl;
import com.yihu.hos.saas.services.mockimpl.HelloServiceMockImpl;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @created Airhead 2016/9/23.
 */
@Configuration
public class ServiceConfiguration {
    @Value("${services.HelloService}")
    private boolean helloService;
    @Value("${services.AuthenticateService}")
    private boolean authenticateService;
    @Bean
    public HelloService helloService() {
        return helloService ? new HelloServiceImpl() : new HelloServiceMockImpl();
    }
    @Bean
    AuthenticateService authenticateService() {
        return authenticateService ? new AuthenticateServiceImpl() : new AuthenticateServiceMockImpl();
    }
}

+ 0 - 27
hos-saas/src/main/java/com/yihu/hos/saas/configurations/WebMvcConfiguration.java

@ -1,27 +0,0 @@
package com.yihu.hos.saas.configurations;
import com.yihu.hos.saas.interceptors.AuthenticateInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
 * @created Airhead 2016/11/14.
 */
@EnableWebMvc
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(authenticateInterceptor())
                .excludePathPatterns("/auth/**");
    }
    @Bean
    AuthenticateInterceptor authenticateInterceptor() {
        return new AuthenticateInterceptor();
    }
}

+ 0 - 8
hos-saas/src/main/java/com/yihu/hos/saas/constants/ContextAttributes.java

@ -1,8 +0,0 @@
package com.yihu.hos.saas.constants;
/**
 * @created Airhead 2016/11/14.
 */
public interface ContextAttributes {
    String SCHEMA = "schema";
}

+ 0 - 32
hos-saas/src/main/java/com/yihu/hos/saas/controllers/AuthenticateController.java

@ -1,32 +0,0 @@
package com.yihu.hos.saas.controllers;
import com.yihu.hos.saas.services.AuthenticateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 * @created Airhead 2016/11/16.
 */
@RestController
@RequestMapping(value = "/auth")
public class AuthenticateController {
    @Autowired
    private AuthenticateService authenticateService;
    @RequestMapping(value = "/{tenantName}", method = RequestMethod.POST)
    public String auth(@PathVariable(name = "tenantName") String tenantName,
                       HttpServletRequest request, HttpServletResponse response) {
        HttpSession session = request.getSession();
        String tenantPassword = request.getParameter("tenantPassword");
        String user = request.getParameter("user");
        String password = request.getParameter("password");
        return authenticateService.auth(session, tenantName, tenantPassword, user, password);
    }
}

+ 0 - 23
hos-saas/src/main/java/com/yihu/hos/saas/controllers/HelloController.java

@ -1,23 +0,0 @@
package com.yihu.hos.saas.controllers;
import com.yihu.hos.saas.services.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
 * @created Airhead 2016/9/23.
 */
@RestController
@RequestMapping(value = "/hello")
public class HelloController {
    @Autowired
    private HelloService helloService;
    @RequestMapping(method = RequestMethod.GET)
    public String sayHello() {
        return helloService.sayHello();
    }
}

+ 0 - 20
hos-saas/src/main/java/com/yihu/hos/saas/daos/TenantDao.java

@ -1,20 +0,0 @@
package com.yihu.hos.saas.daos;
import com.yihu.hos.saas.models.TenantModel;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
 * @created Airhead 2016/11/16.
 */
@Component
@Transactional
public interface TenantDao extends CrudRepository<TenantModel, Long> {
    @Query("select a from TenantModel a where a.code = ?1 and a.valid=1")
    TenantModel findOneByCode(String code);
    @Query("select a from TenantModel a where a.name = ?1 and a.valid=1")
    TenantModel findOneByName(String name);
}

+ 0 - 10
hos-saas/src/main/java/com/yihu/hos/saas/daos/TestDao.java

@ -1,10 +0,0 @@
package com.yihu.hos.saas.daos;
import com.yihu.hos.saas.models.TestModel;
import org.springframework.data.repository.CrudRepository;
/**
 * @created Airhead 2016/11/16.
 */
public interface TestDao extends CrudRepository<TestModel, Long> {
}

+ 0 - 20
hos-saas/src/main/java/com/yihu/hos/saas/daos/UserDao.java

@ -1,20 +0,0 @@
package com.yihu.hos.saas.daos;
import com.yihu.hos.saas.models.UserModel;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
 * @created Airhead 2016/9/4.
 */
@Transactional
@Component
public interface UserDao extends CrudRepository<UserModel, Long> {
    @Query("select a from UserModel a where a.name = ?1 and a.valid = 1")
    UserModel findOne(String userName);
    @Query("select a from UserModel a where a.code = ?1 and a.valid = 1")
    UserModel findOneByCode(String userCode);
}

+ 0 - 16
hos-saas/src/main/java/com/yihu/hos/saas/daos/UserTenantDao.java

@ -1,16 +0,0 @@
package com.yihu.hos.saas.daos;
import com.yihu.hos.saas.models.UserModel;
import com.yihu.hos.saas.models.UserTenantModel;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Component;
/**
 * @created Airhead 2016/11/16.
 */
@Component
public interface UserTenantDao extends CrudRepository<UserTenantModel, Long> {
    @Query("select a from UserTenantModel a where a.userCode = ?1")
    UserTenantModel findOne(String userCode);
}

+ 0 - 23
hos-saas/src/main/java/com/yihu/hos/saas/interceptors/AuthenticateInterceptor.java

@ -1,23 +0,0 @@
package com.yihu.hos.saas.interceptors;
import com.yihu.hos.saas.services.AuthenticateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AuthenticateInterceptor extends HandlerInterceptorAdapter {
    @Autowired
    private AuthenticateService authenticateService;
//    public AuthenticateInterceptor(AuthenticateService authenticateService) {
//        Assert.notNull(authenticateService, "AuthenticateService must be not null");
//        this.authenticateService = authenticateService;
//    }
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return authenticateService.isAuth(request, response);
    }
}

+ 0 - 34
hos-saas/src/main/java/com/yihu/hos/saas/interceptors/ChangeSchemaInterceptor.java

@ -1,34 +0,0 @@
package com.yihu.hos.saas.interceptors;
import com.yihu.hos.saas.constants.ContextAttributes;
import com.yihu.hos.saas.utils.LocalContext;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.EmptyInterceptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
 * @created Airhead 2016/11/14.
 */
@Component
public class ChangeSchemaInterceptor extends EmptyInterceptor {
    private static final long serialVersionUID = 1L;
    private static Logger logger = LoggerFactory.getLogger(ChangeSchemaInterceptor.class);
    @Override
    public String onPrepareStatement(String sql) {
        String schemaName = getSchema();
        String completeSql = sql;
        if (StringUtils.isNotEmpty(schemaName)) {
            String myCatAnnotation = "/*#mycat:schema=" + schemaName + "*/ ";
            completeSql = myCatAnnotation + sql;
        }
        logger.info("prepare " + completeSql);
        return super.onPrepareStatement(completeSql);
    }
    private String getSchema() {
        return LocalContext.getContext().getAttachment(ContextAttributes.SCHEMA);
    }
}

+ 0 - 107
hos-saas/src/main/java/com/yihu/hos/saas/models/TenantModel.java

@ -1,107 +0,0 @@
package com.yihu.hos.saas.models;
import com.yihu.hos.tenant.models.common.IdModel;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * @created Airhead 2016/11/16.
 */
@Entity
@Table(name = "tenant")
public class TenantModel extends IdModel {
    private String code;
    private String name;
    private String password;
    private String schema;
    private Date created;
    private Long createdUnix;
    private Date updated;
    private Long updatedUnix;
    private Integer valid;
    @Column(name = "password")
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Column(name = "code")
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "schema")
    public String getSchema() {
        return schema;
    }
    public void setSchema(String schema) {
        this.schema = schema;
    }
    @Column(name = "created")
    public Date getCreated() {
        return created;
    }
    public void setCreated(Date created) {
        this.created = created;
    }
    @Column(name = "created_unix")
    public Long getCreatedUnix() {
        return createdUnix;
    }
    public void setCreatedUnix(Long createdUnix) {
        this.createdUnix = createdUnix;
    }
    @Column(name = "updated")
    public Date getUpdated() {
        return updated;
    }
    public void setUpdated(Date updated) {
        this.updated = updated;
    }
    @Column(name = "updated_unix")
    public Long getUpdatedUnix() {
        return updatedUnix;
    }
    public void setUpdatedUnix(Long updatedUnix) {
        this.updatedUnix = updatedUnix;
    }
    @Column(name = "valid")
    public Integer getValid() {
        return valid;
    }
    public void setValid(Integer valid) {
        this.valid = valid;
    }
}

+ 0 - 44
hos-saas/src/main/java/com/yihu/hos/saas/models/TestModel.java

@ -1,44 +0,0 @@
package com.yihu.hos.saas.models;
import com.yihu.hos.tenant.models.common.IdModel;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
 * @created Airhead 2016/11/16.
 */
@Entity
@Table(name = "test")
public class TestModel extends IdModel {
    private String name;
    private String memo;
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "memo")
    public String getMemo() {
        return memo;
    }
    public void setMemo(String memo) {
        this.memo = memo;
    }
    @Override
    public String toString() {
        return "TestModel{" +
                "name='" + name + '\'' +
                ", memo='" + memo + '\'' +
                '}';
    }
}

+ 0 - 77
hos-saas/src/main/java/com/yihu/hos/saas/models/UserModel.java

@ -1,77 +0,0 @@
package com.yihu.hos.saas.models;
import com.yihu.hos.tenant.models.common.IdModel;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * @created Airhead 2016/9/2.
 */
@Entity
@Table(name = "user")
public class UserModel extends IdModel {
    private String code;
    private String name;
    private String password;
    private Date created;
    private Date updated;
    private Integer valid;
    @Column(name = "code")
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    @Column(name = "name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Column(name = "password")
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Column(name = "created")
    public Date getCreated() {
        return created;
    }
    public void setCreated(Date created) {
        this.created = created;
    }
    @Column(name = "updated")
    public Date getUpdated() {
        return updated;
    }
    public void setUpdated(Date updated) {
        this.updated = updated;
    }
    @Column(name = "valid")
    public Integer getValid() {
        return valid;
    }
    public void setValid(Integer valid) {
        this.valid = valid;
    }
}

+ 0 - 57
hos-saas/src/main/java/com/yihu/hos/saas/models/UserTenantModel.java

@ -1,57 +0,0 @@
package com.yihu.hos.saas.models;
import com.yihu.hos.tenant.models.common.IdModel;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.util.Date;
/**
 * @created Airhead 2016/11/16.
 */
@Entity
@Table(name = "user_tenant")
public class UserTenantModel extends IdModel {
    private String userCode;
    private String tenantSchema;
    private Date created;
    private Date updated;
    @Column(name = "user_code")
    public String getUserCode() {
        return userCode;
    }
    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }
    @Column(name = "tenant_schema")
    public String getTenantSchema() {
        return tenantSchema;
    }
    public void setTenantSchema(String tenantSchema) {
        this.tenantSchema = tenantSchema;
    }
    @Column(name = "created")
    public Date getCreated() {
        return created;
    }
    public void setCreated(Date created) {
        this.created = created;
    }
    @Column(name = "updated")
    public Date getUpdated() {
        return updated;
    }
    public void setUpdated(Date updated) {
        this.updated = updated;
    }
}

+ 0 - 45
hos-saas/src/main/java/com/yihu/hos/saas/models/bo/UserSession.java

@ -1,45 +0,0 @@
package com.yihu.hos.saas.models.bo;
import java.util.UUID;
/**
 * @created Airhead 2016/11/16.
 */
public class UserSession {
    private String userCode;
    private String token;
    private String schema;
    public UserSession() {
    }
    public UserSession(String userCode, String schema) {
        this.userCode = userCode;
        this.schema = schema;
        token = UUID.randomUUID().toString();
    }
    public String getSchema() {
        return schema;
    }
    public void setSchema(String schema) {
        this.schema = schema;
    }
    public String getUserCode() {
        return userCode;
    }
    public void setUserCode(String userCode) {
        this.userCode = userCode;
    }
    public String getToken() {
        return token;
    }
    public void setToken(String token) {
        this.token = token;
    }
}

+ 0 - 17
hos-saas/src/main/java/com/yihu/hos/saas/services/AuthenticateService.java

@ -1,17 +0,0 @@
package com.yihu.hos.saas.services;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 * @created Airhead 2016/11/16.
 */
@Service
public interface AuthenticateService {
    boolean isAuth(HttpServletRequest request, HttpServletResponse response) throws Exception;
    String auth(HttpSession httpSession, String tenantName, String tenantPassword, String user, String password);
}

+ 0 - 11
hos-saas/src/main/java/com/yihu/hos/saas/services/HelloService.java

@ -1,11 +0,0 @@
package com.yihu.hos.saas.services;
import org.springframework.stereotype.Service;
/**
 * @created Airhead 2016/9/23.
 */
@Service
public interface HelloService {
    String sayHello();
}

+ 0 - 62
hos-saas/src/main/java/com/yihu/hos/saas/services/impl/AuthenticateServiceImpl.java

@ -1,62 +0,0 @@
package com.yihu.hos.saas.services.impl;
import com.yihu.hos.saas.constants.ContextAttributes;
import com.yihu.hos.saas.daos.TenantDao;
import com.yihu.hos.saas.daos.UserDao;
import com.yihu.hos.saas.models.TenantModel;
import com.yihu.hos.saas.models.UserModel;
import com.yihu.hos.saas.models.bo.UserSession;
import com.yihu.hos.saas.services.AuthenticateService;
import com.yihu.hos.saas.utils.LocalContext;
import org.springframework.beans.factory.annotation.Autowired;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 * @created Airhead 2016/11/16.
 */
public class AuthenticateServiceImpl implements AuthenticateService {
    @Autowired
    private UserDao userDao;
    @Autowired
    private TenantDao tenantDao;
    @Override
    public boolean isAuth(HttpServletRequest request, HttpServletResponse response) throws Exception {
        HttpSession session = request.getSession();
        UserSession userSession = (UserSession) session.getAttribute("userSession");
        if (userSession == null) {
            return false;
        }
        LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA, userSession.getSchema());
        return true;
    }
    @Override
    public String auth(HttpSession httpSession, String tenantName, String tenantPassword, String user, String password) {
        TenantModel tenantModel = tenantDao.findOneByName(tenantName);
        //TODO:现在只是简单逻辑,需要修改成安全逻辑
        if (tenantModel == null
//                || !password.equals(tenantModel.getPassword())
                ) {
            return "Tenant Auth Failed";
        }
        //切换Schema
        LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA, tenantModel.getSchema());
        UserModel userModel = userDao.findOne(user);
        //TODO:现在只是简单逻辑,需要修改成安全逻辑
        if (userModel == null || !password.equals(userModel.getPassword())) {
            return "User Auth Failed";
        }
        httpSession.setAttribute("userSession", new UserSession(userModel.getCode(), tenantModel.getSchema()));
        return "Auth Success";
    }
}

+ 0 - 13
hos-saas/src/main/java/com/yihu/hos/saas/services/impl/HelloServiceImpl.java

@ -1,13 +0,0 @@
package com.yihu.hos.saas.services.impl;
import com.yihu.hos.saas.services.HelloService;
/**
 * @created Airhead 2016/9/23.
 */
public class HelloServiceImpl implements HelloService {
    @Override
    public String sayHello() {
        return "Hello World!";
    }
}

+ 0 - 31
hos-saas/src/main/java/com/yihu/hos/saas/services/mockimpl/AuthenticateServiceMockImpl.java

@ -1,31 +0,0 @@
package com.yihu.hos.saas.services.mockimpl;
import com.yihu.hos.saas.constants.ContextAttributes;
import com.yihu.hos.saas.models.bo.UserSession;
import com.yihu.hos.saas.services.AuthenticateService;
import com.yihu.hos.saas.utils.LocalContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
 * @created Airhead 2016/11/16.
 */
public class AuthenticateServiceMockImpl implements AuthenticateService {
    @Override
    public boolean isAuth(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String name = request.getParameter("name");
        LocalContext.getContext().setAttachment(ContextAttributes.SCHEMA, name);
        return true;
    }
    @Override
    public String auth(HttpSession httpSession, String tenantName, String tenantPassword, String user, String password) {
        UserSession userSession = new UserSession();
        userSession.setUserCode("abc");
        userSession.setToken("1234567890");
        return null;
    }
    
}

+ 0 - 19
hos-saas/src/main/java/com/yihu/hos/saas/services/mockimpl/HelloServiceMockImpl.java

@ -1,19 +0,0 @@
package com.yihu.hos.saas.services.mockimpl;
import com.yihu.hos.saas.daos.TestDao;
import com.yihu.hos.saas.models.TestModel;
import com.yihu.hos.saas.services.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
/**
 * @created Airhead 2016/9/23.
 */
public class HelloServiceMockImpl implements HelloService {
    @Autowired
    private TestDao testDao;
    public String sayHello() {
        TestModel testModel = testDao.findOne(1L);
        return "Hello," + testModel.toString();
    }
}

+ 0 - 60
hos-saas/src/main/java/com/yihu/hos/saas/utils/LocalContext.java

@ -1,60 +0,0 @@
package com.yihu.hos.saas.utils;
import java.util.HashMap;
import java.util.Map;
/**
 * @created Airhead 2016/11/14.
 */
public class LocalContext {
    private static final ThreadLocal<LocalContext> LOCAL = new ThreadLocal<LocalContext>() {
        protected LocalContext initialValue() {
            return new LocalContext();
        }
    };
    private final Map<String, String> attachments = new HashMap<>();
    public static LocalContext getContext() {
        return LOCAL.get();
    }
    public static void removeContext() {
        LOCAL.remove();
    }
    public String getAttachment(String key) {
        return (String) this.attachments.get(key);
    }
    public LocalContext setAttachment(String key, String value) {
        if (value == null) {
            this.attachments.remove(key);
        } else {
            this.attachments.put(key, value);
        }
        return this;
    }
    public LocalContext removeAttachment(String key) {
        this.attachments.remove(key);
        return this;
    }
    public Map<String, String> getAttachments() {
        return this.attachments;
    }
    public LocalContext setAttachments(Map<String, String> attachment) {
        this.attachments.clear();
        if (attachment != null && attachment.size() > 0) {
            this.attachments.putAll(attachment);
        }
        return this;
    }
    public void clearAttachments() {
        this.attachments.clear();
    }
}

+ 0 - 14
hos-saas/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@ -1,14 +0,0 @@
{
  "properties": [
    {
      "name": "services.HelloService",
      "type": "java.lang.String",
      "description": "Description for services.HelloService."
    },
    {
      "name": "services.AuthenticateService ",
      "type": "java.lang.String",
      "description": "Description for services.AuthenticateService ."
    }
  ]
}

+ 0 - 9
hos-saas/src/main/resources/application.yml

@ -1,9 +0,0 @@
services:
  HelloService: false
  AuthenticateService : true
spring:
  datasource:
    url: jdbc:mysql://192.168.1.220:8066/global_db?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
    username: hos
    password: 123456

+ 0 - 16
hos-saas/src/test/java/com/yihu/hos/HosSaasApplicationTests.java

@ -1,16 +0,0 @@
package com.yihu.hos;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class HosSaasApplicationTests {
	@Test
	public void contextLoads() {
	}
}

+ 8 - 2
hos-web-camel-dependencies/pom.xml

@ -5,12 +5,12 @@
    <modelVersion>4.0.0</modelVersion>
    <artifactId>hos-web-camel-dependencies</artifactId>
    <version>1.1.1-SNAPSHOT</version>
    <version>1.3.0</version>
    <packaging>pom</packaging>
    <parent>
        <groupId>com.yihu.hos</groupId>
        <artifactId>hos-web-framework-dependencies</artifactId>
        <version>1.1.1-SNAPSHOT</version>
        <version>1.3.0</version>
        <relativePath>../hos-web-framework-dependencies</relativePath><!-- lookup parent from repository -->
    </parent>
@ -110,6 +110,12 @@
            <artifactId>camel-jetty</artifactId>
            <version>${camel.version}</version> <!-- use the same version as your Camel core version -->
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-mongodb</artifactId>
            <version>${camel.version}</version>
            <!-- use the same version as your Camel core version -->
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-camel -->
        <dependency>
            <groupId>xom</groupId>

+ 4 - 19
hos-web-framework-dependencies/pom.xml

@ -6,12 +6,12 @@
    <groupId>com.yihu.hos</groupId>
    <artifactId>hos-web-framework-dependencies</artifactId>
    <version>1.1.1-SNAPSHOT</version>
    <version>1.3.0</version>
    <packaging>pom</packaging>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.1.RELEASE</version>
        <version>1.4.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository1212 -->
    </parent>
@ -92,15 +92,11 @@
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.37</version>
        </dependency>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.hos</groupId>
            <artifactId>hos-core</artifactId>
            <version>1.1.1-SNAPSHOT</version>
            <version>1.3.0</version>
        </dependency>
        <!-- swagger start -->
        <dependency>
@ -134,17 +130,6 @@
            <artifactId>javax.transaction-api</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.core</groupId>
            <artifactId>ehr-dbhelper</artifactId>
            <version>1.1.9</version>
        </dependency>
        <dependency>
            <groupId>com.yihu.core</groupId>
            <artifactId>html2image</artifactId>
            <version>0.9</version>
        </dependency>
    </dependencies>
    <build>

+ 2 - 2
hos-web-framework/pom.xml

@ -6,11 +6,11 @@
    <groupId>com.yihu.hos</groupId>
    <artifactId>hos-web-framework</artifactId>
    <version>1.1.1-SNAPSHOT</version>
    <version>1.3.0</version>
    <parent>
        <groupId>com.yihu.hos</groupId>
        <artifactId>hos-web-framework-dependencies</artifactId>
        <version>1.1.1-SNAPSHOT</version>
        <version>1.3.0</version>
        <relativePath>../hos-web-framework-dependencies</relativePath>
    </parent>
    <dependencies>

+ 119 - 350
hos-web-framework/src/main/java/com/yihu/hos/web/framework/util/GridFSUtil.java

@ -1,31 +1,22 @@
package com.yihu.hos.web.framework.util;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.BasicDBObject;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import com.mongodb.client.gridfs.GridFSFindIterable;
import com.mongodb.client.gridfs.GridFSUploadStream;
import com.mongodb.client.gridfs.model.GridFSFile;
import com.mongodb.client.gridfs.model.GridFSUploadOptions;
import com.mongodb.client.model.Filters;
import com.yihu.ehr.dbhelper.mongodb.MongodbFactory;
import com.yihu.ehr.dbhelper.mongodb.MongodbHelper;
import com.mongodb.gridfs.GridFSDBFile;
import com.yihu.hos.core.file.FileUtil;
import eu.medsea.mimeutil.MimeUtil;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.bson.types.ObjectId;
import org.json.JSONObject;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.gridfs.GridFsCriteria;
import org.springframework.data.mongodb.gridfs.GridFsOperations;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.io.*;
import java.sql.Blob;
import java.util.*;
@ -36,18 +27,24 @@ import java.util.*;
 * @vsrsion 1.0
 * Created at 2016/7/21.
 */
@Component
public class GridFSUtil {
    public static final int defaultChunkSize = 1024 * 1024 * 4;
    @Autowired
    private  GridFsOperations operations;
    private static GridFsOperations gridFsOperations;
    @PostConstruct
    public void init() {
        gridFsOperations = this.operations;
    }
    public static ObjectId uploadFile(String dbName, Blob blob, String fileType, Map<String, Object> params) {
        //获取mongodb连接
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFS = GridFSBuckets.create(db);
        String fileName = UUID.randomUUID().toString() + "." + fileType;
    public static ObjectId uploadFile( Blob blob, String fileType, Map<String, Object> params) {
//        String fileName = UUID.randomUUID().toString() + "." + fileType;
        //自定义字段
        Document metaDocument = new Document();
        if (params != null && params.size() > 0) {
@ -59,21 +56,14 @@ public class GridFSUtil {
        // Create some custom options
        GridFSUploadOptions gridFSUploadOptions = new GridFSUploadOptions()
                .chunkSizeBytes(defaultChunkSize).metadata(metaDocument);
        GridFSUploadStream uploadStream = gridFS.openUploadStream(fileName, gridFSUploadOptions);
        try {
            byte[] data = FileUtil.toByteArray(blob.getBinaryStream());
            uploadStream.write(data);
            ObjectId id = uploadStream.getFileId();
            if (id != null) {
                return id;
            com.mongodb.gridfs.GridFSFile gridFSFile = gridFsOperations.store(blob.getBinaryStream(), gridFSUploadOptions);
            if (gridFSFile != null) {
                return (ObjectId) gridFSFile.getId();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (uploadStream != null) {
                uploadStream.close();
            }
        }
        return null;
    }
@ -81,18 +71,11 @@ public class GridFSUtil {
    /**
     * 上传文件至Mongodb by GridFS
     *
     * @param dbName   数据库名
     * @param filePath 文件路径
     * @param params   自定义保存字段
     * @param filePath        上传的文件路径
     * @param saveFileName   保存到mongo的文件名
     * @param params          自定义保存字段
     */
    public static boolean uploadFile(String dbName, String filePath, Map<String, Object> params) {
        //获取mongodb连接
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFS = GridFSBuckets.create(db);
        File readFile = new File(filePath);
    public static String uploadFile( String filePath,String saveFileName, Map<String, Object> params) {
        //自定义字段
        Document metaDocument = new Document();
        if (params != null && params.size() > 0) {
@ -102,25 +85,26 @@ public class GridFSUtil {
            }
        }
        // Create some custom options
        GridFSUploadOptions gridFSUploadOptions = new GridFSUploadOptions()
                .chunkSizeBytes(defaultChunkSize).metadata(metaDocument);
        GridFSUploadStream uploadStream = gridFS.openUploadStream(readFile.getName(), gridFSUploadOptions);
        FileInputStream fileInputStream = null;
        try {
            byte[] data = FileUtil.toByteArray(filePath);
            uploadStream.write(data);
            ObjectId id = uploadStream.getFileId();
            if (id != null) {
                return true;
            File readFile = new File(filePath);
            fileInputStream = new FileInputStream(readFile);
            com.mongodb.gridfs.GridFSFile gridFSFile = gridFsOperations.store(fileInputStream,saveFileName,"",metaDocument);
            if (gridFSFile != null) {
                return saveFileName;
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (uploadStream != null) {
                uploadStream.close();
            if (fileInputStream != null) {
                try {
                    fileInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return false;
        return null;
    }
    /**
@ -128,30 +112,24 @@ public class GridFSUtil {
     *
     * @param dbName   数据库名
     * @param savePath 文件保存路径
     * @param objId    GridFS文件保存ObjectId
     * @param objectId GridFS文件保存ObjectId
     * @return
     */
    public static String downFile(String dbName, String savePath, ObjectId objId) {
        //穿件mongodb连接
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFS = GridFSBuckets.create(db);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        gridFS.downloadToStream(objId, out);
    public static String downFile(String dbName, String savePath, ObjectId objectId) {
        FileOutputStream fileOutputStream = null;
        try {
            boolean succ = FileUtil.writeFile(savePath, out.toByteArray(), "utf-8");
            if (succ) {
                return savePath;
            } else {
                return null;
            }
            GridFSDBFile gridFSDBFile = gridFsOperations.findOne(Query.query(GridFsCriteria.where("_id").is(objectId)));
            fileOutputStream = new FileOutputStream(savePath);
            gridFSDBFile.writeTo(fileOutputStream);
            return savePath;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (out != null) {
            if (fileOutputStream != null) {
                try {
                    out.close();
                    fileOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
@ -168,76 +146,25 @@ public class GridFSUtil {
     * @param fsFiles  fs.files
     * @return 以“,”分割的文件名
     */
    public static Map<String, StringBuffer> downFileList(String dbName, String savePath, List<GridFSFile> fsFiles) {
    public static Map<String, StringBuffer> downFileList(String dbName, String savePath, List<GridFSDBFile> fsFiles) {
        StringBuffer stringBuffer = new StringBuffer();
        Map<String, String> fileNames = new HashMap<>();
        //穿件mongodb连接
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFS = GridFSBuckets.create(db);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        if (fsFiles != null && fsFiles.size() > 0) {
            for (GridFSFile fsFile : fsFiles) {
                ObjectId objId = fsFile.getObjectId();
            for (GridFSDBFile fsFile : fsFiles) {
                Object objectId = fsFile.getId();
                String fileType = fsFile.getFilename().substring(fsFile.getFilename().lastIndexOf("."));
                String newName = UUID.randomUUID().toString() + "." + fileType;
                gridFS.downloadToStream(objId, out);
                GridFSDBFile gridFSDBFile = gridFsOperations.findOne(Query.query(GridFsCriteria.where("_id").is(objectId)));
                try {
                    boolean succ = FileUtil.writeFile(savePath + "/" + newName, out.toByteArray(), "utf-8");
                    if (succ) {
                        String type = getMimeType(out.toByteArray());
                        fileNames.put(newName, type);
//                        stringBuffer.append(newName).append(",");
                        continue;
                    } else {
                    gridFSDBFile.writeTo(out);
                    boolean success = FileUtil.writeFile(savePath + "/" + newName, out.toByteArray(), "utf-8");
                    if (!success) {
                        break;
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                    return null;
                } finally {
                    if (out != null) {
                        try {
                            out.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
            return groupDataMap(fileNames);
        } else {
            return null;
        }
    }
    public static Map<String, StringBuffer> downFilesByObjectIds(String dbName, String savePath, List<ObjectId> ids) {
        StringBuffer stringBuffer = new StringBuffer();
        Map<String, String> fileNames = new HashMap<>();
        //穿件mongodb连接
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFS = GridFSBuckets.create(db);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        List<GridFSFile> fsFiles = findFsFiles(dbName, ids);
        if (fsFiles != null && fsFiles.size() > 0) {
            for (GridFSFile fsFile : fsFiles) {
                ObjectId objId = fsFile.getObjectId();
                String fileType = fsFile.getFilename().substring(fsFile.getFilename().lastIndexOf("."));
                String newName = UUID.randomUUID().toString() + "." + fileType;
                gridFS.downloadToStream(objId, out);
                try {
                    boolean succ = FileUtil.writeFile(savePath + "/" + newName, out.toByteArray(), "utf-8");
                    if (succ) {
                        String type = getMimeType(out.toByteArray());
                        fileNames.put(newName, type);
//                        stringBuffer.append(newName).append(",");
                        continue;
                    } else {
                        break;
                    }
                    String type = getMimeType(out.toByteArray());
                    fileNames.put(newName, type);
                } catch (IOException e) {
                    e.printStackTrace();
                    return null;
@ -257,49 +184,30 @@ public class GridFSUtil {
        }
    }
    /**
     * 删除 mongodb-GridFS文件
     *
     * @param dbName
     * @param objId
     * @param objectId
     */
    public static void deleteFile(String dbName, ObjectId objId) {
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFS = GridFSBuckets.create(db);
        gridFS.delete(objId);
    public static void deleteFile(String dbName, ObjectId objectId) {
        gridFsOperations.delete(Query.query(GridFsCriteria.where("_id").is(objectId)));
    }
    /**
     * 查询fs.files 数据 in GridFS
     *
     * @param dbName  数据库名
     * @param filters 查询条件
     * @return files集合
     */
    public static List<GridFSFile> findFiles(String dbName, Map<String, Object> filters) {
        //穿件mongodb连接
        List<GridFSFile> list = new ArrayList<>();
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFSBucket = GridFSBuckets.create(db);
        List<Bson> querys = new ArrayList<>();
        //添加查询条件
        if (filters != null && filters.size() > 0) {
            for (Map.Entry<String, Object> entry : filters.entrySet()) {
                String key = entry.getKey();
                querys.add(Filters.eq(key, entry.getValue()));
            }
    public static List<GridFSDBFile> findFiles( Map<String, Object> filters) {
        Query query = new Query();
        if (filters != null) {
            filters.forEach((key, value) -> query.addCriteria(GridFsCriteria.where(key).is(value)));
        }
//        GridFSFindIterable gsIterable=gridFSBucket.find(Filters.eq("metadata.cda_id", "111"));
        GridFSFindIterable gsIterable = gridFSBucket.find(Filters.and(querys));
        MongoCursor<GridFSFile> it = gsIterable.iterator();
        while (it.hasNext()) {
            GridFSFile fsFile = it.next();
            list.add(fsFile);
        }
        return list;
        return gridFsOperations.find(query);
    }
    /**
@ -309,116 +217,16 @@ public class GridFSUtil {
     * @param ids    objectId集合
     * @return
     */
    public static List<GridFSFile> findFsFiles(String dbName, List<ObjectId> ids) {
        //穿件mongodb连接
        List<GridFSFile> list = new ArrayList<>();
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFSBucket = GridFSBuckets.create(db);
        List<Bson> querys = new ArrayList<>();
        //添加查询条件
        if (ids != null && ids.size() > 0) {
            querys.add(Filters.in("_id", ids));
        }
        GridFSFindIterable gsIterable = null;
        if (querys.size() > 0) {
            gsIterable = gridFSBucket.find(Filters.and(querys));
        } else {
            gsIterable = gridFSBucket.find();
        }
    public static List<GridFSDBFile> findFsFiles(String dbName, List<ObjectId> ids) {
        List<GridFSDBFile> list = new ArrayList<>();
        ids.forEach(objectId -> {
            GridFSDBFile gridFSDBFile = gridFsOperations.findOne(Query.query(GridFsCriteria.where("_id").is(objectId)));
            list.add(gridFSDBFile);
        });
        MongoCursor<GridFSFile> it = gsIterable.iterator();
        while (it.hasNext()) {
            GridFSFile fsFile = it.next();
            list.add(fsFile);
        }
        return list;
    }
    public static Map parseJsonToMap(JSONObject condition) {
        ObjectMapper objectMapper = new ObjectMapper();
        HashMap map = new HashMap();
        try {
            Iterator fileNames = (Iterator) condition.names();
            while (fileNames.hasNext()) {
                String fieldName = (String) fileNames.next();
                Object valueNode = condition.get(fieldName);
                if (valueNode instanceof Blob) {
                    map.put(fieldName, valueNode);
                } else {
                    map.put(fieldName, condition.get(fieldName).toString());
                }
            }
        } catch (Exception var7) {
            var7.printStackTrace();
        }
        return map;
    }
    //TODO  测试所用,后删除
    public static void tTestFind(String tableName, String collection, Map<String, Object> params) {
        MongodbHelper mongodbHelper = new MongodbHelper(tableName);
        BasicDBObject basicDBObject = new BasicDBObject();
        for (Map.Entry<String, Object> entry : params.entrySet()) {
            String key = entry.getKey();
            basicDBObject.append(key, entry.getValue());
        }
        FindIterable<Document> documents = mongodbHelper.query(collection, basicDBObject, null, null);
        MongoCursor<Document> it = documents.iterator();
        while (it.hasNext()) {
            Document document = it.next();
            List<Document> fileList = (List<Document>) document.get("files");
            Document jsonNode = fileList.get(0);
            List files = (List) jsonNode.get("files_id");
            List<GridFSFile> fs = findFsFiles("mydb", files);
            System.out.println(files.toString());
            String filePath = "e:/test/";
            Map<String, StringBuffer> path = downFileList("mydb", filePath, fs);
        }
    }
//    public static void main(String[] args) {
//        try {
//            //上传
//            Map<String,Object> params= new HashMap<>();
////            params.put("cda_id","111");
////            params.put("report_id","1001");
//            params.put("patient_id","1001");
//            params.put("event_no","1001");
////            String fileName = "e:/test/肺2.jpg";
////            uploadFile("mydb", fileName,params);
//            //下载
////            String filePath="e:/test/xiao_copy.jpg";
////            downFile("mydb",filePath,"579067939724e11514b2eead");
//            //删除
////            deleteFile("mydb","57906e369724e11dd8e75798");
//            //查询
////            List<GridFSFile> fsFiles  = findFiles("mydb",params);
//            // 根据objectId集合 查询
////            List<ObjectId> list=new ArrayList<>();
////            list.add(new ObjectId("5791c9399724e12b9437b229"));
////            list.add(new ObjectId("5795aab07a2b9020ec19fdfa"));
//
////            List<GridFSFile> fs=findFsFiles("mydb",list);
//            //测试查询类
//            tTestFind("document","CDA_TEST",params);
//            //批量下载
////            String filePath="e:/test/";
////            downFileList("mydb",filePath, fs);
//
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
    /*************************************** MineType 工具类 *********************************/
    /**
@ -460,73 +268,39 @@ public class GridFSUtil {
        return result;
    }
    /**
     * 上传文件至Mongodb by GridFS
     *
     * @param db   数据库
     * @param file 文件
     *  上传文件至Mongodb by GridFS
     * @param saveFileName  保存到mongo的文件名
     * @param inputStream   文件流
     * @param params         metaData数据
     * @return
     */
    public static String uploadFile(MongoDatabase db, CommonsMultipartFile file) {
        //创建一个容器
        GridFSBucket gridFS = GridFSBuckets.create(db);
        //自定义字段
    public static String uploadFile( InputStream inputStream,String saveFileName,Map<String ,Object> params) {
        //metaData参数
        Document metaDocument = new Document();
        // Create some custom options
        GridFSUploadOptions gridFSUploadOptions = new GridFSUploadOptions()
                .chunkSizeBytes(defaultChunkSize).metadata(metaDocument);
        String fileName = UUID.randomUUID() + file.getFileItem().getName();
        GridFSUploadStream uploadStream = gridFS.openUploadStream(fileName, gridFSUploadOptions);
        try {
            byte[] data = file.getBytes();
            uploadStream.write(data);
            ObjectId id = uploadStream.getFileId();
            if (id != null) {
                return fileName;
            }
        } finally {
            if (uploadStream != null) {
                uploadStream.close();
        if (params != null && params.size() > 0) {
            for (Map.Entry<String, Object> entry : params.entrySet()) {
                String key = entry.getKey();
                metaDocument.append(key, entry.getValue());
            }
        }
        return "";
    }
    /**
     * 上传文件至Mongodb by GridFS
     *
     * @param dbName   数据库名
     * @param filePath 文件路径
     */
    public static String uploadFile(String dbName, String filePath, String fileName) {
        //获取mongodb连接
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFS = GridFSBuckets.create(db);
        //自定义字段
        Document metaDocument = new Document();
        // Create some custom options
        GridFSUploadOptions gridFSUploadOptions = new GridFSUploadOptions()
                .chunkSizeBytes(defaultChunkSize).metadata(metaDocument);
        GridFSUploadStream uploadStream = gridFS.openUploadStream(fileName, gridFSUploadOptions);
        try {
            byte[] data = FileUtil.toByteArray(filePath);
            uploadStream.write(data);
            ObjectId id = uploadStream.getFileId();
            if (id != null) {
                return fileName;
            com.mongodb.gridfs.GridFSFile gridFSFile = gridFsOperations.store(inputStream, saveFileName, "", metaDocument);
            if (gridFSFile != null) {
                return saveFileName;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (uploadStream != null) {
                uploadStream.close();
                File file = new File(filePath);
                file.deleteOnExit();
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
        return "";
    }
    /**
@ -549,19 +323,16 @@ public class GridFSUtil {
    /**
     * 读取文件内容
     * @param dbName    数据库名
     * @param fileName  文件名
     *
     * @param fileName 文件名
     * @return
     */
    public static String readFile(String dbName, String fileName){
    public static String readFileContent( String fileName) {
        try {
            MongoDatabase db = MongodbFactory.getDB(dbName);
            GridFSBucket gridFS = GridFSBuckets.create(db);
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            gridFS.downloadToStreamByName(fileName, out);
            String content = FileUtil.readFileText(out.toByteArray());
            out.close();
            return content;
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            GridFSDBFile gridFSDBFile = gridFsOperations.findOne(Query.query(GridFsCriteria.where("filename").is(fileName)));
            gridFSDBFile.writeTo(byteArrayOutputStream);
            return byteArrayOutputStream.toString();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
@ -577,27 +348,25 @@ public class GridFSUtil {
     * @param fileName GridFS文件名
     * @return
     */
    public static String downFile(String dbName, String savePath, String fileName) {
        //穿件mongodb连接
//        MongodbHelper mongoOrigin = new MongodbHelper(dbName);
        //创建一个容器
        MongoDatabase db = MongodbFactory.getDB(dbName);
        GridFSBucket gridFS = GridFSBuckets.create(db);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        gridFS.downloadToStreamByName(fileName, out);
    public static String downFile( String savePath, String fileName) {
        FileOutputStream fileOutputStream = null;
        try {
            boolean succ = FileUtil.writeFile(savePath, out.toByteArray(), "UTF-8");
            if (succ) {
                return savePath;
            } else {
            File file = new File(savePath);
            fileOutputStream = new FileOutputStream(file);
            List<GridFSDBFile> gridFSDBFiles = gridFsOperations.find(Query.query(GridFsCriteria.where("filename").is(fileName)));
            if (gridFSDBFiles==null || gridFSDBFiles.isEmpty()){
                return null;
            }else {
                GridFSDBFile gridFSDBFile = gridFSDBFiles.get(0);
                gridFSDBFile.writeTo(fileOutputStream);
                return savePath;
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (out != null) {
            if (fileOutputStream != null) {
                try {
                    out.close();
                    fileOutputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

+ 14 - 6
pom.xml

@ -4,8 +4,8 @@
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.yihu.hos</groupId>
    <artifactId>esb</artifactId>
    <version>1.1.1-SNAPSHOT</version>
    <artifactId>hos-admin</artifactId>
    <version>1.3.0</version>
    <packaging>war</packaging>
    <name>esb</name>
@ -13,7 +13,7 @@
    <parent>
        <groupId>com.yihu.hos</groupId>
        <artifactId>hos-web-framework-dependencies</artifactId>
        <version>1.1.1-SNAPSHOT</version>
        <version>1.3.0</version>
        <relativePath>/hos-web-framework-dependencies</relativePath> <!-- lookup parent from repository -->
    </parent>
@ -48,7 +48,7 @@
        <dependency>
            <groupId>com.yihu.hos</groupId>
            <artifactId>hos-web-framework</artifactId>
            <version>1.1.1-SNAPSHOT</version>
            <version>1.3.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
@ -133,8 +133,16 @@
            <artifactId>aspectjweaver</artifactId>
            <version>1.8.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-dbcp2</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20140107</version>
        </dependency>
    </dependencies>
    <build>

+ 2 - 2
src/main/java/com/yihu/hos/common/CollectHelper.java

@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.mongodb.BasicDBObject;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.gridfs.model.GridFSFile;
import com.mongodb.gridfs.GridFSDBFile;
import com.yihu.ehr.dbhelper.mongodb.MongodbHelper;
import com.yihu.hos.core.datatype.DateUtil;
import com.yihu.hos.core.file.FileUtil;
@ -116,7 +116,7 @@ public class CollectHelper {
                documentNode = objectMapper.createObjectNode();
                List files = (List) document.get("files_id");
                String cdaDocumentId = (String) document.get("cda_doc_id");
                List<GridFSFile> fs = GridFSUtil.findFsFiles(dbGridFS, files);
                List<GridFSDBFile> fs = GridFSUtil.findFsFiles(dbGridFS, files);
                String filePath = getDocumentDir(patient);
                Map<String, StringBuffer> map = GridFSUtil.downFileList("mydb", filePath, fs);//�����
                for (Map.Entry<String, StringBuffer> entry : map.entrySet()) {

+ 3 - 4
src/main/java/com/yihu/hos/config/MongoConfig.java

@ -1,12 +1,11 @@
package com.yihu.hos.config;
import com.mongodb.*;
import com.yihu.ehr.dbhelper.jdbc.DBConfig;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.core.MongoTemplate;
import static java.util.Collections.singletonList;

+ 0 - 198
src/main/java/com/yihu/hos/crawler/model/config/SysConfig.java

@ -1,198 +0,0 @@
package com.yihu.hos.crawler.model.config;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.crawler.model.patient.PatientIdentity;
import com.yihu.hos.crawler.model.patient.PatientIndex;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SysConfig {
    private static Logger logger = LoggerFactory.getLogger(SysConfig.class);
    public static final String HOS_RESOURCES_CONFIG = "/config/sys.config.xml";
    private static volatile SysConfig instance = null;
    private HashMap<String, PatientIdentity> patientIdentityHashMap;
    private Map<String, PatientIndex> patientIndexMap;//病人摘要信息内容
    private Map<String, String> publicKeyMap;
    private Map<String, String> versionMap;
    public static String tempFile;
    public static String orgcode;
    public static String registerDataSet;
    public static String registerIdCardNo;
    private SysConfig() {
        patientIdentityHashMap = new HashMap<>();
        patientIndexMap = new HashMap<>();
        publicKeyMap = new HashMap<>();
        versionMap = new HashMap<>();
        init();
    }
    public static SysConfig getInstance() {
        if (instance == null) {
            synchronized (SysConfig.class) {
                if (instance == null) {
                    try {
                        instance = new SysConfig();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return instance;
    }
    public void finalize() throws Throwable {
    }
    public String getTempFile() {
        return this.tempFile;
    }
    public void setTempFile(String tempFile) {
        this.tempFile = tempFile;
    }
    public PatientIdentity getPatientIdentity(String dataSetCode) {
        return patientIdentityHashMap.get(dataSetCode);
    }
    public HashMap<String, PatientIdentity> getPatientIdentityHashMap() {
        return patientIdentityHashMap;
    }
    public String getRegisterDataSet() {
        return registerDataSet;
    }
    public String getRegisterIdCardNo() {
        return registerIdCardNo;
    }
    public Map<String, PatientIndex> getPatientIndexMap() {
        return patientIndexMap;
    }
    public Map<String, String> getPublicKeyMap() {
        return publicKeyMap;
    }
    public Map<String, String> getVersionMap() {
        return versionMap;
    }
    public void setVersionMap(Map<String, String> versionMap) {
        this.versionMap = versionMap;
    }
    private Document getDocument() throws DocumentException {
        SAXReader reader = new SAXReader();
        Document document = null;
        try {
            InputStream inputStream = SysConfig.class.getResourceAsStream(HOS_RESOURCES_CONFIG);
            document = reader.read(inputStream);
            return document;
        } catch (DocumentException de) {
            logger.info("读取classpath下的xml文档路径发生异常");
            return null;
        }
    }
    private void init() {
        try {
            Document document = this.getDocument();
            Element rootElement = null;
            if (document != null) {
                rootElement = document.getRootElement();
            }
            if (rootElement == null) {
                return;
            }
            this.initCrawler(rootElement);
            this.initEventNo(rootElement);
            this.initVersion(rootElement);
//            this.initPatientIndex(rootElement);
        } catch (Exception e) {
            logger.error(e.getCause().toString());
        }
    }
    private void initVersion(Element rootElement){
        String tempFile = rootElement.elementTextTrim("temp_file");
        if (!StringUtil.isEmpty(tempFile)) {
            this.tempFile = tempFile;
        } else {
            String home = System.getProperty("catalina.home").replace('\\','/');
            String homeUrl = home.substring(0,home.lastIndexOf('/')+1);
            this.tempFile = homeUrl + "temp";
        }
        List queueDataSets = rootElement.element("ehr_version").elements("org_code");
        for (Object obj : queueDataSets) {
            if (obj instanceof Element) {
                Element element = (Element) obj;
                String dataSetCode = element.attributeValue("code");
                String version = element.elementTextTrim("version");
                String ehrVersion=new String(version);
                versionMap.put(dataSetCode,ehrVersion);
            }
        }
        Element registerDataSet = rootElement.element("register").element("dataset");
        this.registerDataSet = registerDataSet.attributeValue("code");
        this.registerIdCardNo = registerDataSet.elementTextTrim("id_card");
    }
    private void initCrawler(Element rootElement) {
        String tempFile = rootElement.elementTextTrim("temp_file");
        if (!StringUtil.isEmpty(tempFile)) {
            this.tempFile = tempFile;
        } else {
            String home = System.getProperty("catalina.home").replace('\\','/');
            String homeUrl = home.substring(0,home.lastIndexOf('/')+1);
            this.tempFile = homeUrl + "temp";
        }
        List queueDataSets = rootElement.element("patient_queue").elements("dataset");
        for (Object obj : queueDataSets) {
            if (obj instanceof Element) {
                Element element = (Element) obj;
                String dataSetCode = element.attributeValue("code");
                String eventNo = element.elementTextTrim("event_no");
                String refTime = element.elementTextTrim("ref_time");
                PatientIdentity patientIdentity = new PatientIdentity(eventNo, refTime);
                patientIdentityHashMap.put(dataSetCode, patientIdentity);
            }
        }
        Element registerDataSet = rootElement.element("register").element("dataset");
        this.registerDataSet = registerDataSet.attributeValue("code");
        this.registerIdCardNo = registerDataSet.elementTextTrim("id_card");
    }
    private void initEventNo(Element rootElement) {
        List eventItems = rootElement.element("event_no").elements("item");
        for (Object obj : eventItems) {
            if (obj instanceof Element) {
                Element element = (Element) obj;
                String eventNoCode = element.getTextTrim();
                PatientIdentity.addEventNoCode(eventNoCode);
            }
        }
    }
}//end SysConfig

+ 0 - 389
src/main/java/com/yihu/hos/crawler/service/EsbHttp.java

@ -1,389 +0,0 @@
package com.yihu.hos.crawler.service;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.core.encrypt.MD5;
import com.yihu.hos.core.http.HTTPResponse;
import com.yihu.hos.core.http.HttpClientKit;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.crawler.model.adapter.AdapterDataSet;
import com.yihu.hos.crawler.model.config.SysConfig;
import com.yihu.hos.crawler.model.patient.Patient;
import com.yihu.hos.crawler.model.transform.EhrCondition;
import com.yihu.hos.web.framework.constant.SqlConstants;
import org.json.JSONObject;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
import sun.misc.BASE64Encoder;
import java.io.File;
import java.util.*;
/**
 * Created by hzp on 2016/3/10.
 */
public class EsbHttp {
    public static String defaultHttpUrl;
    public static String clientId;
    public static String clientKey;
    public static String httpGateway;
    public static String defaultHttpUser;
    public static String defaultHttpPassword;
    public static String sslKeyStore;
    public static String sslPassword;
    private static Logger logger = LoggerFactory.getLogger(EsbHttp.class);
    static {
        //默认配置
        try {
            Resource resource = new ClassPathResource("config/http.properties");
            EncodedResource encRes = new EncodedResource(resource, "UTF-8");
            Properties props = PropertiesLoaderUtils.loadProperties(encRes);
            defaultHttpUrl = props.getProperty("httpUrl");
            defaultHttpUser = props.getProperty("httpUser");
            defaultHttpPassword = props.getProperty("httpPassword");
            clientId = props.getProperty("clientId");
            clientKey = props.getProperty("clientKey");
            sslKeyStore = props.getProperty("sslKeystore");
            sslPassword = props.getProperty("sslPassword");
        } catch (Exception e) {
            System.out.print(e.getMessage());
        }
    }
    /***************************** 用户接口 *********************************************/
    /**
     * 用户登录验证
     */
    public static HTTPResponse loginAction(String user, String password) throws Exception {
        String loginAction = defaultHttpUrl + "/authorizations/users/" + user;
        Map<String, String> header = new HashMap<>();
        String auth = new BASE64Encoder().encode((user + ":" + password).getBytes());
        header.put("Authorization", "Basic " + auth);
        return HttpClientKit.put(loginAction, null, header);
    }
    /*
    *   获取用户信息
    * */
    public static HTTPResponse getUserInfo(String user, String token) {
        String url = defaultHttpUrl + "/users/" + user;
        Map<String, String> params = new HashMap<>();
        params.put("token", token);
        params.put("user", user);
        return HttpClientKit.get(url, params);
    }
    /***************************** 应用接口 *********************************************/
    /**
     * 获取本机指纹
     *
     * @return
     */
    private static String GetFingerprint() {
        try {
            return UUID.randomUUID().toString();
        } catch (Exception e) {
            System.out.print(e.getMessage());
            return "";
        }
    }
    /**
     * 应用登录验证
     */
    public static String getToken() {
        try {
            String loginAction = defaultHttpUrl + "/authorizations/clients/" + clientId;
            Map<String, String> header = new HashMap<>();
            header.put("Authorization", "Basic " + clientKey);
            //本地指纹
            Map<String, String> params = new HashMap<>();
            params.put("info", "{\"fingerprint\": \"" + GetFingerprint() + "\"}");
            HTTPResponse response = HttpClientKit.put(loginAction, params, header);
            if (response != null && response.getStatusCode() == 200) {
                JSONObject obj = new JSONObject(response.getBody());
                //判断是否成功
                if (obj.has("token")) {
                    return obj.getString("token");
                } else {
                    logger.info("返回未包含token。");
                    return null;
                }
            } else {
                String msg = "获取Token失败。";
                if (response != null) {
                    msg += "(错误代码:" + response.getStatusCode() + ",错误信息:" + response.getBody() + ")";
                }
                logger.info(msg);
                return null;
            }
        } catch (Exception ex) {
            logger.info("获取Token失败," + ex.getMessage());
            return null;
        }
    }
    /**
     * 获取病人列表
     */
    public static String getPatientList(AdapterDataSet adapterDataSet, List<EhrCondition> queryParams) {
        try {
            ObjectMapper mapper = new ObjectMapper();
            ObjectNode paramsNode = mapper.createObjectNode();
            paramsNode.put("tableCode", adapterDataSet.getAdapterDataSetT().getStdDatasetCode());
            paramsNode.put("condition", mapper.writeValueAsString(queryParams));
            Map<String, String> formParams = new HashMap<>();
            formParams.put("api", "collectionData");
            String params = mapper.writeValueAsString(paramsNode);
            formParams.put("param", params);
            HTTPResponse response = HttpClientKit.post(httpGateway, formParams);
            if (response == null || response.getStatusCode() != 200) {
                logger.error("获取病人列表错误,请求HTTP错误,请检查配置或HTTP是否可用.");
                return "";
            }
            JsonNode responseNode = mapper.readValue(response.getBody(), JsonNode.class);
            String code = responseNode.path("responseCode").asText();
            if (StringUtil.isEmpty(code) || !code.equals("10000")) {
                logger.error("获取病人列表错误,请求HTTP错误,请检查集成平台网关是否可用.");
                return "";
            }
            String rootStr = responseNode.path("responseResult").asText();
            if ("".equals(rootStr)) {
                logger.error("获取病人列表错误,集成平台获取病人列表失败.");
                return "";
            }
            return rootStr;
        } catch (Exception e) {
            logger.error("获取病人列表失败!", e);
            return "";
        }
    }
    public static String getFecthData(Map<String, String> formParams) {
        try {
            HTTPResponse response = HttpClientKit.post(httpGateway, formParams);
            if (response == null || response.getStatusCode() != 200) {
                logger.info("获取病人数据错误,请求HTTP错误,请检查配置或HTTP是否可用.");
                return SqlConstants.EMPTY;
            }
            ObjectMapper mapper = new ObjectMapper();
            JsonNode responseNode = mapper.readValue(response.getBody(), JsonNode.class);
            String code = responseNode.path("responseCode").asText();
            if (StringUtil.isEmpty(code) || !code.equals("10000")) {
                logger.info("获取病人数据错误,请求HTTP错误,请检查集成平台网关是否可用.");
                return SqlConstants.EMPTY;
            }
            String rootStr = responseNode.path("responseResult").asText();
            if (SqlConstants.EMPTY.equals(rootStr)) {
                logger.info("获取病人数据错误,集成平台获取病人数据失败.");
                return SqlConstants.EMPTY;
            }
            return rootStr;
        } catch (Exception e) {
            logger.error("获取病人数据失败.", e);
            return SqlConstants.EMPTY;
        }
    }
    /**
     * 获取公钥
     */
    public static String getPublicKey(String orgCode) {
        try {
            String token = getToken();
            if (!StringUtil.isEmpty(SysConfig.getInstance().getPublicKeyMap().get(orgCode))) {
                return SysConfig.getInstance().getPublicKeyMap().get(orgCode);
            }
            Map<String, String> header = new HashMap<>();
            header.put("Authorization", "Basic " + clientKey);
            Map<String, String> paramMap = new HashMap<>();
            paramMap.put("org_code", orgCode);
            paramMap.put("token", token);
            String publicKeyMethod = defaultHttpUrl + "/organizations/" + orgCode + "/key";
            HTTPResponse response = HttpClientKit.get(publicKeyMethod, paramMap, header);
            if (response != null && response.getStatusCode() == 200) {
                JSONObject json = new JSONObject(response.getBody());
                if (json.has("publicKey")) {
                    String publicKey = json.getString("publicKey");
                    SysConfig.getInstance().getPublicKeyMap().put(orgCode, publicKey);
                    return publicKey;
                } else {
                    logger.info("获取公钥失败,返回未包含publicKey。");
                    return null;
                }
            } else {
                String msg = "获取公钥失败。";
                if (response != null) {
                    msg += "(错误代码:" + response.getStatusCode() + ",错误信息:" + response.getBody() + ")";
                }
                logger.info(msg);
                return null;
            }
        } catch (Exception e) {
            logger.info(e.getMessage());
            return null;
        }
    }
    /**
     * 获取健康云平台标准版本号
     */
    public static String getRemoteVersion(String orgCode) {
        try {
            String token = getToken();
            String versionMethod = defaultHttpUrl + "/adaptions/org_plan/version";
            Map<String, String> header = new HashMap<>();
            header.put("Authorization", "Basic " + clientKey);
            Map<String, String> params = new HashMap<>();
            params.put("org_code", orgCode);
            params.put("token", token);
            HTTPResponse response = HttpClientKit.get(versionMethod, params, header);
            if (response != null && response.getStatusCode() == 200) {
                return response.getBody();
            } else {
                String msg = "获取健康云平台标准版本号失败";
                if (response != null) {
                    msg += "(错误代码:" + response.getStatusCode() + ",错误信息:" + response.getBody() + ")";
                }
                logger.info(msg);
                return null;
            }
        } catch (Exception e) {
            logger.info("获取远程版本号异常");
            logger.error(e.getCause().toString());
            return null;
        }
    }
    /**
     * 注册病人
     */
    public static Boolean register(Patient patient, String data, String token) {
        try {
            JSONObject json = new JSONObject(data);
            String colName = SysConfig.registerIdCardNo;
            Map<String, String> header = new HashMap<>();
            header.put("Authorization", "Basic " + clientKey);
            header.put("User-Agent", "client " + clientId);
            if (json != null && json.has("data")) {
                JSONObject p = (JSONObject) json.getJSONArray("data").get(0);
                if (!p.has(colName) || StringUtil.isEmpty(p.get(colName))) {
                    logger.info("注册病人信息请求失败:身份证号码为空,patient_id=" + patient.getPatientId() + ", event_no=" + patient.getEventNo());
                    return false;
                } else {
                    String idCord = p.getString(colName);
                    String registerMethod = defaultHttpUrl + "/patients/" + idCord;
                    if (StringUtil.isEmpty(data)) {
                        logger.info("注册病人信息请求失败:无具体病人信息,patient_id=" + patient.getPatientId() + ", event_no=" + patient.getEventNo());
                        return false;
                    }
                    Map<String, String> paramMap = new HashMap<>();
                    paramMap.put("demographic_id", idCord);
                    paramMap.put("json", data);
                    paramMap.put("token", token);
                    HTTPResponse response = HttpClientKit.post(registerMethod, paramMap, header);
                    if (response != null && response.getStatusCode() == 200) {
                        logger.info("注册病人信息成功。patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo());
                        return true;
                    } else {
                        String msg = "注册病人信息请求失败。patient_id:" + patient.getPatientId() + ", event_no:" + patient.getEventNo();
                        if (response != null) {
                            msg += "(错误代码:" + response.getStatusCode() + ",错误信息:" + response.getBody() + ")";
                        }
                        logger.info(msg);
                        return false;
                    }
                }
            } else {
                logger.info("注册病人信息请求失败:传入数据无效,patient_id=" + patient.getPatientId() + ", event_no=" + patient.getEventNo());
                return false;
            }
        } catch (Exception e) {
            logger.info("注册病人信息请求失败." + e.getMessage());
            return false;
        }
    }
    /**
     * 上传病人档案
     */
    public static boolean upload(Patient patient, File file, String encryptPwd, String token) {
        try {
            String uploadMethod = defaultHttpUrl + "/packages";
            String fileMd5 = MD5.getMd5ByFile(file);
            Map<String, String> formParams = new HashMap<>();
            formParams.put("md5", fileMd5);
            formParams.put("package_crypto", encryptPwd);
            formParams.put("org_code", patient.getOrgCode());
            formParams.put("token", token);
            Map<String, String> header = new HashMap<>();
            header.put("Authorization", "Basic " + clientKey);
            header.put("User-Agent", "client " + clientId);
            HTTPResponse response = HttpClientKit.postFile(uploadMethod, file.getAbsolutePath(), formParams, header);
            if (response != null && response.getStatusCode() == 200) {
                logger.info("上传病人档案成功,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo());
                return true;
            } else {
                String msg = "上传病人档案请求失败,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo();
                if (response != null) {
                    msg += "(错误代码:" + response.getStatusCode() + ",错误信息:" + response.getBody() + ")";
                }
                logger.info(msg);
                return false;
            }
        } catch (Exception e) {
            logger.info("上传病人档案异常,patient_id:" + patient.getPatientId() + ",event_no:" + patient.getEventNo());
            logger.error(e.getCause().toString());
            return false;
        }
    }
    /**
     * 下载标准包
     */
    public static HTTPResponse download(String remoteVersion, String orgCode) {
        try {
            String token = getToken();
            String downLoadMethod = defaultHttpUrl + "/adaptions/" + orgCode + "/source";
            Map<String, String> params = new HashMap<>();
            params.put("version_code", remoteVersion);
            params.put("org_code", orgCode);
            params.put("token", token);
            Map<String, String> header = new HashMap<>();
            header.put("Authorization", "Basic " + clientKey);
            HTTPResponse response = HttpClientKit.get(downLoadMethod, params, header);
            return response;
        } catch (Exception e) {
            logger.info("下载标准包异常:");
            logger.error(e.getCause().toString());
            return null;
        }
    }
}

+ 8 - 35
src/main/java/com/yihu/hos/datacollect/controller/DataCollectController.java

@ -5,11 +5,10 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
import com.yihu.hos.common.Services;
import com.yihu.hos.core.datatype.CollectionUtil;
import com.yihu.hos.datacollect.model.RsJobConfig;
import com.yihu.hos.datacollect.service.intf.IDatacollectManager;
import com.yihu.hos.datacollect.service.intf.IDatacollectService;
import com.yihu.hos.resource.service.IStdService;
import com.yihu.hos.datacollect.service.DatacollectManager;
import com.yihu.hos.resource.service.StdService;
import com.yihu.hos.standard.service.adapter.AdapterSchemeService;
import com.yihu.hos.system.service.intf.IDatasourceManager;
import com.yihu.hos.system.service.DatasourceManager;
import com.yihu.hos.web.framework.constant.DateConvert;
import com.yihu.hos.web.framework.model.ActionResult;
import com.yihu.hos.web.framework.model.Result;
@ -36,16 +35,13 @@ import java.util.*;
public class DataCollectController extends BaseController {
    @Resource(name = Services.Datacollect)
    IDatacollectManager datacollect;
    DatacollectManager datacollect;
    @Resource(name = Services.DatacollectService)
    IDatacollectService datacollectService;
    @Resource(name = Services.StdService)
    IStdService stdService;
    @Resource(name = StdService.BEAN_ID)
    StdService stdService;
    @Resource(name = Services.Datasource)
    IDatasourceManager datasource;
    DatasourceManager datasource;
    @Resource(name = AdapterSchemeService.BEAN_ID)
    private AdapterSchemeService adapterSchemeService;
@ -407,30 +403,7 @@ public class DataCollectController extends BaseController {
    @RequestMapping("repeat")
    @ResponseBody
    public Result repeat(String ids) {
        try {
            if (ids.length() > 0) {
                String[] logId = ids.split(",");
                if (logId.length == 1) {
                    return datacollectService.repeatJob(ids);
                } else {
                    StringBuilder str = new StringBuilder();
                    for (String id : logId) {
                        ActionResult re = datacollectService.repeatJob(id);
                        if (re.isSuccessFlg()) {
                            str.append(id + "补采成功!\n");
                        } else {
                            str.append(id + "补采失败!\n");
                        }
                    }
                    return Result.success(str.toString());
                }
            } else {
                return Result.error("非法操作!");
            }
        } catch (Exception ex) {
            return Result.error(ex.getMessage());
        }
        return Result.error("非法操作!");
    }
    /*************************** 任务跟踪 ***********************************/

+ 0 - 41
src/main/java/com/yihu/hos/datacollect/controller/DataPushController.java

@ -1,41 +0,0 @@
package com.yihu.hos.datacollect.controller;
import com.yihu.hos.datacollect.service.intf.IDatapushService;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * 数据采集配置页面
 * Created by hzp on 2015/8/12.
 */
@RequestMapping("/datapush")
@Controller("dataPushController")
public class DataPushController extends BaseController {
    @Autowired
    IDatapushService datapushService;
    /**************************** 推送数据 ************************************************/
    /*
    全流程推数据
     */
    @RequestMapping("datapush")
    @ResponseBody
    public Result datapush(String dataset,String data,String orgCode) {
        try {
            return datapushService.pushData(dataset, data,orgCode);
        }
        catch (Exception ex)
        {
            return Result.error(ex.getMessage());
        }
    }
}

+ 12 - 12
src/main/java/com/yihu/hos/datacollect/dao/DatacollectDao.java

@ -1,11 +1,9 @@
package com.yihu.hos.datacollect.dao;
import com.yihu.hos.datacollect.dao.intf.IDatacollectDao;
import com.yihu.hos.datacollect.model.DtoJobDataset;
import com.yihu.hos.datacollect.model.RsJobDataset;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.constant.DateConvert;
import com.yihu.hos.resource.model.RsDatasourceDataset;
import com.yihu.hos.web.framework.constant.DateConvert;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.web.framework.model.DataGridResult;
import com.yihu.hos.web.framework.model.SimpleChartItem;
@ -21,12 +19,14 @@ import java.util.Map;
 * Created by hzp on 2016/1/11.
 */
@Repository("DatacollectDao")
public class DatacollectDao extends SQLGeneralDAO implements IDatacollectDao {
public class DatacollectDao extends SQLGeneralDAO {
    public static final String BEAN_ID = "DatacollectDao";
    /**
     * 通过机构代码获取版本号
     */
    @Override
    
    public String getVersionByQLC(String orgCode) throws Exception
    {
        try{
@ -45,7 +45,7 @@ public class DatacollectDao extends SQLGeneralDAO implements IDatacollectDao {
    /**
     * 根据JobId获取Cron表达式
     */
    @Override
    
    public String getCronByJobId(String jobId)
    {
        try{
@ -62,7 +62,7 @@ public class DatacollectDao extends SQLGeneralDAO implements IDatacollectDao {
     * 获取任务列表
     * @return
     */
    @Override
    
    public DataGridResult getJobList(Map<String, Object> conditionMap, Integer page, Integer pageSize) throws Exception
    {
        StringBuilder sb = new StringBuilder();
@ -81,7 +81,7 @@ public class DatacollectDao extends SQLGeneralDAO implements IDatacollectDao {
     * @return
     * @throws Exception
     */
    @Override
    
    public List<RsJobDataset> getJobDataset(String jobId) throws Exception
    {
        String sql = "select * from rs_job_dataset where job_id='"+jobId+"'";
@ -92,7 +92,7 @@ public class DatacollectDao extends SQLGeneralDAO implements IDatacollectDao {
    /**
     * 获取版本名称
     */
    @Override
    
    public String getSchemeAndVersion(String schemeVersionId) throws Exception
    {
        String sql = "select IFNULL( (select  CONCAT_WS(' -- ',s.name,v.name)  from adapter_scheme_version v " +
@ -104,7 +104,7 @@ public class DatacollectDao extends SQLGeneralDAO implements IDatacollectDao {
    /**
     * 修改任务状态
     */
    @Override
    
    public void validJob(String id,String valid) throws Exception
    {
        String sql = "update rs_job_config set valid='"+valid+"' where Id='"+id+"'";
@ -174,7 +174,7 @@ public class DatacollectDao extends SQLGeneralDAO implements IDatacollectDao {
    /**
     * 获取任务详细日志列表
     */
    @Override
    
    public DataGridResult getJobLogDetail(Map<String, Object> conditionMap, Integer page, Integer pageSize) throws Exception
    {
        StringBuilder sb = new StringBuilder();
@ -212,7 +212,7 @@ public class DatacollectDao extends SQLGeneralDAO implements IDatacollectDao {
    /**
     * 获取任务日志列表
     */
    @Override
    
    public DataGridResult getJobLog(Map<String, Object> conditionMap, Integer page, Integer pageSize) throws Exception
    {
        StringBuilder sb = new StringBuilder();

+ 4 - 6
src/main/java/com/yihu/hos/datacollect/dao/DatacollectLogDao.java

@ -1,6 +1,5 @@
package com.yihu.hos.datacollect.dao;
import com.yihu.hos.datacollect.dao.intf.IDatacollectLogDao;
import com.yihu.hos.datacollect.model.RsDatapushLog;
import com.yihu.hos.web.framework.constant.DateConvert;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
@ -16,14 +15,14 @@ import java.util.Map;
 * Created by hzp on 2016/1/11.
 */
@Repository("DatacollectLogDao")
public class DatacollectLogDao extends SQLGeneralDAO implements IDatacollectLogDao {
public class DatacollectLogDao extends SQLGeneralDAO {
    public static final String BEAN_ID = "DatacollectLogDao";
    /**
     * 修改轮询字段
     */
    @Override
    
    public void updateJobDatasetKeyvalue(String id,String jobDatasetKeyvalue) throws Exception
    {
        String sql = "update rs_job_dataset set job_dataset_keyvalue='"+jobDatasetKeyvalue+"' where id='"+id+"'";
@ -34,7 +33,7 @@ public class DatacollectLogDao extends SQLGeneralDAO implements IDatacollectLogD
    /**
     * 推数据新增日志
     */
    @Override
    
    public void addDataPushLog(String type,String success,String content) throws Exception
    {
        RsDatapushLog log = new RsDatapushLog();
@ -48,7 +47,6 @@ public class DatacollectLogDao extends SQLGeneralDAO implements IDatacollectLogD
    /**
     * 获取日志列表
     */
    @Override
    public DataGridResult queryDataPushLog(Map<String, Object> conditionMap, Integer page, Integer pageSize) throws Exception
    {
        StringBuilder sb = new StringBuilder();

+ 0 - 92
src/main/java/com/yihu/hos/datacollect/dao/intf/IDatacollectDao.java

@ -1,92 +0,0 @@
package com.yihu.hos.datacollect.dao.intf;
import com.yihu.hos.datacollect.model.DtoJobDataset;
import com.yihu.hos.datacollect.model.RsJobDataset;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import com.yihu.hos.web.framework.model.DataGridResult;
import com.yihu.hos.web.framework.model.SimpleChartItem;
import com.yihu.hos.resource.model.RsDatasourceDataset;
import java.util.List;
import java.util.Map;
/**
 * Created by hzp on 2016/1/11.
 */
public interface IDatacollectDao extends XSQLGeneralDAO {
    /**
     * 通过机构代码获取版本号
     */
    public String getVersionByQLC(String orgCode) throws Exception;
    /**
     * 根据JobId获取Cron表达式
     */
    public String getCronByJobId(String jobId);
    /**
     * 获取任务列表
     * @return
     */
    public DataGridResult getJobList(Map<String, Object> conditionMap, Integer page, Integer pageSize) throws Exception;
    /**
     * 获取任务数据集
     * @return
     * @throws Exception
     */
    public List<RsJobDataset> getJobDataset(String jobId) throws Exception;
    /**
     * 获取版本名称
     */
    public String getSchemeAndVersion(String schemeVersionId) throws Exception;
    /**
     * 修改任务状态
     */
    public void validJob(String id, String valid) throws Exception;
    /**
     * 删除任务关联数据集
     */
    public void deleteJobDatasetByJobId(String jobId) throws Exception;
    /**
     * 通过版本获取配置的数据集--数据源
     * @throws Exception
     */
    public List<RsDatasourceDataset> getDatasourceDataset(String stdVersion) throws Exception;
    /**
     * 删除数据集数据源关联
     */
    public void deleteDatasourceDatasetById(String id) throws Exception;
    /**
     * 通过任务ID获取相关数据集
     */
    public List<DtoJobDataset> getDatacollectDataset(String jobId) throws Exception;
    /**
     * 获取任务日志列表
     */
    public DataGridResult getJobLogDetail(Map<String, Object> conditionMap, Integer page, Integer pageSize) throws Exception;
    /**
     * 获取任务日志列表
     */
    public DataGridResult getJobLog(Map<String, Object> conditionMap, Integer page, Integer pageSize) throws Exception;
    /**
     * 获取采集日志统计
     */
    public List<Map<String, Object>> getJobLogCount(String logId) throws Exception;
    /**
     * 任务详细根据数据集分组
     */
    public List<SimpleChartItem> getJobLogDataset(String logId) throws Exception;
}

+ 0 - 29
src/main/java/com/yihu/hos/datacollect/dao/intf/IDatacollectLogDao.java

@ -1,29 +0,0 @@
package com.yihu.hos.datacollect.dao.intf;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import com.yihu.hos.web.framework.model.DataGridResult;
import java.util.Map;
/**
 * 采集日志
 * Created by hzp on 2016/1/26.
 */
public interface IDatacollectLogDao extends XSQLGeneralDAO {
    /**
     * 修改
     */
    void updateJobDatasetKeyvalue(String id, String jobDatasetKeyvalue) throws Exception;
    /**
     * 推数据新增日志
     */
    void addDataPushLog(String type,String success,String content) throws Exception;
    /**
     * 获取日志列表
     */
    DataGridResult queryDataPushLog(Map<String, Object> conditionMap, Integer page, Integer pageSize) throws Exception;
}

+ 27 - 25
src/main/java/com/yihu/hos/datacollect/service/DatacollectManager.java

@ -5,16 +5,17 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.hos.common.Services;
import com.yihu.hos.datacollect.dao.intf.IDatacollectDao;
import com.yihu.hos.datacollect.dao.DatacollectDao;
import com.yihu.hos.datacollect.model.*;
import com.yihu.hos.datacollect.service.intf.IDatacollectManager;
import com.yihu.hos.resource.model.RsDatasourceDataset;
import com.yihu.hos.resource.service.IStdService;
import com.yihu.hos.resource.service.StdService;
import com.yihu.hos.standard.model.adapter.AdapterDatasetModel;
import com.yihu.hos.standard.model.standard.StdDataSetModel;
import com.yihu.hos.system.service.FlowManager;
import com.yihu.hos.system.service.intf.IFlowManage;
import com.yihu.hos.web.framework.model.*;
import com.yihu.hos.web.framework.model.ActionResult;
import com.yihu.hos.web.framework.model.DataGridResult;
import com.yihu.hos.web.framework.model.DictItem;
import com.yihu.hos.web.framework.model.SimpleChartItem;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.beans.BeanUtils;
@ -28,16 +29,18 @@ import java.util.List;
import java.util.Map;
@Service(Services.Datacollect)
public class DatacollectManager implements IDatacollectManager {
public class DatacollectManager{
    @Resource(name = "DatacollectDao")
    private IDatacollectDao datacollectDao;
    public static final String BEAN_ID = Services.Datacollect;
    @Resource(name = Services.StdService)
    private IStdService stdManager;
    @Resource(name = DatacollectDao.BEAN_ID)
    private DatacollectDao datacollectDao;
    @Resource(name = StdService.BEAN_ID)
    private StdService stdManager;
    @Resource(name = FlowManager.BEAN_ID)
    private IFlowManage flowManage;
    private FlowManager flowManage;
    @Autowired
    private ObjectMapper objectMapper;
@ -49,7 +52,6 @@ public class DatacollectManager implements IDatacollectManager {
    /**
     * 根据JobId获取Cron表达式
     */
    @Override
    public String getCronByJobId(String jobId) throws Exception {
        return datacollectDao.getCronByJobId(jobId);
    }
@ -59,7 +61,7 @@ public class DatacollectManager implements IDatacollectManager {
     *
     * @return
     */
    @Override
    public RsJobConfig getJobById(String id) throws Exception {
        return datacollectDao.getEntity(RsJobConfig.class, id);
    }
@ -67,7 +69,7 @@ public class DatacollectManager implements IDatacollectManager {
    /**
     * 获取任务列表
     */
    @Override
    public DataGridResult getJobList(Map<String, Object> conditionMap, int page, int rows) throws Exception {
        DataGridResult re = datacollectDao.getJobList(conditionMap, page, rows);
        //获取任务列表
@ -118,7 +120,7 @@ public class DatacollectManager implements IDatacollectManager {
    /**
     * 根据适配方案获取数据集列表
     */
    @Override
    public DataGridResult getSchemeDataset(String schemeId, String schemeVersion, String jobId) throws Exception {
        //获取适配数据集总和
        List<AdapterDatasetModel> datasetString = stdManager.getDatasetByScheme(schemeVersion);
@ -170,7 +172,7 @@ public class DatacollectManager implements IDatacollectManager {
    /**
     * 根据适配方案获取字段列表
     */
    @Override
    public DataGridResult getSchemeDatasetCol(String schemeId, String schemeVersion, String datasetId) throws Exception {
        //获取适配字段
        List datacolString = stdManager.getDatacolByScheme(schemeVersion, datasetId);
@ -197,7 +199,7 @@ public class DatacollectManager implements IDatacollectManager {
    /**
     * 根据任务Id获取相关数据集下拉数据
     */
    @Override
    public DataGridResult getJobDatasetByJobId(String jobId) throws Exception {
        //获取任务数据集
        List<RsJobDataset> jobDataset = datacollectDao.getJobDataset(jobId);
@ -218,7 +220,7 @@ public class DatacollectManager implements IDatacollectManager {
    /**
     * 新增任务
     */
    @Override
    @Transactional
    public ActionResult addJob(RsJobConfig obj, String cron, String jobDataset) throws Exception {
        datacollectDao.saveEntity(obj);//保存任务
@ -242,7 +244,7 @@ public class DatacollectManager implements IDatacollectManager {
    /**
     * 修改任务
     */
    @Override
    @Transactional
    public ActionResult updateJob(RsJobConfig obj, String cron, String jobDataset) throws Exception {
        Integer flowId = flowManage.updateCamelFile(obj.getFlowTempId(), obj.getFlowId(), cron);
@ -262,7 +264,7 @@ public class DatacollectManager implements IDatacollectManager {
    /**
     * 修改任务
     */
    @Override
    @Transactional
    public ActionResult updateJob(RsJobConfig obj) throws Exception {
        datacollectDao.updateEntity(obj);
@ -307,7 +309,7 @@ public class DatacollectManager implements IDatacollectManager {
    /**
     * 数据集数据源管理列表(包含全部数据集)
     */
    @Override
    public DataGridResult getDatasetSource(String stdVersion) throws Exception {
        //获取版本下全部数据集
        List<StdDataSetModel> stdDataSetModelList = stdManager.getDatasetByVersion(stdVersion);
@ -345,7 +347,7 @@ public class DatacollectManager implements IDatacollectManager {
    /**
     * 保存数据集数据源配置
     */
    @Override
    @Transactional
    public ActionResult saveDatasetSource(String json) throws Exception {
        //TODO: Use jackson
@ -384,7 +386,7 @@ public class DatacollectManager implements IDatacollectManager {
    /**
     * 获取任务详细日志列表
     */
    @Override
    public DataGridResult getJobLogDetail(Map<String, Object> conditionMap, int page, int rows) throws Exception {
        return datacollectDao.getJobLogDetail(conditionMap, page, rows);
    }
@ -392,7 +394,7 @@ public class DatacollectManager implements IDatacollectManager {
    /**
     * 获取任务日志列表
     */
    @Override
    public DataGridResult getJobLog(Map<String, Object> conditionMap, int page, int rows) throws Exception {
        DataGridResult re = datacollectDao.getJobLog(conditionMap, page, rows);
@ -430,7 +432,7 @@ public class DatacollectManager implements IDatacollectManager {
     *
     * @return
     */
    @Override
    public DataGridResult getJobLogDataset(String logId) throws Exception {
        DataGridResult re = new DataGridResult();
        List<SimpleChartItem> maps = datacollectDao.getJobLogDataset(logId);

+ 14 - 16
src/main/java/com/yihu/hos/datacollect/service/DatacollectService.java

@ -15,12 +15,10 @@ import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.crawler.model.config.SysConfig;
import com.yihu.hos.crawler.model.patient.PatientIdentity;
import com.yihu.hos.datacollect.dao.intf.IDatacollectDao;
import com.yihu.hos.datacollect.dao.intf.IDatacollectLogDao;
import com.yihu.hos.datacollect.dao.DatacollectDao;
import com.yihu.hos.datacollect.dao.DatacollectLogDao;
import com.yihu.hos.datacollect.model.*;
import com.yihu.hos.datacollect.service.intf.IDatacollectManager;
import com.yihu.hos.datacollect.service.intf.IDatacollectService;
import com.yihu.hos.resource.service.IStdService;
import com.yihu.hos.resource.service.StdService;
import com.yihu.hos.web.framework.constant.DateConvert;
import com.yihu.hos.web.framework.constant.SqlConstants;
import com.yihu.hos.web.framework.model.ActionResult;
@ -46,20 +44,22 @@ import java.util.*;
 * 数据采集执行服务
 */
@Service(Services.DatacollectService)
public class DatacollectService implements IDatacollectService {
public class DatacollectService  {
    static private final Logger logger = LoggerFactory.getLogger(DatacollectService.class);
    public static final String BEAN_ID = Services.DatacollectService;
    MongodbHelper mongoOrigin = new MongodbHelper("origin");
    MongodbHelper mongo = new MongodbHelper();
    String dateFormat = "yyyy-MM-dd HH:mm:ss"; //默认时间字符串格式
    int maxNum = 1000; //查询条数限制
    @Resource(name = Services.Datacollect)
    private IDatacollectManager datacollect;
    @Resource(name = Services.StdService)
    private IStdService stdService;
    @Resource(name = "DatacollectDao")
    private IDatacollectDao datacollectDao;
    @Resource(name = "DatacollectLogDao")
    private IDatacollectLogDao datacollectLogDao;
    private DatacollectManager datacollect;
    @Resource(name = StdService.BEAN_ID)
    private StdService stdService;
    @Resource(name = DatacollectDao.BEAN_ID)
    private DatacollectDao datacollectDao;
    @Resource(name = DatacollectLogDao.BEAN_ID)
    private DatacollectLogDao datacollectLogDao;
    @Autowired
    private ObjectMapper objectMapper;
@ -81,7 +81,6 @@ public class DatacollectService implements IDatacollectService {
    /**
     * 执行任务
     */
    @Override
    public void executeJob(String jobId) throws Exception {
        //获取任务详细信息
@ -162,7 +161,6 @@ public class DatacollectService implements IDatacollectService {
    /**
     * 根据日志详细补采数据
     */
    @Override
    @Transactional
    public ActionResult repeatJob(String id) throws Exception {
        RsJobLogDetail log = datacollectLogDao.getEntity(RsJobLogDetail.class, id);
@ -970,7 +968,7 @@ public class DatacollectService implements IDatacollectService {
                        params.put("patient_id",patientId);
                        params.put("event_no",eventNo);
                        try {
                            ObjectId objectId = GridFSUtil.uploadFile("files", blob, type, params);
                            ObjectId objectId = GridFSUtil.uploadFile( blob, type, params);
                            jsonObject.put("CONTENT", objectId);
                        } catch (Exception e) {
                            e.printStackTrace();

+ 0 - 171
src/main/java/com/yihu/hos/datacollect/service/DatapushService.java

@ -1,171 +0,0 @@
package com.yihu.hos.datacollect.service;
import com.yihu.ehr.dbhelper.mongodb.MongodbHelper;
import com.yihu.hos.common.Services;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.datacollect.dao.intf.IDatacollectDao;
import com.yihu.hos.datacollect.dao.intf.IDatacollectLogDao;
import com.yihu.hos.datacollect.service.intf.IDatapushService;
import com.yihu.hos.resource.service.IStdService;
import com.yihu.hos.standard.model.adapter.AdapterDatasetModel;
import com.yihu.hos.standard.model.adapter.resultModel.AdapterMetadataResultDetailModel;
import com.yihu.hos.web.framework.model.ActionResult;
import com.yihu.hos.web.framework.model.Result;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
/**
 * 推数据服务
 */
@Service(Services.DatapushService)
public class DatapushService implements IDatapushService {
    static private final Logger logger = LoggerFactory.getLogger(DatapushService.class);
    @Autowired
    private IDatacollectDao datacollect;
    @Autowired
    private IDatacollectLogDao datacollectLog;
    @Autowired
    private IStdService stdService;
    MongodbHelper mongo = new MongodbHelper();
    /**
     * 转译字典
     */
    private String translateDictValue(String oldValue,String type,JSONArray dictAdapterList) throws Exception
    {
        //应用标准字段
        String colName = "adapterEntryCode";
        if(type.equals("0")) //通过name转译
        {
            colName = "adapterEntryValue";
        }
        //遍历字典数据
        for(int i=0; i< dictAdapterList.length();i++)
        {
            JSONObject dictItem = dictAdapterList.getJSONObject(i);
            if(oldValue.equals(dictItem.getString(colName)))
            {
                String newValue = dictItem.getString("stdEntryCode");
                return newValue;
            }
        }
        return oldValue;
    }
    /*****************************************************************************************************/
    /**
     * 数据入库
     */
    @Override
    @Transactional
    public Result pushData(String datasetCode,String dataString,String orgCode) throws Exception
    {
        //机构标准版本
        String version = datacollect.getVersionByQLC(orgCode);
        //通过标准数据集名称获取适配关系
        AdapterDatasetModel dataset = stdService.getDatasetByCode(version,datasetCode);
        String msg = "";
        if(dataset!=null)
        {
            String datasetId = dataset.getAdapterDatasetId().toString();
            List<AdapterMetadataResultDetailModel> list = stdService.getDatacolByScheme(version,datasetId);
            if(list!=null && list.size()>0)
            {
                JSONArray array = new JSONArray(dataString);
                List<JSONObject> dataList = new ArrayList<>();
                if(array!=null && array.length()>0)
                {
                    for (int i=0;i<array.length();i++)
                    {
                        JSONObject obj = new JSONObject();
                        JSONObject data = (JSONObject)array.get(i);
                        //标准转换
                        for(AdapterMetadataResultDetailModel metadata : list)
                        {
                            String stdColName = metadata.getStdMetadataCode();
                            String adapterColName = metadata.getAdapterMetadataCode();
                            if(data.has(adapterColName))
                            {
                                String val = data.optString(adapterColName);
                                String newValue =val;
                                //判断是否字典
                                if(metadata.getStdDictId()!=null&&metadata.getStdDictId()!=0)
                                {
                                    //获取字典列表
                                    List dictString = stdService.getDictByScheme(version,metadata.getStdDictId().toString());
                                    JSONArray dictAdapterArray = new JSONArray(dictString);
                                    String type = "";
                                    if(metadata.getAdapterDataType()!=null)
                                    {
                                        type = metadata.getAdapterDataType().toString();
                                    }
                                    newValue = translateDictValue(val,type,dictAdapterArray);
                                }
                                obj.put(stdColName,newValue);
                            }
                        }
                        //org_code字段
                        obj.put("RSCOM_ORG_CODE",orgCode);
                        dataList.add(obj);
                    }
                }
                //MongoDB入库
                boolean b = mongo.insert(datasetCode,dataList);
                if(!b)
                {
                    if(mongo.errorMessage!=null && mongo.errorMessage.length()>0)
                    {
                        logger.debug(mongo.errorMessage);
                        msg = "Mongodb保存失败!(表:"+datasetCode+",数据:"+dataString+")"+mongo.errorMessage;
                    }
                    else {
                        msg ="Mongodb保存失败!(表:"+datasetCode+",数据:"+dataString+")";
                    }
                }
            }
        }
        else{
            msg ="适配标准不完善!";
        }
        //是否成功
        if(msg.length()>0)
        {
            //日志记录
            datacollectLog.addDataPushLog("1","0",msg);
            return ActionResult.error(msg);
        }
        else{
            msg = "数据入库成功!(表:"+datasetCode+")";
            //日志记录
            datacollectLog.addDataPushLog("1","1",msg);
            return ActionResult.success(msg);
        }
    }
}

+ 0 - 96
src/main/java/com/yihu/hos/datacollect/service/intf/IDatacollectManager.java

@ -1,96 +0,0 @@
package com.yihu.hos.datacollect.service.intf;
import com.yihu.hos.web.framework.model.ActionResult;
import com.yihu.hos.datacollect.model.RsJobConfig;
import com.yihu.hos.web.framework.model.DataGridResult;
import java.util.Map;
/**
 * Created by hzp on 2015/12/25.
 */
public interface IDatacollectManager {
    /**
     * 根据JobId获取Cron表达式
     */
    public String getCronByJobId(String jobId) throws Exception;
    /**
     * 根据ID获取任务详细
     * @return
     */
    public RsJobConfig getJobById(String id) throws Exception;
    /**
     * 获取任务列表
     */
    public DataGridResult getJobList(Map<String, Object> conditionMap, int page, int rows) throws Exception;
    /**
     * 根据适配方案获取数据集列表
     */
    public DataGridResult getSchemeDataset(String schemeId, String schemeVersion, String jobId) throws Exception;
    /**
     * 根据适配方案获取字段列表
     */
    public DataGridResult getSchemeDatasetCol(String schemeId, String schemeVersion, String datasetId) throws Exception;
    /**
     * 根据任务Id获取相关数据集下拉数据
     */
    public DataGridResult getJobDatasetByJobId(String jobId) throws Exception;
    /**
     * 新增任务
     */
    public ActionResult addJob(RsJobConfig obj, String cron, String jobDataset) throws Exception;
    /**
     * 修改任务
     */
    public ActionResult updateJob(RsJobConfig obj, String cron, String jobDataset) throws Exception;
    /**
     * 修改任务
     */
    public ActionResult updateJob(RsJobConfig obj) throws Exception;
    /**
     * 删除任务
     */
    public ActionResult deleteJob(String id) throws Exception;
    /**
     * 修改任务状态
     */
    public ActionResult validJob(String jobId, String valid) throws Exception;
    /**
     * 数据集数据源管理列表(包含全部数据集)
     */
    public DataGridResult getDatasetSource(String stdVersion) throws Exception;
    /**
     * 保存数据集数据源配置
     */
    public ActionResult saveDatasetSource(String json) throws Exception;
    /**
     * 获取任务日志列表
     */
    public DataGridResult getJobLogDetail(Map<String, Object> conditionMap, int page, int rows) throws Exception;
    /**
     * 获取任务日志列表
     */
    public DataGridResult getJobLog(Map<String, Object> conditionMap, int page, int rows) throws Exception;
    /**
     * 任务详细根据数据集分组
     */
    public DataGridResult getJobLogDataset(String logId) throws Exception;
}

+ 0 - 20
src/main/java/com/yihu/hos/datacollect/service/intf/IDatacollectService.java

@ -1,20 +0,0 @@
package com.yihu.hos.datacollect.service.intf;
import com.yihu.hos.web.framework.model.ActionResult;
/**
 * Created by hzp on 2015/12/25.
 */
public interface IDatacollectService {
    /**
     * 执行任务
     */
    public void executeJob(String jobId) throws Exception;
    /**
     * 根据日志详细补采数据
     */
    public ActionResult repeatJob(String id) throws Exception;
}

+ 0 - 15
src/main/java/com/yihu/hos/datacollect/service/intf/IDatapushService.java

@ -1,15 +0,0 @@
package com.yihu.hos.datacollect.service.intf;
import com.yihu.hos.web.framework.model.Result;
/**
 * Created by hzp on 2016/4/14.
 */
public interface IDatapushService {
    /**
     * 数据入库
     */
    Result pushData(String dataset,String data,String orgCode) throws Exception;
}

+ 63 - 0
src/main/java/com/yihu/hos/monitor/controller/ServiceMonitorController.java

@ -1,6 +1,7 @@
package com.yihu.hos.monitor.controller;
import com.yihu.hos.monitor.service.ServiceMonitorService;
import com.yihu.hos.system.service.FlowManager;
import com.yihu.hos.web.framework.model.Result;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
@ -27,6 +28,8 @@ public class ServiceMonitorController {
    @Resource(name = ServiceMonitorService.BEAN_ID)
    private ServiceMonitorService monitorService;
    @Resource(name = FlowManager.BEAN_ID)
    private FlowManager flowManager;
    //跳转到列表页
    @RequestMapping("/initial")
@ -65,4 +68,64 @@ public class ServiceMonitorController {
            return Result.error("获取服务树列表失败");
        }
    }
    @RequestMapping(value = "/serviceStatus", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "服务状态", produces = "application/json", notes = "服务状态获取")
    public Result serviceStatus(
            HttpServletRequest request,
            @ApiParam(name = "routeCode", value = "流程Code", required = true)
            @RequestParam(value = "routeCode") Integer routeCode ) {
        try {
            boolean succ = flowManager.serviceOpenOrPause(routeCode,0);
            if (succ){
                return Result.success("获取服务状态成功");
            }else {
                return Result.error("获取服务状态失败");
            }
        } catch (Exception e) {
            return Result.error("获取服务状态异常");
        }
    }
    @RequestMapping(value = "/startService", method = RequestMethod.POST)
    @ResponseBody
    @ApiOperation(value = "开启服务", produces = "application/json", notes = "开启服务")
    public Result startService(
            HttpServletRequest request,
            @ApiParam(name = "flowId", value = "流程ID", required = true)
            @RequestParam(value = "flowId") Integer flowId ) {
        try {
            boolean succ = flowManager.serviceOpenOrPause(flowId,1);
            if (succ){
                return Result.success("开启服务成功");
            }else {
                return Result.error("开启服务失败");
            }
        } catch (Exception e) {
            return Result.error("开启服务异常");
        }
    }
    @RequestMapping(value = "/stopService", method = RequestMethod.POST)
    @ResponseBody
    @ApiOperation(value = "暂停服务", produces = "application/json", notes = "暂停服务")
    public Result stopService(
            HttpServletRequest request,
            @ApiParam(name = "flowId", value = "流程ID", required = true)
            @RequestParam(value = "flowId") Integer flowId ) {
        try {
            boolean succ = flowManager.serviceOpenOrPause(flowId,0);
            if (succ){
                return Result.success("暂停服务成功");
            }else {
                return Result.error("暂停服务失败");
            }
        } catch (Exception e) {
            return Result.error("暂停服务异常");
        }
    }
}

+ 5 - 0
src/main/java/com/yihu/hos/monitor/dao/ServiceMonitorDao.java

@ -34,4 +34,9 @@ public class ServiceMonitorDao extends SQLGeneralDAO {
    public SystemServiceEndpoint getEndpointById(String id) throws Exception {
        return (SystemServiceEndpoint) super.hibernateTemplate.find("from SystemServiceEndpoint s where s.id=?", id).get(0);
    }
    public List<SystemServiceFlow> getFlowsByType(String type) throws Exception {
        return (List<SystemServiceFlow>) super.hibernateTemplate.find("from SystemServiceFlow s where s.type=?",type);
    }
}

+ 17 - 3
src/main/java/com/yihu/hos/monitor/service/ServiceMonitorService.java

@ -7,6 +7,7 @@ import com.yihu.hos.monitor.dao.ServiceMonitorDao;
import com.yihu.hos.system.model.SystemServiceEndpoint;
import com.yihu.hos.system.model.SystemServiceFlow;
import com.yihu.hos.system.model.SystemServiceFlowConfig;
import com.yihu.hos.system.service.FlowManager;
import com.yihu.hos.tenant.model.TenantSession;
import com.yihu.hos.web.framework.constant.ServiceFlowConstant;
import com.yihu.hos.web.framework.model.Result;
@ -18,6 +19,7 @@ import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.HashMap;
@ -32,6 +34,8 @@ public class ServiceMonitorService {
    public static final String BEAN_ID = "ServiceMonitorService";
    public static final String dbName = "log";
    public static final String tableName = "serviceMetrics";
    public static final String serviceFlow = "serviceFlow";
    public static final String configuration = "configuration";
    @Autowired
    private MongoOperations mongoOperations;
@ -42,6 +46,9 @@ public class ServiceMonitorService {
    @Autowired
    private ServiceMonitorDao serviceMonitorDao;
    @Resource(name = FlowManager.BEAN_ID)
    private FlowManager flowManager;
    public Result metrics(HttpSession session,String id, String beginTime, String endTime) throws Exception {
        String name;
        String code;
@ -104,7 +111,7 @@ public class ServiceMonitorService {
    public Result getServiceTreeList() throws Exception {
        List<TreeView> treeList = new ArrayList<>();
        List<SystemServiceFlow> flowList = serviceMonitorDao.getAllFlows();
        List<SystemServiceFlow> flowList = serviceMonitorDao.getFlowsByType(ServiceFlowConstant.CLASS);
        List<SystemServiceFlowConfig> flowEndpointList = serviceMonitorDao.getAllFlowEndpoints();
        List<SystemServiceEndpoint> endpointList = serviceMonitorDao.getAllEndpoints();
        Map<Integer, List<String>> flowEndpointMap = new HashMap<>();
@ -126,7 +133,6 @@ public class ServiceMonitorService {
        }
        for (SystemServiceFlow flow : flowList) {
            if (flow.getFileType().equals(ServiceFlowConstant.CLASS)) {
                TreeView rootTree = new TreeView();
                rootTree.setIschecked(false);
                rootTree.setId("flow" + flow.getId());
@ -144,11 +150,19 @@ public class ServiceMonitorService {
                        childTree.setText(endpoint.getName());
                        treeList.add(childTree);
                    }
                }
            }
        }
        JSONArray jsonArray = new JSONArray(treeList);
        return Result.success(jsonArray.toString());
    }
    public boolean serviceStatus(String routeCode){
        boolean succ = false;
//        MongoDatabase db = mongoConfig.mongoClient().getDatabase(configuration);
//        MongoCollection<Document> collection = db.getCollection(serviceFlow);
        return succ;
    }
}

+ 4 - 4
src/main/java/com/yihu/hos/resource/controller/RsCategoryController.java

@ -1,9 +1,9 @@
package com.yihu.hos.resource.controller;
import com.yihu.hos.resource.model.RsResourceCategory;
import com.yihu.hos.resource.service.RsCategoryServiceImpl;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import com.yihu.hos.resource.model.RsResourceCategory;
import com.yihu.hos.resource.service.IRsCategoryService;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@ -22,8 +22,8 @@ import java.util.Map;
@RequestMapping("/resource/rsCategory")
public class RsCategoryController extends BaseController {
    @Resource(name = "categoryService")
    private IRsCategoryService rsCategoryService;
    @Resource(name = RsCategoryServiceImpl.BEAN_ID)
    private RsCategoryServiceImpl rsCategoryService;
    //跳转到列表页
    @RequestMapping("initial")

+ 3 - 3
src/main/java/com/yihu/hos/resource/controller/RsDimensionController.java

@ -2,7 +2,7 @@ package com.yihu.hos.resource.controller;
import com.yihu.hos.resource.model.RsDemensionCategory;
import com.yihu.hos.resource.model.RsDimension;
import com.yihu.hos.resource.service.IRsDimensionService;
import com.yihu.hos.resource.service.RsDimensionServiceImpl;
import com.yihu.hos.web.framework.model.Result;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.stereotype.Controller;
@ -22,8 +22,8 @@ import java.util.Map;
@Controller
@RequestMapping("/dimension")
public class RsDimensionController {
    @Resource(name = "rsDimensionService")
    private IRsDimensionService rsDimensionService;
    @Resource(name = RsDimensionServiceImpl.BEAN_ID)
    private RsDimensionServiceImpl rsDimensionService;
    /**
     * @param model

+ 6 - 6
src/main/java/com/yihu/hos/resource/controller/RsResourceController.java

@ -6,8 +6,8 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.hos.common.JXLUtil;
import com.yihu.hos.resource.model.*;
import com.yihu.hos.resource.service.IRsResourceRestService;
import com.yihu.hos.resource.service.IRsResourceService;
import com.yihu.hos.resource.service.RsResourceRestServiceImpl;
import com.yihu.hos.resource.service.RsResourceServiceImpl;
import com.yihu.hos.resource.viewresult.RsResourceDeatilModel;
import com.yihu.hos.resource.viewresult.RsResourceDimensionModel;
import com.yihu.hos.web.framework.model.ActionResult;
@ -35,10 +35,10 @@ import java.util.Map;
@RequestMapping("/resource")
@Controller
public class RsResourceController extends BaseController {
    @Resource(name = "resourceService")
    private IRsResourceService resourceService;
    @Resource(name = "resourceRestService")
    private IRsResourceRestService resourceRestService;
    @Resource(name = RsResourceServiceImpl.BEAN_ID)
    private RsResourceServiceImpl resourceService;
    @Resource(name = RsResourceRestServiceImpl.BEAN_ID)
    private RsResourceRestServiceImpl resourceRestService;
    /**

+ 5 - 5
src/main/java/com/yihu/hos/resource/controller/RsResourceRestController.java

@ -1,10 +1,10 @@
package com.yihu.hos.resource.controller;
import com.yihu.hos.web.framework.model.DataGridResult;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.resource.model.RsResourceRest;
import com.yihu.hos.resource.model.RsResourceRestDetail;
import com.yihu.hos.resource.service.IRsResourceRestService;
import com.yihu.hos.resource.service.RsResourceRestServiceImpl;
import com.yihu.hos.web.framework.model.DataGridResult;
import com.yihu.hos.web.framework.model.Result;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
@ -23,8 +23,8 @@ import java.util.Map;
@RequestMapping("/resourceRest")
@Controller
public class RsResourceRestController {
    @Resource(name = "resourceRestService")
    private IRsResourceRestService resourceRestService;
    @Resource(name = RsResourceRestServiceImpl.BEAN_ID)
    private RsResourceRestServiceImpl resourceRestService;
    @RequestMapping("/initial")
    public String initial(Model model) {

+ 3 - 4
src/main/java/com/yihu/hos/resource/controller/StdController.java

@ -1,9 +1,8 @@
package com.yihu.hos.resource.controller;
import com.yihu.hos.common.Services;
import com.yihu.hos.resource.service.StdService;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.web.framework.util.controller.BaseController;
import com.yihu.hos.resource.service.IStdService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@ -20,8 +19,8 @@ public class StdController extends BaseController {
    @Resource(name = Services.StdService)
    IStdService stdService;
    @Resource(name = StdService.BEAN_ID)
    StdService stdService;
    /**************************** 标准字典 ************************************************/

+ 0 - 21
src/main/java/com/yihu/hos/resource/dao/IRsAppResourceDao.java

@ -1,21 +0,0 @@
package com.yihu.hos.resource.dao;
import com.yihu.hos.resource.model.RsAppResource;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import java.util.List;
/**
 * Created by chenweida on 2016/1/25.
 */
public interface IRsAppResourceDao extends XSQLGeneralDAO {
    List<RsAppResource> getAppResourceByResourceId(String resourceid) throws Exception;
    void deleteByResourceId(String resourceId)throws Exception;
    RsAppResource getAppResourceByResourceIdAndAppId(String resourceId, String appId)throws Exception;
    void deleteEntityList(List<RsAppResource> deleteList)throws Exception;
    void saveEntityList(List<RsAppResource> newList)throws Exception;
}

+ 0 - 17
src/main/java/com/yihu/hos/resource/dao/IRsAppResourceDetailDao.java

@ -1,17 +0,0 @@
package com.yihu.hos.resource.dao;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import com.yihu.hos.resource.model.RsAppResourceDetail;
import java.util.List;
/**
 * Created by chenweida on 2016/1/25.
 */
public interface IRsAppResourceDetailDao extends XSQLGeneralDAO {
    List<RsAppResourceDetail> getAppResourceDetailByAppResouceId(String id) throws Exception;
    void deleteByAppResourceId(String id) throws Exception;
}

+ 0 - 27
src/main/java/com/yihu/hos/resource/dao/IRsCategoryDao.java

@ -1,27 +0,0 @@
package com.yihu.hos.resource.dao;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.resource.model.RsDemensionCategory;
import com.yihu.hos.resource.model.RsResourceCategory;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2015/12/15.
 */
public interface IRsCategoryDao extends XSQLGeneralDAO {
    RsDemensionCategory[] getAllCategory() throws Exception;
    Result getList(Map<String, Object> conditionMap) throws Exception;
    RsResourceCategory getCategoryByNameAndPid(String name, String pid) throws Exception;
    RsResourceCategory getCategoryByNameAndPidWithOutThis(String name, String pid, String id) throws Exception;
    List<RsResourceCategory> getCategoryByPid(String id) throws Exception;
    List<RsResourceCategory> getCategoryWithOutId(String id) throws Exception;
}

+ 0 - 17
src/main/java/com/yihu/hos/resource/dao/IRsDemensionCategoryDao.java

@ -1,17 +0,0 @@
package com.yihu.hos.resource.dao;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.resource.model.RsDemensionCategory;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2016/1/26.
 */
public interface IRsDemensionCategoryDao extends XSQLGeneralDAO {
    List<RsDemensionCategory> getDimensionCategoryList() throws Exception;
    Result getDimensionCatecoryList(Map<String, Object> conditionMap) throws Exception;
}

+ 0 - 9
src/main/java/com/yihu/hos/resource/dao/IRsDimensionDao.java

@ -1,9 +0,0 @@
package com.yihu.hos.resource.dao;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
/**
 * Created by chenweida on 2016/1/26.
 */
public interface IRsDimensionDao extends XSQLGeneralDAO {
}

+ 0 - 13
src/main/java/com/yihu/hos/resource/dao/IRsResourceCategoryDao.java

@ -1,13 +0,0 @@
package com.yihu.hos.resource.dao;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import com.yihu.hos.resource.model.RsResourceCategory;
import java.util.List;
/**
 * Created by chenweida on 2016/1/13.
 */
public interface IRsResourceCategoryDao extends XSQLGeneralDAO {
    List<RsResourceCategory> getAllRsResourceCategory() throws Exception;
}

+ 0 - 28
src/main/java/com/yihu/hos/resource/dao/IRsResourceDao.java

@ -1,28 +0,0 @@
package com.yihu.hos.resource.dao;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import com.yihu.hos.web.framework.model.DataGridResult;
import com.yihu.hos.resource.model.RsResource;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2016/1/13.
 */
public interface IRsResourceDao extends XSQLGeneralDAO {
    DataGridResult getResourceList(Map<String, Object> conditionMap, Integer page, Integer rows) throws Exception;
    DataGridResult getResourceFiled(Map<String, Object> conditionMap, Integer page, Integer rows) throws Exception;
    int getResourceListCount(Map<String, Object> conditionMap) throws Exception;
    List<RsResource> getAllRsResource() throws Exception;
    RsResource getResourceById(String id) throws Exception;
    /**
     * 通过分类获取资源
     */
    List<RsResource> getAllRsResourceByCategory(String category) throws Exception;
}

+ 0 - 13
src/main/java/com/yihu/hos/resource/dao/IRsResourceDatasetDao.java

@ -1,13 +0,0 @@
package com.yihu.hos.resource.dao;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import com.yihu.hos.web.framework.model.DataGridResult;
import java.util.Map;
/**
 * Created by chenweida on 2016/1/21.
 */
public interface IRsResourceDatasetDao extends XSQLGeneralDAO{
    public DataGridResult getDataSet(Map<String, Object> conditionMap) throws Exception;
}

+ 0 - 17
src/main/java/com/yihu/hos/resource/dao/IRsResourceDimensionDao.java

@ -1,17 +0,0 @@
package com.yihu.hos.resource.dao;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.resource.viewresult.RsResourceDimensionModel;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2016/1/26.
 */
public interface IRsResourceDimensionDao extends XSQLGeneralDAO {
    List<RsResourceDimensionModel> getDimensionByResourceId(String resourceId) throws Exception;
    Result getDimensionList(Map<String, Object> conditionMap) throws Exception;
}

+ 0 - 28
src/main/java/com/yihu/hos/resource/dao/IRsResourceMetadataDao.java

@ -1,28 +0,0 @@
package com.yihu.hos.resource.dao;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import com.yihu.hos.web.framework.model.Result;
import com.yihu.hos.resource.model.RsResourceMetadata;
import java.util.List;
import java.util.Map;
/**
 * Created by chenweida on 2016/1/21.
 */
public interface IRsResourceMetadataDao extends XSQLGeneralDAO {
    void deleteMetadatasByDataSetCode(String dataSetCode) throws Exception;
    void deleteLogicDataSupportMetaDataByLocalDataSetId(String datasetId) throws Exception;
    List<RsResourceMetadata> getMetadataByLocalDatssetId(String datasetId) throws Exception;
    Result getResourceAuthorize(Map<String, Object> params) throws Exception;
    List<RsResourceMetadata> getMetadataByResourceId(String code) throws Exception;
    RsResourceMetadata getMetadataByCodeAndResourceId(String code, String resourceId) throws Exception;
    RsResourceMetadata getMetadataByCodeAndResourceIdWithOutId(String code, String resourceId, String id) throws Exception;
}

+ 0 - 13
src/main/java/com/yihu/hos/resource/dao/IRsResourceRestDao.java

@ -1,13 +0,0 @@
package com.yihu.hos.resource.dao;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import com.yihu.hos.web.framework.model.DataGridResult;
import java.util.Map;
/**
 * Created by chenweida on 2016/1/30.
 */
public interface IRsResourceRestDao extends XSQLGeneralDAO {
    DataGridResult getResourceRestList(Map<String, Object> conditionMap, Integer page, Integer rows) throws Exception;
}

+ 0 - 20
src/main/java/com/yihu/hos/resource/dao/IRsResourceRestDetailDao.java

@ -1,20 +0,0 @@
package com.yihu.hos.resource.dao;
import com.yihu.hos.web.framework.dao.XSQLGeneralDAO;
import com.yihu.hos.web.framework.model.DataGridResult;
import com.yihu.hos.resource.model.RsResourceRestDetail;
import java.util.Map;
/**
 * Created by chenweida on 2016/1/30.
 */
public interface IRsResourceRestDetailDao extends XSQLGeneralDAO {
    DataGridResult getResourceRestDetilList(Map<String, Object> conditionMap, Integer page, Integer rows) throws Exception;
    RsResourceRestDetail getResourceRestDetailByCode(String code) throws Exception;
    RsResourceRestDetail getResourceRestDetailByCodeAndResourceRestId(String code, String resourceRestId) throws Exception;
    RsResourceRestDetail getResourceRestDetailByCodeAndResourceRestIdWithOutId(String code, String resourceRestId, String id) throws Exception;
}

+ 10 - 9
src/main/java/com/yihu/hos/resource/dao/impl/RsAppResourceDaoImpl.java

@ -1,8 +1,7 @@
package com.yihu.hos.resource.dao.impl;
package com.yihu.hos.resource.dao;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import com.yihu.hos.resource.dao.IRsAppResourceDao;
import com.yihu.hos.resource.model.RsAppResource;
import com.yihu.hos.web.framework.dao.SQLGeneralDAO;
import org.springframework.stereotype.Repository;
import java.util.List;
@ -11,29 +10,31 @@ import java.util.List;
 * Created by chenweida on 2016/1/25.
 */
@Repository("rsAppResourceDao")
public class RsAppResourceDaoImpl extends SQLGeneralDAO implements IRsAppResourceDao {
    @Override
public class RsAppResourceDaoImpl extends SQLGeneralDAO {
    public static final String BEAN_ID = "rsAppResourceDao";
    
    public List<RsAppResource> getAppResourceByResourceId(String resourceid) throws Exception {
        List<RsAppResource> rs = (List<RsAppResource>) super.hibernateTemplate.find("from RsAppResource r where r.resourceId=?", resourceid);
        return rs;
    }
    @Override
    
    public void deleteByResourceId(String resourceId) throws Exception {
        super.hibernateTemplate.deleteAll(super.hibernateTemplate.find("from RsAppResource r where r.resourceId=?", resourceId));
    }
    @Override
    
    public RsAppResource getAppResourceByResourceIdAndAppId(String resourceId, String appId) {
        return (RsAppResource) super.hibernateTemplate.find("from RsAppResource r where r.resourceId=? and r.appId=? ", resourceId, appId).get(0);
    }
    @Override
    
    public void deleteEntityList(List<RsAppResource> deleteList) throws Exception {
        super.hibernateTemplate.deleteAll(deleteList);
    }
    @Override
    public void saveEntityList(List<RsAppResource> newList) throws Exception {
        for (RsAppResource r : newList)
            super.hibernateTemplate.save(r);

+ 0 - 0
src/main/java/com/yihu/hos/resource/dao/impl/RsAppResourceDetailDaoImpl.java


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است