Commit d7e0f34a by yangyang

湖南态势分析es处理(湖南)

parent 09e49de5
......@@ -34,6 +34,7 @@ public class TbStAsjParm implements Serializable {
@ApiModelProperty(value = "简要案情")
private String jyaq;
private String jyaqType;
@ApiModelProperty(value = "立案日期开始")
private String larqStart;
......@@ -60,7 +61,7 @@ public class TbStAsjParm implements Serializable {
private String afdxzqhdm;
@ApiModelProperty(value = "案件名称")
private int ajmc;
private String ajmc;
@ApiModelProperty(value = "所属分局1 所属派出所2")
private int ssFjOrPcs;
......
......@@ -75,6 +75,46 @@ public class HttpClient {
return jsonResult;
}
/**
* 请求的参数类型为json
* @param url
* @param json
* @return {username:"",pass:""}
*/
public static JSONObject doPostJsonHunanTs(String url, String json) throws Exception {
// post请求返回结果
CloseableHttpClient httpClient = HttpClients.createDefault();
JSONObject jsonResult = null;
HttpPost httpPost = new HttpPost(url);
// 设置请求和传输超时时间
httpPost.setConfig(requestConfig);
httpPost.setHeader("founder.authorization", "Basic 9b6c45cfcf3a4a629e3ed90fa3e5d058");
try{
//设置参数解决中文乱码
if (null != json){
StringEntity entity = new StringEntity(json,"utf-8");
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
}
//发送请求
CloseableHttpResponse result = httpClient.execute(httpPost);
System.out.println("StatusCode===="+result.getStatusLine().getStatusCode());
if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
// 读取服务器返回的json数据(然后解析)
jsonResult = JSONObject.parseObject(EntityUtils.toString(result.getEntity(), "utf-8"));
}else{
throw new Exception();
}
}catch (Exception e){
e.printStackTrace();
throw new Exception();
}finally{
httpPost.releaseConnection();
}
return jsonResult;
}
public static String doGet(String url,Map<String, String> headMap,Map<String, String> param) {
// 创建客户端连接
CloseableHttpClient httpclient = HttpClients.createDefault();
......
......@@ -69,21 +69,6 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 引入spring-data-elasticsearch-->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>-->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.4.3</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.4.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
......@@ -93,6 +78,18 @@
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
<scope>compile</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.13</version>
</dependency>
<!-- spring2.X集成redis所需common-pool2
<dependency>
<groupId>org.apache.commons</groupId>
......
......@@ -176,7 +176,11 @@ public class SysLogAspect {
try {
result = proceedingJoinPoint.proceed();
if (!StringUtils.isEmpty(result)) {
sysLog.setContent(result.toString());
if (request.getRequestURL().toString().contains("/skTbStAsj/queryAsjEs")){
sysLog.setContent(null);
}else{
sysLog.setContent(result.toString());
}
}
}catch (Exception e){
// KoTime工具在Throwable中不生效,以后如果要自定义异常的话 需要继承Exception
......
......@@ -103,25 +103,6 @@
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
</dependency>
<!-- 引入spring-data-elasticsearch-->
<!--
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
-->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.4.3</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.4.3</version>
</dependency>
<!--spring切面aop依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
......
......@@ -66,5 +66,20 @@
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.11.1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.11.1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.11.1</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.founder.publicapi.config;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.Duration;
/**
* @描述: 创建ES高级客户端
* @aurhor : yangyang
* @date : 2023/09/27
*/
@Configuration
public class ElasticSearchClientConfig {
@Bean
public RestHighLevelClient restHighLevelClient(){
RestHighLevelClient client = null;
//需要用户名和密码的认证
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("elastic", "admin@43"));
RestClientBuilder restClientBuilder = RestClient.builder(
//new HttpHost("47.92.225.109",9200,"http"))
new HttpHost("10.142.16.191",9209,"http"))
//new HttpHost(node2,port,"http"),
//new HttpHost(node3,port,"http"))
.setHttpClientConfigCallback( new RestClientBuilder.HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {
return httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider).setKeepAliveStrategy((response, context) -> Duration.ofMinutes(5).toMillis());
}
});
client = new RestHighLevelClient(restClientBuilder);
return client;
}
}
......@@ -56,6 +56,24 @@ public class AsjController {
return MapRestResult.build(200,"成功获取案件信息",total,asjList);
}
@OperLog(message = "态势分析查询",operation = OperationType.QUERY)
@ApiOperation(value = "态势分析查询")
@PostMapping("queryAsjEs")
public MapRestResult queryAsjEs(@RequestBody TbStAsjParm tbStAsjParm,HttpServletRequest request) {
//获取request中的用户信息
SysUser user = (SysUser)request.getAttribute("user");
return tbStAsjService.selectAsjxxListEs(tbStAsjParm);
}
@OperLog(message = "态势分析案情详情查询",operation = OperationType.QUERY)
@ApiOperation(value = "态势分析案情详情查询")
@PostMapping("queryAsjEsXq")
public MapRestResult queryAsjEsXq(@RequestBody TbStAsjParm tbStAsjParm,HttpServletRequest request) {
//获取request中的用户信息
SysUser user = (SysUser)request.getAttribute("user");
return tbStAsjService.selectAsjxxListEsXq(tbStAsjParm);
}
@OperLog(message = "串并案件导出",operation = OperationType.QUERY)
@ApiOperation(value = "串并案件导出")
@PostMapping("cbajExport")
......@@ -98,8 +116,8 @@ public class AsjController {
@PostMapping("tsfxExport")
public void tsfxExport(HttpServletResponse response,@RequestBody TbStAsjParm tbStAsjParm) throws Exception {
List<TbStAsjResult> list = tbStAsjService.selectAsjxxList(tbStAsjParm);
ExportExcelUtil<TbStAsjResult> exportExcelUtil = new ExportExcelUtil<>();
List<Map<String,Object>> list = tbStAsjService.getAsjExportEs(tbStAsjParm);
ExportExcelUtil<Map<String,Object>> exportExcelUtil = new ExportExcelUtil<>();
String[] headersName = {"案件编号","案件名称","案发时间","案发地址","坐标x","坐标y","案件类别","案件标签","简要案情"};
String[] headersField = {"asjbh","ajmc","asjfssjAsjfskssj","asjfsddDzmc","x","y","ajlbdmMc","zatzJyqkMc","jyaq"};
exportExcelUtil.exportExcel("DataStatistics", headersName, headersField, list, response,"态势分析地图检索");
......
/*
package com.founder.publicapi.controller.SkInterface;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.founder.commonutils.model.newPublicEntity.MapRestResult;
import com.founder.commonutils.model.vo.response.SkRelatedResultInterFace;
import com.founder.commonutils.model.vo.response.SkRelatedResultVO;
import com.founder.commonutils.util.ExportExcelUtil;
import com.founder.commonutils.util.HttpClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.*;
import java.util.stream.Collectors;
@Api(tags = "天枢导出")
@RestController
@RequestMapping("/exportTsHn")
public class TsinfoController {
@Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
String url = "http://tianshu.gat.zj/tsure/assistQueryResult/queryAssistForPage.json";
@PostMapping("/export")
@ApiOperation("Excel接口")
public void export(@RequestParam(name = "id") String id){
// 天枢导出注册
CompletableFuture future = CompletableFuture.supplyAsync(() -> {
Integer zdryexist =0;
try {
List<CarInfo> carList = exportData(carInfoService.selectCarInfoListCount(entity),entity);
ExportExcelUtil<CarInfo> exportExcelUtil = new ExportExcelUtil<>();
String[] headersName = {"车架号","品牌型号","车辆颜色","发动机号","车辆所有人","出卖人姓名","出卖人身份证号","营业场所名称","法人姓名","法人联系电话"};
String[] headersField = {"vin","ppxh","ys","fdjh","clsyr","cmrXm","cmrZjhm","yycsmc","frxm","frlxdh"};
exportExcelUtil.exportExcel("DataStatistics", headersName, headersField, carList, response,"二手车信息");
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}, threadPoolTaskExecutor);
// 天枢导出登录
CompletableFuture future2 = CompletableFuture.supplyAsync(() -> {
Integer zdryexist =0;
try {
List<CarInfo> carList = exportData(carInfoService.selectCarInfoListCount(entity),entity);
ExportExcelUtil<CarInfo> exportExcelUtil = new ExportExcelUtil<>();
String[] headersName = {"车架号","品牌型号","车辆颜色","发动机号","车辆所有人","出卖人姓名","出卖人身份证号","营业场所名称","法人姓名","法人联系电话"};
String[] headersField = {"vin","ppxh","ys","fdjh","clsyr","cmrXm","cmrZjhm","yycsmc","frxm","frlxdh"};
exportExcelUtil.exportExcel("DataStatistics", headersName, headersField, carList, response,"二手车信息");
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}, threadPoolTaskExecutor);
// 天枢导出交易
CompletableFuture future3 = CompletableFuture.supplyAsync(() -> {
Integer zdryexist =0;
try {
List<CarInfo> carList = exportData(carInfoService.selectCarInfoListCount(entity),entity);
ExportExcelUtil<CarInfo> exportExcelUtil = new ExportExcelUtil<>();
String[] headersName = {"车架号","品牌型号","车辆颜色","发动机号","车辆所有人","出卖人姓名","出卖人身份证号","营业场所名称","法人姓名","法人联系电话"};
String[] headersField = {"vin","ppxh","ys","fdjh","clsyr","cmrXm","cmrZjhm","yycsmc","frxm","frlxdh"};
exportExcelUtil.exportExcel("DataStatistics", headersName, headersField, carList, response,"二手车信息");
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}, threadPoolTaskExecutor);
future.join();
future2.join();
future3.join();
}
public List<CarInfo> exportData(int size,CarInfo carInfo) throws Exception {
List<CarInfo> list = new ArrayList<>();
// 分页
int limit=1000;
// 特殊处理
if(limit==0){
limit=1;
}
long threadNum = size / limit;
int startnum = 0;
int endnum = 0;
// 按需分配线程池
for (int i = 0; i < threadNum + 1; i++) {
startnum = i * limit;
endnum = ((i + 1) * limit);
if (startnum > size) {
break;
}
if (endnum >size) {
endnum = size;
}
if (startnum == endnum) {
break;
}
carInfo.setPage(startnum);
carInfo.setPageSize(limit);
Task task = new Task(carInfo);
FutureTask<List<CarInfo>> futureTask = new FutureTask<>(task);
ExecutorService executorService = Executors.newFixedThreadPool(100);
executorService.submit(futureTask);
List<CarInfo> list1 = futureTask.get();
list.addAll(list1);
executorService.shutdown();
}
return list;
}
class Task implements Callable<List<CarInfo>> {
private String table;
private Integer pageSize;
private Integer pageNum;
public Task(String table,Integer pageSize,Integer pageNum) {
this.table = table;
this.pageSize = pageSize;
this.pageNum = pageNum;
}
@Override
public List<CarInfo> call() {
list<> listResult = new ArrayList<>();
HttpClient httpClient = new HttpClient();
JSONObject params = new JSONObject();
// table 登录(logon_log_acc) 注册(register) 账户明细(consume_query_real_time)
params.put("pageSize", pageSize);
params.put("pageNum", pageNum);
params.put("tsureRequireId", "311072023091100672254");
params.put("tableName", table);
JSONObject result = null;
try {
result = httpClient.doPostJsonHunanTs(url, params.toJSONString());
} catch (Exception e) {
e.printStackTrace();
}
if (result != null) {
if ("true".equals(result.getString("success"))) {
JSONArray jsonArray = result.getJSONArray("data");
}
}
return listResult;
}
}
// 获取总数
public Integer getCount(String table){
Integer totalCount = 0;
HttpClient httpClient = new HttpClient();
JSONObject params = new JSONObject();
// table 登录(logon_log_acc) 注册(register) 账户明细(consume_query_real_time)
params.put("pageSize", 0);
params.put("pageNum", 1);
params.put("tsureRequireId", "311072023091100672254");
params.put("tableName", table);
JSONObject result = null;
try {
result = httpClient.doPostJsonHunanTs(url, params.toJSONString());
} catch (Exception e) {
e.printStackTrace();
}
if (result != null) {
if ("true".equals(result.getString("success"))) {
totalCount = result.getInteger("totalCount");
}
}
return totalCount;
}
}
*/
......@@ -5,6 +5,7 @@ import com.founder.commonutils.model.asjEntity.CbxszAndXlaj;
import com.founder.commonutils.model.asjEntity.TbAsjJwdInfo;
import com.founder.commonutils.model.asjEntity.TbStAsj;
import com.founder.commonutils.model.asjEntity.TbStAsjResult;
import com.founder.commonutils.model.newPublicEntity.MapRestResult;
import com.founder.commonutils.model.newPublicEntity.SaspEntity.PhotoOrMediaResult;
import com.founder.commonutils.model.newPublicEntity.SysUser;
import com.founder.commonutils.model.newPublicEntity.ZdryResult;
......@@ -21,6 +22,12 @@ public interface TbStAsjService extends IService<TbStAsj> {
List<TbStAsjResult> selectAsjxxList(TbStAsjParm tbStAsjParm);
MapRestResult selectAsjxxListEs(TbStAsjParm tbStAsjParm);
MapRestResult selectAsjxxListEsXq(TbStAsjParm tbStAsjParm);
List<Map<String,Object>> getAsjExportEs(TbStAsjParm tbStAsjParm);
Integer selectAsjxxListCount(TbStAsjParm tbStAsjParm);
List<String> getXszajbhByAsjbh(String asjbh);
......
......@@ -10,13 +10,13 @@ logging.level.root=INFO
#mysql\uFFFD\uFFFD\uFFFD\u077F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.xzxtdb.url=jdbc:mysql://65.26.107.159:4306/xzxt?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.xzxtdb.url=jdbc:mysql://10.142.16.194:4306/xzxt?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.xzxtdb.username=ENC(b7OXS5qvb3tVsaDbfqkFpg==)
spring.datasource.xzxtdb.password=ENC(PhkJovHr5GezJgLS+gfSFaID3dNlmUi5)
#oracle\uFFFD\uFFFD\uFFFD\u077F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD(\u022B\uFFFD\uFFFD\uFFFD\uFFFD)
spring.datasource.qgdb.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.qgdb.url=jdbc:mysql://65.26.107.159:4306/xzxt?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.qgdb.url=jdbc:mysql://10.142.16.194:4306/xzxt?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.qgdb.username=ENC(b7OXS5qvb3tVsaDbfqkFpg==)
spring.datasource.qgdb.password=ENC(PhkJovHr5GezJgLS+gfSFaID3dNlmUi5)
......
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