Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
hzjtpushdateService
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
jianjin
hzjtpushdateService
Commits
1293d095
Commit
1293d095
authored
Jan 04, 2021
by
高飞
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
五分钟
parent
7208731a
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
235 additions
and
233 deletions
+235
-233
src/main/java/com/hzjt/config/ScheduleTaskConfig.java
src/main/java/com/hzjt/config/ScheduleTaskConfig.java
+1
-1
src/main/java/com/hzjt/controller/TraffController.java
src/main/java/com/hzjt/controller/TraffController.java
+151
-154
src/main/java/com/hzjt/domain/Traffalarmrecord.java
src/main/java/com/hzjt/domain/Traffalarmrecord.java
+36
-35
src/main/java/com/hzjt/handler/WebSocket.java
src/main/java/com/hzjt/handler/WebSocket.java
+4
-2
src/main/java/com/hzjt/mapper/TraffAlarmRecordMapper.java
src/main/java/com/hzjt/mapper/TraffAlarmRecordMapper.java
+1
-1
src/main/java/com/hzjt/mapper/TraffFlowMapper.java
src/main/java/com/hzjt/mapper/TraffFlowMapper.java
+1
-1
src/main/java/com/hzjt/service/EventWriteService.java
src/main/java/com/hzjt/service/EventWriteService.java
+4
-1
src/main/java/com/hzjt/service/TraffFlowService.java
src/main/java/com/hzjt/service/TraffFlowService.java
+2
-2
src/main/java/com/hzjt/util/DateUtils.java
src/main/java/com/hzjt/util/DateUtils.java
+4
-0
src/main/resources/application.properties
src/main/resources/application.properties
+2
-2
src/main/resources/mapper/TraffFlow.xml
src/main/resources/mapper/TraffFlow.xml
+2
-2
src/main/resources/mapper/Traffalarmrecord.xml
src/main/resources/mapper/Traffalarmrecord.xml
+27
-32
No files found.
src/main/java/com/hzjt/config/ScheduleTaskConfig.java
View file @
1293d095
...
...
@@ -48,7 +48,7 @@ public class ScheduleTaskConfig {
if
(
c
.
get
(
Calendar
.
DATE
)
==
c
.
getActualMaximum
(
Calendar
.
DATE
))
{
log
.
info
(
"每个月最后一天执行删除前2个月车流量数据操作start"
);
//删除2个月之前车流量详情的数据
traffFlowService
.
deleteBeforeTwoMonthVehicles
(
DateUtils
.
getlastMonth
(-
2
)
);
traffFlowService
.
deleteBeforeTwoMonthVehicles
();
}
}
...
...
src/main/java/com/hzjt/controller/TraffController.java
View file @
1293d095
...
...
@@ -16,7 +16,12 @@ import org.apache.commons.lang3.StringUtils;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.HttpMethod
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.client.RestTemplate
;
import
java.io.IOException
;
import
java.io.InputStream
;
...
...
@@ -27,6 +32,8 @@ import java.util.concurrent.ConcurrentHashMap;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.TimeUnit
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
@RestController
...
...
@@ -49,6 +56,10 @@ public class TraffController {
@Value
(
"${flv.resisvalue}"
)
private
String
resisvalue
;
@Value
(
"${json.resisurl}"
)
private
String
resisjsonvalue
;
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
...
...
@@ -101,7 +112,7 @@ public class TraffController {
@PostMapping
(
"/alarmevent"
)
public
ResultObj
rece
(
@RequestBody
Alarm
trffClientMessage
)
{
log
.
info
(
"alarmevent--------------"
);
if
(!
TYPE
.
equals
(
trffClientMessage
.
getType
()))
{
return
ResultObj
.
error
(
ResponseEnum
.
E_1002
.
getCode
(),
"type类型不正确"
);
}
...
...
@@ -141,11 +152,8 @@ public class TraffController {
return
ResultObj
.
error
(
ResponseEnum
.
E_1002
.
getCode
(),
"设备为:"
+
sbbh
+
",通道为:"
+
tdbh
+
"配置的行政区划不合规"
);
}
//ts 時間轉成正常時間
trffClientMessage
.
setDept
(
xzbh
);
Map
map
=
new
HashMap
();
map
.
put
(
"type"
,
"alarm"
);
map
.
put
(
"data"
,
trffClientMessage
);
WebSocket
.
GroupSending
(
JsonUtil
.
beanToString
(
map
));
trffClientMessage
.
setDept
(
xzbh
);
try
{
// 清空redis中的部分旧数据
// importService.cleanCache();
...
...
@@ -157,143 +165,146 @@ public class TraffController {
}
return
ResultObj
.
ok
(
trffClientMessage
);
}
public
void
sendevent
(
Alarm
trffClientMessage
){
Traffalarmrecord
traffAlarmRecord
=
new
Traffalarmrecord
();
traffAlarmRecord
.
setAreaid
(
Long
.
valueOf
(
trffClientMessage
.
getDept
()));
traffAlarmRecord
.
setRecordtype
(
trffClientMessage
.
getIncident_type
().
toLowerCase
());
traffAlarmRecord
.
setRecordtime
(
new
Date
(
Long
.
valueOf
(
trffClientMessage
.
getTs
())));
String
[]
videoIdArr
=
trffClientMessage
.
getVideo_id
().
split
(
"_"
);
traffAlarmRecord
.
setFdid
(
videoIdArr
[
0
]);
Integer
channelid
=
Integer
.
valueOf
(
videoIdArr
[
1
])
+
1
;
traffAlarmRecord
.
setChannelid
(
channelid
);
//判断该事件在规定事件内是否发生过,发生过不需要入库
int
exists
=
traffAlarmRecordMapper
.
selectExitsTraffAlarm
(
traffAlarmRecord
);
if
(
exists
>
0
){
//存在直接返回
return
;
}
else
{
public
void
sendevent
(
Alarm
trffClientMessage
)
{
Traffalarmrecord
traffAlarmRecord
=
new
Traffalarmrecord
();
traffAlarmRecord
.
setAreaid
(
Long
.
valueOf
(
trffClientMessage
.
getDept
()));
traffAlarmRecord
.
setRecordtype
(
trffClientMessage
.
getIncident_type
().
toLowerCase
());
traffAlarmRecord
.
setRecordtime
(
new
Date
(
Long
.
valueOf
(
trffClientMessage
.
getTs
())));
String
[]
videoIdArr
=
trffClientMessage
.
getVideo_id
().
split
(
"_"
);
traffAlarmRecord
.
setFdid
(
videoIdArr
[
0
]);
Integer
channelid
=
Integer
.
valueOf
(
videoIdArr
[
1
])
+
1
;
traffAlarmRecord
.
setChannelid
(
channelid
);
//判断是否在正检时间内
exists
=
traffAlarmRecordMapper
.
selectInChecktimeTraffAlarm
(
traffAlarmRecord
);
if
(
exists
>
0
)
int
exists
=
traffAlarmRecordMapper
.
selectInChecktimeTraffAlarm
(
traffAlarmRecord
);
log
.
info
(
"selectInChecktimeTraffAlarm"
+
exists
);
if
(
exists
>
0
)
{
return
;
}
}
//发送给前端
Map
map
=
new
HashMap
();
map
.
put
(
"type"
,
"alarm"
);
map
.
put
(
"data"
,
trffClientMessage
);
WebSocket
.
GroupSending
(
JsonUtil
.
beanToString
(
map
));
traffAlarmRecord
.
setVideourlfrom
(
trffClientMessage
.
getVideo_record_url
());
traffAlarmRecord
.
setCreatetime
(
new
Date
());
traffAlarmRecord
.
setObjlable
(
trffClientMessage
.
getObjLabel
());
traffAlarmRecord
.
setPushstatus
(
9
);
//设置为未推送
//支持对某一个点位报施工事件后 倒推RECTIFYTIME 查看是否是施工事件 一段时间(时间可以配置)之前的停车事件和行人闯入事件矫正为施工事件
exists
=
traffAlarmRecordMapper
.
selectInworkRectifytimeTraffAlarm
(
traffAlarmRecord
);
if
(
exists
>
0
&&
(
traffAlarmRecord
.
getRecordtype
().
equalsIgnoreCase
(
"no_motor_ban"
)
||
traffAlarmRecord
.
getRecordtype
().
equalsIgnoreCase
(
"illegal_parking"
)
))
{
//这个事件如果为停车事件或者行人闯入事件时,设置纠偏状态为1
traffAlarmRecord
.
setVideourlfrom
(
trffClientMessage
.
getVideo_record_url
()
);
traffAlarmRecord
.
setCreatetime
(
new
Date
());
traffAlarmRecord
.
setObjlable
(
trffClientMessage
.
getObjLabel
());
traffAlarmRecord
.
setPushstatus
(
9
);
//设置为未推送
}
log
.
info
(
"selectInworkRectifytimeTraffAlarm"
+
exists
);
if
((
traffAlarmRecord
.
getRecordtype
().
equalsIgnoreCase
(
"roadworks_out_of_line"
)
||
traffAlarmRecord
.
getRecordtype
().
equalsIgnoreCase
(
"roadworks"
)))
{
//支持对某一个点位报施工事件后 倒推RECTIFYTIME 查看是否是施工事件 一段时间(时间可以配置)之前的停车事件和行人闯入事件矫正为施工事件
exists
=
traffAlarmRecordMapper
.
updateInworkRectifytimeTraffAlarm
(
traffAlarmRecord
);
//这个事件如果为停车事件或者行人闯入事件时,设置纠偏状态为1
if
(
exists
>
0
)
{
log
.
info
(
"setRectificationtype=1"
);
}
}
List
<
String
>
imgBase64List
=
trffClientMessage
.
getImg_base64
();
String
imgEnumHead
=
"IMG"
;
Ftp
ftp
=
ftpService
.
reloadFtp
();
for
(
int
i
=
0
;
i
<
imgBase64List
.
size
();
i
++)
{
List
<
String
>
imgBase64List
=
trffClientMessage
.
getImg_base64
();
String
imgEnumHead
=
"IMG"
;
Ftp
ftp
=
ftpService
.
reloadFtp
();
for
(
int
i
=
0
;
i
<
imgBase64List
.
size
();
i
++)
{
/* 图片上传 */
String
path
=
trffClientMessage
.
getVideo_id
()
+
"/"
+
DateUtils
.
formatCurrDayNoSign
();
String
fileName
=
UUIDUtils
.
createuuid
()
+
".jpg"
;
if
(
FTPUtil
.
uploadFile
(
ftp
,
path
,
fileName
,
imgBase64List
.
get
(
i
)))
{
TraffAlarmRecordImgEnum
.
valueOf
(
imgEnumHead
+
i
).
setImg
(
traffAlarmRecord
,
FTPUtil
.
getFtpUrl
(
ftp
)
+
path
+
"/"
+
fileName
);
String
path
=
trffClientMessage
.
getVideo_id
()
+
"/"
+
DateUtils
.
formatCurrDayNoSign
();
String
fileName
=
UUIDUtils
.
createuuid
()
+
".jpg"
;
if
(
FTPUtil
.
uploadFile
(
ftp
,
path
,
fileName
,
imgBase64List
.
get
(
i
)))
{
TraffAlarmRecordImgEnum
.
valueOf
(
imgEnumHead
+
i
).
setImg
(
traffAlarmRecord
,
FTPUtil
.
getFtpUrl
(
ftp
)
+
path
+
"/"
+
fileName
);
}
}
List
<
String
>
imgUrls
=
trffClientMessage
.
getImg_urls
();
for
(
int
i
=
0
;
i
<
imgUrls
.
size
();
i
++)
{
TraffAlarmRecordFromImgEnum
.
valueOf
(
imgEnumHead
+
i
).
setImg
(
traffAlarmRecord
,
imgUrls
.
get
(
i
));
}
}
List
<
String
>
imgUrls
=
trffClientMessage
.
getImg_urls
();
for
(
int
i
=
0
;
i
<
imgUrls
.
size
();
i
++)
{
TraffAlarmRecordFromImgEnum
.
valueOf
(
imgEnumHead
+
i
).
setImg
(
traffAlarmRecord
,
imgUrls
.
get
(
i
));
}
if
(
StringEnum
.
ONE
.
getValue
().
equals
(
checkEnable
))
{
if
(
StringEnum
.
ONE
.
getValue
().
equals
(
checkEnable
))
{
/* 9:免审 */
traffAlarmRecord
.
setCheckstatus
(
9
);
}
int
recordid
=
traffAlarmRecordMapper
.
selectmax
();
traffAlarmRecord
.
setRecordid
((
long
)(
recordid
+
1
));
traffAlarmRecord
.
setProcessstatus
(
"0"
);
traffAlarmRecordMapper
.
inserTraffAlarmRecord
(
traffAlarmRecord
);
try
{
String
basepath
=
"gstraff/"
+
traffAlarmRecord
.
getFdid
()
+
(
traffAlarmRecord
.
getChannelid
()
<
10
?
"0"
+
traffAlarmRecord
.
getChannelid
()
:
traffAlarmRecord
.
getChannelid
())
+
"/"
+
DateUtils
.
formatCurrDayNoSign
();
Map
<
String
,
Object
>
transferRecordMap
=
new
HashMap
<>();
FileTransferManager
.
fetchUrlsFromRecord
(
traffAlarmRecord
,
transferRecordMap
);
List
<
TransferResult
>
results
=
FileTransferManager
.
transferFile
(
transferRecordMap
,
ftp
,
basepath
);
log
.
info
(
"缓存数据上传结果:"
+
results
.
toString
());
Traffalarmrecord
recordBak
=
FileTransferManager
.
traffAlarmRecordUrlUpdate
(
results
);
traffAlarmRecord
.
setImg2path
(
recordBak
.
getImg2path
());
traffAlarmRecord
.
setImg3path
(
recordBak
.
getImg3path
());
traffAlarmRecord
.
setImg4path
(
recordBak
.
getImg4path
());
traffAlarmRecord
.
setImg5path
(
recordBak
.
getImg5path
());
traffAlarmRecord
.
setVideopath
(
recordBak
.
getVideopath
());
if
(
traffAlarmRecord
!=
null
&&
traffAlarmRecord
.
getRecordid
()
!=
null
)
{
traffAlarmRecordMapper
.
updateTraffAlarmRecordUrl
(
traffAlarmRecord
);
traffAlarmRecord
.
setCheckstatus
(
9
);
}
int
recordid
=
traffAlarmRecordMapper
.
selectmax
();
traffAlarmRecord
.
setRecordid
((
long
)
(
recordid
+
1
));
traffAlarmRecord
.
setProcessstatus
(
"0"
);
traffAlarmRecordMapper
.
inserTraffAlarmRecord
(
traffAlarmRecord
);
try
{
String
basepath
=
"gstraff/"
+
traffAlarmRecord
.
getFdid
()
+
(
traffAlarmRecord
.
getChannelid
()
<
10
?
"0"
+
traffAlarmRecord
.
getChannelid
()
:
traffAlarmRecord
.
getChannelid
())
+
"/"
+
DateUtils
.
formatCurrDayNoSign
();
Map
<
String
,
Object
>
transferRecordMap
=
new
HashMap
<>();
FileTransferManager
.
fetchUrlsFromRecord
(
traffAlarmRecord
,
transferRecordMap
);
List
<
TransferResult
>
results
=
FileTransferManager
.
transferFile
(
transferRecordMap
,
ftp
,
basepath
);
log
.
info
(
"缓存数据上传结果:"
+
results
.
toString
());
Traffalarmrecord
recordBak
=
FileTransferManager
.
traffAlarmRecordUrlUpdate
(
results
);
traffAlarmRecord
.
setImg2path
(
recordBak
.
getImg2path
());
traffAlarmRecord
.
setImg3path
(
recordBak
.
getImg3path
());
traffAlarmRecord
.
setImg4path
(
recordBak
.
getImg4path
());
traffAlarmRecord
.
setImg5path
(
recordBak
.
getImg5path
());
traffAlarmRecord
.
setVideopath
(
recordBak
.
getVideopath
());
if
(
traffAlarmRecord
!=
null
&&
traffAlarmRecord
.
getRecordid
()
!=
null
)
{
traffAlarmRecordMapper
.
updateTraffAlarmRecordUrl
(
traffAlarmRecord
);
}
//如果监控视频为空,延时加载重新获取
if
(
null
==
recordBak
.
getVideopath
()
||
""
.
equalsIgnoreCase
(
recordBak
.
getVideopath
()))
{
schedulepool
.
schedule
(()->{
for
(
String
key
:
transferRecordMap
.
keySet
())
{
if
(
key
.
equals
(
"videopath"
))
{
final
String
url
=
transferRecordMap
.
get
(
key
).
toString
();
try
{
HttpURLConnection
connection
=
(
HttpURLConnection
)
new
URL
(
url
).
openConnection
();
//延迟连接
connection
.
setReadTimeout
(
2000
);
connection
.
setConnectTimeout
(
3000
);
connection
.
setRequestMethod
(
"GET"
);
String
pname
=
DateUtils
.
formatCurrDayNoSign
()
+
"_"
+
recordid
+
"_0000_"
+
key
.
replace
(
"path"
,
""
);
String
fileName
=
pname
+
".mp4"
;
String
ftputl
=
FTPUtil
.
getFtpUrl
(
ftp
)
+
basepath
+
"/"
+
fileName
;
if
(
connection
.
getResponseCode
()
==
HttpURLConnection
.
HTTP_OK
)
{
InputStream
inputStream
=
connection
.
getInputStream
();
log
.
info
(
"url:"
,
url
,
" --- "
+
"key:"
,
key
);
boolean
r
=
FTPUtil
.
uploadFile
(
ftp
,
basepath
,
fileName
,
inputStream
);
if
(
r
)
traffAlarmRecord
.
setVideopath
(
ftputl
);
//只更新监控
if
(
traffAlarmRecord
!=
null
&&
traffAlarmRecord
.
getRecordid
()
!=
null
)
{
traffAlarmRecordMapper
.
updateTraffAlarmRecordUrl
(
traffAlarmRecord
);
//推送给第三方
//如果监控视频为空,延时加载重新获取
if
(
null
==
recordBak
.
getVideopath
()
||
""
.
equalsIgnoreCase
(
recordBak
.
getVideopath
()))
{
schedulepool
.
schedule
(()
->
{
for
(
String
key
:
transferRecordMap
.
keySet
())
{
if
(
key
.
equals
(
"videopath"
))
{
final
String
url
=
transferRecordMap
.
get
(
key
).
toString
();
try
{
HttpURLConnection
connection
=
(
HttpURLConnection
)
new
URL
(
url
).
openConnection
();
//延迟连接
connection
.
setReadTimeout
(
2000
);
connection
.
setConnectTimeout
(
3000
);
connection
.
setRequestMethod
(
"GET"
);
String
pname
=
DateUtils
.
formatCurrDayNoSign
()
+
"_"
+
recordid
+
"_0000_"
+
key
.
replace
(
"path"
,
""
);
String
fileName
=
pname
+
".mp4"
;
String
ftputl
=
FTPUtil
.
getFtpUrl
(
ftp
)
+
basepath
+
"/"
+
fileName
;
if
(
connection
.
getResponseCode
()
==
HttpURLConnection
.
HTTP_OK
)
{
InputStream
inputStream
=
connection
.
getInputStream
();
log
.
info
(
"url:"
,
url
,
" --- "
+
"key:"
,
key
);
boolean
r
=
FTPUtil
.
uploadFile
(
ftp
,
basepath
,
fileName
,
inputStream
);
if
(
r
)
traffAlarmRecord
.
setVideopath
(
ftputl
);
//只更新监控
if
(
traffAlarmRecord
!=
null
&&
traffAlarmRecord
.
getRecordid
()
!=
null
)
{
traffAlarmRecordMapper
.
updateTraffAlarmRecordUrl
(
traffAlarmRecord
);
//推送给第三方
ResultObj
obj
=
eventWriteService
.
updateAndAutoSendEvent
(
traffAlarmRecord
);
log
.
info
(
"send to guangda:HTTP_OK"
+
obj
.
toString
());
}
}
else
{
ResultObj
obj
=
eventWriteService
.
updateAndAutoSendEvent
(
traffAlarmRecord
);
log
.
info
(
"send to guangda
:HTTP_OK
"
+
obj
.
toString
());
log
.
info
(
"send to guangda
HttpURLConnection.HTTP_Fail--->response message:
"
+
obj
.
toString
());
}
}
catch
(
IOException
e
)
{
System
.
out
.
println
(
e
.
toString
());
log
.
error
(
e
.
toString
());
return
0
;
}
else
{
ResultObj
obj
=
eventWriteService
.
updateAndAutoSendEvent
(
traffAlarmRecord
);
log
.
info
(
"send to guangda HttpURLConnection.HTTP_Fail--->response message:"
+
obj
.
toString
());
}
}
catch
(
IOException
e
)
{
System
.
out
.
println
(
e
.
toString
());
log
.
error
(
e
.
toString
());
return
0
;
}
}
return
1
;
},
50
,
TimeUnit
.
SECONDS
);
//等待50秒钟执行
}
return
1
;
},
50
,
TimeUnit
.
SECONDS
);
//等待50秒钟执行
}
else
{
//推送给第三方
ResultObj
obj
=
eventWriteService
.
updateAndAutoSendEvent
(
traffAlarmRecord
);
log
.
info
(
"send to guangda novideopath --->response message"
+
obj
.
toString
());
}
else
{
//推送给第三方
ResultObj
obj
=
eventWriteService
.
updateAndAutoSendEvent
(
traffAlarmRecord
);
log
.
info
(
"send to guangda novideopath --->response message"
+
obj
.
toString
());
}
}
catch
(
Exception
e
)
{
log
.
error
(
"alarm fail :"
+
e
.
getMessage
());
}
}
catch
(
Exception
e
)
{
log
.
error
(
"alarm fail :"
+
e
.
getMessage
());
}
}
private
RateLimiter
getRateLimiter
(
String
videoId
)
{
RateLimiter
rateLimiter
;
...
...
@@ -310,7 +321,6 @@ public void sendevent( Alarm trffClientMessage){
}
//车流量推送
@PostMapping
(
"/traffflow"
)
public
ResultObj
traffflow
(
@RequestBody
Vehicles
vehicles
)
{
...
...
@@ -322,26 +332,26 @@ public void sendevent( Alarm trffClientMessage){
String
sbbh
=
sbAndTd
[
0
];
int
tdbh
=
Integer
.
valueOf
(
sbAndTd
[
1
])
+
1
;
//重置videoid
vehicles
.
setVideo_id
(
sbbh
+
"_"
+
tdbh
);
vehicles
.
setVideo_id
(
sbbh
+
"_"
+
tdbh
);
//直接放入表中
// traffFlowService.saveTraffFlow(vehicles);
List
<
Vehiclesdetail
>
vels
=
vehicles
.
getObjs
()
;
int
result
=
0
;
for
(
Vehiclesdetail
detail
:
vels
)
{
Vehicle
v
=
new
Vehicle
();
List
<
Vehiclesdetail
>
vels
=
vehicles
.
getObjs
()
;
int
result
=
0
;
for
(
Vehiclesdetail
detail
:
vels
)
{
Vehicle
v
=
new
Vehicle
();
v
.
setId
(
UUID
.
randomUUID
().
toString
());
v
.
setCreate_time
(
new
Date
(
Long
.
valueOf
(
vehicles
.
getTs
())));
v
.
setCreate_time
(
new
Date
(
Long
.
valueOf
(
vehicles
.
getTs
())));
v
.
setType
(
detail
.
getType
());
v
.
setDirection
(
detail
.
getDirection
());
v
.
setRuleTag
(
detail
.
getRuleTag
());
v
.
setClassification_confidence
(
detail
.
getClassification_confidence
());
v
.
setVideo_id
(
vehicles
.
getVideo_id
());
result
=
traffFlowService
.
saveTraffFlowDetail
(
v
);
result
=
traffFlowService
.
saveTraffFlowDetail
(
v
);
}
//查询近五分钟的车流量,当天车流量websocket 直接推送过去
log
.
info
(
"fivevehivle"
);
//根据连接的name ,群发根据videoid 查询的结果
webSocket
.
GroupSendingByVideoid
(
vehicles
.
getVideo_id
());
}
...
...
@@ -355,31 +365,33 @@ public void sendevent( Alarm trffClientMessage){
Map
map
=
new
HashMap
();
map
.
put
(
"type"
,
"rule"
);
map
.
put
(
"data"
,
rules
);
webSocket
.
AppointSending
(
rules
.
getVideo_id
(),
JsonUtil
.
beanToString
(
map
));
webSocket
.
AppointSending
(
rules
.
getVideo_id
(),
JsonUtil
.
beanToString
(
map
));
return
ResultObj
.
ok
();
}
//获取flv地址
@GetMapping
(
"/getflv/{videoid}"
)
public
String
getflv
(
@PathVariable
(
"videoid"
)
String
videoid
)
{
public
String
getflv
(
@PathVariable
(
"videoid"
)
String
videoid
)
{
//根据id查询对应的rtsp
String
rtsp
=
traffFlowService
.
selectSbtddspsrRtspByVideoid
(
videoid
);
//huode resid 中值、
String
rtsp
=
traffFlowService
.
selectSbtddspsrRtspByVideoid
(
videoid
);
//huode resid 中值、
if
(
null
!=
rtsp
)
{
if
(
null
==
stringRedisTemplate
.
opsForValue
().
get
(
videoid
))
{
if
(
null
!=
rtsp
)
{
if
(
null
==
stringRedisTemplate
.
opsForValue
().
get
(
videoid
))
{
log
.
info
(
"flv-----"
);
flvCacheService
.
getvalue
(
videoid
,
rtsp
);
flvCacheService
.
getvalue
(
videoid
,
rtsp
);
}
log
.
info
(
stringRedisTemplate
.
opsForValue
().
get
(
videoid
));
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
stringRedisTemplate
.
opsForValue
().
get
(
videoid
));
if
(
null
!=
jsonObject
.
getJSONArray
(
"play_list"
)
&&
jsonObject
.
getJSONArray
(
"play_list"
).
size
()
>
0
)
{
if
(
null
!=
jsonObject
.
getJSONArray
(
"play_list"
)
&&
jsonObject
.
getJSONArray
(
"play_list"
).
size
()
>
0
)
{
return
String
.
valueOf
(
jsonObject
.
getJSONArray
(
"play_list"
).
get
(
0
));
}
}
return
""
;
return
""
;
}
...
...
@@ -387,19 +399,4 @@ public void sendevent( Alarm trffClientMessage){
//获取自动规则
@GetMapping
(
"/test"
)
public
void
autoRule
()
{
Vehicle
v
=
new
Vehicle
();
v
.
setId
(
UUID
.
randomUUID
().
toString
());
v
.
setCreate_time
(
DateUtils
.
parseDate
(
"2020-12-10 23:59:00"
));
v
.
setType
(
"SEDAN1"
);
v
.
setDirection
(
Long
.
valueOf
(
"0"
));
v
.
setRuleTag
(
"1"
);
v
.
setClassification_confidence
(
Long
.
valueOf
(
"0"
));
v
.
setVideo_id
(
"20200603135925971_1"
);
traffFlowService
.
saveTraffFlowDetail
(
v
);
}
}
src/main/java/com/hzjt/domain/Traffalarmrecord.java
View file @
1293d095
...
...
@@ -9,43 +9,44 @@ import java.util.Date;
public
class
Traffalarmrecord
implements
java
.
io
.
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
private
Long
recordid
;
//
记录编号 主键序列
private
Integer
algotype
;
//--
算法类型 默认是 0:公司 1:第三方公
司
private
Long
areaid
;
//--辖
区编号
private
String
fdid
;
//
设备编号
private
Integer
channelid
;
//--通
道编号
private
Integer
channeletype
;
//通
道类型 可忽略
private
String
channelname
;
//通
道名称
private
Date
recordtime
;
//
事件记录时间
private
String
recordtype
;
//
事件记录类型
private
String
location
;
//目
标定位信
息
private
String
img1urlfrom
;
//图片源
地
址
private
String
img1path
;
//图片
存储地
址
private
String
img2urlfrom
;
//图片源
地
址
private
String
img2path
;
//图片
存储地
址
private
String
img3urlfrom
;
//图片源
地
址
private
String
img3path
;
//图片
存储地
址
private
String
img4urlfrom
;
//图片源
地
址
private
String
img4path
;
//图片
存储地
址
private
String
img5urlfrom
;
//图片源
地
址
private
String
img5path
;
//图片
存储地
址
private
String
videourlfrom
;
//
视频源地
址
private
String
videopath
;
//
视频存储地
址
private
Date
retrytime
;
//video
重试的最近一次的读取;时间
private
Integer
retrycount
;
//ideo
重试读取总次数
private
Integer
recordlevel
;
//
事件级别 --默认为0 其他类型暂
时未知
private
Integer
checkstatus
;
//0:
待审核 1:审核通过 2:审核不通过 9:免审
private
String
creator
;
//
创建人
private
Date
createtime
;
//
创建时间
private
String
updator
;
//
更新人
private
Date
updatetime
;
//
更新时间
private
Long
recordid
;
//
��¼��� ��������
private
Integer
algotype
;
//--
�㷨���� Ĭ���� 0:��˾ 1:��������˾
private
Long
areaid
;
//--Ͻ
�����
private
String
fdid
;
//
�豸���
private
Integer
channelid
;
//--ͨ
�����
private
Integer
channeletype
;
//ͨ
������ �ɺ���
private
String
channelname
;
//ͨ
������
private
Date
recordtime
;
//
�¼���¼ʱ��
private
String
recordtype
;
//
�¼���¼����
private
String
location
;
//Ŀ
�궨λ��Ϣ
private
String
img1urlfrom
;
//ͼƬԴ
��ַ
private
String
img1path
;
//ͼƬ
�洢��ַ
private
String
img2urlfrom
;
//ͼƬԴ
��ַ
private
String
img2path
;
//ͼƬ
�洢��ַ
private
String
img3urlfrom
;
//ͼƬԴ
��ַ
private
String
img3path
;
//ͼƬ
�洢��ַ
private
String
img4urlfrom
;
//ͼƬԴ
��ַ
private
String
img4path
;
//ͼƬ
�洢��ַ
private
String
img5urlfrom
;
//ͼƬԴ
��ַ
private
String
img5path
;
//ͼƬ
�洢��ַ
private
String
videourlfrom
;
//
��ƵԴ��ַ
private
String
videopath
;
//
��Ƶ�洢��ַ
private
Date
retrytime
;
//video
���Ե����һ�εĶ�ȡ��ʱ��
private
Integer
retrycount
;
//ideo
���Զ�ȡ�ܴ���
private
Integer
recordlevel
;
//
�¼����� --Ĭ��Ϊ0 ����������ʱδ֪
private
Integer
checkstatus
;
//0:
����� 1:���ͨ�� 2:��˲�ͨ�� 9:����
private
String
creator
;
//
������
private
Date
createtime
;
//
����ʱ��
private
String
updator
;
//
������
private
Date
updatetime
;
//
����ʱ��
private
String
remark
;
private
Integer
pushstatus
;
//
推送
状态
private
String
pushdesc
;
//
推送描述
private
String
pushcount
;
//
推送次数
private
Date
pushdate
;
//
推送时间
private
String
processstatus
;
//
处理
状态;
private
Integer
pushstatus
;
//
����״̬
private
String
pushdesc
;
//
��������
private
String
pushcount
;
//
���ʹ���
private
Date
pushdate
;
//
����ʱ��
private
String
processstatus
;
//
����״̬
;
private
String
objlable
;
private
String
rectificationtype
;
@Override
public
String
toString
()
{
...
...
src/main/java/com/hzjt/handler/WebSocket.java
View file @
1293d095
...
...
@@ -106,18 +106,20 @@ public class WebSocket {
* 根据videoid 群发
*/
public
void
GroupSendingByVideoid
(
String
name
)
{
log
.
info
(
"name"
+
name
);
if
(
null
==
traffFlowService
)
return
;
try
{
List
<
Map
>
map
=
new
ArrayList
<>();
if
(
null
!=
webSocketSet
.
get
(
name
)
&&
null
!=
webSocketSet
.
get
(
name
).
session
&&
null
!=
webSocketSet
.
get
(
name
).
session
.
getBasicRemote
())
{
//
log.info("name" + name);
log
.
info
(
"name"
+
name
);
List
<
Map
>
dDayFlowmap
=
traffFlowService
.
selectFiveAndDayFlow
(
name
);
if
(
null
!=
dDayFlowmap
)
map
.
addAll
(
dDayFlowmap
);
List
<
Map
>
TypeDayFlow
=
traffFlowService
.
selectFiveAndTypeDayFlow
(
name
);
if
(
null
!=
dDayFlowmap
)
map
.
addAll
(
TypeDayFlow
);
if
(!
map
.
isEmpty
()
&&
null
!=
webSocketSet
.
get
(
name
)&&
null
!=
webSocketSet
.
get
(
name
).
session
)
{
log
.
info
(
"JSONUtil.toJsonStr(map)"
+
JSONUtil
.
toJsonStr
(
map
));
if
(!
map
.
isEmpty
()
&&
null
!=
webSocketSet
.
get
(
name
)
&&
null
!=
webSocketSet
.
get
(
name
).
session
)
{
synchronized
(
webSocketSet
.
get
(
name
).
session
)
{
webSocketSet
.
get
(
name
).
session
.
getBasicRemote
().
sendText
(
JSONUtil
.
toJsonStr
(
map
));
}
...
...
src/main/java/com/hzjt/mapper/TraffAlarmRecordMapper.java
View file @
1293d095
...
...
@@ -29,6 +29,6 @@ public interface TraffAlarmRecordMapper extends BaseMapper<Traffalarmrecord>, Co
Integer
selectInChecktimeTraffAlarm
(
Traffalarmrecord
traffalarmrecord
);
Integer
select
InworkRectifytimeTraffAlarm
(
Traffalarmrecord
traffalarmrecord
);
Integer
update
InworkRectifytimeTraffAlarm
(
Traffalarmrecord
traffalarmrecord
);
}
\ No newline at end of file
src/main/java/com/hzjt/mapper/TraffFlowMapper.java
View file @
1293d095
...
...
@@ -20,7 +20,7 @@ public interface TraffFlowMapper {
Integer
statisVehiclesByDay
();
Integer
deleteBeforeTwoMonthVehiclesDetails
(
String
startime
);
Integer
deleteBeforeTwoMonthVehiclesDetails
();
Integer
deleteVehiclesByDay
();
...
...
src/main/java/com/hzjt/service/EventWriteService.java
View file @
1293d095
...
...
@@ -191,12 +191,15 @@ public class EventWriteService {
condition
.
setRecordid
(
traffalarmrecord
.
getRecordid
());
String
message
=
writeResultObj
.
getMessage
();
boolean
successFlag
=
writeResultObj
.
getStatus
()
==
ResponseEnum
.
SUCCESS
.
getCode
();
condition
.
setPushdesc
(
message
);
/* 失败但是因为数据已存在 */
if
(!
successFlag
&&
StringUtils
.
isNotBlank
(
message
)
&&
message
.
contains
(
CONTAINS_EXIST
))
{
condition
.
setPushstatus
(
1
);
traffAlarmRecordMapper
.
updatePushEvent
(
condition
);
return
;
}
/* 成功 */
condition
.
setPushdesc
(
message
);
if
(
successFlag
)
{
condition
.
setPushstatus
(
0
);
traffAlarmRecordMapper
.
updatePushEvent
(
condition
);
...
...
src/main/java/com/hzjt/service/TraffFlowService.java
View file @
1293d095
...
...
@@ -39,8 +39,8 @@ public class TraffFlowService {
}
public
void
deleteBeforeTwoMonthVehicles
(
String
starttime
)
{
traffFlowMapper
.
deleteBeforeTwoMonthVehiclesDetails
(
starttime
);
public
void
deleteBeforeTwoMonthVehicles
()
{
traffFlowMapper
.
deleteBeforeTwoMonthVehiclesDetails
();
}
...
...
src/main/java/com/hzjt/util/DateUtils.java
View file @
1293d095
...
...
@@ -25,6 +25,10 @@ public class DateUtils {
return
formatCurrDateByType
(
YMDHMS
);
}
public
static
String
formatCurrDateYMD
(){
return
formatCurrDateByType
(
Y_M_D
);
}
public
static
String
formatCurrDayNoSign
(){
return
formatCurrDateByType
(
YMD
);
}
...
...
src/main/resources/application.properties
View file @
1293d095
...
...
@@ -13,7 +13,7 @@ mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.default-fetch-size
=
100
mybatis.configuration.default-statement-timeout
=
3000
#mybatis.mapperLocations = classpath:xxx.xml
#
logging.level.com.hzjt=debug
logging.level.com.hzjt
=
debug
## �������ݿ�-����Դ����
#spring.datasource.url=jdbc:dm://127.0.0.1:12345/auditlocal_cq
...
...
@@ -31,7 +31,7 @@ mybatis.configuration.default-statement-timeout=3000
# Mysql���ݿ�-����Դ����
#spring.datasource.username=test
#spring.datasource.password=test
#spring.datasource.url=jdbc:oracle:thin:@192.168.168.212:152
2
:helowin
#spring.datasource.url=jdbc:oracle:thin:@192.168.168.212:152
3
:helowin
spring.datasource.username
=
hzjt
spring.datasource.password
=
hzjt
spring.datasource.url
=
jdbc:oracle:thin:@33.50.1.22:1521:orcl
...
...
src/main/resources/mapper/TraffFlow.xml
View file @
1293d095
...
...
@@ -20,7 +20,7 @@
#{video_id,jdbcType=VARCHAR},#{ts,jdbcType=VARCHAR},sysdate)
</insert>
<select
id=
"selectFiveAndDayFlow"
resultType=
"java.util.HashMap"
>
select
select
NVL(sum(case when CREATE_TIME>=(SYSDATE-1-5/1440) and CREATE_TIME
<![CDATA[ <= ]]>
(SYSDATE-1) then 1 else 0 end),0)tbfiveflow,
NVL(sum(case when CREATE_TIME>= (SYSDATE-10/1440) and CREATE_TIME
<![CDATA[ <= ]]>
(SYSDATE-5/1440) then 1 else 0 end),0)hbfiveflow,
NVL(sum(case when CREATE_TIME>= (SYSDATE-5/1440) then 1 else 0 end),0)fiveflow,
...
...
@@ -102,7 +102,7 @@
b.video_id
</insert>
<delete
id=
"deleteBeforeTwoMonthVehiclesDetails"
>
delete from vehicle WHERE create_time
<![CDATA[ <= ]]>
to_date( #{starttime}||' 23:59:59','yyyy-mm-dd hh24:mi:ss')
delete from vehicle WHERE create_time
<![CDATA[ <= ]]>
sysdate-33
</delete>
<delete
id=
"deleteVehiclesByDay"
>
...
...
src/main/resources/mapper/Traffalarmrecord.xml
View file @
1293d095
...
...
@@ -63,6 +63,7 @@
<if
test=
"pushdesc != null"
>
pushdesc,
</if>
<if
test=
"processstatus != null"
>
processstatus,
</if>
<if
test=
"objlable != null"
>
objlable,
</if>
<if
test=
"rectificationtype != null"
>
rectificationtype ,
</if>
</trim>
<trim
prefix=
"select"
suffix=
"from dual"
suffixOverrides=
","
>
...
...
@@ -101,6 +102,7 @@
<if
test=
"pushdesc != null"
>
#{pushdesc},
</if>
<if
test=
"processstatus != null"
>
#{processstatus},
</if>
<if
test=
"objlable != null"
>
#{objlable},
</if>
<if
test=
"rectificationtype != null"
>
#{rectificationtype},
</if>
</trim>
...
...
@@ -129,55 +131,48 @@
<update
id=
"updateTraffAlarmRectificationType"
parameterType=
"com.hzjt.domain.Traffalarmrecord"
>
UPDATE TRAFFALARMRECORD
<set>
<if
test=
"
item.
processstatus != null"
>
<if
test=
"processstatus != null"
>
rectificationtype=1,
</if>
</set>
from TRAFFALARMRECORD a,
(select * from TRAFFALARMRECORD a,(select * from TRAFFALARMRECORD b where
recordid=#{
item.
recordid,jdbcType=VARCHAR} )b
recordid=#{recordid,jdbcType=VARCHAR} )b
where a.fdid =b.fdid and a.channelid=b.channelid
AND ( a.recordtime
<![CDATA[ <= ]]>
b.recordtime-10/
(24*60)
)
AND ( a.recordtime
<![CDATA[ <= ]]>
b.recordtime-10/
1440
)
AND recordtype in ('roadworks_out_of_line','roadworks'))b
where recordtype in('illegal_parking','no_motor_ban') and a.fdid =b.fdid and a.channelid=b.channelid
</update>
<
select
id=
"selectExitsTraffAlarm"
parameterType=
"com.hzjt.domain.Traffalarmrecord"
resultType=
"java.lang.Integer"
>
select count(1) from TRAFFALARMRECORD a,t_code b where a.recordtype=#{item.recordtype,jdbcType=VARCHAR}
and a.recordtype=LOWER (b.key)and recordtime>=sysdate-(b.REPEATTIME)/(24*60)
and a.fdid=#{item.fdid,jdbcType=VARCHAR}
and a.channelid=#{item.channelid,jdbcType=VARCHAR}
<
!--<select id="selectExitsTraffAlarm" parameterType="com.hzjt.domain.Traffalarmrecord" resultType="java.lang.Integer">--
>
<!--select count(1) from TRAFFALARMRECORD a,t_code b where a.recordtype=#{recordtype,jdbcType=VARCHAR}-->
<!--and a.recordtype=LOWER (b.key)and recordtime>=sysdate-(b.REPEATTIME)/(24*60)-->
<!--and a.fdid=#{fdid,jdbcType=VARCHAR}-->
<!--and a.channelid=#{channelid,jdbcType=VARCHAR}-->
<
/select
>
<
!--</select>--
>
<select
id=
"selectInChecktimeTraffAlarm"
parameterType=
"com.hzjt.domain.Traffalarmrecord"
resultType=
"java.lang.Integer"
>
select count(1) from TRAFFALARMRECORD a,t_code b
where a.recordtype=#{item.recordtype,jdbcType=VARCHAR}
and a.fdid=#{item.fdid,jdbcType=VARCHAR}
and a.channelid=#{item.channelid,jdbcType=VARCHAR}
and a.recordtype=LOWER (b.key)
and recordtime
<![CDATA[ <= ]]>
(select LASTCHECKTIME from videochecktime c where
a.fdid=#{item.fdid,jdbcType=VARCHAR}
and a.channelid=#{item.channelid,jdbcType=VARCHAR}
and recordtype=#{item.recordtype,jdbcType=VARCHAR})+(b.PUSHCHECKTIME)/(24*60)
and recordtime>(select LASTCHECKTIME from videochecktime c where
a.fdid=#{item.fdid,jdbcType=VARCHAR}
and a.channelid=#{item.channelid,jdbcType=VARCHAR}
and recordtype=#{item.recordtype,jdbcType=VARCHAR})
</select>
select count(1) from videochecktime a,t_code b where
a.FDID=#{fdid,jdbcType=VARCHAR}
and a.CHANNELID=#{channelid,jdbcType=VARCHAR}
and a.RECORDTYPE=#{recordtype,jdbcType=VARCHAR}
and a.RECORDTYPE=lower(b.key)
and LASTCHECKTIME+(b.PUSHCHECKTIME)/1440
<![CDATA[ >= ]]>
#{recordtime,jdbcType=TIMESTAMP}
and LASTCHECKTIME
<![CDATA[ < ]]>
#{recordtime,jdbcType=TIMESTAMP}
<select
id=
"selectInworkRectifytimeTraffAlarm"
parameterType=
"com.hzjt.domain.Traffalarmrecord"
resultType=
"java.lang.Integer"
>
select count(1) from TRAFFALARMRECORD a,t_code b
where a.recordtype=#{item.recordtype,jdbcType=VARCHAR}
and a.recordtype=LOWER (b.key)
and a.fdid=#{item.fdid,jdbcType=VARCHAR}
and a.channelid=#{item.channelid,jdbcType=VARCHAR}
and recordtime>=#{item.recordtime,jdbcType=TIMESTAMP}-(b.RECTIFYTIME)/(24*60)
and recordtime
<![CDATA[ < ]]>
#{item.recordtime,jdbcType=TIMESTAMP}
and recordtype in ('roadworks_out_of_line','roadworks')
</select>
<update
id=
"updateInworkRectifytimeTraffAlarm"
parameterType=
"com.hzjt.domain.Traffalarmrecord"
>
update TRAFFALARMRECORD set rectificationtype=1,recordtype='roadworks'
where fdid=#{fdid,jdbcType=VARCHAR}
and channelid=#{channelid,jdbcType=VARCHAR}
and recordtime>=#{recordtime,jdbcType=TIMESTAMP}-(select b.RECTIFYTIME from t_code b where recordtype=LOWER (b.key) )/1440
and recordtime
<![CDATA[ < ]]>
#{recordtime,jdbcType=TIMESTAMP}
and recordtype in ('illegal_parking','no_motor_ban')
</update>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment