Commit 5efd8791 by zhangkb

新建指标服务组件

parents
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**|mybatis/mapping/|mybatis/mapping/" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>indicators</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding//src/test/java=UTF-8
encoding/<project>=UTF-8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.methodParameters=generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
#indicators
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.keymobile</groupId>
<artifactId>indicators</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<description>Indicators Demo</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.5.0</version>
</dependency>
<!-- <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency> -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!-- <version>8.0.15</version> -->
</dependency>
<!-- mXparser -->
<dependency>
<groupId>org.mariuszgromada.math</groupId>
<artifactId>MathParser.org-mXparser</artifactId>
<version>4.2.0</version>
</dependency>
<!-- poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-bom</artifactId>
<version>${spring-security.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<resources>
<resource>
<directory>lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.yml</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<finalName>indicators</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
package com.keymobile.indicators;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableSwagger2
@SpringBootApplication
@EnableFeignClients
@EnableAutoConfiguration(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})
public class IndicatorsApplication {
public static void main(String[] args) {
SpringApplication.run(IndicatorsApplication.class, args);
}
}
package com.keymobile.indicators.api;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.keymobile.indicators.model.entity.T1;
import com.keymobile.indicators.service.T1Service;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping(value = "/test")
public class TestCtrl {
@Autowired
private T1Service t1Service;
@ApiOperation(value = "获取所有", notes = "获取所有")
@PostMapping(value = "/getAll")
public List<T1> getAll(){
return t1Service.getAll();
}
}
package com.keymobile.indicators.api.indicators;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.keymobile.indicators.model.indicators.DeriveIndicators;
import com.keymobile.indicators.service.indicators.DeriveIndicatorsService;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping(value = "/deriveIndicatorsCtrl")
public class DeriveIndicatorsCtrl {
@Autowired
private DeriveIndicatorsService derIndecatorsService;
@ApiOperation(value = "新增/修改衍生指标", notes = "新增/修改衍生指标")
@PostMapping(value = "/saveOrUpdateDerIndi")
public String saveOrUpdateDerIndicators(@RequestParam String operator,
@RequestBody DeriveIndicators derIndicators) throws Exception{
return derIndecatorsService.saveOrUpdate(derIndicators, operator);
}
@ApiOperation(value = "删除衍生指标", notes = "删除衍生指标")
@PostMapping(value = "/deleteDerIndicators")
public void deleteDerIndicators(@RequestParam String derIndiId) throws Exception{
derIndecatorsService.delete(derIndiId);
}
@ApiOperation(value = "获取衍生指标列表", notes = "获取衍生指标列表")
@PostMapping(value = "/getDerIndicatorsList")
public List<DeriveIndicators> getDerIndicatorsList(@RequestParam(required=false) String keyword)throws Exception{
return derIndecatorsService.getDerIndicatorsList(keyword);
}
@ApiOperation(value = "获取衍生指标详情", notes = "获取衍生指标详情")
@PostMapping(value = "/getDerIndicatorsDetial")
public DeriveIndicators getDerIndicatorsDetail(@RequestParam String id) throws Exception{
return derIndecatorsService.getDerIndicatorsDetail(id);
}
@ApiOperation(value = "获取衍生指标关联的原生指标共同的维度", notes = "获取衍生指标关联的原生指标共同的维度")
@PostMapping(value = "/getSameDim")
public List<String> getSameDim(@RequestParam String indiDefIdString) throws Exception{
return derIndecatorsService.getSameDim(indiDefIdString);
}
@ApiOperation(value = "计算衍生指标的值", notes = "计算衍生指标的值")
@PostMapping(value = "/calculate")
public double calculateDeriveIndicators(@RequestParam String derIndiId,
@RequestBody Map<String,Object> dimValues) throws Exception{
return derIndecatorsService.calculateDeriveIndicators(derIndiId, dimValues);
}
@ApiOperation(value = "对标单元获取指标报表", notes = "对标单元获取指标报表")
@PostMapping(value = "/getIndicatorsReport")
public Map<String,Object> getIndicatorsReport(@RequestParam String StandardUnitId,
@RequestParam String compareIndiIds,
@RequestBody List<String> compareDims,@RequestParam String year)throws Exception{
return derIndecatorsService.getIndicatorsReport(StandardUnitId, compareIndiIds, compareDims, year);
}
}
package com.keymobile.indicators.api.indicators;
import java.io.InputStream;
import java.util.List;
import java.util.Map;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.keymobile.indicators.model.indicators.IndicatorsDef;
import com.keymobile.indicators.model.indicators.IndicatorsDim;
import com.keymobile.indicators.service.indicators.IndicatorsService;
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping(value = "/indicatorsCtrl")
public class IndicatorsCtrl {
@Autowired
private IndicatorsService indicatorsService;
@ApiOperation(value = "新增/修改指标", notes = "新增/修改指标")
@PostMapping(value = "/saveOrUpdateIndiDef")
public String saveOrUpdateIndicators(
@RequestBody IndicatorsDef indiDef,
@RequestParam String operator)throws Exception{
return indicatorsService.saveOrUpdateIndiDef(indiDef,operator);
}
@ApiOperation(value = "新增/修改维度(isUpdate:false(新增) true(修改))", notes = "新增/修改维度")
@PostMapping(value = "/saveOrUpdateIndiDim")
public String saveOrUpdateDim(@RequestBody List<IndicatorsDim> indiDims,
@RequestParam String indiDefId,
@RequestParam String operator,
@RequestParam String isUpdate) throws Exception{
return indicatorsService.saveOrUpdateDim(indiDefId, indiDims, operator, isUpdate);
}
@ApiOperation(value = "判断原生指标能否修改 true:能 false:不能", notes = "判断原生指标能否修改 true:能 false:不能")
@PostMapping(value = "/canBeUpdate")
public boolean canBeUpdate(@RequestParam String indicatorsId) throws Exception{
return indicatorsService.canBeUpdate(indicatorsId);
}
@ApiOperation(value = "删除指标", notes = "删除指标")
@PostMapping(value = "/deleteIndicators")
public String delete(@RequestParam String indicatorsId)throws Exception{
return indicatorsService.delete(indicatorsId);
}
@ApiOperation(value = "获取指标列表", notes = "获取指标列表")
@PostMapping(value = "/getIndiDefList")
public List<IndicatorsDef> getIndiDefList(@RequestParam(required=false) String keyword)throws Exception{
return indicatorsService.getIndicatorsDefList(keyword);
}
@ApiOperation(value = "获取指标详情", notes = "获取指标详情")
@PostMapping(value = "/getIndiDefDetail")
public Map<String,Object> getIndiDefDetail(@RequestParam String indiDefId)throws Exception{
return indicatorsService.getIndicatorsDefDetail(indiDefId);
}
@ApiOperation(value = "获取上传文件表头", notes = "获取上传文件表头")
@PostMapping(value = "/getUploadExcelHead")
public List<Map<String,Object>> getUploadExcelHead(
@RequestParam("file") MultipartFile file)throws Exception{
try (InputStream is = file.getInputStream()){
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
return indicatorsService.getUploadExcelHead(xssfWorkbook);
}
}
@ApiOperation(value = "判断上传文件表头和指标映射字段是否符合", notes = "判断上传文件表头和指标映射字段是否符合")
@PostMapping(value = "/isCorrespondence")
public String isCorrespondence(@RequestParam String indiDefId,
@RequestParam("file") MultipartFile file)throws Exception{
try (InputStream is = file.getInputStream()){
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
return indicatorsService.isCorrespondence(indiDefId, xssfWorkbook);
}
}
@ApiOperation(value = "上传解析指标数据", notes = "上传解析指标数据")
@PostMapping(value = "/importIndiData")
public String importIndicatorsData(@RequestParam String indiDefId,
@RequestParam("file") MultipartFile file)throws Exception{
try (InputStream is = file.getInputStream()){
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is);
return indicatorsService.importIndicatorsData(indiDefId, xssfWorkbook);
}
}
@ApiOperation(value = "查询指标值", notes = "查询指标值")
@PostMapping(value = "/queryIndiValue")
public Map<String,Object> queryIndicatorsValue(@RequestParam String indiDefId,
@RequestBody Map<String,Object> dimValue)throws Exception{
return indicatorsService.queryIndicatorsValue(indiDefId, dimValue,false);
}
@ApiOperation(value = "获取未审批指标值", notes = "获取未审批指标值")
@PostMapping(value = "/getUnApplyIndiValue")
public Map<String,Object> getUnApplyIndiValue() throws Exception{
return indicatorsService.getUnApplyIndiValueList();
}
@ApiOperation(value = "审批指标值", notes = "审批指标值")
@PostMapping(value = "/applyIndiValue")
public void applyIndicatorsValue(@RequestBody List<String> indiValueId) throws Exception{
indicatorsService.applyIndicatorsValue(indiValueId);
}
}
package com.keymobile.indicators.conf;
import feign.auth.BasicAuthRequestInterceptor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FeignClientConfig {
@Value("${security.authUser}")
private String authUser;
@Value("${security.authPwd}")
private String authPwd;
@Bean
public BasicAuthRequestInterceptor getBasicAuthRequestInterceptor() {
return new BasicAuthRequestInterceptor(authUser, authPwd);
}
}
\ No newline at end of file
package com.keymobile.indicators.conf;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.core.SimpleMongoDbFactory;
import org.springframework.data.mongodb.gridfs.GridFsTemplate;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
@Configuration
public class MongoDBConfig extends AbstractMongoConfiguration {
@Value("${mongodb.uri}")
private String host;
@Value("${mongodb.database}")
private String database;
@Value("${mongodb.username}")
private String user;
@Value("${mongodb.password}")
private String pswd;
@Value("${mongodb.maxConnectionIdleTime}")
private Integer maxConnectionIdleTime = 60000;
@Override
protected String getDatabaseName() {
return database;
}
@Bean
public MongoDbFactory mongoDbFactory() {
return new SimpleMongoDbFactory(this.mongoClient(), this.getDatabaseName());
}
@Bean
public GridFsTemplate gridFsTemplate() throws Exception {
return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter());
}
@Bean
public GridFSBucket getGridFSBuckets() {
MongoDatabase db = mongoDbFactory().getDb();
return GridFSBuckets.create(db);
}
@Override
public MongoClient mongoClient() {
String uri = String.format("mongodb://%s:%s@%s/%s", user, pswd, host, database);
MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
builder.maxConnectionIdleTime(maxConnectionIdleTime);
MongoClientURI clientURI = new MongoClientURI(uri, builder);
return new MongoClient(clientURI);
}
}
package com.keymobile.indicators.conf;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
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.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* redis配置类
*/
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig {
@Bean
RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
//使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
serializer.setObjectMapper(mapper);
template.setValueSerializer(serializer);
//使用StringRedisSerializer来序列化和反序列化redis的key值
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setHashValueSerializer(serializer);
template.afterPropertiesSet();
return template;
}
}
package com.keymobile.indicators.conf;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
@Configuration
@MapperScan(basePackages = "com.keymobile.indicators.model.mapper", sqlSessionTemplateRef = "secondSqlSessionTemplate")
public class SecondDatasourceConf {
@Primary //指定主库
@Bean
@ConfigurationProperties(prefix = "spring.datasource.second")
public DataSource secondDatasource() {
return DataSourceBuilder.create().build();
}
@Bean
public SqlSessionFactory secondSqlSessionFactory() throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(secondDatasource());
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapping/*Mapper.xml"));
return sqlSessionFactoryBean.getObject();
}
@Bean
public DataSourceTransactionManager secondTxMananger() {
return new DataSourceTransactionManager(secondDatasource());
}
@Bean
public SqlSessionTemplate secondSqlSessionTemplate() throws Exception {
return new SqlSessionTemplate(secondSqlSessionFactory());
}
}
package com.keymobile.indicators.conf;
import javax.sql.DataSource;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.password.PasswordEncoder;
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private static final String USERSQUERY = "select concat(user_name, ':', user_id, ':', user_dname), password, true \n" +
"from auth_user where user_name = ?";
private static final String ROLESQUERY = "select t1.user_name, concat(concat('ROLE_', t1.author_name), ':', GROUP_CONCAT(COALESCE(t2.domain_id, '*'))) as role_name \n" +
"from \n" +
" (select a.user_name, d.author_name\n" +
" from auth_user a, auth_user_roles b, auth_role_authors c, auth_author d\n" +
" where a.user_id = b.user_id and b.role_id = c.role_id and c.author_id = d.author_id\n" +
" and a.user_name = substring_index(?, ':', 1)) t1\n" +
" left join\n" +
" (select a.user_name, c.domain_id\n" +
" from auth_user a, auth_user_domains b, auth_domain c\n" +
" where a.user_id = b.user_id and b.domain_id = c.domain_id) t2\n" +
"on t1.user_name = t2.user_name \n" +
"group by t1.author_name";
@Value("${security.permit}")
private boolean permit;
@Autowired
private DataSource dataSource;
@Autowired
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().usersByUsernameQuery(USERSQUERY).authoritiesByUsernameQuery(ROLESQUERY)
.dataSource(dataSource).passwordEncoder(new SHA1PasswordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
if (permit) {
http.httpBasic().and().authorizeRequests().anyRequest().permitAll();
}
else {
http.httpBasic().and().authorizeRequests().anyRequest().authenticated();
}
http.headers().frameOptions().disable();
http.csrf().disable();
}
class SHA1PasswordEncoder implements PasswordEncoder {
@Override
public String encode(CharSequence charSequence) {
return DigestUtils.sha1Hex(charSequence.toString());
}
@Override
public boolean matches(CharSequence charSequence, String s) {
return DigestUtils.sha1Hex(charSequence.toString()).equals(s);
}
}
}
package com.keymobile.indicators.model.entity;
public class T1 {
private String var2;
private String var31;
private String var5;
private String var6;
private String var7;
private String var10;
private String var11;
private String var12;
private String var13;
public String getVar2() {
return var2;
}
public void setVar2(String var2) {
this.var2 = var2;
}
public String getVar31() {
return var31;
}
public void setVar31(String var31) {
this.var31 = var31;
}
public String getVar5() {
return var5;
}
public void setVar5(String var5) {
this.var5 = var5;
}
public String getVar6() {
return var6;
}
public void setVar6(String var6) {
this.var6 = var6;
}
public String getVar7() {
return var7;
}
public void setVar7(String var7) {
this.var7 = var7;
}
public String getVar10() {
return var10;
}
public void setVar10(String var10) {
this.var10 = var10;
}
public String getVar11() {
return var11;
}
public void setVar11(String var11) {
this.var11 = var11;
}
public String getVar12() {
return var12;
}
public void setVar12(String var12) {
this.var12 = var12;
}
public String getVar13() {
return var13;
}
public void setVar13(String var13) {
this.var13 = var13;
}
@Override
public String toString() {
return "T1 [var2=" + var2 + ", var31=" + var31 + ", var5=" + var5 + ", var6=" + var6 + ", var7=" + var7
+ ", var10=" + var10 + ", var11=" + var11 + ", var12=" + var12 + ", var13=" + var13 + "]";
}
}
package com.keymobile.indicators.model.indicators;
import java.io.Serializable;
import java.util.Date;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 衍生指标
*/
@Document(collection="indi_derive")
public class DeriveIndicators implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
private String id;
private String derName;
private String derCnName;
private String derUnit;//计算单位
private String derFormula;
private String indiDefIds;
private String dimNames;
private String derFormulaDesc;//公式中文描述
private String status;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
private String creator;
private String updator;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDerName() {
return derName;
}
public void setDerName(String derName) {
this.derName = derName;
}
public String getDerCnName() {
return derCnName;
}
public void setDerCnName(String derCnName) {
this.derCnName = derCnName;
}
public String getDerUnit() {
return derUnit;
}
public void setDerUnit(String derUnit) {
this.derUnit = derUnit;
}
public String getDerFormula() {
return derFormula;
}
public void setDerFormula(String derFormula) {
this.derFormula = derFormula;
}
public String getIndiDefIds() {
return indiDefIds;
}
public void setIndiDefIds(String indiDefIds) {
this.indiDefIds = indiDefIds;
}
public String getDimNames() {
return dimNames;
}
public void setDimNames(String dimNames) {
this.dimNames = dimNames;
}
public String getDerFormulaDesc() {
return derFormulaDesc;
}
public void setDerFormulaDesc(String derFormulaDesc) {
this.derFormulaDesc = derFormulaDesc;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public String getUpdator() {
return updator;
}
public void setUpdator(String updator) {
this.updator = updator;
}
}
package com.keymobile.indicators.model.indicators;
import java.io.Serializable;
import java.util.Date;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 指标定义表
*/
@Document(collection="indi_def")
public class IndicatorsDef implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
private String id;
private String indiName;
private String indiCnName;
private int valueMapping = -1;
private String valueMappingName;
private String indiUnit;
private String dataType;
private String status;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
private String creator;
private String updator;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getIndiName() {
return indiName;
}
public void setIndiName(String indiName) {
this.indiName = indiName;
}
public String getIndiCnName() {
return indiCnName;
}
public void setIndiCnName(String indiCnName) {
this.indiCnName = indiCnName;
}
public int getValueMapping() {
return valueMapping;
}
public void setValueMapping(int valueMapping) {
this.valueMapping = valueMapping;
}
public String getValueMappingName() {
return valueMappingName;
}
public void setValueMappingName(String valueMappingName) {
this.valueMappingName = valueMappingName;
}
public String getIndiUnit() {
return indiUnit;
}
public void setIndiUnit(String indiUnit) {
this.indiUnit = indiUnit;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public String getUpdator() {
return updator;
}
public void setUpdator(String updator) {
this.updator = updator;
}
}
package com.keymobile.indicators.model.indicators;
import java.io.Serializable;
import java.util.Date;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* 指标维度表
*/
@Document(collection="indi_dim")
public class IndicatorsDim implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
private String id;
private String dimName;
private String dimCnName;
private String dimType;
private int dimMapping = -1;
private String dimMappingName;
private String dataType;
private int sort;
private String indiDefId;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
private String creator;
private String updator;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDimName() {
return dimName;
}
public void setDimName(String dimName) {
this.dimName = dimName;
}
public String getDimCnName() {
return dimCnName;
}
public void setDimCnName(String dimCnName) {
this.dimCnName = dimCnName;
}
public String getDimType() {
return dimType;
}
public void setDimType(String dimType) {
this.dimType = dimType;
}
public int getDimMapping() {
return dimMapping;
}
public void setDimMapping(int dimMapping) {
this.dimMapping = dimMapping;
}
public String getDimMappingName() {
return dimMappingName;
}
public void setDimMappingName(String dimMappingName) {
this.dimMappingName = dimMappingName;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
public String getIndiDefId() {
return indiDefId;
}
public void setIndiDefId(String indiDefId) {
this.indiDefId = indiDefId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getCreator() {
return creator;
}
public void setCreator(String creator) {
this.creator = creator;
}
public String getUpdator() {
return updator;
}
public void setUpdator(String updator) {
this.updator = updator;
}
}
package com.keymobile.indicators.model.mapper;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.keymobile.indicators.model.entity.T1;
@Repository
public interface T1Mapper {
List<T1> selAll();
}
package com.keymobile.indicators.persistence.indicators;
import java.util.List;
import org.springframework.data.mongodb.repository.MongoRepository;
import com.keymobile.indicators.model.indicators.DeriveIndicators;
public interface DeriveIndicatorsRepository extends MongoRepository<DeriveIndicators,String>{
//判断原生指标是否关联了衍生指标
public List<DeriveIndicators> findByIndiDefIdsLike(String indiDefId);
public List<DeriveIndicators> findByDerNameLikeOrDerCnNameLike(String name,String cnName);
}
package com.keymobile.indicators.persistence.indicators;
import java.util.List;
import org.springframework.data.mongodb.repository.MongoRepository;
import com.keymobile.indicators.model.indicators.IndicatorsDef;
public interface IndicatorsDefRepository extends MongoRepository<IndicatorsDef,String>{
public List<IndicatorsDef> findByStatus(String status);
public List<IndicatorsDef> findByIndiNameLikeOrIndiCnNameLikeAndStatus(String name,String cnName,String status);
}
package com.keymobile.indicators.persistence.indicators;
import java.util.List;
import java.util.Optional;
import org.springframework.data.mongodb.repository.MongoRepository;
import com.keymobile.indicators.model.indicators.IndicatorsDim;
public interface IndicatorsDimRepository extends MongoRepository<IndicatorsDim,String>{
public void deleteByIndiDefId(String indiDefId);
public List<IndicatorsDim> findByIndiDefId(String indiDefId);
public Optional<IndicatorsDim> findByIndiDefIdAndDimMappingName(String indiDefId,String dimMappindName);
public Optional<IndicatorsDim> findByIndiDefIdAndDimCnName(String indiDefId,String dimCnName);
}
package com.keymobile.indicators.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.keymobile.indicators.model.entity.T1;
import com.keymobile.indicators.model.mapper.T1Mapper;
@Service
public class T1Service {
@Autowired
private T1Mapper t1Mapper;
public List<T1> getAll(){
return t1Mapper.selAll();
}
}
package com.keymobile.indicators.service.indicators;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.apache.commons.lang.StringUtils;
import org.mariuszgromada.math.mxparser.Expression;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.keymobile.indicators.model.indicators.DeriveIndicators;
import com.keymobile.indicators.model.indicators.IndicatorsDef;
import com.keymobile.indicators.model.indicators.IndicatorsDim;
import com.keymobile.indicators.persistence.indicators.DeriveIndicatorsRepository;
import com.keymobile.indicators.persistence.indicators.IndicatorsDefRepository;
import com.keymobile.indicators.persistence.indicators.IndicatorsDimRepository;
@Service
public class DeriveIndicatorsService {
private Logger logger = LoggerFactory.getLogger(DeriveIndicatorsService.class);
@Autowired
private DeriveIndicatorsRepository derIndicatorsRepo;
@Autowired
private IndicatorsDimRepository indicatorsDimRepo;
@Autowired
private IndicatorsService indicatorsService;
@Autowired
private IndicatorsDefRepository indicatorsDefRepo;
//新增/修改衍生指标
public String saveOrUpdate(DeriveIndicators derIndicators,String operator)throws Exception {
//新增
if(StringUtils.isBlank(derIndicators.getId())) {
derIndicators.setCreateTime(new Date());
derIndicators.setCreator(operator);
derIndicators.setUpdateTime(new Date());
derIndicators.setUpdator(operator);
}else {
derIndicators.setUpdateTime(new Date());
derIndicators.setUpdator(operator);
}
derIndicators.setStatus("0");
if(StringUtils.isBlank(derIndicators.getDimNames())) {
derIndicators.setDimNames("地区;年份");
}
derIndicatorsRepo.save(derIndicators);
return derIndicators.getId();
}
//删除衍生指标
public void delete(String id) throws Exception{
derIndicatorsRepo.deleteById(id);
}
//获取衍生列表
public List<DeriveIndicators> getDerIndicatorsList(String keyword)throws Exception{
if(StringUtils.isBlank(keyword)) {
return derIndicatorsRepo.findAll();
}
return derIndicatorsRepo.findByDerNameLikeOrDerCnNameLike(keyword, keyword);
}
//获取衍生指标详情
public DeriveIndicators getDerIndicatorsDetail(String id) throws Exception{
Optional<DeriveIndicators> deriveIndi = derIndicatorsRepo.findById(id);
if(deriveIndi.isPresent()) {
return deriveIndi.get();
}
return null;
}
//根据衍生指标关联的原生指标获取共同的维度
public List<String> getSameDim(String indiDefIdString) throws Exception{
if(indiDefIdString.endsWith(";")) {
indiDefIdString = indiDefIdString.substring(0, indiDefIdString.length()-1);
}
String[] indiDefIds = indiDefIdString.split(";");
List<String> retainList = new ArrayList<>();
for(int i=0;i<indiDefIds.length;i++) {
//根据原生指标定义id获取维度名称
List<String> dimNameList = this.getIndiDefDimNames(indiDefIds[i]);
if(i==0) {
if(dimNameList.isEmpty()) {
break;
}else {
retainList.addAll(dimNameList);
continue;
}
}
retainList.retainAll(dimNameList);
if(retainList.isEmpty()) {
break;
}
}
return retainList;
}
//计算衍生指标值
public double calculateDeriveIndicators(String derIndiId,Map<String,Object> dimValues) throws Exception{
//根据衍生指标id获取衍生指标
Optional<DeriveIndicators> derIndicators = derIndicatorsRepo.findById(derIndiId);
//获取衍生指标计算公式
String derFormula = derIndicators.get().getDerFormula();
logger.info("未替换公式:"+derFormula);
//获取衍生指标关联的原生指标id
String indiDefIdsString = derIndicators.get().getIndiDefIds();
if(indiDefIdsString.endsWith(";")) {
indiDefIdsString = indiDefIdsString.substring(0, indiDefIdsString.length()-1);
}
String[] indiDefIds = indiDefIdsString.split(";");
for(String indiDefId : indiDefIds) {
Map<String,Object> resultMap = indicatorsService.queryIndicatorsValue(indiDefId, dimValues, true);
Object count = resultMap.get("count");
//替换公式中的原生指标id为对应的值
derFormula = derFormula.replace(indiDefId, count.toString());
}
logger.info("替换后的公式:"+derFormula);
Expression e = new Expression(derFormula);
double result = (double) Math.round((e.calculate()) * 100) / 100;
return result;
}
public Map<String,Object> getIndicatorsReport(String StandardUnitId,
String compareIndiIds,List<String> compareDims,String year) throws Exception{
Map<String,Object> reportMap = new HashMap<>();
reportMap.put("StandardUnitId", StandardUnitId);
//拆分年份维度
String[] yearDim = year.split(":");
if(compareIndiIds.endsWith(";")) {
compareIndiIds = compareIndiIds.substring(0, compareIndiIds.length()-1);
}
String[] compareIndiId = compareIndiIds.split(";");
List<Map<String,Object>> indiReportList = new ArrayList<>();
for(String indiId : compareIndiId) {
Map<String,Object> indiReport = new HashMap<>();
String[] inId = indiId.split(":");
//如果是原生指标
if("0".equals(inId[1])) {
//根据原生指标id获取原生指标详情
Optional<IndicatorsDef> indiDef = indicatorsDefRepo.findById(inId[0]);
indiReport.put("indicatorsName", indiDef.get().getIndiCnName());
List<Map<String,Object>> resultList = new ArrayList<>();
String unit = indiDef.get().getIndiUnit();
for(String compareDim : compareDims) {
if(compareDim.endsWith(";")) {
compareDim = compareDim.substring(0, compareDim.length()-1);
}
String[] compDim = compareDim.split(":");
String dimCnName = compDim[0];
String[] dimValues = compDim[1].split(";");
for(String dimValue : dimValues) {
Map<String,Object> queryMap = new HashMap<>();
queryMap.put(dimCnName, dimValue);
queryMap.put(yearDim[0],yearDim[1]);
Map<String,Object> resultMap = new HashMap<>();
resultMap.put("dimValue", dimValue);
resultMap.put("unit", unit);
Map<String,Object> result = indicatorsService.queryIndicatorsValue(
inId[0], queryMap, true);
resultMap.put("result", result.get("count"));
resultList.add(resultMap);
}
}
indiReport.put("resultList", resultList);
indiReportList.add(indiReport);
}else {
//根据衍生指标id获取衍生指标详情
Optional<DeriveIndicators> derIndicators = derIndicatorsRepo.findById(inId[0]);
indiReport.put("indicatorsName", derIndicators.get().getDerCnName());
List<Map<String,Object>> resultList = new ArrayList<>();
//获取单位
String unit = derIndicators.get().getDerUnit();
for(String compareDim : compareDims) {
if(compareDim.endsWith(";")) {
compareDim = compareDim.substring(0, compareDim.length()-1);
}
String[] compDim = compareDim.split(":");
String dimCnName = compDim[0];
String[] dimValues = compDim[1].split(";");
for(String dimValue : dimValues) {
Map<String,Object> queryMap = new HashMap<>();
queryMap.put(dimCnName, dimValue);
queryMap.put(yearDim[0],yearDim[1]);
Map<String,Object> resultMap = new HashMap<>();
resultMap.put("dimValue", dimValue);
resultMap.put("unit", unit);
double result = this.calculateDeriveIndicators(inId[0], queryMap);
resultMap.put("result", result);
resultList.add(resultMap);
}
}
indiReport.put("resultList", resultList);
indiReportList.add(indiReport);
}
}
reportMap.put("report", indiReportList);
return reportMap;
}
private List<String> getIndiDefDimNames(String indiDefId){
List<String> result = new ArrayList<>();
List<IndicatorsDim> dims = indicatorsDimRepo.findByIndiDefId(indiDefId);
for(IndicatorsDim dim : dims) {
result.add(dim.getDimMappingName());
}
return result;
}
}
package com.keymobile.indicators.service.indicators;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.keymobile.indicators.conf.MongoDBConfig;
import com.keymobile.indicators.model.indicators.IndicatorsDef;
import com.keymobile.indicators.model.indicators.IndicatorsDim;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
@Service
public class IndicatorsExcelService {
private Logger logger = LoggerFactory.getLogger(IndicatorsExcelService.class);
@Autowired
private MongoDBConfig mongoDbConfig;
@Value("${mongodb.database}")
private String database;
//获取上传文件的excel头
public Map<String,Object> getUploadExcelHead(XSSFWorkbook xssfWorkbook)throws Exception{
int startDataRow = 0;//开始读excel数据的行号
Map<String,Object> result = new HashMap<>();
List<Map<String,Object>> cellDetailList = new ArrayList<>();
List<String> cellList = new ArrayList<>();
result.put("cellDetailList", cellDetailList);
result.put("cellList", cellList);
for(XSSFSheet excelSheet : xssfWorkbook) {
XSSFRow xssfRow = excelSheet.getRow(startDataRow);
int i = 0;
while(StringUtils.isNotBlank(this.getCellValue(i,xssfRow))) {
Map<String,Object> excelHead = new HashMap<>();
excelHead.put("name", this.getCellValue(i,xssfRow));
excelHead.put("index", i);
cellDetailList.add(excelHead);
cellList.add(this.getCellValue(i,xssfRow));
i++;
}
break;
}
result.put("cellDetailList", cellDetailList);
result.put("cellList", cellList);
return result;
}
public String importIndicatorsData(IndicatorsDef indiDef,List<IndicatorsDim> dimList,
XSSFWorkbook xssfWorkbook)throws Exception{
StringBuilder message = new StringBuilder("");
List<DBObject> datas = new ArrayList<>();
//excel读取
int startDataRow = 1;//开始读excel数据的行号
for(XSSFSheet excelSheet : xssfWorkbook) {
//抽取工作表内容
for (int rowNum = startDataRow; rowNum <= excelSheet.getLastRowNum(); rowNum++) {
/*创建DBObject对象,通过该对象来向集合中添加记录 */
DBObject doc = new BasicDBObject();
doc.put("inId", indiDef.getId());
XSSFRow xssfRow = excelSheet.getRow(rowNum);
//获取值映射列index
int indiValueMapping = indiDef.getValueMapping();
String indiValue = getCellValue(indiValueMapping,xssfRow);//指标值
if(StringUtils.isBlank(indiValue)) {
break;
}
doc.put("value", indiValue);
doc.put("status", "1");//未生效(待审批)
for(IndicatorsDim dim : dimList) {
//获取映射名
String dimName = dim.getDimName();
//获取映射index
int indiDimMapping = dim.getDimMapping();
String dimValue = getCellValue(indiDimMapping,xssfRow);//维度值
doc.put(dimName,dimValue);
}
datas.add(doc);
}
}
if(!datas.isEmpty()) {
this.addIndicatorData(datas);
}
return message.toString();
}
//
private void addIndicatorData(List<DBObject> datas) throws Exception{
MongoClient client = mongoDbConfig.mongoClient();
/* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */
DB dataBase = client.getDB(database);
/* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */
DBCollection collection = dataBase.getCollection("indi_data");
collection.insert(datas);
client.close();
}
//获取列值
private String getCellValue(int cellIndex,XSSFRow xssfRow) {
String cellValue = "";
try {
//如果是字符串列
cellValue = xssfRow.getCell(cellIndex) == null ?
"" : xssfRow.getCell(cellIndex).getStringCellValue();
} catch (Exception e) {
try {
if(HSSFDateUtil.isCellDateFormatted(xssfRow.getCell(cellIndex))) {
//如果是日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
cellValue = sdf.format(xssfRow.getCell(cellIndex).getDateCellValue());// 日期
}else {
//如果是数据列
DecimalFormat decimalFormat = new DecimalFormat("###################.###########");
cellValue = xssfRow.getCell(cellIndex) == null ?
"" : String.valueOf(decimalFormat.format(xssfRow.getCell(cellIndex).getNumericCellValue()));
}
} catch (Exception e2) {
try {
cellValue = xssfRow.getCell(cellIndex) == null ?
"" : xssfRow.getCell(cellIndex).getCellFormula();
} catch (Exception e3) {
cellValue = xssfRow.getCell(cellIndex) == null ?
"" : String.valueOf(xssfRow.getCell(cellIndex).getBooleanCellValue());
}
}
}
return cellValue;
}
}
package com.keymobile.indicators.service.indicators;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.bson.types.ObjectId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.keymobile.indicators.conf.MongoDBConfig;
import com.keymobile.indicators.model.indicators.DeriveIndicators;
import com.keymobile.indicators.model.indicators.IndicatorsDef;
import com.keymobile.indicators.model.indicators.IndicatorsDim;
import com.keymobile.indicators.persistence.indicators.DeriveIndicatorsRepository;
import com.keymobile.indicators.persistence.indicators.IndicatorsDefRepository;
import com.keymobile.indicators.persistence.indicators.IndicatorsDimRepository;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
@Service
public class IndicatorsService {
private Logger logger = LoggerFactory.getLogger(IndicatorsService.class);
@Value("${mongodb.database}")
private String database;
@Autowired
private MongoDBConfig mongoDbConfig;
@Autowired
private IndicatorsDefRepository indicatorsDefRepo;
@Autowired
private IndicatorsDimRepository indicatorsDimRepo;
@Autowired
private IndicatorsExcelService indiExcelService;
@Autowired
private DeriveIndicatorsRepository derIndicatorsRepo;
//保存或者修改维度
public String saveOrUpdateDim(String indiDefId,List<IndicatorsDim> indiDims,
String operator, String isUpdate) throws Exception{
Date time = new Date();
StringBuilder message = new StringBuilder("");
//新增
if("false".equals(isUpdate)) {
//保存指标维度
for(int i=0;i<indiDims.size();i++) {
indiDims.get(i).setCreateTime(time);
indiDims.get(i).setCreator(operator);
indiDims.get(i).setUpdateTime(time);
indiDims.get(i).setUpdator(operator);
indiDims.get(i).setDimName("dim"+i);
indiDims.get(i).setSort(i);
indiDims.get(i).setIndiDefId(indiDefId);
}
if(!indiDims.isEmpty()) {
indicatorsDimRepo.saveAll(indiDims);
}
}else {
//TODO:考虑维度被删除或者添加新的维度情况
Iterator<IndicatorsDim> it=indiDims.iterator();
while(it.hasNext()) {
IndicatorsDim updateDim = it.next();
//如果是新增维度
if(StringUtils.isBlank(updateDim.getId())) {
//判断是否同名
Optional<IndicatorsDim> hasSameDim = indicatorsDimRepo.findByIndiDefIdAndDimCnName(
indiDefId, updateDim.getDimCnName());
if(hasSameDim.isPresent()) {
message.append("该指标存在同名维度:"+updateDim.getDimCnName());
it.remove();
continue;
}
//获取基础指标关联代的维度
List<IndicatorsDim> dbIndiDims = indicatorsDimRepo.findByIndiDefId(indiDefId);
updateDim.setDimName("dim"+dbIndiDims.size());
updateDim.setSort(dbIndiDims.size());
updateDim.setCreateTime(time);
updateDim.setCreator(operator);
updateDim.setUpdateTime(time);
updateDim.setUpdator(operator);
}else {
Optional<IndicatorsDim> dbIndiDim = indicatorsDimRepo.findById(updateDim.getId());
if(!dbIndiDim.isPresent()) {
logger.info("not exist the dimension where id:"+updateDim.getId());
message.append("不存在id:"+updateDim.getId()+" 的维度;");
it.remove();
}else {
updateDim.setUpdateTime(time);
updateDim.setUpdator(operator);
if(dbIndiDim.get().getDimMapping()!=-1) {
updateDim.setDimMapping(dbIndiDim.get().getDimMapping());
}
}
}
updateDim.setIndiDefId(indiDefId);
}
if(!indiDims.isEmpty()) {
indicatorsDimRepo.saveAll(indiDims);
}
}
return message.toString();
}
//判断原生指标能否被修改
public boolean canBeUpdate(String indiDefId) throws Exception{
boolean canUpdate = true;
MongoClient client = mongoDbConfig.mongoClient();
/* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */
DB dataBase = client.getDB(database);
/* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */
DBCollection collection = dataBase.getCollection("indi_data");
DBObject query = new BasicDBObject();
query.put("inId", indiDefId);
try (DBCursor cursor = collection.find(query)) {
while (cursor.hasNext()) {
canUpdate = false;
break;
}
}
client.close();
return canUpdate;
}
//保存或者修改指标定义
public String saveOrUpdateIndiDef(IndicatorsDef indiDef,String operator)throws Exception{
Date time = new Date();
//新增
if(StringUtils.isBlank(indiDef.getId())) {
//保存指标定义
indiDef.setCreateTime(time);
indiDef.setCreator(operator);
indiDef.setUpdateTime(time);
indiDef.setUpdator(operator);
indiDef.setStatus("0");
indiDef = indicatorsDefRepo.save(indiDef);
}else {
//暂时不修改指标和维度的映射
indiDef.setUpdateTime(time);
indiDef.setUpdator(operator);
//根据指标定义id获取指标定义详情
Optional<IndicatorsDef> dbIndiDef = indicatorsDefRepo.findById(indiDef.getId());
if(dbIndiDef.isPresent()) {
if(dbIndiDef.get().getValueMapping()!=-1) {
indiDef.setValueMapping(dbIndiDef.get().getValueMapping());
}
indiDef = indicatorsDefRepo.save(indiDef);
}else {
return "not exist the indicators where id:"+indiDef.getId();
}
}
return indiDef.getId();
}
//删除指标
public String delete(String indicatorsId)throws Exception {
//判断原生指标是否关联了衍生指标
List<DeriveIndicators> deriveIndiList = derIndicatorsRepo.findByIndiDefIdsLike(indicatorsId);
if(!deriveIndiList.isEmpty()) {
return "该指标已经关联衍生指标,无法删除";
}
//删除指标定义
indicatorsDefRepo.deleteById(indicatorsId);
//删除维度
indicatorsDimRepo.deleteByIndiDefId(indicatorsId);
//删除对应的指标数据
MongoClient client = mongoDbConfig.mongoClient();
/* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */
DB dataBase = client.getDB(database);
/* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */
DBCollection collection = dataBase.getCollection("indi_data");
DBObject removeCon = new BasicDBObject();
removeCon.put("inId", indicatorsId);
collection.remove(removeCon);
return "删除成功";
}
//获取指标列表
public List<IndicatorsDef> getIndicatorsDefList(String keyword)throws Exception{
if(StringUtils.isBlank(keyword)){
return indicatorsDefRepo.findByStatus("0");
}else {
return indicatorsDefRepo.findByIndiNameLikeOrIndiCnNameLikeAndStatus(keyword, keyword,"0");
}
}
//获取指标详情
public Map<String,Object> getIndicatorsDefDetail(String indiDefId)throws Exception{
Map<String,Object> result = new HashMap<>();
result.put("def", "");
result.put("dimList", new ArrayList<>());
//根据指标定义id获取指标定义详情
Optional<IndicatorsDef> dbIndiDef = indicatorsDefRepo.findById(indiDefId);
if(dbIndiDef.isPresent()) {
result.put("def", dbIndiDef.get());
//根据定义id获取维度
List<IndicatorsDim> dimList = indicatorsDimRepo.findByIndiDefId(indiDefId);
if(!dimList.isEmpty()) {
result.put("dimList",dimList);
}
return result;
}
logger.info("not exist indicatorsDef where id:"+indiDefId);
return null;
}
//根据上传excel获取表头数据
@SuppressWarnings("unchecked")
public List<Map<String,Object>> getUploadExcelHead(XSSFWorkbook xssfWorkbook)throws Exception{
return (List<Map<String,Object>>)indiExcelService.getUploadExcelHead(xssfWorkbook).get("cellDetailList");
}
//根据上传的excel文件和指标id判断该指标是否对应这个上传文件
@SuppressWarnings("unchecked")
public String isCorrespondence(String indiDefId,XSSFWorkbook xssfWorkbook)throws Exception {
StringBuilder message = new StringBuilder();
//获取excel表头list
List<String> excelHead = (List<String>)indiExcelService.getUploadExcelHead(xssfWorkbook)
.get("cellList");
//查询指标对应的值映射名
Optional<IndicatorsDef> dbIndiDef = indicatorsDefRepo.findById(indiDefId);
if(dbIndiDef.isPresent()) {
String valueNameMapping = dbIndiDef.get().getValueMappingName();
if(StringUtils.isBlank(valueNameMapping)) {
message.append("指标:"+dbIndiDef.get().getIndiName()+" 没有配置值映射;");
}else {
if(!excelHead.contains(valueNameMapping)) {
message.append("上传文件指标值映射名称:"+valueNameMapping+" 在excel不存在;");
}
}
//根据指标定义id获取指标维度
List<IndicatorsDim> dimList = indicatorsDimRepo.findByIndiDefId(indiDefId);
for(IndicatorsDim dim : dimList) {
if(StringUtils.isBlank(dim.getDimMappingName())) {
message.append("指标:"+dbIndiDef.get().getIndiName()+" 的维度:"+
dim.getDimCnName()+" 没有配置维度映射;");
}else {
if(!excelHead.contains(dim.getDimMappingName())) {
message.append("上传文件指标维度映射名称:"+dim.getDimMappingName()+" 在excel不存在;");
}
}
}
}else {
message.append("不存在id:"+indiDefId+" 的指标定义;");
}
if(StringUtils.isBlank(message.toString())) {
message.append("true");
}
return message.toString();
}
//导入指标值
public String importIndicatorsData(String indiDefId,XSSFWorkbook xssfWorkbook)throws Exception {
//判断上传文件和指标映射字段是否符合
String message = this.isCorrespondence(indiDefId, xssfWorkbook);
if("true".equals(message)) {
Optional<IndicatorsDef> indiDef = indicatorsDefRepo.findById(indiDefId);
if(indiDef.isPresent()) {
List<IndicatorsDim> dimList = indicatorsDimRepo.findByIndiDefId(indiDefId);
return indiExcelService.importIndicatorsData(indiDef.get(), dimList, xssfWorkbook);
}
}
return message;
}
//根据指标定义id和维度值查询指标值
public Map<String,Object> queryIndicatorsValue(String indiDefId,
Map<String,Object> dimValue, boolean isDimCnName)throws Exception {
Map<String,Object> result = new HashMap<>();
List<DBObject> resultList = new ArrayList<>();
result.put("count", 0);
result.put("resultList", resultList);
MongoClient client = mongoDbConfig.mongoClient();
/* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */
DB dataBase = client.getDB(database);
/* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */
DBCollection collection = dataBase.getCollection("indi_data");
DBObject query = new BasicDBObject();
query.put("inId", indiDefId);
//query.put("status", "0");//有效值
for(Map.Entry<String, Object> entry : dimValue.entrySet()) {
//如果map中是key是中文名
if(isDimCnName) {
Optional<IndicatorsDim> dimOp = indicatorsDimRepo
.findByIndiDefIdAndDimMappingName(indiDefId, entry.getKey());
query.put(dimOp.get().getDimName(),entry.getValue());
}else {
query.put(entry.getKey(),entry.getValue());
}
}
int valueCount = 0;
try (DBCursor cursor = collection.find(query)) {
while (cursor.hasNext()) {
DBObject dbo = cursor.next();
resultList.add(dbo);
valueCount += Integer.parseInt(dbo.get("value").toString());
}
}
client.close();
result.put("count", valueCount);
result.put("resultList", resultList);
return result;
}
//审批指标值
public void applyIndicatorsValue(List<String> indiValueId) throws Exception{
MongoClient client = mongoDbConfig.mongoClient();
/* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */
DB dataBase = client.getDB(database);
/* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */
DBCollection collection = dataBase.getCollection("indi_data");
DBObject query = new BasicDBObject();
for(String id : indiValueId) {
query.put("_id", new ObjectId(id));
DBObject queryResult = collection.findOne(query);
queryResult.put("status", "0");
collection.findAndModify(query, queryResult);
}
client.close();
}
//获取未审批的指标值
@SuppressWarnings("unchecked")
public Map<String,Object> getUnApplyIndiValueList() throws Exception{
Map<String,Object> result = new HashMap<>();
MongoClient client = mongoDbConfig.mongoClient();
List<Map<String,Object>> resultList = new ArrayList<>();
result.put("total", 0);
result.put("resultList", resultList);
/* 新建数据库实例,有则使用已有的数据库,没有则准别新建 */
DB dataBase = client.getDB(database);
/* 新建集合命名为user_info,如果该集合存在,则使用。否则新建 */
DBCollection collection = dataBase.getCollection("indi_data");
DBObject query = new BasicDBObject();
query.put("status", "1");
List<String> distinctIndiDefIds = collection.distinct("inId",query);
for(String indiDefId : distinctIndiDefIds) {
Map<String,Object> unApplyIndiValueMap = new HashMap<>();
//根据原始指标id获取原始指标详细信息
Map<String,Object> indiDefDetail = this.getIndicatorsDefDetail(indiDefId);
List<DBObject> unApplyValueList = new ArrayList<>();
DBObject unApplyQuery = new BasicDBObject();
unApplyQuery.put("status", "1");
unApplyQuery.put("inId", indiDefId);
try (DBCursor cursor = collection.find(unApplyQuery)) {
while (cursor.hasNext()) {
DBObject dbo = cursor.next();
ObjectId _id = (ObjectId) dbo.get("_id");
dbo.put("_id", _id.toHexString());
unApplyValueList.add(dbo);
}
}
unApplyIndiValueMap.put("indiDef",indiDefDetail);
unApplyIndiValueMap.put("unApplyList",unApplyValueList);
resultList.add(unApplyIndiValueMap);
}
client.close();
result.put("total", resultList.size());
result.put("resultList", resultList);
return result;
}
}
mongodb:
uri: 139.198.127.54:9017
database: dev0
username: root
password: dataPlatform
maxConnectionIdleTime: 600000
spring:
application:
name: indicators
jpa:
hibernate:
ddl-auto: update
datasource:
url: jdbc:mysql://139.198.127.54:9306/gzcbdev?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
username: test
password: test
hikari:
maximum-pool-size: 3
second:
driverClassName: com.mysql.jdbc.Driver
jdbcUrl: jdbc:mysql://139.198.127.54:9306/dev0?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
username: test
password: test
servlet:
multipart:
max-file-size: 20Mb
max-request-size: 100Mb
session:
store-type: redis
redis:
namespace: dataplatformdev
redis:
host: 139.198.127.54
port: 9379
server:
port: 8667
eureka:
client:
registerWithEureka: true
region: default
registryFetchIntervalSeconds: 5
serviceUrl:
defaultZone: http://192.168.0.230:8081/eureka/
enabled: false
instance:
prefer-ip-address: true
hostname: 192.168.0.230
security:
permit: true
authUser: root
authPwd: pwd
mybatis:
type-aliases-package: com.keymobile.indicators.model.entity
\ No newline at end of file
spring:
profiles:
active: ${spring.profiles.active:test}
\ No newline at end of file
spring:
application:
name: indicators
profiles:
active: test
cloud:
config:
uri: http://localhost:8082
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.keymobile.indicators.model.mapper.T1Mapper">
<select id="selAll" resultType="com.keymobile.indicators.model.entity.T1">
select * from T1
</select>
</mapper>
\ No newline at end of file
package com.keymobile.indicators;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
}
/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}
/**
* Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
}
Manifest-Version: 1.0
Implementation-Title: indicators
Implementation-Version: 0.0.1-SNAPSHOT
Built-By: Administrator
Implementation-Vendor-Id: com.keymobile
Build-Jdk: 1.8.0_131
Implementation-URL: https://projects.spring.io/spring-boot/#/spring-bo
ot-starter-parent/indicators
Created-By: Maven Integration for Eclipse
#Generated by Maven Integration for Eclipse
#Mon Apr 13 15:47:04 CST 2020
version=0.0.1-SNAPSHOT
groupId=com.keymobile
m2e.projectName=indicators
m2e.projectLocation=F\:\\coding\\indicators
artifactId=indicators
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.keymobile</groupId>
<artifactId>indicators</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<description>Indicators Demo</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.5.0</version>
</dependency>
<!-- <dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency> -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!-- <version>8.0.15</version> -->
</dependency>
<!-- mXparser -->
<dependency>
<groupId>org.mariuszgromada.math</groupId>
<artifactId>MathParser.org-mXparser</artifactId>
<version>4.2.0</version>
</dependency>
<!-- poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10-FINAL</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-bom</artifactId>
<version>${spring-security.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<resources>
<resource>
<directory>lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.yml</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<finalName>indicators</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
mongodb:
uri: 139.198.127.54:9017
database: dev0
username: root
password: dataPlatform
maxConnectionIdleTime: 600000
spring:
application:
name: indicators
jpa:
hibernate:
ddl-auto: update
datasource:
url: jdbc:mysql://139.198.127.54:9306/gzcbdev?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
username: test
password: test
hikari:
maximum-pool-size: 3
second:
driverClassName: com.mysql.jdbc.Driver
jdbcUrl: jdbc:mysql://139.198.127.54:9306/dev0?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8
username: test
password: test
servlet:
multipart:
max-file-size: 20Mb
max-request-size: 100Mb
session:
store-type: redis
redis:
namespace: dataplatformdev
redis:
host: 139.198.127.54
port: 9379
server:
port: 8667
eureka:
client:
registerWithEureka: true
region: default
registryFetchIntervalSeconds: 5
serviceUrl:
defaultZone: http://192.168.0.230:8081/eureka/
enabled: false
instance:
prefer-ip-address: true
hostname: 192.168.0.230
security:
permit: true
authUser: root
authPwd: pwd
mybatis:
type-aliases-package: com.keymobile.indicators.model.entity
\ No newline at end of file
spring:
profiles:
active: ${spring.profiles.active:test}
\ No newline at end of file
spring:
application:
name: indicators
profiles:
active: test
cloud:
config:
uri: http://localhost:8082
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.keymobile.indicators.model.mapper.T1Mapper">
<select id="selAll" resultType="com.keymobile.indicators.model.entity.T1">
select * from T1
</select>
</mapper>
\ No newline at end of file
#Created by Apache Maven 3.6.1
version=0.0.1-SNAPSHOT
groupId=com.keymobile
artifactId=indicators
com\keymobile\indicators\service\T1Service.class
com\keymobile\indicators\service\indicators\DeriveIndicatorsService.class
com\keymobile\indicators\api\indicators\IndicatorsCtrl.class
com\keymobile\indicators\conf\MongoDBConfig.class
com\keymobile\indicators\conf\SecurityConfig.class
com\keymobile\indicators\persistence\indicators\IndicatorsDefRepository.class
com\keymobile\indicators\conf\FeignClientConfig.class
com\keymobile\indicators\service\indicators\IndicatorsExcelService.class
com\keymobile\indicators\api\indicators\DeriveIndicatorsCtrl.class
com\keymobile\indicators\model\indicators\IndicatorsDef.class
com\keymobile\indicators\model\indicators\DeriveIndicators.class
com\keymobile\indicators\persistence\indicators\IndicatorsDimRepository.class
com\keymobile\indicators\persistence\indicators\DeriveIndicatorsRepository.class
com\keymobile\indicators\model\indicators\IndicatorsDim.class
com\keymobile\indicators\IndicatorsApplication.class
com\keymobile\indicators\conf\RedisConfig.class
com\keymobile\indicators\conf\SecurityConfig$SHA1PasswordEncoder.class
com\keymobile\indicators\api\TestCtrl.class
com\keymobile\indicators\model\mapper\T1Mapper.class
com\keymobile\indicators\service\indicators\IndicatorsService.class
com\keymobile\indicators\model\entity\T1.class
com\keymobile\indicators\conf\SecondDatasourceConf.class
F:\coding\indicators\src\main\java\com\keymobile\indicators\api\indicators\DeriveIndicatorsCtrl.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\model\indicators\IndicatorsDim.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\service\indicators\IndicatorsExcelService.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\conf\MongoDBConfig.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\model\mapper\T1Mapper.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\service\indicators\DeriveIndicatorsService.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\service\indicators\IndicatorsService.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\service\T1Service.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\model\indicators\IndicatorsDef.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\persistence\indicators\IndicatorsDimRepository.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\model\indicators\DeriveIndicators.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\api\TestCtrl.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\IndicatorsApplication.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\conf\SecurityConfig.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\conf\RedisConfig.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\conf\SecondDatasourceConf.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\conf\FeignClientConfig.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\model\entity\T1.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\persistence\indicators\DeriveIndicatorsRepository.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\persistence\indicators\IndicatorsDefRepository.java
F:\coding\indicators\src\main\java\com\keymobile\indicators\api\indicators\IndicatorsCtrl.java
F:\coding\indicators\src\test\java\com\keymobile\indicators\AppTest.java
<?xml version="1.0" encoding="UTF-8"?>
<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" name="com.keymobile.indicators.AppTest" time="0.115" tests="1" errors="0" skipped="0" failures="0">
<properties>
<property name="sun.desktop" value="windows"/>
<property name="awt.toolkit" value="sun.awt.windows.WToolkit"/>
<property name="file.encoding.pkg" value="sun.io"/>
<property name="java.specification.version" value="1.8"/>
<property name="sun.cpu.isalist" value="amd64"/>
<property name="sun.jnu.encoding" value="GBK"/>
<property name="java.class.path" value="F:\coding\indicators\target\test-classes;F:\coding\indicators\target\classes;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-data-mongodb\2.0.4.RELEASE\spring-boot-starter-data-mongodb-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter\2.0.4.RELEASE\spring-boot-starter-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot\2.0.4.RELEASE\spring-boot-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-logging\2.0.4.RELEASE\spring-boot-starter-logging-2.0.4.RELEASE.jar;E:\maven\maven-repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\maven\maven-repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\maven\maven-repository\org\apache\logging\log4j\log4j-to-slf4j\2.10.0\log4j-to-slf4j-2.10.0.jar;E:\maven\maven-repository\org\apache\logging\log4j\log4j-api\2.10.0\log4j-api-2.10.0.jar;E:\maven\maven-repository\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;E:\maven\maven-repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;E:\maven\maven-repository\org\yaml\snakeyaml\1.19\snakeyaml-1.19.jar;E:\maven\maven-repository\org\mongodb\mongodb-driver\3.6.4\mongodb-driver-3.6.4.jar;E:\maven\maven-repository\org\mongodb\bson\3.6.4\bson-3.6.4.jar;E:\maven\maven-repository\org\mongodb\mongodb-driver-core\3.6.4\mongodb-driver-core-3.6.4.jar;E:\maven\maven-repository\org\springframework\data\spring-data-mongodb\2.0.9.RELEASE\spring-data-mongodb-2.0.9.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-tx\5.0.8.RELEASE\spring-tx-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-context\5.0.8.RELEASE\spring-context-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-beans\5.0.8.RELEASE\spring-beans-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-expression\5.0.8.RELEASE\spring-expression-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\data\spring-data-commons\2.0.9.RELEASE\spring-data-commons-2.0.9.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter-netflix-eureka-client\2.0.0.RELEASE\spring-cloud-starter-netflix-eureka-client-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter\2.0.0.RELEASE\spring-cloud-starter-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\security\spring-security-rsa\1.0.5.RELEASE\spring-security-rsa-1.0.5.RELEASE.jar;E:\maven\maven-repository\org\bouncycastle\bcpkix-jdk15on\1.56\bcpkix-jdk15on-1.56.jar;E:\maven\maven-repository\org\bouncycastle\bcprov-jdk15on\1.56\bcprov-jdk15on-1.56.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-netflix-core\2.0.0.RELEASE\spring-cloud-netflix-core-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-netflix-eureka-client\2.0.0.RELEASE\spring-cloud-netflix-eureka-client-2.0.0.RELEASE.jar;E:\maven\maven-repository\com\netflix\eureka\eureka-client\1.9.2\eureka-client-1.9.2.jar;E:\maven\maven-repository\org\codehaus\jettison\jettison\1.3.7\jettison-1.3.7.jar;E:\maven\maven-repository\stax\stax-api\1.0.1\stax-api-1.0.1.jar;E:\maven\maven-repository\com\netflix\netflix-commons\netflix-eventbus\0.3.0\netflix-eventbus-0.3.0.jar;E:\maven\maven-repository\com\netflix\netflix-commons\netflix-infix\0.3.0\netflix-infix-0.3.0.jar;E:\maven\maven-repository\commons-jxpath\commons-jxpath\1.3\commons-jxpath-1.3.jar;E:\maven\maven-repository\joda-time\joda-time\2.9.9\joda-time-2.9.9.jar;E:\maven\maven-repository\org\antlr\antlr-runtime\3.4\antlr-runtime-3.4.jar;E:\maven\maven-repository\org\antlr\stringtemplate\3.2.1\stringtemplate-3.2.1.jar;E:\maven\maven-repository\com\google\code\gson\gson\2.8.5\gson-2.8.5.jar;E:\maven\maven-repository\org\apache\commons\commons-math\2.2\commons-math-2.2.jar;E:\maven\maven-repository\com\netflix\archaius\archaius-core\0.7.6\archaius-core-0.7.6.jar;E:\maven\maven-repository\javax\ws\rs\jsr311-api\1.1.1\jsr311-api-1.1.1.jar;E:\maven\maven-repository\com\netflix\servo\servo-core\0.12.21\servo-core-0.12.21.jar;E:\maven\maven-repository\com\sun\jersey\jersey-core\1.19.1\jersey-core-1.19.1.jar;E:\maven\maven-repository\com\sun\jersey\jersey-client\1.19.1\jersey-client-1.19.1.jar;E:\maven\maven-repository\com\sun\jersey\contribs\jersey-apache-client4\1.19.1\jersey-apache-client4-1.19.1.jar;E:\maven\maven-repository\org\apache\httpcomponents\httpclient\4.5.6\httpclient-4.5.6.jar;E:\maven\maven-repository\org\apache\httpcomponents\httpcore\4.4.10\httpcore-4.4.10.jar;E:\maven\maven-repository\com\google\inject\guice\4.1.0\guice-4.1.0.jar;E:\maven\maven-repository\javax\inject\javax.inject\1\javax.inject-1.jar;E:\maven\maven-repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;E:\maven\maven-repository\com\github\vlsi\compactmap\compactmap\1.2.1\compactmap-1.2.1.jar;E:\maven\maven-repository\com\github\andrewoma\dexx\dexx-collections\0.2\dexx-collections-0.2.jar;E:\maven\maven-repository\com\fasterxml\jackson\core\jackson-core\2.9.6\jackson-core-2.9.6.jar;E:\maven\maven-repository\com\netflix\eureka\eureka-core\1.9.2\eureka-core-1.9.2.jar;E:\maven\maven-repository\org\codehaus\woodstox\woodstox-core-asl\4.4.1\woodstox-core-asl-4.4.1.jar;E:\maven\maven-repository\javax\xml\stream\stax-api\1.0-2\stax-api-1.0-2.jar;E:\maven\maven-repository\org\codehaus\woodstox\stax2-api\3.1.4\stax2-api-3.1.4.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter-netflix-archaius\2.0.0.RELEASE\spring-cloud-starter-netflix-archaius-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-netflix-ribbon\2.0.0.RELEASE\spring-cloud-netflix-ribbon-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-netflix-archaius\2.0.0.RELEASE\spring-cloud-netflix-archaius-2.0.0.RELEASE.jar;E:\maven\maven-repository\commons-configuration\commons-configuration\1.8\commons-configuration-1.8.jar;E:\maven\maven-repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter-netflix-ribbon\2.0.0.RELEASE\spring-cloud-starter-netflix-ribbon-2.0.0.RELEASE.jar;E:\maven\maven-repository\com\netflix\ribbon\ribbon\2.2.5\ribbon-2.2.5.jar;E:\maven\maven-repository\com\netflix\ribbon\ribbon-transport\2.2.5\ribbon-transport-2.2.5.jar;E:\maven\maven-repository\io\reactivex\rxnetty-contexts\0.4.9\rxnetty-contexts-0.4.9.jar;E:\maven\maven-repository\io\reactivex\rxnetty-servo\0.4.9\rxnetty-servo-0.4.9.jar;E:\maven\maven-repository\com\netflix\hystrix\hystrix-core\1.5.12\hystrix-core-1.5.12.jar;E:\maven\maven-repository\org\hdrhistogram\HdrHistogram\2.1.9\HdrHistogram-2.1.9.jar;E:\maven\maven-repository\io\reactivex\rxnetty\0.4.9\rxnetty-0.4.9.jar;E:\maven\maven-repository\io\netty\netty-codec-http\4.1.27.Final\netty-codec-http-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-transport-native-epoll\4.1.27.Final\netty-transport-native-epoll-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-transport-native-unix-common\4.1.27.Final\netty-transport-native-unix-common-4.1.27.Final.jar;E:\maven\maven-repository\com\netflix\ribbon\ribbon-core\2.2.5\ribbon-core-2.2.5.jar;E:\maven\maven-repository\com\netflix\ribbon\ribbon-httpclient\2.2.5\ribbon-httpclient-2.2.5.jar;E:\maven\maven-repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;E:\maven\maven-repository\com\netflix\netflix-commons\netflix-commons-util\0.3.0\netflix-commons-util-0.3.0.jar;E:\maven\maven-repository\com\netflix\ribbon\ribbon-loadbalancer\2.2.5\ribbon-loadbalancer-2.2.5.jar;E:\maven\maven-repository\com\netflix\netflix-commons\netflix-statistics\0.1.1\netflix-statistics-0.1.1.jar;E:\maven\maven-repository\io\reactivex\rxjava\1.3.8\rxjava-1.3.8.jar;E:\maven\maven-repository\com\netflix\ribbon\ribbon-eureka\2.2.5\ribbon-eureka-2.2.5.jar;E:\maven\maven-repository\com\thoughtworks\xstream\xstream\1.4.10\xstream-1.4.10.jar;E:\maven\maven-repository\xmlpull\xmlpull\1.1.3.1\xmlpull-1.1.3.1.jar;E:\maven\maven-repository\xpp3\xpp3_min\1.1.4c\xpp3_min-1.1.4c.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-test\2.0.4.RELEASE\spring-boot-starter-test-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-test\2.0.4.RELEASE\spring-boot-test-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-test-autoconfigure\2.0.4.RELEASE\spring-boot-test-autoconfigure-2.0.4.RELEASE.jar;E:\maven\maven-repository\com\jayway\jsonpath\json-path\2.4.0\json-path-2.4.0.jar;E:\maven\maven-repository\net\minidev\json-smart\2.3\json-smart-2.3.jar;E:\maven\maven-repository\net\minidev\accessors-smart\1.2\accessors-smart-1.2.jar;E:\maven\maven-repository\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;E:\maven\maven-repository\junit\junit\4.12\junit-4.12.jar;E:\maven\maven-repository\org\assertj\assertj-core\3.9.1\assertj-core-3.9.1.jar;E:\maven\maven-repository\org\mockito\mockito-core\2.15.0\mockito-core-2.15.0.jar;E:\maven\maven-repository\net\bytebuddy\byte-buddy\1.7.11\byte-buddy-1.7.11.jar;E:\maven\maven-repository\net\bytebuddy\byte-buddy-agent\1.7.11\byte-buddy-agent-1.7.11.jar;E:\maven\maven-repository\org\objenesis\objenesis\2.6\objenesis-2.6.jar;E:\maven\maven-repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;E:\maven\maven-repository\org\hamcrest\hamcrest-library\1.3\hamcrest-library-1.3.jar;E:\maven\maven-repository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;E:\maven\maven-repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;E:\maven\maven-repository\org\springframework\spring-core\5.0.8.RELEASE\spring-core-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-jcl\5.0.8.RELEASE\spring-jcl-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-test\5.0.8.RELEASE\spring-test-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\xmlunit\xmlunit-core\2.5.1\xmlunit-core-2.5.1.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-data-jpa\2.0.4.RELEASE\spring-boot-starter-data-jpa-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-aop\2.0.4.RELEASE\spring-boot-starter-aop-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\aspectj\aspectjweaver\1.8.13\aspectjweaver-1.8.13.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-jdbc\2.0.4.RELEASE\spring-boot-starter-jdbc-2.0.4.RELEASE.jar;E:\maven\maven-repository\com\zaxxer\HikariCP\2.7.9\HikariCP-2.7.9.jar;E:\maven\maven-repository\org\springframework\spring-jdbc\5.0.8.RELEASE\spring-jdbc-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\hibernate\hibernate-core\5.2.17.Final\hibernate-core-5.2.17.Final.jar;E:\maven\maven-repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;E:\maven\maven-repository\org\hibernate\javax\persistence\hibernate-jpa-2.1-api\1.0.2.Final\hibernate-jpa-2.1-api-1.0.2.Final.jar;E:\maven\maven-repository\org\javassist\javassist\3.22.0-GA\javassist-3.22.0-GA.jar;E:\maven\maven-repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;E:\maven\maven-repository\org\jboss\jandex\2.0.3.Final\jandex-2.0.3.Final.jar;E:\maven\maven-repository\org\hibernate\common\hibernate-commons-annotations\5.0.1.Final\hibernate-commons-annotations-5.0.1.Final.jar;E:\maven\maven-repository\javax\transaction\javax.transaction-api\1.2\javax.transaction-api-1.2.jar;E:\maven\maven-repository\org\springframework\data\spring-data-jpa\2.0.9.RELEASE\spring-data-jpa-2.0.9.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-orm\5.0.8.RELEASE\spring-orm-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-aspects\5.0.8.RELEASE\spring-aspects-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-web\2.0.4.RELEASE\spring-boot-starter-web-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-json\2.0.4.RELEASE\spring-boot-starter-json-2.0.4.RELEASE.jar;E:\maven\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.6\jackson-datatype-jdk8-2.9.6.jar;E:\maven\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.6\jackson-datatype-jsr310-2.9.6.jar;E:\maven\maven-repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.6\jackson-module-parameter-names-2.9.6.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-tomcat\2.0.4.RELEASE\spring-boot-starter-tomcat-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\apache\tomcat\embed\tomcat-embed-core\8.5.32\tomcat-embed-core-8.5.32.jar;E:\maven\maven-repository\org\apache\tomcat\embed\tomcat-embed-el\8.5.32\tomcat-embed-el-8.5.32.jar;E:\maven\maven-repository\org\apache\tomcat\embed\tomcat-embed-websocket\8.5.32\tomcat-embed-websocket-8.5.32.jar;E:\maven\maven-repository\org\hibernate\validator\hibernate-validator\6.0.11.Final\hibernate-validator-6.0.11.Final.jar;E:\maven\maven-repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;E:\maven\maven-repository\org\springframework\spring-web\5.0.8.RELEASE\spring-web-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-webmvc\5.0.8.RELEASE\spring-webmvc-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-security\2.0.4.RELEASE\spring-boot-starter-security-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-aop\5.0.8.RELEASE\spring-aop-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\security\spring-security-config\5.0.7.RELEASE\spring-security-config-5.0.7.RELEASE.jar;E:\maven\maven-repository\org\springframework\security\spring-security-core\5.0.7.RELEASE\spring-security-core-5.0.7.RELEASE.jar;E:\maven\maven-repository\org\springframework\security\spring-security-web\5.0.7.RELEASE\spring-security-web-5.0.7.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-data-redis\2.0.4.RELEASE\spring-boot-starter-data-redis-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\data\spring-data-redis\2.0.9.RELEASE\spring-data-redis-2.0.9.RELEASE.jar;E:\maven\maven-repository\org\springframework\data\spring-data-keyvalue\2.0.9.RELEASE\spring-data-keyvalue-2.0.9.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-oxm\5.0.8.RELEASE\spring-oxm-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-context-support\5.0.8.RELEASE\spring-context-support-5.0.8.RELEASE.jar;E:\maven\maven-repository\io\lettuce\lettuce-core\5.0.4.RELEASE\lettuce-core-5.0.4.RELEASE.jar;E:\maven\maven-repository\io\projectreactor\reactor-core\3.1.8.RELEASE\reactor-core-3.1.8.RELEASE.jar;E:\maven\maven-repository\org\reactivestreams\reactive-streams\1.0.2\reactive-streams-1.0.2.jar;E:\maven\maven-repository\io\netty\netty-common\4.1.27.Final\netty-common-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-transport\4.1.27.Final\netty-transport-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-buffer\4.1.27.Final\netty-buffer-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-resolver\4.1.27.Final\netty-resolver-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-handler\4.1.27.Final\netty-handler-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-codec\4.1.27.Final\netty-codec-4.1.27.Final.jar;E:\maven\maven-repository\org\springframework\session\spring-session-data-redis\2.0.5.RELEASE\spring-session-data-redis-2.0.5.RELEASE.jar;E:\maven\maven-repository\org\springframework\session\spring-session-core\2.0.5.RELEASE\spring-session-core-2.0.5.RELEASE.jar;E:\maven\maven-repository\redis\clients\jedis\2.9.0\jedis-2.9.0.jar;E:\maven\maven-repository\org\apache\commons\commons-pool2\2.5.0\commons-pool2-2.5.0.jar;E:\maven\maven-repository\org\apache\commons\commons-lang3\3.7\commons-lang3-3.7.jar;E:\maven\maven-repository\io\springfox\springfox-swagger2\2.5.0\springfox-swagger2-2.5.0.jar;E:\maven\maven-repository\io\swagger\swagger-annotations\1.5.9\swagger-annotations-1.5.9.jar;E:\maven\maven-repository\io\swagger\swagger-models\1.5.9\swagger-models-1.5.9.jar;E:\maven\maven-repository\io\springfox\springfox-spi\2.5.0\springfox-spi-2.5.0.jar;E:\maven\maven-repository\io\springfox\springfox-core\2.5.0\springfox-core-2.5.0.jar;E:\maven\maven-repository\io\springfox\springfox-schema\2.5.0\springfox-schema-2.5.0.jar;E:\maven\maven-repository\io\springfox\springfox-swagger-common\2.5.0\springfox-swagger-common-2.5.0.jar;E:\maven\maven-repository\io\springfox\springfox-spring-web\2.5.0\springfox-spring-web-2.5.0.jar;E:\maven\maven-repository\com\google\guava\guava\18.0\guava-18.0.jar;E:\maven\maven-repository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;E:\maven\maven-repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;E:\maven\maven-repository\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;E:\maven\maven-repository\org\mapstruct\mapstruct\1.0.0.Final\mapstruct-1.0.0.Final.jar;E:\maven\maven-repository\io\springfox\springfox-swagger-ui\2.5.0\springfox-swagger-ui-2.5.0.jar;E:\maven\maven-repository\commons-codec\commons-codec\1.11\commons-codec-1.11.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter-config\2.0.0.RELEASE\spring-cloud-starter-config-2.0.0.RELEASE.jar;E:\maven\maven-repository\com\fasterxml\jackson\core\jackson-databind\2.9.6\jackson-databind-2.9.6.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter-feign\1.4.5.RELEASE\spring-cloud-starter-feign-1.4.5.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter-openfeign\2.0.0.RELEASE\spring-cloud-starter-openfeign-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-openfeign-core\2.0.0.RELEASE\spring-cloud-openfeign-core-2.0.0.RELEASE.jar;E:\maven\maven-repository\io\github\openfeign\feign-core\9.5.1\feign-core-9.5.1.jar;E:\maven\maven-repository\io\github\openfeign\feign-slf4j\9.5.1\feign-slf4j-9.5.1.jar;E:\maven\maven-repository\io\github\openfeign\feign-hystrix\9.5.1\feign-hystrix-9.5.1.jar;E:\maven\maven-repository\io\github\openfeign\feign-java8\9.5.1\feign-java8-9.5.1.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-config-client\2.0.0.RELEASE\spring-cloud-config-client-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-autoconfigure\2.0.4.RELEASE\spring-boot-autoconfigure-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-commons\2.0.0.RELEASE\spring-cloud-commons-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\security\spring-security-crypto\5.0.7.RELEASE\spring-security-crypto-5.0.7.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-context\2.0.0.RELEASE\spring-cloud-context-2.0.0.RELEASE.jar;E:\maven\maven-repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;E:\maven\maven-repository\mysql\mysql-connector-java\5.1.46\mysql-connector-java-5.1.46.jar;E:\maven\maven-repository\org\mariuszgromada\math\MathParser.org-mXparser\4.2.0\MathParser.org-mXparser-4.2.0.jar;E:\maven\maven-repository\org\apache\poi\poi\3.10-FINAL\poi-3.10-FINAL.jar;E:\maven\maven-repository\org\apache\poi\poi-ooxml\3.10-FINAL\poi-ooxml-3.10-FINAL.jar;E:\maven\maven-repository\org\apache\poi\poi-ooxml-schemas\3.10-FINAL\poi-ooxml-schemas-3.10-FINAL.jar;E:\maven\maven-repository\org\apache\xmlbeans\xmlbeans\2.3.0\xmlbeans-2.3.0.jar;E:\maven\maven-repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;E:\maven\maven-repository\xml-apis\xml-apis\1.4.01\xml-apis-1.4.01.jar;E:\maven\maven-repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.1.2\mybatis-spring-boot-starter-2.1.2.jar;E:\maven\maven-repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\2.1.2\mybatis-spring-boot-autoconfigure-2.1.2.jar;E:\maven\maven-repository\org\mybatis\mybatis\3.5.4\mybatis-3.5.4.jar;E:\maven\maven-repository\org\mybatis\mybatis-spring\2.0.4\mybatis-spring-2.0.4.jar;"/>
<property name="java.vm.vendor" value="Oracle Corporation"/>
<property name="sun.arch.data.model" value="64"/>
<property name="user.variant" value=""/>
<property name="java.vendor.url" value="http://java.oracle.com/"/>
<property name="user.timezone" value=""/>
<property name="java.vm.specification.version" value="1.8"/>
<property name="os.name" value="Windows 10"/>
<property name="user.country" value="CN"/>
<property name="sun.java.launcher" value="SUN_STANDARD"/>
<property name="sun.boot.library.path" value="C:\Program Files\Java\jdk1.8.0_131\jre\bin"/>
<property name="sun.java.command" value="C:\Users\ADMINI~1\AppData\Local\Temp\surefire570971520843546932\surefirebooter4024592346487461000.jar C:\Users\Administrator\AppData\Local\Temp\surefire570971520843546932 2020-04-13T15-46-24_162-jvmRun1 surefire4664555044911936175tmp surefire_01286930371684672758tmp"/>
<property name="surefire.test.class.path" value="F:\coding\indicators\target\test-classes;F:\coding\indicators\target\classes;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-data-mongodb\2.0.4.RELEASE\spring-boot-starter-data-mongodb-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter\2.0.4.RELEASE\spring-boot-starter-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot\2.0.4.RELEASE\spring-boot-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-logging\2.0.4.RELEASE\spring-boot-starter-logging-2.0.4.RELEASE.jar;E:\maven\maven-repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\maven\maven-repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\maven\maven-repository\org\apache\logging\log4j\log4j-to-slf4j\2.10.0\log4j-to-slf4j-2.10.0.jar;E:\maven\maven-repository\org\apache\logging\log4j\log4j-api\2.10.0\log4j-api-2.10.0.jar;E:\maven\maven-repository\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;E:\maven\maven-repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;E:\maven\maven-repository\org\yaml\snakeyaml\1.19\snakeyaml-1.19.jar;E:\maven\maven-repository\org\mongodb\mongodb-driver\3.6.4\mongodb-driver-3.6.4.jar;E:\maven\maven-repository\org\mongodb\bson\3.6.4\bson-3.6.4.jar;E:\maven\maven-repository\org\mongodb\mongodb-driver-core\3.6.4\mongodb-driver-core-3.6.4.jar;E:\maven\maven-repository\org\springframework\data\spring-data-mongodb\2.0.9.RELEASE\spring-data-mongodb-2.0.9.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-tx\5.0.8.RELEASE\spring-tx-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-context\5.0.8.RELEASE\spring-context-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-beans\5.0.8.RELEASE\spring-beans-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-expression\5.0.8.RELEASE\spring-expression-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\data\spring-data-commons\2.0.9.RELEASE\spring-data-commons-2.0.9.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter-netflix-eureka-client\2.0.0.RELEASE\spring-cloud-starter-netflix-eureka-client-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter\2.0.0.RELEASE\spring-cloud-starter-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\security\spring-security-rsa\1.0.5.RELEASE\spring-security-rsa-1.0.5.RELEASE.jar;E:\maven\maven-repository\org\bouncycastle\bcpkix-jdk15on\1.56\bcpkix-jdk15on-1.56.jar;E:\maven\maven-repository\org\bouncycastle\bcprov-jdk15on\1.56\bcprov-jdk15on-1.56.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-netflix-core\2.0.0.RELEASE\spring-cloud-netflix-core-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-netflix-eureka-client\2.0.0.RELEASE\spring-cloud-netflix-eureka-client-2.0.0.RELEASE.jar;E:\maven\maven-repository\com\netflix\eureka\eureka-client\1.9.2\eureka-client-1.9.2.jar;E:\maven\maven-repository\org\codehaus\jettison\jettison\1.3.7\jettison-1.3.7.jar;E:\maven\maven-repository\stax\stax-api\1.0.1\stax-api-1.0.1.jar;E:\maven\maven-repository\com\netflix\netflix-commons\netflix-eventbus\0.3.0\netflix-eventbus-0.3.0.jar;E:\maven\maven-repository\com\netflix\netflix-commons\netflix-infix\0.3.0\netflix-infix-0.3.0.jar;E:\maven\maven-repository\commons-jxpath\commons-jxpath\1.3\commons-jxpath-1.3.jar;E:\maven\maven-repository\joda-time\joda-time\2.9.9\joda-time-2.9.9.jar;E:\maven\maven-repository\org\antlr\antlr-runtime\3.4\antlr-runtime-3.4.jar;E:\maven\maven-repository\org\antlr\stringtemplate\3.2.1\stringtemplate-3.2.1.jar;E:\maven\maven-repository\com\google\code\gson\gson\2.8.5\gson-2.8.5.jar;E:\maven\maven-repository\org\apache\commons\commons-math\2.2\commons-math-2.2.jar;E:\maven\maven-repository\com\netflix\archaius\archaius-core\0.7.6\archaius-core-0.7.6.jar;E:\maven\maven-repository\javax\ws\rs\jsr311-api\1.1.1\jsr311-api-1.1.1.jar;E:\maven\maven-repository\com\netflix\servo\servo-core\0.12.21\servo-core-0.12.21.jar;E:\maven\maven-repository\com\sun\jersey\jersey-core\1.19.1\jersey-core-1.19.1.jar;E:\maven\maven-repository\com\sun\jersey\jersey-client\1.19.1\jersey-client-1.19.1.jar;E:\maven\maven-repository\com\sun\jersey\contribs\jersey-apache-client4\1.19.1\jersey-apache-client4-1.19.1.jar;E:\maven\maven-repository\org\apache\httpcomponents\httpclient\4.5.6\httpclient-4.5.6.jar;E:\maven\maven-repository\org\apache\httpcomponents\httpcore\4.4.10\httpcore-4.4.10.jar;E:\maven\maven-repository\com\google\inject\guice\4.1.0\guice-4.1.0.jar;E:\maven\maven-repository\javax\inject\javax.inject\1\javax.inject-1.jar;E:\maven\maven-repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;E:\maven\maven-repository\com\github\vlsi\compactmap\compactmap\1.2.1\compactmap-1.2.1.jar;E:\maven\maven-repository\com\github\andrewoma\dexx\dexx-collections\0.2\dexx-collections-0.2.jar;E:\maven\maven-repository\com\fasterxml\jackson\core\jackson-core\2.9.6\jackson-core-2.9.6.jar;E:\maven\maven-repository\com\netflix\eureka\eureka-core\1.9.2\eureka-core-1.9.2.jar;E:\maven\maven-repository\org\codehaus\woodstox\woodstox-core-asl\4.4.1\woodstox-core-asl-4.4.1.jar;E:\maven\maven-repository\javax\xml\stream\stax-api\1.0-2\stax-api-1.0-2.jar;E:\maven\maven-repository\org\codehaus\woodstox\stax2-api\3.1.4\stax2-api-3.1.4.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter-netflix-archaius\2.0.0.RELEASE\spring-cloud-starter-netflix-archaius-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-netflix-ribbon\2.0.0.RELEASE\spring-cloud-netflix-ribbon-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-netflix-archaius\2.0.0.RELEASE\spring-cloud-netflix-archaius-2.0.0.RELEASE.jar;E:\maven\maven-repository\commons-configuration\commons-configuration\1.8\commons-configuration-1.8.jar;E:\maven\maven-repository\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter-netflix-ribbon\2.0.0.RELEASE\spring-cloud-starter-netflix-ribbon-2.0.0.RELEASE.jar;E:\maven\maven-repository\com\netflix\ribbon\ribbon\2.2.5\ribbon-2.2.5.jar;E:\maven\maven-repository\com\netflix\ribbon\ribbon-transport\2.2.5\ribbon-transport-2.2.5.jar;E:\maven\maven-repository\io\reactivex\rxnetty-contexts\0.4.9\rxnetty-contexts-0.4.9.jar;E:\maven\maven-repository\io\reactivex\rxnetty-servo\0.4.9\rxnetty-servo-0.4.9.jar;E:\maven\maven-repository\com\netflix\hystrix\hystrix-core\1.5.12\hystrix-core-1.5.12.jar;E:\maven\maven-repository\org\hdrhistogram\HdrHistogram\2.1.9\HdrHistogram-2.1.9.jar;E:\maven\maven-repository\io\reactivex\rxnetty\0.4.9\rxnetty-0.4.9.jar;E:\maven\maven-repository\io\netty\netty-codec-http\4.1.27.Final\netty-codec-http-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-transport-native-epoll\4.1.27.Final\netty-transport-native-epoll-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-transport-native-unix-common\4.1.27.Final\netty-transport-native-unix-common-4.1.27.Final.jar;E:\maven\maven-repository\com\netflix\ribbon\ribbon-core\2.2.5\ribbon-core-2.2.5.jar;E:\maven\maven-repository\com\netflix\ribbon\ribbon-httpclient\2.2.5\ribbon-httpclient-2.2.5.jar;E:\maven\maven-repository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;E:\maven\maven-repository\com\netflix\netflix-commons\netflix-commons-util\0.3.0\netflix-commons-util-0.3.0.jar;E:\maven\maven-repository\com\netflix\ribbon\ribbon-loadbalancer\2.2.5\ribbon-loadbalancer-2.2.5.jar;E:\maven\maven-repository\com\netflix\netflix-commons\netflix-statistics\0.1.1\netflix-statistics-0.1.1.jar;E:\maven\maven-repository\io\reactivex\rxjava\1.3.8\rxjava-1.3.8.jar;E:\maven\maven-repository\com\netflix\ribbon\ribbon-eureka\2.2.5\ribbon-eureka-2.2.5.jar;E:\maven\maven-repository\com\thoughtworks\xstream\xstream\1.4.10\xstream-1.4.10.jar;E:\maven\maven-repository\xmlpull\xmlpull\1.1.3.1\xmlpull-1.1.3.1.jar;E:\maven\maven-repository\xpp3\xpp3_min\1.1.4c\xpp3_min-1.1.4c.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-test\2.0.4.RELEASE\spring-boot-starter-test-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-test\2.0.4.RELEASE\spring-boot-test-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-test-autoconfigure\2.0.4.RELEASE\spring-boot-test-autoconfigure-2.0.4.RELEASE.jar;E:\maven\maven-repository\com\jayway\jsonpath\json-path\2.4.0\json-path-2.4.0.jar;E:\maven\maven-repository\net\minidev\json-smart\2.3\json-smart-2.3.jar;E:\maven\maven-repository\net\minidev\accessors-smart\1.2\accessors-smart-1.2.jar;E:\maven\maven-repository\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;E:\maven\maven-repository\junit\junit\4.12\junit-4.12.jar;E:\maven\maven-repository\org\assertj\assertj-core\3.9.1\assertj-core-3.9.1.jar;E:\maven\maven-repository\org\mockito\mockito-core\2.15.0\mockito-core-2.15.0.jar;E:\maven\maven-repository\net\bytebuddy\byte-buddy\1.7.11\byte-buddy-1.7.11.jar;E:\maven\maven-repository\net\bytebuddy\byte-buddy-agent\1.7.11\byte-buddy-agent-1.7.11.jar;E:\maven\maven-repository\org\objenesis\objenesis\2.6\objenesis-2.6.jar;E:\maven\maven-repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;E:\maven\maven-repository\org\hamcrest\hamcrest-library\1.3\hamcrest-library-1.3.jar;E:\maven\maven-repository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;E:\maven\maven-repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;E:\maven\maven-repository\org\springframework\spring-core\5.0.8.RELEASE\spring-core-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-jcl\5.0.8.RELEASE\spring-jcl-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-test\5.0.8.RELEASE\spring-test-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\xmlunit\xmlunit-core\2.5.1\xmlunit-core-2.5.1.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-data-jpa\2.0.4.RELEASE\spring-boot-starter-data-jpa-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-aop\2.0.4.RELEASE\spring-boot-starter-aop-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\aspectj\aspectjweaver\1.8.13\aspectjweaver-1.8.13.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-jdbc\2.0.4.RELEASE\spring-boot-starter-jdbc-2.0.4.RELEASE.jar;E:\maven\maven-repository\com\zaxxer\HikariCP\2.7.9\HikariCP-2.7.9.jar;E:\maven\maven-repository\org\springframework\spring-jdbc\5.0.8.RELEASE\spring-jdbc-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\hibernate\hibernate-core\5.2.17.Final\hibernate-core-5.2.17.Final.jar;E:\maven\maven-repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;E:\maven\maven-repository\org\hibernate\javax\persistence\hibernate-jpa-2.1-api\1.0.2.Final\hibernate-jpa-2.1-api-1.0.2.Final.jar;E:\maven\maven-repository\org\javassist\javassist\3.22.0-GA\javassist-3.22.0-GA.jar;E:\maven\maven-repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;E:\maven\maven-repository\org\jboss\jandex\2.0.3.Final\jandex-2.0.3.Final.jar;E:\maven\maven-repository\org\hibernate\common\hibernate-commons-annotations\5.0.1.Final\hibernate-commons-annotations-5.0.1.Final.jar;E:\maven\maven-repository\javax\transaction\javax.transaction-api\1.2\javax.transaction-api-1.2.jar;E:\maven\maven-repository\org\springframework\data\spring-data-jpa\2.0.9.RELEASE\spring-data-jpa-2.0.9.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-orm\5.0.8.RELEASE\spring-orm-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-aspects\5.0.8.RELEASE\spring-aspects-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-web\2.0.4.RELEASE\spring-boot-starter-web-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-json\2.0.4.RELEASE\spring-boot-starter-json-2.0.4.RELEASE.jar;E:\maven\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.6\jackson-datatype-jdk8-2.9.6.jar;E:\maven\maven-repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.6\jackson-datatype-jsr310-2.9.6.jar;E:\maven\maven-repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.6\jackson-module-parameter-names-2.9.6.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-tomcat\2.0.4.RELEASE\spring-boot-starter-tomcat-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\apache\tomcat\embed\tomcat-embed-core\8.5.32\tomcat-embed-core-8.5.32.jar;E:\maven\maven-repository\org\apache\tomcat\embed\tomcat-embed-el\8.5.32\tomcat-embed-el-8.5.32.jar;E:\maven\maven-repository\org\apache\tomcat\embed\tomcat-embed-websocket\8.5.32\tomcat-embed-websocket-8.5.32.jar;E:\maven\maven-repository\org\hibernate\validator\hibernate-validator\6.0.11.Final\hibernate-validator-6.0.11.Final.jar;E:\maven\maven-repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;E:\maven\maven-repository\org\springframework\spring-web\5.0.8.RELEASE\spring-web-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-webmvc\5.0.8.RELEASE\spring-webmvc-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-security\2.0.4.RELEASE\spring-boot-starter-security-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-aop\5.0.8.RELEASE\spring-aop-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\security\spring-security-config\5.0.7.RELEASE\spring-security-config-5.0.7.RELEASE.jar;E:\maven\maven-repository\org\springframework\security\spring-security-core\5.0.7.RELEASE\spring-security-core-5.0.7.RELEASE.jar;E:\maven\maven-repository\org\springframework\security\spring-security-web\5.0.7.RELEASE\spring-security-web-5.0.7.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-starter-data-redis\2.0.4.RELEASE\spring-boot-starter-data-redis-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\data\spring-data-redis\2.0.9.RELEASE\spring-data-redis-2.0.9.RELEASE.jar;E:\maven\maven-repository\org\springframework\data\spring-data-keyvalue\2.0.9.RELEASE\spring-data-keyvalue-2.0.9.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-oxm\5.0.8.RELEASE\spring-oxm-5.0.8.RELEASE.jar;E:\maven\maven-repository\org\springframework\spring-context-support\5.0.8.RELEASE\spring-context-support-5.0.8.RELEASE.jar;E:\maven\maven-repository\io\lettuce\lettuce-core\5.0.4.RELEASE\lettuce-core-5.0.4.RELEASE.jar;E:\maven\maven-repository\io\projectreactor\reactor-core\3.1.8.RELEASE\reactor-core-3.1.8.RELEASE.jar;E:\maven\maven-repository\org\reactivestreams\reactive-streams\1.0.2\reactive-streams-1.0.2.jar;E:\maven\maven-repository\io\netty\netty-common\4.1.27.Final\netty-common-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-transport\4.1.27.Final\netty-transport-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-buffer\4.1.27.Final\netty-buffer-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-resolver\4.1.27.Final\netty-resolver-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-handler\4.1.27.Final\netty-handler-4.1.27.Final.jar;E:\maven\maven-repository\io\netty\netty-codec\4.1.27.Final\netty-codec-4.1.27.Final.jar;E:\maven\maven-repository\org\springframework\session\spring-session-data-redis\2.0.5.RELEASE\spring-session-data-redis-2.0.5.RELEASE.jar;E:\maven\maven-repository\org\springframework\session\spring-session-core\2.0.5.RELEASE\spring-session-core-2.0.5.RELEASE.jar;E:\maven\maven-repository\redis\clients\jedis\2.9.0\jedis-2.9.0.jar;E:\maven\maven-repository\org\apache\commons\commons-pool2\2.5.0\commons-pool2-2.5.0.jar;E:\maven\maven-repository\org\apache\commons\commons-lang3\3.7\commons-lang3-3.7.jar;E:\maven\maven-repository\io\springfox\springfox-swagger2\2.5.0\springfox-swagger2-2.5.0.jar;E:\maven\maven-repository\io\swagger\swagger-annotations\1.5.9\swagger-annotations-1.5.9.jar;E:\maven\maven-repository\io\swagger\swagger-models\1.5.9\swagger-models-1.5.9.jar;E:\maven\maven-repository\io\springfox\springfox-spi\2.5.0\springfox-spi-2.5.0.jar;E:\maven\maven-repository\io\springfox\springfox-core\2.5.0\springfox-core-2.5.0.jar;E:\maven\maven-repository\io\springfox\springfox-schema\2.5.0\springfox-schema-2.5.0.jar;E:\maven\maven-repository\io\springfox\springfox-swagger-common\2.5.0\springfox-swagger-common-2.5.0.jar;E:\maven\maven-repository\io\springfox\springfox-spring-web\2.5.0\springfox-spring-web-2.5.0.jar;E:\maven\maven-repository\com\google\guava\guava\18.0\guava-18.0.jar;E:\maven\maven-repository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;E:\maven\maven-repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;E:\maven\maven-repository\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;E:\maven\maven-repository\org\mapstruct\mapstruct\1.0.0.Final\mapstruct-1.0.0.Final.jar;E:\maven\maven-repository\io\springfox\springfox-swagger-ui\2.5.0\springfox-swagger-ui-2.5.0.jar;E:\maven\maven-repository\commons-codec\commons-codec\1.11\commons-codec-1.11.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter-config\2.0.0.RELEASE\spring-cloud-starter-config-2.0.0.RELEASE.jar;E:\maven\maven-repository\com\fasterxml\jackson\core\jackson-databind\2.9.6\jackson-databind-2.9.6.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter-feign\1.4.5.RELEASE\spring-cloud-starter-feign-1.4.5.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-starter-openfeign\2.0.0.RELEASE\spring-cloud-starter-openfeign-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-openfeign-core\2.0.0.RELEASE\spring-cloud-openfeign-core-2.0.0.RELEASE.jar;E:\maven\maven-repository\io\github\openfeign\feign-core\9.5.1\feign-core-9.5.1.jar;E:\maven\maven-repository\io\github\openfeign\feign-slf4j\9.5.1\feign-slf4j-9.5.1.jar;E:\maven\maven-repository\io\github\openfeign\feign-hystrix\9.5.1\feign-hystrix-9.5.1.jar;E:\maven\maven-repository\io\github\openfeign\feign-java8\9.5.1\feign-java8-9.5.1.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-config-client\2.0.0.RELEASE\spring-cloud-config-client-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\boot\spring-boot-autoconfigure\2.0.4.RELEASE\spring-boot-autoconfigure-2.0.4.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-commons\2.0.0.RELEASE\spring-cloud-commons-2.0.0.RELEASE.jar;E:\maven\maven-repository\org\springframework\security\spring-security-crypto\5.0.7.RELEASE\spring-security-crypto-5.0.7.RELEASE.jar;E:\maven\maven-repository\org\springframework\cloud\spring-cloud-context\2.0.0.RELEASE\spring-cloud-context-2.0.0.RELEASE.jar;E:\maven\maven-repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;E:\maven\maven-repository\mysql\mysql-connector-java\5.1.46\mysql-connector-java-5.1.46.jar;E:\maven\maven-repository\org\mariuszgromada\math\MathParser.org-mXparser\4.2.0\MathParser.org-mXparser-4.2.0.jar;E:\maven\maven-repository\org\apache\poi\poi\3.10-FINAL\poi-3.10-FINAL.jar;E:\maven\maven-repository\org\apache\poi\poi-ooxml\3.10-FINAL\poi-ooxml-3.10-FINAL.jar;E:\maven\maven-repository\org\apache\poi\poi-ooxml-schemas\3.10-FINAL\poi-ooxml-schemas-3.10-FINAL.jar;E:\maven\maven-repository\org\apache\xmlbeans\xmlbeans\2.3.0\xmlbeans-2.3.0.jar;E:\maven\maven-repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;E:\maven\maven-repository\xml-apis\xml-apis\1.4.01\xml-apis-1.4.01.jar;E:\maven\maven-repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.1.2\mybatis-spring-boot-starter-2.1.2.jar;E:\maven\maven-repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\2.1.2\mybatis-spring-boot-autoconfigure-2.1.2.jar;E:\maven\maven-repository\org\mybatis\mybatis\3.5.4\mybatis-3.5.4.jar;E:\maven\maven-repository\org\mybatis\mybatis-spring\2.0.4\mybatis-spring-2.0.4.jar;"/>
<property name="sun.cpu.endian" value="little"/>
<property name="user.home" value="C:\Users\Administrator"/>
<property name="user.language" value="zh"/>
<property name="java.specification.vendor" value="Oracle Corporation"/>
<property name="java.home" value="C:\Program Files\Java\jdk1.8.0_131\jre"/>
<property name="basedir" value="F:\coding\indicators"/>
<property name="file.separator" value="\"/>
<property name="line.separator" value="&#10;"/>
<property name="java.vm.specification.vendor" value="Oracle Corporation"/>
<property name="java.specification.name" value="Java Platform API Specification"/>
<property name="java.awt.graphicsenv" value="sun.awt.Win32GraphicsEnvironment"/>
<property name="surefire.real.class.path" value="C:\Users\ADMINI~1\AppData\Local\Temp\surefire570971520843546932\surefirebooter4024592346487461000.jar"/>
<property name="sun.boot.class.path" value="C:\Program Files\Java\jdk1.8.0_131\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_131\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_131\jre\classes"/>
<property name="user.script" value=""/>
<property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
<property name="java.runtime.version" value="1.8.0_131-b11"/>
<property name="user.name" value="Administrator"/>
<property name="path.separator" value=";"/>
<property name="os.version" value="10.0"/>
<property name="java.endorsed.dirs" value="C:\Program Files\Java\jdk1.8.0_131\jre\lib\endorsed"/>
<property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
<property name="file.encoding" value="GBK"/>
<property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
<property name="localRepository" value="E:\maven\maven-repository"/>
<property name="java.vendor.url.bug" value="http://bugreport.sun.com/bugreport/"/>
<property name="java.io.tmpdir" value="C:\Users\ADMINI~1\AppData\Local\Temp\"/>
<property name="java.version" value="1.8.0_131"/>
<property name="user.dir" value="F:\coding\indicators"/>
<property name="os.arch" value="amd64"/>
<property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
<property name="java.awt.printerjob" value="sun.awt.windows.WPrinterJob"/>
<property name="sun.os.patch.level" value=""/>
<property name="java.library.path" value="C:\Program Files\Java\jdk1.8.0_131\jre\bin;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;E:\xftp\;C:\ProgramData\Oracle\Java\javapath;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;E:\maven\apache-maven-3.6.1\bin;C:\Program Files\Java\jdk1.8.0_131\bin;C:\Program Files\Java\jdk1.8.0_131\jre\bin;E:\git client\Git\cmd;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;;."/>
<property name="java.vm.info" value="mixed mode"/>
<property name="java.vendor" value="Oracle Corporation"/>
<property name="java.vm.version" value="25.131-b11"/>
<property name="java.ext.dirs" value="C:\Program Files\Java\jdk1.8.0_131\jre\lib\ext;C:\windows\Sun\Java\lib\ext"/>
<property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
<property name="java.class.version" value="52.0"/>
</properties>
<testcase name="testApp" classname="com.keymobile.indicators.AppTest" time="0.01"/>
</testsuite>
\ No newline at end of file
-------------------------------------------------------------------------------
Test set: com.keymobile.indicators.AppTest
-------------------------------------------------------------------------------
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.115 s - in com.keymobile.indicators.AppTest
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment