Commit 4bfbc703 by 梁家彪

完善.

parent db0f929d
......@@ -27,7 +27,7 @@ redis.password:
jdbc.driver-class-name: com.mysql.cj.jdbc.Driver
jdbc.username: root
jdbc.password: Dk2019!23456
jdbc.url: jdbc:mysql://119.45.183.210:13308/nnjcy_data_model?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true
jdbc.url: jdbc:mysql://119.45.183.210:13308/visual_modeling_platform?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true
spring:
servlet:
......@@ -66,4 +66,4 @@ task:
# 队列容量
queue-capacity: 20
# 活跃时间
keep-alive-seconds: 30
keep-alive-seconds: 30
\ No newline at end of file
......@@ -19,7 +19,7 @@ data.name: DATAOPERATION-SERVER
datacollect.port: 9697
datacollect.name: DATA-COLLECT-SERVER
redis.url: 127.0.0.1
redis.url: 143.155.2.251
redis.port: 6379
redis.password:
......@@ -27,12 +27,11 @@ redis.password:
jdbc.driver-class-name: com.mysql.cj.jdbc.Driver
jdbc.username: root
jdbc.password: Dk2019!23456
jdbc.url: jdbc:mysql://119.45.183.210:13308/nnjcy_data_model?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true
jdbc.url: jdbc:mysql://143.155.2.251:3306/visual_modeling_platform?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true
#jdbc.username: root
#jdbc.password: root
#jdbc.url: jdbc:mysql://127.0.0.1:3306/nnjcy_data_model?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true
spring:
servlet:
multipart:
......@@ -40,3 +39,34 @@ spring:
max-file-size: 1024MB
# 设置 整个请求的大小
max-request-size: 2048MB
#jwt
jwt:
header: Authorization
# 令牌前缀
token-start-with: Bearer
# 必须使用最少88位的Base64对该令牌进行编码
base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI=
# 令牌过期时间 此处单位/毫秒 ,默认2小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html
token-validity-in-seconds: 7200000
# 在线用户key
online-key: online-token-
# 验证码
code-key: code-key-
# token 续期检查时间范围(默认30分钟,单位默认毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期
detect: 1800000
# 续期时间范围,默认 1小时,这里单位毫秒
renew: 3600000
#线程池配置
task:
pool:
# 是否启用线程池, 子模块需要使用异步线程池的时候单独在配置里加
enable: true
# 核心线程池大小
core-pool-size: 5
# 最大线程数
max-pool-size: 15
# 队列容量
queue-capacity: 20
# 活跃时间
\ No newline at end of file
......@@ -27,7 +27,7 @@ redis.password: zqkj@2023
jdbc.driver-class-name: com.mysql.cj.jdbc.Driver
jdbc.username: root
jdbc.password: Dk2019!23456
jdbc.url: jdbc:mysql://119.45.183.210:13308/nnjcy_data_model?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true
jdbc.url: jdbc:mysql://119.45.183.210:13308/visual_modeling_platform?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true
spring:
servlet:
......
......@@ -93,9 +93,9 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
<!-- <configuration>-->
<!-- <skip>true</skip>-->
<!-- </configuration>-->
</plugin>
</plugins>
......
package com.zq.datacollect;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class Swagger {
@Value("${spring.cloud.config.profile:prod}")
private String profile;
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("数据汇聚1")
.enable(!"prod".equals(profile)) //生产环境关闭
.select()
.apis(RequestHandlerSelectors.basePackage("com.zq.datacollect.controller"))
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("后台接口文档")
.description("查看接口文档")
.build();
}
}
\ No newline at end of file
......@@ -5,6 +5,7 @@ import com.zq.datacollect.service.BigScreenService;
import com.zq.datacollect.service.DataCollecSiteService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
......@@ -62,4 +63,27 @@ public class BigScreenController {
return ResultVo.success(bigScreenService.getModelDetails(modelName));
}
}
@ApiOperation("数据资源情况详情")
@GetMapping(value = "/details/sjzyqk")
public ResultVo getSjzyqkDetails(@ApiParam("1共享数据 2内部数据 3公共数据") @RequestParam("dataType") Integer dataType) {
return ResultVo.success(bigScreenService.getSjzyqkDetails(dataType));
}
@ApiOperation("数据来源统计详情")
@GetMapping(value = "/details/sjlytj")
public ResultVo getSjlytjDetails(@ApiParam("列表返回的dataId") @RequestParam("dataId") Integer dataId) {
return ResultVo.success(bigScreenService.getSjlytjDetails(dataId));
}
@ApiOperation("办案成效详情")
@GetMapping(value = "/details/bacx")
public ResultVo getBacxDetails(@ApiParam("1线索 2移送 3成案 4起诉") @RequestParam("type") Integer type) {
return ResultVo.success(bigScreenService.getBacxDetails(type));
}
@ApiOperation("平台成果详情")
@GetMapping(value = "/details/ptcg")
public ResultVo getPtcgDetails(@ApiParam("1建设应用模型 2全国模型竞赛获奖 3推动建章立制") @RequestParam("type") Integer type) {
return ResultVo.success(bigScreenService.getPtcgDetails(type));
}
}
\ No newline at end of file
package com.zq.datacollect.controller;
import com.zq.common.vo.ResultVo;
import com.zq.datacollect.entity.QueryDb;
import com.zq.datacollect.service.DataSourceService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@RestController
@RequestMapping(value = "/data/collect/datasource")
public class DataSourceController {
@Resource
private DataSourceService dataSourceService;
@ApiOperation("新增数据库连接")
@PostMapping
public ResultVo add(@RequestBody QueryDb queryDb){
dataSourceService.add(queryDb);
return ResultVo.success();
}
@ApiOperation("更新数据库连接")
@PutMapping
public ResultVo update(@RequestBody QueryDb queryDb){
dataSourceService.update(queryDb);
return ResultVo.success();
}
@ApiOperation("删除数据库连接")
@DeleteMapping("/{id}")
public ResultVo delete(@PathVariable("id") Integer id){
dataSourceService.delete(id);
return ResultVo.success();
}
}
\ No newline at end of file
package com.zq.datacollect.holder;
import com.alibaba.druid.pool.DruidDataSource;
import com.zq.common.exception.BusinessException;
import com.zq.datacollect.entity.QueryDb;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
public class DatabaseHolder {
private static Map<Integer, JdbcTemplate> jdbcTemplateMap;
private static Map<Integer, JdbcTemplate> jdbcTemplateMap = new HashMap<>();
public static void set(Map<Integer, JdbcTemplate> map) {
jdbcTemplateMap = map;
public static void add(QueryDb queryDb){
add(queryDb.getDbType(), queryDb.getDbIp(), queryDb.getDbPort(), queryDb.getDbName(), queryDb.getUsername(), queryDb.getPassword(), queryDb.getId());
}
public static void add(Integer id, JdbcTemplate jdbcTemplate){
jdbcTemplateMap.put(id, jdbcTemplate);
public static void add(Integer dbType, String dbIp, Integer dbPort, String dbName, String username, String password, Integer id) {
DruidDataSource druidDataSource = new DruidDataSource();
String url = "";
String className = "";
switch (dbType) {
case 1:
className = "com.mysql.cj.jdbc.Driver";
url = "jdbc:mysql://" + dbIp + ":" + dbPort + "/" + dbName + "?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&autoReconnect=true";
break;
case 2:
className = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@//" + dbIp + ":" + dbPort + "/" + dbName;
break;
case 3:
className = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
url = "jdbc:sqlserver://" + dbIp + ":" + dbPort + "/" + dbName;
break;
default:
throw new BusinessException("不支持的数据库");
}
druidDataSource.setDriverClassName(className);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
jdbcTemplateMap.put(id, new JdbcTemplate(druidDataSource));
}
public static JdbcTemplate getJdbcTemplate(Integer id){
return jdbcTemplateMap.get(id);
}
public static Connection getConnection(Integer id){
try {
return ((DruidDataSource) jdbcTemplateMap.get(id).getDataSource()).getConnection().getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
public static void remove(Integer id){
((DruidDataSource)jdbcTemplateMap.get(id).getDataSource()).close();
jdbcTemplateMap.remove(id);
}
}
\ No newline at end of file
......@@ -26,39 +26,12 @@ public class DatabaseRunner implements ApplicationRunner {
@Resource
private QueryDbMapper queryDbMapper;
private Map<Integer, JdbcTemplate> jdbcTemplateMap = new HashMap<>();
@Override
public void run(ApplicationArguments args) throws SQLException {
public void run(ApplicationArguments args) {
List<QueryDb> datasource = queryDbMapper.selectList(new QueryWrapper<>());
for (QueryDb ds : datasource) {
DruidDataSource druidDataSource = DruidDataSourceBuilder.create().build();
String url = "";
String className = "";
switch (ds.getDbType()) {
case 1:
className = "com.mysql.cj.jdbc.Driver";
url = "jdbc:mysql://" + ds.getDbIp() + ":" + ds.getDbPort() + "/" + ds.getDbName() + "?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&autoReconnect=true";
break;
case 2:
className = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@//" + ds.getDbIp() + ":" + ds.getDbPort() + "/" + ds.getDbName();
break;
case 3:
className = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
url = "jdbc:sqlserver://" + ds.getDbIp() + ":" + ds.getDbPort() + "/" + ds.getDbName();
break;
default:
throw new BusinessException("不支持的数据库");
}
druidDataSource.setDriverClassName(className);
druidDataSource.setUrl(url);
druidDataSource.setUsername(ds.getUsername());
druidDataSource.setPassword(ds.getPassword());
druidDataSource.init();
jdbcTemplateMap.put(ds.getId(), new JdbcTemplate(druidDataSource));
DatabaseHolder.add(ds);
}
DatabaseHolder.set(jdbcTemplateMap);
log.info("成功加载数据库:{}个", jdbcTemplateMap.size());
log.info("成功加载数据库:{}个", datasource.size());
}
}
\ No newline at end of file
......@@ -30,7 +30,6 @@ public class BigScreenService {
private QueryDbMapper queryDbMapper;
public Object getModelTypeCount() {
List<DataCollectSetting> collectList = getCollectList();
Integer toDbId = null;
......@@ -57,7 +56,7 @@ public class BigScreenService {
String id = city.get("id").toString();
Map<String, Object> dataMap = new HashMap<>();
List<Map<String, Object>> mapLists = jdbcTemplate.queryForList("SELECT mx.`部门` as dept,mx.`模型名称` as modelName,mx.业务条线 as caseType, mx.`建设进度状态` as jsjd FROM qsdsjfljdmxsjmx mx WHERE mx.`部门` like CONCAT('%','" + diqu + "','%')");
dataMap.put("id",id);
dataMap.put("id", id);
dataMap.put("numCount", mapLists.size());
dataMap.put("cityName", mapLists);
objects.add(dataMap);
......@@ -66,10 +65,9 @@ public class BigScreenService {
return objects;
}
public List<DataCollectSetting> getCollectList() {
List<QueryDb> datasource = queryDbMapper.selectList(new QueryWrapper<>());
List<DataCollectSetting> collectSettings =null;
List<DataCollectSetting> collectSettings = null;
for (QueryDb ds : datasource) {
if (ds.getDbName().contains("data_collect")) {
collectSettings = dataCollectMapper.selectList(new LambdaQueryWrapper<DataCollectSetting>().eq(DataCollectSetting::getToDbId, ds.getId()));
......@@ -90,6 +88,7 @@ public class BigScreenService {
for (Map<String, Object> map : mapList) {
dataCount = map.get("dataCount").toString();
}
dataMap.put("dataId", list.getId());
dataMap.put("dataType", list.getDataType());
dataMap.put("TaskName", list.getTaskName());
dataMap.put("dataCount", dataCount);
......@@ -108,17 +107,17 @@ public class BigScreenService {
}
List<String> ywuList = getYwuList();
List<Object> dataList = new ArrayList<>();
for (String data:ywuList) {
for (String data : ywuList) {
JdbcTemplate jdbcTemplate = DatabaseHolder.getJdbcTemplate(toDbId);
List<Map<String, Object>> mapList = jdbcTemplate.queryForList("SELECT mx.业务条线 as caseType,COUNT(1) as numsCount FROM qsdsjfljdmxsjmx mx WHERE mx.业务条线 like CONCAT('%','" + data + "','%') GROUP BY caseType");
HashMap<String, Object> dataMap = new HashMap<>();
BigDecimal addNums =BigDecimal.ZERO;
for (Map<String, Object> map:mapList) {
BigDecimal addNums = BigDecimal.ZERO;
for (Map<String, Object> map : mapList) {
BigDecimal numsCount = new BigDecimal(map.get("numsCount").toString());
addNums=addNums.add(numsCount);
addNums = addNums.add(numsCount);
}
dataMap.put("caseType",data);
dataMap.put("numsCount",addNums);
dataMap.put("caseType", data);
dataMap.put("numsCount", addNums);
dataList.add(dataMap);
}
return dataList;
......@@ -144,13 +143,13 @@ public class BigScreenService {
List<Map<String, Object>> mapLists = jdbcTemplate.queryForList("SELECT mx.`部门` as dept,SUM(mx.筛查出线索数) as screenNums,SUM(mx.符合监督线索数) as clueNums FROM qsdsjfljdmxsjmx mx WHERE mx.`部门` like CONCAT('%','" + diqu + "','%') GROUP BY dept");
dataMap.put("cityNums", mapLists);
}
dataMap.put("id", id);
objects.add(dataMap);
dataMap.put("id", id);
objects.add(dataMap);
}
return objects;
}
public List<String> getYwuList(){
public List<String> getYwuList() {
List<String> list = new ArrayList<>();
list.add("公益诉讼检察");
list.add("未成年人检察");
......@@ -159,11 +158,9 @@ public class BigScreenService {
list.add("行政检察");
list.add("行政执行");
list.add("控告申诉检察");
return list;
}
public Object getModelDetails(String modelName) {
List<DataCollectSetting> collectList = getCollectList();
Integer toDbId = null;
......@@ -171,7 +168,60 @@ public class BigScreenService {
toDbId = list.getToDbId();
}
JdbcTemplate jdbcTemplate = DatabaseHolder.getJdbcTemplate(toDbId);
List<Map<String, Object>> mapList = jdbcTemplate.queryForList("SELECT `部门` AS dept,`业务条线` AS caseType,`模型名称` AS modelName,`建设进度状态` AS jsjd,`备注` AS detail,`是否有成效` AS effect,`筛查出线索数` AS screenNums,`符合监督线索数` AS clueNums,`监督数成效` AS jdcx FROM qsdsjfljdmxsjmx t WHERE t.`模型名称` like CONCAT('%','"+modelName+"','%')");
List<Map<String, Object>> mapList = jdbcTemplate.queryForList("SELECT `部门` AS dept,`业务条线` AS caseType,`模型名称` AS modelName,`建设进度状态` AS jsjd,`备注` AS detail,`是否有成效` AS effect,`筛查出线索数` AS screenNums,`符合监督线索数` AS clueNums,`监督数成效` AS jdcx FROM qsdsjfljdmxsjmx t WHERE t.`模型名称` like CONCAT('%','" + modelName + "','%')");
return mapList;
}
}
public List<Map<String, String>> getSjzyqkDetails(Integer dataType) {
List<Map<String, String>> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
Map<String, String> map = new HashMap<>();
map.put("dataName", "数据表" + (i + 1));
map.put("dataSize", "100");
list.add(map);
}
return list;
}
public List<Map<String, Object>> getSjlytjDetails(Integer dataId) {
DataCollectSetting dataCollectSetting = dataCollectMapper.selectById(dataId);
JdbcTemplate jdbcTemplate = DatabaseHolder.getJdbcTemplate(dataCollectSetting.getToDbId());
return jdbcTemplate.queryForList("SELECT * FROM " + dataCollectSetting.getToTable());
}
public List<Map<String, Object>> getBacxDetails(Integer type) {
List<QueryDb> datasource = queryDbMapper.selectList(new QueryWrapper<>());
Integer dbId = null;
for (QueryDb ds : datasource) {
if (ds.getDbName().contains("data_collect")) {
dbId = ds.getId();
}
}
JdbcTemplate jdbcTemplate = DatabaseHolder.getJdbcTemplate(dbId);
return jdbcTemplate.queryForList("SELECT * FROM qsdsjfljdmxsjmx WHERE 符合监督线索数 >= 1");
}
public List<Map<String, Object>> getPtcgDetails(Integer type) {
List<QueryDb> datasource = queryDbMapper.selectList(new QueryWrapper<>());
Integer dbId = null;
for (QueryDb ds : datasource) {
if (ds.getDbName().contains("data_collect")) {
dbId = ds.getId();
}
}
JdbcTemplate jdbcTemplate = DatabaseHolder.getJdbcTemplate(dbId);
List<Map<String, Object>> list = null;
switch (type) {
case 1:
list = jdbcTemplate.queryForList("SELECT * FROM qsdsjfljdmxsjmx");
break;
case 2:
list = jdbcTemplate.queryForList("SELECT * FROM qsdsjfljdmxsjmx WHERE 符合监督线索数 >= 1");
break;
case 3:
list = jdbcTemplate.queryForList("SELECT * FROM qsdsjfljdmxsjmx WHERE 推动建立机制 >= 1");
break;
}
return list;
}
}
\ No newline at end of file
package com.zq.datacollect.service;
import com.zq.datacollect.entity.QueryDb;
public interface DataSourceService {
void add(QueryDb queryDb);
void update(QueryDb queryDb);
void delete(Integer id);
}
\ No newline at end of file
package com.zq.datacollect.service.impl;
import com.zq.datacollect.entity.QueryDb;
import com.zq.datacollect.holder.DatabaseHolder;
import com.zq.datacollect.service.DataSourceService;
import org.springframework.stereotype.Service;
@Service
public class DataSourceServiceImpl implements DataSourceService {
@Override
public void add(QueryDb queryDb) {
DatabaseHolder.add(queryDb);
}
@Override
public void update(QueryDb queryDb) {
DatabaseHolder.remove(queryDb.getId());
DatabaseHolder.add(queryDb);
}
@Override
public void delete(Integer id) {
DatabaseHolder.remove(id);
}
}
\ No newline at end of file
......@@ -21,31 +21,42 @@
<artifactId>common-client</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--Spring boot 安全框架-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</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-openfeign</artifactId>
</dependency>
<!--Spring boot Web容器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Spring boot 安全框架-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!--Spring boot 测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--Spring devtools 热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -53,29 +64,34 @@
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!--Spring boot Redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--Mybatis plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<!-- druid数据源驱动 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
<!-- excel工具 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.1</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.oracle</groupId>-->
<!-- <artifactId>ojdbc6</artifactId>-->
......@@ -83,22 +99,26 @@
<!-- </dependency>-->
<!-- https://mvnrepository.com/artifact/com.oracle.database.nls/orai18n -->
<!-- swagger start-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
<!-- 解决FluentIterable.class找不到问题 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>26.0-jre</version>
</dependency>
<!-- java8 不需要添加,高版本需要添加 -->
<dependency>
<groupId>javax.xml.bind</groupId>
......@@ -118,6 +138,7 @@
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.zq</groupId>
<artifactId>data-collect-server</artifactId>
......@@ -131,6 +152,9 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- <configuration>-->
<!-- <skip>true</skip>-->
<!-- </configuration>-->
</plugin>
</plugins>
......@@ -143,5 +167,4 @@
</resource>
</resources>
</build>
</project>
</project>
\ No newline at end of file
......@@ -4,13 +4,15 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableSwagger2
@EnableScheduling
@MapperScan({"com.zq.dataoperation.dao","com.zq.spiderflow.dao","com.zq.datacollect.mapper"})
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.zq.dataoperation.feign")
@MapperScan({"com.zq.dataoperation.dao","com.zq.spiderflow.dao","com.zq.datacollect.mapper"})
@SpringBootApplication//(scanBasePackages = {"com.zq.dataoperation", "com.zq.common.config","com.zq.spiderflow"})
public class DataoperationApplication {
......
package com.zq.dataoperation.feign;
import com.zq.common.vo.ResultVo;
import com.zq.dataoperation.entity.QueryDb;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
@FeignClient(name = "DATA-COLLECT-SERVER")
@RequestMapping(value = "/data/collect")
public interface DataCollectFeign {
@PostMapping("/datasource")
ResultVo add(@RequestBody QueryDb queryDb);
@PutMapping("/datasource")
ResultVo update(@RequestBody QueryDb queryDb);
@DeleteMapping("/datasource/{id}")
ResultVo delete(@PathVariable("id") Integer id);
}
\ No newline at end of file
......@@ -23,6 +23,7 @@ public class DatabaseRunner implements ApplicationRunner {
public void run(ApplicationArguments args) {
List<QueryDb> datasource = service.getDatasource();
for (QueryDb ds : datasource) {
service.checkConnect(ds);
DatabaseHolder.add(ds.getDbType(), ds.getDbIp(), ds.getDbPort(), ds.getDbName(), ds.getUsername(), ds.getPassword(), ds.getId());
}
log.info("成功加载数据库:{}个", datasource.size());
......
......@@ -16,6 +16,7 @@ import com.zq.dataoperation.dao.QueryDbDao;
import com.zq.dataoperation.entity.CommonQuerySetting;
import com.zq.dataoperation.entity.MetaDataMapping;
import com.zq.dataoperation.entity.QueryDb;
import com.zq.dataoperation.feign.DataCollectFeign;
import com.zq.dataoperation.holder.DatabaseHolder;
import com.zq.dataoperation.utils.SqlUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -43,6 +44,9 @@ public class CommonQueryService extends ServiceImpl<CommonQuerySettingDao, Commo
@Resource
private MetaDataMappingDao metaDataMappingDao;
@Resource
private DataCollectFeign dataCollectFeign;
private static final Logger log = LoggerFactory.getLogger(ThreadContext.class);
public List<QueryDb> getDatasource() {
......@@ -50,9 +54,11 @@ public class CommonQueryService extends ServiceImpl<CommonQuerySettingDao, Commo
}
public ResultVo addDatasource(QueryDb queryDb) {
checkConnect(queryDb);
queryDb.setCreateTime(DateUtil.date());
AssertUtils.isTrue(queryDbDao.insert(queryDb) == 1, "添加失败,请检查后重试");
DatabaseHolder.add(queryDb.getDbType(), queryDb.getDbIp(), queryDb.getDbPort(), queryDb.getDbName(), queryDb.getUsername(), queryDb.getPassword(), queryDb.getId());
dataCollectFeign.add(queryDb);
return ResultVo.success();
}
......@@ -66,16 +72,19 @@ public class CommonQueryService extends ServiceImpl<CommonQuerySettingDao, Commo
@Transactional
public void updateDatasource(QueryDb queryDb) {
checkConnect(queryDb);
queryDb.setUpdateTime(DateUtil.date());
AssertUtils.isTrue(queryDbService.updateById(queryDb), "操作失败!");
DatabaseHolder.remove(queryDb.getId());
DatabaseHolder.add(queryDb.getDbType(), queryDb.getDbIp(), queryDb.getDbPort(), queryDb.getDbName(), queryDb.getUsername(), queryDb.getPassword(), queryDb.getId());
dataCollectFeign.update(queryDb);
}
@Transactional
public void deleteDatasource(Integer id) {
AssertUtils.isTrue(queryDbService.removeById(id), "操作失败!");
DatabaseHolder.remove(id);
dataCollectFeign.delete(id);
}
public List<Map<String, Object>> run(Map<String, Object> body) {
......
......@@ -104,6 +104,7 @@ public class SqlUtils {
druidDataSource.setMinEvictableIdleTimeMillis(300000);
// 这个特性能解决 MySQL 服务器8小时关闭连接的问题
druidDataSource.setMaxEvictableIdleTimeMillis(25200000);
druidDataSource.setConnectionErrorRetryAttempts(1);
try {
druidDataSource.init();
......
......@@ -67,6 +67,9 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
......
package com.zq.doc.controller;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.zq.common.vo.ResultVo;
import com.zq.doc.mapper.AjxxFileMapper;
import com.zq.doc.vo.AplhaDocVo;
......@@ -45,11 +46,84 @@ public class DocController {
*
* @return
*/
@GetMapping("/db/search")
// @GetMapping("/db/search")
// @ApiOperation("数据库综合查询: 在综合查询中, 有按条件查询, 条件过滤, 排序, 分页, 高亮显示, 获取部分域信息")
// public SolrDocumentPage dbSearch(@ApiParam("页码") @RequestParam(defaultValue = "1") Integer pageNum,
// @ApiParam("每页记录数") @RequestParam(defaultValue = "10") Integer pageSize,
// @ApiParam("查询条件") AplhaDocVo aplhaDocVo) throws SolrServerException, IOException {
// SolrQuery params = new SolrQuery();
// //查询条件, 这里的 q 对应 下面图片标红的地方
// if (StringUtils.isBlank(aplhaDocVo.getAjnr())) {
// params.set("q", "*");
// } else {
// params.set("q", aplhaDocVo.getAjnr());
// }
//
// if (StringUtils.isNotEmpty(aplhaDocVo.getAh())) {
// params.addFilterQuery("ah:*" + aplhaDocVo.getAh() + "*");
// }
// if (ObjectUtil.isNotNull(aplhaDocVo.getAjmc())) {
// params.addFilterQuery("ajmc:*" + aplhaDocVo.getAjmc() + "*");
// }
// if (StringUtils.isNotBlank(aplhaDocVo.getFymc())) {
// params.addFilterQuery("fymc:*" + aplhaDocVo.getFymc() + "*");
// }
// if (StringUtils.isNotBlank(aplhaDocVo.getAy())) {
// params.addFilterQuery("ay:*" + aplhaDocVo.getAy() + "*");
// }
// if (ObjectUtil.isNotNull(aplhaDocVo.getAjnr())) {
// params.addFilterQuery("ajnr:*" + aplhaDocVo.getAjnr() + "*");
// }
//
// //排序
// params.addSort("id", SolrQuery.ORDER.desc);
// //分页
// params.setStart((pageNum - 1) * pageSize);
// params.setRows(pageSize);
// //默认域
// params.set("df", "keyword");
// //高亮打开开关
// params.setHighlight(true);
// //指定高亮域
// params.addHighlightField("ajnr");
//
// //设置前缀
// params.setHighlightSimplePre("<span style='color:red'>");
// //设置后缀
// params.setHighlightSimplePost("</span>");
//
// QueryResponse queryResponse = client.query(core, params);
//
// SolrDocumentList results = queryResponse.getResults();
//
// long numFound = results.getNumFound(); // 查询到的结果
//
// //获取高亮显示的结果, 高亮显示的结果和查询结果是分开放的
// Map<String, Map<String, List<String>>> highlight = queryResponse.getHighlighting();
//
// for (SolrDocument result : results) { // 将高亮结果合并到查询结果中
// result.remove("keyword");
// highlight.forEach((k, v) -> {
// if (result.get("id").equals(k)) {
// v.forEach((k1, v1) -> {
// if (!k1.equals("keyword")) result.setField(k1, v1); // 高亮列合并如结果
// });
// }
// });
// }
// return new SolrDocumentPage(pageNum, pageSize, numFound, results);
// }
/**
* 综合查询: 在综合查询中, 有按条件查询, 条件过滤, 排序, 分页, 高亮显示, 获取部分域信息
*
* @return
*/
@GetMapping("/db/search/new")
@ApiOperation("数据库综合查询: 在综合查询中, 有按条件查询, 条件过滤, 排序, 分页, 高亮显示, 获取部分域信息")
public SolrDocumentPage dbSearch(@ApiParam("页码") @RequestParam(defaultValue = "1") Integer pageNum,
@ApiParam("每页记录数") @RequestParam(defaultValue = "10") Integer pageSize,
@ApiParam("查询条件") AplhaDocVo aplhaDocVo) throws SolrServerException, IOException {
public SolrDocumentPage dbSearchNew(@ApiParam("页码") @RequestParam(defaultValue = "1") Integer pageNum,
@ApiParam("每页记录数") @RequestParam(defaultValue = "10") Integer pageSize,
@ApiParam("查询条件") AplhaDocVo aplhaDocVo) throws SolrServerException, IOException {
SolrQuery params = new SolrQuery();
//查询条件, 这里的 q 对应 下面图片标红的地方
if (StringUtils.isBlank(aplhaDocVo.getAjnr())) {
......@@ -58,24 +132,21 @@ public class DocController {
params.set("q", aplhaDocVo.getAjnr());
}
if(aplhaDocVo.getFymc().size() > 0){
params.addFilterQuery("fymc:" + StrUtil.join(" OR fymc:", aplhaDocVo.getFymc()));
}
if(aplhaDocVo.getAy().size() > 0){
params.addFilterQuery("ay:" + StrUtil.join(" OR ay:", aplhaDocVo.getAy()));
}
if (StringUtils.isNotEmpty(aplhaDocVo.getAh())) {
params.addFilterQuery("ah:*" + aplhaDocVo.getAh() + "*");
}
if (ObjectUtil.isNotNull(aplhaDocVo.getAjmc())) {
params.addFilterQuery("ajmc:*" + aplhaDocVo.getAjmc() + "*");
}
if (StringUtils.isNotBlank(aplhaDocVo.getFymc())) {
params.addFilterQuery("fymc:*" + aplhaDocVo.getFymc() + "*");
}
if (StringUtils.isNotBlank(aplhaDocVo.getAy())) {
params.addFilterQuery("ay:*" + aplhaDocVo.getAy() + "*");
}
if (ObjectUtil.isNotNull(aplhaDocVo.getAjnr())) {
params.addFilterQuery("ajnr:*" + aplhaDocVo.getAjnr() + "*");
}
//排序
params.addSort("id", SolrQuery.ORDER.desc);
//分页
params.setStart((pageNum - 1) * pageSize);
params.setRows(pageSize);
......@@ -92,9 +163,7 @@ public class DocController {
params.setHighlightSimplePost("</span>");
QueryResponse queryResponse = client.query(core, params);
SolrDocumentList results = queryResponse.getResults();
long numFound = results.getNumFound(); // 查询到的结果
//获取高亮显示的结果, 高亮显示的结果和查询结果是分开放的
......
......@@ -5,6 +5,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
@Data
@AllArgsConstructor
......@@ -29,12 +30,12 @@ public class AplhaDocVo {
/**
* 法院名称
*/
private String fymc;
private List<String> fymc;
/**
* 案由
*/
private String ay;
private List<String> ay;
/**
* 案件内容
......
......@@ -147,7 +147,11 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<!-- 让maven不编译docx文件,但仍将其打包 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
......
......@@ -138,9 +138,9 @@
</profile>
<profile>
<id>prod</id>
<id>product</id>
<properties>
<profiles.active>prod</profiles.active>
<profiles.active>product</profiles.active>
</properties>
</profile>
</profiles>
......
......@@ -70,16 +70,16 @@ public class User extends BaseEntity implements Serializable {
@ApiModelProperty(value = "用户名称")
private String username;
@NotBlank
// @NotBlank
@ApiModelProperty(value = "用户昵称")
private String nickName;
@Email
@NotBlank
// @NotBlank
@ApiModelProperty(value = "邮箱")
private String email;
@NotBlank
// @NotBlank
@ApiModelProperty(value = "电话号码")
private String phone;
......
......@@ -90,7 +90,7 @@ public class UserController {
/**
* 获取user用户名
* @param id
* @param ids
* @return
*/
@AnonymousAccess
......
......@@ -91,9 +91,9 @@ public class UserServiceImpl implements UserService {
if (userRepository.findByUsername(resources.getUsername()) != null) {
throw new EntityExistException(User.class, "username", resources.getUsername());
}
if (userRepository.findByEmail(resources.getEmail()) != null) {
throw new EntityExistException(User.class, "email", resources.getEmail());
}
// if (userRepository.findByEmail(resources.getEmail()) != null) {
// throw new EntityExistException(User.class, "email", resources.getEmail());
// }
userRepository.save(resources);
}
......
......@@ -50,7 +50,7 @@ spring:
multi-statement-allow: true
redis:
#数据库索引
database: 0
database: 1
host: ${redis.url}
port: ${redis.port}
password: ${redis.password}
......
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