Commit db1d763f by yangyang

人员可视化、群体研判、AES加密解密、剩余任务结果生成处理(湖南)

parent b8e0f6d3
......@@ -37,13 +37,11 @@ public class AjQueryParam {
String column;
//排序方式 升序asc,降序desc
String type;
Integer page;
Integer limit;
//分析维度
private String fxwd;
//共同关系系数
private String commonRelationshipNum;
//当前页
private Integer page;
//每页数
private Integer limit;
}
package com.founder.commonutils.model.newPublicEntity.ztypEntity;
import lombok.Data;
import java.util.List;
/**
* @author yangyang
* @description 可视化分析
*/
@Data
public class KsjResultPojo {
/**
* 节点信息组(去重的)
*/
private List<Nodes> nodes;
/**
* 关联关系组
*/
private List<Links> links;
@Data
public static class Nodes {
/**
节点下面显示的名称,如果需要多个显示,请传
"李xx\n23岁\n前端开发工程师" 单个的话就 "李xx"
*/
private String id;
/**
* 节点信息的唯一值(例如证件号码),节点是否去重就是依据id
*/
private String label;
/**
* (idcard: 人,aj: 案件,cph:车,sjk:手机,yhk:银行卡)判断节点图片
*/
private String imgType;
/**
* 将节点所有的信息全部放到这个字段中,包括id和label,注意的是,这个对象必须有一个字段imgType(idcard: 人,aj: 案件,cph:车,sjk:手机,yhk:银行卡)判断节点图片
*/
private Object properties;
}
@Data
public static class Links {
/**
* 源节点id值
*/
private String source;
/**
* 目标节点id值
*/
private String target;
/**
* 节点连线显示文字
*/
private String label;
/**
* (idcard: 人,aj: 案件,cph:车,sjk:手机,yhk:银行卡)判断节点图片
*/
private String imgType;
/**
* 将连线所有的信息全部放到这个字段中,注意事项同上,没有必要字段imgType
*/
private Object properties;
}
}
......@@ -22,26 +22,35 @@ public class SkAesController {
/**
* 新增字典
*/
@GetMapping("query/{data}")
@GetMapping("query/{data}/{flag}")
@ApiOperation(value = "AES加密")
@OperLog(message = "AES加密", operation = OperationType.QUERY)
public MapRestResult save(@PathVariable("data") String data) {
public MapRestResult save(@PathVariable("data") String data,@PathVariable("flag") String flag) {
String jiemi = null;
//使用AES-128-CBC加密模式
Date now = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
String today = simpleDateFormat.format(now);
String KEY = "maplogin" + today;
String IV = "map_vues" + today;
if("1".equals(flag)){
try {
data = AesEncryptUtil.encrypt(data, KEY, IV);
System.out.println("数据:" + data);
System.out.println("加密:" + data);
String jiemi = AesEncryptUtil.desEncrypt(data, KEY, IV).trim();
System.out.println("解密:" + jiemi);
} catch (Exception e) {
e.printStackTrace();
return MapRestResult.build(201, "AES-128-CBC加密失败", 1, e);
return MapRestResult.build(201, "AES-128-CBC加密失败", 0, e);
}
return MapRestResult.build(200, "AES-128-CBC加密模式", 1, "加密:" + data);
}else{
try {
jiemi = AesEncryptUtil.desEncrypt(data, KEY, IV).trim();
} catch (Exception e) {
e.printStackTrace();
return MapRestResult.build(201, "AES-128-CBC解密失败", 0, e);
}
}
return MapRestResult.build(200, "AES-128-CBC解密模式", 1, "解密:" + jiemi);
}
}
......@@ -151,7 +151,35 @@ public class SkRegionalsResultController extends ApiController implements ExcelC
case "qypz_people":
// 获取任务结果 阿里云读取json线上读取接口
listResult = skRegionalsResultService.MoreAreaInfoThread(params,taskType);
break;//区域碰撞手机
break;
case "qypz_ljxc":
// 路径寻车
listResult = skRegionalsResultService.MoreAreaInfoThread(params,taskType);
break;
case "qypz_skhz":
// 时空绘制
listResult = skRegionalsResultService.MoreAreaInfoThread(params,taskType);
break;
case "qypz_clafqt":
// 车辆案发潜逃
listResult = skRegionalsResultService.MoreAreaInfoThread(params,taskType);
break;
case "qypz_clsccx":
// 车辆首次出现
listResult = skRegionalsResultService.MoreAreaInfoThread(params,taskType);
break;
case "skhs_ryaqcd":
// 人员案前踩点
jsonArray = JsonUtils.readJsonFromClassPath(path+"/getJzhs.json", JSONArray.class);
break;//基站回溯 break;
case "qypz_rysccx":
// 人员首次出现
listResult = skRegionalsResultService.MoreAreaInfoThread(params,taskType);
break;
case "qypz_ryafqt":
// 人员案发潜逃
listResult = skRegionalsResultService.MoreAreaInfoThread(params,taskType);
break;
case "skph_people":
// 获取任务结果 阿里云读取json线上读取接口
listResult = skRegionalsResultService.OneAreaInfoTrampResultThread(params,taskType);
......
......@@ -102,7 +102,6 @@ public class ZtypController {
if (count != null && count > 0) {
records = ztypService.queryAjypfxData(requestParam);
}
return R.ok().total(count).rows(records);
}
......
......@@ -71,7 +71,7 @@
<select id="queryAjypfxData" resultType="com.founder.commonutils.model.newPublicEntity.ztypEntity.AjypFxPojo">
select th.thbh as thbh,
th.thglajsl as ajCount,
nvl(th.thgljlajsl,0) as jlajCount,
ifnull(th.thgljlajsl,0) as jlajCount,
th.thglxyrsl as xyrCount,
th.thglzdgzyrsl as zdgzyrCount
from tb_yw_shse_th th
......
......@@ -133,39 +133,39 @@
and tbsh.ASJXGFWBZH_FWBZH = LOWER(#{hm,jdbcType=VARCHAR}))
</select>
<select id="queryAjypfxData" resultType="com.founder.commonutils.model.newPublicEntity.ztypEntity.AjypFxPojo">
select th.thbh as thbh,
th.thglajsl as ajCount,
nvl(th.thgljlajsl,0) as jlajCount,
th.thglxyrsl as xyrCount,
th.thglzdgzyrsl as zdgzyrCount
select th.THBH as thbh,
th.THGLAJSL as ajCount,
ifnull(th.THGLJLAJSL,0) as jlajCount,
th.THGLXYRSL as xyrCount,
th.THGLZDGZYRSL as zdgzyrCount
from tb_yw_shse_th th
<where>
1 = 1
<if test="ajlx == '00'">
and th.thglxyrsl <![CDATA[>=]]> 3
and th.thglajsl <![CDATA[>=]]> 3
and th.THGLXYRSL <![CDATA[>=]]> 3
and th.THGLAJSL <![CDATA[>=]]> 3
</if>
<if test="ajlx == '01'">
and th.thglxyrsl <![CDATA[>=]]> 3
and th.thglajsl = 2
and th.THGLXYRSL <![CDATA[>=]]> 3
and th.THGLAJSL = 2
</if>
<if test="ajlx == '10'">
and th.thglxyrsl = 2
and th.thglajsl <![CDATA[>=]]> 3
and th.THGLXYRSL = 2
and th.THGLAJSL <![CDATA[>=]]> 3
</if>
<if test="ajlx == '11'">
and th.thglxyrsl = 2
and th.thglajsl = 2
and th.THGLXYRSL = 2
and th.THGLAJSL = 2
</if>
<if test="(ryxm != null and ryxm != '') or (hjd != null and hjd != '')">
and th.thbh in (select thxyr.thbh from tb_yw_shse_thglxyr thxyr
and th.thbh in (select thxyr.thbh from TB_YW_SHSE_THGLXYR thxyr
<where>
1 = 1
<if test="ryxm != null and ryxm != ''">
and thxyr.xm = #{ryxm}
and thxyr.XM = #{ryxm}
</if>
<if test="hjd != null and hjd != ''">
and thxyr.hjddm = #{hjd}
and thxyr.HJDDM = #{hjd}
</if>
</where>
)
......@@ -178,28 +178,29 @@
<where>
1 = 1
<if test="ajlbdm != null and ajlbdm != ''">
and thaj.ajlbdm = #{ajlbdm}
and thaj.AJLBDM = #{ajlbdm}
</if>
<if test="ajmc != null and ajmc != ''">
thaj.ajmc like '%${ajmc}%'
thaj.AJMC like '%${ajmc}%'
</if>
<if test="startDate != null">
and thaj.larq >= #{startDate, jdbcType=DATE}
and thaj.LARQ >= #{startDate, jdbcType=DATE}
</if>
<if test="endDate != null">
and thaj.larq <![CDATA[<=]]> #{endDate, jdbcType=DATE}
and thaj.LARQ <![CDATA[<=]]> #{endDate, jdbcType=DATE}
</if>
<if test="ladwdm != null and ladwdm != ''">
and thaj.ladwdm in (select code from sys_dictitem_xz where code_lev1
and thaj.LADWDM in (SELECT code FROM SYS_DICTITEM_XZ WHERE CODE_LEV1
=#{ladwdm, jdbcType=VARCHAR}
or code_lev2 =#{ladwdm, jdbcType=VARCHAR} or code_lev3 =#{ladwdm, jdbcType=VARCHAR}
or code_lev4 =#{ladwdm, jdbcType=VARCHAR} or code_lev5 =#{ladwdm, jdbcType=VARCHAR}
or CODE_LEV2 =#{ladwdm, jdbcType=VARCHAR} or CODE_LEV3 =#{ladwdm, jdbcType=VARCHAR}
or CODE_LEV4 =#{ladwdm, jdbcType=VARCHAR} or CODE_LEV5 =#{ladwdm, jdbcType=VARCHAR}
)
</if>
</where>
)
</if>
</where>
limit #{page},#{limit}
</select>
<select id="queryAjypfxCount" resultType="java.lang.Integer">
select count(th.THBH)
......@@ -207,30 +208,30 @@
<where>
1 = 1
<if test="ajlx == '00'">
and th.thglxyrsl <![CDATA[>=]]> 3
and th.thglajsl <![CDATA[>=]]> 3
and th.THGLXYRSL <![CDATA[>=]]> 3
and th.THGLAJSL <![CDATA[>=]]> 3
</if>
<if test="ajlx == '01'">
and th.thglxyrsl <![CDATA[>=]]> 3
and th.thglajsl = 2
and th.THGLXYRSL <![CDATA[>=]]> 3
and th.THGLAJSL = 2
</if>
<if test="ajlx == '10'">
and th.thglxyrsl = 2
and th.thglajsl <![CDATA[>=]]> 3
and th.THGLXYRSL = 2
and th.THGLAJSL <![CDATA[>=]]> 3
</if>
<if test="ajlx == '11'">
and th.thglxyrsl = 2
and th.thglajsl = 2
and th.THGLXYRSL = 2
and th.THGLAJSL = 2
</if>
<if test="(ryxm != null and ryxm != '') or (hjd != null and hjd != '')">
and th.thbh in (select thxyr.thbh from tb_yw_shse_thglxyr thxyr
and th.thbh in (select thxyr.thbh from TB_YW_SHSE_THGLXYR thxyr
<where>
1 = 1
<if test="ryxm != null and ryxm != ''">
and thxyr.xm = #{ryxm}
and thxyr.XM = #{ryxm}
</if>
<if test="hjd != null and hjd != ''">
and thxyr.hjddm = #{hjd}
and thxyr.HJDDM = #{hjd}
</if>
</where>
)
......@@ -239,26 +240,26 @@
or startDate != null or endDate != null">
and th.thbh in (
select thbh
from tb_yw_shse_thglasj thaj
from TB_YW_SHSE_THGLASJ thaj
<where>
1 = 1
<if test="ajlbdm != null and ajlbdm != ''">
and thaj.ajlbdm = #{ajlbdm}
and thaj.AJLBDM = #{ajlbdm}
</if>
<if test="ajmc != null and ajmc != ''">
thaj.ajmc like '%${ajmc}%'
thaj.AJMC like '%${ajmc}%'
</if>
<if test="startDate != null">
and thaj.larq >= #{startDate, jdbcType=DATE}
and thaj.LARQ >= #{startDate, jdbcType=DATE}
</if>
<if test="endDate != null">
and thaj.larq <![CDATA[<=]]> #{endDate, jdbcType=DATE}
and thaj.LARQ <![CDATA[<=]]> #{endDate, jdbcType=DATE}
</if>
<if test="ladwdm != null and ladwdm != ''">
and thaj.ladwdm in (SELECT code FROM sys_dictitem_xz WHERE code_lev1
and thaj.LADWDM in (SELECT code FROM SYS_DICTITEM_XZ WHERE CODE_LEV1
=#{ladwdm, jdbcType=VARCHAR}
or code_lev2 =#{ladwdm, jdbcType=VARCHAR} or code_lev3 =#{ladwdm, jdbcType=VARCHAR}
or code_lev4 =#{ladwdm, jdbcType=VARCHAR} or code_lev5 =#{ladwdm, jdbcType=VARCHAR}
or CODE_LEV2 =#{ladwdm, jdbcType=VARCHAR} or CODE_LEV3 =#{ladwdm, jdbcType=VARCHAR}
or CODE_LEV4 =#{ladwdm, jdbcType=VARCHAR} or CODE_LEV5 =#{ladwdm, jdbcType=VARCHAR}
)
</if>
</where>
......
......@@ -230,6 +230,30 @@ public class SkRegionalsResultServiceImpl extends ServiceImpl<SkRegionalsResultM
// 获取回溯结果 阿里云读取json线上读取接口
carOrPhoneInfolist = phoneall(receiving);
break;//区域碰撞手机
case "qypz_ljxc":
// 获取回溯结果 阿里云读取json线上读取接口
carOrPhoneInfolist = carall(receiving);
break;//区域碰撞车辆
case "qypz_skhz":
// 获取回溯结果 阿里云读取json线上读取接口
carOrPhoneInfolist = phoneall(receiving);
break;//区域碰撞手机
case "qypz_clafqt":
// 获取回溯结果 阿里云读取json线上读取接口
carOrPhoneInfolist = carall(receiving);
break;//区域碰撞车辆
case "qypz_clsccx":
// 获取回溯结果 阿里云读取json线上读取接口
carOrPhoneInfolist = carall(receiving);
break;//区域碰撞车辆
case "qypz_rysccx":
// 获取回溯结果 阿里云读取json线上读取接口
carOrPhoneInfolist = phoneall(receiving);
break;//区域碰撞手机
case "qypz_ryafqt":
// 获取回溯结果 阿里云读取json线上读取接口
carOrPhoneInfolist = phoneall(receiving);
break;//区域碰撞手机
case "skph_car":
// 获取徘徊结果 阿里云读取json线上读取接口
carOrPhoneInfolist = carall(receiving);
......
package com.founder.publicapi.service.serviceimpl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.founder.commonutils.model.newPublicEntity.*;
import com.founder.commonutils.model.newPublicEntity.ztypEntity.AjThKshfxPojo;
import com.founder.commonutils.model.newPublicEntity.ztypEntity.AjypFxPojo;
import com.founder.commonutils.model.newPublicEntity.ztypEntity.KsjResultPojo;
import com.founder.publicapi.mapper.mysqlMapper.TbStAsjMapper;
import com.founder.publicapi.mapper.mysqlMapper.TbStZtypFwbshMapper;
import com.founder.publicapi.mapper.mysqlMapper.ZtypMapper;
import com.founder.publicapi.service.ZtypService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
@Service
public class ZtypServiceImpl implements ZtypService {
......@@ -19,6 +27,9 @@ public class ZtypServiceImpl implements ZtypService {
ZtypMapper ztypMapper;
@Autowired
TbStZtypFwbshMapper tbStZtypFwbshMapper;
@Autowired
private TbStAsjMapper tbStAsjMapper;
@Override
public List<ZpajxxEntity> getZpajxx(ZpajxxModel model) {
return ztypMapper.getZpajxx(model);
......@@ -181,4 +192,274 @@ public class ZtypServiceImpl implements ZtypService {
thLabel.setCommonCashAccountCount(commonTjCount.toString());
}
}
@Override
public MapRestResult kshdata(TbStZtypFwbsh fwbsh) {
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
KsjResultPojo ksjResultPojo = new KsjResultPojo();// 最终对象数据
List<KsjResultPojo.Nodes> nodes = new ArrayList<>();// 存储所有节点去重后数据
List<KsjResultPojo.Links> links = new ArrayList<>();// 存储所有节点关系
AjThKshfxPojo root = getKshDataType(fwbsh);
if (root == null) {
//安全性校验
return MapRestResult.error("入参类型错误!");
}
if ("personid".equals(fwbsh.getFwbshLb())) { // 类型为身份证号
CountDownLatch countDownLatch = new CountDownLatch(4);
String zjhm = root.getId();// 证件号入参
// 证件号码加入节点
KsjResultPojo.Nodes nodeZjhm = new KsjResultPojo.Nodes();
nodeZjhm.setId(zjhm);
nodeZjhm.setLabel("证件号码:" + zjhm);
nodeZjhm.setImgType("idcard");
nodeZjhm.setProperties(JSONObject.toJSON(nodeZjhm));
nodes.add(nodeZjhm);
// 查询人员案件信息
class Ra extends Thread{
String value;
void setValue(String zjbh){
this.value = zjbh;
}
@Override
public void run(){
List<String> listResult = new ArrayList<>();
try {
List<Map<String,Object>> asjList = tbStAsjMapper.getAsjxxByZjhm(value);
for(Map<String,Object> mapAsj:asjList){
listResult.add(mapAsj.get("asjbh").toString());
}
listResult.stream().distinct().forEach(obj -> {
// 组装去重数据
KsjResultPojo.Nodes node = new KsjResultPojo.Nodes();
node.setId(obj);
node.setLabel(obj);
node.setImgType("aj");
node.setProperties(JSONObject.toJSON(node));
nodes.add(node);
// 组装关系数据
KsjResultPojo.Links link = new KsjResultPojo.Links();
link.setSource(value);
link.setTarget(obj);
link.setLabel("人案");
link.setImgType("aj");
link.setProperties(JSONObject.toJSON(link));
links.add(link);
});
countDownLatch.countDown();
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 查询人员手机和相关信息线程
class Phone extends Thread{
String value;
void setValue(String zjbh){
this.value = zjbh;
}
@Override
public void run(){
List<String> listResult = new ArrayList<>();
try {
String phone = "15754879533";// 模拟接口
listResult.add(phone);
if (listResult == null) {
listResult = new ArrayList<>();
}
} catch (Exception e) {
listResult = new ArrayList<>();
e.printStackTrace();
}
listResult.stream().distinct().forEach(obj -> {
// 组装去重数据
KsjResultPojo.Nodes node = new KsjResultPojo.Nodes();
node.setId(obj);
node.setLabel(obj);
node.setImgType("sjk");
node.setProperties(JSONObject.toJSON(node));
nodes.add(node);
// 组装关系数据
KsjResultPojo.Links link = new KsjResultPojo.Links();
link.setSource(value);
link.setTarget(obj);
link.setLabel("机主");
link.setImgType("sjk");
link.setProperties(JSONObject.toJSON(link));
links.add(link);
});
countDownLatch.countDown();
};
}
// 查询人员车辆
class Car extends Thread{
String value;
void setValue(String zjbh){
this.value = zjbh;
}
@Override
public void run(){
List<String> listResult = new ArrayList<>();
try {
String phone = "蒙AKH824";// 模拟接口
listResult.add(phone);
if (listResult == null) {
listResult = new ArrayList<>();
}
} catch (Exception e) {
listResult = new ArrayList<>();
e.printStackTrace();
}
listResult.stream().distinct().forEach(obj -> {
// 组装去重数据
KsjResultPojo.Nodes node = new KsjResultPojo.Nodes();
node.setId(obj);
node.setLabel(obj);
node.setImgType("cph");
node.setProperties(JSONObject.toJSON(node));
nodes.add(node);
// 组装关系数据
KsjResultPojo.Links link = new KsjResultPojo.Links();
link.setSource(value);
link.setTarget(obj);
link.setLabel("车主");
link.setImgType("cph");
link.setProperties(JSONObject.toJSON(link));
links.add(link);
});
countDownLatch.countDown();
}
}
// 查询人员银行卡号
class Yhkh extends Thread{
String value;
void setValue(String zjbh){
this.value = zjbh;
}
@Override
public void run(){
List<String> listResult = new ArrayList<>();
try {
String phone = "6216625552447663148522";// 模拟接口
listResult.add(phone);
if (listResult == null) {
listResult = new ArrayList<>();
}
} catch (Exception e) {
listResult = new ArrayList<>();
e.printStackTrace();
}
listResult.stream().distinct().forEach(obj -> {
// 组装去重数据
KsjResultPojo.Nodes node = new KsjResultPojo.Nodes();
node.setId(obj);
node.setLabel(obj);
node.setImgType("yhk");
node.setProperties(JSONObject.toJSON(node));
nodes.add(node);
// 组装关系数据
KsjResultPojo.Links link = new KsjResultPojo.Links();
link.setSource(value);
link.setTarget(obj);
link.setLabel("卡号");
link.setImgType("yhk");
link.setProperties(JSONObject.toJSON(link));
links.add(link);
});
countDownLatch.countDown();
}
}
Ra ra = new Ra();
ra.setValue(zjhm);
cachedThreadPool.execute(ra);
Phone phone = new Phone();
phone.setValue(zjhm);
cachedThreadPool.execute(phone);
Car car = new Car();
car.setValue(zjhm);
cachedThreadPool.execute(car);
Yhkh yhkh = new Yhkh();
yhkh.setValue(zjhm);
cachedThreadPool.execute(yhkh);
try {
countDownLatch.await();
cachedThreadPool.shutdown();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
ksjResultPojo.setNodes(nodes);
ksjResultPojo.setLinks(links);
return new MapRestResult(200, "可视化结果获取成功", 1, ksjResultPojo);
}
private AjThKshfxPojo getKshDataType(TbStZtypFwbsh fwbsh) {
AjThKshfxPojo root = new AjThKshfxPojo();
root.setId(fwbsh.getFwbshHm());
root.setParentType("group");
String fwbshLb = fwbsh.getFwbshLb();
if (fwbshLb != null) {
switch (fwbshLb) {
case "personid": {
root.setType("person");
root.setName("身份证号:" + fwbsh.getFwbshHm());
root.setParentName("身份证号:" + fwbsh.getFwbshHm());
break;
}
case "mobile": {
root.setType("phone");
root.setName("手机号码:" + fwbsh.getFwbshHm());
root.setParentName("手机号码:" + fwbsh.getFwbshHm());
break;
}
case "yhkh": {
root.setType("bankCard");
root.setName("银行卡号:" + fwbsh.getFwbshHm());
root.setParentName("银行卡号:" + fwbsh.getFwbshHm());
break;
}
case "carid": {
root.setType("car");
root.setName("车牌号码:" + fwbsh.getFwbshHm());
root.setParentName("车牌号码:" + fwbsh.getFwbshHm());
break;
}
case "qq": {
root.setType("qq");
root.setName("QQ号码:" + fwbsh.getFwbshHm());
root.setParentName("QQ号码:" + fwbsh.getFwbshHm());
break;
}
case "wx": {
root.setType("wechat");
root.setName("微信号码:" + fwbsh.getFwbshHm());
root.setParentName("微信号码:" + fwbsh.getFwbshHm());
break;
}
default: {
return null;
}
}
}
return root;
}
}
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