Commit c3a4bc12 authored by wangjinjing's avatar wangjinjing

修改json 格式,添加边界入侵管理,修改MySQLjar版本

parent e323b131
package im.zksy.yjmqserver.system.listener;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import im.zksy.yjmqserver.common.util.CommonUtil;
import im.zksy.yjmqserver.common.util.DateUtil;
import im.zksy.yjmqserver.common.util.FTPUtils;
import im.zksy.yjmqserver.system.model.Alarm;
import im.zksy.yjmqserver.system.model.Data;
import im.zksy.yjmqserver.system.model.Picture;
import im.zksy.yjmqserver.system.mqtt.MQTTSubsribe;
import im.zksy.yjmqserver.system.mqtt.MyMqttRecieveMessage;
import im.zksy.yjmqserver.system.service.AlarmService;
import im.zksy.yjmqserver.system.service.PictureService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -10,6 +19,9 @@ import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Component
......@@ -22,7 +34,6 @@ public class MyCommandLineRunner implements CommandLineRunner {
@Value("${spring.mqtt.topic}")
private String topic;
@Override
public void run(String... strings) throws Exception {
logger.info("系统启动后自动执行");
......
package im.zksy.yjmqserver.system.model;
import java.util.List;
public class Alarm {
private String identity;
private Data data;
private String uuid;
private String checkName;
private String checkJpg;
private String collector_output_file;
private String device_model;
private String device_name;
private String device_sn;
private String factory_name;
private String imageType;
private String ip_addr;
private List<String> label_text;;
private String time_norm;
private String videoPath;
private String videoState;
private String dataType;
private String type;
private String id;
public String getIdentity() {
return identity;
}
......@@ -14,12 +30,116 @@ public class Alarm {
this.identity = identity;
}
public Data getData() {
return data;
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public String getCheckName() {
return checkName;
}
public void setCheckName(String checkName) {
this.checkName = checkName;
}
public String getCheckJpg() {
return checkJpg;
}
public void setCheckJpg(String checkJpg) {
this.checkJpg = checkJpg;
}
public String getCollector_output_file() {
return collector_output_file;
}
public void setCollector_output_file(String collector_output_file) {
this.collector_output_file = collector_output_file;
}
public String getDevice_model() {
return device_model;
}
public void setDevice_model(String device_model) {
this.device_model = device_model;
}
public String getDevice_name() {
return device_name;
}
public void setDevice_name(String device_name) {
this.device_name = device_name;
}
public String getDevice_sn() {
return device_sn;
}
public void setDevice_sn(String device_sn) {
this.device_sn = device_sn;
}
public String getFactory_name() {
return factory_name;
}
public void setFactory_name(String factory_name) {
this.factory_name = factory_name;
}
public String getImageType() {
return imageType;
}
public void setImageType(String imageType) {
this.imageType = imageType;
}
public String getIp_addr() {
return ip_addr;
}
public void setIp_addr(String ip_addr) {
this.ip_addr = ip_addr;
}
public List<String> getLabel_text() {
return label_text;
}
public void setLabel_text(List<String> label_text) {
this.label_text = label_text;
}
public String getTime_norm() {
return time_norm;
}
public void setTime_norm(String time_norm) {
this.time_norm = time_norm;
}
public String getVideoPath() {
return videoPath;
}
public void setVideoPath(String videoPath) {
this.videoPath = videoPath;
}
public String getVideoState() {
return videoState;
}
public void setData(Data data) {
this.data = data;
public void setVideoState(String videoState) {
this.videoState = videoState;
}
public String getDataType() {
......
......@@ -7,7 +7,7 @@ public class AlarmInfo {
private String collector_output_file;
private String device_model;
private String device_name;
private String device_sn;
private String device_sn;
private String factory_name;
private String imageType;
private String ip_addr;
......@@ -18,6 +18,15 @@ public class AlarmInfo {
private String identity;
private String dataType;
private String type;
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUuid() {
return uuid;
......
......@@ -71,7 +71,7 @@ public class MQTTSubsribe {
}
}
}, 5000L, 10000L, TimeUnit.MILLISECONDS);
}, 5, 10, TimeUnit.SECONDS);
}
......@@ -88,7 +88,7 @@ public class MQTTSubsribe {
this.mqttConnectOptions.setServerURIs(new String[]{url});
this.mqttConnectOptions.setConnectionTimeout(completionTimeout);
this.mqttConnectOptions.setKeepAliveInterval(2000);
// this.mqttConnectOptions.setAutomaticReconnect(true);
return mqttConnectOptions;
}
......
......@@ -6,6 +6,7 @@ import im.zksy.yjmqserver.common.util.CommonUtil;
import im.zksy.yjmqserver.common.util.DateUtil;
import im.zksy.yjmqserver.common.util.FTPUtils;
import im.zksy.yjmqserver.system.model.Alarm;
import im.zksy.yjmqserver.system.model.AlarmInfo;
import im.zksy.yjmqserver.system.model.Data;
import im.zksy.yjmqserver.system.model.Picture;
import im.zksy.yjmqserver.system.service.AlarmService;
......@@ -41,7 +42,7 @@ public class PushCallback implements MqttCallback,IMQTTPublisher {
@Override
public void connectionLost(Throwable throwable) {
// 连接丢失后,一般在这里面进行重连
log.info("连接断开,可以做重连");
log.info("连接断开,重连");
this.mqttSubsribe.startReconnect();
}
......@@ -49,64 +50,86 @@ public class PushCallback implements MqttCallback,IMQTTPublisher {
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
String str = message.toString();
log.info(str.toString());
Alarm alarm = null;
// String str =new String(message.getPayload(),"GB2312");
Alarm alarm = new Alarm();
JSONObject alarmjson=null;
Integer checkvalue = 1;
try {
Integer checkvalue = 1;
alarm = new ObjectMapper().readValue(str, Alarm.class);
alarmjson = new ObjectMapper().readValue(message.getPayload(), JSONObject.class);
} catch (Exception ex) {
}
if (null!=alarm && alarm.getType().equals("0"))//type 指令类型:0:告警事件 1:边缘设备运行状态
{
Data alarmdata = alarm.getData();
// if ((alarmdata.getLabel13() != null && alarmdata.getLabel13().equals(checkvalue))//人脸考勤
// || (alarmdata.getLabel14() != null && alarmdata.getLabel14().equals(checkvalue))//陌生人
// || (alarmdata.getLabel18() != null && alarmdata.getLabel18().equals(checkvalue))//行人跟踪
// || (alarmdata.getLabel19() != null && alarmdata.getLabel19().equals(checkvalue))//倒地检测
// || (alarmdata.getLabel20() != null && alarmdata.getLabel20().equals(checkvalue))//行人检测
// || (alarmdata.getLabel49() != null && alarmdata.getLabel49().equals(checkvalue))//人员离岗
// || (alarmdata.getLabel50() != null && alarmdata.getLabel50().equals(checkvalue))//人员聚集
// || (alarmdata.getLabel51() != null && alarmdata.getLabel51().equals(checkvalue))//攀高检测
// ) {
String checkJpg = alarmdata.getCheckJpg();
}
if (null!=alarmjson && alarmjson.getString("type").equals("0"))//type 指令类型:0:告警事件 1:边缘设备运行状态
{
JSONObject alarmdata = alarmjson.getJSONObject("data");
if ((alarmdata.getInteger("label03")!= null && alarmdata.getInteger("label03").equals(checkvalue)) //边界入侵
|| (alarmdata.getInteger("label13")!= null && alarmdata.getInteger("label13").equals(checkvalue))//人脸考勤
|| (alarmdata.getInteger("label14") != null && alarmdata.getInteger("label14").equals(checkvalue))//陌生人
|| (alarmdata.getInteger("label18") != null && alarmdata.getInteger("label18") .equals(checkvalue))//行人跟踪
|| (alarmdata.getInteger("label19") != null && alarmdata.getInteger("label19").equals(checkvalue))//倒地检测
|| (alarmdata.getInteger("label20")!= null && alarmdata.getInteger("label20").equals(checkvalue))//行人检测
|| (alarmdata.getInteger( "label49")!= null && alarmdata.getInteger( "label49").equals(checkvalue))//人员离岗
|| (alarmdata.getInteger( "label50") != null && alarmdata.getInteger( "label50").equals(checkvalue))//人员聚集
|| (alarmdata.getInteger( "label51")!= null && alarmdata.getInteger( "label51").equals(checkvalue))//攀高检测
) {
String checkJpg = alarmdata.getString("checkJpg");
String path = DateUtil.getDateStringNoSign(new Date());
String picid = CommonUtil.getUUID() + ".jpg";
alarm.getData().setCheckJpg(path + "/" + picid);
alarm.setCheckJpg(path + "/" + picid);
alarm.setUuid(alarmdata.getString("uuid"));
alarm.setDataType(alarmjson.getString("dataType"));
alarm.setType(alarmjson.getString("type"));
alarm.setIdentity(alarmjson.getString("identity"));
alarm.setCheckName(alarmdata.getString("checkName"));
alarm.setCollector_output_file(alarmdata.getString("collector_output_file"));
alarm.setDevice_model(alarmdata.getString("device_model"));
alarm.setDevice_sn(alarmdata.getString("device_model"));
alarm.setDevice_name(alarmdata.getString("device_sn"));
alarm.setFactory_name(alarmdata.getString("factory_name"));
alarm.setImageType(alarmdata.getString("imageType"));
alarm.setIp_addr(alarmdata.getString("ip_addr"));
alarm.setTime_norm(alarmdata.getString("time_norm"));
alarm.setVideoPath(alarmdata.getString("videoPath"));
alarm.setVideoState(alarmdata.getString("videoState"));
//labeltext
List<String> list=alarm.getData().getLabel_text();
List<String> list_normal = list.stream()
.filter(b -> b.indexOf("人脸考勤")<0 && b.indexOf("陌生人")<0 && b.indexOf("行人跟踪")<0 && b.indexOf("行人检测")<0 )
List<String> list = JSONObject.parseArray(alarmdata.getJSONArray("label_text").toString(),String.class);
List<String> list_normal = list.stream()
.filter(b -> b.indexOf("人脸考勤") < 0 && b.indexOf("陌生人") < 0 && b.indexOf("行人跟踪") < 0 && b.indexOf("行人检测") < 0)
.collect(Collectors.toList());
//过滤人员进行人员靠近数据替换
List<String> list_rykj = list.stream()
.filter(b -> b.indexOf("人脸考勤")>=0 || b.indexOf("陌生人")>=0 || b.indexOf("行人跟踪")>=0 || b.indexOf("行人检测")>=0 )
List<String> list_rykj = list.stream()
.filter(b -> b.indexOf("人脸考勤") >= 0 || b.indexOf("陌生人") >= 0 || b.indexOf("行人跟踪") >= 0 || b.indexOf("行人检测") >= 0)
.collect(Collectors.toList());
if(list_rykj.size()>0){
if (list_rykj.size() > 0) {
list_normal.add("人员靠近");
}
alarm.getData().setLabel_text(list_normal);
list_normal= list_normal.stream().distinct().collect(Collectors.toList());
alarm.setLabel_text(list_normal);
int alarmid = alarmService.insert(alarm); //入表
//异步上传ftpconnectServer
FTPUtils util = new FTPUtils();
try {
Picture pic = new Picture();
pic.setId(alarm.getId());
pic.setImgpath(path + "/" + picid);
if (util.uploadFile(path, picid, checkJpg)) {
pic.setImg("");
pic.setStatus("1");//成功
} else {
//记录入表.失败保留图片base64?
pic.setImg(checkJpg);
pic.setStatus("0");
if(null!=checkJpg && !checkJpg.equals("")){
FTPUtils util = new FTPUtils();
try {
Picture pic = new Picture();
// pic.setId(alarm.getId());
pic.setImgpath(path + "/" + picid);
if (util.uploadFile(path, picid, checkJpg)) {
pic.setImg("");
pic.setStatus("1");//成功
} else {
//记录入表.失败保留图片base64?
pic.setImg(checkJpg);
pic.setStatus("0");
}
pictureService.insert(pic);
} catch (Exception ex) {
log.error(ex.toString());
}
pictureService.insert(pic);
} catch (Exception ex) {
log.error(ex.toString());
}else{
log.info("无图片");
}
}
}
}
@Override
......
......@@ -14,12 +14,12 @@ spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://192.168.168.212:3306/alarm?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.168.212:3306/alarm?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
maxWait: 600000
redis:
host: localhost
......
......@@ -44,7 +44,7 @@
</appender>
<!-- mybatis sql-->
<logger name ="com.sy.dao" level="DEBUG" additivity="false">
<logger name ="im.zksy.yjmqserver.system.mapper" level="DEBUG" additivity="false">
<appender-ref ref="sqlFileAppender"/>
</logger>
......
......@@ -64,20 +64,20 @@
ip_addr, label_text, time_norm, videopath, videostate, identity, datatype, type)
values(
#{id,jdbcType = VARCHAR },
#{data.uuid,jdbcType = VARCHAR },
#{data.checkName,jdbcType = VARCHAR },
#{data.checkJpg,jdbcType = VARCHAR },
#{data.collector_output_file, jdbcType = VARCHAR },
#{data.device_model,jdbcType = VARCHAR },
#{data.device_name, jdbcType = VARCHAR },
#{data.device_sn,jdbcType = VARCHAR },
#{data.factory_name,jdbcType = VARCHAR },
#{data.imageType,jdbcType = VARCHAR },
#{data.ip_addr,jdbcType = VARCHAR },
#{data.label_text,jdbcType = VARCHAR,typeHandler = im.zksy.yjmqserver.common.util.ListToStringHandler },
#{data.time_norm,jdbcType = VARCHAR },
#{data.videoPath,jdbcType = VARCHAR },
#{data.videoState,jdbcType = VARCHAR },
#{uuid,jdbcType = VARCHAR },
#{checkName,jdbcType = VARCHAR },
#{checkJpg,jdbcType = VARCHAR },
#{collector_output_file, jdbcType = VARCHAR },
#{device_model,jdbcType = VARCHAR },
#{device_name, jdbcType = VARCHAR },
#{device_sn,jdbcType = VARCHAR },
#{factory_name,jdbcType = VARCHAR },
#{imageType,jdbcType = VARCHAR },
#{ip_addr,jdbcType = VARCHAR },
#{label_text,jdbcType = VARCHAR,typeHandler = im.zksy.yjmqserver.common.util.ListToStringHandler },
#{time_norm,jdbcType = VARCHAR },
#{videoPath,jdbcType = VARCHAR },
#{videoState,jdbcType = VARCHAR },
#{identity,jdbcType = VARCHAR },
#{dataType,jdbcType = VARCHAR },
#{type,jdbcType = VARCHAR } )
......
......@@ -44,7 +44,6 @@ let vue_myModal1 = new Vue({
}
});
}else{
edit=false;
$.ajax({
url: "/video/edit",
dataType: "json",
......@@ -100,6 +99,13 @@ let vue_right = new Vue({
setTimeout(function () {
// alert(vue_myModal1.options);
// vue_myModal1.data_s={};
edit=false;
vue_myModal1.data_s.id=null;
vue_myModal1.data_s.videoId=null;
vue_myModal1.data_s.videoName=null;
vue_myModal1.data_s.qybh=null;
vue_myModal1.data_s.qymc=null;
vue_myModal1.data_s.rtsp=null;
$("#myModal1").modal("show");
}, 1000);
......
......@@ -53,7 +53,7 @@ $(function() {
]
},
{
menuName: "围墙",
menuName: "围墙",
menuUrl: "/ssdt",
id:'4000',
childMenus: [{ menuName: "人员靠近检测", menuUrl: "/ssdt",parentid:'4000' , id:'4010',lebeltext:"人员靠近"}]
......
......@@ -17,13 +17,16 @@ let vue_sjcx = new Vue({
count: '',
fy_select: 21,
show_nums: false,
clzt_select: ["人员离岗", "人员聚集"],
clzt_select: ["人员离岗", "人员聚集","边界入侵"],
options: [{
value: "人员离岗",
text: "重点人员离开检测"
}, {
value: "人员聚集",
text: "车间通道人员聚集检测"
},{
value: "边界入侵",
text: "边界入侵"
}],
colorArray: [{
"id": "人员离岗",
......@@ -46,7 +49,10 @@ let vue_sjcx = new Vue({
"id": "人员靠近",
"color": "#00B9B8"
},
{
"id":"边界入侵",
"color":"#92004a"
}
]
},
methods: {
......@@ -62,7 +68,7 @@ let vue_sjcx = new Vue({
let processstatus = "";
if (this.clzt_select.length == 0) {
processstatus = "人员离岗,人员聚集";
processstatus = "人员离岗,人员聚集,边界入侵";
} else {
this.clzt_select.forEach((item, index) => {
processstatus = processstatus + item + ',';
......
......@@ -17,7 +17,7 @@ let vue_sjcx = new Vue({
count: '',
fy_select: 21,
show_nums: false,
clzt_select: ["人员离岗","人员攀高" ,"倒地检测"],
clzt_select: ["人员离岗","人员攀高" ,"倒地检测","边界入侵"],
options: [{
value: "人员离岗",
text: "重点人员离开检测"
......@@ -27,6 +27,9 @@ let vue_sjcx = new Vue({
}, {
value: "倒地检测",
text: "人员倒地"
},{
value: "边界入侵",
text: "边界入侵"
}],
colorArray:[{
"id":"人员离岗",
......@@ -49,7 +52,10 @@ let vue_sjcx = new Vue({
"id":"人员靠近",
"color":"#00B9B8"
},
{
"id":"边界入侵",
"color":"#92004a"
}
]
},
methods: {
......@@ -67,7 +73,7 @@ let vue_sjcx = new Vue({
let processstatus = "";
if (this.clzt_select.length == 0) {
processstatus = "人员离岗,人员攀高 ,倒地检测";
processstatus = "人员离岗,人员攀高 ,倒地检测,边界入侵";
} else {
this.clzt_select.forEach((item, index)=> {
processstatus = processstatus + item + ',';
......
......@@ -17,11 +17,15 @@ let vue_sjcx = new Vue({
count: '',
fy_select: 21,
show_nums: false,
clzt_select: ["人员靠近"],
clzt_select: ["人员靠近","边界入侵"],
options: [{
value: "人员靠近",
text: "人员靠近检测"
}],
},{
value: "边界入侵",
text: "边界入侵"
}
],
colorArray:[{
"id":"人员离岗",
"color":"#48AFE4"
......@@ -43,7 +47,10 @@ let vue_sjcx = new Vue({
"id":"人员靠近",
"color":"#00B9B8"
},
{
"id":"边界入侵",
"color":"#92004a"
}
]
},
methods: {
......@@ -61,7 +68,7 @@ let vue_sjcx = new Vue({
let processstatus = "";
if (this.clzt_select.length == 0) {
processstatus = "人员靠近";
processstatus = "人员靠近,边界入侵";
} else {
this.clzt_select.forEach((item, index)=> {
processstatus = processstatus + item + ',';
......@@ -73,7 +80,7 @@ let vue_sjcx = new Vue({
dateType: 'json',
type: "POST",
contentType: 'application/json',
data: JSON.stringify({kssj:starttime,jssj:endtime,labelText:processstatus,menuid:'1',//周界围墙
data: JSON.stringify({kssj:starttime,jssj:endtime,labelText:processstatus,menuid:'2',//监区通道
pageInfo: {pageNum:pages,pageSize:this.fy_select}}),
success: function (result) {
vue_sjcx.data_table_wfpz = [];
......
......@@ -17,10 +17,13 @@ let vue_sjcx = new Vue({
count: '',
fy_select: 21,
show_nums: false,
clzt_select: ["人员靠近"],
clzt_select: ["人员靠近","边界入侵"],
options: [{
value: "人员靠近",
text: "定时巡更检测"
},{
value: "边界入侵",
text: "边界入侵"
}],
colorArray:[{
"id":"人员离岗",
......@@ -44,6 +47,10 @@ let vue_sjcx = new Vue({
"color":"#00B9B8"
},
{
"id":"边界入侵",
"color":"#92004a"
}
]
},
methods: {
......@@ -61,7 +68,7 @@ let vue_sjcx = new Vue({
let processstatus = "";
if (this.clzt_select.length == 0) {
processstatus = "人员靠近";
processstatus = "人员靠近,边界入侵";
} else {
this.clzt_select.forEach((item, index)=> {
processstatus = processstatus + item + ',';
......@@ -73,7 +80,7 @@ let vue_sjcx = new Vue({
dateType: 'json',
type: "POST",
contentType: 'application/json',
data: JSON.stringify({kssj:starttime,jssj:endtime,labelText:processstatus,menuid:'2',//监区通道
data: JSON.stringify({kssj:starttime,jssj:endtime,labelText:processstatus,menuid:'1',//周界围墙
pageInfo: {pageNum:pages,pageSize:this.fy_select}}),
success: function (result) {
vue_sjcx.data_table_wfpz = [];
......
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