Commit 79f8a3db by chentian

时空通用工具

parent d08da175
package com.founder.asj.qgxzMapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.asjEntity.TbStAsj;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* <p>
* 案事件基本信息 Mapper 接口
* </p>
*
* @author yangyang
* @since 2021-06-25
*/
@Mapper
@Component
public interface TbStAsjqgMapper extends BaseMapper<TbStAsj> {
List<Map<String,Object>> getqgAsjxxByZjhm(@Param(value = "zjhm")String zjhm,@Param(value = "ssdw")String ssdw);
}
<?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.founder.asj.qgxzMapper.TbStAsjqgMapper">
<select id="getqgAsjxxByZjhm" parameterType="java.lang.String" resultType="map">
SELECT
T.asjbh AS asjbh,
TO_CHAR(XYR.ZHRQ,'YYYY-MM-DD HH24:mi:ss') AS zhrq,
(select name from SYS_DICTITEM where groupid='CODE_AJLB' AND code = T.ajlbdm) AS ajlbdmMc,
TO_CHAR(T.asjfssj_Asjfskssj,'YYYY-MM-DD HH24:mi:ss') AS asjfssjAsjfskssj,
TO_CHAR(T.larq,'YYYY-MM-DD HH24:mi:ss') AS larq
FROM TB_ST_ASJ T,TB_XW_ZBFZXYR XYR
where
T.ASJBH = XYR.ASJBH
AND
T.XXSC_PDBZ = 0
AND
XYR.XXSC_PDBZ = 0
<if test="ssdw != null and ssdw != ''">
AND T.ASJBH NOT LIKE '%A' || #{ssdw, jdbcType=VARCHAR } || '%'
</if>
<if test="zjhm != null and zjhm != ''">
AND XYR.zhfzxyr_Cyzj_Zjhm = #{zjhm}
</if>
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>service</artifactId>
<groupId>com.founder</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>es</artifactId>
<build>
<finalName>es</finalName>
</build>
</project>
\ No newline at end of file
package com.founder.eszy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages = {"com.founder"})
public class EsApplication {
public static void main(String[] args) {
System.setProperty("es.set.netty.runtime.available.processors", "false");
SpringApplication.run(EsApplication.class, args);
}
}
package com.founder.eszy.controller;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.eszy.esExtract.EsTbZyCameraTranslation;
import com.founder.eszy.esExtract.EsTbZyJzxxTranslation;
import com.founder.eszy.esExtract.EsTbZyKkxxTranslation;
import com.founder.eszy.esSearch.EsSearch;
import com.founder.servicebase.logs.OperLog;
import com.founder.servicebase.logs.OperationType;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class EsExtractController {
@Autowired
private EsTbZyJzxxTranslation esTbZyJzxxTranslation;
@Autowired
private EsTbZyKkxxTranslation esTbZyKkxxTranslation;
@Autowired
private EsTbZyCameraTranslation esTbZyCameraTranslation;
@Autowired
private EsSearch esSearch;
@Value("${jz_index}")
private String jz_index;
@Value("${kk_index}")
private String kk_index;
@Value("${camera_index}")
private String camera_index;
//基站
@OperLog(message = "基站es全量抽取",operation = OperationType.QUERY)
@ApiOperation(value = "基站es全量抽取")
@GetMapping("/jzxx")
public MapRestResult jzxx() {
System.out.println("jzxxES开始=========================");
try {
esTbZyJzxxTranslation.jzxxEsSave();
} catch (Exception e) {
e.printStackTrace();
}
int count = (int) esSearch.EScount(jz_index);
return MapRestResult.build(200,"基站数据抽取完成", count);
}
//卡口
@OperLog(message = "卡口es全量抽取",operation = OperationType.QUERY)
@ApiOperation(value = "卡口es全量抽取")
@GetMapping("/kkxx")
public MapRestResult kkxx() {
System.out.println("kkxxES开始=========================");
try {
esTbZyKkxxTranslation.kkxxEsSave();
} catch (Exception e) {
e.printStackTrace();
}
int count = (int) esSearch.EScount(kk_index);
return MapRestResult.build(200,"卡口数据抽取完成",count);
}
//人脸
@ApiOperation(value = "人脸es全量抽取")
@GetMapping("/camera")
public MapRestResult camera() {
System.out.println("cameraES开始=========================");
try {
esTbZyCameraTranslation.cameraEsSave();
} catch (Exception e) {
e.printStackTrace();
}
int count = (int) esSearch.EScount(camera_index);
return MapRestResult.build(200,"人脸数据抽取完成",count);
}
}
package com.founder.eszy.controller;
import com.founder.commonutils.publicEntity.GeographicInfo;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.publicEntity.RequestBean;
import com.founder.eszy.esSearch.EsTbZyCameraTranslationQuery;
import com.founder.eszy.esSearch.EsTbZyJzxxTranslationQuery;
import com.founder.eszy.esSearch.EsTbZyKkxxTranslationQuery;
import com.founder.servicebase.logs.OperLog;
import com.founder.servicebase.logs.OperationType;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@RestController
public class EsQueryController {
@Autowired
private EsTbZyJzxxTranslationQuery esTbZyJzxxTranslationQuery;
@Autowired
private EsTbZyKkxxTranslationQuery esTbZyKkxxTranslationQuery;
@Autowired
private EsTbZyCameraTranslationQuery esTbZyCameraTranslationQuery;
//基站搜索
@OperLog(message = "基站查询",operation = OperationType.QUERY)
@ApiOperation(value = "基站查询")
@RequestMapping(value = "/getTbZyJzxxList",method = RequestMethod.POST)
public MapRestResult getTbZyJzxxList(@RequestBody RequestBean bean) throws Exception {
List<Map<String,Object>> result= new ArrayList<>();
//按区域范围查询es数据
if(bean.getGeographicInfo()!=null&&!StringUtils.isEmpty(bean.getGeographicInfo())){
GeographicInfo geographicInfo =bean.getGeographicInfo();
String distance=geographicInfo.getDistance();
//判断是否是圆
if(distance!=null&&distance!=""){
org.elasticsearch.common.geo.GeoPoint point=geographicInfo.getPoint();
if (distance == null || point == null){
return null;
}
try {
result = esTbZyJzxxTranslationQuery.searchGeoDistance(bean.getIndex(),bean.getType(),geographicInfo.getField(),distance,point);
}catch (Exception e){
e.printStackTrace();
}
return MapRestResult.build(200,"成功查询基站数据",result.size()+"",result);
}else{
try {
result = esTbZyJzxxTranslationQuery.searchGeoPolygon(bean.getIndex(),bean.getType(),geographicInfo.getField(),geographicInfo.getPoints());
}catch (Exception e){
e.printStackTrace();
}
return MapRestResult.build(200,"成功查询基站数据",result.size()+"",result);
}
}
//不带区域信息查询es数据
else{
result = esTbZyJzxxTranslationQuery.searchQuery(bean.getIndex(),bean.getType(),null,null);
return MapRestResult.build(200,"成功查询基站数据",result.size()+"",result);
}
}
//基站搜索
@OperLog(message = "卡口查询",operation = OperationType.QUERY)
@ApiOperation(value = "卡口查询")
@RequestMapping(value = "/getTbZyKkxxList",method = RequestMethod.POST)
public MapRestResult getTbZyKkxxList(@RequestBody RequestBean bean) throws Exception {
List<Map<String,Object>> result= new ArrayList<>();
//按区域范围查询es数据
if(bean.getGeographicInfo()!=null&&!StringUtils.isEmpty(bean.getGeographicInfo())){
GeographicInfo geographicInfo =bean.getGeographicInfo();
String distance=geographicInfo.getDistance();
//判断是否是圆
if(distance!=null&&distance!=""){
org.elasticsearch.common.geo.GeoPoint point=geographicInfo.getPoint();
if (distance == null || point == null){
return null;
}
try {
result = esTbZyKkxxTranslationQuery.searchGeoDistance(bean.getIndex(),bean.getType(),geographicInfo.getField(),distance,point);
}catch (Exception e){
e.printStackTrace();
}
return MapRestResult.build(200,"成功查询卡口数据",result.size()+"",result);
}else{
try {
result = esTbZyKkxxTranslationQuery.searchGeoPolygon(bean.getIndex(),bean.getType(),geographicInfo.getField(),geographicInfo.getPoints());
}catch (Exception e){
e.printStackTrace();
}
return MapRestResult.build(200,"成功查询卡口数据",result.size()+"",result);
}
}
//不带区域信息查询es数据
else{
result = esTbZyKkxxTranslationQuery.searchQuery(bean.getIndex(),bean.getType(),null,null);
return MapRestResult.build(200,"成功查询卡口数据",result.size()+"",result);
}
}
//人脸搜索
@ApiOperation(value = "人脸查询")
@RequestMapping(value = "/getTbZyCameraList",method = RequestMethod.POST)
public MapRestResult getTbZyCameraList(@RequestBody RequestBean bean) throws Exception {
List<Map<String,Object>> result= new ArrayList<>();
//按区域范围查询es数据
if(bean.getGeographicInfo()!=null&&!StringUtils.isEmpty(bean.getGeographicInfo())){
GeographicInfo geographicInfo =bean.getGeographicInfo();
String distance=geographicInfo.getDistance();
//判断是否是圆
if(distance!=null&&distance!=""){
org.elasticsearch.common.geo.GeoPoint point=geographicInfo.getPoint();
if (distance == null || point == null){
return null;
}
try {
result = esTbZyCameraTranslationQuery.searchGeoDistance(bean.getIndex(),bean.getType(),geographicInfo.getField(),distance,point);
}catch (Exception e){
e.printStackTrace();
}
return MapRestResult.build(200,"成功查询人脸数据",result.size()+"",result);
}else{
try {
result = esTbZyCameraTranslationQuery.searchGeoPolygon(bean.getIndex(),bean.getType(),geographicInfo.getField(),geographicInfo.getPoints());
}catch (Exception e){
e.printStackTrace();
}
return MapRestResult.build(200,"成功查询人脸数据",result.size()+"",result);
}
}
//不带区域信息查询es数据
else{
result = esTbZyCameraTranslationQuery.searchQuery(bean.getIndex(),bean.getType(),null,null);
return MapRestResult.build(200,"成功查询人脸数据",result.size()+"",result);
}
}
}
package com.founder.eszy.esExtract;
import com.founder.commonutils.esEntity.TbZyCamera;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.publicEntity.Receiving;
import com.founder.eszy.mapper.TbZyCameraMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Created by chent 20210309 人脸
*/
@Service
public class EsTbZyCameraTranslation {
@Autowired
private TbZyCameraMapper tbZyCameraMapper;
@Autowired
private TbZyCameraEs es;
@Value("${camera_count}")
private int camera_count;
@Value("${camera_limit}")
private int camera_limit;
@Value("${camera_begin}")
private int camera_begin;
@Value("${camera_index}")
private String camera_index;
//批量导入es--------------------------------------------------------------------
public MapRestResult cameraEsSave() throws Exception {
long start = System.currentTimeMillis();
ExecutorService executorService = Executors.newCachedThreadPool();//按需分配线程池
Receiving receiving = new Receiving();
//receiving.setValue("'A01D67B67AA513CFE0530E07920A9B35','A01D67BAC6D613DBE0530E07920A6998'");
//分院
int size =camera_count;
int limit=camera_limit;
//特殊处理
if(limit==0){
limit=1;
}
long threadNum = size / limit;
int startnum = 0;
int endnum = 0;
ExecutorService executorService1 = Executors.newCachedThreadPool();//按需分配线程池
for (int i = camera_begin; i < threadNum + 1; i++) {
startnum = i * limit+1;
endnum = ((i + 1) * limit);
if (startnum > size) {
break;
}
if (endnum >size) {
endnum = size;
}
if (startnum == endnum) {
break;
}
receiving.setBegin(startnum+"");
receiving.setEnd(endnum+"");
//System.out.println("批量分流===========开始"+startnum+"===结束==="+endnum);
List<TbZyCamera> list = tbZyCameraMapper.selectTbZyCameraList(receiving);
System.out.println("批量分流===========开始"+startnum+"===结束==="+endnum+"====总数"+list.size());
// HandleThread thread = new HandleThread(list,camera_index);
//executorService1.execute(thread);
}
return null;
}
class HandleThread extends Thread {
private List<TbZyCamera> data;
private String index;
public HandleThread(List<TbZyCamera> data,String index) {
this.data = data;
this.index=index;
}
public void run() {
es.bulkCommit(data,index);
}
}
}
package com.founder.eszy.esExtract;
import com.founder.commonutils.esEntity.TbZyJz;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.publicEntity.Receiving;
import com.founder.eszy.mapper.TbZyJzxxMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Created by chent 20210309
*/
@Service
public class EsTbZyJzxxTranslation {
@Autowired
private TbZyJzxxMapper tbZyJzxxMapper;
@Autowired
private TbZyJzxxEs es;
@Value("${jz_count}")
private int jz_count;
@Value("${jz_limit}")
private int jz_limit;
@Value("${jz_begin}")
private int jz_begin;
@Value("${jz_index}")
private String jz_index;
//批量导入es--------------------------------------------------------------------
public MapRestResult jzxxEsSave() throws Exception {
long start = System.currentTimeMillis();
ExecutorService executorService = Executors.newCachedThreadPool();//按需分配线程池
Receiving receiving = new Receiving();
//receiving.setValue("'A01D67B67AA513CFE0530E07920A9B35','A01D67BAC6D613DBE0530E07920A6998'");
//分院
int size =jz_count;
int limit=jz_limit;
//特殊处理
if(limit==0){
limit=1;
}
long threadNum = size / limit;
int startnum = 0;
int endnum = 0;
ExecutorService executorService1 = Executors.newCachedThreadPool();//按需分配线程池
for (int i = jz_begin; i < threadNum + 1; i++) {
startnum = i * limit+1;
endnum = ((i + 1) * limit);
if (startnum > size) {
break;
}
if (endnum >size) {
endnum = size;
}
if (startnum == endnum) {
break;
}
receiving.setBegin(startnum+"");
receiving.setEnd(endnum+"");
//System.out.println("批量分流===========开始"+startnum+"===结束==="+endnum);
List<TbZyJz> list = tbZyJzxxMapper.selectTbZyJzxxList(receiving);
System.out.println("批量分流===========开始"+startnum+"===结束==="+endnum+"====总数"+list.size());
HandleThread thread = new HandleThread(list,jz_index);
executorService1.execute(thread);
}
return null;
}
class HandleThread extends Thread {
private List<TbZyJz> data;
private String index;
public HandleThread(List<TbZyJz> data, String index) {
this.data = data;
this.index=index;
}
public void run() {
es.bulkCommit(data,index);
}
}
}
package com.founder.eszy.esExtract;
import com.founder.commonutils.esEntity.TbZyKk;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.publicEntity.Receiving;
import com.founder.eszy.mapper.TbZyKkxxMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Created by chent 20210309
*/
@Service
public class EsTbZyKkxxTranslation {
@Autowired
private TbZyKkxxMapper tbZyKkxxMapper;
@Autowired
private TbZyKkxxEs es;
@Value("${kk_count}")
private int kk_count;
@Value("${kk_limit}")
private int kk_limit;
@Value("${kk_begin}")
private int kk_begin;
@Value("${kk_index}")
private String kk_index;
//批量导入es--------------------------------------------------------------------
public MapRestResult kkxxEsSave() throws Exception {
long start = System.currentTimeMillis();
ExecutorService executorService = Executors.newCachedThreadPool();//按需分配线程池
Receiving receiving = new Receiving();
//receiving.setValue("'A01D67B67AA513CFE0530E07920A9B35','A01D67BAC6D613DBE0530E07920A6998'");
//分院
int size =kk_count;
int limit=kk_limit;
//特殊处理
if(limit==0){
limit=1;
}
long threadNum = size / limit;
int startnum = 0;
int endnum = 0;
ExecutorService executorService1 = Executors.newCachedThreadPool();//按需分配线程池
for (int i = kk_begin; i < threadNum + 1; i++) {
startnum = i * limit+1;
endnum = ((i + 1) * limit);
if (startnum > size) {
break;
}
if (endnum >size) {
endnum = size;
}
if (startnum == endnum) {
break;
}
receiving.setBegin(startnum+"");
receiving.setEnd(endnum+"");
//System.out.println("批量分流===========开始"+startnum+"===结束==="+endnum);
List<TbZyKk> list = tbZyKkxxMapper.selectTbZyKkxxList(receiving);
System.out.println("批量分流===========开始"+startnum+"===结束==="+endnum+"====总数"+list.size());
HandleThread thread = new HandleThread(list,kk_index);
executorService1.execute(thread);
}
return null;
}
class HandleThread extends Thread {
private List<TbZyKk> data;
private String index;
public HandleThread(List<TbZyKk> data, String index) {
this.data = data;
this.index=index;
}
public void run() {
es.bulkCommit(data,index);
}
}
}
package com.founder.eszy.esExtract;
import com.founder.commonutils.esEntity.TbZyJz;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by chentian on 2021-3-9
*/
@Service
public class TbZyJzxxEs {
/**
* 一 创建索引方法 批量提交时 调这个方法
*/
// model 索引前缀名 比如 user
// reportTime 当前入库日期 比如20200514
// 组合起来就是 user-20200514
// 查询的时候如果想查所有user 索引名称可以是:user-*
//createESIndex(model + "-" + reportTime);
@Autowired
private Client esClient;
public void createESIndex(String indexName) {
IndicesExistsResponse response = esClient.admin().indices()
.exists(new IndicesExistsRequest().indices(new String[] { indexName })).actionGet();
if (response.isExists()) {
return;
}
Map<String, Object> setting = new HashMap<String, Object>();
setting.put("number_of_shards", 3);//这个自己设个数吧。我也没搞清应该设置成多少合适。你设置成3-5比较合适。
setting.put("max_result_window", 10000000);
setting.put("number_of_replicas", 2); //根据需求配置。尽量不要设置为0。可以设置成es集群机器数量
//setting.put("refresh_interval", "120s"); //你这儿不需要配置
CreateIndexRequestBuilder cib = esClient.admin().indices().prepareCreate(indexName).setSettings(setting);
// 这些都是字段名
XContentBuilder mapping = null;
try {
mapping = XContentFactory.jsonBuilder().startObject().startObject("pointdata")//这是type
.startObject("properties")// <br>//不动
/**
* 底下这些是字段 ctrl+shift+u
* .field("index", false) 不建立索引,凡是查询条件,建议加上索引,提升查询速度
*/
.startObject("lac").field("type", "keyword").endObject()//小区号
.startObject("cid").field("type", "keyword").endObject()//基站编码
.startObject("x").field("type", "keyword").field("index", false).endObject()
.startObject("y").field("type", "keyword").field("index", false).endObject()
.startObject("xy").field("type", "geo_point").endObject()//经纬度特殊处理
.startObject("lonLat").field("type", "keyword").field("index", false).endObject()
.startObject("mark").field("type", "keyword").field("index", false).endObject()
.startObject("xzqh").field("type", "keyword").endObject()
//搜索查询
.startObject("xzqhDz").field("type", "keyword").endObject()
.startObject("province").field("type", "keyword").endObject()
.startObject("city").field("type", "keyword").endObject()
.startObject("district").field("type", "keyword").endObject()
//更新时间
// .startObject("updatedtime").field("type", "keyword").endObject()//修改时间
.endObject().endObject().endObject();
cib.addMapping("pointdata", mapping);
cib.execute().actionGet();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 二 插入数据
*/
//查询oracle
// 如果有id,可以根据where条件 每次查一万条数据(10000>id>=1,20000>id>=10000。写个计算方法) 放到list里。
//起个多线程。每个线程去执行这一万条数据
/* for(int i=0;i<1000;i++){
String sql = "";
//调查询
List<E> result = ;//查询结果
//调用批量bulk提交方法
bulkCommit(result);
}
}*/
/**
* 批量提交方法
* @param result
*/
public String bulkCommit(List<TbZyJz> result, String indexName) {
for (TbZyJz e : result) {
try {
createESIndex(indexName);
BulkRequestBuilder bulkRequest = esClient.prepareBulk();
Map<String, Object> map = new HashMap<String, Object>();
//对应es字段
map.put("cid", e.getCid());//基站编码
map.put("lac",e.getLac());
map.put("x",e.getX());
map.put("y",e.getY());
map.put("lonLat",e.getLonLat());
map.put("mark",e.getMark());
map.put("xzqh",e.getXzqh());
map.put("xzqhDz",e.getXzqhDz());
map.put("province",e.getProvince());
map.put("city",e.getCity());
map.put("district",e.getDistrict());
//es 特需
map.put("xy",e.getY()+","+e.getX());
bulkRequest.add(esClient.prepareIndex(indexName, "pointdata",e.getCid()).setSource(map));//type(pointdata)
bulkRequest.execute().actionGet();
} catch (Exception e1 ) {
e1.printStackTrace();
}
}
return "true";
}
}
\ No newline at end of file
package com.founder.eszy.esExtract;
import com.founder.commonutils.esEntity.TbZyKk;
import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
import org.elasticsearch.action.bulk.BulkRequestBuilder;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by chentian on 2021-3-9
*/
@Service
public class TbZyKkxxEs {
/**
* 一 创建索引方法 批量提交时 调这个方法
*/
// model 索引前缀名 比如 user
// reportTime 当前入库日期 比如20200514
// 组合起来就是 user-20200514
// 查询的时候如果想查所有user 索引名称可以是:user-*
//createESIndex(model + "-" + reportTime);
@Autowired
private Client esClient;
public void createESIndex(String indexName) {
IndicesExistsResponse response = esClient.admin().indices()
.exists(new IndicesExistsRequest().indices(new String[] { indexName })).actionGet();
if (response.isExists()) {
return;
}
Map<String, Object> setting = new HashMap<String, Object>();
setting.put("number_of_shards", 3);//这个自己设个数吧。我也没搞清应该设置成多少合适。你设置成3-5比较合适。
setting.put("max_result_window", 10000000);
setting.put("number_of_replicas", 2); //根据需求配置。尽量不要设置为0。可以设置成es集群机器数量
//setting.put("refresh_interval", "120s"); //你这儿不需要配置
CreateIndexRequestBuilder cib = esClient.admin().indices().prepareCreate(indexName).setSettings(setting);
// 这些都是字段名
XContentBuilder mapping = null;
try {
mapping = XContentFactory.jsonBuilder().startObject().startObject("pointdata")//这是type
.startObject("properties")// <br>//不动
/**
* 底下这些是字段 ctrl+shift+u
* .field("index", false) 不建立索引,凡是查询条件,建议加上索引,提升查询速度
*/
.startObject("myIdHash").field("type", "keyword").endObject().field("index", false).endObject()
.startObject("myValueMd5").field("type", "keyword").endObject().field("index", false).endObject()
.startObject("myCreateDate").field("type", "keyword").endObject().field("index", false).endObject()
.startObject("id").field("type", "keyword").endObject()//主键,卡口id
.startObject("code").field("type", "keyword").endObject()//卡口编码
.startObject("name").field("type", "keyword").endObject()
.startObject("type").field("type", "keyword").endObject()
.startObject("ext").field("type", "keyword").endObject()
.startObject("orgunitid").field("type", "keyword").endObject()
.startObject("x").field("type", "keyword").field("index", false).endObject()
.startObject("y").field("type", "keyword").field("index", false).endObject()
.startObject("xy").field("type", "geo_point").endObject()//经纬度特殊处理
.startObject("orderno").field("type", "keyword").field("index", false).endObject()
.startObject("mappingid").field("type", "keyword").field("index", false).endObject()
.startObject("sjgxsj").field("type", "keyword").field("index", false).endObject().endObject()
.startObject("preFormatSjgxsj").field("type", "keyword").endObject().field("index", false).endObject()
.startObject("etlTimeTar").field("type", "keyword").endObject().field("index", false).endObject()
.startObject("preFormatEtlTimeTar").field("type", "keyword").endObject().field("index", false).endObject()
//更新时间
// .startObject("updatedtime").field("type", "keyword").endObject()//修改时间
.endObject().endObject().endObject();
cib.addMapping("pointdata", mapping);
cib.execute().actionGet();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 二 插入数据
*/
//查询oracle
// 如果有id,可以根据where条件 每次查一万条数据(10000>id>=1,20000>id>=10000。写个计算方法) 放到list里。
//起个多线程。每个线程去执行这一万条数据
/* for(int i=0;i<1000;i++){
String sql = "";
//调查询
List<E> result = ;//查询结果
//调用批量bulk提交方法
bulkCommit(result);
}
}*/
/**
* 批量提交方法
* @param result
*/
public String bulkCommit(List<TbZyKk> result, String indexName) {
for (TbZyKk e : result) {
try {
createESIndex(indexName);
BulkRequestBuilder bulkRequest = esClient.prepareBulk();
Map<String, Object> map = new HashMap<String, Object>();
//对应es字段
map.put("myIdHash", e.getMyIdHash());
map.put("myValueMd5",e.getMyValueMd5());
map.put("myCreateDate",e.getMyCreateDate());
map.put("id",e.getId());//主键
map.put("code",e.getCode());
map.put("name",e.getName());
map.put("type",e.getType());
map.put("ext",e.getExt());
map.put("orgunitid",e.getOrgunitid());
map.put("x",e.getX());
map.put("y",e.getY());
map.put("orderno",e.getOrderno());
map.put("mappingid",e.getMappingid());
map.put("sjgxsj",e.getSjgxsj());
map.put("preFormatSjgxsj",e.getPreFormatSjgxsj());
map.put("etlTimeTar",e.getEtlTimeTar());
map.put("preFormatEtlTimeTar",e.getPreFormatEtlTimeTar());
//es 特需
map.put("xy",e.getY()+","+e.getX());
bulkRequest.add(esClient.prepareIndex(indexName, "pointdata",e.getId()).setSource(map));//type(pointdata)
bulkRequest.execute().actionGet();
} catch (Exception e1 ) {
e1.printStackTrace();
}
}
return "true";
}
}
\ No newline at end of file
package com.founder.eszy.esSearch;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHits;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by admin on 2020/5/14.
*/
@Service
public class EsSearch {
/**
* 一 创建索引方法 批量提交时 调这个方法
*/
// model 索引前缀名 比如 user
// reportTime 当前入库日期 比如20200514
// 组合起来就是 user-20200514
// 查询的时候如果想查所有user 索引名称可以是:user-*
//createESIndex(model + "-" + reportTime);
@Autowired
private Client esClient;
public long EScount(String index) {
//添加查询条件
SearchRequestBuilder searchRequestBuilder = esClient.prepareSearch(index)
.setTypes("pointdata")
.setQuery(QueryBuilders.matchAllQuery())
.setSize(10000);
SearchResponse response= searchRequestBuilder.get();
SearchHits hits=response.getHits();
long total=hits.getTotalHits();
return total;
}
}
\ No newline at end of file
package com.founder.eszy.esSearch;
import org.springframework.stereotype.Service;
/**
* Created by chent on 2021-3-9
*/
@Service
public class EsTbZyCameraTranslationQuery extends EsTranslationQuery{
}
package com.founder.eszy.esSearch;
import org.springframework.stereotype.Service;
/**
* Created by chent on 2021-3-9
*/
@Service
public class EsTbZyJzxxTranslationQuery extends EsTranslationQuery{
}
package com.founder.eszy.esSearch;
import org.springframework.stereotype.Service;
/**
* Created by chent on 2021-3-9
*/
@Service
public class EsTbZyKkxxTranslationQuery extends EsTranslationQuery{
}
package com.founder.eszy.esSearch;
import org.elasticsearch.action.search.SearchRequestBuilder;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.GeoPolygonQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.sort.GeoDistanceSortBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Created by chent on 2021-3-9
*/
@Service
public class EsTranslationQuery {
@Autowired
private QueryFactory factory;
@Autowired
private Client client;
private static Logger logger = LoggerFactory.getLogger(EsTranslationQuery.class);
/**
* 查找位于多边形中的位置
* @param index 索引
* @param type 类型
* @param field 索引字段
* @param points 构成多边形的点
*/
public List<Map<String, Object>> searchGeoPolygon(String index, String type, String field, List<GeoPoint> points) throws Exception {
GeoPolygonQueryBuilder qb = factory.builtPolygonQuery(field, points);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.filter(qb);
return searchQuery(index, type, boolQueryBuilder,null);
}
/**
* 查询距离中心点指定的范围内的位置
* @param index index
* @param type type
* @param field 索引字段
* @param distance 距离
* @param point 中心点
* @return
* @throws Exception
*/
public List<Map<String, Object>> searchGeoDistance(String index, String type, String field, String distance, GeoPoint point) throws Exception {
Map<String, Object> map = factory.builtDistanceQuery(field, distance, point);
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
QueryBuilder qb = (QueryBuilder) map.get("qb");
//按距离排序
GeoDistanceSortBuilder sort = (GeoDistanceSortBuilder) map.get("sort");
boolQueryBuilder.filter(qb);
return searchQuery(index, type, boolQueryBuilder,sort);
}
/**
* 基础查询
* @param index 索引
* @param type type
* @return List<Map>
*/
public List<Map<String, Object>> searchQuery(String index, String type, BoolQueryBuilder boolQueryBuilder, GeoDistanceSortBuilder sort) {
//基础查询不带空间检索
if(boolQueryBuilder==null&& StringUtils.isEmpty(boolQueryBuilder)) {
BoolQueryBuilder bq = QueryBuilders.boolQuery();
return search(index, type, bq, sort);
}else{
//基础查询带空间检索
return search(index, type, boolQueryBuilder, sort);
}
}
/**
* 执行查询
* @param index 索引
* @param type type
* @param builder 查询语句
* @return List<Map>
*/
private List<Map<String, Object>> search(String index, String type, BoolQueryBuilder builder, GeoDistanceSortBuilder sort) {
try {
List<Map<String, Object>> list = new ArrayList<>();
SearchRequestBuilder srb = client.prepareSearch(index).setSize(900000);
if (type != null && type.length() != 0){
srb.setTypes(type);
}
String falg="";
if (sort != null && !StringUtils.isEmpty(sort)) {
srb.addSort(sort);
//用于区分 要距离排序还要时间
falg="1";
}
srb.setQuery(builder);
SearchResponse searchResponse = srb.execute().actionGet();
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits) {
Map<String, Object> map = hit.getSourceAsMap();
if (falg.equals("1")){
BigDecimal geoDis = new BigDecimal((Double) hit.getSortValues()[0]);
map.put("距离",geoDis.setScale(4, BigDecimal.ROUND_HALF_DOWN)+"km");
}
list.add(map);
logger.info("hits:" + map);
}
return list;
} catch (Exception e) {
logger.error("error!", e);
}
return null;
}
}
package com.founder.eszy.esSearch;
import org.elasticsearch.common.geo.GeoPoint;
import org.elasticsearch.common.unit.DistanceUnit;
import org.elasticsearch.index.query.GeoBoundingBoxQueryBuilder;
import org.elasticsearch.index.query.GeoPolygonQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.sort.GeoDistanceSortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by admin on 2020/5/18.
*/
@Service
public class QueryFactory {
/**
* 针对geo_point类型的查找,查询符合多边形内的数据
* @param field
* @param points
* @return
* @throws Exception
*/
public GeoPolygonQueryBuilder builtPolygonQuery(String field, List<GeoPoint> points) throws Exception {
if (points == null || points.size() <= 0) {
throw new Exception("bad args of geo points");
}
GeoPolygonQueryBuilder qb = QueryBuilders.geoPolygonQuery(field, points);
return qb;
}
/**
* 针对geo_point类型
* 获取在指定矩形框内的数据
* @param field 字段
* @param point1 矩形左上边界
* @param point2 矩形右下边界
* @return
* @throws Exception
*/
public GeoBoundingBoxQueryBuilder builtBoundingBoxQuery(String field, GeoPoint point1, GeoPoint point2) throws Exception {
if (point1 == null || point2 == null) {
throw new Exception("bad args of geo points");
}
GeoBoundingBoxQueryBuilder qb = QueryBuilders.geoBoundingBoxQuery(field)
.setCorners(point2,point1);
return qb;
}
/**
* 针对geo_point类型
* 查找在给定的中心点确定范围内的数据
* @param field
* @param distance
* @param point
* @return
* @throws Exception
*/
public Map<String,Object> builtDistanceQuery(String field, String distance, GeoPoint point) throws Exception {
if (point == null) {
throw new Exception("bad args of geo points");
}
QueryBuilder qb = QueryBuilders.geoDistanceQuery(field)
.point(point)
.distance(distance, DistanceUnit.KILOMETERS);
GeoDistanceSortBuilder sort = SortBuilders.geoDistanceSort(field,point)
.order(SortOrder.ASC)
.unit(DistanceUnit.KILOMETERS);
Map<String,Object> map=new HashMap<>();
map.put("qb",qb);
map.put("sort",sort);
return map;
}
}
package com.founder.eszy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.esEntity.TbZyCamera;
import com.founder.commonutils.publicEntity.Receiving;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* Created by chent 2021-3-9
*/
@Mapper
public interface TbZyCameraMapper extends BaseMapper<TbZyCamera> {
List<TbZyCamera> selectTbZyCameraList(Receiving receiving);
}
package com.founder.eszy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.esEntity.TbZyJz;
import com.founder.commonutils.publicEntity.Receiving;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* Created by chent 2021-3-9
*/
@Mapper
public interface TbZyJzxxMapper extends BaseMapper<TbZyJz> {
List<TbZyJz> selectTbZyJzxxList(Receiving receiving);
}
package com.founder.eszy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.esEntity.TbZyKk;
import com.founder.commonutils.publicEntity.Receiving;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author chent
* @since 2021-03-10
*/
@Mapper
public interface TbZyKkxxMapper extends BaseMapper<TbZyKk> {
List<TbZyKk> selectTbZyKkxxList(Receiving receiving);
}
<?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.founder.eszy.mapper.TbZyCameraMapper">
<select id="selectTbZyCameraList" parameterType="com.founder.commonutils.publicEntity.Receiving" resultType="com.founder.commonutils.esEntity.TbZyCamera">
select t2.* from(
select t1.*,rownum as rn from
(
SELECT *
FROM tb_zy_camera WHERE
x is not null and y is not null
) t1
<where>
rownum<![CDATA[ <= ]]> #{ end , jdbcType=VARCHAR }
</where>
)t2
<where>
rn<![CDATA[ >= ]]> #{ begin, jdbcType=VARCHAR }
</where>
</select>
</mapper>
\ 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.founder.eszy.mapper.TbZyJzxxMapper">
<select id="selectTbZyJzxxList" parameterType="com.founder.commonutils.publicEntity.Receiving" resultType="com.founder.commonutils.esEntity.TbZyJz">
select t2.* from(
select t1.*,rownum as rn from
(
SELECT *
FROM tb_zy_jz WHERE
x is not null and y is not null
) t1
<where>
rownum<![CDATA[ <= ]]> #{ end , jdbcType=VARCHAR }
</where>
)t2
<where>
rn<![CDATA[ >= ]]> #{ begin, jdbcType=VARCHAR }
</where>
</select>
</mapper>
\ 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.founder.eszy.mapper.TbZyKkxxMapper">
<select id="selectTbZyKkxxList" parameterType="com.founder.commonutils.publicEntity.Receiving" resultType="com.founder.commonutils.esEntity.TbZyKk">
select t2.* from(
select t1.*,rownum as rn from
(
SELECT *
FROM tb_zy_kk WHERE
x is not null and y is not null
) t1
<where>
rownum<![CDATA[ <= ]]> #{ end , jdbcType=VARCHAR }
</where>
)t2
<where>
rn<![CDATA[ >= ]]> #{ begin, jdbcType=VARCHAR }
</where>
</select>
</mapper>
\ No newline at end of file
package com.founder.eszy.service;
import com.founder.commonutils.esEntity.TbZyCamera;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 服务类
* </p>
*
* @author chent
* @since 2021-04-09
*/
public interface TbZyCameraService extends IService<TbZyCamera> {
}
package com.founder.eszy.service.impl;
import com.founder.commonutils.esEntity.TbZyCamera;
import com.founder.eszy.mapper.TbZyCameraMapper;
import com.founder.eszy.service.TbZyCameraService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author chent
* @since 2021-04-09
*/
@Service
public class TbZyCameraServiceImpl extends ServiceImpl<TbZyCameraMapper, TbZyCamera> implements TbZyCameraService {
}
#配置中心地址
spring.cloud.nacos.config.server-addr=47.92.48.137:8848
spring.cloud.nacos.discovery.server-addr=47.92.48.137:8848
#spring.cloud.nacos.config.server-addr=26.3.13.184:8848
#spring.cloud.nacos.discovery.server-addr=26.3.13.184:8848
spring.profiles.active=dev
# 该配置影响统一配置中心中的dataId
spring.application.name=es
spring.cloud.nacos.config.namespace=dev
#spring.cloud.nacos.config.ext-config[0].data-id=image.properties
# 开启动态刷新配置,否则配置文件修改,工程无法感知
#spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.shared-dataids=espz.properties
spring.cloud.nacos.config.refreshable-dataids=espz.properties
management.health.elasticsearch.enabled: false
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>service</artifactId>
<groupId>com.founder</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>image</artifactId>
</project>
\ No newline at end of file
package com.founder.image;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//排除自动配置
@ComponentScan(basePackages = {"com.founder"})
@EnableDiscoveryClient
@EnableFeignClients
public class ImageApplication {
@Autowired
private RestTemplateBuilder restTemplateBuilder;
public static void main(String[] args) {
SpringApplication.run(ImageApplication.class, args);
}
@Bean
public RestTemplate restTemplate(){return restTemplateBuilder.build();}
}
package com.founder.image.controller;
import com.founder.commonutils.peopleEntity.CameraFaceTask;
import com.founder.commonutils.peopleEntity.FaceSearchParam;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.image.service.ImageService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* Created by Founder on 2021/4/14.
*/
@Api(description = "第三方图像接口管理-云天励飞")
@RestController
@RequestMapping("/")
@Component
public class ImageController {
@Autowired
private ImageService imageService;
// 人脸动态检索接口接口
@PostMapping(value = "/getFaceImageByUploadImage")
public MapRestResult getFaceIdsByUploadImage(@RequestPart(value = "files",required = true) MultipartFile[] files, FaceSearchParam faceSearchParam) {
MapRestResult result=imageService.getFaceImageByUploadImage(files,faceSearchParam);
return result;
}
// 人像回溯接口
@PostMapping(value = "/sendTask")
public MapRestResult sendTask(@RequestBody CameraFaceTask cameraFaceTask) {
MapRestResult result=imageService.sendTask(cameraFaceTask);
return result;
}
}
package com.founder.image.service;
import com.founder.commonutils.peopleEntity.CameraFaceTask;
import com.founder.commonutils.peopleEntity.FaceSearchParam;
import com.founder.commonutils.publicEntity.MapRestResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
/**
* Created by Founder on 2021/4/14.
*/
@FeignClient("imageapi")
public interface ImageService {
//人脸动态检索接口
@PostMapping(value = "/image/getFaceImageByUploadImage")
public MapRestResult getFaceImageByUploadImage(@RequestPart(value = "files",required = true) MultipartFile[] files, @RequestParam(value = "faceSearchParam") FaceSearchParam faceSearchParam);
//人像回溯接口
@PostMapping(value = "/image/sendTask")
public MapRestResult sendTask(@RequestBody CameraFaceTask cameraFaceTask) ;
}
#配置中心地址
spring.cloud.nacos.config.server-addr=47.92.48.137:8848
spring.cloud.nacos.discovery.server-addr=47.92.48.137:8848
spring.profiles.active=dev
# 该配置影响统一配置中心中的dataId
spring.application.name=image
#dev
spring.cloud.nacos.config.namespace=dev
#prod
#spring.cloud.nacos.config.namespace=1ffd9d32-3f03-4eb8-bf12-98b1ce397390
#spring.cloud.nacos.config.ext-config[0].data-id=image.properties
# 开启动态刷新配置,否则配置文件修改,工程无法感知
#spring.cloud.nacos.config.ext-config[0].refresh=true
......@@ -10,10 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<modules>
<module>asj</module>
<module>publicapi</module>
<module>es</module>
<module>image</module>
<module>view</module>
<module>zuul</module>
</modules>
<artifactId>service</artifactId>
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>service</artifactId>
<groupId>com.founder</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>publicapi</artifactId>
<build>
<finalName>publicapi</finalName>
</build>
</project>
\ No newline at end of file
package com.founder.publicapi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages = {"com.founder"})
public class PublicapiApplication {
public static void main(String[] args) {
SpringApplication.run(PublicapiApplication.class, args);
}
}
package com.founder.publicapi.config;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.founder.publicapi.mapper")
public class EduConfig {
/**
* 逻辑删除插件
*/
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
package com.founder.publicapi.controller;
import com.alibaba.fastjson.JSONObject;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.publicEntity.SysUsers;
import com.founder.commonutils.util.Base64Util;
import com.founder.commonutils.util.JwtUser;
import com.founder.publicapi.service.SysUsersService;
import com.founder.servicebase.logs.OperLog;
import com.founder.servicebase.logs.OperationType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
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.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import static com.founder.commonutils.util.AesEncryptUtil.desEncrypt;
@Api(description = "全国人员常口接口")
@RestController
@RequestMapping(value = "/users")
public class SysUsersController {
@Autowired
private SysUsersService sysUsersService;
//-----------新版jwt login登录
@ApiOperation(value = "登录")
// @OperLog(message = "登录",operation = OperationType.LOGIN)
@PostMapping("/login")
public MapRestResult login(@RequestBody SysUsers sysUsers, HttpServletRequest request, HttpServletResponse response) throws Exception {
//使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同!
String KEY = "maplogin20200416";
String IV = "map_vues20200416";
String Password = "";
String Username = "";
if (!sysUsers.getPassword().equals("") || !sysUsers.getUsername().equals("")) {
Password = desEncrypt(sysUsers.getPassword(), KEY, IV).trim();
Username = desEncrypt(sysUsers.getUsername(), KEY, IV).trim();
//获取到密码之后,base64 加密去库里进行查询,
sysUsers.setPassword(Base64Util.encode(Password));
sysUsers.setUsername(Username);
MapRestResult mapRestResult = sysUsersService.getUsersByNamePassword(sysUsers, request);
if (mapRestResult.getStatus().equals(200) && mapRestResult.getData() != null) {
List<SysUsers> sysUsersList = (List<SysUsers>) mapRestResult.getData();
if (sysUsersList.size() > 0) {
JSONObject jsonObject1 = (JSONObject) JSONObject.toJSON(sysUsersList.get(0));
JwtUser util = new JwtUser();
//用户JWT生成token
String token = util.createJWT(jsonObject1.toString());
// return MapRestResult.build(200,"登陆成功",token);
mapRestResult.setMsg(token);
return mapRestResult;
} else {
mapRestResult.setMsg("用户不存在");
return mapRestResult;
}
}
} else {
return MapRestResult.build(500,"传入参数为空",null);
}
return MapRestResult.build(500,"登录失败",null);
}
}
package com.founder.publicapi.mapper;
import com.founder.commonutils.publicEntity.TbAsjAndZbFzXyrAndQgCkXx;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* <p>
* 案事件基本信息 Mapper 接口
* </p>
*
* @author yangyang
* @since 2021-03-30
*/
@Mapper
public interface AsjXyrMapper {
List<TbAsjAndZbFzXyrAndQgCkXx> listAsjAndXyr(@Param("begin") String begin, @Param("end") String end, @Param("zhfzxyrXm") String zhfzxyrXm, @Param("zhfzxyrZjhm") String zhfzxyrZjhm, @Param("sjaq") String sjaq, @Param("asjbh") String asjbh, @Param("ajlb") String ajlb, @Param("zhfzxyrXb") String zhfzxyrXb, @Param("sjbq") String sjbq);
List<TbAsjAndZbFzXyrAndQgCkXx> listAsjAndXyrAll(@Param("zhfzxyrXm") String zhfzxyrXm, @Param("zhfzxyrZjhm") String zhfzxyrZjhm, @Param("sjaq") String sjaq, @Param("asjbh") String asjbh, @Param("ajlb") String ajlb, @Param("zhfzxyrXb") String zhfzxyrXb, @Param("sjbq") String sjbq);
List<TbAsjAndZbFzXyrAndQgCkXx> listAsjAndXyrCount(@Param("zhfzxyrXm") String zhfzxyrXm, @Param("zhfzxyrZjhm") String zhfzxyrZjhm, @Param("sjaq") String sjaq, @Param("asjbh") String asjbh, @Param("ajlb") String ajlb, @Param("zhfzxyrXb") String zhfzxyrXb, @Param("sjbq") String sjbq);
Integer listAsjAndXyrCounts(@Param("zhfzxyrXm") String zhfzxyrXm, @Param("zhfzxyrZjhm") String zhfzxyrZjhm, @Param("sjaq") String sjaq, @Param("asjbh") String asjbh, @Param("ajlb") String ajlb, @Param("zhfzxyrXb") String zhfzxyrXb, @Param("sjbq") String sjbq);
List<Map> getAjlb(@Param("begin") String begin, @Param("end") String end, @Param("zhfzxyrXm") String zhfzxyrXm, @Param("zhfzxyrZjhm") String zhfzxyrZjhm, @Param("sjaq") String sjaq, @Param("asjbh") String asjbh, @Param("ajlb") String ajlb, @Param("zhfzxyrXb") String zhfzxyrXb, @Param("sjbq") String sjbq);
List<Map> getxb(@Param("begin") String begin, @Param("end") String end, @Param("zhfzxyrXm") String zhfzxyrXm, @Param("zhfzxyrZjhm") String zhfzxyrZjhm, @Param("sjaq") String sjaq, @Param("asjbh") String asjbh, @Param("ajlb") String ajlb, @Param("zhfzxyrXb") String zhfzxyrXb, @Param("sjbq") String sjbq);
List<Map> getSjbq(@Param("begin") String begin, @Param("end") String end, @Param("zhfzxyrXm") String zhfzxyrXm, @Param("zhfzxyrZjhm") String zhfzxyrZjhm, @Param("sjaq") String sjaq, @Param("asjbh") String asjbh, @Param("ajlb") String ajlb, @Param("zhfzxyrXb") String zhfzxyrXb, @Param("sjbq") String sjbq);
boolean updateSjbqByAsjbh(TbAsjAndZbFzXyrAndQgCkXx tbAsjAndZbFzXyrAndQgCkXx);
}
package com.founder.publicapi.mapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.Map;
@Mapper
public interface SysDictitemMapper {
String getNameByCode(Map<String, String> map);
}
package com.founder.publicapi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.publicEntity.SysUsers;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 用户登录 Mapper 接口
* </p>
*
* @author Guojunfeng
* @since 2021-03-11
*/
@Mapper
public interface SysUsersMapper extends BaseMapper<SysUsers> {
List<SysUsers> getUsersByNamePassword(@Param("username") String username, @Param("password") String password);
}
package com.founder.publicapi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.publicEntity.TbXwZbFzXyr;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* <p>
* 案事件基本信息 Mapper 接口
* </p>
*
* @author yangyang
* @since 2021-03-30
*/
@Mapper
public interface ZhfzxyrMapper extends BaseMapper<TbXwZbFzXyr> {
List<TbXwZbFzXyr> listXyr();
}
package com.founder.publicapi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.publicEntity.TbXwZbFzXyr;
import com.founder.commonutils.publicEntity.TbXwZbFzXyrQgCkXx;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* <p>
* 案事件基本信息 Mapper 接口
* </p>
*
* @author yangyang
* @since 2021-03-30
*/
@Mapper
public interface ZhfzxyrQgckMapper extends BaseMapper<TbXwZbFzXyrQgCkXx> {
}
<?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.founder.publicapi.mapper.AsjXyrMapper">
<sql id="asjSql-where">
<if test="zhfzxyrXm!=null and zhfzxyrXm!=''">and c.zhfzxyr_Xm LIKE '%' || #{zhfzxyrXm , jdbcType=VARCHAR } || '%'</if>
<if test="zhfzxyrZjhm!=null and zhfzxyrZjhm!=''">and b.zhfzxyr_Cyzj_Zjhm = #{zhfzxyrZjhm}</if>
<if test="asjbh!=null and asjbh!=''">and a.asjbh LIKE '%' || #{asjbh , jdbcType=VARCHAR } || '%'</if>
<if test="ajlb!= null and ajlb!=''">
AND a.AJLBDM= #{ ajlb , jdbcType=VARCHAR }
</if>
<if test="sjaq!= null and sjaq!=''">
AND a.JYAQ LIKE '%' || #{sjaq , jdbcType=VARCHAR } || '%'
</if>
<if test="zhfzxyrXb!= null and zhfzxyrXb!=''">
AND c.ZHFZXYR_XB = #{zhfzxyrXb , jdbcType=VARCHAR }
</if>
<if test="zhfzxyrXb == '空'.toString()">
AND c.ZHFZXYR_XB = #{zhfzxyrXb , jdbcType=VARCHAR }
</if>
<if test="sjbq!= null and sjbq!=''">
AND a.sjbq = #{sjbq , jdbcType=VARCHAR }
</if>
AND ( a.JYAQ LIKE '%军队%'
OR a.JYAQ LIKE '%军人%'
OR a.JYAQ LIKE '%部队%'
OR a.JYAQ LIKE '%军事%'
OR a.JYAQ LIKE '%武器%'
OR a.JYAQ LIKE '%俘虏%'
OR a.JYAQ LIKE '%营区%')
</sql>
<select id="listAsjAndXyr" parameterType="java.lang.String" resultType="com.founder.commonutils.publicEntity.TbAsjAndZbFzXyrAndQgCkXx">
select * from(
select t.*,rownum rn from(
select a.asjbh,a.jyaq as jyaq,
a.ajlbdm as ajlbdm,
(select name from sys_dictitem where groupid = 'CODE_AJLB' and code = a.ajlbdm) as ajlbdmMc,
a.ladw_Gajgjgdm as ladwGajgjgdm,
(select name from sys_dictitem where groupid = 'CODE_QGUNIT' and code = a.ladw_Gajgjgdm) as ladwGajgjgdmMc,
TO_CHAR(a.larq,'YYYY-MM-DD hh24:mi:ss') as larq,
TO_CHAR(a.fxasjsj,'YYYY-MM-DD hh24:mi:ss') as fxasjsj,
a.fxasjdd_Xzqhdm as fxasjddXzqhdm,
(select name from sys_dictitem where groupid = 'CODE_XZQH' and code = a.fxasjdd_Xzqhdm) as fxasjddXzqhdmMc,
a.zbr_Xm as zbrXm,
a.zbr_Lxdh as zbrLxdh,
TO_CHAR(a.gxsj,'YYYY-MM-DD hh24:mi:ss') as gxsj,
a.zatz_Jyqk as zatzJyqk,
(select name from sys_dictitem where groupid = 'CODE_ZATZ' and code = a.zatz_Jyqk) as zatzJyqkMc,
TO_CHAR(a.zczj_Zxsj01,'YYYY-MM-DD hh24:mi:ss') as zczjZxsj01,
TO_CHAR(a.asjfssj_Asjfskssj,'YYYY-MM-DD hh24:mi:ss') as asjfssjAsjfskssj,
TO_CHAR(a.asjfssj_Asjfsjssj,'YYYY-MM-DD hh24:mi:ss') as asjfssjAsjfsjssj,
a.asjfsdd_Xzqhdm as asjfsddXzqhdm,
(select name from sys_dictitem where groupid = 'CODE_XZQH' and code = a.asjfsdd_Xzqhdm) as asjfsddXzqhdmMc,
a.zcjddm as zcjddm,
(select name from sys_dictitem where groupid = 'CODE_ZCJDDM' and code = a.zcjddm) as zcjddmMc,
a.ladw_gajgMc as ladwgajgMc,
b.zhfzxyr_Cyzj_Zjhm as zhfzxyrCyzjZjhm,
TO_CHAR(b.zhrq,'YYYY-MM-DD hh24:mi:ss') as zhrq,
b.zhdw_Gajgjgdm as zhdwGajgjgdm,
(select name from sys_dictitem where groupid = 'CODE_QGUNIT' and code = b.zhdw_Gajgjgdm) as zhdwGajgjgdmMc,
b.zhfzxyr_Szzwbh as zhfzxyrSzzwbh,
b.zhfzxyr_Rydnabh as zhfzxyrRydnabh,
c.zhfzxyr_Xm as zhfzxyrXm,
to_char(TO_Date(c.zhfzxyr_Csrq,'YYYY-MM-DD hh24:mi:ss'),'yyyy-mm-dd') as zhfzxyrCsrq,
c.zhfzxyr_Img as zhfzxyrImg,
c.zhfzxyr_Mz as zhfzxyrMz,
c.zhfzxyr_Xb as zhfzxyrXb,
c.zhfzxyr_Hjdqhdz as zhfzxyrHjdqhdz,
c.zhfzxyr_Csdzmc as zhfzxyrCsdzmc
from tb_st_asj a,tb_xw_zbfzxyr b,TB_XW_ZBFZXYRQGCKXX c
where a.asjbh = b.asjbh
and b.zhfzxyr_Cyzj_Zjhm = c.zhfzxyr_Cyzj_Zjhm
<include refid="asjSql-where"/>
)t
where rownum <![CDATA[<=]]> #{end}
)where rn > #{begin}
</select>
<select id="listAsjAndXyrCount" parameterType="java.lang.String" resultType="com.founder.commonutils.publicEntity.TbAsjAndZbFzXyrAndQgCkXx">
select a.jyaq as jyaq
from tb_st_asj a,tb_xw_zbfzxyr b,TB_XW_ZBFZXYRQGCKXX c
where a.asjbh = b.asjbh
and b.zhfzxyr_Cyzj_Zjhm = c.zhfzxyr_Cyzj_Zjhm
<include refid="asjSql-where"/>
</select>
<select id="listAsjAndXyrCounts" parameterType="java.lang.String" resultType="java.lang.Integer">
select count(*)
from tb_st_asj a,tb_xw_zbfzxyr b,TB_XW_ZBFZXYRQGCKXX c
where a.asjbh = b.asjbh
and b.zhfzxyr_Cyzj_Zjhm = c.zhfzxyr_Cyzj_Zjhm
<include refid="asjSql-where"/>
</select>
<select id="listAsjAndXyrAll" parameterType="java.lang.String" resultType="com.founder.commonutils.publicEntity.TbAsjAndZbFzXyrAndQgCkXx">
select a.asjbh,to_char(a.jyaq) as jyaq,
a.ajlbdm as ajlbdm,
(select name from sys_dictitem where groupid = 'CODE_AJLB' and code = a.ajlbdm) as ajlbdmMc,
a.ladw_Gajgjgdm as ladwGajgjgdm,
(select name from sys_dictitem where groupid = 'CODE_QGUNIT' and code = a.ladw_Gajgjgdm) as ladwGajgjgdmMc,
TO_CHAR(a.larq,'YYYY-MM-DD hh24:mi:ss') as larq,
TO_CHAR(a.fxasjsj,'YYYY-MM-DD hh24:mi:ss') as fxasjsj,
a.fxasjdd_Xzqhdm as fxasjddXzqhdm,
(select name from sys_dictitem where groupid = 'CODE_XZQH' and code = a.fxasjdd_Xzqhdm) as fxasjddXzqhdmMc,
a.zbr_Xm as zbrXm,
a.zbr_Lxdh as zbrLxdh,
TO_CHAR(a.gxsj,'YYYY-MM-DD hh24:mi:ss') as gxsj,
a.zatz_Jyqk as zatzJyqk,
(select name from sys_dictitem where groupid = 'CODE_ZATZ' and code = a.zatz_Jyqk) as zatzJyqkMc,
TO_CHAR(a.zczj_Zxsj01,'YYYY-MM-DD hh24:mi:ss') as zczjZxsj01,
TO_CHAR(a.asjfssj_Asjfskssj,'YYYY-MM-DD hh24:mi:ss') as asjfssjAsjfskssj,
TO_CHAR(a.asjfssj_Asjfsjssj,'YYYY-MM-DD hh24:mi:ss') as asjfssjAsjfsjssj,
a.asjfsdd_Xzqhdm as asjfsddXzqhdm,
(select name from sys_dictitem where groupid = 'CODE_XZQH' and code = a.asjfsdd_Xzqhdm) as asjfsddXzqhdmMc,
a.zcjddm as zcjddm,
(select name from sys_dictitem where groupid = 'CODE_ZCJDDM' and code = a.zcjddm) as zcjddmMc,
a.ladw_gajgMc as ladwgajgMc,
b.zhfzxyr_Cyzj_Zjhm as zhfzxyrCyzjZjhm,
TO_CHAR(b.zhrq,'YYYY-MM-DD hh24:mi:ss') as zhrq,
b.zhdw_Gajgjgdm as zhdwGajgjgdm,
(select name from sys_dictitem where groupid = 'CODE_QGUNIT' and code = b.zhdw_Gajgjgdm) as zhdwGajgjgdmMc,
b.zhfzxyr_Szzwbh as zhfzxyrSzzwbh,
b.zhfzxyr_Rydnabh as zhfzxyrRydnabh,
c.zhfzxyr_Xm as zhfzxyrXm,
to_char(TO_Date(c.zhfzxyr_Csrq,'YYYY-MM-DD hh24:mi:ss'),'yyyy-mm-dd') as zhfzxyrCsrq,
c.zhfzxyr_Img as zhfzxyrImg,
c.zhfzxyr_Mz as zhfzxyrMz,
c.zhfzxyr_Xb as zhfzxyrXb,
c.zhfzxyr_Hjdqhdz as zhfzxyrHjdqhdz,
c.zhfzxyr_Csdzmc as zhfzxyrCsdzmc
from tb_st_asj a,tb_xw_zbfzxyr b,TB_XW_ZBFZXYRQGCKXX c
where a.asjbh = b.asjbh
and b.zhfzxyr_Cyzj_Zjhm = c.zhfzxyr_Cyzj_Zjhm
<include refid="asjSql-where"/>
</select>
<update id="updateSjbqByAsjbh" parameterType="com.founder.commonutils.publicEntity.TbAsjAndZbFzXyrAndQgCkXx">
update tb_st_asj a
set
<if test="sjbq!= null">
a.sjbq= #{ sjbq , jdbcType=VARCHAR }
</if>
where 1 = 1
<if test="asjbh!= null">
AND a.asjbh= #{ asjbh , jdbcType=VARCHAR }
</if>
</update>
<select id="getAjlb" parameterType="java.lang.String" resultType="java.util.Map">
select (case when d.ajlbdmMc is null then '空' else d.ajlbdmMc end) as ajlbdmMc,d.ajlbdm, count(*) as countAjlb from (SELECT
(SELECT name
FROM sys_dictitem
WHERE code = a.ajlbdm) as ajlbdmMc,a.ajlbdm as ajlbdm
FROM tb_st_asj a, tb_xw_zbfzxyr b, TB_XW_ZBFZXYRQGCKXX c
WHERE a.asjbh = b.asjbh AND b.zhfzxyr_Cyzj_Zjhm = c.zhfzxyr_Cyzj_Zjhm
and a.ajlbdm is not null
<include refid="asjSql-where"/>
)d
group by (case when d.ajlbdmMc is null then '空' else d.ajlbdmMc end),d.ajlbdm
</select>
<select id="getxb" parameterType="java.lang.String" resultType="java.util.Map">
select (case when c.ZHFZXYR_XB is null then '空' else c.ZHFZXYR_XB end) as xb ,count(*) as countXb from
tb_st_asj a, tb_xw_zbfzxyr b, TB_XW_ZBFZXYRQGCKXX c
WHERE a.asjbh = b.asjbh AND b.zhfzxyr_Cyzj_Zjhm = c.zhfzxyr_Cyzj_Zjhm
<include refid="asjSql-where"/>
group by (case when c.ZHFZXYR_XB is null then '空' else c.ZHFZXYR_XB end)
</select>
<select id="getSjbq" parameterType="java.lang.String" resultType="java.util.Map">
select a.sjbq ,count(*) as countXb from
tb_st_asj a, tb_xw_zbfzxyr b, TB_XW_ZBFZXYRQGCKXX c
WHERE a.asjbh = b.asjbh AND b.zhfzxyr_Cyzj_Zjhm = c.zhfzxyr_Cyzj_Zjhm
and a.sjbq is not null
<include refid="asjSql-where"/>
group by a.sjbq
</select>
</mapper>
\ 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.founder.publicapi.mapper.SysDictitemMapper">
<!-- 根据code和groupid查询name值-->
<select id="getNameByCode" parameterType="java.util.Map" resultType="java.lang.String">
select name from SYS_DICTITEM where scbz='0'
<if test="groupid!=null and groupid!=''">and groupid = #{groupid}</if>
<if test="code!=null and code!=''">and code = #{code}</if>
</select>
</mapper>
\ 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.founder.publicapi.mapper.SysUsersMapper">
<select id="getUsersByNamePassword" resultType="com.founder.commonutils.publicEntity.SysUsers">
select * from sys_users
where 1=1 and xxsc_pdbz = '0'
<if test="username!=null and username!=''">
and username = #{username}
</if>
<if test="password!=null and password!=''">
and password = #{password}
</if>
</select>
</mapper>
<?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.founder.publicapi.mapper.ZhfzxyrMapper">
<select id="listXyr" resultType="com.founder.commonutils.publicEntity.TbXwZbFzXyr">
select distinct(zhfzxyr_cyzj_zjhm) from tb_xw_zbfzxyr where zhfzxyr_cyzj_zjhm not in(select distinct(zhfzxyr_cyzj_zjhm) from TB_XW_ZBFZXYRQGCKXX)
</select>
</mapper>
<?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.founder.publicapi.mapper.ZhfzxyrQgckMapper">
</mapper>
package com.founder.publicapi.service;
import java.util.Map;
/**
* @author caoyin
*/
public interface SysDictitemService {
String getNameByCode(Map<String, String> map);
}
package com.founder.publicapi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.publicEntity.SysUsers;
import javax.servlet.http.HttpServletRequest;
public interface SysUsersService extends IService<SysUsers> {
public MapRestResult getUsersByNamePassword(SysUsers sysUsers, HttpServletRequest request);
}
package com.founder.publicapi.service;
import com.founder.commonutils.publicEntity.TbAsjAndZbFzXyrAndQgCkXx;
import java.util.List;
/**
* <p>
* 案事件基本信息 服务类
* </p>
*
* @author yangyang
* @since 2021-03-31
*/
public interface TbStAsjAndXyrService {
List<TbAsjAndZbFzXyrAndQgCkXx> listAsjAndXyr(String begin, String end, String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb, String zhfzxyrXb, String sjbq);
List<TbAsjAndZbFzXyrAndQgCkXx> listAsjAndXyrAll(String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb, String zhfzxyrXb, String sjbq);
List<TbAsjAndZbFzXyrAndQgCkXx> listAsjAndXyrCount(String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb, String zhfzxyrXb, String sjbq);
Integer listAsjAndXyrCounts(String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb, String zhfzxyrXb, String sjbq);
List getAjlb(String begin, String end, String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb, String zhfzxyrXb, String sjbq);
List getxb(String begin, String end, String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb, String zhfzxyrXb, String sjbq);
List getSjbq(String begin, String end, String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb, String zhfzxyrXb, String sjbq);
boolean updateSjbqByAsjbh(TbAsjAndZbFzXyrAndQgCkXx tbAsjAndZbFzXyrAndQgCkXx);
}
package com.founder.publicapi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.founder.commonutils.publicEntity.TbXwZbFzXyr;
import com.founder.commonutils.publicEntity.TbXwZbFzXyrQgCkXx;
/**
* <p>
* 案事件基本信息 服务类
* </p>
*
* @author yangyang
* @since 2021-03-30
*/
public interface ZhfzxyrQgckService extends IService<TbXwZbFzXyrQgCkXx> {
void insert(TbXwZbFzXyrQgCkXx tbXwZbFzXyrQgCkXx);
}
package com.founder.publicapi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.founder.commonutils.asjEntity.CbxszAndXlaj;
import com.founder.commonutils.asjEntity.TbStAsj;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.publicEntity.Receiving;
import com.founder.commonutils.publicEntity.TbXwZbFzXyr;
import java.util.List;
import java.util.Map;
/**
* <p>
* 案事件基本信息 服务类
* </p>
*
* @author yangyang
* @since 2021-03-30
*/
public interface ZhfzxyrService extends IService<TbXwZbFzXyr> {
List<TbXwZbFzXyr> listXyr();
}
package com.founder.publicapi.service.serviceimpl;
import com.founder.publicapi.mapper.SysDictitemMapper;
import com.founder.publicapi.service.SysDictitemService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Map;
@Service
public class SysDictitemServiceImpl implements SysDictitemService {
private static final Logger logger = LoggerFactory.getLogger(SysDictitemServiceImpl.class);
@Resource
private SysDictitemMapper sysDictitemMapper;
/**
* 根据code和groupid查询name值
* @param map
* @return
* @throws Exception
*/
@Override
public String getNameByCode(Map<String,String> map){
return sysDictitemMapper.getNameByCode(map);
}
}
package com.founder.publicapi.service.serviceimpl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.publicEntity.SysUsers;
import com.founder.publicapi.mapper.SysUsersMapper;
import com.founder.publicapi.service.SysUsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Service
public class SysUsersServiceImpl extends ServiceImpl<SysUsersMapper, SysUsers> implements SysUsersService {
@Autowired
private SysUsersMapper sysUsersMapper;
@Override
public MapRestResult getUsersByNamePassword(SysUsers sysUsers, HttpServletRequest request) {
List<SysUsers> list = sysUsersMapper.getUsersByNamePassword(sysUsers.getUsername(),sysUsers.getPassword());
//获取当前用户的多个角色,然后获取这些角色的权限,合并这些权限去重复返回。begin
//1.根据username获取角色
/* SysUsersRoles sysUsersRoles=new SysUsersRoles();
sysUsersRoles.setUser_id(sysUsers.getUsername());
List<SysUsersRoles> sysUsersRolesList=sysUsersRolesRepository.selectUserRoleList(sysUsersRoles);
String roleIdStrs="";
List<String> permissionList=new ArrayList<>();
for(int i=0;i<sysUsersRolesList.size();i++){
SysUsersRoles sysUsersRoles1=sysUsersRolesList.get(i);
//2.根据角色获取权限,
String[] roleIds=sysUsersRoles1.getRole_id().split(",");
for(int j=0;j<roleIds.length;j++){
SysRolesPermissions sysRolesPermissions=new SysRolesPermissions();
sysRolesPermissions.setRole_id(roleIds[j]);
List<SysRolesPermissions> sysRolesPermissionsList=sysRolesPermissionsRepository.selectRolePermissionList(sysRolesPermissions);
for(int k=0;k<sysRolesPermissionsList.size();k++){
SysRolesPermissions sysRolesPermissions1=sysRolesPermissionsList.get(k);
if("".equals(roleIdStrs)){
roleIdStrs=sysRolesPermissions1.getPermission_id();
}else{
roleIdStrs=roleIdStrs+","+sysRolesPermissions1.getPermission_id();
}
}
}
}
List<String> split= Arrays.asList(roleIdStrs.split(","));//逗号分隔的字符串转list
List lists = split.stream().distinct().collect(Collectors.toList());//list去重复
Iterator<SysUsers> resultIterator = list.iterator();
while (resultIterator.hasNext()){//循环修改newlist里的值
SysUsers obj = resultIterator.next();
obj.setPermission_id(lists);
}*/
//获取当前用户的多个角色,然后获取这些角色的权限,合并这些权限去重复返回。end
return MapRestResult.build(200,"根据用户名密码查询用户信息",list);
}
}
package com.founder.publicapi.service.serviceimpl;
import com.founder.commonutils.publicEntity.TbAsjAndZbFzXyrAndQgCkXx;
import com.founder.publicapi.mapper.AsjXyrMapper;
import com.founder.publicapi.service.TbStAsjAndXyrService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 案事件基本信息 服务实现类
* </p>
*
* @author yangyang
* @since 2021-03-30
*/
@Service
public class TbStAsjAndXyrServiceImpl implements TbStAsjAndXyrService {
@Autowired
private AsjXyrMapper asjXyrMapper;
@Override
public List<TbAsjAndZbFzXyrAndQgCkXx> listAsjAndXyr(String begin, String end, String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb,String zhfzxyrXb,String sjbq) {
return asjXyrMapper.listAsjAndXyr(begin,end,zhfzxyrXm,zhfzxyrZjhm,sjaq,asjbh,ajlb,zhfzxyrXb,sjbq);
}
@Override
public List<TbAsjAndZbFzXyrAndQgCkXx> listAsjAndXyrAll(String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb,String zhfzxyrXb,String sjbq) {
return asjXyrMapper.listAsjAndXyrAll(zhfzxyrXm,zhfzxyrZjhm,sjaq,asjbh,ajlb,zhfzxyrXb,sjbq);
}
@Override
public List<TbAsjAndZbFzXyrAndQgCkXx> listAsjAndXyrCount(String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb,String zhfzxyrXb,String sjbq) {
return asjXyrMapper.listAsjAndXyrCount(zhfzxyrXm,zhfzxyrZjhm,sjaq,asjbh,ajlb,zhfzxyrXb,sjbq);
}
@Override
public Integer listAsjAndXyrCounts(String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb,String zhfzxyrXb,String sjbq) {
return asjXyrMapper.listAsjAndXyrCounts(zhfzxyrXm,zhfzxyrZjhm,sjaq,asjbh,ajlb,zhfzxyrXb,sjbq);
}
@Override
public boolean updateSjbqByAsjbh(TbAsjAndZbFzXyrAndQgCkXx tbAsjAndZbFzXyrAndQgCkXx) {
return asjXyrMapper.updateSjbqByAsjbh(tbAsjAndZbFzXyrAndQgCkXx);
}
@Override
public List getAjlb(String begin, String end, String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb,String zhfzxyrXb,String sjbq){
return asjXyrMapper.getAjlb(begin,end,zhfzxyrXm,zhfzxyrZjhm,sjaq,asjbh,ajlb,zhfzxyrXb,sjbq);
}
@Override
public List getxb(String begin, String end, String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb,String zhfzxyrXb,String sjbq){
return asjXyrMapper.getxb(begin,end,zhfzxyrXm,zhfzxyrZjhm,sjaq,asjbh,ajlb,zhfzxyrXb,sjbq);
}
@Override
public List getSjbq(String begin, String end, String zhfzxyrXm, String zhfzxyrZjhm, String sjaq, String asjbh, String ajlb,String zhfzxyrXb,String sjbq){
return asjXyrMapper.getSjbq(begin,end,zhfzxyrXm,zhfzxyrZjhm,sjaq,asjbh,ajlb,zhfzxyrXb,sjbq);
}
}
package com.founder.publicapi.service.serviceimpl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.founder.commonutils.publicEntity.TbXwZbFzXyr;
import com.founder.commonutils.publicEntity.TbXwZbFzXyrQgCkXx;
import com.founder.publicapi.mapper.ZhfzxyrMapper;
import com.founder.publicapi.mapper.ZhfzxyrQgckMapper;
import com.founder.publicapi.service.ZhfzxyrQgckService;
import com.founder.publicapi.service.ZhfzxyrService;
import org.springframework.stereotype.Service;
/**
* <p>
* 案事件基本信息 服务实现类
* </p>
*
* @author yangyang
* @since 2021-03-30
*/
@Service
public class ZhfzxyrQgckServiceImpl extends ServiceImpl<ZhfzxyrQgckMapper, TbXwZbFzXyrQgCkXx> implements ZhfzxyrQgckService {
@Override
public void insert(TbXwZbFzXyrQgCkXx tbXwZbFzXyrQgCkXx) {
baseMapper.insert(tbXwZbFzXyrQgCkXx);
}
}
package com.founder.publicapi.service.serviceimpl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.founder.commonutils.publicEntity.TbXwZbFzXyr;
import com.founder.publicapi.mapper.ZhfzxyrMapper;
import com.founder.publicapi.service.ZhfzxyrService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 案事件基本信息 服务实现类
* </p>
*
* @author yangyang
* @since 2021-03-30
*/
@Service
public class ZhfzxyrServiceImpl extends ServiceImpl<ZhfzxyrMapper, TbXwZbFzXyr> implements ZhfzxyrService {
@Autowired
private ZhfzxyrMapper zhfzxyrMapper;
@Override
public List<TbXwZbFzXyr> listXyr() {
return zhfzxyrMapper.listXyr();
}
}
#配置中心地址
spring.cloud.nacos.config.server-addr=47.92.48.137:8848
spring.cloud.nacos.discovery.server-addr=47.92.48.137:8848
#spring.cloud.nacos.config.server-addr=26.3.13.184:8848
#spring.cloud.nacos.discovery.server-addr=26.3.13.184:8848
spring.profiles.active=dev
# 该配置影响统一配置中心中的dataId
spring.application.name=publicapi
spring.cloud.nacos.config.namespace=dev
#spring.cloud.nacos.config.ext-config[0].data-id=image.properties
# 开启动态刷新配置,否则配置文件修改,工程无法感知
#spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.shared-dataids=publicapipz.properties
spring.cloud.nacos.config.refreshable-dataids=publicapipz.properties
\ No newline at end of file
......@@ -9,9 +9,9 @@
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>asj</artifactId>
<artifactId>view</artifactId>
<build>
<finalName>asj</finalName>
<finalName>view</finalName>
</build>
</project>
\ No newline at end of file
#配置中心地址
spring.cloud.nacos.config.server-addr=47.92.48.137:8848
spring.cloud.nacos.discovery.server-addr=47.92.48.137:8848
spring.cloud.nacos.config.server-addr=47.92.48.137:9949
spring.cloud.nacos.discovery.server-addr=47.92.48.137:9949
#spring.cloud.nacos.config.server-addr=26.3.13.184:8848
#spring.cloud.nacos.discovery.server-addr=26.3.13.184:8848
spring.profiles.active=dev
spring.profiles.active=prod
# 该配置影响统一配置中心中的dataId
spring.application.name=asj
spring.cloud.nacos.config.namespace=dev
spring.cloud.nacos.config.namespace=prod
#spring.cloud.nacos.config.ext-config[0].data-id=image.properties
# 开启动态刷新配置,否则配置文件修改,工程无法感知
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>serviceapi</artifactId>
<groupId>com.founder</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>carapi</artifactId>
<build>
<finalName>carapi</finalName>
</build>
</project>
\ No newline at end of file
package com.founder.carapi;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@ComponentScan(basePackages = {"com.founder"})
@EnableDiscoveryClient
public class CarApiApplication {
@Autowired
private RestTemplateBuilder restTemplateBuilder;
public static void main(String[] args) {
SpringApplication.run(CarApiApplication.class, args);
}
@Bean
public RestTemplate restTemplate(){return restTemplateBuilder.build();}
}
package com.founder.carapi.controller;
import com.founder.carapi.service.CarService;
import com.founder.commonutils.carEntity.*;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.servicebase.logs.OperLog;
import com.founder.servicebase.logs.OperationType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.*;
/**
* <p>
* 技侦接口管理 前端控制器
* </p>
*
* @author yangyang
* @since 2021-04-09
*/
@Api(description = "接口管理")
@RestController
@RequestMapping("/car")
public class CarController {
@Autowired
private CarService carService;
// 车辆轨迹接口(科信)
//@OperLog(message = "车辆轨迹接口",operation = OperationType.QUERY)
@ApiOperation(value = "车辆轨迹接口")
@PostMapping(value = "/CarTranslate")
public MapRestResult getCarTranslate(@RequestBody CarTranslateParams carTranslateParams) {
long startTime=new Date().getTime();
MapRestResult result=carService.getCarTranslate(carTranslateParams);
long endTime=new Date().getTime();
long timeDiffer=endTime-startTime;
System.out.println("车辆轨迹**请求时长**********"+timeDiffer+"毫秒");
return result;
}
//@OperLog(message = "范围内卡口点位数据接口",operation = OperationType.QUERY)
@ApiOperation(value = "范围内卡口点位数据接口")
@PostMapping(value = "/selectKkXx")
public MapRestResult selectKkXx(@RequestBody CarKkXxParams carKkXxParams) {
return carService.selectKkXx(carKkXxParams.getQsjd(),carKkXxParams.getQswd(),carKkXxParams.getJsjd(),carKkXxParams.getJswd());
}
// 车辆回溯接口(科信)
//@OperLog(message = "车辆回溯接口",operation = OperationType.QUERY)
@ApiOperation(value = "车辆回溯接口")
@PostMapping(value = "/carOneAreaIAnalysis")
public MapRestResult carOneAreaIAnalysis(@RequestBody CarOneAreaIAnalysisSearchParam carOneAreaIAnalysisSearchParam) {
long sTime=new Date().getTime();
MapRestResult result=carService.carOneAreaIAnalysis(carOneAreaIAnalysisSearchParam);
long eTime=new Date().getTime();
long timeDiffer=eTime-sTime;
System.out.println("车辆轨迹**请求时长**********"+timeDiffer+"毫秒");
return result;
}
//区域徘徊 -结果展示(徘徊次数3次以上)
//@OperLog(message = "车辆徘徊接口",operation = OperationType.QUERY)
@ApiOperation(value = "车辆徘徊接口")
@PostMapping("/carOneAreaInfoTrampResultThread")
public MapRestResult carOneAreaInfoTrampResultThread (@RequestBody AreaInfo areaInfo) throws Exception {
MapRestResult xzxtRestResult=carService.OneAreaInfoTrampResultThread(areaInfo);
return xzxtRestResult;
}
//轨迹疑似停留点
@ApiOperation(value = "轨迹疑似停留点")
@PostMapping("/getTrackYstld")
public MapRestResult getTrackYstld(@RequestBody TrackYsModelCondition track){
return carService.getTrackYstld(track);
}
//轨迹疑似落脚点
@ApiOperation(value = "轨迹疑似落脚点")
@PostMapping("/getTrackYsljd")
public MapRestResult getTrackYsljd(@RequestBody TrackYsModelCondition track){
return carService.getTrackYsljd(track);
}
//轨迹疑似活动区域
@ApiOperation(value = "轨迹疑似活动区域")
@PostMapping("/getTrackYshdqy")
public MapRestResult getTrackYshdqy(@RequestBody TrackYsModelCondition track){
return carService.getTrackYshdqy(track);
}
@ApiOperation(value = "车碰撞结果获取")
@PostMapping("/getRegionalsResult")
public MapRestResult getRegionalsResult(@RequestBody TbStRegionalstaskresult tbStRegionalstaskresult) throws Exception {
tbStRegionalstaskresult.setPagePara(Integer.valueOf(tbStRegionalstaskresult.getLimit()));
return carService.getRegionalsResult(tbStRegionalstaskresult);
}
@ApiOperation(value = "车碰撞结果分类获取")
@PostMapping("/getRegionalsResultFl")
public MapRestResult getRegionalsResultFl(@RequestBody TbStRegionalstaskresult tbStRegionalstaskresult) throws Exception {
return carService.getRegionalsResultFl(tbStRegionalstaskresult);
}
}
package com.founder.carapi.controller;
import com.alibaba.fastjson.JSONObject;
import com.founder.carapi.service.CarService;
import com.founder.carapi.service.RegTaskService;
import com.founder.commonutils.carEntity.*;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.util.KeyUtil;
import com.founder.servicebase.logs.OperLog;
import com.founder.servicebase.logs.OperationType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.IntStream;
/**
* <p>
* 任务 接口管理 前端控制器
* </p>
*
* @author yangyang
* @since 2021-04-09
*/
@Api(description = "任务接口管理")
@RestController
@RequestMapping("/car")
public class RegionalsTaskController {
@Autowired
private CarService carService;
@Autowired
private RegTaskService regTaskService;
// 任务信息
// @OperLog(message = "生成车车伴随任务接口",operation = OperationType.QUERY)
@ApiOperation(value = "生成车车伴随任务接口")
@PostMapping("/sendCarCarRegionalsTask")
public MapRestResult sendRegionalsTask(@RequestBody CarCarAndTaskSearchParam params) {
CarCarAnalysisSearchParam carCarAnalysisSearchParam = params.getCarCarAnalysisSearchParam();
RegionalsTask regionalsTask = params.getRegionalsTask();
// 获取区域,开始时间 ,确认时间,保存任务信息,区域
// 生成任务编号
regionalsTask.setTaskId(KeyUtil.getUUIDKey("RW"));
// 状态置为 1 进度置为 任务开始
regionalsTask.setState("1");
regionalsTask.setProgress("BEGIN");
regionalsTask.setTaskType("ccbs");
regionalsTask.setTaskObject("01");// 任务对象01 车 02 人 03 人像
regTaskService.saveRegTask(regionalsTask);
// 保存区域 集合
List<Regionals> regionalsList=regionalsTask.getRegionals();
if(regionalsList!=null){
IntStream.range(0, regionalsList.size()).forEach(i -> {
Regionals regionals=regionalsList.get(i);
regionals.setRegionalId(KeyUtil.getUUIDKey("QY"));
regionals.setTaskId(regionalsTask.getTaskId());
regTaskService.saveRegional(regionals);
});
}
carCarAnalysisSearchParam.setTaskId(regionalsTask.getTaskId());
// 线程异步调用
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.submit(()->{
try {
Thread.sleep(1000);
MapRestResult result = carService.carCarAnalysis(carCarAnalysisSearchParam);
} catch (Exception e) {
e.printStackTrace();
}
});
return MapRestResult.build(200,"发送任务成功","1",regionalsTask.getTaskId());
}
// 任务查询接口
@ApiOperation(value = "获取所有任务接口")
@PostMapping("/selecteRegionalsTasks")
public MapRestResult selecteRegionalsTasks(@RequestBody SelectRegionalsTasksParams selectRegionalsTasksParams) {
return MapRestResult.build(200,"获取任务全部数据成功", regTaskService.selecteRegionalsTasks(selectRegionalsTasksParams).size(), regTaskService.selecteRegionalsTasks(selectRegionalsTasksParams));
}
// 任务结果查询接口
@ApiOperation(value = "获取车车伴随任务结果数据成功")
@PostMapping("/selecteRegionalsTasksResults")
public MapRestResult selecteRegionalsTasksResults(@ApiParam(name = "taskId",value = "任务id",required = true)
@RequestBody String taskId) {
// 解析传过来的json拿到案事件编号
JSONObject jsonObject = JSONObject.parseObject(taskId);
String taskIds = (String) jsonObject.get("taskId");
List<RegionalsCarCarResult> listResult = regTaskService.selecteRegionalsTasksResults(taskIds);
listResult.stream().forEach(p->{
p.setImgStr(new String(String.valueOf(p.getImg())));
});
return MapRestResult.build(200,"获取任务结果数据成功", listResult.size(),listResult);
}
// 任务信息
// @OperLog(message = "生成车区域碰撞任务接口",operation = OperationType.QUERY)
@ApiOperation(value = "生成车区域碰撞任务接口")
@PostMapping("/sendRegionalsTask")
public MapRestResult sendRegionalsTask(@RequestBody RegionalsTask regionalsTask) {
// 获取区域,开始时间 ,确认时间,保存任务信息,区域
// 生成任务编号
regionalsTask.setTaskId(KeyUtil.getUUIDKey("RW"));
// 状态置为 1 进度置为 任务开始
regionalsTask.setState("1");
regionalsTask.setProgress("BEGIN");
regionalsTask.setTaskType("qypz");// 区域碰撞
regionalsTask.setTaskObject("01");// 任务对象01 车 02 人 03 人像
regTaskService.saveRegTask(regionalsTask);
// 保存区域 集合
List<Regionals> regionalsList=regionalsTask.getRegionals();
if(regionalsList!=null){
IntStream.range(0, regionalsList.size()).forEach(i -> {
Regionals regionals=regionalsList.get(i);
regionals.setRegionalId(KeyUtil.getUUIDKey("QY"));
regionals.setTaskId(regionalsTask.getTaskId());
regTaskService.saveRegional(regionals);
});
}
return MapRestResult.build(200,"发送任务成功","1",regionalsTask.getTaskId());
}
@ApiOperation(value = "车区域碰撞接口")
@PostMapping("/carRegionalCollied")
public MapRestResult sendCarQyPzRegionalsTask(@RequestBody List<AreaInfo> areaInfos) {
try {
MapRestResult result = carService.MoreAreaInfoThread(areaInfos);
} catch (Exception e) {
return MapRestResult.build(201,"车区域碰撞接口失败","1","error");
}
return MapRestResult.build(200,"车区域碰撞接口","1","success");
}
// 任务区域查询接口
@ApiOperation(value = "任务区域查询接口")
@PostMapping("/selecteRegionals")
public MapRestResult selecteRegionals(@ApiParam(name = "taskId",value = "任务id",required = true)
@RequestBody String taskId) {
// 解析传过来的json拿到案事件编号
JSONObject jsonObject = JSONObject.parseObject(taskId);
String taskIds = (String) jsonObject.get("taskId");
List<Regionals> listResult = regTaskService.selecteRegionals(taskIds);
return MapRestResult.build(200,"获取任务区域数据成功", listResult.size(),listResult);
}
// 任务区域查询接口
@ApiOperation(value = "根据任务类型更新任务区域接口和更新任务接口")
@PostMapping("/updateRegionalsTask")
public MapRestResult updateRegionalsTask(@RequestBody RegionalsTask regionalsTask) {
List<Regionals> regionalsList=regionalsTask.getRegionals();
// 先根据任务编号判断 区域集合是否有数据
List<Regionals> listResult = regTaskService.selecteRegionals(regionalsTask.getTaskId());
// 如果存在数据则删除 删除后在执行插入操作 不存在直接执行插入操作
if(listResult.size()>0){
boolean deleteRegionals = regTaskService.deleteRegionals(regionalsTask.getTaskId());
if (deleteRegionals){
if(regionalsList!=null){
IntStream.range(0, regionalsList.size()).forEach(i -> {
Regionals regionals=regionalsList.get(i);
regionals.setRegionalId(KeyUtil.getUUIDKey("QY"));
regionals.setTaskId(regionalsTask.getTaskId());// 前端传回的任务编号
regTaskService.saveRegional(regionals);
});
}
}else{
return MapRestResult.build(200,"更新任务区域接口和更新任务接口失败", "1",regionalsTask.getTaskId());
}
}else{
if(regionalsList!=null){
IntStream.range(0, regionalsList.size()).forEach(i -> {
Regionals regionals=regionalsList.get(i);
regionals.setRegionalId(KeyUtil.getUUIDKey("QY"));
regionals.setTaskId(regionalsTask.getTaskId());// 前端传回的任务编号
regTaskService.saveRegional(regionals);
});
}
}
// 并对任务表进行更新
boolean updateRegionals = regTaskService.updateRegionals(regionalsTask.getTaskId(),regionalsTask.getTaskName());
if(!updateRegionals){
return MapRestResult.build(200,"更新任务区域接口和更新任务接口失败", "1",regionalsTask.getTaskId());
}
return MapRestResult.build(200,"更新任务区域接口和更新任务接口成功", "1",regionalsTask.getTaskId());
}
}
package com.founder.carapi.mapper;
import com.founder.commonutils.carEntity.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@Mapper
public interface CarInfoMapper {
List<KkXxResult> getKkInfoByQsJwd(@Param(value = "qsjd") String qsjd,
@Param(value = "qswd") String qswd,
@Param(value = "jsjd") String jsjd,
@Param(value = "jswd") String jswd);
List<TbStRegionalstaskresult> getAllResult(TbStRegionalstaskresult tbStRegionalstaskresult);
List<TbStRegionalstaskresult> getAllResultall(TbStRegionalstaskresult tbStRegionalstaskresult);
Integer getAllResultcount(TbStRegionalstaskresult tbStRegionalstaskresult);
List<RegionalsDetail> getAllRegionalsDetail(@Param("reultId") String reultId);
RegionalsPerson getAllRegionalsPerson(@Param("sfzhm") String sfzhm);
List<reslutFl> getAllResultFlHs(@Param("taskId") String taskId);
List<reslutFl> getAllResultFl(@Param("taskId") String taskId);
}
package com.founder.carapi.mapper;
import com.founder.commonutils.carEntity.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@Mapper
public interface RegInfoMapper {
void saveRegTask(RegionalsTask regionalsTask);
void saveRegional(Regionals regionals);
boolean saveResult(RegionalsResult regionalsResult);
boolean saveResultPz(CarKkInfo carKkInfo);
Integer selecteRegionalsPerson(@Param("sfzhm") String sfzhm);
void saveRegionalsDetail(RegionalsDetail regionalsDetail);
void saveRegionalsPerson(RegionalsPerson regionalsPerson);
void updateRegionalsResult(RegionalsResult regionalsResult);
void updateRegionalsTask(RegionalsTask regionalsTask);
List<RegionalsTask> selecteRegionalsTasks(SelectRegionalsTasksParams selectRegionalsTasksParams);
List<RegionalsCarCarResult> selecteRegionalsTasksResults(@Param("taskId") String taskId);
List<Regionals> selecteRegionals(@Param("taskId") String taskId);
boolean deleteRegionals(@Param("taskId") String taskId);
boolean updateRegionals(@Param("taskId") String taskId,@Param("taskName") String taskName);
}
package com.founder.carapi.service;
import com.founder.commonutils.carEntity.*;
import com.founder.commonutils.publicEntity.MapRestResult;
import java.util.List;
/**
* <p>
* 技侦接口 服务类
* </p>
*
* @author yangyang
* @since 2021-04-09
*/
public interface CarService {
MapRestResult selectKkXx(String qsjd, String qswd, String jsjd, String jswd);
MapRestResult getCarTranslate(CarTranslateParams carTranslateParams);
MapRestResult carOneAreaIAnalysis(CarOneAreaIAnalysisSearchParam carOneAreaIAnalysisSearchParam);
MapRestResult carCarAnalysis(CarCarAnalysisSearchParam carCarAnalysisSearchParam) throws Exception;
MapRestResult MoreAreaInfoThread(List<AreaInfo> areaInfos) throws Exception;
MapRestResult getTrackYstld(TrackYsModelCondition track);
MapRestResult getTrackYsljd(TrackYsModelCondition track);
MapRestResult getRegionalsResult(TbStRegionalstaskresult tbStRegionalstaskresult) throws Exception;
MapRestResult getRegionalsResultFl(TbStRegionalstaskresult tbStRegionalstaskresult) throws Exception;
MapRestResult getTrackYshdqy(TrackYsModelCondition track);
MapRestResult OneAreaInfoTrampResultThread(AreaInfo areaInfo) throws Exception;
}
package com.founder.carapi.service;
import com.founder.commonutils.carEntity.Regionals;
import com.founder.commonutils.carEntity.RegionalsCarCarResult;
import com.founder.commonutils.carEntity.RegionalsTask;
import com.founder.commonutils.carEntity.SelectRegionalsTasksParams;
import com.founder.commonutils.publicEntity.MapRestResult;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author yangyang
* @since 2021-04-10
*/
public interface RegTaskService {
MapRestResult saveRegTask(RegionalsTask regionalsTask);
MapRestResult saveRegional(Regionals regionals);
List<RegionalsTask> selecteRegionalsTasks(SelectRegionalsTasksParams selectRegionalsTasksParams);
List<RegionalsCarCarResult> selecteRegionalsTasksResults(@Param("taskId") String taskId);
List<Regionals> selecteRegionals(@Param("taskId") String taskId);
boolean deleteRegionals(String taskId);
boolean updateRegionals(String taskId,String taskName);
}
This source diff could not be displayed because it is too large. You can view the blob instead.
package com.founder.carapi.service.impl;
import com.founder.carapi.mapper.RegInfoMapper;
import com.founder.carapi.service.RegTaskService;
import com.founder.commonutils.carEntity.*;
import com.founder.commonutils.publicEntity.MapRestResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/*
*
* <p>
* 服务实现类
* </p>
*
* @author yangyang
* @since 2021-04-10
*/
@Service
public class RegTaskServiceImpl implements RegTaskService {
@Autowired
private RegInfoMapper regInfoMapper;
@Override
public MapRestResult saveRegTask(RegionalsTask regionalsTask) {
regInfoMapper.saveRegTask(regionalsTask);
return MapRestResult.build(200,"任务保存成功","");
}
@Override
public MapRestResult saveRegional(Regionals regionals) {
regInfoMapper.saveRegional(regionals);
return MapRestResult.build(200,"区域保存成功","");
}
@Override
public List<RegionalsTask> selecteRegionalsTasks(SelectRegionalsTasksParams selectRegionalsTasksParams) {
return regInfoMapper.selecteRegionalsTasks(selectRegionalsTasksParams);
}
@Override
public List<RegionalsCarCarResult> selecteRegionalsTasksResults(String taskId) {
return regInfoMapper.selecteRegionalsTasksResults(taskId);
}
@Override
public List<Regionals> selecteRegionals(String taskId) {
return regInfoMapper.selecteRegionals(taskId);
}
@Override
public boolean deleteRegionals(String taskId) {
return regInfoMapper.deleteRegionals(taskId);
}
@Override
public boolean updateRegionals(String taskId,String taskName) {
return regInfoMapper.updateRegionals(taskId,taskName);
}
}
#配置中心地址
#spring.cloud.nacos.config.server-addr=47.92.48.137:8848
#spring.cloud.nacos.discovery.server-addr=47.92.48.137:8848
spring.cloud.nacos.config.server-addr=26.3.13.184:8848
spring.cloud.nacos.discovery.server-addr=26.3.13.184:8848
spring.profiles.active=prod
# 该配置影响统一配置中心中的dataId
spring.application.name=carapi
spring.cloud.nacos.config.namespace=prod
#spring.cloud.nacos.config.ext-config[0].data-id=image.properties
# 开启动态刷新配置,否则配置文件修改,工程无法感知
#spring.cloud.nacos.config.ext-config[0].refresh=true
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>serviceapi</artifactId>
<groupId>com.founder</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>imageapi</artifactId>
<build>
<finalName>imageapi</finalName>
</build>
</project>
\ No newline at end of file
package com.founder.imageapi;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@ComponentScan(basePackages = {"com.founder"})
@EnableDiscoveryClient
public class ImageApiApplication {
@Autowired
private RestTemplateBuilder restTemplateBuilder;
public static void main(String[] args) {
SpringApplication.run(ImageApiApplication.class, args);
}
@Bean
public RestTemplate restTemplate(){return restTemplateBuilder.build();}
}
package com.founder.imageapi.controller;
import com.founder.commonutils.carEntity.CarKkXxParams;
import com.founder.commonutils.peopleEntity.CameraFaceTask;
import com.founder.commonutils.peopleEntity.FaceJtSearchParam;
import com.founder.commonutils.peopleEntity.FaceSearchParam;
import com.founder.commonutils.publicEntity.MapRestResult;
import com.founder.commonutils.util.TokenUtils;
import com.founder.servicebase.logs.OperLog;
import com.founder.servicebase.logs.OperationType;
import com.founder.imageapi.service.ImageService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
/**
* <p>
* 第三方图像接口管理 前端控制器
* </p>
*
* @author yangyang
* @since 2021-03-18
*/
@Api(description = "第三方图像接口管理-云天励飞")
@RestController
@RequestMapping("/image")
@Component
public class ImageController {
@Autowired
private ImageService imageService;
//获取token
@OperLog(message = "token获取",operation = OperationType.QUERY)
@ApiOperation(value = "token获取")
@PostMapping("/token")
public MapRestResult getToken() {
//获取token
String accessToken = TokenUtils.getYtgsToken();
return MapRestResult.build(202,"成功获取token信息",accessToken);
}
// 人脸动态检索接口接口
//@OperLog(message = "人脸动态检索接口",operation = OperationType.QUERY)
@ApiOperation(value = "人脸动态检索接口")
@PostMapping(value = "/getFaceImageByUploadImage")
public MapRestResult getFaceIdsByUploadImage(@RequestPart(value = "files",required = true) MultipartFile[] files, FaceSearchParam faceSearchParam) {
long startTime=new Date().getTime();
MapRestResult result=imageService.getFaceImageByUploadImage(files,faceSearchParam);
long endTime=new Date().getTime();
long timeDiffer=endTime-startTime;
System.out.println("人脸检索**请求时长**********"+timeDiffer+"毫秒");
return result;
}
// 人像回溯接口
//@OperLog(message = "人像回溯接口",operation = OperationType.QUERY)
@ApiOperation(value = "人像回溯接口")
@PostMapping(value = "/sendTask")
public MapRestResult sendTask(@RequestBody CameraFaceTask cameraFaceTask) {
return imageService.sendTask(cameraFaceTask);
}
// 范围内人像点位数据接口
//@OperLog(message = "范围内人像点位数据接口",operation = OperationType.QUERY)
@ApiOperation(value = "范围内人像点位数据接口")
@PostMapping(value = "/selectRxXx")
public MapRestResult selectRxXx(@RequestBody CarKkXxParams carKkXxParams) {
return imageService.selectRxXx(carKkXxParams.getQsjd(),carKkXxParams.getQswd(),carKkXxParams.getJsjd(),carKkXxParams.getJswd());
}
// 人像比对接口(暂使用云天励飞静态检索接口)
//@OperLog(message = "人像比对接口",operation = OperationType.QUERY)
@ApiOperation(value = "人像比对接口")
@PostMapping(value = "/getFaceImageByUploadImageJt",consumes = "multipart/*",headers = "content-type=multipart/form-data")
public MapRestResult getFaceIdsByUploadImage(@RequestParam(value = "files",required = true) MultipartFile files, FaceJtSearchParam faceSearchParam) {
long startTime=new Date().getTime();
MapRestResult result=imageService.getFaceImageByUploadImageJt(files,faceSearchParam);
long endTime=new Date().getTime();
long timeDiffer=endTime-startTime;
System.out.println("人像比对检索**请求时长**********"+timeDiffer+"毫秒");
return result;
}
}
package com.founder.imageapi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.founder.commonutils.peopleEntity.Camera;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface CameraInfoMapper extends BaseMapper<Camera> {
List<Camera> getCameraInfoByIds(@Param(value = "cameraIds") String cameraIds);
List<Camera> getCameraInfoByQsJwd(@Param(value = "qsjd")String qsjd,
@Param(value = "qswd")String qswd,
@Param(value = "jsjd")String jsjd,
@Param(value = "jswd")String jswd);
}
<?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.founder.imageapi.mapper.CameraInfoMapper">
<!--根据起始经纬度获取人像点位数据-->
<select id="getCameraInfoByIds" parameterType="java.lang.String" resultType="com.founder.commonutils.peopleEntity.Camera">
select
t.ID as cameraId,
t.NAME as cameraName,
(select name from sys_dictitem where groupid = 'CODE_UNIT' and code = substr(t.camera_code,0,6)||'000000') as districtCodeName,
substr(t.camera_code,0,6)|| '000000' as districtCode,
(select name from sys_dictitem where groupid = 'CODE_XZQH' and code = substr(t.camera_code,0,6)) as areaCodeName,
substr(t.camera_code,0,6) as areaCode,
t.CITY as areaName,
x as x,
y as y,
NAME as cameraType
from tb_zy_camera t where 1=1
<if test="cameraIds!=null and cameraIds!=''">and id in ${cameraIds}</if>
</select>
<!--根据起始经纬度获取人像点位数据-->
<select id="getCameraInfoByQsJwd" parameterType="java.lang.String" resultType="com.founder.commonutils.peopleEntity.Camera">
select
ID as cameraId,
NAME as cameraName,
CITY as areaName,
(select name from sys_dictitem where groupid = 'CODE_UNIT' and code = substr(t.camera_code,0,6)||'000000') as districtCodeName,
substr(t.camera_code,0,6)|| '000000' as districtCode,
(select name from sys_dictitem where groupid = 'CODE_XZQH' and code = substr(t.camera_code,0,6)) as areaCodeName,
substr(t.camera_code,0,6) as areaCode,
x as x,
y as y,
NAME as cameraType
from tb_zy_camera t where 1=1
<if test="qsjd!=null and qsjd!='' and qsjd!=null and qsjd!='' and qswd!=null and qswd!='' and jswd!=null and jswd!=''">
AND x<![CDATA[>=]]>#{qsjd,jdbcType=VARCHAR} AND x<![CDATA[<=]]>#{jsjd,jdbcType=VARCHAR}
AND y<![CDATA[>=]]>#{qswd,jdbcType=VARCHAR} AND y<![CDATA[<=]]>#{jswd,jdbcType=VARCHAR}
</if>
</select>
</mapper>
package com.founder.imageapi.service;
import com.founder.commonutils.peopleEntity.CameraFaceTask;
import com.founder.commonutils.peopleEntity.FaceJtSearchParam;
import com.founder.commonutils.peopleEntity.FaceSearchParam;
import com.founder.commonutils.publicEntity.MapRestResult;
import org.springframework.web.multipart.MultipartFile;
/**
* <p>
* 云天接口 服务类
* </p>
*
* @author yangyang
* @since 2021-03-19
*/
public interface ImageService {
MapRestResult getFaceImageByUploadImage(MultipartFile[] files, FaceSearchParam faceSearchParam);
/* MapRestResult getImageById(Long id);*/
/* MapRestResult getFaceById(Long id);*/
/* MapRestResult getImageByFaceId(Long faceId);*/
/* MapRestResult w(Long faceId);*/
/* MapRestResult getImageByBigImageId(Long bigImageId);*/
MapRestResult sendTask(CameraFaceTask cameraFaceTask);
MapRestResult selectRxXx(String qsjd,String qswd,String jsjd,String jswd);
MapRestResult getFaceImageByUploadImageJt(MultipartFile files, FaceJtSearchParam faceSearchParam);
}
package com.founder.imageapi.service.impl;
import com.founder.commonutils.peopleEntity.Camera;
import com.founder.commonutils.util.DataUtil;
import com.founder.imageapi.mapper.CameraInfoMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
/**
* @Author yy
* @Date 2021/03/21
*/
@Component
public class CommonService {
@Autowired
private CameraInfoMapper cameraInfoDao;
public Map<String, Object> getCameraInfoByIds(String cameraId) {
Map<String, Object> map = new HashMap<>();
List<Camera> cameras = cameraInfoDao.getCameraInfoByIds(cameraId);
if (cameras != null&&cameras.size()>0) {
for(Camera camera:cameras){
String address = camera.getAreaCodeName() + camera.getCameraName();
String x = camera.getX(),y = camera.getY();// 经纬度
String cameraType=camera.getCameraType();
String areaCode=camera.getAreaCode();// 地区代码
String areaCodeName=camera.getAreaCodeName();// 地区名称 某市某城区
String districtCode=camera.getDistrictCode();// 分局代码
String districtCodeName=camera.getDistrictCodeName();// 分局名称
map.put("address", address);//某分局 某派出所 某摄像头
map.put("x", x);
map.put("y", y);
map.put("cameraName", camera.getCameraName());// 摄像头名称
map.put("cameraType",cameraType);
map.put("districtCodeName",districtCodeName);// 分局名称
map.put("districtCode",districtCode);// 分局代码
map.put("areaCode",areaCode);// 地区代码
map.put("areaCodeName",areaCodeName);// 地区名称
}
}
return map;
}
/**
* 配饰代码转汉字
*
* @return
*/
public Map<String, Object> accessoriesToValue(String genderStr, String raceStr, String accessoriesStr, String ageStr) {
Map<String, Object> resultMap = new HashMap<>();
Object genderValue=null;
/*gender
性别(byte0: bit0~bit3)
0表示不确定
1表示男性
2表示女性*/
if (StringUtils.isNotEmpty(genderStr)) {
int gender = Integer.parseInt(genderStr);
String genderBinary = DataUtil.decimalToBinary(gender);
Map<Integer, Object> list = DataUtil.binaryToValue(genderBinary, 4);
if (null != list && list.size() > 0) {
genderValue = list.get(0);
if (null != genderValue) {
if ("0".equals(genderValue.toString())) {
genderValue = "不确定";
} else if ("1".equals(genderValue.toString())) {
genderValue = "男性";
} else if ("2".equals(genderValue.toString())) {
genderValue = "女性";
}
}
}
}
resultMap.put("gender", genderValue);
/*Race
•民族(byte0: bit0~bit3)
0表示汉族
1表示外籍
•口罩(byte1: bit0~bit3)
0表示不确定是否戴口罩
1表示不戴口罩
2表示戴口罩*/
Object raceBinaryValue=null;
Object maskBinaryValue=null;
if (StringUtils.isNotEmpty(raceStr)) {
int race = Integer.parseInt(raceStr);
String raceBinary = DataUtil.decimalToBinary(race);
Map<Integer, Object> list = DataUtil.binaryToValue(raceBinary, 4);
if (null != list && list.size() > 0) {
raceBinaryValue = list.get(0);
if (null != raceBinaryValue) {
if ("0".equals(raceBinaryValue.toString())) {
raceBinaryValue = "汉族";
} else if ("1".equals(raceBinaryValue.toString())) {
raceBinaryValue = "外籍";
}
}
maskBinaryValue = list.get(1);
if (null != maskBinaryValue) {
if ("0".equals(maskBinaryValue.toString())) {
maskBinaryValue = "不确定";
} else if ("1".equals(maskBinaryValue.toString())) {
maskBinaryValue = "不戴口罩";
} else if ("2".equals(maskBinaryValue.toString())) {
maskBinaryValue = "戴口罩";
}
}
}
}
resultMap.put("race", raceBinaryValue);
resultMap.put("mask", maskBinaryValue);
/*Accessories
•眼镜(byte0: bit0~bit:3)
0表示不确定是否戴眼镜
1表示不戴眼镜
2表示戴(普通)眼镜
3表示戴太阳镜
•帽子(byte1: bit0~bit3)
0表示不确定是否戴帽子
1表示不戴帽子
2表示戴帽子
•发型(byte2: bit0~bit3)
0表示不确定头发长短
1表示短发
2表示长发*/
Object glassBinaryValue = null;
Object hatBinaryValue = null;
Object hairBinaryValue = null;
if (StringUtils.isNotEmpty(accessoriesStr)) {
int accessories = Integer.parseInt(accessoriesStr);
String accessoriesBinary = DataUtil.decimalToBinary(accessories);
Map<Integer, Object> list = DataUtil.binaryToValue(accessoriesBinary, 4);
if (null != list && list.size() > 0) {
glassBinaryValue = list.get(0);
hatBinaryValue = list.get(1);
hairBinaryValue = list.get(2);
if (null != glassBinaryValue) {
if ("0".equals(glassBinaryValue.toString())) {
glassBinaryValue = "不确定";
} else if ("1".equals(glassBinaryValue.toString())) {
glassBinaryValue = "不戴眼镜";
}else if ("2".equals(glassBinaryValue.toString())) {
glassBinaryValue = "戴(普通)眼镜";
}else if ("3".equals(glassBinaryValue.toString())) {
glassBinaryValue = "戴太阳镜";
}
}
if (null != hatBinaryValue) {
if ("0".equals(hatBinaryValue.toString())) {
hatBinaryValue = "不确定";
} else if ("1".equals(hatBinaryValue.toString())) {
hatBinaryValue = "不戴帽子";
}else if ("2".equals(hatBinaryValue.toString())) {
hatBinaryValue = "戴帽子";
}
}
if (null != hairBinaryValue) {
if ("0".equals(hairBinaryValue.toString())) {
hairBinaryValue = "不确定";
} else if ("1".equals(hairBinaryValue.toString())) {
hairBinaryValue = "短发";
}else if ("2".equals(hairBinaryValue.toString())) {
hairBinaryValue = "长发";
}
}
}
}
resultMap.put("glass", glassBinaryValue);
resultMap.put("hat", hatBinaryValue);
resultMap.put("hair", hairBinaryValue);
/*Age
年龄段(byte0: bit0~bit7),按照年龄段划分
实际年龄(byte1: bit0~bit7)表示实际年龄数,实际年龄并没有置信度,也没有新旧版本标志*/
Object ageBinaryValue=null;
if (StringUtils.isNotEmpty(ageStr)) {
int age = Integer.parseInt(ageStr);
String ageBinary = DataUtil.decimalToBinary(age);
Map<Integer, Object> list = DataUtil.binaryToValue(ageBinary, 7);
if (null != list && list.size() > 0) {
// Object ageGroupBinaryValue = list.get(0);//年龄段
ageBinaryValue = list.get(1);//年龄
// resultMap.put("ageGroup", ageGroupBinaryValue);
}
}
resultMap.put("age", ageBinaryValue);
return resultMap;
}
}
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