huangzhiyong 6 anni fa
parent
commit
c26b79d805
100 ha cambiato i file con 9839 aggiunte e 0 eliminazioni
  1. 6 0
      .gitignore
  2. 221 0
      pom.xml
  3. 28 0
      src/main/java/com/yihu/hos/central/rest/HosCentralRestApplication.java
  4. 70 0
      src/main/java/com/yihu/hos/central/rest/cache/FileTypeCheckUtil.java
  5. 22 0
      src/main/java/com/yihu/hos/central/rest/cache/OrgAdapterCache.java
  6. 120 0
      src/main/java/com/yihu/hos/central/rest/common/configuration/BeanConfiguration.java
  7. 71 0
      src/main/java/com/yihu/hos/central/rest/common/configuration/CrawlerConfiguration.java
  8. 212 0
      src/main/java/com/yihu/hos/central/rest/common/configuration/DataSourceConfig.java
  9. 91 0
      src/main/java/com/yihu/hos/central/rest/common/configuration/EhrUrlConfiguration.java
  10. 40 0
      src/main/java/com/yihu/hos/central/rest/common/configuration/RedisContext.java
  11. 138 0
      src/main/java/com/yihu/hos/central/rest/common/configuration/SchedulingConfig.java
  12. 45 0
      src/main/java/com/yihu/hos/central/rest/common/configuration/SwaggerConfig.java
  13. 70 0
      src/main/java/com/yihu/hos/central/rest/common/configuration/TempDataSourceConfiguration.java
  14. 232 0
      src/main/java/com/yihu/hos/central/rest/common/dao/DatacollectDao.java
  15. 15 0
      src/main/java/com/yihu/hos/central/rest/common/filter/HibernateFilter.java
  16. 88 0
      src/main/java/com/yihu/hos/central/rest/common/format/AdapterBase.java
  17. 72 0
      src/main/java/com/yihu/hos/central/rest/common/format/AdapterScheme.java
  18. 679 0
      src/main/java/com/yihu/hos/central/rest/common/format/DataSetTransformer.java
  19. 21 0
      src/main/java/com/yihu/hos/central/rest/common/format/IDataTransformer.java
  20. 92 0
      src/main/java/com/yihu/hos/central/rest/common/format/PreparData.java
  21. 31 0
      src/main/java/com/yihu/hos/central/rest/common/format/StdBase.java
  22. 197 0
      src/main/java/com/yihu/hos/central/rest/common/http/EHRHttpHelper.java
  23. 437 0
      src/main/java/com/yihu/hos/central/rest/common/util/ImportDataToDataBase.java
  24. 27 0
      src/main/java/com/yihu/hos/central/rest/common/util/TempDataSourceHelper.java
  25. 16 0
      src/main/java/com/yihu/hos/central/rest/constants/RedisCollection.java
  26. 20 0
      src/main/java/com/yihu/hos/central/rest/constants/ServiceApi.java
  27. 125 0
      src/main/java/com/yihu/hos/central/rest/controllers/ChangeUploadDateController.java
  28. 89 0
      src/main/java/com/yihu/hos/central/rest/controllers/CrawlerController.java
  29. 153 0
      src/main/java/com/yihu/hos/central/rest/controllers/SchedulerController.java
  30. 64 0
      src/main/java/com/yihu/hos/central/rest/exception/QueryMasterFailedException.java
  31. 38 0
      src/main/java/com/yihu/hos/central/rest/exception/QuerySolrIndexFailedException.java
  32. 48 0
      src/main/java/com/yihu/hos/central/rest/exception/QuerySubFailedException.java
  33. 68 0
      src/main/java/com/yihu/hos/central/rest/feign/HosAdminServiceClient.java
  34. 146 0
      src/main/java/com/yihu/hos/central/rest/feign/RedisClient.java
  35. 81 0
      src/main/java/com/yihu/hos/central/rest/feign/SvrResourceServiceClient.java
  36. 220 0
      src/main/java/com/yihu/hos/central/rest/job/HealthCheckTask.java
  37. 79 0
      src/main/java/com/yihu/hos/central/rest/job/SupplementUploadJob.java
  38. 82 0
      src/main/java/com/yihu/hos/central/rest/job/UploadResourceJob.java
  39. 111 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/adapter/AdapterDataSet.java
  40. 54 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/adapter/AdapterDict.java
  41. 14 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/adapter/AdapterDictEntry.java
  42. 64 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/adapter/AdapterMetaData.java
  43. 105 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/adapter/StdDataSet.java
  44. 200 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/config/SysConfig.java
  45. 66 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/flow/CrawlerDataSetKey.java
  46. 75 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/flow/CrawlerDataSetModel.java
  47. 65 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/flow/CrawlerFlowHeadKey.java
  48. 65 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/flow/CrawlerFlowHeadModel.java
  49. 109 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/flow/CrawlerFlowModel.java
  50. 21 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/CrawlerDatasetResultDetailModel.java
  51. 23 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/CrawlerDatasetResultModel.java
  52. 30 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/FlowEntrance.java
  53. 48 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/FlowLines.java
  54. 40 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/FlowMapping.java
  55. 47 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/MappingDataset.java
  56. 36 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/MappingMetadata.java
  57. 112 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/patient/Patient.java
  58. 59 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/patient/PatientIdentity.java
  59. 110 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/patient/PatientIndex.java
  60. 192 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/statistics/Upload.java
  61. 105 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/statistics/UploadDetail.java
  62. 115 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/statistics/UploadFail.java
  63. 9 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/transform/DictDataType.java
  64. 65 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/transform/EhrCondition.java
  65. 15 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/transform/IVerifier.java
  66. 12 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/transform/LogicValues.java
  67. 45 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/transform/MetaDataType.java
  68. 21 0
      src/main/java/com/yihu/hos/central/rest/models/crawler/transform/TransformType.java
  69. 46 0
      src/main/java/com/yihu/hos/central/rest/models/rs/DtoDatasetCol.java
  70. 48 0
      src/main/java/com/yihu/hos/central/rest/models/rs/DtoDictCol.java
  71. 35 0
      src/main/java/com/yihu/hos/central/rest/models/rs/DtoJobConfig.java
  72. 74 0
      src/main/java/com/yihu/hos/central/rest/models/rs/DtoJobDataset.java
  73. 36 0
      src/main/java/com/yihu/hos/central/rest/models/rs/DtoJobLog.java
  74. 75 0
      src/main/java/com/yihu/hos/central/rest/models/rs/RsDatapushLog.java
  75. 211 0
      src/main/java/com/yihu/hos/central/rest/models/rs/RsJobConfig.java
  76. 142 0
      src/main/java/com/yihu/hos/central/rest/models/rs/RsJobDataset.java
  77. 106 0
      src/main/java/com/yihu/hos/central/rest/models/rs/RsJobLog.java
  78. 234 0
      src/main/java/com/yihu/hos/central/rest/models/rs/RsJobLogDetail.java
  79. 127 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterDatasetModel.java
  80. 68 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterDatasetRelationModel.java
  81. 138 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterDictEntryModel.java
  82. 116 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterDictModel.java
  83. 188 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterMetadataModel.java
  84. 52 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterSchemeDispatchModel.java
  85. 151 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterSchemeModel.java
  86. 120 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterSchemeVersionModel.java
  87. 124 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/resultModel/AdapterDictEntryResultDetailModel.java
  88. 133 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/resultModel/AdapterMetadataResultDetailModel.java
  89. 154 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/resultModel/AdapterSchemeResultDetailModel.java
  90. 43 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/resultModel/AdapterSchemeResultModel.java
  91. 105 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/resultModel/AdapterSchemeVersionResultDetailModel.java
  92. 169 0
      src/main/java/com/yihu/hos/central/rest/models/standard/adapter/resultModel/ApiMetadataResultDetailModel.java
  93. 51 0
      src/main/java/com/yihu/hos/central/rest/models/standard/bo/AdapterVersion.java
  94. 184 0
      src/main/java/com/yihu/hos/central/rest/models/standard/bo/ObjectVersion.java
  95. 58 0
      src/main/java/com/yihu/hos/central/rest/models/standard/bo/StandardVersion.java
  96. 82 0
      src/main/java/com/yihu/hos/central/rest/models/standard/bo/SystemParam.java
  97. 147 0
      src/main/java/com/yihu/hos/central/rest/models/standard/standard/STDVersion.java
  98. 134 0
      src/main/java/com/yihu/hos/central/rest/models/standard/standard/StandardModel.java
  99. 201 0
      src/main/java/com/yihu/hos/central/rest/models/standard/standard/StdDataSetModel.java
  100. 0 0
      src/main/java/com/yihu/hos/central/rest/models/standard/standard/StdDictionaryEntryModel.java

+ 6 - 0
.gitignore

@ -9,6 +9,12 @@
*.war
*.ear
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

+ 221 - 0
pom.xml

@ -0,0 +1,221 @@
<?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>
	<parent>
		<groupId>com.yihu.ehr</groupId>
		<artifactId>ehr-cloud-parent</artifactId>
		<version>1.13.1</version>
	</parent>
	<artifactId>svr-eip-central-rest</artifactId>
	<version>1.3.0</version>
	<packaging>jar</packaging>
	<name>svr-eip-central-rest</name>
	<description>EIP业务服务模块,实现省平台上传</description>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<version.jedis>2.9.0</version.jedis>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
		<!-- test start -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- test end -->
		<dependency>
			<groupId>com.yihu.hos</groupId>
			<artifactId>hos-web-framework</artifactId>
			<version>${hos-version}</version>
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-data-jpa</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-data-mongodb</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.mongodb</groupId>
					<artifactId>mongodb-driver</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.mongodb</groupId>
					<artifactId>mongo-java-driver</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
		</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>5.0.12.Final</version>
		</dependency>
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc6</artifactId>
			<version>11.2.0.3</version>
		</dependency>
		<!--<dependency>-->
			<!--<groupId>com.oracle</groupId>-->
			<!--<artifactId>orai18n</artifactId>-->
			<!--<version>11.2.0.3</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>
		<dependency>
			<groupId>net.sf.json-lib</groupId>
			<artifactId>json-lib</artifactId>
			<version>2.4</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.15</version>
		</dependency>
		<dependency>
			<groupId>com.yihu.ehr</groupId>
			<artifactId>commons-data-elasticsearch</artifactId>
			<version>${ehr-version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>
		<!--<dependency>-->
			<!--<groupId>org.springframework.data</groupId>-->
			<!--<artifactId>spring-data-redis</artifactId>-->
			<!--<version>1.7.1.RELEASE</version>-->
		<!--</dependency>-->
		<dependency>
			<groupId>org.springframework.session</groupId>
			<artifactId>spring-session-data-redis</artifactId>
			<version>1.3.1.RELEASE</version>
		</dependency>
		<!-- Redis library -->
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>${version.jedis}</version>
			<scope>${dependency.scope}</scope>
		</dependency>
		<!--  cloud -->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
			<scope>${dependency.scope}</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
			<scope>${dependency.scope}</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-feign</artifactId>
			<scope>${dependency.scope}</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>2.2.3</version>
			<scope>${dependency.scope}</scope>
		</dependency>
		<dependency>
			<groupId>com.yihu.ehr</groupId>
			<artifactId>commons-ui-swagger</artifactId>
			<version>${ehr-version}</version>
		</dependency>
		<dependency>
			<groupId>com.yihu.ehr</groupId>
			<artifactId>commons-util</artifactId>
			<version>${ehr-version}</version>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>${spring-boot-version}</version>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<mainClass>com.yihu.hos.central.rest.HosCentralRestApplication</mainClass>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

+ 28 - 0
src/main/java/com/yihu/hos/central/rest/HosCentralRestApplication.java

@ -0,0 +1,28 @@
package com.yihu.hos.central.rest;
import com.yihu.hos.central.rest.runner.InitAdapter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableAsync;
@EnableDiscoveryClient
@EnableFeignClients
@EnableEurekaClient
@EnableAsync
@SpringBootApplication(exclude = MongoAutoConfiguration.class,scanBasePackages={"com.yihu.ehr.elasticsearch","com.yihu.hos.web.framework.util.springutil","com.yihu.hos.central.rest"})
public class HosCentralRestApplication {
	public static void main(String[] args) {
		SpringApplication.run(HosCentralRestApplication.class,args);
	}
	@Bean
	public InitAdapter taskRunner(){
		return new InitAdapter();
	}
}

+ 70 - 0
src/main/java/com/yihu/hos/central/rest/cache/FileTypeCheckUtil.java

@ -0,0 +1,70 @@
package com.yihu.hos.central.rest.cache;
import java.io.*;
import java.util.HashMap;
/**
 * @author HZY
 * @created 2018/8/28 11:06
 */
public class FileTypeCheckUtil {
    /**
     * 解析普通文本文件  流式文件 如txt
     * @param path
     * @return
     */
    @SuppressWarnings("unused")
    public static String readTxt(String path){
        StringBuilder content = new StringBuilder("");
        try {
            String code = resolveCode(path);
            File file = new File(path);
            InputStream is = new FileInputStream(file);
            InputStreamReader isr = new InputStreamReader(is, code);
            BufferedReader br = new BufferedReader(isr);
//          char[] buf = new char[1024];
//          int i = br.read(buf);
//          String s= new String(buf);
//          System.out.println(s);
            String str = "";
            while (null != (str = br.readLine())) {
                content.append(str);
            }
            br.close();
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("读取文件:" + path + "失败!");
        }
        return content.toString();
    }
    public static String resolveCode(String path) throws Exception {
        InputStream inputStream = new FileInputStream(path);
        byte[] head = new byte[3];
        inputStream.read(head);
        String code = "gb2312";  //或GBK
        if (head[0] == -1 && head[1] == -2 )
            code = "UTF-16";
        else if (head[0] == -2 && head[1] == -1 )
            code = "Unicode";
        else if(head[0]==-17 && head[1]==-69 && head[2] ==-65)
            code = "UTF-8";
        inputStream.close();
        System.out.println(code);
        return code;
    }
    public static void main(String[] args) {
//        String filePath ="D:\\temp\\非结构化模板\\非结构化_卡思特_\\非结构化\\ls data\\6d0e7aad8ec1404c98a237ac54925edc_fjg\\documents\\641331f9fbfb4c10b03b7bd07baf14b7.xml";
        String filePath = "C:\\Users\\HZY\\Documents\\WeChat Files\\huangzhiyong_weibo\\Files\\非结构化_卡思特_\\非结构化\\ygz data\\0829fb12ee53404b91c7563a6fa05cfb_fjg\\documents\\ca351c36f0184024832f2f95c848083f.xml";
        final String fileType = readTxt(filePath);
        System.out.println("文件类型:"+fileType);
    }
}

+ 22 - 0
src/main/java/com/yihu/hos/central/rest/cache/OrgAdapterCache.java

@ -0,0 +1,22 @@
package com.yihu.hos.central.rest.cache;
import java.util.HashMap;
import java.util.Map;
public class OrgAdapterCache {
    //Map<"适配版本号",Map<平台标准orgCode,省平台标准orgCode>>
    public static Map<String,Map<String,String>> ORG_CACHE = new HashMap<>();
    public static Map<String,Map<String,String>> STD_ORG_CACHE = new HashMap<>();
    public static String getProvinceOrgCode(String version,String orgCode){
        return ORG_CACHE.get(version).get(orgCode);
    }
    public static String getStdOrgCode(String version,String orgCode){
        return STD_ORG_CACHE.get(version).get(orgCode);
    }
}

+ 120 - 0
src/main/java/com/yihu/hos/central/rest/common/configuration/BeanConfiguration.java

@ -0,0 +1,120 @@
package com.yihu.hos.central.rest.common.configuration;
import com.yihu.hos.central.rest.common.filter.HibernateFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.orm.hibernate5.HibernateTemplate;
import org.springframework.orm.hibernate5.HibernateTransactionManager;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.i18n.CookieLocaleResolver;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Locale;
import java.util.Properties;
/**
 *  数据源自定义配置
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/8/5.
 */
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@ComponentScan("com.yihu.hos.central.rest")
public class BeanConfiguration {
    @Autowired
    private DataSource dataSource;
    @Bean
    public HibernateFilter filterConfig() {
        return new HibernateFilter();
    }
    @Bean
    public LocalSessionFactoryBean sessionFactory() {
        LocalSessionFactoryBean localSessionFactoryBean = new LocalSessionFactoryBean();
        localSessionFactoryBean.setDataSource(this.dataSource);
        Properties properties1 = new Properties();
        properties1.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");
        properties1.setProperty("hibernate.show_sql", "false");
        properties1.setProperty("hibernate.format_sql", "true");
        localSessionFactoryBean.setHibernateProperties(properties1);
        localSessionFactoryBean.setPackagesToScan("com.yihu.hos.central.rest.models");
        return localSessionFactoryBean;
    }
    //txManager事务开启
    @Bean
    public HibernateTransactionManager txManager() throws SQLException {
        HibernateTransactionManager hibernateTransactionManager = new HibernateTransactionManager();
        LocalSessionFactoryBean sessionFactoryBean = this.sessionFactory();
        hibernateTransactionManager.setSessionFactory(sessionFactoryBean.getObject());
        return hibernateTransactionManager;
    }
    //文经上传
    @Bean
    public CommonsMultipartResolver multipartResolver() {
        return new CommonsMultipartResolver();
    }
    //国际化配置
    @Bean
    public ResourceBundleMessageSource messageSource() {
        ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
        messageSource.setBasenames("text/message");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }
    @Bean
    public CookieLocaleResolver localeResolver() {
        CookieLocaleResolver localeResolver = new CookieLocaleResolver();
        localeResolver.setCookieName("Language");
        localeResolver.setCookieMaxAge(604800);
        localeResolver.setDefaultLocale(new Locale("zh_cn"));
        return localeResolver;
    }
    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        return new LocaleChangeInterceptor();
    }
    @Bean
    public JdbcTemplate jdbcTemplate() {
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        try {
            jdbcTemplate.setDataSource(this.dataSource);
            jdbcTemplate.setLazyInit(false);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jdbcTemplate;
    }
    //Hibernate模版配置
    @Bean
    public HibernateTemplate hibernateTemplate() throws SQLException {
        HibernateTemplate hibernateTemplate = new HibernateTemplate();
        LocalSessionFactoryBean sessionFactory = this.sessionFactory();
        hibernateTemplate.setSessionFactory(sessionFactory.getObject());
        return hibernateTemplate;
    }
    @Override
    protected void finalize() throws Throwable {
        super.finalize();
    }
}

+ 71 - 0
src/main/java/com/yihu/hos/central/rest/common/configuration/CrawlerConfiguration.java

@ -0,0 +1,71 @@
package com.yihu.hos.central.rest.common.configuration;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
 * @created Airhead 2016/8/4.
 */
@Configuration
public class CrawlerConfiguration {
    @Value("${crawler.upload.ip}")
    private String uploadIp;
    @Value("${crawler.upload.port}")
    private String uploadPort;
    @Value("${crawler.upload.api}")
    private String uploadApi;
    @Value("${crawler.storage.ip}")
    private String storageIp;
    @Value("${crawler.storage.port}")
    private String storagePort;
    @Value("${crawler.storage.api}")
    private String storageApi;
    public String getUploadIp() {
        return uploadIp;
    }
    public void setUploadIp(String uploadIp) {
        this.uploadIp = uploadIp;
    }
    public String getUploadPort() {
        return uploadPort;
    }
    public void setUploadPort(String uploadPort) {
        this.uploadPort = uploadPort;
    }
    public String getUploadApi() {
        return uploadApi;
    }
    public void setUploadApi(String uploadApi) {
        this.uploadApi = uploadApi;
    }
    public String getStorageIp() {
        return storageIp;
    }
    public void setStorageIp(String storageIp) {
        this.storageIp = storageIp;
    }
    public String getStoragePort() {
        return storagePort;
    }
    public void setStoragePort(String storagePort) {
        this.storagePort = storagePort;
    }
    public String getStorageApi() {
        return storageApi;
    }
    public void setStorageApi(String storageApi) {
        this.storageApi = storageApi;
    }
}

+ 212 - 0
src/main/java/com/yihu/hos/central/rest/common/configuration/DataSourceConfig.java

@ -0,0 +1,212 @@
package com.yihu.hos.central.rest.common.configuration;
import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
 * Created by Administrator on 2016.10.20.
 * 多数据源配置
 */
@Configuration
public class DataSourceConfig {
    @Value("${spring.datasource.driverClassName}")
    private String driverClassName;
    @Value("${spring.datasource.initial-size}")
    private Integer initialSize;
    @Value("${spring.datasource.min-idle}")
    private Integer minIdle;
    @Value("${spring.datasource.max-active}")
    private Integer maxActive;
    @Value("${spring.datasource.max-wait}")
    private Integer maxWait;
    @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
    private Integer timeBetweenEvictionRunsMillis;
    @Value("${spring.datasource.minEvictableIdleTimeMillis}")
    private Integer minEvictableIdleTimeMillis;
    @Value("${spring.datasource.validation-query}")
    private String validationQuery;
    @Value("${spring.datasource.testWhileIdle}")
    private Boolean testWhileIdle;
    @Value("${spring.datasource.testOnBorrow}")
    private Boolean testOnBorrow;
    @Value("${spring.datasource.testOnReturn}")
    private Boolean testOnReturn;
    @Value("${spring.datasource.poolPreparedStatements}")
    private Boolean poolPreparedStatements;
    @Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")
    private Integer maxPoolPreparedStatementPerConnectionSize;
    @Value("${spring.datasource.removeAbandoned}")
    private Boolean removeAbandoned;
    @Value("${spring.datasource.removeAbandonedTimeout}")
    private Integer removeAbandonedTimeout;
    @Value("${spring.datasource.logAbandoned}")
    private Boolean logAbandoned;
    @Value("${spring.datasource.filters}")
    private String filters;
    @Value("${spring.datasource.url}")
    private String primaryReadWriteUrl;
    @Value("${spring.datasource.username}")
    private String primaryReadWriteUsername;
    @Value("${spring.datasource.password}")
    private String primaryReadWritePassword;
    /**
     * 主数据源
     *
     * @return
     */
    @Bean(name = "primaryReadWrite")
    @Primary//主库 默认不写名字用这个
    public DataSource primaryReadWriteDataSource(StatFilter statFilter) throws SQLException {
        DruidDataSource datasource = new DruidDataSource();
        datasource.setUrl(primaryReadWriteUrl);
        datasource.setUsername(primaryReadWriteUsername);
        datasource.setPassword(primaryReadWritePassword);
        datasource.setDriverClassName(driverClassName);
        //configuration
        datasource.setInitialSize(initialSize);
        datasource.setMinIdle(minIdle);
        datasource.setMaxActive(maxActive);
        datasource.setMaxWait(maxWait);
        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        datasource.setValidationQuery(validationQuery);
        datasource.setTestWhileIdle(testWhileIdle);
        datasource.setTestOnBorrow(testOnBorrow);
        datasource.setTestOnReturn(testOnReturn);
        datasource.setPoolPreparedStatements(poolPreparedStatements);
        datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
        datasource.setRemoveAbandoned(removeAbandoned);
        datasource.setRemoveAbandonedTimeout(removeAbandonedTimeout);
        datasource.setLogAbandoned(logAbandoned);
        datasource.setFilters(filters);
        datasource.setConnectProperties(properties());//;# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
        datasource.setUseGlobalDataSourceStat(true);// 合并多个DruidDataSource的监控数据
        List proxyFilters = new ArrayList<>();
        proxyFilters.add(statFilter);
        datasource.setProxyFilters(proxyFilters);
        return datasource;
    }
    @Value("${temp.datasource.url}")
    private String tempUrl;
    @Value("${temp.datasource.username}")
    private String tempUsername;
    @Value("${temp.datasource.password}")
    private String tempPassword;
    @Value("${temp.datasource.driverClassName}")
    private String oracleDriverClassName;
    @Value("${temp.datasource.validation-query}")
    private String oracleValidationQuery;
    @Bean(name = "tempDataSource")
    public DataSource tempDataSource(StatFilter statFilter) throws SQLException {
        DruidDataSource datasource = new DruidDataSource();
        datasource.setUrl(tempUrl);
        datasource.setUsername(tempUsername);
        datasource.setPassword(tempPassword);
        datasource.setDriverClassName(oracleDriverClassName);
        //configuration
        datasource.setInitialSize(initialSize);
        datasource.setMinIdle(minIdle);
        datasource.setMaxActive(maxActive);
        datasource.setMaxWait(maxWait);
        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        datasource.setValidationQuery(oracleValidationQuery);
        datasource.setTestWhileIdle(testWhileIdle);
        datasource.setTestOnBorrow(testOnBorrow);
        datasource.setTestOnReturn(testOnReturn);
        datasource.setPoolPreparedStatements(poolPreparedStatements);
        datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
        datasource.setRemoveAbandoned(removeAbandoned);
        datasource.setRemoveAbandonedTimeout(removeAbandonedTimeout);
        datasource.setLogAbandoned(logAbandoned);
        datasource.setFilters(filters);
        datasource.setConnectProperties(properties());//;# 通过connectProperties属性来打开mergeSql功能;慢SQL记录
        datasource.setUseGlobalDataSourceStat(true);// 合并多个DruidDataSource的监控数据
        List proxyFilters = new ArrayList<>();
        proxyFilters.add(statFilter);
        datasource.setProxyFilters(proxyFilters);
        return datasource;
    }
    private Properties properties() {
        Properties properties = new Properties();
        properties.put("druid.stat.mergeSql", "true");
        properties.put("slowSqlMillis", "1000");
        return properties;
    }
    //------------------------------------druid 监控----------------------------------------------
    @Bean
    public ServletRegistrationBean statViewServlet() {
        //创建servlet注册实体
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        //设置ip白名单
        //servletRegistrationBean.addInitParameter("allow","127.0.0.1");
        //设置ip黑名单,如果allow与deny共同存在时,deny优先于allow
        // servletRegistrationBean.addInitParameter("deny","192.168.0.19");
        //设置控制台管理用户
        servletRegistrationBean.addInitParameter("loginUsername", "jkzl");
        servletRegistrationBean.addInitParameter("loginPassword", "jkzlehr");
        //是否可以重置数据
        servletRegistrationBean.addInitParameter("resetEnable", "false");
        return servletRegistrationBean;
    }
    @Bean
    public FilterRegistrationBean filterRegistrationBean(WebStatFilter webStatFilter) {
        //创建过滤器
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(webStatFilter);
        //设置过滤器过滤路径
        filterRegistrationBean.addUrlPatterns("/*");
        //忽略过滤的形式
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
    @Bean
    public StatFilter statFilter() {
        return new StatFilter();
    }
    @Bean
    public WebStatFilter webStatFilter() {
        return new WebStatFilter();
    }
    //------------------------------------druid 监控----------------------------------------------
    @Bean(name = "tempJdbcTemplate")
    public JdbcTemplate tempJdbcTemplate(
            @Qualifier("tempDataSource") DataSource dataSource) {
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        return jdbcTemplate;
    }
}

+ 91 - 0
src/main/java/com/yihu/hos/central/rest/common/configuration/EhrUrlConfiguration.java

@ -0,0 +1,91 @@
package com.yihu.hos.central.rest.common.configuration;
import com.yihu.hos.central.rest.common.http.EHRHttpHelper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
/**
 *  EHR连接地址配置
 * @author HZY
 * @vsrsion 1.0
 * Created at 2017/7/31.
 */
@Configuration
public class EhrUrlConfiguration {
    @Value("${service-gateway.ehrMgrUrl}")
    private String ehrMgrUrl;
    @Value("${service-gateway.ehrCouldUrl}")
    private String ehrCouldUrl;
    @Value("${service-gateway.ehrAdminUrl}")
    private String ehrAdminUrl;
    @Value("${service-gateway.sslKeystore}")
    private String sslKeystore;
    @Value("${service-gateway.sslPassword}")
    private String sslPassword;
    @Value("${service-gateway.clientId}")
    private String clientId;
    @Value("${service-gateway.clientKey}")
    private String clientKey;
    //标准相关
    @Value("${schemaVersion}")
    private String schemaVersion;
    @Value("${stdVersion}")
    private String stdVersion;
    @Value("${targetPlatform}")
    private String targetPlatform;
    private static EhrUrlConfiguration configuration;
    @PostConstruct
    public void initValue(){
        configuration = this;
        EHRHttpHelper.initConfig(configuration);
    }
    public String getEhrMgrUrl() {
        return ehrMgrUrl;
    }
    public String getEhrCouldUrl() {
        return ehrCouldUrl;
    }
    public String getEhrAdminUrl() {
        return ehrAdminUrl;
    }
    public String getSslKeystore() {
        return sslKeystore;
    }
    public String getSslPassword() {
        return sslPassword;
    }
    public String getClientId() {
        return clientId;
    }
    public String getClientKey() {
        return clientKey;
    }
    public String getSchemaVersion() {
        return schemaVersion;
    }
    public String getStdVersion() {
        return stdVersion;
    }
    public String getTargetPlatform() {
        return targetPlatform;
    }
}

+ 40 - 0
src/main/java/com/yihu/hos/central/rest/common/configuration/RedisContext.java

@ -0,0 +1,40 @@
package com.yihu.hos.central.rest.common.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericToStringSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.session.data.redis.config.ConfigureRedisAction;
import java.io.Serializable;
/**
 * @author Sand
 * @version 1.0
 * @created 2015.11.25 17:33
 */
@Configuration
public class RedisContext {
    @Bean
    RedisTemplate<String, Serializable> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Serializable> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericToStringSerializer<>(Serializable.class));
        redisTemplate.setHashValueSerializer(new GenericToStringSerializer<>(Long.class));
        return redisTemplate;
    }
    @Bean
    public static ConfigureRedisAction configureRedisAction() {
        return ConfigureRedisAction.NO_OP;
    }
}

+ 138 - 0
src/main/java/com/yihu/hos/central/rest/common/configuration/SchedulingConfig.java

@ -0,0 +1,138 @@
package com.yihu.hos.central.rest.common.configuration;
import com.yihu.ehr.elasticsearch.ElasticSearchUtil;
import com.yihu.ehr.util.datetime.DateUtil;
import com.yihu.ehr.util.rest.Envelop;
import com.yihu.hos.central.rest.feign.RedisClient;
import com.yihu.hos.central.rest.services.crawler.CrawlerManager;
import com.yihu.hos.central.rest.services.errorUpload.ErrorUploadService;
import com.yihu.hos.central.rest.services.upload.UploadDetailService;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import java.util.*;
/**
 * Created by Administrator on 2017/12/20.
 */
@Configuration
@EnableScheduling
public class SchedulingConfig {
    private static Logger logger = LoggerFactory.getLogger(SchedulingConfig.class);
    @Autowired
    private CrawlerManager crawlerManager;
    @Autowired
    private UploadDetailService uploadDetailService;
    @Autowired
    private ErrorUploadService errorUploadService;
    @Autowired
    private RedisClient redisClient;
    @Autowired
    private ElasticSearchUtil elasticSearchUtil;
    @Bean
    SchedulerFactoryBean schedulerFactoryBean(){
        SchedulerFactoryBean bean = new SchedulerFactoryBean();
        bean.setAutoStartup(true);
        bean.setSchedulerName("UploadResourceScheduler");
        return bean;
    }
    @Scheduled(cron = "0 0 12 * * ?") // 每天凌晨12点执行1次,获取错误ES数据放入重传队列中
    public void pushUploadFail(){
        errorUploadService.pushData2Queue();
    }
    @Scheduled(cron = "0/1 * * * * ?") // 消费错误重传队列,做重传作业
    public void reImport(){
        crawlerManager.failUpload();
    }
    @Scheduled(cron = "0 10 0 * * ?") // 每天晚上 00点10分执行1次,采集当前省平台的上传情况数据
    public void getUploadDetail() throws Exception {
        logger.info("----------------开始定时记录采集上传情况-------------------");
        uploadDetailService.saveOrUpdate(new Date());
        logger.info("----------------定时记录采集上传情况完成-------------------");
    }
    //省平台上传统计 - 历史数据抽取任务
    @Scheduled(fixedDelay = 6000)
    public void proPlatformHistoryUpdate() throws Exception {
        String date = redisClient.get("start_upload_date");
        if (StringUtils.isEmpty(date)) {
            date = "2018-08-08";
            redisClient.set("start_upload_date",date);
        }
        if("2018-07-01".equals(date)){
            return;
        }
        Envelop envelop = uploadDetailService.uploadDatasetDetail(date);
        if (envelop.isSuccessFlg()){
            Date beginDate = DateUtil.strToDate(date);
            Date addDate = DateUtil.addDate(-1, beginDate);
            String endDate = DateUtil.toString(addDate);
            redisClient.set("start_upload_date",endDate);
            System.out.println("抽取"+ date + "数据集统计数据成功====================");
        }
    }
    //省平台上传统计抽取任务
    @Scheduled(fixedDelay = 60000)
    public void provPlatformDelayUpdate() throws Exception {
        Map<String, String> datasetDetails = crawlerManager.getDatasetDetails();
        if (!datasetDetails.isEmpty()) {
            List<Map<String, Object>> indexs = new ArrayList<>();
            List<Map<String, Object>> updates = new ArrayList<>();
            datasetDetails.forEach((key, val) -> {
                String [] _key = key.split(";");
                String [] _val = val.split(";");
                Map<String, Object> map = new HashMap<>();
                StringBuilder id = new StringBuilder();
                id.append(_key[0])
                        .append("_")
                        .append(_key[1])
                        .append("_")
                        .append(_key[3])
                        .append("_")
                        .append(_key[4]);
                Map<String, Object> source = elasticSearchUtil.findById("upload", "qc_dataset_detail", id.toString());
                map.put("_id", id.toString());
                if (source != null) {
                    map.put("count", Integer.parseInt(source.get("count").toString()) +  Integer.parseInt(_val[0]));
                    map.put("row", Integer.parseInt(source.get("row").toString()) + Integer.parseInt(_val[1]));
                    updates.add(map);
                } else {
                    map.put("org_code", _key[0]);
                    map.put("receive_date", _key[1] + " 00:00:00");
                    map.put("event_type", Integer.parseInt(_key[3]));
                    map.put("dataset", _key[4]);
                    map.put("to_platform", _key[5]);
                    map.put("dataset_name", redisClient.get("std_data_set_" + _key[2] + ":" + _key[4] + ":name"));
                    map.put("count", Integer.parseInt(_val[0]));
                    map.put("row", Integer.parseInt(_val[1]));
                    indexs.add(map);
                }
            });
            elasticSearchUtil.bulkIndex("upload", "qc_dataset_detail", indexs);
            elasticSearchUtil.bulkUpdate("upload", "qc_dataset_detail", updates);
        }
    }
}

+ 45 - 0
src/main/java/com/yihu/hos/central/rest/common/configuration/SwaggerConfig.java

@ -0,0 +1,45 @@
package com.yihu.hos.central.rest.common.configuration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.async.DeferredResult;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    private static final String PUBLIC_API = "Default";
    @Bean
    public Docket publicAPI() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName(PUBLIC_API)
                .genericModelSubstitutes(DeferredResult.class)
                .useDefaultResponseMessages(false)
                .forCodeGeneration(true)
                .pathMapping("/")
                .select()
                .paths(PathSelectors.regex("/.*"))
                .build()
                .apiInfo(publicApiInfo());
    }
    private ApiInfo publicApiInfo() {
        ApiInfo apiInfo = new ApiInfo("ESB平台API",
                "向其他服务提供的接口。",
                "1.0",
                "No terms of service",
                new Contact("admin@jkzl.com", "", ""),
                "The Apache License, Version 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0.html"
        );
        return apiInfo;
    }
}

+ 70 - 0
src/main/java/com/yihu/hos/central/rest/common/configuration/TempDataSourceConfiguration.java

@ -0,0 +1,70 @@
package com.yihu.hos.central.rest.common.configuration;
import com.yihu.hos.central.rest.common.util.TempDataSourceHelper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import javax.annotation.PostConstruct;
/**
 *  EHR连接地址配置
 * @author HZY
 * @vsrsion 1.0
 * Created at 2017/7/31.
 */
@Configuration
public class TempDataSourceConfiguration {
    @Value("${temp.datasource.driverClassName}")
    private String driverClassName;
    @Value("${temp.datasource.url}")
    private String url;
    @Value("${temp.datasource.username}")
    private String username;
    @Value("${temp.datasource.password}")
    private String password;
    private static TempDataSourceConfiguration configuration;
    @PostConstruct
    public void initValue(){
        configuration = this;
        TempDataSourceHelper.initConfig(configuration);
    }
    public String getDriverClassName() {
        return driverClassName;
    }
    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

+ 232 - 0
src/main/java/com/yihu/hos/central/rest/common/dao/DatacollectDao.java

@ -0,0 +1,232 @@
package com.yihu.hos.central.rest.common.dao;
import com.yihu.hos.central.rest.models.rs.DtoJobDataset;
import com.yihu.hos.central.rest.models.rs.RsJobDataset;
import com.yihu.hos.core.datatype.StringUtil;
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;
import org.springframework.stereotype.Repository;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.Map;
/**
 * Created by hzp on 2016/1/11.
 */
@Repository("DatacollectDao")
public class DatacollectDao extends SQLGeneralDAO {
    /**
     * 根据JobId获取Cron表达式
     */
    public String getCronByJobId(String jobId)
    {
        try{
            String sql = "select CRON_EXPRESSION from qrtz_cron_triggers where TRIGGER_NAME='"+jobId+"'";
            return super.scalarBySql(sql, String.class);
        }
        catch (Exception e)
        {
            return "";
        }
    }
    /**
     * 获取任务列表
     * @return
     */
    public DataGridResult getJobList(Map<String, Object> conditionMap, Integer page, Integer pageSize) throws Exception
    {
        StringBuilder sb = new StringBuilder();
        sb.append("from RsJobConfig t where 1=1 and valid=1 ");
        if (!StringUtil.isEmpty(conditionMap.get("jobName")))
        {
            sb.append(" and t.jobName like '%" + conditionMap.get("jobName") + "%'");
        }
        return getDataGridResult(sb.toString(),page,pageSize);
    }
    /**
     * 获取任务数据集
     * @return
     * @throws Exception
     */
    public List<RsJobDataset> getJobDataset(String jobId) throws Exception
    {
        String sql = "select * from rs_job_dataset where job_id='"+jobId+"'";
        return super.queryListBySql(sql, RsJobDataset.class);
    }
    /**
     * 获取版本名称
     */
    public String getSchemeAndVersion(String schemeVersionId) throws Exception
    {
        String sql = "select IFNULL( (select  CONCAT_WS(' -- ',s.name,v.name)  from adapter_scheme_version v " +
                "left join adapter_scheme s on s.id = v.scheme_id " +
                "where v.version='"+schemeVersionId+"'),'')";
        return super.scalarBySql(sql, String.class);
    }
    /**
     * 修改任务状态
     */
    public void validJob(String id,String valid) throws Exception
    {
        String sql = "update rs_job_config set valid='"+valid+"' where Id='"+id+"'";
        super.execute(sql);
    }
    /**
     * 删除任务关联数据集
     */
    public void deleteJobDatasetByJobId(String jobId) throws Exception
    {
        List<RsJobDataset> list = super.queryListBySql("select * from rs_job_dataset where job_id='"+jobId+"'",RsJobDataset.class);
        //判断是否存在数据
        if(list!=null && list.size()>0)
        {
            for(RsJobDataset obj :list)
            {
                super.deleteEntity(obj);
            }
        }
    }
    /**
     * 获取任务详细日志列表
     */
    public DataGridResult getJobLogDetail(Map<String, Object> conditionMap, Integer page, Integer pageSize) throws Exception
    {
        StringBuilder sb = new StringBuilder();
        sb.append("from RsJobLogDetail where 1=1 ");
        if (!StringUtil.isEmpty(conditionMap.get("jobId"))) {
            sb.append(" and job_id ='"+conditionMap.get("jobId")+"'");
        }
        if (!StringUtil.isEmpty(conditionMap.get("jobDatasetId"))) {
            sb.append(" and job_dataset_id ='"+conditionMap.get("jobDatasetId")+"'");
        }
        if (!StringUtil.isEmpty(conditionMap.get("jobStatus"))) {
            sb.append(" and jobStatus ='"+conditionMap.get("jobStatus")+"'");
        }
        if (!StringUtil.isEmpty(conditionMap.get("jobTimeFrom"))) {
            Date time = DateConvert.toDate(conditionMap.get("jobTimeFrom").toString());
            time.setHours(0);
            time.setMinutes(0);
            time.setSeconds(0);
            sb.append(" and startTime >= '"+DateConvert.toString(time)+"'");
        }
        if (!StringUtil.isEmpty(conditionMap.get("jobTimeTo"))) {
            Date time = DateConvert.toDate(conditionMap.get("jobTimeTo").toString());
            time.setHours(0);
            time.setMinutes(0);
            time.setSeconds(0);
            GregorianCalendar gc=new GregorianCalendar();
            gc.setTime(time);
            gc.add(5, 1);
            sb.append(" and startTime < '"+DateConvert.toString(gc.getTime())+"'");
        }
        sb.append("order by startTime desc");
        return getDataGridResult(sb.toString(),page,pageSize);
    }
    /**
     * 获取任务日志列表
     */
    public DataGridResult getJobLog(Map<String, Object> conditionMap, Integer page, Integer pageSize) throws Exception
    {
        StringBuilder sb = new StringBuilder();
        sb.append("from RsJobLog where 1=1 ");
        if (!StringUtil.isEmpty(conditionMap.get("jobId"))) {
            sb.append(" and jobId ='"+conditionMap.get("jobId")+"'");
        }
        sb.append("order by jobStartTime desc");
        return getDataGridResult(sb.toString(),page,pageSize);
    }
    /**
     * 获取采集日志统计
     */
    public List<Map<String, Object>> getJobLogCount(String logId) throws Exception
    {
        String sql ="select d.job_log_id,sum(d.Job_dataset_rows) as count,\n" +
                "sum(case d.job_status\n" +
                "    when '1' THEN\n" +
                "         d.Job_dataset_rows\n" +
                "    ELSE\n" +
                "         0\n" +
                "    END) as success,\n" +
                "sum(case d.job_status\n" +
                "    when '3' THEN\n" +
                "         d.Job_dataset_rows\n" +
                "    ELSE\n" +
                "         0\n" +
                "    END) as repeat_num\n" +
                "from rs_job_log_detail d\n";
        if(logId!=null && logId.length()>0)
        {
            sql += "where d.job_log_id ='"+logId+"'\n";
        }
        sql+="group by d.job_log_id ";
        return super.queryListBySql(sql);
    }
    /**
     * 任务详细根据数据集分组
     */
    public List<SimpleChartItem> getJobLogDataset(String logId) throws Exception
    {
        String sql ="select d.job_dataset_name as x,sum(d.Job_dataset_rows) as y1,\n" +
                "                sum(case d.job_status\n" +
                "                    when '1' THEN\n" +
                "                         d.Job_dataset_rows\n" +
                "                    ELSE\n" +
                "                         0\n" +
                "                    END) as y2,\n" +
                "                sum(case d.job_status\n" +
                "                    when '3' THEN\n" +
                "                         d.Job_dataset_rows\n" +
                "                    ELSE\n" +
                "                         0\n" +
                "                    END) as y3\n" +
                "                from rs_job_log_detail d\n" +
                "where d.job_log_id = '"+logId+"'\n" +
                "GROUP BY d.Job_dataset_name";
        return super.queryListBySql(sql,SimpleChartItem.class);
    }
    /**
     * 通过任务ID获取相关数据集
     */
    public List<DtoJobDataset> getDatacollectDataset(String jobId) throws Exception
    {
        //通过jobId获取机构版本号
        String sqlVersion ="select a.adapter_std_version\n" +
                "from rs_job_config c,(SELECT s.adapter_std_version,v.version from adapter_scheme s,adapter_scheme_version v where s.id=v.scheme_id) a\n" +
                "where a.version = c.scheme_version\n" +
                "and c.id='"+jobId+"'";
        String version = super.scalarBySql(sqlVersion,String.class);
        String sql = "select d.*,\n" +
                "t.datasource_id,t.datasource_name,t.config,t.type,t.org_code\n" +
                "from rs_job_dataset d\n" +
                "LEFT JOIN (select s.dataset_id,s.datasource_id,ss.name as datasource_name,ss.config,ss.type,ss.org_code \n" +
                "\tfrom rs_datasource_dataset s,(select ds.id,ds.name,ds.config,ds.type,o.code as org_code from system_datasource ds,system_organization o where ds.org_id=o.id) ss where s.datasource_id=ss.id and s.Std_version='"+version+"') t \n" +
                "on d.job_dataset_id = t.dataset_id \n" +
                "where d.job_id='"+jobId+"'\n" +
                "order by d.sort";
        return super.queryListBySql(sql,DtoJobDataset.class);
    }
}

+ 15 - 0
src/main/java/com/yihu/hos/central/rest/common/filter/HibernateFilter.java

@ -0,0 +1,15 @@
package com.yihu.hos.central.rest.common.filter;
import org.springframework.orm.hibernate5.support.OpenSessionInViewFilter;
import javax.servlet.annotation.WebFilter;
/**
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/8/12.
 */
@WebFilter(filterName="SpringOpenSessionInViewFilter",urlPatterns="/*")
public class HibernateFilter extends OpenSessionInViewFilter {
}

+ 88 - 0
src/main/java/com/yihu/hos/central/rest/common/format/AdapterBase.java

@ -0,0 +1,88 @@
package com.yihu.hos.central.rest.common.format;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterSchemeVersionModel;
import com.yihu.hos.central.rest.services.standard.adapter.AdapterDictService;
import com.yihu.hos.central.rest.services.standard.adapter.AdapterMetadataService;
import com.yihu.hos.central.rest.services.standard.adapter.AdapterSchemeVersionService;
import com.yihu.hos.central.rest.services.standard.standard.StdDatasetService;
import com.yihu.hos.central.rest.services.standard.standard.StdDictEntryService;
import com.yihu.hos.central.rest.services.standard.standard.StdMetadataService;
import com.yihu.hos.web.framework.model.standard.AdapterVersion;
/**
 * 适配器基类,DAO缓存
 *
 * @created Created by Air on 2015/6/10.
 */
public class AdapterBase {
    private static AdapterSchemeVersionService adapterSchemeVersionService;
    private static AdapterMetadataService adapterMetadataService;
    private static AdapterDictService adapterDictService;
    private static StdMetadataService stdMetadataService;
    private static StdDatasetService stdDatasetService;
    private static StdDictEntryService stdDictEntryService;
    protected AdapterVersion adapterVersion;
    public AdapterVersion getAdapterVersion() {
        AdapterSchemeVersionModel adapterSchemeVersionModel = getAdapterSchemeVersionService().getEhrAdapterVersionLasted();
        if (adapterSchemeVersionModel == null) {
            adapterSchemeVersionModel=new AdapterSchemeVersionModel();
        }
        String version = adapterSchemeVersionModel.getVersion();
         adapterVersion = new AdapterVersion(version);
        return adapterVersion;
    }
    public static AdapterSchemeVersionService getAdapterSchemeVersionService() {
        return adapterSchemeVersionService;
    }
    public static void setAdapterSchemeVersionService(AdapterSchemeVersionService adapterSchemeVersionService) {
        AdapterBase.adapterSchemeVersionService = adapterSchemeVersionService;
    }
    public static AdapterMetadataService getAdapterMetadataService() {
        return adapterMetadataService;
    }
    public static void setAdapterMetadataService(AdapterMetadataService adapterMetadataService) {
        AdapterBase.adapterMetadataService = adapterMetadataService;
    }
    public static AdapterDictService getAdapterDictService() {
        return adapterDictService;
    }
    public static void setAdapterDictService(AdapterDictService adapterDictService) {
        AdapterBase.adapterDictService = adapterDictService;
    }
    public static StdMetadataService getStdMetadataService() {
        return stdMetadataService;
    }
    public static void setStdMetadataService(StdMetadataService stdMetadataService) {
        AdapterBase.stdMetadataService = stdMetadataService;
    }
    public static StdDatasetService getStdDatasetService() {
        return stdDatasetService;
    }
    public static void setStdDatasetService(StdDatasetService stdDatasetService) {
        AdapterBase.stdDatasetService = stdDatasetService;
    }
    public static StdDictEntryService getStdDictEntryService() {
        return stdDictEntryService;
    }
    public static void setStdDictEntryService(StdDictEntryService stdDictEntryService) {
        AdapterBase.stdDictEntryService = stdDictEntryService;
    }
}

+ 72 - 0
src/main/java/com/yihu/hos/central/rest/common/format/AdapterScheme.java

@ -0,0 +1,72 @@
package com.yihu.hos.central.rest.common.format;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterDatasetModel;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterMetadataModel;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterSchemeVersionModel;
import com.yihu.hos.central.rest.services.standard.adapter.AdapterDatasetService;
import com.yihu.hos.web.framework.model.standard.AdapterVersion;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 适配方案
 * 一个适配方案可能有一到多个机构要采集数据
 *
 * @created Created by Air on 2015/6/3.
 */
public class AdapterScheme  extends AdapterBase{
    @Resource(name = AdapterDatasetService.BEAN_ID)
    private AdapterDatasetService adapterDatasetService;
    private HashMap<String, List<AdapterMetadataModel>> adapterMetaDataMap;
    public AdapterScheme() {
    }
    public synchronized HashMap<String, List<AdapterMetadataModel>> getAdapterMetaDataMap() {
        if (adapterMetaDataMap ==null){
            AdapterSchemeVersionModel adapterSchemeVersionModel = getAdapterSchemeVersionService().getEhrAdapterVersionLasted();
            if (adapterSchemeVersionModel == null) {
                adapterSchemeVersionModel=new AdapterSchemeVersionModel();
            }
            String version = adapterSchemeVersionModel.getVersion();
            AdapterVersion adapterVersion = new AdapterVersion(version);
            adapterMetaDataMap =new HashMap<>();
            Map<String, String> condition = new HashMap<>();
            condition.put("column", "adapter_dataset_code");
            String conditionStr ="";
            ObjectMapper mapper = new ObjectMapper();
            try {
                conditionStr = mapper.writeValueAsString(condition);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
            List<AdapterDatasetModel> adapterDataSets = adapterDatasetService.getAdapterDatasetNotNullList(adapterVersion, conditionStr);
            for (AdapterDatasetModel adapterDataSet:adapterDataSets){
                List<AdapterMetadataModel> adapterMetaDataTList = getAdapterMetadataService().getAdapterMetadataByDataset(version, adapterDataSet.getId());
                if (adapterMetaDataTList!=null && adapterMetaDataTList.size()>0){
                    adapterMetaDataMap.put(adapterDataSet.getStdDatasetCode(), adapterMetaDataTList);
                }
            }
        }
        return adapterMetaDataMap;
    }
    public List<AdapterMetadataModel> getAdapterMetaDatas(String dataSetCode){
        if (dataSetCode==null){
            return new ArrayList<>();
        }
        return getAdapterMetaDataMap().get(dataSetCode);
    }
}

+ 679 - 0
src/main/java/com/yihu/hos/central/rest/common/format/DataSetTransformer.java

@ -0,0 +1,679 @@
package com.yihu.hos.central.rest.common.format;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.yihu.ehr.dbhelper.jdbc.DBHelper;
import com.yihu.ehr.elasticsearch.ElasticSearchUtil;
import com.yihu.hos.central.rest.cache.OrgAdapterCache;
import com.yihu.hos.central.rest.common.http.EHRHttpHelper;
import com.yihu.hos.central.rest.models.crawler.adapter.AdapterDataSet;
import com.yihu.hos.central.rest.models.crawler.adapter.AdapterDict;
import com.yihu.hos.central.rest.models.crawler.adapter.AdapterMetaData;
import com.yihu.hos.central.rest.models.crawler.adapter.StdDataSet;
import com.yihu.hos.central.rest.models.crawler.transform.DictDataType;
import com.yihu.hos.central.rest.models.crawler.transform.TransformType;
import com.yihu.hos.central.rest.models.standard.standard.StdMetaDataModel;
import com.yihu.hos.central.rest.services.qc.EsSimplePackage;
import com.yihu.hos.central.rest.services.qc.QcRuleCheckService;
import com.yihu.hos.core.datatype.DateUtil;
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.web.framework.constant.ErrorType;
import com.yihu.hos.web.framework.exception.*;
import com.yihu.hos.web.framework.util.springutil.SpringBeanUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.RedisTemplate;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.text.ParseException;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
/**
 * 目前只处理json格式
 * <p>
 * json 格式
 * {
 * "inner_version":"xxxxx",
 * "patient_id":"xxxx",
 * "event_no":"xxxx",
 * "code":"dataset_code",
 * "org_code":"xxxx"
 * "data":
 * [{"metadata_code1":"5","metadata_code2":"6"},
 * [{"metadata_code1":"1","metadata_code2":"2"}]}
 * <p>
 * Created by Air on 2015/6/4.
 */
public class DataSetTransformer implements IDataTransformer {
    private static final String INDEX = "json_archives_qc";
    private static final String QC_METADATA_INFO = "qc_metadata_info";
    private ArrayNode beforeTranData;
    private CopyOnWriteArrayList<JsonNode> afterTranData;
    private String dataSetCode;
    private static DBHelper db;
    private static Logger logger = LoggerFactory.getLogger(DataSetTransformer.class);
    private static ObjectMapper objectMapper = new ObjectMapper();
    private String schemaVersion = EHRHttpHelper.schemaVersion;
    private String stdVersion = EHRHttpHelper.stdVersion;
    private String targetPlatform = EHRHttpHelper.targetPlatform;
    static ElasticSearchUtil elasticSearchUtil = null;
    static RedisTemplate<String, Serializable> redisTemplate = null;
    static QcRuleCheckService qcRuleCheckService = null;
    public JsonNode getBeforeTranData() {
        return beforeTranData;
    }
    public void setBeforeTranData(ArrayNode beforeTranData) {
        this.beforeTranData = beforeTranData;
    }
    public CopyOnWriteArrayList getAfterTranData() {
        return afterTranData;
    }
    public void setAfterTranData(CopyOnWriteArrayList afterTranData) {
        this.afterTranData = afterTranData;
    }
    static {
        elasticSearchUtil = SpringBeanUtil.getService(ElasticSearchUtil.class);
        redisTemplate = SpringBeanUtil.getService("redisTemplate");
        qcRuleCheckService = SpringBeanUtil.getService(QcRuleCheckService.class);
    }
    public DataSetTransformer() {
        if (db == null) {
            db = new DBHelper();
        }
    }
    @Override
    public boolean transfer(EsSimplePackage pack, Map<String, AdapterDataSet> dataSetMap, String uploadCode) throws ParseException {
        if (this.beforeTranData != null) {
            //logger.info("上传的table:"+dataSetCode);
            //logger.info("准备上传的数据:"+jsonObject.toString());
            AdapterDataSet adapterDataSet = dataSetMap.get(uploadCode);
            boolean transfer = transferJson(pack, this.beforeTranData, adapterDataSet);
            return transfer;
        }
        return false;
    }
    /**
     * 转换时间格式为utc、
     *
     * @param dataSetMap
     * @return
     */
    public boolean transferTimeFormat(Map<String, StdDataSet> dataSetMap, String dataSetCode) {
        if (beforeTranData != null) {
            try {
                ArrayNode jsonArray = (ArrayNode) beforeTranData;
                StdDataSet stdDataSet = dataSetMap.get(dataSetCode);
                Map<Long, Map<String, StdMetaDataModel>> stdDataSetMetasMap = stdDataSet.getStdDataSetMetasMap();
                Map<String, StdMetaDataModel> stdMetaDataModelMap = stdDataSetMetasMap.get(stdDataSet.getStdDataSetId());
                for (Object objectRow : jsonArray) {
                    if (objectRow instanceof JsonNode || objectRow instanceof ObjectNode) {
                        ObjectNode jsonObject = (ObjectNode) objectRow;
                        Iterator<Map.Entry<String, JsonNode>> fields = jsonObject.fields();
                        while (fields.hasNext()) {
                            Map.Entry<String, JsonNode> next = fields.next();
                            String key = next.getKey();
                            JsonNode jsonNode = next.getValue();
                            String value = jsonNode.asText();
                            String stdValue = transferElemTime(stdMetaDataModelMap, key, value);
                            if (stdValue == null) {
                                stdValue = "";
                            }
                            jsonObject.put(key, stdValue);
//                            if (jsonNode instanceof ObjectNode) {
//                                ObjectNode objectNode = (ObjectNode) next;
//                                objectNode.put(key, stdValue);
//                            }
                        }
                    }
                }
                return true;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return false;
        }
        return false;
    }
    public TransformType getTransformType() {
        return TransformType.DATA_SET_JSON;
    }
    /**
     * json 格式
     * {
     * "inner_version":"xxxxx",
     * "patient_id":"xxxx",
     * "event_no":"xxxx",
     * "code":"dataset_code",
     * "data":
     * [{"metadata_code1":"5","metadata_code2":"6"},
     * [{"metadata_code1":"1","metadata_code2":"2"}]}
     *
     * @param jsonArray      原始数据
     * @param adapterDataSet 目标标准
     * @return
     */
    public boolean transferJson(EsSimplePackage pack, ArrayNode jsonArray, AdapterDataSet adapterDataSet) throws ParseException {
        List<Map<String, Object>> qcDataList = new ArrayList<>();
        Set<String> existSet = new HashSet<>(); //存放已经生成了质控信息的数据元
        for (Object objectRow : jsonArray) {
            if (objectRow instanceof JsonNode) {
                try {
                    List<Map<String, Object>> maps = transferJsonRow(existSet, pack, (ObjectNode) objectRow, adapterDataSet);
                    if (!maps.isEmpty()) {
                        qcDataList.addAll(maps);
                        //保存数据元质控数据
                        if (qcDataList.size() > 500) {
                            elasticSearchUtil.bulkIndex(INDEX, QC_METADATA_INFO, qcDataList);
                            qcDataList.clear();
                        }
                    }
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
        }
        //保存数据元质控数据
        if (!qcDataList.isEmpty()) {
            elasticSearchUtil.bulkIndex(INDEX, QC_METADATA_INFO, qcDataList);
            qcDataList.clear();
        }
        return true;
    }
    /**
     * @param existSet       已质控的数据元
     * @param pack           资源包索引数据
     * @param jsonObject     资源数据
     * @param adapterDataSet 适配方案数据
     * @return
     * @throws ParseException
     */
    public List<Map<String, Object>> transferJsonRow(Set<String> existSet, EsSimplePackage pack, ObjectNode jsonObject, AdapterDataSet adapterDataSet) throws ParseException {
        Map<String, Object> map = new HashMap();
        String targetDataSet = adapterDataSet.getAdapterDataSetT().getStdDatasetCode();
        Map<String, AdapterMetaData> adapterMetaDataMap = adapterDataSet.getAdapterMetaDataMap();
        Iterator<String> iterator1 = adapterMetaDataMap.keySet().iterator();
        Map<String, String> stdValueMap = new HashMap<>();
        List<Map<String, Object>> qcDataList = new ArrayList<>();
        while (iterator1.hasNext()) {
            try {
                stdValueMap.clear();
                String stdKey = iterator1.next();
                Object stdValue = "";
                AdapterMetaData adapterMetaData = adapterMetaDataMap.get(stdKey);
                String originKey = adapterMetaData.getAdapterMetadataModel().getAdapterMetadataCode();
                String originValue = "";
                if (!StringUtil.isEmpty(originKey)) {
                    //字段有适配上平台标准
                    originValue = jsonObject.get(originKey) == null ? null : jsonObject.get(originKey).asText();
                    if (stdKey != null) {
                        stdValueMap = transferElem(adapterDataSet, stdKey, originValue);
                        stdValue = stdValueMap.keySet().toArray()[0] == null ? "" : stdValueMap.keySet().toArray()[0].toString();//转换后的值
                        stdValue = transforFiledType(adapterDataSet, stdKey, stdValue, jsonObject);
                        map.put(stdKey.toUpperCase(), stdValue);
                    }
                } else {
                    //字段没适配上平台标准
                    stdValue = transforFiledType(adapterDataSet, stdKey, stdValue, jsonObject);
                    stdValueMap.put(stdValue.toString(), "");
                    map.put(stdKey, stdValue);
                }
                if (existSet.contains(targetDataSet + "$" + stdKey)) { //如果该数据元已经有质控数据则跳过
                    continue;
                } else {
                    String redisKey = "qc_" + adapterDataSet.getTargetVersion().getVersion() + ":" + targetDataSet + ":" + adapterMetaData.getAdapterMetadataModel().getStdMetadataCode();
                    Serializable serializable = redisTemplate.opsForValue().get(redisKey);
                    if (serializable != null) {
                        int error = -1;
                        Class clazz = qcRuleCheckService.getClass();
                        String method = serializable.toString();
                        Method _method = clazz.getMethod(method, new Class[]{String.class, String.class, String.class, String.class});
                        _method.setAccessible(true);
                        ErrorType errorType = null;
                        try {
                            String transformValue = stdValueMap.get(stdValue) == null ? "" : stdValueMap.get(stdValue);
                            errorType = (ErrorType) _method.invoke(qcRuleCheckService, adapterDataSet.getTargetVersion().getVersion(), targetDataSet, adapterMetaData.getAdapterMetadataModel().getStdMetadataCode(), transformValue);
                        } catch (Exception e) {
                            Throwable cause = e.getCause();
                            errorType = ErrorType.ExceptionError;
                            if (cause instanceof IllegalJsonFileException) {
                                error = 2;
                            } else if (cause instanceof IllegalJsonDataException) {
                                error = 3;
                            } else if (cause instanceof IllegalEmptyCheckException) {//非空
                                error = 4;
                            } else if (cause instanceof IllegalValueCheckException) {//值域超出
                                error = 5;
                            } else if (cause instanceof IllegalTypeCheckException) {//类型
                                error = 6;
                            } else if (cause instanceof IllegalFormatCheckException) {//格式
                                error = 7;
                            } else if (cause instanceof AnalyzerException) {
                                error = 21;
                            }
                        }
                        if (errorType != ErrorType.Normal) {
                            Map<String, Object> qcMetadataRecord = new HashMap<>();
                            StringBuilder _id = new StringBuilder();
                            _id.append(jsonObject.get("rowkey").asText())
                                    .append("$")
                                    .append(targetDataSet)
                                    .append("$")
                                    .append(adapterMetaData.getAdapterMetadataModel().getStdMetadataCode())
                                    .append("$").append(method);
                            qcMetadataRecord.put("_id", _id.toString());
                            JsonNode patientIdNode = jsonObject.get("JDSA00_01_001");
                            qcMetadataRecord.put("patient_id",patientIdNode==null? "" : patientIdNode.asText());
                            qcMetadataRecord.put("pack_id", pack == null ? "" : pack.get_id());
                            qcMetadataRecord.put("pack_pwd", pack == null ? "" : pack.getPwd());
                            qcMetadataRecord.put("rowkey", jsonObject.get("rowkey").asText());
                            qcMetadataRecord.put("adapter_version", schemaVersion);
                            qcMetadataRecord.put("org_code", jsonObject.get("org_code").asText());
                            qcMetadataRecord.put("org_name", pack.getOrg_name());
                            qcMetadataRecord.put("org_area", pack.getOrg_area());
                            qcMetadataRecord.put("dept", "");
                            qcMetadataRecord.put("diagnosis_name", "");
                            qcMetadataRecord.put("receive_date", DateUtil.getCurrentString(DateUtil.DEFAULT_YMDHMSDATE_FORMAT));
                            qcMetadataRecord.put("event_date", DateUtil.utcToDate(jsonObject.get("event_date").asText(), DateUtil.DEFAULT_YMDHMSDATE_FORMAT));
                            qcMetadataRecord.put("event_type", jsonObject.get("event_type").asText());
                            qcMetadataRecord.put("event_no", jsonObject.get("event_no").asText());
                            qcMetadataRecord.put("version", adapterDataSet.getTargetVersion().getVersion());
                            qcMetadataRecord.put("dataset", targetDataSet);
                            qcMetadataRecord.put("metadata", adapterMetaData.getAdapterMetadataModel().getStdMetadataCode());
                            qcMetadataRecord.put("transform_value", stdValue);
                            qcMetadataRecord.put("value", originValue);
                            qcMetadataRecord.put("qc_step", 3); //标准质控环节
                            qcMetadataRecord.put("qc_error_type", errorType.getType()); //标准质控错误类型
                            qcMetadataRecord.put("qc_error_name", errorType.getName()); //标准质控错误名称
                            qcMetadataRecord.put("qc_error_message", String.format("%s failure for meta data %s of %s in %s", method, adapterMetaData.getAdapterMetadataModel().getStdMetadataCode(), targetDataSet, adapterDataSet.getOriginVersion().getVersion()));
                            qcMetadataRecord.put("create_date", DateUtil.getCurrentString(DateUtil.DEFAULT_YMDHMSDATE_FORMAT));
                            qcMetadataRecord.put("error_type", error); //错误类型
                            existSet.add(targetDataSet + "$" + stdKey);
                            qcDataList.add(qcMetadataRecord);
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        map.put("rowkey",jsonObject.get("rowkey").asText());
        Iterator<String> iterator = map.keySet().iterator();
        JsonNode afterTranTempData = objectMapper.createObjectNode();
        while (iterator.hasNext()) {
            String key = iterator.next();
            Object value = map.get(key);
            setObjectNodeValue((ObjectNode) afterTranTempData, key, value);
        }
        if (afterTranData == null) {
            afterTranData = new CopyOnWriteArrayList<JsonNode>();
        }
        this.afterTranData.add(afterTranTempData);
        return qcDataList;
    }
    /**
     * @param adapterDataSet 适配数据集
     * @param code           目标-数据元编码
     * @param originData     源- 数据
     * @return Map<String,String> , key:转换后的标准值,value:未设置成系统默认值之前的值
     * @modify 2015.09.16 airhead 增加值与编码转换
     */
    public Map<String, String> transferElem(AdapterDataSet adapterDataSet, String code, String originData) {
        Map<String, AdapterMetaData> adapterMetaDataMap = adapterDataSet.getAdapterMetaDataMap();
        AdapterMetaData adapterMetaData = adapterMetaDataMap.get(code.toUpperCase());
        AdapterDict adapterDict = adapterMetaData.getAdapterDict();
        Map<String, String> result = new HashMap<>();
        if (adapterDict == null) {
            if (adapterMetaData.getAdapterMetadataModel().getStdDictId() == null) {
                result.put(originData, originData);
                return result;
            } else {
                result.put(adapterMetaData.getAdapterMetadataModel().getAdapterDefault(), originData);
                return result;
            }
        }
        String ehrData = "";
        DictDataType adapterDictDataType = adapterMetaData.getAdapterDictDataType();
        if (adapterDictDataType == DictDataType.VALUE) {
            if (StringUtil.isBlank(originData)) {
                //适配的数据元无值
                ehrData = adapterMetaData.getAdapterMetadataModel().getAdapterDefault();
                result.put(ehrData, originData);
            } else {
                ehrData = adapterDict.getAdapterValueToCodeMap().get(originData);
                if (StringUtil.isEmpty(ehrData)) {
                    //没有设配到字典,获取默认字典项
                    ehrData = adapterMetaData.getAdapterMetadataModel().getAdapterDefault();
                    result.put(ehrData, "");
                } else {
                    result.put(ehrData, ehrData);
                }
            }
        } else if (adapterDictDataType == DictDataType.CODE) {
            if (StringUtil.isBlank(originData)) {
                //适配的数据元无值
                ehrData = adapterMetaData.getAdapterMetadataModel().getAdapterDefault();
                result.put(ehrData, "");
            } else {
                ehrData = adapterDict.getAdapterCodeToCodeMap().get(originData);
                if (StringUtil.isEmpty(ehrData)) {
                    //没有设配到字典,获取默认字典项
                    ehrData = adapterMetaData.getAdapterMetadataModel().getAdapterDefault();
                    result.put(ehrData, "");
                } else {
                    result.put(ehrData, ehrData);
                }
            }
        }
        if (StringUtil.isEmpty(ehrData)) {
            //没有设配到字典,获取默认字典项
            ehrData = adapterMetaData.getAdapterMetadataModel().getAdapterDefault();
            result.put(ehrData, "");
        }
        return result;
    }
    /**
     * 字段名转换
     *
     * @param adapterDataSet
     * @param key
     * @return
     */
    public String transferField(AdapterDataSet adapterDataSet, String key) {
        AdapterMetaData adapterMetaData = adapterDataSet.getAdapterMetaDataMap().get(key);
        if (adapterMetaData != null) {
            return adapterMetaData.getAdapterMetadataModel().getStdMetadataCode();
        } else {
            return null;
        }
    }
    public String transferElemTime(Map<String, StdMetaDataModel> stdMetaDataModelMap, String code, String esbData) {
        StdMetaDataModel stdMetaData = stdMetaDataModelMap.get(code);
        if (stdMetaData == null || stdMetaData.getColumnType() == null) {
            return esbData;
        }
        String columnType = stdMetaData.getColumnType();
        try {
            if ("DATE".equals(columnType) || "DATETIME".equals(columnType)) {
                //时间转换
                String utcDate = DateUtil.utcToDate(esbData, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
                if (StringUtil.isEmpty(utcDate)) {
                    return "SYSDATE";
                } else {
                    return "to_date('" + utcDate + "','YYYY-MM-DD HH24:MI:SS')";
                }
            } else {
                return esbData;
            }
//            if ("DATE".equals(columnType) || "DATETIME".equals(columnType)) {
//                //时间转换
//                String utcDate = DateUtil.utcToDate(esbData, DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
//                return utcDate;
//            } else {
//                return esbData;
//            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
    public Object transforFiledType(AdapterDataSet adapterDataSet, String stdKey, Object stdValue, ObjectNode jsonObject) {
        AdapterMetaData adapterMetaData = adapterDataSet.getAdapterMetaDataMap().get(stdKey);
        Object defaultValue = adapterMetaData.getAdapterMetadataModel().getAdapterDefault();
        StdMetaDataModel stdMetaDataModel = adapterDataSet.getTargetMetaDataMap().get(stdKey);
        if (stdMetaDataModel != null) {
            if (stdValue != null && !StringUtil.isEmpty(stdValue.toString())) {
                //目标字段有值
                defaultValue = stdValue;
            }
        } else {
           logger.error("stdMetaDataModel获取失败!stdKey: " + stdKey);
        }
        defaultValue = transforColumType(adapterMetaData, stdMetaDataModel, defaultValue, jsonObject);
        return defaultValue;
    }
    //转换字段类型 & 默认值设置
    public Object transforColumType(AdapterMetaData adapterMetaDataModel, StdMetaDataModel stdMetaDataModel, Object stdValue, ObjectNode jsonObject) {
        Object result = null;
        try {
            String defaultValue = adapterMetaDataModel.getAdapterMetadataModel().getAdapterDefault();
            String columnType = stdMetaDataModel.getColumnType();
            Long dictId = stdMetaDataModel.getDictId();
            if (StringUtil.isEmpty(stdValue)) {
                switch (columnType) {
                    case "DATETIME":
                        result = "SYSDATE";
                        break;
                    case "DATE":
                        result = "SYSDATE";
                        break;
                    case "INT":
                        result = StringUtil.isEmpty(defaultValue) ? 1 : Integer.parseInt(defaultValue.toString());
                        break;
                    case "DOUBLE":
                        result = StringUtil.isEmpty(defaultValue) ? 0.0 : Double.parseDouble(defaultValue.toString());
                        break;
                    default:
                        if (StringUtils.isNotBlank(defaultValue)) {
                            result = getVarcharPlaceholderValue(defaultValue, jsonObject);
                        } else {
                            result = defaultValue;
                        }
                        //默认值,判断是否超过长度等,超过则截取
                        if (result.toString().length() > Integer.parseInt(stdMetaDataModel.getColumnLength())) {
                            //截取的时候,截取前面的 (以免rowkey被截断,导致主键一致,插入不进去)
                            String s = result.toString();
                            result = StringUtils.substring(s, s.length()-Integer.parseInt(stdMetaDataModel.getColumnLength(), s.length()));
                        }
                        break;
                }
            } else {
                switch (columnType) {
                    case "DATETIME":
                        result = getTranferDateStr(stdMetaDataModel,stdValue,jsonObject);
                        break;
                    case "DATE":
                        result = getTranferDateStr(stdMetaDataModel,stdValue,jsonObject);
                        break;
                    case "INT":
                        String val = stdValue.toString();
                        try {
                            result = Integer.parseInt(val);
                        } catch (NumberFormatException e) {
                            // bug:  54岁--->>需要转成54
                            try {
                                String s = stdValue.toString().replaceAll("[^0-9]", "");
                                result = Integer.parseInt(s);
                            } catch (Exception ex) {
                                logger.error("转换失败,当前stdValue=" + stdValue);
                            }
                        }
                        break;
                    case "DOUBLE":
                        try {
                            val = stdValue.toString();
                            result = Double.parseDouble(val);
                        } catch (NumberFormatException e) {
                            try {
                                String s = stdValue.toString().replaceAll("[^0-9.]", "");
                                result = Double.parseDouble(s);
                            } catch (Exception ex) {
                                logger.error("转换失败,当前stdValue=" + stdValue);
                            }
                        }
                        break;
                    default:
                        if (stdValue.toString().startsWith("{") && stdValue.toString().endsWith("}")) {
                            result = getVarcharPlaceholderValue(stdValue.toString(), jsonObject);
                            //默认值,判断是否超过长度等,超过则截取
                            if (result.toString().length() > Integer.parseInt(stdMetaDataModel.getColumnLength())) {
                                result = StringUtils.substring(result.toString(), 0, Integer.parseInt(stdMetaDataModel.getColumnLength()));
                            }
                        } else if (dictId == null || StringUtil.isEmpty(dictId.toString()) || 0==dictId) { //不需要字典转换
                            if (StringUtils.isNotBlank(defaultValue) && defaultValue.equalsIgnoreCase(stdValue + "")) {
                                result = getVarcharPlaceholderValue(defaultValue, jsonObject);
                            } else {
                                if (stdValue.toString().length() > Integer.parseInt(stdMetaDataModel.getColumnLength())) {
                                    result = StringUtils.substring(stdValue.toString(), 0, Integer.parseInt(stdMetaDataModel.getColumnLength()));
                                } else {
                                    result = stdValue.toString();
                                }
                            }
                        } else {
                            result = stdValue.toString();
                        }
                        break;
                }
            }
        } catch (NumberFormatException e) {
            logger.error("异常转换字段,dataSetId: " + stdMetaDataModel.getDataSetId() + " ,code:" + stdMetaDataModel.getInnerCode(), e);
        }
        if (result == null) {
            result = new Object();
        }
        return result;
    }
    public void setObjectNodeValue(ObjectNode objectNode, String key, Object value) {
        if (value instanceof Integer) {
            objectNode.put(key, ((Integer) value).intValue());
        } else if (value instanceof Double) {
            objectNode.put(key, ((Double) value).doubleValue());
        } else if (value instanceof Number) {
            objectNode.put(key, ((Double) value).doubleValue());
        } else {
            objectNode.put(key, value.toString());
        }
    }
    public String getDataSetCode() {
        return dataSetCode;
    }
    public void setDataSetCode(String dataSetCode) {
        this.dataSetCode = dataSetCode;
    }
    //字符串类型等的(非时间格式)
    private  String getVarcharPlaceholderValue(String placeholder, ObjectNode jsonObject) {
        String result = "";
        if (StringUtils.isNotBlank(placeholder) && placeholder.startsWith("{") && placeholder.endsWith("}")) {
            String placeHolderContent = placeholder.substring(1,placeholder.length()-1).toLowerCase();
            if ("uuid".equalsIgnoreCase(placeHolderContent)) {
                result = UUID.randomUUID().toString().replaceAll("-", "");
            } else if("org_code".equalsIgnoreCase(placeHolderContent)){
                if (jsonObject == null || jsonObject.get("org_code") == null) {
                    return "";
                } else {
                    result = jsonObject.get("org_code").asText();
                    //转换成 省平台的机构编码 (如果不存在,则保存原值)
                    String stdOrgCode = OrgAdapterCache.getProvinceOrgCode(schemaVersion, result);
                    if(!StringUtils.isEmpty(stdOrgCode)){
                        result = stdOrgCode;
                    }
                }
            }else {
                if (jsonObject == null || jsonObject.get(placeHolderContent) == null) {
                    result = "";
                } else {
                    result = jsonObject.get(placeHolderContent).asText();
                }
            }
        } else {
            result = placeholder;
        }
        return result;
    }
    public String getSchemaVersion() {
        return schemaVersion;
    }
    public String getStdVersion() {
        return stdVersion;
    }
    public String getTargetPlatform() {
        return targetPlatform;
    }
    private String getTranferDateStr(StdMetaDataModel stdMetaDataModel,Object stdValue, ObjectNode jsonObject){
        String result;
        if ("{sysdate}".equals(stdValue.toString().trim())) {
            result = "SYSDATE";
        } else if("{event_date}".equals(stdValue.toString().trim())){
            String utcDate = DateUtil.utcToDate(jsonObject.get("event_date").asText(), DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
            result = "to_date('" + utcDate + "','YYYY-MM-DD HH24:MI:SS')";
        } else {
            String utcDate = DateUtil.utcToDate(stdValue.toString(), DateUtil.DEFAULT_YMDHMSDATE_FORMAT);
            if (StringUtil.isEmpty(utcDate)) {
                logger.debug("stdDataSetId:"+stdMetaDataModel.getDataSetId() + " ,metadataCode: "+stdMetaDataModel.getInnerCode() +" , 转换时间格式异常,原值:"+stdValue);
                result = "SYSDATE";
            } else {
                result = "to_date('" + utcDate + "','YYYY-MM-DD HH24:MI:SS')";
            }
        }
        return result;
    }
}

+ 21 - 0
src/main/java/com/yihu/hos/central/rest/common/format/IDataTransformer.java

@ -0,0 +1,21 @@
package com.yihu.hos.central.rest.common.format;
import com.yihu.hos.central.rest.models.crawler.adapter.AdapterDataSet;
import com.yihu.hos.central.rest.services.qc.EsSimplePackage;
import java.text.ParseException;
import java.util.Map;
/**
 * @author Airhead
 * @version 1.0
 * @created 22-5月-2015 11:24:26
 */
public interface IDataTransformer {
    boolean transfer(EsSimplePackage pack, Map<String, AdapterDataSet> dataSetMap, String dataSetCode) throws ParseException;
}

+ 92 - 0
src/main/java/com/yihu/hos/central/rest/common/format/PreparData.java

@ -0,0 +1,92 @@
package com.yihu.hos.central.rest.common.format;
import com.yihu.hos.central.rest.models.crawler.adapter.AdapterDataSet;
import com.yihu.hos.central.rest.models.crawler.adapter.StdDataSet;
import com.yihu.hos.web.framework.model.standard.StandardVersion;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class PreparData {
    private static Map<String,Boolean> adapterFlg = new HashMap<>();//key值为适配
    private static Map<String,Boolean> stdFlg = new HashMap<>();
    private static Map<String, Map<String, AdapterDataSet>> adapterDataSetVersionMap = new HashMap<>();
    private static Map<String, Map<String, StdDataSet>> stdDataSetVersionMap = new HashMap<>();
    private static StandardVersion targetVersion = null;
    private static StandardVersion originVersion = null;
    private static Map<String,List<String>> stdDataSetMap = new HashMap<>();//list中排除 医疗资源-医疗机构信息(HDSD00_18) 和  医疗资源-卫生人员(HDSC00_04) // 这2个数据集的数据不在 hbase中
    public static Map<String, Boolean> getAdapterFlg() {
        return adapterFlg;
    }
    public static void setAdapterFlg(Map<String, Boolean> adapterFlg) {
        PreparData.adapterFlg = adapterFlg;
    }
    public static Map<String, Boolean> getStdFlg() {
        return stdFlg;
    }
    public static void setStdFlg(Map<String, Boolean> stdFlg) {
        PreparData.stdFlg = stdFlg;
    }
    /**
     * 根据 适配方案版本号 判断数据是否准本好
     * @return
     */
    public static Boolean isPrepar(String schemeVersion){
        Boolean adapterflg = adapterFlg.get(schemeVersion);
        Boolean stdflg = stdFlg.get(schemeVersion);
        if(adapterflg == null || stdflg == null){
            return false;
        }
        if(adapterflg && stdflg){
            return true;
        }
        return false;
    }
    public static Map<String, Map<String, AdapterDataSet>> getAdapterDataSetVersionMap() {
        return adapterDataSetVersionMap;
    }
    public static void setAdapterDataSetVersionMap(Map<String, Map<String, AdapterDataSet>> adapterDataSetVersionMap) {
        PreparData.adapterDataSetVersionMap = adapterDataSetVersionMap;
    }
    public static Map<String, Map<String, StdDataSet>> getStdDataSetVersionMap() {
        return stdDataSetVersionMap;
    }
    public static void setStdDataSetVersionMap(Map<String, Map<String, StdDataSet>> stdDataSetVersionMap) {
        PreparData.stdDataSetVersionMap = stdDataSetVersionMap;
    }
    public static StandardVersion getTargetVersion() {
        return targetVersion;
    }
    public static void setTargetVersion(StandardVersion targetVersion) {
        PreparData.targetVersion = targetVersion;
    }
    public static StandardVersion getOriginVersion() {
        return originVersion;
    }
    public static void setOriginVersion(StandardVersion originVersion) {
        PreparData.originVersion = originVersion;
    }
    public static Map<String, List<String>> getStdDataSetMap() {
        return stdDataSetMap;
    }
    public static void setStdDataSetMap(Map<String, List<String>> stdDataSetMap) {
        PreparData.stdDataSetMap = stdDataSetMap;
    }
}

+ 31 - 0
src/main/java/com/yihu/hos/central/rest/common/format/StdBase.java

@ -0,0 +1,31 @@
package com.yihu.hos.central.rest.common.format;
import com.yihu.hos.central.rest.services.standard.standard.StdDatasetService;
import com.yihu.hos.central.rest.services.standard.standard.StdMetadataService;
/**
 * 适配器基类,DAO缓存
 *
 * @created Created by Air on 2015/6/10.
 */
public class StdBase {
    private static StdMetadataService stdMetadataService;
    private static StdDatasetService stdDatasetService;
    public static StdDatasetService getStdDatasetService() {
        return stdDatasetService;
    }
    public static void setStdDatasetService(StdDatasetService stdDatasetService) {
        StdBase.stdDatasetService = stdDatasetService;
    }
    public static StdMetadataService getStdMetadataService() {
        return stdMetadataService;
    }
    public static void setStdMetadataService(StdMetadataService stdMetadataService) {
        StdBase.stdMetadataService = stdMetadataService;
    }
}

+ 197 - 0
src/main/java/com/yihu/hos/central/rest/common/http/EHRHttpHelper.java

@ -0,0 +1,197 @@
package com.yihu.hos.central.rest.common.http;
import com.yihu.hos.central.rest.common.configuration.EhrUrlConfiguration;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.core.http.HTTPResponse;
import com.yihu.hos.core.http.HttpClientKit;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.ssl.SSLContexts;
import org.springframework.beans.factory.annotation.Value;
import javax.net.ssl.SSLContext;
import java.io.File;
import java.util.Map;
//TODO:对于Basic认证内容,暂时未验证,可以使用http://user:password@host的方式尝试访问
public class EHRHttpHelper {
    public static String defaultHttpUrl;
    public static String httpClouddUrl;
    public static String httpAdminUrl;
    public static String sslKeystore;
    public static String sslPassword;
    public static String clientId;
    public static String clientKey;
    private static SSLConnectionSocketFactory defaultSSL;
    private static String defaultHttpUser;
    private static String defaultHttpPassword;
    //标准相关
    public static String schemaVersion;
    public static String stdVersion;
    public static String targetPlatform;
    public static void initConfig(EhrUrlConfiguration configuration){
        defaultHttpUrl = configuration.getEhrMgrUrl();
        httpAdminUrl = configuration.getEhrAdminUrl();
        httpClouddUrl = configuration.getEhrCouldUrl();
        sslKeystore = configuration.getSslKeystore();
        sslPassword = configuration.getSslPassword();
        clientId = configuration.getClientId();
        clientKey = configuration.getClientKey();
        schemaVersion = configuration.getSchemaVersion();
        stdVersion = configuration.getStdVersion();
        targetPlatform = configuration.getTargetPlatform();
        initSSL();//配置ssh
    }
    static {
        //默认配置
    }
    public static void  initSSL(){
        try {
            if (StringUtil.isEmpty(sslKeystore)) {
                String home = System.getProperty("catalina.home").replace('\\', '/');
                String homeUrl = home.substring(0, home.lastIndexOf('/') + 1);
                 sslKeystore = homeUrl + "tomcat.keystore";
//                sslKeystore = "E://tomcat.keystore";
            }
            if (sslKeystore.length() > 0 && sslPassword != null && sslPassword.length() > 0) {
                HttpClientKit.addKeyStore(defaultHttpUrl, sslKeystore, sslPassword);
            }
            SSLContext sslContext = SSLContexts.custom()
                    .loadTrustMaterial(new File(sslKeystore), sslPassword.toCharArray(),
                            new TrustSelfSignedStrategy())
                    .build();
            defaultSSL = new SSLConnectionSocketFactory(
                    sslContext,
                    new String[]{"TLSv1"},
                    null,
                    SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            HttpClientKit.addKeyStoreSSL(defaultHttpUrl, defaultSSL);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**************************
     * Get方法
     ******************************************/
    public static HTTPResponse get(String url) {
        return get(url, null);
    }
    public static HTTPResponse get(String url, Map<String, String> params) {
        return get(url, params, null);
    }
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> header) {
        return get(url, params, header, false);
    }
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> header, Boolean isCheck) {
        if (isCheck) {
            return get(url, params, header, defaultHttpUser, defaultHttpPassword);
        } else {
            return get(url, params, header, null, null);
        }
    }
    public static HTTPResponse get(String url, Map<String, String> params, Map<String, String> header, String user, String password) {
        return HttpClientKit.request("GET", url, params, header);
    }
    /**************************
     * Post方法
     ******************************************/
    public static HTTPResponse post(String url) {
        return post(url, null);
    }
    public static HTTPResponse post(String url, Map<String, String> params) {
        return post(url, params, null);
    }
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> header) {
        return post(url, params, header, false);
    }
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> header, Boolean isCheck) {
        if (isCheck) {
            return post(url, params, header, defaultHttpUser, defaultHttpPassword);
        } else {
            return post(url, params, header, null, null);
        }
    }
    public static HTTPResponse post(String url, Map<String, String> params, Map<String, String> header, String user, String password) {
        return HttpClientKit.request("POST", url, params, header);
    }
    public static HTTPResponse postFile(String url, Map<String, String> formParams, String filePath, Map<String, String> headers) {
        return HttpClientKit.postFile(url, filePath, formParams,headers);
    }
    public static HTTPResponse postFile(String url, Map<String, String> formParams, File file, Map<String, String> headers) {
        return HttpClientKit.postFile(url, file.getAbsolutePath(), formParams,headers);
    }
    /**************************
     * Put方法
     ******************************************/
    public static HTTPResponse put(String url) {
        return put(url, null, null);
    }
    public static HTTPResponse put(String url, Map<String, String> params) {
        return put(url, params, null);
    }
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> header) {
        return put(url, params, header, false);
    }
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> header, Boolean isCheck) {
        if (isCheck) {
            return put(url, params, header, defaultHttpUser, defaultHttpPassword);
        } else {
            return put(url, params, header, null, null);
        }
    }
    public static HTTPResponse put(String url, Map<String, String> params, Map<String, String> header, String user, String password) {
        return HttpClientKit.request("PUT", url, params, header);
    }
    /**************************
     * Delete方法
     **************************************/
    public static HTTPResponse delete(String url) {
        return delete(url, null, null);
    }
    public static HTTPResponse delete(String url, Map<String, String> params) {
        return delete(url, params, null);
    }
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> header) {
        return delete(url, params, header, false);
    }
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> header, Boolean isCheck) {
        if (isCheck) {
            return delete(url, params, header, defaultHttpUser, defaultHttpPassword);
        } else {
            return delete(url, params, header, null, null);
        }
    }
    public static HTTPResponse delete(String url, Map<String, String> params, Map<String, String> header, String user, String password) {
        return HttpClientKit.request("DELETE", url, params, header);
    }
}

+ 437 - 0
src/main/java/com/yihu/hos/central/rest/common/util/ImportDataToDataBase.java

@ -0,0 +1,437 @@
package com.yihu.hos.central.rest.common.util;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.yihu.ehr.elasticsearch.ElasticSearchUtil;
import com.yihu.hos.central.rest.models.crawler.statistics.Upload;
import com.yihu.hos.central.rest.services.qc.EsSimplePackage;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.web.framework.util.springutil.SpringBeanUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.util.CollectionUtils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;
/**
 * 导入mysql数据库
 */
public class ImportDataToDataBase {
    private static Logger logger = LoggerFactory.getLogger(ImportDataToDataBase.class);
    private static JdbcTemplate tempJdbcTemplate;
    private static ObjectMapper objectMapper = new ObjectMapper();
    private static final String INDEX = "upload";
    private static final String TYPE = "info";
    private static ElasticSearchUtil elasticSearchUtil;
    /**
     * 批量生成sql语法,导入到数据库中
     *
     * @param table     表名
     * @param indexName 索引名
     * @param arrayNode 源数据
     * @return
     * @throws Exception
     */
    public static boolean batchExportSql(String table, String indexName, ArrayNode arrayNode) {
        //生成sql语法
        List<String> sqlList = null;
        try {
            sqlList = genInsertSql(table, indexName, arrayNode);
            int errorCount = exportSqlToOracle(sqlList);//执行sql到oracle
//            exportSqlToMysql(sqlList);//执行sql到mysql
            return true;
        } catch (Exception e) {
            logger.error("导入数据库异常", e);
        }
        return false;
    }
    /**
     * 生成sql语法
     *
     * @param tableName 表名
     * @param indexName 索引名
     * @param arrayNode 源数据
     * @return
     * @throws Exception
     */
    public static List<String> genInsertSql(String tableName, String indexName, ArrayNode arrayNode) throws Exception {
        List<String> sqlList = new ArrayList<>();
        String insertSql = null;
        for (JsonNode jsonNode : arrayNode) {
            if ("EDS_OUTPAT_MEDICAL_RECORD".equalsIgnoreCase(tableName) || "EDS_EM_OBSERVATION_MED_RECORD".equalsIgnoreCase(tableName)) {
                //锐软采集上来,这数据可能没有
                if (jsonNode.get("OUTPAT_FORM_NO") == null || StringUtils.isBlank(jsonNode.get("OUTPAT_FORM_NO").asText())) {
                    continue;
                }
            } else if ("EXAMMASTER".equalsIgnoreCase(tableName) || "LABMASTER".equalsIgnoreCase(tableName)) {
                //锐软采集上来,这数据可能没有
                if (jsonNode.get("REPORT_FORM_NO") == null || StringUtils.isBlank(jsonNode.get("REPORT_FORM_NO").asText())) {
                    continue;
                }
                if (jsonNode.get("PATIENT_ID") == null || StringUtils.isBlank(jsonNode.get("PATIENT_ID").asText())) {
                    continue;
                }
            } else if ("INPATIENT_PROORDER".equalsIgnoreCase(tableName) || "INPATIENT_LONGORDER".equalsIgnoreCase(tableName)) {
                //锐软采集上来,这数据可能没有
                if (jsonNode.get("ORDER_ID") == null || StringUtils.isBlank(jsonNode.get("ORDER_ID").asText())) {
                    continue;
                }
            } else if ("LAB_SUBITEM".equalsIgnoreCase(tableName)) {
                if (jsonNode.get("REPORT_FORM_NO") == null || StringUtils.isBlank(jsonNode.get("REPORT_FORM_NO").asText())) {
                    continue;
                }
            }
            insertSql = "INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(" + tableName + "," + indexName + ")*/ INTO " + tableName + " ";
            Iterator<Map.Entry<String, JsonNode>> fields = jsonNode.fields();
            StringBuilder namesStr = new StringBuilder();
            StringBuilder valuesStrBuf = new StringBuilder();
            if (!jsonNode.has("LAST_UPDATE_DTIME")) {
                namesStr.append("LAST_UPDATE_DTIME").append(",");
                valuesStrBuf.append("SYSDATE").append(",");
            }
            while (fields.hasNext()) {
                Map.Entry<String, JsonNode> next = fields.next();
                String key = next.getKey();
                JsonNode value = next.getValue();
                namesStr.append(key).append(",");
                if (jsonNode.get(key).isInt() || jsonNode.get(key).isDouble() || jsonNode.get(key).isNumber()) {
                    valuesStrBuf.append(value.asText()).append(",");
                } else {
                    if ("SYSDATE".equals(value.asText().toUpperCase())) {
                        valuesStrBuf.append(value.asText()).append(",");
                    } else if (next.getValue().asText().toUpperCase().contains("TO_DATE")) {
                        valuesStrBuf.append(value.asText()).append(",");
                    } else {
                        valuesStrBuf.append("'").append(next.getValue().asText()).append("',");
                    }
                }
            }
            namesStr = new StringBuilder(namesStr.substring(0, namesStr.length() - 1));
            valuesStrBuf = new StringBuilder(valuesStrBuf.substring(0, valuesStrBuf.length() - 1));
            insertSql += "(" + namesStr + ") VALUES (" + valuesStrBuf + ")";
            //logger.info(insertSql);
            sqlList.add(insertSql);
        }
        return sqlList;
    }
    //导入mysql
    public static void exportSqlToMysql(List<String> sqlList) throws SQLException {
        Connection connection = null;
        try {
            //TODO 修改链接
//            String driver = "oracle.jdbc.driver.OracleDriver"; //Oracle
//            String url = "jdbc:oracle:thin:@10.16.11.9:1521/sjpt_p4";
//            String user = "shangrao";
//            String password = "shangrao_2017";
            String driver = "com.mysql.jdbc.Driver"; //mysql
            String url = "jdbc:mysql://171.35.109.39:3310/srareatempfinal?useUnicode=true&characterEncoding=UTF-8&useSSL=false";
            String user = "chenweishan";
            String password = "GP8Qz4qU";
            Class.forName(driver);
            connection = DriverManager.getConnection(url, user, password);
            int index = 0;
            Statement preparedStatement = connection.createStatement();
            for (String sql : sqlList) {
                preparedStatement.addBatch(sql);
                //执行批量执行
                index++;
                if (index % 1000 == 0) {
                    System.out.println("index:" + index);
                    preparedStatement.executeBatch();
                }
            }
            preparedStatement.executeBatch();
            preparedStatement.close();
        } catch (SQLException e) {
            logger.error("写入数据库异常1", e);
        } catch (ClassNotFoundException e) {
            logger.error("写入数据库异常2", e);
        } finally {
            if (connection != null) {
                connection.close();
            }
        }
    }
    //导入oracle
    public static int exportSqlToOracle(List<String> sqlList) {
        String errorSql = "";
        int errorCount = 0;
        for (String sql : sqlList) {
            long t1 = System.currentTimeMillis();
            errorSql = sql;
            try {
                if (tempJdbcTemplate == null) {
                    tempJdbcTemplate = SpringBeanUtil.getService("tempJdbcTemplate");
                }
                tempJdbcTemplate.execute(sql);
            } catch (DuplicateKeyException e) {//数据重复传了
                errorCount++;
                continue;
            } catch (DataIntegrityViolationException e) {//值不能为空等问题,需要排查 数据转换错误,或者数据源本身如此等
                errorCount++;
                recordFailedInsert(null,null,null,e, errorSql);
                continue;
            } catch (Exception e) {
                errorCount++;
                recordFailedInsert(null,null,null,e, errorSql);
                continue;
            }
            long t2 = System.currentTimeMillis();
            System.out.println("导入一条sql耗时:" + (t2 - t1) + "ms");
        }
        return errorCount;
    }
    //写入到省平台时,错误记录到es
    public static void recordFailedInsert(EsSimplePackage pack,String rowKey,String errorMsg,Exception e, String sql) {
        Upload upload = new Upload();
        String id = UUID.randomUUID().toString().replaceAll("-", "");
        upload.set_id(id);
        upload.setOrigin(5);
        upload.setCreate_date(new Date());
        upload.setFailed_count(1);
        upload.setFailed_message(errorMsg+ "--"+e.getMessage());
        upload.setRow_key(rowKey);
        upload.setEvent_date(pack.getEvent_date());
        upload.setPatient_id(pack.getPatient_id());
        upload.setEvent_no(pack.getEvent_no());
        upload.setEvent_type(pack.getEvent_type());
        upload.setPatient_name(pack.getPatient_name());
        upload.setIdcard_no(pack.getIdcard_no());
        upload.setOrg_code(pack.getOrg_code());
        upload.setOrg_name(pack.getOrg_name());
        try {
            if (elasticSearchUtil == null) {
                elasticSearchUtil = SpringBeanUtil.getService("elasticSearchUtil");
            }
            if (e instanceof DataIntegrityViolationException) {
                upload.setFailed_count(3);
            }
            elasticSearchUtil.index(INDEX, TYPE, objectMapper.readValue(objectMapper.writeValueAsString(upload), Map.class));
        } catch (Exception e1) {
            logger.error("插入数据库失败后,保存到es出错", e1);
            logger.error("当前错误sql:" + sql);
        }
    }
    /* *******************************  生成单条sql语法  **********************************************/
    /**
     * 生成单条sql语法,导入到数据库中
     *
     * @param table     表名
     * @param indexName 索引名
     * @param objNode   源数据
     * @return
     * @throws Exception
     */
    public static String exportSql(EsSimplePackage pack, String rowKey, String table, String indexName, JsonNode objNode) {
        String errorMsg = null;
        String sql = null;
        try {
            //生成sql语法
            sql = genInsertSql(table, indexName, objNode);
            //执行sql到oracle
            if (tempJdbcTemplate == null) {
                tempJdbcTemplate = SpringBeanUtil.getService("tempJdbcTemplate");
            }
            tempJdbcTemplate.execute(sql);
        } catch (DuplicateKeyException e) {//数据重复传了
            //TODO  做更新操作
            try {
                logger.info("正在做更新操作");
                sql = genUpdateSql(table,objNode);
                logger.info(sql);
                tempJdbcTemplate.execute(sql);
                logger.info("更新完成");
            } catch (Exception e1) {
                errorMsg = "执行省平台数据更新操作异常:"+e.getMessage();
                recordFailedInsert(pack,rowKey,"执行省平台数据插入异常0",e, sql);
                logger.error("执行省平台数据更新操作异常0:", e);
            }
        } catch (DataIntegrityViolationException e) {//值不能为空等问题,需要排查 数据转换错误,或者数据源本身如此等
            errorMsg = e.getMessage() + ": 值不能为空,数据转换等问题!";
            recordFailedInsert(pack,rowKey,"执行省平台数据插入异常1",e, sql);
            logger.error("执行省平台数据插入异常1:", e);
        } catch (Exception e) {
            errorMsg = e.getMessage() + ": 导入省平台数据库异常!";
            recordFailedInsert(pack,rowKey,"执行省平台数据插入异常2",e, sql);
            logger.error("执行省平台数据插入异常2:", e);
        }
        return errorMsg;
    }
    /**
     * 生成单条sql语法
     *
     * @param tableName 表名
     * @param indexName 索引名
     * @param jsonNode  源数据
     * @return
     * @throws Exception
     */
    public static String genInsertSql(String tableName, String indexName, JsonNode jsonNode) throws Exception {
        String insertSql = "INSERT /*+ IGNORE_ROW_ON_DUPKEY_INDEX(" + tableName + "," + indexName + ")*/ INTO " + tableName + " ";
        Iterator<Map.Entry<String, JsonNode>> fields = jsonNode.fields();
        StringBuilder namesStr = new StringBuilder();
        StringBuilder valuesStrBuf = new StringBuilder();
        if (!jsonNode.has("LAST_UPDATE_DTIME")) {
            namesStr.append("LAST_UPDATE_DTIME").append(",");
            valuesStrBuf.append("SYSDATE").append(",");
        }
        while (fields.hasNext()) {
            Map.Entry<String, JsonNode> next = fields.next();
            String key = next.getKey();
            if ("rowkey".equals(key)) {
                continue;
            }
            JsonNode value = next.getValue();
            namesStr.append(key).append(",");
            if (jsonNode.get(key).isInt() || jsonNode.get(key).isDouble() || jsonNode.get(key).isNumber()) {
                valuesStrBuf.append(value.asText()).append(",");
            } else {
                if ("SYSDATE".equals(value.asText().toUpperCase())) {
                    valuesStrBuf.append(value.asText()).append(",");
                } else if (next.getValue().asText().toUpperCase().contains("TO_DATE")) {
                    valuesStrBuf.append(value.asText()).append(",");
                } else {
                    valuesStrBuf.append("'").append(next.getValue().asText().replaceAll("'", "''")).append("',"); //去除特殊符号‘
                }
            }
        }
        namesStr = new StringBuilder(namesStr.substring(0, namesStr.length() - 1));
        valuesStrBuf = new StringBuilder(valuesStrBuf.substring(0, valuesStrBuf.length() - 1));
        insertSql += "(" + namesStr + ") VALUES (" + valuesStrBuf + ")";
        return insertSql;
    }
    public static List<String> getPrimaryKey(String tableName){
        assert tableName != null && tableName.length()>0;
        String sql = "select cu.COLUMN_NAME from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' and au.table_name ='"+tableName.toUpperCase()+"'";
        if(tempJdbcTemplate == null){
            tempJdbcTemplate = SpringBeanUtil.getService("tempJdbcTemplate");
        }
        List<String> maps = tempJdbcTemplate.queryForList(sql,String.class);
        return maps;
    }
    /**
     * 生成单条sql语法
     *
     * @param tableName 表名
     * @param jsonNode  源数据
     * @return
     * @throws Exception
     */
    public static String genUpdateSql(String tableName, JsonNode jsonNode) throws Exception {
        //首先获取主键,根据主键去做更新操作
        List<String> primaryKeys = getPrimaryKey(tableName);
        if(CollectionUtils.isEmpty(primaryKeys)){
            throw new Exception(tableName+"表没有主键,不能通过主键更新数据");
        }
        String sql = "update "+tableName +" set ";
        Iterator<Map.Entry<String, JsonNode>> fields = jsonNode.fields();
        StringBuilder whereSqlStrBuf = new StringBuilder(" where 1=1 ");
        StringBuilder setSqlStrBuf = new StringBuilder();
        while (fields.hasNext()) {
            Map.Entry<String, JsonNode> next = fields.next();
            String key = next.getKey().toUpperCase();
            JsonNode value = next.getValue();
            if(primaryKeys.contains(key)){ //拼接条件
                whereSqlStrBuf.append(" and ").append(key).append("=");
                StringBuilder appendSql = getAppendSql(jsonNode, key, value, next);
                whereSqlStrBuf.append(appendSql);
            } else {//拼接 set 新值
                setSqlStrBuf.append(",").append(key).append("=");
                StringBuilder appendSql = getAppendSql(jsonNode, key, value, next);
                setSqlStrBuf.append(appendSql);
            }
        }
        String completeSql = sql +  setSqlStrBuf.toString().substring(1) + whereSqlStrBuf.toString();
        return completeSql;
    }
    private static StringBuilder getAppendSql(JsonNode jsonNode,String key,JsonNode value,Map.Entry<String, JsonNode> next){
        StringBuilder appendSql = new StringBuilder();
        if (jsonNode.get(key).isInt() || jsonNode.get(key).isDouble() || jsonNode.get(key).isNumber()) {
            appendSql.append(value.asText());
        } else {
            if ("SYSDATE".equals(value.asText().toUpperCase())) {
                appendSql.append(value.asText());
            } else if (next.getValue().asText().toUpperCase().contains("TO_DATE")) {
                appendSql.append(value.asText());
            } else {
                appendSql.append("'").append(next.getValue().asText().replaceAll("'", "''")).append("'"); //去除特殊符号‘
            }
        }
        return appendSql;
    }
    //单条sql导入oracle
    public static String exportSqlToOracle(String errorSql) {
        String errorMsg = null;
        try {
            if (tempJdbcTemplate == null) {
                tempJdbcTemplate = SpringBeanUtil.getService("tempJdbcTemplate");
            }
            tempJdbcTemplate.execute(errorSql);
        } catch (DuplicateKeyException e) {//数据重复传了
            errorMsg = "DuplicateKeyException,数据已上传过省平台!";
        } catch (DataIntegrityViolationException e) {//值不能为空等问题,需要排查 数据转换错误,或者数据源本身如此等
            errorMsg = e.getMessage() + ": 值不能为空,数据转换等问题!";
            recordFailedInsert(null,null,null,e, errorSql);
            logger.error("执行省平台数据插入异常1:", e);
        } catch (Exception e) {
            errorMsg = e.getMessage() + ": 导入省平台数据库异常!";
            recordFailedInsert(null,null,null,e, errorSql);
            logger.error("执行省平台数据插入异常2:", e);
        }
        return errorMsg;
    }
    public static void main(String[] args) {
        String insertSql = "测试'jj_'xxxxxx'";
        System.out.println(insertSql.replaceAll("'", "''"));
    }
}

+ 27 - 0
src/main/java/com/yihu/hos/central/rest/common/util/TempDataSourceHelper.java

@ -0,0 +1,27 @@
package com.yihu.hos.central.rest.common.util;
import com.yihu.hos.central.rest.common.configuration.TempDataSourceConfiguration;
// 中间库 连接信息
public class TempDataSourceHelper {
    public static String driverClassName;
    public static String url;
    public static String username;
    public static String password;
    public static void initConfig(TempDataSourceConfiguration configuration){
        driverClassName = configuration.getDriverClassName();
        url = configuration.getUrl();
        username = configuration.getUsername();
        password = configuration.getPassword();
    }
    static {
        //默认配置
    }
}

+ 16 - 0
src/main/java/com/yihu/hos/central/rest/constants/RedisCollection.java

@ -0,0 +1,16 @@
package com.yihu.hos.central.rest.constants;
/**
 * @author HZY
 * @version 1.0
 * @created 2018.06.12
 */
public class RedisCollection {
    /**省平台上传队列 */
    public static final String PROVINCIAL_PLATFORM_QUEUE= "provincial_platform_queue";
    /**省平台补传队列 */
    public static final String PROVINCIAL_PLATFORM_QUEUE_SUPPLEMENT= "provincial_platform_queue_supplement";
    /**省平台失败重传队列 */
    public static final String PROVINCIAL_PLATFORM_QUEUE_FAIL= "provincial_platform_queue_fail";
}

+ 20 - 0
src/main/java/com/yihu/hos/central/rest/constants/ServiceApi.java

@ -0,0 +1,20 @@
package com.yihu.hos.central.rest.constants;
public class ServiceApi {
    public static class Resources {
        public static final String ResourceQueryTransform = "/resources/query/transform"; //资源查询接口+转译
        public static final String ResourceMasterData = "/resources/query/master_data"; //主表资源查询接口
        public static final String ResourceSubData = "/resources/query/sub_data"; //细表资源查询接口
        public static final String SolrIndexData = "/resources/query/solrIndex"; //solr索引列表查询接口
        public static final String ResourceQueryAllTransform = "/resources/queryAll/transform"; //资源查询接口获取所有数据集相关+转译
        public static final String ResourceQueryByDataSets = "/resources/query/dataSets"; //资源查询接口获取数据集相关的数据+转译
        //任务调度接口
        public static final String Scheduler = "/scheduler";
    }
}

+ 125 - 0
src/main/java/com/yihu/hos/central/rest/controllers/ChangeUploadDateController.java

@ -0,0 +1,125 @@
package com.yihu.hos.central.rest.controllers;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterDatasetModel;
import com.yihu.hos.central.rest.services.errorUpload.ErrorUploadService;
import com.yihu.hos.central.rest.services.standard.adapter.AdapterDatasetService;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.web.framework.model.standard.AdapterVersion;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.util.List;
@RequestMapping("/uploadDate")
@RestController("ChangeUploadDateController")
@Api(protocols = "http", value = "清除脏数据", description = "清除脏数据")
public class ChangeUploadDateController {
    private static Logger logger = LoggerFactory.getLogger(ChangeUploadDateController.class);
    @Autowired
    private AdapterDatasetService adapterDatasetService;
    @Autowired
    private JdbcTemplate tempJdbcTemplate;
    @Value("${schemaVersion}")
    private String schemaVersion;
    @Autowired
    private ErrorUploadService errorUploadService;
    @RequestMapping(value = "/clearByOrgCode", method = RequestMethod.DELETE)
    @ApiOperation(value = "根据orgCode清除脏数据", notes = "根据orgCode清除脏数据")
    public boolean clearByOrgCode(@ApiParam(name = "orgCode", value = "orgCode", required = true)
                                  @RequestParam(value = "orgCode") String orgCode) throws IOException {
        logger.info("开始清除脏数据");
        //todo 根据orgCode清除省平台脏数据
        List<AdapterDatasetModel> adapterDatasetModels = adapterDatasetService.getNeedCrawer(new AdapterVersion(schemaVersion));
        for (AdapterDatasetModel adapterDatasetModel : adapterDatasetModels) {
            String table = adapterDatasetModel.getStdDatasetCode();
            try {
                tempJdbcTemplate.execute("DELETE FROM " + table + " WHERE org_code = '" + orgCode + "'");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        logger.info("根据org_code清除脏数据成功");
        return true;
    }
    @RequestMapping(value = "/changeOrgCode", method = RequestMethod.POST)
    @ApiOperation(value = "更改医高专orgCode为省平台机构编码", notes = "更改医高专orgCode为省平台机构编码")
    public boolean changeOrgCode(@ApiParam(name = "oldOrgCode", value = "oldOrgCode", required = true)
                                 @RequestParam(value = "oldOrgCode") String oldOrgCode,
                                 @ApiParam(name = "newOrgCode", value = "newOrgCode", required = true)
                                 @RequestParam(value = "newOrgCode") String newOrgCode) throws IOException {
        logger.info("开始批量更改org_code数据");
        List<AdapterDatasetModel> adapterDatasetModels = adapterDatasetService.getNeedCrawer(new AdapterVersion(schemaVersion));
        for (AdapterDatasetModel adapterDatasetModel : adapterDatasetModels) {
            String table = adapterDatasetModel.getStdDatasetCode();
            try {
                tempJdbcTemplate.execute("UPDATE " + table + " SET org_code='" + newOrgCode + "' WHERE org_code = '" + oldOrgCode + "'");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        logger.info("开始批量更改org_code数据完成");
        return true;
    }
    @RequestMapping(value = "/deleteUploadFail", method = RequestMethod.DELETE)
    @ApiOperation(value = "通过时间字段-删除es中upload索引下type的数据;【请慎用】", notes = "删除es数据;")
    public String deleteUploadFail(
            @ApiParam(name = "type", value = "索引下type名", defaultValue = "upload_fail", required = true)
            @RequestParam(value = "type") String type,
            @ApiParam(name = "dateField", value = "type下时间字段", defaultValue = "upload_date", required = true)
            @RequestParam(value = "dateField") String dateField,
            @ApiParam(name = "startDate", value = "起始时间,格式eg:2018-01-01 00:00:00", defaultValue = "2018-01-01 00:00:00", required = true)
            @RequestParam(value = "startDate") String startDate,
            @ApiParam(name = "endDate", value = "结束时间,格式eg:2018-01-01 00:00:00", required = false)
            @RequestParam(value = "endDate", required = false) String endDate) throws IOException {
       String errorMsg = "";
        try {
            errorUploadService.deleteByUpdateDate(type,dateField,startDate, endDate);
            return "操作成功";
        } catch (Exception e) {
            errorMsg = e.getMessage();
            e.printStackTrace();
        }
        return "删除异常:" + errorMsg;
    }
    @RequestMapping(value = "/deleteEsData", method = RequestMethod.DELETE)
    @ApiOperation(value = "通过条件-删除es数据;【请慎用】", notes = "删除es数据;")
    public String deleteEsData(
            @ApiParam(name = "index", value = "index索引", defaultValue = "upload", required = true)
            @RequestParam(value = "index") String index,
            @ApiParam(name = "type", value = "index索引下type名", defaultValue = "upload_fail", required = true)
            @RequestParam(value = "type") String type,
            @ApiParam(name = "filters", value = "dataset=HDSA00_01;org_code<>xxxx;", required = false)
            @RequestParam(value = "filters",required = false) String filters) throws IOException {
        String errorMsg = "";
        try {
            errorUploadService.deleteEsData(index,type,filters);
            return "操作成功";
        } catch (Exception e) {
            errorMsg = e.getMessage();
            e.printStackTrace();
        }
        return "删除异常:" + errorMsg;
    }
}

+ 89 - 0
src/main/java/com/yihu/hos/central/rest/controllers/CrawlerController.java

@ -0,0 +1,89 @@
package com.yihu.hos.central.rest.controllers;
import com.yihu.ehr.util.rest.Envelop;
import com.yihu.hos.central.rest.common.util.ImportDataToDataBase;
import com.yihu.hos.central.rest.feign.RedisClient;
import com.yihu.hos.central.rest.services.crawler.CrawlerManager;
import com.yihu.hos.central.rest.services.qc.EsSimplePackage;
import com.yihu.hos.central.rest.services.upload.UploadDetailService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Date;
/**
 *  从EHR 微服务获取档案数据,并写入到中间库
 * <p>
 * Created by Airhead on 2015/12/16.
 */
@RequestMapping("/crawlerInsert")
@RestController("crawlerInsertController")
@Api(protocols = "http", value = "CrawlerController", description = "档案采集写入接口,用于从资源中获取数据并写入特定中间表中", tags = {"档案上传"})
public class CrawlerController {
    @Autowired
    private CrawlerManager crawlerManager;
    @Autowired
    private UploadDetailService uploadDetailService;
    @Autowired
    private RedisClient redisClient;
    @RequestMapping(value = "/test", produces = "application/json;charset=UTF-8", method = RequestMethod.GET)
    @ApiOperation(value = "测试服务器可以正常连接", produces = "application/json", notes = "测试服务器可以正常连接")
    public String test() {
        System.out.println("接口调用成功?,日志乱码?");
        return "test";
    }
    @RequestMapping(value = "/testSql", produces = "application/json;charset=UTF-8", method = RequestMethod.POST)
    @ApiOperation(value = "测试sql语法", produces = "application/json", notes = "测试sql语法")
    public String testSql(
            @ApiParam(name = "sql", value = "sql", required = true)
            @RequestParam(value = "sql") String sql) throws SQLException {
        ImportDataToDataBase.exportSqlToOracle(Arrays.asList(sql));
        return "test";
    }
    @RequestMapping(value = "updateUploadDetail", method = RequestMethod.GET)
    @ApiOperation(value = "更新上传情况", produces = "application/json", notes = "更新上传情况")
    public void update() throws Exception {
        uploadDetailService.saveOrUpdate(new Date());
    }
    @RequestMapping(value = "/packQcReport/setStartTime", method = RequestMethod.GET)
    @ApiOperation(value = "设置上传数据集统计数据 - 抽取时间")
    public Envelop setStartTime(
            @ApiParam(name = "date", value = "日期", required = true)
            @RequestParam(value = "date") String date) throws Exception {
        Envelop envelop = new Envelop();
        redisClient.set("start_upload_date",date);
        envelop.setSuccessFlg(true);
        return envelop;
    }
    @RequestMapping(value = "test2", method = RequestMethod.GET)
    @ApiOperation(value = "测试接口,后续删除", produces = "application/json", notes = "test2")
    public void test2() throws Exception {
        EsSimplePackage pack = new EsSimplePackage();
        pack.setPatient_id("RY00278359");
        pack.setPatient_name("刘明");
        pack.setEvent_no("20180103-7394");
        pack.setEvent_type(0);
        pack.setEvent_date("2018-01-03 09:59:36");
        pack.setRowkey("492330267_20180103-7394_1514944776000");
        pack.setOrg_code("492330267");
        crawlerManager.collectProcessByRowkey(pack);
    }
}

+ 153 - 0
src/main/java/com/yihu/hos/central/rest/controllers/SchedulerController.java

@ -0,0 +1,153 @@
package com.yihu.hos.central.rest.controllers;
import com.yihu.hos.central.rest.constants.ServiceApi;
import com.yihu.hos.central.rest.job.HealthCheckTask;
import com.yihu.hos.central.rest.job.UploadResourceJob;
import com.yihu.hos.core.constants.MicroServices;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.quartz.*;
import org.quartz.impl.matchers.GroupMatcher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Set;
import java.util.UUID;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
/**
 * @author Sand
 * @version 1.0
 * @created 2016.03.31 10:30
 */
@RestController
@RequestMapping(value = MicroServices.ApiVersion.Version1_0, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@Api(value = "SchedulerEndPoint", description = "档案上传任务", tags = {"档案上传-任务"})
public class SchedulerController  {
    @Value("${crawler.job.max-size}")
    private int jobMaxSize;
    @Autowired
    private Scheduler scheduler;
    @Autowired
    private HealthCheckTask healthCheckTask;
    @ApiOperation(value = "设置任务调度器状态")
    @RequestMapping(value = ServiceApi.Resources.Scheduler, method = RequestMethod.PUT)
    public ResponseEntity<String> updateScheduler(
            @ApiParam(name = "pause", value = "true:暂停 , false:执行", required = true, defaultValue = "true")
            @RequestParam(value = "pause") boolean pause) {
        try {
            if (pause) {
                scheduler.pauseAll();
            } else {
                scheduler.resumeAll();
            }
            return new ResponseEntity<>((String) null, HttpStatus.OK);
        } catch (SchedulerException e) {
            return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
    @ApiOperation(value = "添加任务数量,返回当前系统最大任务限制数")
    @RequestMapping(value = ServiceApi.Resources.Scheduler, method = RequestMethod.POST)
    public ResponseEntity<Integer> addJob(
            @ApiParam(name = "count", value = "任务数量(不要超过系统设定值)", required = true, defaultValue = "4")
            @RequestParam(value = "count") int count,
            @ApiParam(name = "cronExp", value = "触发器CRON表达式", required = true, defaultValue = "0/1 * * * * ?")
            @RequestParam(value = "cronExp") String cronExp) {
        try {
            if (count > jobMaxSize) {
                count = jobMaxSize;
            }
            GroupMatcher groupMatcher = GroupMatcher.groupEquals("PackResolve");
            Set<JobKey> jobKeys = scheduler.getJobKeys(groupMatcher);
            if(null == jobKeys) {
                for (int i = 0; i < count; i++) {
                    String suffix = UUID.randomUUID().toString().substring(0, 8);
                    JobDetail jobDetail = newJob(UploadResourceJob.class)
                            .withIdentity("PackResolveJob-" + suffix, "PackResolve")
                            .build();
                    CronTrigger trigger = newTrigger()
                            .withIdentity("PackResolveTrigger-" + suffix, "PackResolve")
                            .withSchedule(CronScheduleBuilder.cronSchedule(cronExp))
                            .startNow()
                            .build();
                    scheduler.scheduleJob(jobDetail, trigger);
                }
                return new ResponseEntity<>(jobMaxSize, HttpStatus.OK);
            }
            int addCount = 0;
            int activeJob = jobKeys.size();
            for (int i = 0; i < count; i++) {
                if(i + activeJob >= 8) {
                    break;
                }
                String suffix = UUID.randomUUID().toString().substring(0, 8);
                JobDetail jobDetail = newJob(UploadResourceJob.class)
                        .withIdentity("PackResolveJob-" + suffix, "PackResolve")
                        .build();
                CronTrigger trigger = newTrigger()
                        .withIdentity("PackResolveTrigger-" + suffix, "PackResolve")
                        .withSchedule(CronScheduleBuilder.cronSchedule(cronExp))
                        .startNow()
                        .build();
                scheduler.scheduleJob(jobDetail, trigger);
                addCount = i + 1;
            }
            healthCheckTask.addJobSize(addCount);
            return new ResponseEntity<>(jobMaxSize, HttpStatus.OK);
        } catch (Exception e) {
            return new ResponseEntity<>(-1, HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
    @ApiOperation(value = "删除解析任务")
    @RequestMapping(value = ServiceApi.Resources.Scheduler, method = RequestMethod.DELETE)
    public ResponseEntity<String> removeJob(
            @ApiParam(name = "count", value = "任务数量", required = true, defaultValue = "4")
            @RequestParam(value = "count") int count) {
        try {
            int minusCount = count;
            GroupMatcher groupMatcher = GroupMatcher.groupEquals("PackResolve");
            Set<JobKey> jobKeySet = scheduler.getJobKeys(groupMatcher);
            if(jobKeySet != null) {
                for (JobKey jobKey : jobKeySet) {
                    scheduler.deleteJob(jobKey);
                    if (--count == 0) break;
                }
            }
            healthCheckTask.minusJobSize(minusCount);
            return new ResponseEntity<>((String) null, HttpStatus.OK);
        } catch (SchedulerException e) {
            return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
    @ApiOperation(value = "获取当前任务数量")
    @RequestMapping(value = ServiceApi.Resources.Scheduler, method = RequestMethod.GET)
    public ResponseEntity<Integer> count() {
        try {
            GroupMatcher groupMatcher = GroupMatcher.groupEquals("PackResolve");
            Set<JobKey> jobKeySet = scheduler.getJobKeys(groupMatcher);
            int count = 0;
            if (jobKeySet != null) {
                count = jobKeySet.size();
            }
            return new ResponseEntity<>(count, HttpStatus.OK);
        } catch (SchedulerException e) {
            return new ResponseEntity<>(-1, HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
}

+ 64 - 0
src/main/java/com/yihu/hos/central/rest/exception/QueryMasterFailedException.java

@ -0,0 +1,64 @@
package com.yihu.hos.central.rest.exception;
public class QueryMasterFailedException extends RuntimeException {
    private String startTime;
    private String endTime;
    private String tableCode;
    private String uploadCode;
    private String errorMsg;
    public QueryMasterFailedException(String startTime, String endTime, String tableCode, String uploadCode, String errorMsg) {
        this.startTime = startTime;
        this.endTime = endTime;
        this.tableCode = tableCode;
        this.uploadCode = uploadCode;
        this.errorMsg = errorMsg;
    }
    public QueryMasterFailedException(String tableCode, String uploadCode, String errorMsg) {
        this.tableCode = tableCode;
        this.uploadCode = uploadCode;
        this.errorMsg = errorMsg;
    }
    public String getStartTime() {
        return startTime;
    }
    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }
    public String getEndTime() {
        return endTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    public String getTableCode() {
        return tableCode;
    }
    public void setTableCode(String tableCode) {
        this.tableCode = tableCode;
    }
    public String getUploadCode() {
        return uploadCode;
    }
    public void setUploadCode(String uploadCode) {
        this.uploadCode = uploadCode;
    }
    public String getErrorMsg() {
        return errorMsg;
    }
    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }
}

+ 38 - 0
src/main/java/com/yihu/hos/central/rest/exception/QuerySolrIndexFailedException.java

@ -0,0 +1,38 @@
package com.yihu.hos.central.rest.exception;
public class QuerySolrIndexFailedException extends RuntimeException {
    private String startTime;
    private String endTime;
    private String errorMsg;
    public QuerySolrIndexFailedException(String startTime,String endTime,String errorMsg){
        this.startTime = startTime;
        this.endTime = endTime;
        this.errorMsg = errorMsg;
    }
    public String getStartTime() {
        return startTime;
    }
    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }
    public String getEndTime() {
        return endTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    public String getErrorMsg() {
        return errorMsg;
    }
    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }
}

+ 48 - 0
src/main/java/com/yihu/hos/central/rest/exception/QuerySubFailedException.java

@ -0,0 +1,48 @@
package com.yihu.hos.central.rest.exception;
public class QuerySubFailedException extends RuntimeException {
    private String rowkey;
    private String tableCode;
    private String uploadCode;
    private String errorMsg;
    public QuerySubFailedException(String rowkey, String tableCode, String uploadCode, String errorMsg) {
        this.rowkey = rowkey;
        this.tableCode = tableCode;
        this.uploadCode = uploadCode;
        this.errorMsg = errorMsg;
    }
    public String getRowkey() {
        return rowkey;
    }
    public void setRowkey(String rowkey) {
        this.rowkey = rowkey;
    }
    public String getTableCode() {
        return tableCode;
    }
    public void setTableCode(String tableCode) {
        this.tableCode = tableCode;
    }
    public String getUploadCode() {
        return uploadCode;
    }
    public void setUploadCode(String uploadCode) {
        this.uploadCode = uploadCode;
    }
    public String getErrorMsg() {
        return errorMsg;
    }
    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }
}

+ 68 - 0
src/main/java/com/yihu/hos/central/rest/feign/HosAdminServiceClient.java

@ -0,0 +1,68 @@
package com.yihu.hos.central.rest.feign;
import com.yihu.hos.core.constants.MicroServices;
import com.yihu.hos.core.constants.ServiceApi;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import springfox.documentation.annotations.ApiIgnore;
/**
 * @author zjj
 * @created 2018.03.20
 */
@ApiIgnore
@FeignClient(name = MicroServices.HosAdmin)
@RequestMapping(MicroServices.ApiVersion.Version1_0)
public interface HosAdminServiceClient {
    @RequestMapping(value = ServiceApi.Redis.StdMetadataCodes, method = RequestMethod.GET)
    public String getMetadataCodes(@RequestParam("version") String version,
                                   @RequestParam("datasetCode") String datasetCode);
    @RequestMapping(value = ServiceApi.Redis.StdMetadataType, method = RequestMethod.GET)
    String getMetaDataType(
            @RequestParam("version") String version,
            @RequestParam("dataSetCode") String dataSetCode,
            @RequestParam("innerCode") String innerCode);
    @RequestMapping(value = ServiceApi.Redis.StdMetadataFormat, method = RequestMethod.GET)
    String getMetaDataFormat(
            @RequestParam("version") String version,
            @RequestParam("dataSetCode") String dataSetCode,
            @RequestParam("innerCode") String innerCode);
    @RequestMapping(value = ServiceApi.Redis.StdMetadataNullable, method = RequestMethod.GET)
    Boolean isMetaDataNullable(
            @RequestParam("version") String version,
            @RequestParam("datasetCode") String datasetCode,
            @RequestParam("metadataCode") String metadataCode);
    @RequestMapping(value = ServiceApi.Redis.StdMetadataDict, method = RequestMethod.GET)
    String getMetaDataDict(
            @RequestParam("version") String version,
            @RequestParam("dataSetCode") String dataSetCode,
            @RequestParam("innerCode") String innerCode);
    @RequestMapping(value = ServiceApi.Redis.StdDictEntryValue, method = RequestMethod.GET)
    String getDictEntryValue(
            @RequestParam("version") String version,
            @RequestParam("dictId") String dictId,
            @RequestParam("entryCode") String entryCode);
    @RequestMapping(value = ServiceApi.Redis.StdDictEntryValueExist, method = RequestMethod.GET)
    Boolean isDictValueExist(
            @RequestParam("version") String version,
            @RequestParam("dictId") String dictId,
            @RequestParam("entryValue") String entryValue);
    @RequestMapping(value = ServiceApi.Redis.StdDictEntryCodeExist, method = RequestMethod.GET)
    Boolean isDictCodeExist(
            @RequestParam("version") String version,
            @RequestParam("dictId") String dictId,
            @RequestParam("entryCode") String entryCode);
}

+ 146 - 0
src/main/java/com/yihu/hos/central/rest/feign/RedisClient.java

@ -0,0 +1,146 @@
package com.yihu.hos.central.rest.feign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.StringRedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.SerializationUtils;
import java.io.Serializable;
import java.util.*;
/**
 * Redis 数据访问接口。
 *
 * @author Sand
 * @version 1.0
 * @created 2015.08.04 11:12
 */
@Service
public class RedisClient {
    @Autowired
    private RedisTemplate<String, Serializable> redisTemplate;
    /**
     * 添加数据。
     *
     * @param key
     * @param value
     */
    public void set(final String key, final Serializable value) {
        redisTemplate.execute((RedisCallback<Object>) connection -> {
            byte[] key_ = key.getBytes();
            byte[] value_ = SerializationUtils.serialize(value);
            connection.set(key_, value_);
            return true;
        });
    }
    /**
     * 添加数据,含失效时间。
     *
     * @param key
     * @param value
     */
    public void set(final String key, final Serializable value,long seconds) {
        redisTemplate.execute((RedisCallback<Object>) connection -> {
            byte[] key_ = key.getBytes();
            byte[] value_ = SerializationUtils.serialize(value);
            connection.setEx(key_,seconds, value_);
            return true;
        });
    }
    /**
     * 批量设置key-value值。
     *
     * @param data
     */
    public void multiSet(Map<Serializable, Serializable> data){
        redisTemplate.executePipelined(new RedisCallback<Object>() {
            @Override
            public Object doInRedis(RedisConnection connection) throws DataAccessException {
                StringRedisConnection stringRedisConn = (StringRedisConnection)connection;
                for(Serializable key : data.keySet()){
                    Serializable value = data.get(key);
                    connection.rPushX(SerializationUtils.serialize(key), SerializationUtils.serialize(value));
                }
                return null;
            }
        });
    }
    /**
     * 获取数据
     *
     * @param key
     * @param <T>
     * @return
     */
    public <T> T get(final String key) {
        return (T)redisTemplate.execute((RedisCallback<Serializable>) connection -> {
            byte[] keyBytes = key.getBytes();
            byte[] bytes = connection.get(keyBytes);
            if(bytes == null) return null;
            return (Serializable) SerializationUtils.deserialize(bytes);
        });
    }
    /**
     * 批量获取key关联的值。
     *
     * @param keys
     * @return
     */
    public List<Serializable> multiGet(Collection<String> keys){
        return redisTemplate.opsForValue().multiGet(keys);
    }
    /**
     * 删除记录,支持Key模糊匹配删除
     *
     * @param key
     */
    public void delete(String key) {
        redisTemplate.delete(redisTemplate.keys(key));
    }
    /**
     * 删除多条记录,如果Key集合过大,建议使用Key模糊匹配删除
     * @param keys
     */
    public void delete(Collection<String> keys) {
        redisTemplate.delete(keys);
    }
    /**
     * 匹配特定模式的Key列表
     * @param pattern
     * @return
     */
    public Set<String> keys(String pattern) {
        return redisTemplate.execute((RedisCallback<Set<String>>) connection -> {
            Set<byte[]> keys = connection.keys(pattern.getBytes());
            Set<String> returnKeys = new HashSet<>();
            for (byte[] key : keys) {
                returnKeys.add(new String(key));
            }
            return returnKeys;
        });
    }
    /**
     * 是否包含指定Key
     * @param key
     * @return
     */
    public boolean hasKey(String key) {
        return redisTemplate.execute((RedisCallback<Boolean>) connection -> connection.exists(SerializationUtils.serialize(key)));
    }
}

+ 81 - 0
src/main/java/com/yihu/hos/central/rest/feign/SvrResourceServiceClient.java

@ -0,0 +1,81 @@
package com.yihu.hos.central.rest.feign;
import com.yihu.hos.central.rest.constants.ServiceApi;
import com.yihu.hos.core.constants.MicroServices;
import com.yihu.hos.web.framework.model.Envelop;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(name = MicroServices.SvrResource)
@RequestMapping(MicroServices.ApiVersion.Version1_0)
public interface SvrResourceServiceClient {
    @RequestMapping(value = ServiceApi.Resources.ResourceMasterData, method = RequestMethod.GET)
    Envelop getEhrCenter(
            @RequestParam(value = "queryParams", required = false) String queryParams,
            @RequestParam(value = "page", required = false) Integer page,
            @RequestParam(value = "size", required = false) Integer size,
            @RequestParam(value = "version", required = false) String version) throws Exception;
    @RequestMapping(value = ServiceApi.Resources.ResourceSubData, method = RequestMethod.GET)
    Envelop getEhrCenterSub(
            @RequestParam(value = "queryParams", required = false) String queryParams,
            @RequestParam(value = "page", required = false) Integer page,
            @RequestParam(value = "size", required = false) Integer size,
            @RequestParam(value = "version", required = false) String version) throws Exception;
    @RequestMapping(value = ServiceApi.Resources.ResourceQueryTransform, method = RequestMethod.POST)
    Envelop ResourcesQueryTransform(
            @RequestParam(value = "resourcesCode") String resourcesCode,
            @RequestParam(value = "roleId") String roleId,
            @RequestParam(value = "orgCode") String orgCode,
            @RequestParam(value = "areaCode", required = false) String areaCode,
            @RequestParam(value = "queryParams", required = false) String queryParams,
            @RequestParam(value = "page", required = false) Integer page,
            @RequestParam(value = "size", required = false) Integer size,
            @RequestParam(value = "version", required = true) String version);
    @RequestMapping(value = ServiceApi.Resources.SolrIndexData, method = RequestMethod.GET)
    Envelop getSolrIndex(
            @RequestParam(value = "queryParams", required = false) String queryParams,
            @RequestParam(value = "page", required = false) Integer page,
            @RequestParam(value = "size", required = false) Integer size,
            @RequestParam(value = "version", required = false) String version) throws Exception;
    /**
     *  获取资源数据,返回档案包中包含的数据集(转译)
     */
    @RequestMapping(value = ServiceApi.Resources.ResourceQueryAllTransform, method = RequestMethod.POST)
    public Envelop getAllResourcesTransform(
            @RequestParam(value = "packId") String packId,
            @RequestParam(value = "roleId") String roleId,
            @RequestParam(value = "orgCode") String orgCode,
            @RequestParam(value = "areaCode") String areaCode,
            @ApiParam(name = "rowKey", value = "rowKey")
            @RequestParam(value = "rowKey", required = false) String rowKey,
            @ApiParam(name = "version", value = "版本号")
            @RequestParam(value = "version", required = false) String version) throws Exception;
    /**
     * 获取资源数据,通过数据集列表对应的数据(转译)
     */
    @RequestMapping(value = ServiceApi.Resources.ResourceQueryByDataSets, method = RequestMethod.POST)
    public Envelop getResourceByDataSets(
            @RequestParam(value = "dataSets") List dataSets,
            @RequestParam(value = "roleId") String roleId,
            @RequestParam(value = "orgCode") String orgCode,
            @RequestParam(value = "areaCode") String areaCode,
            @RequestParam(value = "rowKey", required = false) String rowKey,
            @RequestParam(value = "version", required = false) String version) throws Exception;
}

+ 220 - 0
src/main/java/com/yihu/hos/central/rest/job/HealthCheckTask.java

@ -0,0 +1,220 @@
package com.yihu.hos.central.rest.job;
import org.quartz.*;
import org.quartz.impl.matchers.GroupMatcher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.newTrigger;
/**
 * Task - 定时检查集群状态,提高解析任务容错率
 * Created by progr1mmer on 2017/12/15.
 */
@Component
public class HealthCheckTask {
    private static String SVR_RESOURCE = "svr-resource";
    private int jobSetSize;
    private int reUploadJobSetSize;
    @Value("${crawler.job.init-size}")
    private int jobInitSize;
    @Value("${crawler.job.max-size}")
    private int jobMaxSize;
    @Value("${crawler.job.cron-exp}")
    private String jobCronExp;
    @Autowired
    private Scheduler scheduler;
    @Autowired
    private DiscoveryClient discoveryClient;
    @PostConstruct
    private void init() {
        //省平台上传任务
        try {
            for (int i = 0; i < jobInitSize; i++) {
                String suffix = UUID.randomUUID().toString().substring(0, 8);
                JobDetail jobDetail = newJob(UploadResourceJob.class)
                        .withIdentity("UploadResourceJob-" + suffix, "UploadResource")
                        .build();
                CronTrigger trigger = newTrigger()
                        .withIdentity("UploadResourceTrigger-" + suffix, "UploadResource")
                        .withSchedule(CronScheduleBuilder.cronSchedule(jobCronExp))
                        .startNow()
                        .build();
                scheduler.scheduleJob(jobDetail, trigger);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        this.jobSetSize = jobInitSize;
        //省平台补传任务
        try {
            for (int i = 0; i < jobInitSize; i++) {
                String suffix = UUID.randomUUID().toString().substring(0, 8);
                JobDetail jobDetail = newJob(SupplementUploadJob.class)
                        .withIdentity("SupplementUploadJob-" + suffix, "SupplementUpload")
                        .build();
                CronTrigger trigger = newTrigger()
                        .withIdentity("SupplementUploadTrigger-" + suffix, "SupplementUpload")
                        .withSchedule(CronScheduleBuilder.cronSchedule(jobCronExp))
                        .startNow()
                        .build();
                scheduler.scheduleJob(jobDetail, trigger);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        this.reUploadJobSetSize = jobInitSize;
    }
    @Scheduled(cron = "0 0/20 * * * ?")
    private void startTask() {
        GroupMatcher groupMatcher = GroupMatcher.groupEquals("UploadResource");
        GroupMatcher reUploadgroupMatcher = GroupMatcher.groupEquals("SupplementUpload");
        //检查微服务信息
        List<ServiceInstance> mgr = discoveryClient.getInstances(SVR_RESOURCE);
        if (mgr.isEmpty()) {
            try {
                Set<JobKey> jobKeySet = scheduler.getJobKeys(groupMatcher);
                if (jobKeySet != null) {
                    for (JobKey jobKey : jobKeySet) {
                        scheduler.deleteJob(jobKey);
                    }
                }
            } catch (SchedulerException e) {
                e.printStackTrace();
            }
            return;
        }
        //省平台上传任务
        scheduleUploadJob(groupMatcher);
       //省平台补传任务
        scheduleReUploadJob(reUploadgroupMatcher);
    }
    /**
     * 省平台上传任务执行
     * @param groupMatcher
     */
    public void scheduleUploadJob(GroupMatcher groupMatcher){
        //省平台上传任务
        try {
            Set<JobKey> jobKeySet = scheduler.getJobKeys(groupMatcher);
            if (jobKeySet != null) {
                int activeCount = jobKeySet.size();
                for (int i = 0; i < jobSetSize - activeCount; i++) {
                    String suffix = UUID.randomUUID().toString().substring(0, 8);
                    JobDetail jobDetail = newJob(UploadResourceJob.class)
                            .withIdentity("UploadResourceJob-" + suffix, "UploadResource")
                            .build();
                    CronTrigger trigger = newTrigger()
                            .withIdentity("UploadResourceTrigger-" + suffix, "UploadResource")
                            .withSchedule(CronScheduleBuilder.cronSchedule(jobCronExp))
                            .startNow()
                            .build();
                    scheduler.scheduleJob(jobDetail, trigger);
                }
            } else {
                for (int i = 0; i < jobSetSize; i++) {
                    String suffix = UUID.randomUUID().toString().substring(0, 8);
                    JobDetail jobDetail = newJob(UploadResourceJob.class)
                            .withIdentity("UploadResourceJob-" + suffix, "UploadResource")
                            .build();
                    CronTrigger trigger = newTrigger()
                            .withIdentity("UploadResourceTrigger-" + suffix, "UploadResource")
                            .withSchedule(CronScheduleBuilder.cronSchedule(jobCronExp))
                            .startNow()
                            .build();
                    scheduler.scheduleJob(jobDetail, trigger);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     *  省平台补传任务执行
     * @param groupMatcher
     */
    public void scheduleReUploadJob(GroupMatcher groupMatcher){
        //省平台上传任务
        try {
            Set<JobKey> jobKeySet = scheduler.getJobKeys(groupMatcher);
            if (jobKeySet != null) {
                int activeCount = jobKeySet.size();
                for (int i = 0; i < jobSetSize - activeCount; i++) {
                    String suffix = UUID.randomUUID().toString().substring(0, 8);
                    JobDetail jobDetail = newJob(UploadResourceJob.class)
                            .withIdentity("SupplementUploadJob-" + suffix, "SupplementUpload")
                            .build();
                    CronTrigger trigger = newTrigger()
                            .withIdentity("SupplementUploadTrigger-" + suffix, "SupplementUpload")
                            .withSchedule(CronScheduleBuilder.cronSchedule(jobCronExp))
                            .startNow()
                            .build();
                    scheduler.scheduleJob(jobDetail, trigger);
                }
            } else {
                for (int i = 0; i < jobSetSize; i++) {
                    String suffix = UUID.randomUUID().toString().substring(0, 8);
                    JobDetail jobDetail = newJob(UploadResourceJob.class)
                            .withIdentity("SupplementUploadJob-" + suffix, "SupplementUpload")
                            .build();
                    CronTrigger trigger = newTrigger()
                            .withIdentity("SupplementUploadTrigger-" + suffix, "SupplementUpload")
                            .withSchedule(CronScheduleBuilder.cronSchedule(jobCronExp))
                            .startNow()
                            .build();
                    scheduler.scheduleJob(jobDetail, trigger);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void addJobSize(int addSize) {
        this.jobSetSize += addSize;
        if (this.jobSetSize > jobMaxSize) {
            jobSetSize = jobMaxSize;
        }
        if (this.reUploadJobSetSize > jobMaxSize) {
            reUploadJobSetSize = jobMaxSize;
        }
    }
    public void minusJobSize(int minusSize) {
        this.jobSetSize -= minusSize;
        if (this.jobSetSize < 0) {
            jobSetSize = 0;
        }
        //重传任务数和正常上传任务数一致
        if (this.reUploadJobSetSize < 0) {
            reUploadJobSetSize = 0;
        }
    }
}

+ 79 - 0
src/main/java/com/yihu/hos/central/rest/job/SupplementUploadJob.java

@ -0,0 +1,79 @@
package com.yihu.hos.central.rest.job;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.central.rest.constants.RedisCollection;
import com.yihu.hos.central.rest.services.crawler.CrawlerManager;
import com.yihu.hos.central.rest.services.qc.EsSimplePackage;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.web.framework.util.springutil.SpringBeanUtil;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.UnableToInterruptJobException;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.io.Serializable;
/**
 * 补传省平台任务。(获取补传队列中数据,上传省平台)
 *
 * @author hzy
 * @version 1.0
 * @created 2018.06.12
 */
@Component
@DisallowConcurrentExecution
public class SupplementUploadJob implements InterruptableJob {
    private static final Logger logger = LoggerFactory.getLogger(SupplementUploadJob.class);
    static CrawlerManager crawlerManager = null;
    static {
        crawlerManager = SpringBeanUtil.getService(CrawlerManager.class);
//        if (!crawlerManager.getDataForPrepare(null)) {
//            logger.info("缓存默认适配版本失败");
//            //将机构字典缓存起来
//        } else {
//            logger.info("缓存默认适配版本成功");
//        }
    }
    @Override
    public void interrupt() throws UnableToInterruptJobException {
        logger.info("interrup============================================================");
    }
    @Override
    public void execute(JobExecutionContext context) {
        //该对象要采用名称的方式获取,否则:expected single matching bean but found 3: redisTemplate,sessionRedisTemplate,stringRedisTemplate
        CrawlerManager crawlerManager = SpringBeanUtil.getService(CrawlerManager.class);
        if (!crawlerManager.getDataForPrepare(null)) {
            logger.info("缓存默认适配版本失败__补传");
            throw new RuntimeException("缓存默认适配版本失败——补传");
            //将机构字典缓存起来
        }
        RedisTemplate<String, Serializable> redisTemplate = SpringBeanUtil.getService("redisTemplate");
        ObjectMapper objectMapper = SpringBeanUtil.getService(ObjectMapper.class);
        Serializable serializable = redisTemplate.opsForList().rightPop(RedisCollection.PROVINCIAL_PLATFORM_QUEUE_SUPPLEMENT);
        EsSimplePackage pack = null;
        try {
            if (serializable != null) {
                String packStr = serializable.toString();
                pack = objectMapper.readValue(packStr, EsSimplePackage.class);
            }
            if (pack != null) {
                //上传省平台
                Boolean aBoolean = crawlerManager.collectProcessByRowkey(pack);
                if (!aBoolean) {
                    logger.error("补传--获取资源数据上传省平台失败~!");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

+ 82 - 0
src/main/java/com/yihu/hos/central/rest/job/UploadResourceJob.java

@ -0,0 +1,82 @@
package com.yihu.hos.central.rest.job;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.central.rest.constants.RedisCollection;
import com.yihu.hos.central.rest.feign.SvrResourceServiceClient;
import com.yihu.hos.central.rest.services.crawler.CrawlerManager;
import com.yihu.hos.central.rest.services.qc.EsSimplePackage;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
import com.yihu.hos.web.framework.util.springutil.SpringBeanUtil;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.InterruptableJob;
import org.quartz.JobExecutionContext;
import org.quartz.UnableToInterruptJobException;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.io.Serializable;
/**
 * 上传省平台任务。
 *
 * @author hzy
 * @version 1.0
 * @created 2018.06.12
 */
@Component
@DisallowConcurrentExecution
public class UploadResourceJob implements InterruptableJob {
    private static final Logger logger = LoggerFactory.getLogger(UploadResourceJob.class);
    private static final long DAY = 1000 * 60 * 60 * 24;
    static CrawlerManager crawlerManager = null;
    static {
        crawlerManager = SpringBeanUtil.getService(CrawlerManager.class);
        if (!crawlerManager.getDataForPrepare(null)) {
            logger.info("缓存默认适配版本失败");
            //将机构字典缓存起来
        } else {
            logger.info("缓存默认适配版本成功");
        }
    }
    @Override
    public void interrupt() throws UnableToInterruptJobException {
        logger.info("interrup============================================================");
    }
    @Override
    public void execute(JobExecutionContext context) {
        //该对象要采用名称的方式获取,否则:expected single matching bean but found 3: redisTemplate,sessionRedisTemplate,stringRedisTemplate
        CrawlerManager crawlerManager = SpringBeanUtil.getService(CrawlerManager.class);
        if (!crawlerManager.getDataForPrepare(null)) {
            logger.info("缓存默认适配版本失败");
            throw new RuntimeException("缓存默认适配版本失败");
            //将机构字典缓存起来
        }
        RedisTemplate<String, Serializable> redisTemplate = SpringBeanUtil.getService("redisTemplate");
        ObjectMapper objectMapper = SpringBeanUtil.getService(ObjectMapper.class);
        Serializable serializable = redisTemplate.opsForList().rightPop(RedisCollection.PROVINCIAL_PLATFORM_QUEUE);
        EsSimplePackage pack = null;
        try {
            if (serializable != null) {
                String packStr = serializable.toString();
                pack = objectMapper.readValue(packStr, EsSimplePackage.class);
            }
            if (pack != null) {
                // 上传数据到省平台
                Boolean aBoolean = crawlerManager.collectProcessByRowkey(pack);
                if (!aBoolean) {
                    logger.error("获取资源数据上传省平台失败~!");
                }
            }
        } catch (Exception e) {
           e.printStackTrace();
        }
    }
}

+ 111 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/adapter/AdapterDataSet.java

@ -0,0 +1,111 @@
package com.yihu.hos.central.rest.models.crawler.adapter;
import com.yihu.hos.central.rest.common.format.AdapterBase;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterDatasetModel;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterDictEntryModel;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterMetadataModel;
import com.yihu.hos.central.rest.models.standard.standard.StdDataSetModel;
import com.yihu.hos.central.rest.models.standard.standard.StdMetaDataModel;
import com.yihu.hos.core.datatype.CollectionUtil;
import com.yihu.hos.web.framework.model.standard.AdapterVersion;
import com.yihu.hos.web.framework.model.standard.StandardVersion;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @author Air
 * @version 1.0
 * @created 2015.08.11 11:29
 */
public class AdapterDataSet extends AdapterBase {
    private List<AdapterMetaData> adapterMetaDataList;
    private AdapterDatasetModel adapterDatasetModel;
    private Map<String, AdapterMetaData> adapterMetaDataMap;  //key 为 目标数据元编码
    private Map<String, StdMetaDataModel> targetMetaDataMap; //key 为 目标数据元编码
    private Map<String, StdMetaDataModel> originMetaDataMap; //key 为 源数据元编码
    private String eventNoCode;
    private AdapterVersion adapterVersion;
    private StandardVersion targetVersion;
    private StandardVersion originVersion;
    private StdDataSetModel originDataSetModel; //源数据集
    private StdDataSetModel targetDataSetModel; //目标数据集
    public AdapterDataSet(AdapterDatasetModel adapterDatasetModel, AdapterVersion adapterVersion, StandardVersion originVersion, StandardVersion targetVersion, Map<Long, List<AdapterDictEntryModel>> entryMap) {
        this.adapterDatasetModel = adapterDatasetModel;
        this.adapterVersion = adapterVersion;
        this.targetVersion = targetVersion;
        this.originVersion = originVersion;
        prepareData(entryMap);
    }
    public AdapterDatasetModel getAdapterDataSetT() {
        return adapterDatasetModel;
    }
    public void prepareData(Map<Long, List<AdapterDictEntryModel>> entryMap) {
        try {
            adapterMetaDataList = new ArrayList<>();
            adapterMetaDataMap = new HashMap<>();
            targetMetaDataMap = new HashMap<>();
            originMetaDataMap = new HashMap<>();
            //获取源数据集
            originDataSetModel = getStdDatasetService().get(originVersion,adapterDatasetModel.getAdapterDatasetId());
           //获取目标数据集
//            targetDataSetModel = getStdDatasetService().get(targetVersion,adapterDatasetModel.getStdDatasetId());
            List<AdapterMetadataModel> adapterMetaDataModelList = getAdapterMetadataService().getAdapterMetadataNotNullList(adapterVersion, adapterDatasetModel.getStdDatasetId());
            List<Long> stdMetaDataIdList = new ArrayList<>();
            if (!CollectionUtil.isEmpty(adapterMetaDataModelList)) {
                for (AdapterMetadataModel adapterMetadataModel : adapterMetaDataModelList) {
                    stdMetaDataIdList.add(adapterMetadataModel.getStdMetadataId());
                    AdapterMetaData adapterMetaData = new AdapterMetaData(adapterMetadataModel, adapterVersion, targetVersion,entryMap);
                    adapterMetaDataList.add(adapterMetaData);
                    adapterMetaDataMap.put(adapterMetadataModel.getStdMetadataCode().toUpperCase(), adapterMetaData);
                    StdMetaDataModel originMetaDataModel = getStdMetadataService().get(originVersion.getVersion(), adapterMetadataModel.getAdapterMetadataId());
                    if (originMetaDataModel!=null){
                        originMetaDataMap.put(adapterMetadataModel.getAdapterMetadataCode().toUpperCase(),originMetaDataModel);
                    }
                    StdMetaDataModel targetMetaDataModel = getStdMetadataService().get(targetVersion.getVersion(), adapterMetadataModel.getStdMetadataId());
                    targetMetaDataMap.put(adapterMetadataModel.getStdMetadataCode().toUpperCase(), targetMetaDataModel);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public Map<String, AdapterMetaData> getAdapterMetaDataMap() {
        return adapterMetaDataMap;
    }
    public List<AdapterMetaData> getAdapterMetaDataList() {
        return adapterMetaDataList;
    }
    public StdDataSetModel getOriginDataSetModel() {
        return originDataSetModel;
    }
    public Map<String, StdMetaDataModel> getTargetMetaDataMap() {
        return targetMetaDataMap;
    }
    public Map<String, StdMetaDataModel> getOriginMetaDataMap() {
        return originMetaDataMap;
    }
    public StandardVersion getTargetVersion() {
        return targetVersion;
    }
    public StandardVersion getOriginVersion() {
        return originVersion;
    }
}

+ 54 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/adapter/AdapterDict.java

@ -0,0 +1,54 @@
package com.yihu.hos.central.rest.models.crawler.adapter;
import com.yihu.hos.central.rest.common.format.AdapterBase;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterDictEntryModel;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterDictModel;
import com.yihu.hos.web.framework.model.standard.AdapterVersion;
import com.yihu.hos.web.framework.model.standard.StandardVersion;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @author Air
 * @version 1.0
 * @created 2015.08.11 11:31
 */
public class AdapterDict extends AdapterBase {
    private AdapterDictModel adapterDictModel;
    private Map<String, String> adapterValueToCodeMap;
    private Map<String, String> adapterCodeToCodeMap;
    private StandardVersion targetVersion;
    public AdapterDict(AdapterDictModel adapterDictModel, AdapterVersion adapterVersion, StandardVersion targetVersion,Map<Long, List<AdapterDictEntryModel>> entryMap) {
        this.adapterDictModel = adapterDictModel;
        this.targetVersion = targetVersion;
        prepareData(entryMap);
    }
    public void prepareData(Map<Long, List<AdapterDictEntryModel>> entryMap) {
        adapterValueToCodeMap = new HashMap<>();
        adapterCodeToCodeMap = new HashMap<>();
        List<AdapterDictEntryModel> adapterDictEntryModelList = entryMap.get(adapterDictModel.getStdDictId());
        if(!CollectionUtils.isEmpty(adapterDictEntryModelList)) {
            for (AdapterDictEntryModel adapterDictEntryModel : adapterDictEntryModelList) {
                adapterValueToCodeMap.put(adapterDictEntryModel.getAdapterEntryValue(), adapterDictEntryModel.getStdEntryCode());
                adapterCodeToCodeMap.put(adapterDictEntryModel.getAdapterEntryCode(), adapterDictEntryModel.getStdEntryCode());
            }
        }
    }
    public Map<String, String> getAdapterValueToCodeMap() {
        return adapterValueToCodeMap;
    }
    public Map<String, String> getAdapterCodeToCodeMap() {
        return adapterCodeToCodeMap;
    }
}

+ 14 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/adapter/AdapterDictEntry.java

@ -0,0 +1,14 @@
package com.yihu.hos.central.rest.models.crawler.adapter;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterDictEntryModel;
public class AdapterDictEntry {
    private AdapterDictEntryModel adapterDictEntryModel;
    private String version;
    public AdapterDictEntry(AdapterDictEntryModel adapterDictEntryModel, String version) {
        this.adapterDictEntryModel = adapterDictEntryModel;
        this.version = version;
    }
}

+ 64 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/adapter/AdapterMetaData.java

@ -0,0 +1,64 @@
package com.yihu.hos.central.rest.models.crawler.adapter;
import com.yihu.hos.central.rest.common.format.AdapterBase;
import com.yihu.hos.central.rest.models.crawler.transform.DictDataType;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterDictEntryModel;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterDictModel;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterMetadataModel;
import com.yihu.hos.core.datatype.NumberUtil;
import com.yihu.hos.web.framework.model.standard.AdapterVersion;
import com.yihu.hos.web.framework.model.standard.StandardVersion;
import java.util.List;
import java.util.Map;
/**
 * @author Air
 * @version 1.0
 * @created 2015.08.11 11:31
 */
public class AdapterMetaData extends AdapterBase {
    private AdapterMetadataModel adapterMetadataModel;
    private AdapterDict adapterDict;
    private AdapterVersion adapterVersion;
    private StandardVersion targetVersion;
    public AdapterMetaData(AdapterMetadataModel adapterMetadataModel, AdapterVersion adapterVersion,StandardVersion targetVersion, Map<Long, List<AdapterDictEntryModel>> entryMap) {
        this.adapterMetadataModel = adapterMetadataModel;
        this.adapterVersion = adapterVersion;
        this.targetVersion = targetVersion;
        prepareData(entryMap);
    }
    public AdapterMetadataModel getAdapterMetadataModel() {
        return adapterMetadataModel;
    }
    public void prepareData(Map<Long, List<AdapterDictEntryModel>> entryMap) {
        if (!NumberUtil.isZero(adapterMetadataModel.getStdDictId())) {
            /**
             * 默认适配字典的id与数据元的标准id一致
             */
            AdapterDictModel adapterDictModel = (AdapterDictModel) getAdapterDictService().findByfield(AdapterDictModel.class, adapterVersion.getDictTableName(), "stdDictId",adapterMetadataModel.getStdDictId());
            if (adapterDictModel != null) {
                adapterDict = new AdapterDict(adapterDictModel, adapterVersion,targetVersion, entryMap);
            }
        }
    }
    public AdapterDict getAdapterDict() {
        return adapterDict;
    }
    public DictDataType getAdapterDictDataType() {
        Integer orgDictDataType = adapterMetadataModel.getAdapterDataType();
        if (orgDictDataType == null){
            return DictDataType.VALUE;
        }
        return DictDataType.values()[orgDictDataType];
    }
}

+ 105 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/adapter/StdDataSet.java

@ -0,0 +1,105 @@
package com.yihu.hos.central.rest.models.crawler.adapter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yihu.hos.central.rest.common.format.StdBase;
import com.yihu.hos.central.rest.models.standard.standard.StdDataSetModel;
import com.yihu.hos.central.rest.models.standard.standard.StdMetaDataModel;
import com.yihu.hos.core.datatype.CollectionUtil;
import com.yihu.hos.web.framework.model.standard.StandardVersion;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @author Air
 * @version 1.0
 * @created 2015.08.11 11:29
 */
public class StdDataSet extends StdBase {
    private  Map<Long, Map<String,StdMetaDataModel>> stdDataSetMetasMap;
    private  Map<String, StdMetaDataModel> stdMetaDataMap;
    private List<StdMetaDataModel> stdMetaDataModelList;
    private StandardVersion standardVersion;
    private Long stdDataSetId;
    private String stdDataSetCode;
    public StdDataSet(Long  stdDataSetId,StandardVersion standardVersion) {
        this.stdDataSetId = stdDataSetId;
        this.standardVersion = standardVersion;
        prepareData();
    }
    public void prepareData() {
        try {
            stdDataSetMetasMap = new HashMap<>();
            stdMetaDataMap = new HashMap<>();
            Map<String, Object> condition = new HashMap<>();
            condition.put("column", "code");
            ObjectMapper objectMapper = new ObjectMapper();
            stdMetaDataModelList = getStdMetadataService().getStdMetadataNotNullList(standardVersion, stdDataSetId, objectMapper.writeValueAsString(condition));
            if (!CollectionUtil.isEmpty(stdMetaDataModelList)) {
                for (StdMetaDataModel stdMetadataModel : stdMetaDataModelList) {
                    stdMetaDataMap.put(stdMetadataModel.getInnerCode(),stdMetadataModel);
                }
                if (!stdDataSetMetasMap.containsKey(stdDataSetId)){
                    stdDataSetMetasMap.put(stdDataSetId,stdMetaDataMap);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void setDataSetCode(Long stdDataSetId){
        StdDataSetModel stdDataSetModel = getStdDatasetService().get(standardVersion,stdDataSetId);
        if (stdDataSetModel!=null){
            stdDataSetCode = stdDataSetModel.getCode();
        }
    }
    public Map<Long, Map<String, StdMetaDataModel>> getStdDataSetMetasMap() {
        return stdDataSetMetasMap;
    }
    public void setStdDataSetMetasMap(Map<Long, Map<String, StdMetaDataModel>> stdDataSetMetasMap) {
        this.stdDataSetMetasMap = stdDataSetMetasMap;
    }
    public List<StdMetaDataModel> getStdMetaDataModelList() {
        return stdMetaDataModelList;
    }
    public void setStdMetaDataModelList(List<StdMetaDataModel> stdMetaDataModelList) {
        this.stdMetaDataModelList = stdMetaDataModelList;
    }
    public Map<String, StdMetaDataModel> getStdMetaDataMap() {
        return stdMetaDataMap;
    }
    public void setStdMetaDataMap(Map<String, StdMetaDataModel> stdMetaDataMap) {
        this.stdMetaDataMap = stdMetaDataMap;
    }
    public Long getStdDataSetId() {
        return stdDataSetId;
    }
    public void setStdDataSetId(Long stdDataSetId) {
        this.stdDataSetId = stdDataSetId;
    }
    public String getStdDataSetCode() {
        return stdDataSetCode;
    }
    public void setStdDataSetCode(String stdDataSetCode) {
        this.stdDataSetCode = stdDataSetCode;
    }
}

+ 200 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/config/SysConfig.java

@ -0,0 +1,200 @@
package com.yihu.hos.central.rest.models.crawler.config;
import com.yihu.hos.central.rest.models.crawler.patient.PatientIdentity;
import com.yihu.hos.central.rest.models.crawler.patient.PatientIndex;
import com.yihu.hos.core.datatype.StringUtil;
import com.yihu.hos.core.log.Logger;
import com.yihu.hos.core.log.LoggerFactory;
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);
            String tempFile = rootElement.elementTextTrim("temp_file");
//            this.initPatientIndex(rootElement);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    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");
                orgcode = element.attributeValue("code");
                String version = element.elementTextTrim("version");
                orgcode= element.attributeValue("code");
                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

+ 66 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/flow/CrawlerDataSetKey.java

@ -0,0 +1,66 @@
package com.yihu.hos.central.rest.models.crawler.flow;
import javax.persistence.Embeddable;
import java.io.Serializable;
/**
 * 任务编排-数据集关系
 *
 * @created HZY 2016/4/27.
 */
@Embeddable
public class CrawlerDataSetKey implements Serializable {
    private Long schemeId;
    private Long schemeVersionId;
    private Long datasetId;
    public Long getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Long schemeId) {
        this.schemeId = schemeId;
    }
    public Long getSchemeVersionId() {
        return schemeVersionId;
    }
    public void setSchemeVersionId(Long schemeVersionId) {
        this.schemeVersionId = schemeVersionId;
    }
    public Long getDatasetId() {
        return datasetId;
    }
    public void setDatasetId(Long datasetId) {
        this.datasetId = datasetId;
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof CrawlerDataSetKey)) return false;
        CrawlerDataSetKey that = (CrawlerDataSetKey) o;
        if (getSchemeId() != null ? !getSchemeId().equals(that.getSchemeId()) : that.getSchemeId() != null)
            return false;
        if (getSchemeVersionId() != null ? !getSchemeVersionId().equals(that.getSchemeVersionId()) : that.getSchemeVersionId() != null)
            return false;
        return getDatasetId() != null ? getDatasetId().equals(that.getDatasetId()) : that.getDatasetId() == null;
    }
    @Override
    public int hashCode() {
        int result = getSchemeId() != null ? getSchemeId().hashCode() : 0;
        result = 31 * result + (getSchemeVersionId() != null ? getSchemeVersionId().hashCode() : 0);
        result = 31 * result + (getDatasetId() != null ? getDatasetId().hashCode() : 0);
        return result;
    }
}

+ 75 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/flow/CrawlerDataSetModel.java

@ -0,0 +1,75 @@
package com.yihu.hos.central.rest.models.crawler.flow;
import com.yihu.hos.web.framework.model.Result;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 任务编排-数据集关系
 *
 * @created HZY 2016/4/27.
 */
@Entity
@Table(name = "crawler_dataset")
@IdClass(CrawlerDataSetKey.class)
public class CrawlerDataSetModel extends Result implements Serializable {
    @Id
    @Column(name="scheme_id")
    private Long schemeId;
    @Id
    @Column(name="scheme_version_id")
    private Long schemeVersionId;
    @Id
    @Column(name="dataset_id")
    private Long datasetId;
    @Column(name="dataset_code")
    private String datasetCode;
    @Column(name="dataset_name")
    private String datasetName;
    public Long getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Long schemeId) {
        this.schemeId = schemeId;
    }
    public Long getSchemeVersionId() {
        return schemeVersionId;
    }
    public void setSchemeVersionId(Long schemeVersionId) {
        this.schemeVersionId = schemeVersionId;
    }
    public Long getDatasetId() {
        return datasetId;
    }
    public void setDatasetId(Long datasetId) {
        this.datasetId = datasetId;
    }
    public String getDatasetCode() {
        return datasetCode;
    }
    public void setDatasetCode(String datasetCode) {
        this.datasetCode = datasetCode;
    }
    public String getDatasetName() {
        return datasetName;
    }
    public void setDatasetName(String datasetName) {
        this.datasetName = datasetName;
    }
}

+ 65 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/flow/CrawlerFlowHeadKey.java

@ -0,0 +1,65 @@
package com.yihu.hos.central.rest.models.crawler.flow;
import java.io.Serializable;
/**
 * 标准基本信息
 *
 * @created Airhead 2015/12/23.
 */
public class CrawlerFlowHeadKey implements Serializable {
    private Long schemeVersionId;
    private String datasetCode;
    private String metadataCode;
    public Long getSchemeVersionId() {
        return schemeVersionId;
    }
    public void setSchemeVersionId(Long schemeVersionId) {
        this.schemeVersionId = schemeVersionId;
    }
    public String getDatasetCode() {
        return datasetCode;
    }
    public void setDatasetCode(String datasetCode) {
        this.datasetCode = datasetCode;
    }
    public String getMetadataCode() {
        return metadataCode;
    }
    public void setMetadataCode(String metadataCode) {
        this.metadataCode = metadataCode;
    }
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (!(o instanceof CrawlerFlowHeadKey)) return false;
        CrawlerFlowHeadKey that = (CrawlerFlowHeadKey) o;
        if (getSchemeVersionId() != null ? !getSchemeVersionId().equals(that.getSchemeVersionId()) : that.getSchemeVersionId() != null)
            return false;
        if (getDatasetCode() != null ? !getDatasetCode().equals(that.getDatasetCode()) : that.getDatasetCode() != null)
            return false;
        return getMetadataCode() != null ? getMetadataCode().equals(that.getMetadataCode()) : that.getMetadataCode() == null;
    }
    @Override
    public int hashCode() {
        int result = getSchemeVersionId() != null ? getSchemeVersionId().hashCode() : 0;
        result = 31 * result + (getDatasetCode() != null ? getDatasetCode().hashCode() : 0);
        result = 31 * result + (getMetadataCode() != null ? getMetadataCode().hashCode() : 0);
        return result;
    }
}

+ 65 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/flow/CrawlerFlowHeadModel.java

@ -0,0 +1,65 @@
package com.yihu.hos.central.rest.models.crawler.flow;
import com.yihu.hos.web.framework.model.Result;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 标准基本信息
 *
 * @created Airhead 2015/12/23.
 */
@Entity
@Table(name = "crawler_flow_head")
@IdClass(CrawlerFlowHeadKey.class)
public class CrawlerFlowHeadModel extends Result implements Serializable {
    @Id
    @Column(name="scheme_version_id")
    private Long schemeVersionId;
    @Id
    @Column(name="dataset_code")
    private String datasetCode;
    @Id
    @Column(name="metadata_code")
    private String metadataCode;
    @Column(name="identity_code")
    private String identityCode;
    public Long getSchemeVersionId() {
        return schemeVersionId;
    }
    public void setSchemeVersionId(Long schemeVersionId) {
        this.schemeVersionId = schemeVersionId;
    }
    public String getDatasetCode() {
        return datasetCode;
    }
    public void setDatasetCode(String datasetCode) {
        this.datasetCode = datasetCode;
    }
    public String getMetadataCode() {
        return metadataCode;
    }
    public void setMetadataCode(String metadataCode) {
        this.metadataCode = metadataCode;
    }
    public String getIdentityCode() {
        return identityCode;
    }
    public void setIdentityCode(String identityCode) {
        this.identityCode = identityCode;
    }
}

+ 109 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/flow/CrawlerFlowModel.java

@ -0,0 +1,109 @@
package com.yihu.hos.central.rest.models.crawler.flow;
import com.yihu.hos.web.framework.model.Result;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 标准基本信息
 *
 * @created Airhead 2015/12/23.
 */
@Entity
@Table(name = "crawler_flow")
public class CrawlerFlowModel extends Result implements Serializable {
    @Id
    @Column(name="id")
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    private Integer id;
    @Column(name="scheme_version_id")
    private Long schemeVersionId;
    @Column(name="dataset_code")
    private String datasetCode;
    @Column(name="metadata_code")
    private String metadataCode;
    @Column(name="input_dataset_code")
    private String inputDatasetCode;
    @Column(name="input_metadata_code")
    private String inputMetadataCode;
    @Column(name="input_metadata_code2")
    private String inputMetadataCode2;
    @Column(name="input_default_value")
    private String inputDefaultValue;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Long getSchemeVersionId() {
        return schemeVersionId;
    }
    public void setSchemeVersionId(Long schemeVersionId) {
        this.schemeVersionId = schemeVersionId;
    }
    public String getDatasetCode() {
        return datasetCode;
    }
    public void setDatasetCode(String datasetCode) {
        this.datasetCode = datasetCode;
    }
    public String getMetadataCode() {
        return metadataCode;
    }
    public void setMetadataCode(String metadataCode) {
        this.metadataCode = metadataCode;
    }
    public String getInputDatasetCode() {
        return inputDatasetCode;
    }
    public void setInputDatasetCode(String inputDatasetCode) {
        this.inputDatasetCode = inputDatasetCode;
    }
    public String getInputMetadataCode() {
        return inputMetadataCode;
    }
    public void setInputMetadataCode(String inputMetadataCode) {
        this.inputMetadataCode = inputMetadataCode;
    }
    public String getInputMetadataCode2() {
        return inputMetadataCode2;
    }
    public void setInputMetadataCode2(String inputMetadataCode2) {
        this.inputMetadataCode2 = inputMetadataCode2;
    }
    public String getInputDefaultValue() {
        return inputDefaultValue;
    }
    public void setInputDefaultValue(String inputDefaultValue) {
        this.inputDefaultValue = inputDefaultValue;
    }
}

+ 21 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/CrawlerDatasetResultDetailModel.java

@ -0,0 +1,21 @@
package com.yihu.hos.central.rest.models.crawler.flow.resultModel;
import com.yihu.hos.central.rest.models.crawler.flow.CrawlerDataSetModel;
/**
 * 任务编排数据集关联
 */
public class CrawlerDatasetResultDetailModel extends CrawlerDataSetModel implements java.io.Serializable {
	private String checked;
	public String getChecked() {
		return checked;
	}
	public void setChecked(String checked) {
		this.checked = checked;
	}
}

+ 23 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/CrawlerDatasetResultModel.java

@ -0,0 +1,23 @@
package com.yihu.hos.central.rest.models.crawler.flow.resultModel;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterSchemeVersionModel;
import java.io.Serializable;
/**
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/4/27.
 */
public class CrawlerDatasetResultModel extends AdapterSchemeVersionModel implements Serializable {
    private String dataSets;
    public String getDataSets() {
        return dataSets;
    }
    public void setDataSets(String dataSets) {
        this.dataSets = dataSets;
    }
}

+ 30 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/FlowEntrance.java

@ -0,0 +1,30 @@
package com.yihu.hos.central.rest.models.crawler.flow.resultModel;
import java.io.Serializable;
/**
 *  编排入口
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/4/27.
 */
public class FlowEntrance implements Serializable {
    private String dataSet;
    private String meta;
    public String getDataSet() {
        return dataSet;
    }
    public void setDataSet(String dataSet) {
        this.dataSet = dataSet;
    }
    public String getMeta() {
        return meta;
    }
    public void setMeta(String meta) {
        this.meta = meta;
    }
}

+ 48 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/FlowLines.java

@ -0,0 +1,48 @@
package com.yihu.hos.central.rest.models.crawler.flow.resultModel;
import java.io.Serializable;
/**
 *  编排映射关系
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/4/27.
 */
public class FlowLines implements Serializable {
    private String from;
    private String to;
    private String fromPort;
    private String toPort;
    public String getFrom() {
        return from;
    }
    public void setFrom(String from) {
        this.from = from;
    }
    public String getTo() {
        return to;
    }
    public void setTo(String to) {
        this.to = to;
    }
    public String getFromPort() {
        return fromPort;
    }
    public void setFromPort(String fromPort) {
        this.fromPort = fromPort;
    }
    public String getToPort() {
        return toPort;
    }
    public void setToPort(String toPort) {
        this.toPort = toPort;
    }
}

+ 40 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/FlowMapping.java

@ -0,0 +1,40 @@
package com.yihu.hos.central.rest.models.crawler.flow.resultModel;
import java.io.Serializable;
import java.util.List;
/**
 * 适配方案映射数据类
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/4/28.
 */
public class FlowMapping implements Serializable {
    private List<FlowEntrance> entrances;
    private List<FlowLines> lines;
    private Integer schemeVersionId;
    public List<FlowEntrance> getEntrances() {
        return entrances;
    }
    public void setEntrances(List<FlowEntrance> entrances) {
        this.entrances = entrances;
    }
    public List<FlowLines> getLines() {
        return lines;
    }
    public void setLines(List<FlowLines> lines) {
        this.lines = lines;
    }
    public Integer getSchemeVersionId() {
        return schemeVersionId;
    }
    public void setSchemeVersionId(Integer schemeVersionId) {
        this.schemeVersionId = schemeVersionId;
    }
}

+ 47 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/MappingDataset.java

@ -0,0 +1,47 @@
package com.yihu.hos.central.rest.models.crawler.flow.resultModel;
import java.util.List;
/**
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/4/29.
 */
public class MappingDataset {
    private Long id;
    private String code;
    private String name;
    private List<MappingMetadata> data;
    public List<MappingMetadata> getData() {
        return data;
    }
    public void setData(List<MappingMetadata> data) {
        this.data = data;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

+ 36 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/flow/resultModel/MappingMetadata.java

@ -0,0 +1,36 @@
package com.yihu.hos.central.rest.models.crawler.flow.resultModel;
/**
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/4/29.
 */
public class MappingMetadata {
    private Long id;
    private String code;
    private String name;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

+ 112 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/patient/Patient.java

@ -0,0 +1,112 @@
package com.yihu.hos.central.rest.models.crawler.patient;
/**
 * @author Air
 * @version 1.0
 * @created 2015.08.14 10:12
 */
public class Patient {
    private String patientId;
    private String eventNo;
    private String localCardNo;
    private String idCard;
    private String orgCode;
    private String latestTime;
    private String referenceTime;
    private String reUploadFlg;
    private String jobTimeStamp;
    private String failType; //采集失败类型
    private String dataSet; //从哪个数据集采集
    public Patient() {
    }
    public String getDataSet() {
        return dataSet;
    }
    public void setDataSet(String dataSet) {
        this.dataSet = dataSet;
    }
    public String getPatientId() {
        return patientId;
    }
    public void setPatientId(String patientId) {
        this.patientId = patientId;
    }
    public String getEventNo() {
        return eventNo;
    }
    public void setEventNo(String eventNo) {
        this.eventNo = eventNo;
    }
    public String getLocalCardNo() {
        return localCardNo;
    }
    public void setLocalCardNo(String localCardNo) {
        this.localCardNo = localCardNo;
    }
    public String getIdCard() {
        return idCard;
    }
    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getLatestTime() {
        return latestTime;
    }
    public void setLatestTime(String latestTime) {
        this.latestTime = latestTime;
    }
    public String getReferenceTime() {
        return referenceTime;
    }
    public void setReferenceTime(String referenceTime) {
        this.referenceTime = referenceTime;
    }
    public String getJobTimeStamp() {
        return jobTimeStamp;
    }
    public void setJobTimeStamp(String jobTimeStamp) {
        this.jobTimeStamp = jobTimeStamp;
    }
    public String getReUploadFlg() {
        return reUploadFlg;
    }
    public void setReUploadFlg(String reUploadFlg) {
        this.reUploadFlg = reUploadFlg;
    }
    public String getFailType() {
        return failType;
    }
    public void setFailType(String failType) {
        this.failType = failType;
    }
}

+ 59 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/patient/PatientIdentity.java

@ -0,0 +1,59 @@
package com.yihu.hos.central.rest.models.crawler.patient;
import java.util.HashSet;
import java.util.Set;
/**
 * 病人身份标识
 * 病人ID, 事件号(门诊号,住院号等),卡号,身份证号
 * 目前使用的是病人ID和事件号
 *
 * @author Air
 * @version 1.0
 * @created 2015.06.16 16:29
 */
public class PatientIdentity {
    public static final String PATIENT_ID = "PATIENT_ID";
    public static final String LOCAL_CARD_NO = "CARD_NO";
    public static final String ID_CARD = "DE02_01_030_00";
    public static Set<String> EVENT_NO_SET = new HashSet<>();
    private String eventNoCode;
    private String refTimeCode;
    public PatientIdentity(String eventNoCode, String refTimeCode) {
        this.eventNoCode = eventNoCode;
        this.refTimeCode = refTimeCode;
        EVENT_NO_SET.add(eventNoCode);
    }
    public static String getPatientIDCode() {
        return PATIENT_ID;
    }
    public static String getLocalCardNoCode() {
        return LOCAL_CARD_NO;
    }
    public static String getIdCardCode() {
        return ID_CARD;
    }
    public static Set<String> getEventNoSet() {
        return EVENT_NO_SET;
    }
    public static void addEventNoCode(String eventNoCode) {
        EVENT_NO_SET.add(eventNoCode);
    }
    public String getEventNoCode() {
        return eventNoCode;
    }
    public String getRefTimeCode() {
        return refTimeCode;
    }
}

+ 110 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/patient/PatientIndex.java

@ -0,0 +1,110 @@
package com.yihu.hos.central.rest.models.crawler.patient;
/**
 * 病人摘要标识
 *
 *
 * @author HXY
 * @version 1.0
 * @created 2016.03.01 13:50
 */
public class PatientIndex {
    public static final String PATIENT_ID = "PATIENT_ID";
    private String eventNoCode;
    private String refTimeCode;
//    private String organization;
    private String officeCode;
    private String officeName;
    private String leaveTime;
    private String diagDataSet;
    private String diagCode;
    private String diagName;
    private String diagType;
    public PatientIndex() {
    }
    public String getDiagType() {
        return diagType;
    }
    public void setDiagType(String diagType) {
        this.diagType = diagType;
    }
    public static String getPatientId() {
        return PATIENT_ID;
    }
    public String getEventNoCode() {
        return eventNoCode;
    }
    public void setEventNoCode(String eventNoCode) {
        this.eventNoCode = eventNoCode;
    }
    public String getRefTimeCode() {
        return refTimeCode;
    }
    public void setRefTimeCode(String refTimeCode) {
        this.refTimeCode = refTimeCode;
    }
//    public String getOrganization() {
//        return organization;
//    }
//
//    public void setOrganization(String organization) {
//        this.organization = organization;
//    }
    public String getOfficeCode() {
        return officeCode;
    }
    public void setOfficeCode(String officeCode) {
        this.officeCode = officeCode;
    }
    public String getOfficeName() {
        return officeName;
    }
    public void setOfficeName(String officeName) {
        this.officeName = officeName;
    }
    public String getLeaveTime() {
        return leaveTime;
    }
    public void setLeaveTime(String leaveTime) {
        this.leaveTime = leaveTime;
    }
    public String getDiagDataSet() {
        return diagDataSet;
    }
    public void setDiagDataSet(String diagDataSet) {
        this.diagDataSet = diagDataSet;
    }
    public String getDiagCode() {
        return diagCode;
    }
    public void setDiagCode(String diagCode) {
        this.diagCode = diagCode;
    }
    public String getDiagName() {
        return diagName;
    }
    public void setDiagName(String diagName) {
        this.diagName = diagName;
    }
}

+ 192 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/statistics/Upload.java

@ -0,0 +1,192 @@
package com.yihu.hos.central.rest.models.crawler.statistics;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * ElasticSearch:upload
 */
public class Upload implements Serializable {
    //--------------------es必定不为空的字段-----------------------------------------
    private String _id; //重传或者补传为profile_id,否则为uuid
    private Integer origin;//0为重传,即reuploadFlag为true    1为补传(事件时间晚于当前时间3天)    2查询索引失败  3查询主表失败     4查询细表失败      5sql插入失败
    private Date create_date;
    private String schema_version;//适配省平台版本号
    private Integer failed_count;//失败次数
    private String failed_message;//失败信息
    //--------------------es可能为空的字段-----------------------------------------
    private Date start_date;//开始时间                   origin=2,4时有该字段      origin=3可能有,可能没有
    private Date end_date;//结束时间                     origin=2,4时有该字段      origin=3可能有,可能没有
    private String row_key;//                            origin=0,1时,有该字段     origin=3可能有,可能没有
    private String table;//平台数据集code                origin=3,4时,有该字段
    private String upload_table;//待上传的数据集code     origin=3,4时,有该字段
    private String sql;//待执行的sql                     origin=5时,有该字段
    private String event_date;//事件时间
    private String patient_id;//病人ID
    private String event_no;//事件号
    private String org_code;//机构代码
    private String org_name;//机构名称
    private Integer event_type;//事件类型
    private String patient_name;//病人姓名
    private String idcard_no;//身份证号
    public String get_id() {
        return _id;
    }
    public void set_id(String _id) {
        this._id = _id;
    }
    public Integer getOrigin() {
        return origin;
    }
    public void setOrigin(Integer origin) {
        this.origin = origin;
    }
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    public Date getCreate_date() {
        return create_date;
    }
    public void setCreate_date(Date create_date) {
        this.create_date = create_date;
    }
    public String getSchema_version() {
        return schema_version;
    }
    public void setSchema_version(String schema_version) {
        this.schema_version = schema_version;
    }
    public Integer getFailed_count() {
        return failed_count;
    }
    public void setFailed_count(Integer failed_count) {
        this.failed_count = failed_count;
    }
    public String getFailed_message() {
        return failed_message;
    }
    public void setFailed_message(String failed_message) {
        this.failed_message = failed_message;
    }
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    public Date getStart_date() {
        return start_date;
    }
    public void setStart_date(Date start_date) {
        this.start_date = start_date;
    }
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    public Date getEnd_date() {
        return end_date;
    }
    public void setEnd_date(Date end_date) {
        this.end_date = end_date;
    }
    public String getRow_key() {
        return row_key;
    }
    public void setRow_key(String row_key) {
        this.row_key = row_key;
    }
    public String getEvent_date() {
        return event_date;
    }
    public void setEvent_date(String event_date) {
        this.event_date = event_date;
    }
    public String getTable() {
        return table;
    }
    public void setTable(String table) {
        this.table = table;
    }
    public String getUpload_table() {
        return upload_table;
    }
    public void setUpload_table(String upload_table) {
        this.upload_table = upload_table;
    }
    public String getPatient_id() {
        return patient_id;
    }
    public void setPatient_id(String patient_id) {
        this.patient_id = patient_id;
    }
    public String getEvent_no() {
        return event_no;
    }
    public void setEvent_no(String event_no) {
        this.event_no = event_no;
    }
    public String getOrg_code() {
        return org_code;
    }
    public void setOrg_code(String org_code) {
        this.org_code = org_code;
    }
    public String getOrg_name() {
        return org_name;
    }
    public void setOrg_name(String org_name) {
        this.org_name = org_name;
    }
    public Integer getEvent_type() {
        return event_type;
    }
    public void setEvent_type(Integer event_type) {
        this.event_type = event_type;
    }
    public String getPatient_name() {
        return patient_name;
    }
    public void setPatient_name(String patient_name) {
        this.patient_name = patient_name;
    }
    public String getIdcard_no() {
        return idcard_no;
    }
    public void setIdcard_no(String idcard_no) {
        this.idcard_no = idcard_no;
    }
}

+ 105 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/statistics/UploadDetail.java

@ -0,0 +1,105 @@
package com.yihu.hos.central.rest.models.crawler.statistics;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
public class UploadDetail implements Serializable {
    private String _id;
    private Date record_date;//查询时间,记录时间
    private Long inpatient_num;//采集住院总数
    private Date inpatient_date;//住院最大就诊时间(记录已上传到何时)
    private Long outpatient_num;//采集门诊总数
    private Date outpatient_date;//门诊最大就诊时间(记录已上传到何时)
    private Long health_num;//体检总数
    private Date health_date;//体检最大时间(记录已上传到何时)
    private String org_code;//平台标准的org_code
    private Date update_time;//最后更新时间
    public String get_id() {
        return _id;
    }
    public void set_id(String _id) {
        this._id = _id;
    }
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    public Date getRecord_date() {
        return record_date;
    }
    public void setRecord_date(Date record_date) {
        this.record_date = record_date;
    }
    public Long getInpatient_num() {
        return inpatient_num;
    }
    public void setInpatient_num(Long inpatient_num) {
        this.inpatient_num = inpatient_num;
    }
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    public Date getInpatient_date() {
        return inpatient_date;
    }
    public void setInpatient_date(Date inpatient_date) {
        this.inpatient_date = inpatient_date;
    }
    public Long getOutpatient_num() {
        return outpatient_num;
    }
    public void setOutpatient_num(Long outpatient_num) {
        this.outpatient_num = outpatient_num;
    }
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    public Date getOutpatient_date() {
        return outpatient_date;
    }
    public void setOutpatient_date(Date outpatient_date) {
        this.outpatient_date = outpatient_date;
    }
    public Long getHealth_num() {
        return health_num;
    }
    public void setHealth_num(Long health_num) {
        this.health_num = health_num;
    }
    @JsonFormat(pattern="yyyy-MM-dd", timezone = "GMT+8")
    public Date getHealth_date() {
        return health_date;
    }
    public void setHealth_date(Date health_date) {
        this.health_date = health_date;
    }
    public String getOrg_code() {
        return org_code;
    }
    public void setOrg_code(String org_code) {
        this.org_code = org_code;
    }
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    public Date getUpdate_time() {
        return update_time;
    }
    public void setUpdate_time(Date update_time) {
        this.update_time = update_time;
    }
}

+ 115 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/statistics/UploadFail.java

@ -0,0 +1,115 @@
package com.yihu.hos.central.rest.models.crawler.statistics;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
/**
 *  上传省平台失败记录
 * @author hzy
 * @created 2018-07-11
 */
public class UploadFail implements Serializable {
    private String _id;
    private String rowkey; //rowkey
    private String patient_id;//病人ID
    private String event_no;//事件号
    private String org_code;//机构代码
    private String org_name;//机构名称
    private String event_date;//事件时间
    private Integer event_type;//事件类型
    private String patient_name;//病人姓名
    private String idcard_no;//身份证号
    private Date update_time;//最后更新时间
    public String get_id() {
        return _id;
    }
    public void set_id(String _id) {
        this._id = _id;
    }
    public String getRowkey() {
        return rowkey;
    }
    public void setRowkey(String rowkey) {
        this.rowkey = rowkey;
    }
    public String getPatient_id() {
        return patient_id;
    }
    public void setPatient_id(String patient_id) {
        this.patient_id = patient_id;
    }
    public String getEvent_no() {
        return event_no;
    }
    public void setEvent_no(String event_no) {
        this.event_no = event_no;
    }
    public String getOrg_code() {
        return org_code;
    }
    public void setOrg_code(String org_code) {
        this.org_code = org_code;
    }
    public String getOrg_name() {
        return org_name;
    }
    public void setOrg_name(String org_name) {
        this.org_name = org_name;
    }
    public String getEvent_date() {
        return event_date;
    }
    public void setEvent_date(String event_date) {
        this.event_date = event_date;
    }
    public Integer getEvent_type() {
        return event_type;
    }
    public void setEvent_type(Integer event_type) {
        this.event_type = event_type;
    }
    public String getPatient_name() {
        return patient_name;
    }
    public void setPatient_name(String patient_name) {
        this.patient_name = patient_name;
    }
    public String getIdcard_no() {
        return idcard_no;
    }
    public void setIdcard_no(String idcard_no) {
        this.idcard_no = idcard_no;
    }
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    public Date getUpdate_time() {
        return update_time;
    }
    public void setUpdate_time(Date update_time) {
        this.update_time = update_time;
    }
}

+ 9 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/transform/DictDataType.java

@ -0,0 +1,9 @@
package com.yihu.hos.central.rest.models.crawler.transform;
/**
 * Created by Administrator on 2015/9/16.
 */
public enum DictDataType {
    VALUE, //值
    CODE //编码
}

+ 65 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/transform/EhrCondition.java

@ -0,0 +1,65 @@
package com.yihu.hos.central.rest.models.crawler.transform;
/**
 * 集成平台采集条件基类
 * Created by HZY on 2016/2/25.
 */
public class EhrCondition {
    private String andOr;
    private String field;
    private String condition;
    private String value;
    public EhrCondition(String condition, String field, String value){
        this.andOr=" AND ";
        this.field=field;
        this.condition=condition;
        this.value=value;
    }
    public void andQuery(String condition,String field,String value){
        this.andOr=" AND ";
        this.field=field;
        this.condition=condition;
        this.value=value;
    }
    public void orQuery(String condition,String field,String value){
        this.andOr=" OR ";
        this.field=field;
        this.condition=condition;
        this.value=value;
    }
    public String getAndOr() {
        return andOr;
    }
    public void setAndOr(String andOr) {
        this.andOr = andOr;
    }
    public String getField() {
        return field;
    }
    public void setField(String field) {
        this.field = field;
    }
    public String getCondition() {
        return condition;
    }
    public void setCondition(String condition) {
        this.condition = condition;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
}

+ 15 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/transform/IVerifier.java

@ -0,0 +1,15 @@
package com.yihu.hos.central.rest.models.crawler.transform;
/**
 * @author Airhead
 * @version 1.0
 * @created 22-5-2015 11:24:26
 */
public interface IVerifier {
    /**
     */
    boolean check();
    String getErrorInfo();
}

+ 12 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/transform/LogicValues.java

@ -0,0 +1,12 @@
package com.yihu.hos.central.rest.models.crawler.transform;
/**
 * Created by HZY on 2016/1/29.
 */
public class LogicValues {
    public static final String LOGIC_OK = "ok";
    public static final String LOGIC_NO = "no";
    public static final String LOGIC_TRUE = "true";
    public static final String LOGIC_FALSE = "false";
}

+ 45 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/transform/MetaDataType.java

@ -0,0 +1,45 @@
package com.yihu.hos.central.rest.models.crawler.transform;
/**
 * 数据元类型
 *
 * @created Created by Air on 2015/6/9.
 */
public enum MetaDataType {
    /**
     * 字符,不可枚举
     */
    S1,
    /**
     * 字符,枚举<=3个
     */
    S2,
    /**
     * 字符,代码表
     */
    S3,
    /**
     * 布尔,0(False),1(True)
     */
    L,
    /**
     * 数值,
     */
    N,
    /**
     * 日期
     */
    D,
    /**
     * 时间日期
     */
    DT,
    /**
     * 时间
     */
    T,
    /**
     * 二进制
     */
    BY
}

+ 21 - 0
src/main/java/com/yihu/hos/central/rest/models/crawler/transform/TransformType.java

@ -0,0 +1,21 @@
package com.yihu.hos.central.rest.models.crawler.transform;
/**
 * @created  Air on 2015/6/8.
 */
public enum TransformType {
    /**
     * 数据集
     */
    DATA_SET_JSON,
    DATA_SET_XML,
    /**
     * CDA
     */
    CDA_JSON,
    CDA_XML,
    /**
     * 非结构化
     */
    DOCUMENT,
}

+ 46 - 0
src/main/java/com/yihu/hos/central/rest/models/rs/DtoDatasetCol.java

@ -0,0 +1,46 @@
package com.yihu.hos.central.rest.models.rs;
/**
 * 数据集字段
 */
public class DtoDatasetCol implements java.io.Serializable {
	private String code;
	private String text;
	private String type;
	private String dict;
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getText() {
		return text;
	}
	public void setText(String text) {
		this.text = text;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getDict() {
		return dict;
	}
	public void setDict(String dict) {
		this.dict = dict;
	}
}

+ 48 - 0
src/main/java/com/yihu/hos/central/rest/models/rs/DtoDictCol.java

@ -0,0 +1,48 @@
package com.yihu.hos.central.rest.models.rs;
import org.json.JSONArray;
/**
 * 数据源关联字典
 */
public class DtoDictCol implements java.io.Serializable {
    private String stdMetadataCode;
    private String adapterDataType;
    private String stdDictId;
    private JSONArray dictList;
    public String getStdMetadataCode() {
        return stdMetadataCode;
    }
    public void setStdMetadataCode(String stdMetadataCode) {
        this.stdMetadataCode = stdMetadataCode;
    }
    public String getAdapterDataType() {
        return adapterDataType;
    }
    public void setAdapterDataType(String adapterDataType) {
        this.adapterDataType = adapterDataType;
    }
    public String getStdDictId() {
        return stdDictId;
    }
    public void setStdDictId(String stdDictId) {
        this.stdDictId = stdDictId;
    }
    public JSONArray getDictList() {
        return dictList;
    }
    public void setDictList(JSONArray dictList) {
        this.dictList = dictList;
    }
}

+ 35 - 0
src/main/java/com/yihu/hos/central/rest/models/rs/DtoJobConfig.java

@ -0,0 +1,35 @@
package com.yihu.hos.central.rest.models.rs;
/**
 * RsJobConfig entity. @author MyEclipse Persistence Tools
 */
public class DtoJobConfig extends RsJobConfig implements java.io.Serializable {
	private String schemeAndVersion;
	private String jobDataset;
	private String jobPlan;
	public String getSchemeAndVersion() {
		return schemeAndVersion;
	}
	public void setSchemeAndVersion(String schemeAndVersion) {
		this.schemeAndVersion = schemeAndVersion;
	}
	public String getJobDataset() {
		return jobDataset;
	}
	public void setJobDataset(String jobDataset) {
		this.jobDataset = jobDataset;
	}
	public String getJobPlan() {
		return jobPlan;
	}
	public void setJobPlan(String jobPlan) {
		this.jobPlan = jobPlan;
	}
}

+ 74 - 0
src/main/java/com/yihu/hos/central/rest/models/rs/DtoJobDataset.java

@ -0,0 +1,74 @@
package com.yihu.hos.central.rest.models.rs;
/**
 * RsJobDataset entity. @author MyEclipse Persistence Tools
 */
public class DtoJobDataset extends RsJobDataset implements java.io.Serializable {
	private String checked;
	private String jobDatasetCode;
	/** 数据源相关 **/
	private String orgCode;
	private String datasourceId;
	private String datasourceName;
	private String config;
	private String type;
	public String getOrgCode() {
		return orgCode;
	}
	public void setOrgCode(String orgCode) {
		this.orgCode = orgCode;
	}
	public String getChecked() {
		return checked;
	}
	public void setChecked(String checked) {
		this.checked = checked;
	}
	public String getJobDatasetCode() {
		return jobDatasetCode;
	}
	public void setJobDatasetCode(String jobDatasetCode) {
		this.jobDatasetCode = jobDatasetCode;
	}
	public String getDatasourceId() {
		return datasourceId;
	}
	public void setDatasourceId(String datasourceId) {
		this.datasourceId = datasourceId;
	}
	public String getDatasourceName() {
		return datasourceName;
	}
	public void setDatasourceName(String datasourceName) {
		this.datasourceName = datasourceName;
	}
	public String getConfig() {
		return config;
	}
	public void setConfig(String config) {
		this.config = config;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
}

+ 36 - 0
src/main/java/com/yihu/hos/central/rest/models/rs/DtoJobLog.java

@ -0,0 +1,36 @@
package com.yihu.hos.central.rest.models.rs;
/**
 * add by hzp at 20160204
 */
public class DtoJobLog extends RsJobLog implements java.io.Serializable {
	private Integer count;
	private Integer success;
	private Integer repeatNum;
	public Integer getCount() {
		return count;
	}
	public void setCount(Integer count) {
		this.count = count;
	}
	public Integer getSuccess() {
		return success;
	}
	public void setSuccess(Integer success) {
		this.success = success;
	}
	public Integer getRepeatNum() {
		return repeatNum;
	}
	public void setRepeatNum(Integer repeatNum) {
		this.repeatNum = repeatNum;
	}
}

+ 75 - 0
src/main/java/com/yihu/hos/central/rest/models/rs/RsDatapushLog.java

@ -0,0 +1,75 @@
package com.yihu.hos.central.rest.models.rs;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.Date;
/**
 * RsJobLog entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "rs_datapush_log")
public class RsDatapushLog implements java.io.Serializable {
	// Fields
	@Id
	@Column(name="id",length = 50)
	@GeneratedValue(generator = "uuid")
	@GenericGenerator(name = "uuid", strategy = "uuid")
	private String id;
	@Column(name="type",length = 50,nullable = true)
	private String type;
	@Column(name="success",length = 50,nullable = true)
	private String success;
	@Column(name="content",length = 2000,nullable = true)
	private String content;
	@Column(name="datetime")
	private Date datetime;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getSuccess() {
		return success;
	}
	public void setSuccess(String success) {
		this.success = success;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public Date getDatetime() {
		return datetime;
	}
	public void setDatetime(Date datetime) {
		this.datetime = datetime;
	}
}

+ 211 - 0
src/main/java/com/yihu/hos/central/rest/models/rs/RsJobConfig.java

@ -0,0 +1,211 @@
package com.yihu.hos.central.rest.models.rs;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.Date;
/**
 * RsJobConfig entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "rs_job_config")
public class RsJobConfig implements java.io.Serializable {
	// Fields
	@Id
	@Column(name="id",length = 50)
	@GeneratedValue(generator = "uuid")
	@GenericGenerator(name = "uuid", strategy = "uuid")
	private String id;
	@Column(name="job_name",length = 50,nullable = true)
	private String jobName;//任务名称
	@Column(name="job_info",length = 200)
	private String jobInfo;//任务描述
	@Column(name="job_type",length = 10)
	private String jobType;//任务类型(0--单次执行 1--周期执行 2--监听任务)
	@Column(name="scheme_id",length = 50)
	private String schemeId;//适配方案
	@Column(name="scheme_version",length = 50)
	private String schemeVersion;//适配方案版本
	@Column(name="job_next_time")
	private Date jobNextTime;//任务下次执行时间
	@Column(name="valid",length = 10,nullable = true)
	private String valid;//是否有效
	@Column(name="job_content",length = 50)
	private String jobContent;//任务内容
	@Column(name="job_content_type",length = 10)
	private String jobContentType;//任务内容类型
	@Column(name="repeat_start_Time")
	private Date repeatStartTime;//采集开始时间
	@Column(name="repeat_end_Time")
	private Date repeatEndTime;//采集结束时间
	@Column(name="delay_time")
	private Integer delayTime;//延迟时间
	@Column(name="flow_id")
	private Integer flowId;//流程ID
	@Column(name="flow_temp_id")
	private Integer flowTempId;//流程模板ID
	// Constructors
	/** default constructor */
	public RsJobConfig() {
	}
	public Integer getFlowTempId() {
		return flowTempId;
	}
	public void setFlowTempId(Integer flowTempId) {
		this.flowTempId = flowTempId;
	}
	public Integer getFlowId() {
		return flowId;
	}
	public void setFlowId(Integer flowId) {
		this.flowId = flowId;
	}
	public String getJobContent() {
		return jobContent;
	}
	public void setJobContent(String jobContent) {
		this.jobContent = jobContent;
	}
	public String getJobContentType() {
		return jobContentType;
	}
	public void setJobContentType(String jobContentType) {
		this.jobContentType = jobContentType;
	}
	/** minimal constructor */
	public RsJobConfig(String jobName, String valid) {
		this.jobName = jobName;
		this.valid = valid;
	}
	/** full constructor */
	public RsJobConfig(String jobName, String jobInfo, String jobType, String schemeId,String schemeVersion, String jobTimeInterval, Date jobNextTime, String valid) {
		this.jobName = jobName;
		this.jobInfo = jobInfo;
		this.jobType = jobType;
		this.schemeId = schemeId;
		this.schemeVersion = schemeVersion;
		this.jobNextTime = jobNextTime;
		this.valid = valid;
	}
	// Property accessors
	public String getId() {
		return this.id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getJobName() {
		return this.jobName;
	}
	public void setJobName(String jobName) {
		this.jobName = jobName;
	}
	public String getJobInfo() {
		return this.jobInfo;
	}
	public void setJobInfo(String jobInfo) {
		this.jobInfo = jobInfo;
	}
	public String getJobType() {
		return this.jobType;
	}
	public void setJobType(String jobType) {
		this.jobType = jobType;
	}
	public String getSchemeId() {
		return schemeId;
	}
	public void setSchemeId(String schemeId) {
		this.schemeId = schemeId;
	}
	public String getSchemeVersion() {
		return schemeVersion;
	}
	public void setSchemeVersion(String schemeVersion) {
		this.schemeVersion = schemeVersion;
	}
	public Date getJobNextTime() {
		return this.jobNextTime;
	}
	public void setJobNextTime(Date jobNextTime) {
		this.jobNextTime = jobNextTime;
	}
	public String getValid() {
		return this.valid;
	}
	public void setValid(String valid) {
		this.valid = valid;
	}
	public Date getRepeatStartTime() {
		return repeatStartTime;
	}
	public void setRepeatStartTime(Date repeatStartTime) {
		this.repeatStartTime = repeatStartTime;
	}
	public Date getRepeatEndTime() {
		return repeatEndTime;
	}
	public void setRepeatEndTime(Date repeatEndTime) {
		this.repeatEndTime = repeatEndTime;
	}
	public Integer getDelayTime() {
		return delayTime;
	}
	public void setDelayTime(Integer delayTime) {
		this.delayTime = delayTime;
	}
}

+ 142 - 0
src/main/java/com/yihu/hos/central/rest/models/rs/RsJobDataset.java

@ -0,0 +1,142 @@
package com.yihu.hos.central.rest.models.rs;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
/**
 * RsJobDataset entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "rs_job_dataset")
public class RsJobDataset implements java.io.Serializable {
	// Fields
	@Id
	@Column(name="id",length = 50)
	@GeneratedValue(generator = "uuid")
	@GenericGenerator(name = "uuid", strategy = "uuid")
	private String id;
	@Column(name="job_id",length = 50,nullable = true)
	private String jobId;//任务id
	@Column(name="job_dataset_id",length = 50,nullable = true)
	private String jobDatasetId;//数据集id
	@Column(name="job_dataset_name",length = 50)
	private String jobDatasetName;//数据集中文名(冗余)
	@Column(name="job_dataset_key",length = 50)
	private String jobDatasetKey;//数据集增量字段
	@Column(name="job_dataset_keytype",length = 50)
	private String jobDatasetKeytype;//数据集增量字段类型
	@Column(name="job_dataset_keyvalue",length = 50)
	private String jobDatasetKeyvalue;//数据集关联主键值(最大值)
	@Column(name="job_dataset_condition",length = 1000)
	private String jobDatasetCondition;//数据集过滤条件
	@Column(name="sort")
	private Integer sort;//排序
	// Constructors
	/** default constructor */
	public RsJobDataset() {
	}
	public String getJobDatasetKey() {
		return jobDatasetKey;
	}
	public void setJobDatasetKey(String jobDatasetKey) {
		this.jobDatasetKey = jobDatasetKey;
	}
	public String getJobDatasetKeytype() {
		return jobDatasetKeytype;
	}
	public void setJobDatasetKeytype(String jobDatasetKeytype) {
		this.jobDatasetKeytype = jobDatasetKeytype;
	}
	/** minimal constructor */
	public RsJobDataset(String jobId, String jobDatasetId) {
		this.jobId = jobId;
		this.jobDatasetId = jobDatasetId;
	}
	/** full constructor */
	public RsJobDataset(String jobId, String jobDatasetId, String jobDatasetName, String jobDatasetKeyvalue, String jobDatasetCondition, Integer sort) {
		this.jobId = jobId;
		this.jobDatasetId = jobDatasetId;
		this.jobDatasetName = jobDatasetName;
		this.jobDatasetKeyvalue = jobDatasetKeyvalue;
		this.jobDatasetCondition = jobDatasetCondition;
		this.sort = sort;
	}
	// Property accessors
	public String getId() {
		return this.id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getJobId() {
		return this.jobId;
	}
	public void setJobId(String jobId) {
		this.jobId = jobId;
	}
	public String getJobDatasetId() {
		return this.jobDatasetId;
	}
	public void setJobDatasetId(String jobDatasetId) {
		this.jobDatasetId = jobDatasetId;
	}
	public String getJobDatasetName() {
		return this.jobDatasetName;
	}
	public void setJobDatasetName(String jobDatasetName) {
		this.jobDatasetName = jobDatasetName;
	}
	public String getJobDatasetKeyvalue() {
		return this.jobDatasetKeyvalue;
	}
	public void setJobDatasetKeyvalue(String jobDatasetKeyvalue) {
		this.jobDatasetKeyvalue = jobDatasetKeyvalue;
	}
	public String getJobDatasetCondition() {
		return this.jobDatasetCondition;
	}
	public void setJobDatasetCondition(String jobDatasetCondition) {
		this.jobDatasetCondition = jobDatasetCondition;
	}
	public Integer getSort() {
		return this.sort;
	}
	public void setSort(Integer sort) {
		this.sort = sort;
	}
}

+ 106 - 0
src/main/java/com/yihu/hos/central/rest/models/rs/RsJobLog.java

@ -0,0 +1,106 @@
package com.yihu.hos.central.rest.models.rs;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.Date;
/**
 * RsJobLog entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "rs_job_log")
public class RsJobLog implements java.io.Serializable {
	// Fields
	@Id
	@Column(name="id",length = 50)
	@GeneratedValue(generator = "uuid")
	@GenericGenerator(name = "uuid", strategy = "uuid")
	private String id;
	@Column(name="job_start_time")
	private Date jobStartTime;//任务开始执行时间
	@Column(name="job_end_time")
	private Date jobEndTime;//任务结束执行时间
	@Column(name="job_id",length = 50,nullable = true)
	private String jobId;//任务id
	@Column(name="job_content",length = 1000)
	private String jobContent;//任务执行情况
	@Column(name="Job_dataset_count")
	private Integer jobDatasetCount;//执行数据集总数
	@Column(name="Job_dataset_success")
	private Integer jobDatasetSuccess;//成功数据集总数
	// Constructors
	/** default constructor */
	public RsJobLog() {
	}
	// Property accessors
	public String getId() {
		return this.id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public Date getJobStartTime() {
		return jobStartTime;
	}
	public void setJobStartTime(Date jobStartTime) {
		this.jobStartTime = jobStartTime;
	}
	public Date getJobEndTime() {
		return jobEndTime;
	}
	public void setJobEndTime(Date jobEndTime) {
		this.jobEndTime = jobEndTime;
	}
	public Integer getJobDatasetCount() {
		return jobDatasetCount;
	}
	public void setJobDatasetCount(Integer jobDatasetCount) {
		this.jobDatasetCount = jobDatasetCount;
	}
	public Integer getJobDatasetSuccess() {
		return jobDatasetSuccess;
	}
	public void setJobDatasetSuccess(Integer jobDatasetSuccess) {
		this.jobDatasetSuccess = jobDatasetSuccess;
	}
	public String getJobId() {
		return this.jobId;
	}
	public void setJobId(String jobId) {
		this.jobId = jobId;
	}
	public String getJobContent() {
		return this.jobContent;
	}
	public void setJobContent(String jobContent) {
		this.jobContent = jobContent;
	}
}

+ 234 - 0
src/main/java/com/yihu/hos/central/rest/models/rs/RsJobLogDetail.java

@ -0,0 +1,234 @@
package com.yihu.hos.central.rest.models.rs;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.util.Date;
/**
 * RsJobLogDetail entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "rs_job_log_detail")
public class RsJobLogDetail implements java.io.Serializable {
	// Fields
	@Id
	@Column(name="id",length = 50)
	@GeneratedValue(generator = "uuid")
	@GenericGenerator(name = "uuid", strategy = "uuid")
	private String id;
	@Column(name="start_time")
	private Date startTime;//开始执行时间
	@Column(name="end_time")
	private Date endTime;//结束执行时间
	@Column(name="job_log_id",length=10)
	private String jobLogId;//主日志ID
	@Column(name="job_status",length=10)
	private String jobStatus;//是否执行成功
	@Column(name="job_content",length = 1000)
	private String jobContent;//任务执行情况
	@Column(name="datasource_id",length = 50)
	private String datasourceId;//数据源ID
	@Column(name="config",length = 200)
	private String config;//数据源配置
	@Column(name="std_dataset_code",length = 50)
	private String stdDatasetCode;//标准数据集名称
	@Column(name="job_dataset_id",length = 50)
	private String jobDatasetId;//数据集id
	@Column(name="job_id",length = 50)
	private String jobId;//任务ID
	@Column(name="job_dataset_name",length = 50)
	private String jobDatasetName;//数据集中文名
	@Column(name="job_sql",length = 4000)
	private String jobSql;//采集sql语句
	@Column(name="job_num",length = 50)
	private Integer jobNum;//分页采集页码
	@Column(name="repeat_start_time")
	private Date repeatStartTime;//补采开始时间
	@Column(name="repeat_end_time")
	private Date repeatEndTime;//补采结束时间
	@Column(name="repeat_job_content",length = 4000)
	private String repeatJobContent;//补采执行情况
	@Column(name="scheme_version",length = 50)
	private String schemeVersion;//标准版本号
	@Column(name="job_dataset_rows")
	private Integer jobDatasetRows;//采集行数
	// Constructors
	/** default constructor */
	public RsJobLogDetail() {
	}
	// Property accessors
	public String getId() {
		return this.id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public Date getStartTime() {
		return this.startTime;
	}
	public void setStartTime(Date startTime) {
		this.startTime = startTime;
	}
	public Date getEndTime() {
		return this.endTime;
	}
	public void setEndTime(Date endTime) {
		this.endTime = endTime;
	}
	public String getJobLogId() {
		return jobLogId;
	}
	public void setJobLogId(String jobLogId) {
		this.jobLogId = jobLogId;
	}
	public String getJobStatus() {
		return jobStatus;
	}
	public void setJobStatus(String jobStatus) {
		this.jobStatus = jobStatus;
	}
	public String getJobContent() {
		return this.jobContent;
	}
	public void setJobContent(String jobContent) {
		this.jobContent = jobContent;
	}
	public String getDatasourceId() {
		return datasourceId;
	}
	public void setDatasourceId(String datasourceId) {
		this.datasourceId = datasourceId;
	}
	public String getConfig() {
		return config;
	}
	public void setConfig(String config) {
		this.config = config;
	}
	public String getStdDatasetCode() {
		return stdDatasetCode;
	}
	public void setStdDatasetCode(String stdDatasetCode) {
		this.stdDatasetCode = stdDatasetCode;
	}
	public String getJobDatasetId() {
		return jobDatasetId;
	}
	public void setJobDatasetId(String jobDatasetId) {
		this.jobDatasetId = jobDatasetId;
	}
	public String getJobId() {
		return jobId;
	}
	public void setJobId(String jobId) {
		this.jobId = jobId;
	}
	public String getJobDatasetName() {
		return jobDatasetName;
	}
	public void setJobDatasetName(String jobDatasetName) {
		this.jobDatasetName = jobDatasetName;
	}
	public String getJobSql() {
		return jobSql;
	}
	public void setJobSql(String jobSql) {
		this.jobSql = jobSql;
	}
	public Integer getJobNum() {
		return jobNum;
	}
	public void setJobNum(Integer jobNum) {
		this.jobNum = jobNum;
	}
	public Date getRepeatStartTime() {
		return repeatStartTime;
	}
	public void setRepeatStartTime(Date repeatStartTime) {
		this.repeatStartTime = repeatStartTime;
	}
	public Date getRepeatEndTime() {
		return repeatEndTime;
	}
	public void setRepeatEndTime(Date repeatEndTime) {
		this.repeatEndTime = repeatEndTime;
	}
	public String getRepeatJobContent() {
		return repeatJobContent;
	}
	public void setRepeatJobContent(String repeatJobContent) {
		this.repeatJobContent = repeatJobContent;
	}
	public String getSchemeVersion() {
		return schemeVersion;
	}
	public void setSchemeVersion(String schemeVersion) {
		this.schemeVersion = schemeVersion;
	}
	public Integer getJobDatasetRows() {
		return jobDatasetRows;
	}
	public void setJobDatasetRows(Integer jobDatasetRows) {
		this.jobDatasetRows = jobDatasetRows;
	}
}

+ 127 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterDatasetModel.java

@ -0,0 +1,127 @@
package com.yihu.hos.central.rest.models.standard.adapter;
import com.yihu.hos.web.framework.model.Result;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.io.Serializable;
/**
 * Created by lingfeng on 2015/9/16.
 */
public class AdapterDatasetModel extends Result implements Serializable {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Long id;
    @Column(name = "scheme_id")
    private Long schemeId;
    @Column(name = "std_dataset_id")
    private Long stdDatasetId;
    @Column(name = "std_dataset_code")
    private String stdDatasetCode;
    @Column(name = "std_dataset_name")
    private String stdDatasetName;
    @Column(name = "adapter_dataset_id")
    private String adapterDatasetId;
    @Column(name = "adapter_dataset_code")
    private String adapterDatasetCode;
    @Column(name = "adapter_dataset_name")
    private String adapterDatasetName;
    @Column(name="is_clone")
    private Integer isClone; //0 不是克隆(默认)   1是克隆
    @Column(name="need_crawer")
    private Integer needCrawer;//0不需要采集   1需要采集(默认)
    public static AdapterDatasetModel error(String message) {
        AdapterDatasetModel re= new AdapterDatasetModel();
        re.successFlg = false;
        re.message = message;
        return re;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Long schemeId) {
        this.schemeId = schemeId;
    }
    public Long getStdDatasetId() {
        return stdDatasetId;
    }
    public void setStdDatasetId(Long stdDatasetId) {
        this.stdDatasetId = stdDatasetId;
    }
    public String getStdDatasetCode() {
        return stdDatasetCode;
    }
    public void setStdDatasetCode(String stdDatasetCode) {
        this.stdDatasetCode = stdDatasetCode;
    }
    public String getStdDatasetName() {
        return stdDatasetName;
    }
    public void setStdDatasetName(String stdDatasetName) {
        this.stdDatasetName = stdDatasetName;
    }
    public String getAdapterDatasetId() {
        return adapterDatasetId;
    }
    public void setAdapterDatasetId(String adapterDatasetId) {
        this.adapterDatasetId = adapterDatasetId;
    }
    public String getAdapterDatasetCode() {
        return adapterDatasetCode;
    }
    public void setAdapterDatasetCode(String adapterDatasetCode) {
        this.adapterDatasetCode = adapterDatasetCode;
    }
    public String getAdapterDatasetName() {
        return adapterDatasetName;
    }
    public void setAdapterDatasetName(String adapterDatasetName) {
        this.adapterDatasetName = adapterDatasetName;
    }
    public Integer getIsClone() {
        return isClone;
    }
    public void setIsClone(Integer isClone) {
        this.isClone = isClone;
    }
    public Integer getNeedCrawer() {
        return needCrawer;
    }
    public void setNeedCrawer(Integer needCrawer) {
        this.needCrawer = needCrawer;
    }
}

+ 68 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterDatasetRelationModel.java

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

+ 138 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterDictEntryModel.java

@ -0,0 +1,138 @@
package com.yihu.hos.central.rest.models.standard.adapter;
import com.yihu.hos.web.framework.model.Result;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.io.Serializable;
/**
 * Created by lingfeng on 2015/9/16.
 */
public class AdapterDictEntryModel extends Result implements Serializable {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Long id;
    @Column(name = "scheme_id")
    private Long schemeId;
    @Column(name = "std_dict_id")
    private Long stdDictId;
    @Column(name = "std_entry_id")
    private Long stdEntryId;
    @Column(name = "std_entry_code")
    private String stdEntryCode;
    @Column(name = "std_entry_value")
    private String stdEntryValue;
    @Column(name = "adapter_dict_id")
    private Long adapterDictId;
    @Column(name = "adapter_entry_id")
    private Long adapterEntryId;
    @Column(name = "adapter_entry_code")
    private String adapterEntryCode;
    @Column(name = "adapter_entry_value")
    private String adapterEntryValue;
    @Column(name = "adapter_info")
    private String adapterInfo;
    /**
     * 错误消息
     */
    public static AdapterDictEntryModel error(String message) {
        AdapterDictEntryModel re= new AdapterDictEntryModel();
        re.successFlg = false;
        re.message = message;
        return re;
    }
    public String getAdapterInfo() {
        return adapterInfo;
    }
    public void setAdapterInfo(String adapterInfo) {
        this.adapterInfo = adapterInfo;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Long schemeId) {
        this.schemeId = schemeId;
    }
    public Long getStdDictId() {
        return stdDictId;
    }
    public void setStdDictId(Long stdDictId) {
        this.stdDictId = stdDictId;
    }
    public Long getStdEntryId() {
        return stdEntryId;
    }
    public void setStdEntryId(Long stdEntryId) {
        this.stdEntryId = stdEntryId;
    }
    public String getStdEntryCode() {
        return stdEntryCode;
    }
    public void setStdEntryCode(String stdEntryCode) {
        this.stdEntryCode = stdEntryCode;
    }
    public String getStdEntryValue() {
        return stdEntryValue;
    }
    public void setStdEntryValue(String stdEntryValue) {
        this.stdEntryValue = stdEntryValue;
    }
    public Long getAdapterDictId() {
        return adapterDictId;
    }
    public void setAdapterDictId(Long adapterDictId) {
        this.adapterDictId = adapterDictId;
    }
    public Long getAdapterEntryId() {
        return adapterEntryId;
    }
    public void setAdapterEntryId(Long adapterEntryId) {
        this.adapterEntryId = adapterEntryId;
    }
    public String getAdapterEntryCode() {
        return adapterEntryCode;
    }
    public void setAdapterEntryCode(String adapterEntryCode) {
        this.adapterEntryCode = adapterEntryCode;
    }
    public String getAdapterEntryValue() {
        return adapterEntryValue;
    }
    public void setAdapterEntryValue(String adapterEntryValue) {
        this.adapterEntryValue = adapterEntryValue;
    }
}

+ 116 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterDictModel.java

@ -0,0 +1,116 @@
package com.yihu.hos.central.rest.models.standard.adapter;
import com.yihu.hos.web.framework.model.Result;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.io.Serializable;
/**
 * Created by lingfeng on 2015/9/16.
 */
public class AdapterDictModel extends Result implements Serializable {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Long id;
    @Column(name = "scheme_id")
    private Integer schemeId;
    @Column(name = "std_dict_id")
    private Long stdDictId;
    @Column(name = "std_dict_code")
    private String stdDictCode;
    @Column(name = "std_dict_name")
    private String stdDictName;
    @Column(name = "adapter_dict_id")
    private Long adapterDictId;
    @Column(name = "adapter_dict_code")
    private String adapterDictCode;
    @Column(name = "adapter_dict_name")
    private String adapterDictName;
    @Column(name="need_crawer")
    private Integer needCrawer;//0不需要采集   1需要采集(默认)
    public static AdapterDictModel error(String message) {
        AdapterDictModel re= new AdapterDictModel();
        re.successFlg = false;
        re.message = message;
        return re;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Integer getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Integer schemeId) {
        this.schemeId = schemeId;
    }
    public Long getStdDictId() {
        return stdDictId;
    }
    public void setStdDictId(Long stdDictId) {
        this.stdDictId = stdDictId;
    }
    public String getStdDictCode() {
        return stdDictCode;
    }
    public void setStdDictCode(String stdDictCode) {
        this.stdDictCode = stdDictCode;
    }
    public String getStdDictName() {
        return stdDictName;
    }
    public void setStdDictName(String stdDictName) {
        this.stdDictName = stdDictName;
    }
    public Long getAdapterDictId() {
        return adapterDictId;
    }
    public void setAdapterDictId(Long adapterDictId) {
        this.adapterDictId = adapterDictId;
    }
    public String getAdapterDictCode() {
        return adapterDictCode;
    }
    public void setAdapterDictCode(String adapterDictCode) {
        this.adapterDictCode = adapterDictCode;
    }
    public String getAdapterDictName() {
        return adapterDictName;
    }
    public void setAdapterDictName(String adapterDictName) {
        this.adapterDictName = adapterDictName;
    }
    public Integer getNeedCrawer() {
        return needCrawer;
    }
    public void setNeedCrawer(Integer needCrawer) {
        this.needCrawer = needCrawer;
    }
}

+ 188 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterMetadataModel.java

@ -0,0 +1,188 @@
package com.yihu.hos.central.rest.models.standard.adapter;
import com.yihu.hos.web.framework.model.Result;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.io.Serializable;
/**
 * Created by lingfeng on 2015/9/16.
 */
public class AdapterMetadataModel extends Result implements Serializable {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Long id;
    @Column(name = "scheme_id")
    private Long schemeId;
    @Column(name = "std_dataset_id")
    private Long stdDatasetId;
    @Column(name = "std_metadata_id")
    private Long stdMetadataId;
    @Column(name = "std_metadata_code")
    private String stdMetadataCode;
    @Column(name = "std_metadata_name")
    private String stdMetadataName;
    @Column(name = "std_dict_id")
    private Long stdDictId;
    @Column(name = "adapter_dataset_id")
    private Long adapterDatasetId;
    @Column(name = "adapter_metadata_id")
    private Long adapterMetadataId;
    @Column(name = "adapter_metadata_code")
    private String adapterMetadataCode;
    @Column(name = "adapter_metadata_name")
    private String adapterMetadataName;
    @Column(name = "adapter_data_type")
    private Integer adapterDataType;
    @Column(name = "adapter_dict_id")
    private Long adapterDictId;
    @Column(name = "adapter_info")
    private String adapterInfo;
    @Column(name = "belong_adapter_id")
    private Long belongAdapterId;
    @Column(name = "adapter_default")
    private String adapterDefault;
    @Column(name="need_crawer")
    private Integer needCrawer;//0不需要采集   1需要采集(默认)
    public String getAdapterInfo() {
        return adapterInfo;
    }
    public void setAdapterInfo(String adapterInfo) {
        this.adapterInfo = adapterInfo;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Long schemeId) {
        this.schemeId = schemeId;
    }
    public Long getStdDatasetId() {
        return stdDatasetId;
    }
    public void setStdDatasetId(Long stdDatasetId) {
        this.stdDatasetId = stdDatasetId;
    }
    public Long getStdMetadataId() {
        return stdMetadataId;
    }
    public void setStdMetadataId(Long stdMetadataId) {
        this.stdMetadataId = stdMetadataId;
    }
    public String getStdMetadataCode() {
        return stdMetadataCode;
    }
    public void setStdMetadataCode(String stdMetadataCode) {
        this.stdMetadataCode = stdMetadataCode;
    }
    public String getStdMetadataName() {
        return stdMetadataName;
    }
    public void setStdMetadataName(String stdMetadataName) {
        this.stdMetadataName = stdMetadataName;
    }
    public Long getStdDictId() {
        return stdDictId;
    }
    public void setStdDictId(Long stdDictId) {
        this.stdDictId = stdDictId;
    }
    public Long getAdapterDatasetId() {
        return adapterDatasetId;
    }
    public void setAdapterDatasetId(Long adapterDatasetId) {
        this.adapterDatasetId = adapterDatasetId;
    }
    public Long getAdapterMetadataId() {
        return adapterMetadataId;
    }
    public void setAdapterMetadataId(Long adapterMetadataId) {
        this.adapterMetadataId = adapterMetadataId;
    }
    public String getAdapterMetadataCode() {
        return adapterMetadataCode;
    }
    public void setAdapterMetadataCode(String adapterMetadataCode) {
        this.adapterMetadataCode = adapterMetadataCode;
    }
    public String getAdapterMetadataName() {
        return adapterMetadataName;
    }
    public void setAdapterMetadataName(String adapterMetadataName) {
        this.adapterMetadataName = adapterMetadataName;
    }
    public Integer getAdapterDataType() {
        return adapterDataType;
    }
    public void setAdapterDataType(Integer adapterDataType) {
        this.adapterDataType = adapterDataType;
    }
    public Long getAdapterDictId() {
        return adapterDictId;
    }
    public void setAdapterDictId(Long adapterDictId) {
        this.adapterDictId = adapterDictId;
    }
    public Long getBelongAdapterId() {
        return belongAdapterId;
    }
    public void setBelongAdapterId(Long belongAdapterId) {
        this.belongAdapterId = belongAdapterId;
    }
    public String getAdapterDefault() {
        return adapterDefault;
    }
    public void setAdapterDefault(String adapterDefault) {
        this.adapterDefault = adapterDefault;
    }
    public Integer getNeedCrawer() {
        return needCrawer;
    }
    public void setNeedCrawer(Integer needCrawer) {
        this.needCrawer = needCrawer;
    }
}

+ 52 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterSchemeDispatchModel.java

@ -0,0 +1,52 @@
package com.yihu.hos.central.rest.models.standard.adapter;
import com.yihu.hos.web.framework.model.Result;
import java.io.Serializable;
/**
 * 标准版本模型
 *
 * @Created by lingfeng 2015/12/23.
 */
public class AdapterSchemeDispatchModel extends Result implements Serializable {
    private Integer id;
    private Integer schemeId;
    private String orgCode;
    private String orgName;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Integer schemeId) {
        this.schemeId = schemeId;
    }
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
}

+ 151 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterSchemeModel.java

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

+ 120 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/AdapterSchemeVersionModel.java

@ -0,0 +1,120 @@
package com.yihu.hos.central.rest.models.standard.adapter;
import com.yihu.hos.web.framework.model.Result;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
 * 标准版本模型
 *
 * @created lingfeng 2015/12/23.
 */
@Entity
@Table(name = "adapter_scheme_version")
public class AdapterSchemeVersionModel extends Result implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name="scheme_id")
    private Long schemeId;
    @Column(name="name")
    private String name;
    @Column(name="version")
    private String version;
    @Column(name="publish_time")
    private Date publishTime;
    @Column(name="publish_user")
    private String publishUser;
    @Column(name="base_version")
    private String baseVersion;
    @Column(name="publish_status")
    private Integer publishStatus;
    @Column(name="path")
    private String path;
    public AdapterSchemeVersionModel(){
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Long schemeId) {
        this.schemeId = schemeId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    public Date getPublishTime() {
        return publishTime;
    }
    public void setPublishTime(Date publishTime) {
        this.publishTime = publishTime;
    }
    public String getBaseVersion() {
        return baseVersion;
    }
    public void setBaseVersion(String baseVersion) {
        this.baseVersion = baseVersion;
    }
    public Integer getPublishStatus() {
        return publishStatus;
    }
    public void setPublishStatus(Integer publishStatus) {
        this.publishStatus = publishStatus;
    }
    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }
    public String getPublishUser() {
        return publishUser;
    }
    public void setPublishUser(String publishUser) {
        this.publishUser = publishUser;
    }
}

+ 124 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/resultModel/AdapterDictEntryResultDetailModel.java

@ -0,0 +1,124 @@
package com.yihu.hos.central.rest.models.standard.adapter.resultModel;
/**
 * Created by lingfeng on 2015/9/16.
 */
public class AdapterDictEntryResultDetailModel {
    private Long id;
    private Long schemeId;
    private Long stdDictId;
    private Long stdEntryId;
    private String stdEntryCode;
    private String stdEntryValue;
    private Long adapterDictId;
    private Long adapterEntryId;
    private String adapterEntryCode;
    private String adapterEntryValue;
    private String adapterDictCode;
    private String adapterDictName;
    private String adapterInfo;
    public String getAdapterInfo() {
        return adapterInfo;
    }
    public void setAdapterInfo(String adapterInfo) {
        this.adapterInfo = adapterInfo;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Long schemeId) {
        this.schemeId = schemeId;
    }
    public Long getStdDictId() {
        return stdDictId;
    }
    public void setStdDictId(Long stdDictId) {
        this.stdDictId = stdDictId;
    }
    public Long getStdEntryId() {
        return stdEntryId;
    }
    public void setStdEntryId(Long stdEntryId) {
        this.stdEntryId = stdEntryId;
    }
    public String getStdEntryCode() {
        return stdEntryCode;
    }
    public void setStdEntryCode(String stdEntryCode) {
        this.stdEntryCode = stdEntryCode;
    }
    public String getStdEntryValue() {
        return stdEntryValue;
    }
    public void setStdEntryValue(String stdEntryValue) {
        this.stdEntryValue = stdEntryValue;
    }
    public Long getAdapterDictId() {
        return adapterDictId;
    }
    public void setAdapterDictId(Long adapterDictId) {
        this.adapterDictId = adapterDictId;
    }
    public Long getAdapterEntryId() {
        return adapterEntryId;
    }
    public void setAdapterEntryId(Long adapterEntryId) {
        this.adapterEntryId = adapterEntryId;
    }
    public String getAdapterEntryCode() {
        return adapterEntryCode;
    }
    public void setAdapterEntryCode(String adapterEntryCode) {
        this.adapterEntryCode = adapterEntryCode;
    }
    public String getAdapterEntryValue() {
        return adapterEntryValue;
    }
    public void setAdapterEntryValue(String adapterEntryValue) {
        this.adapterEntryValue = adapterEntryValue;
    }
    public String getAdapterDictCode() {
        return adapterDictCode;
    }
    public void setAdapterDictCode(String adapterDictCode) {
        this.adapterDictCode = adapterDictCode;
    }
    public String getAdapterDictName() {
        return adapterDictName;
    }
    public void setAdapterDictName(String adapterDictName) {
        this.adapterDictName = adapterDictName;
    }
}

+ 133 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/resultModel/AdapterMetadataResultDetailModel.java

@ -0,0 +1,133 @@
package com.yihu.hos.central.rest.models.standard.adapter.resultModel;
/**
 * Created by lingfeng on 2015/9/16.
 */
public class AdapterMetadataResultDetailModel {
    private Long id;
    private Long schemeId;
    private Long stdDatasetId;
    private Long stdMetadataId;
    private String stdMetadataCode;
    private String stdMetadataName;
    private Long stdDictId;
    private Long adapterDatasetId;
    private Long adapterMetadataId;
    private String adapterMetadataCode;
    private String adapterMetadataName;
    private Integer adapterDataType;
    private String adapterMetadataType;
    private Long adapterDictId;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Long schemeId) {
        this.schemeId = schemeId;
    }
    public Long getStdDatasetId() {
        return stdDatasetId;
    }
    public void setStdDatasetId(Long stdDatasetId) {
        this.stdDatasetId = stdDatasetId;
    }
    public Long getStdMetadataId() {
        return stdMetadataId;
    }
    public void setStdMetadataId(Long stdMetadataId) {
        this.stdMetadataId = stdMetadataId;
    }
    public String getStdMetadataCode() {
        return stdMetadataCode;
    }
    public void setStdMetadataCode(String stdMetadataCode) {
        this.stdMetadataCode = stdMetadataCode;
    }
    public String getStdMetadataName() {
        return stdMetadataName;
    }
    public void setStdMetadataName(String stdMetadataName) {
        this.stdMetadataName = stdMetadataName;
    }
    public Long getStdDictId() {
        return stdDictId;
    }
    public void setStdDictId(Long stdDictId) {
        this.stdDictId = stdDictId;
    }
    public Long getAdapterDatasetId() {
        return adapterDatasetId;
    }
    public void setAdapterDatasetId(Long adapterDatasetId) {
        this.adapterDatasetId = adapterDatasetId;
    }
    public Long getAdapterMetadataId() {
        return adapterMetadataId;
    }
    public void setAdapterMetadataId(Long adapterMetadataId) {
        this.adapterMetadataId = adapterMetadataId;
    }
    public String getAdapterMetadataCode() {
        return adapterMetadataCode;
    }
    public void setAdapterMetadataCode(String adapterMetadataCode) {
        this.adapterMetadataCode = adapterMetadataCode;
    }
    public String getAdapterMetadataName() {
        return adapterMetadataName;
    }
    public void setAdapterMetadataName(String adapterMetadataName) {
        this.adapterMetadataName = adapterMetadataName;
    }
    public Integer getAdapterDataType() {
        return adapterDataType;
    }
    public void setAdapterDataType(Integer adapterDataType) {
        this.adapterDataType = adapterDataType;
    }
    public Long getAdapterDictId() {
        return adapterDictId;
    }
    public void setAdapterDictId(Long adapterDictId) {
        this.adapterDictId = adapterDictId;
    }
    public String getAdapterMetadataType() {
        return adapterMetadataType;
    }
    public void setAdapterMetadataType(String adapterMetadataType) {
        this.adapterMetadataType = adapterMetadataType;
    }
}

+ 154 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/resultModel/AdapterSchemeResultDetailModel.java

@ -0,0 +1,154 @@
package com.yihu.hos.central.rest.models.standard.adapter.resultModel;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterSchemeVersionModel;
import java.io.Serializable;
import java.util.List;
public class AdapterSchemeResultDetailModel implements Serializable {
    String id;
    String pid;
    String name;
    Integer status;
    String stdName;
    String stdVersionName;
    String stdVersion;
    String stdPublisher;
    String publisher; //源发布者
    String adapterName;
    String adapterVersionName;
    String adapterStdVersion;
    String version;
    Integer type;
    String date;
    List<AdapterSchemeVersionModel> versionList;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPid() {
        return pid;
    }
    public void setPid(String pid) {
        this.pid = pid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getStatus() {
        return status;
    }
    public void setStatus(Integer status) {
        this.status = status;
    }
    public String getStdName() {
        return stdName;
    }
    public void setStdName(String stdName) {
        this.stdName = stdName;
    }
    public String getStdVersionName() {
        return stdVersionName;
    }
    public void setStdVersionName(String stdVersionName) {
        this.stdVersionName = stdVersionName;
    }
    public String getPublisher() {
        return publisher;
    }
    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }
    public String getAdapterName() {
        return adapterName;
    }
    public void setAdapterName(String adapterName) {
        this.adapterName = adapterName;
    }
    public String getAdapterVersionName() {
        return adapterVersionName;
    }
    public void setAdapterVersionName(String adapterVersionName) {
        this.adapterVersionName = adapterVersionName;
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    public String getStdVersion() {
        return stdVersion;
    }
    public void setStdVersion(String stdVersion) {
        this.stdVersion = stdVersion;
    }
    public String getAdapterStdVersion() {
        return adapterStdVersion;
    }
    public void setAdapterStdVersion(String adapterStdVersion) {
        this.adapterStdVersion = adapterStdVersion;
    }
    public List<AdapterSchemeVersionModel> getVersionList() {
        return versionList;
    }
    public void setVersionList(List<AdapterSchemeVersionModel> versionList) {
        this.versionList = versionList;
    }
    public String getStdPublisher() {
        return stdPublisher;
    }
    public void setStdPublisher(String stdPublisher) {
        this.stdPublisher = stdPublisher;
    }
}

+ 43 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/resultModel/AdapterSchemeResultModel.java

@ -0,0 +1,43 @@
package com.yihu.hos.central.rest.models.standard.adapter.resultModel;
import com.yihu.hos.central.rest.models.standard.adapter.AdapterSchemeVersionModel;
import java.util.List;
/**
 * 任务编排列表
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/4/27.
 */
public class AdapterSchemeResultModel {
    private Long schemeId;
    private String name;
    List<AdapterSchemeVersionModel> versionList;
    public Long getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Long schemeId) {
        this.schemeId = schemeId;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<AdapterSchemeVersionModel> getVersionList() {
        return versionList;
    }
    public void setVersionList(List<AdapterSchemeVersionModel> versionList) {
        this.versionList = versionList;
    }
}

+ 105 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/resultModel/AdapterSchemeVersionResultDetailModel.java

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

+ 169 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/adapter/resultModel/ApiMetadataResultDetailModel.java

@ -0,0 +1,169 @@
package com.yihu.hos.central.rest.models.standard.adapter.resultModel;
/**
 * Created by lingfeng on 2015/9/18.
 */
public class ApiMetadataResultDetailModel {
    private Long id;
    private Long schemeId;
    private Long stdDatasetId;
    private Long stdMetadataId;
    private String stdMetadataCode;
    private String stdMetadataName;
    private Long stdDictId;
    private Long adapterDatasetId;
    private Long adapterMetadataId;
    private String adapterMetadataCode;
    private String adapterMetadataName;
    private Integer adapterDataType;
    private String adapterDatasetCode;
    private String adapterDatasetName;
    private Long adapterDictId;
    private String adapterInfo;
    private Long belongAdapterId;
    private String adapterDefault;
    public String getAdapterInfo() {
        return adapterInfo;
    }
    public void setAdapterInfo(String adapterInfo) {
        this.adapterInfo = adapterInfo;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getSchemeId() {
        return schemeId;
    }
    public void setSchemeId(Long schemeId) {
        this.schemeId = schemeId;
    }
    public Long getStdDatasetId() {
        return stdDatasetId;
    }
    public void setStdDatasetId(Long stdDatasetId) {
        this.stdDatasetId = stdDatasetId;
    }
    public Long getStdMetadataId() {
        return stdMetadataId;
    }
    public void setStdMetadataId(Long stdMetadataId) {
        this.stdMetadataId = stdMetadataId;
    }
    public String getStdMetadataCode() {
        return stdMetadataCode;
    }
    public void setStdMetadataCode(String stdMetadataCode) {
        this.stdMetadataCode = stdMetadataCode;
    }
    public String getStdMetadataName() {
        return stdMetadataName;
    }
    public void setStdMetadataName(String stdMetadataName) {
        this.stdMetadataName = stdMetadataName;
    }
    public Long getStdDictId() {
        return stdDictId;
    }
    public void setStdDictId(Long stdDictId) {
        this.stdDictId = stdDictId;
    }
    public Long getAdapterDatasetId() {
        return adapterDatasetId;
    }
    public void setAdapterDatasetId(Long adapterDatasetId) {
        this.adapterDatasetId = adapterDatasetId;
    }
    public Long getAdapterMetadataId() {
        return adapterMetadataId;
    }
    public void setAdapterMetadataId(Long adapterMetadataId) {
        this.adapterMetadataId = adapterMetadataId;
    }
    public String getAdapterMetadataCode() {
        return adapterMetadataCode;
    }
    public void setAdapterMetadataCode(String adapterMetadataCode) {
        this.adapterMetadataCode = adapterMetadataCode;
    }
    public String getAdapterMetadataName() {
        return adapterMetadataName;
    }
    public void setAdapterMetadataName(String adapterMetadataName) {
        this.adapterMetadataName = adapterMetadataName;
    }
    public Integer getAdapterDataType() {
        return adapterDataType;
    }
    public void setAdapterDataType(Integer adapterDataType) {
        this.adapterDataType = adapterDataType;
    }
    public Long getAdapterDictId() {
        return adapterDictId;
    }
    public void setAdapterDictId(Long adapterDictId) {
        this.adapterDictId = adapterDictId;
    }
    public String getAdapterDatasetCode() {
        return adapterDatasetCode;
    }
    public void setAdapterDatasetCode(String adapterDatasetCode) {
        this.adapterDatasetCode = adapterDatasetCode;
    }
    public String getAdapterDatasetName() {
        return adapterDatasetName;
    }
    public void setAdapterDatasetName(String adapterDatasetName) {
        this.adapterDatasetName = adapterDatasetName;
    }
    public Long getBelongAdapterId() {
        return belongAdapterId;
    }
    public void setBelongAdapterId(Long belongAdapterId) {
        this.belongAdapterId = belongAdapterId;
    }
    public String getAdapterDefault() {
        return adapterDefault;
    }
    public void setAdapterDefault(String adapterDefault) {
        this.adapterDefault = adapterDefault;
    }
}

+ 51 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/bo/AdapterVersion.java

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

+ 184 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/bo/ObjectVersion.java

@ -0,0 +1,184 @@
package com.yihu.hos.central.rest.models.standard.bo;
import java.io.Serializable;
import java.security.SecureRandom;
import java.util.Date;
import java.util.concurrent.atomic.AtomicInteger;
/**
 * @author HZY
 * @vsrsion 1.0
 * Created at 2016/8/8.
 */
public final class ObjectVersion implements Comparable<ObjectVersion>, Serializable {
    private static final long serialVersionUID = 789056789654456072L;
    private static final int BYTE_ARRAY_LENGTH = 6;
    private static final AtomicInteger NEXT_COUNTER = new AtomicInteger((new SecureRandom()).nextInt());
    private static final char[] HEX_CHARS = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
    private final int timestamp;
    private final short counter;
    public static boolean isValid(String hexString) {
        if(hexString == null) {
            throw new IllegalArgumentException();
        } else {
            int len = hexString.length();
            if(len != 12) {
                return false;
            } else {
                for(int i = 0; i < len; ++i) {
                    char c = hexString.charAt(i);
                    if((c < 48 || c > 57) && (c < 97 || c > 102) && (c < 65 || c > 70)) {
                        return false;
                    }
                }
                return true;
            }
        }
    }
    public static int getCurrentCounter() {
        return NEXT_COUNTER.get();
    }
    public ObjectVersion() {
        this(new Date());
    }
    public ObjectVersion(Date date) {
        this(dateToTimestampSeconds(date), (short)NEXT_COUNTER.getAndIncrement());
    }
    public ObjectVersion(Date date, short counter) {
        this(dateToTimestampSeconds(date), counter);
    }
    public ObjectVersion(int timestamp, short counter) {
        this.timestamp = timestamp;
        this.counter = counter;
    }
    public ObjectVersion(String hexString) {
        this(parseHexString(hexString));
    }
    public ObjectVersion(byte[] bytes) {
        if(bytes == null) {
            throw new IllegalArgumentException();
        } else if(bytes.length != 6) {
            throw new IllegalArgumentException("need 6 bytes");
        } else {
            this.timestamp = makeInt(bytes[0], bytes[1], bytes[2], bytes[3]);
            this.counter = (short)makeInt((byte)0, (byte)0, bytes[4], bytes[5]);
        }
    }
    public byte[] toByteArray() {
        byte[] bytes = new byte[]{int3(this.timestamp), int2(this.timestamp), int1(this.timestamp), int0(this.timestamp), int1(this.counter), int0(this.counter)};
        return bytes;
    }
    public Date getDate() {
        return new Date((long)this.timestamp * 1000L);
    }
    public int getTimestamp() {
        return this.timestamp;
    }
    public short getCounter() {
        return this.counter;
    }
    public String toHexString() {
        char[] chars = new char[12];
        int i = 0;
        byte[] var3 = this.toByteArray();
        int var4 = var3.length;
        for(int var5 = 0; var5 < var4; ++var5) {
            byte b = var3[var5];
            chars[i++] = HEX_CHARS[b >> 4 & 15];
            chars[i++] = HEX_CHARS[b & 15];
        }
        return new String(chars);
    }
    public boolean equals(Object o) {
        if(this == o) {
            return true;
        } else if(o != null && this.getClass() == o.getClass()) {
            ObjectVersion objectId = (ObjectVersion)o;
            return this.counter != objectId.counter?false:this.timestamp == objectId.timestamp;
        } else {
            return false;
        }
    }
    public int hashCode() {
        int result = this.timestamp;
        result = 31 * result + this.counter;
        return result;
    }
    public int compareTo(ObjectVersion other) {
        if(other == null) {
            throw new NullPointerException();
        } else {
            byte[] byteArray = this.toByteArray();
            byte[] otherByteArray = other.toByteArray();
            for(int i = 0; i < 6; ++i) {
                if(byteArray[i] != otherByteArray[i]) {
                    return (byteArray[i] & 255) < (otherByteArray[i] & 255)?-1:1;
                }
            }
            return 0;
        }
    }
    public String toString() {
        return this.toHexString();
    }
    private static byte[] parseHexString(String s) {
        if(!isValid(s)) {
            throw new IllegalArgumentException("invalid hexadecimal representation of an ObjectId: [" + s + "]");
        } else {
            byte[] b = new byte[6];
            for(int i = 0; i < b.length; ++i) {
                b[i] = (byte)Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16);
            }
            return b;
        }
    }
    private static int dateToTimestampSeconds(Date time) {
        return (int)(time.getTime() / 1000L);
    }
    private static int makeInt(byte b3, byte b2, byte b1, byte b0) {
        return b3 << 24 | (b2 & 255) << 16 | (b1 & 255) << 8 | b0 & 255;
    }
    private static byte int3(int x) {
        return (byte)(x >> 24);
    }
    private static byte int2(int x) {
        return (byte)(x >> 16);
    }
    private static byte int1(int x) {
        return (byte)(x >> 8);
    }
    private static byte int0(int x) {
        return (byte)x;
    }
}

+ 58 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/bo/StandardVersion.java

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

+ 82 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/bo/SystemParam.java

@ -0,0 +1,82 @@
package com.yihu.hos.central.rest.models.standard.bo;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
/**
 * SystemParam entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "system_param")
public class SystemParam implements java.io.Serializable {
    // Fields
    @Id
    @Column(name="id",length = 50)
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid")
    private String id;
    @Column(name="param_key",length = 50,nullable = true)
    private String paramKey;//名称
    @Column(name="param_value",length = 200, nullable = true)
    private String paramValue;//值
    @Column(name="remark",length = 200)
    private String remark;//说明
    @Column(name="org_id",length = 50)
    private String orgId;//机构代码(预留)
    // Constructors
    /**
     * default constructor
     */
    public SystemParam() {
    }
    public String getParamKey() {
        return paramKey;
    }
    public void setParamKey(String paramKey) {
        this.paramKey = paramKey;
    }
    public String getParamValue() {
        return paramValue;
    }
    public void setParamValue(String paramValue) {
        this.paramValue = paramValue;
    }
    public String getId() {
        return this.id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getRemark() {
        return this.remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    public String getOrgId() {
        return this.orgId;
    }
    public void setOrgId(String orgId) {
        this.orgId = orgId;
    }
}

+ 147 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/standard/STDVersion.java

@ -0,0 +1,147 @@
package com.yihu.hos.central.rest.models.standard.standard;
import com.yihu.hos.web.framework.model.Result;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
 * @author lincl
 * @version 1.0
 * @created 2016.2.3
 */
@Entity
@Table(name = "std_version")
@Access(value = AccessType.PROPERTY)
public class STDVersion extends Result implements Serializable {
    private Long id;
    private String version;
    private String versionName;
    private Long standardId;
    private Date commitTime;//发布时间
    private String publishUser;//发布者
    private String baseVersion;//基础版本
    private String primaryVersion;//主版本号
    private boolean inStage;
    private String path;
    private String author;
    public STDVersion(String baseVersion, String author, String versionName) {
        //this.baseVersion = baseVersion == null ? null : new ObjectVersion(baseVersion);
        this.author = author;
        this.commitTime = null;
        this.inStage = true;
        if (baseVersion == null) {
            this.versionName = versionName;
            this.baseVersion = null;
        } else {
            versionName = versionName.substring(1, versionName.length());
            double dVersion = Double.parseDouble(versionName) + 1.0;
            this.versionName = "V" + String.valueOf(dVersion);
        }
    }
    public STDVersion(){
    }
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = false)
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    @Column(name = "version", unique = true, nullable = false)
    public String getVersion() {
        return version;
    }
    public void setVersion(String version) {
        this.version = version;
    }
    @Column(name = "author", unique = false, nullable = false)
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    @Column(name = "base_version", unique = false, nullable = true)
    @Access(value = AccessType.PROPERTY)
    public String getBaseVersion() {
        return baseVersion;
    }
    public void setBaseVersion(String baseVersion) {
        this.baseVersion = baseVersion;
    }
    @Column(name = "commit_time", unique = false, nullable = true)
    public Date getCommitTime() {
        return commitTime;
    }
    public void setCommitTime(Date commitTime) {
        this.commitTime = commitTime;
    }
    @Column(name = "version_name", unique = false, nullable = true)
    public String getVersionName() {
        return versionName;
    }
    public void setVersionName(String versionName) {
        this.versionName = versionName;
    }
    @Column(name = "staged", unique = false, nullable = true )
    public boolean isInStage() {
        return inStage;
    }
    public void setInStage(boolean inStage) {
        this.inStage = inStage;
    }
    @Column(name = "std_id" )
    public Long getStandardId() {
        return standardId;
    }
    public void setStandardId(Long standardId) {
        this.standardId = standardId;
    }
    @Column(name = "publish_user" )
    public String getPublishUser() {
        return publishUser;
    }
    public void setPublishUser(String publishUser) {
        this.publishUser = publishUser;
    }
    @Column(name = "primary_version", unique = false, nullable = true)
    @Access(value = AccessType.PROPERTY)
    public String getPrimaryVersion() {
        return primaryVersion;
    }
    public void setPrimaryVersion(String primaryVersion) {
        this.primaryVersion = primaryVersion;
    }
    @Column(name="path")
    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }
}

+ 134 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/standard/StandardModel.java

@ -0,0 +1,134 @@
package com.yihu.hos.central.rest.models.standard.standard;
import com.yihu.hos.web.framework.model.Result;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
 * 标准基本信息
 *
 * @created Airhead 2015/12/23.
 */
@Entity
@Table(name = "std_info")
public class StandardModel extends Result implements Serializable {
    @Id
    @GeneratedValue(generator = "generator")
    @GenericGenerator(name = "generator", strategy = "increment")
    private Long id;
    @Column(name="name")
    private String name;
    @Column(name="code")
    private String code;
    @Column(name="publisher")
    private String publisher;
    @Column(name="publisher_org_code")
    private String publisherOrgCode;
    @Column(name="summary")
    private String summary;
    @Column(name="ref_standard")
    private String refStandard;
    @Column(name="ref_standard_version")
    private String refStandardVersion;
    @Column(name="version_status")
    private Integer versionStatus;
    public StandardModel(){
    }
    public StandardModel(StandardModel standardModel){
        this.id = standardModel.id;
        this.name = standardModel.name;
        this.code = standardModel.code;
        this.publisher = standardModel.publisher;
        this.publisherOrgCode = standardModel.publisherOrgCode;
        this.summary = standardModel.summary;
        this.refStandard = standardModel.refStandard;
        this.refStandardVersion = standardModel.refStandardVersion;
        this.versionStatus = standardModel.versionStatus;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getPublisher() {
        return publisher;
    }
    public void setPublisher(String publisher) {
        this.publisher = publisher;
    }
    public String getPublisherOrgCode() {
        return publisherOrgCode;
    }
    public void setPublisherOrgCode(String publisherOrgCode) {
        this.publisherOrgCode = publisherOrgCode;
    }
    public String getSummary() {
        return summary;
    }
    public void setSummary(String summary) {
        this.summary = summary;
    }
    public String getRefStandard() {
        return refStandard;
    }
    public void setRefStandard(String refStandard) {
        this.refStandard = refStandard;
    }
    public String getRefStandardVersion() {
        return refStandardVersion;
    }
    public void setRefStandardVersion(String refStandardVersion) {
        this.refStandardVersion = refStandardVersion;
    }
    public Integer getVersionStatus() {
        return versionStatus;
    }
    public void setVersionStatus(Integer versionStatus) {
        this.versionStatus = versionStatus;
    }
}

+ 201 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/standard/StdDataSetModel.java

@ -0,0 +1,201 @@
package com.yihu.hos.central.rest.models.standard.standard;
import com.yihu.hos.web.framework.model.Result;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.Objects;
/**
 * Created by wq on 2015/9/16.
 */
@MappedSuperclass
public class StdDataSetModel extends Result implements Serializable {
    @Id
    @GenericGenerator(name = "generator", strategy = "increment")
    @Column(name = "id")
    private Long id;
    @Column(name="document_id")
    private Long documentId;
    @Column(name = "code")
    private String code;
    @Column(name = "name")
    private String name;
    @Column(name = "language")
    private String language;
    @Column(name = "catalog")
    private Integer catalog;
    @Column(name = "summary")
    private String summary;
    @Column(name = "class_model")
    private String classModel;
    @Column(name="ref_standard")
    private String reference;
    @Column(name = "lang", unique = false, nullable = true)
    private Integer lang;
    @Column(name = "publisher", unique = false, nullable = false)
    private Integer publisher;
    @Column(name = "multi_record", nullable = false)
    private boolean multiRecord;
    @Column(name = "std_version", unique = false, nullable = true)
    private String stdVersion;
    @Column(name = "hash", unique = false, nullable = true)
    private Integer hashCode;
    @Column(name="std_id")
    private Long standardId;
    @Transient
    private String innerVersionId;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getLanguage() {
        return language;
    }
    public void setLanguage(String language) {
        this.language = language;
    }
    public Integer getCatalog() {
        return catalog;
    }
    public void setCatalog(Integer catalog) {
        this.catalog = catalog;
    }
    public String getSummary() {
        return summary;
    }
    public void setSummary(String summary) {
        this.summary = summary;
    }
    public String getClassModel() {
        return classModel;
    }
    public void setClassModel(String classModel) {
        this.classModel = classModel;
    }
    public Integer getHashCode() {
        hashCode = Objects.hash( catalog, lang, standardId,
                publisher, stdVersion, code, name, summary);
        return hashCode;
    }
    public void setHashCode(Integer hashCode) {
        this.hashCode = hashCode;
    }
    public Integer getLang() {
        return lang;
    }
    public void setLang(Integer lang) {
        this.lang = lang;
    }
    public boolean isMultiRecord() {
        return multiRecord;
    }
    public void setMultiRecord(boolean multiRecord) {
        this.multiRecord = multiRecord;
    }
    public Integer getPublisher() {
        return publisher;
    }
    public void setPublisher(Integer publisher) {
        this.publisher = publisher;
    }
    public String getStdVersion() {
        return stdVersion;
    }
    public void setStdVersion(String stdVersion) {
        this.stdVersion = stdVersion;
    }
    public Long getDocumentId() {
        return documentId;
    }
    public void setDocumentId(Long documentId) {
        this.documentId = documentId;
    }
    public String getReference() {
        return reference;
    }
    public void setReference(String reference) {
        this.reference = reference;
    }
    public String getInnerVersionId() {
        return innerVersionId;
    }
    public void setInnerVersionId(String innerVersionId) {
        this.innerVersionId = innerVersionId;
    }
    public Long getStandardId() {
        return standardId;
    }
    public void setStandardId(Long standardId) {
        this.standardId = standardId;
    }
}

+ 0 - 0
src/main/java/com/yihu/hos/central/rest/models/standard/standard/StdDictionaryEntryModel.java


Some files were not shown because too many files changed in this diff