Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
谢明辉
/
recv_data_longhua
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 08efdff0
authored
Aug 22, 2020
by
翟柏林
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
字段封装
1 parent
5ad28863
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
372 additions
and
5 deletions
src/main/java/com/viontech/controller/DataController.java
src/main/java/com/viontech/process/BehaviorProcess.java
src/main/java/com/viontech/process/Process.java
src/main/java/com/viontech/process/TrafficProcess.java
src/main/java/com/viontech/controller/DataController.java
View file @
08efdff
package
com
.
viontech
.
controller
;
package
com
.
viontech
.
controller
;
import
com.viontech.process.Process
;
import
com.viontech.process.Process
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
...
@@ -14,9 +15,12 @@ import org.springframework.web.bind.annotation.RestController;
...
@@ -14,9 +15,12 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@RestController
public
class
DataController
{
public
class
DataController
{
@Autowired
Process
process
;
@PostMapping
(
"/data"
)
@PostMapping
(
"/data"
)
public
Object
receiveData
(
@RequestBody
String
dataStr
)
{
public
Object
receiveData
(
@RequestBody
String
dataStr
)
throws
Exception
{
P
rocess
.
process
(
dataStr
);
p
rocess
.
process
(
dataStr
);
return
null
;
return
null
;
}
}
...
...
src/main/java/com/viontech/process/BehaviorProcess.java
0 → 100644
View file @
08efdff
package
com
.
viontech
.
process
;
import
io.netty.buffer.ByteBuf
;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
public
class
BehaviorProcess
extends
Process
{
@Override
public
void
getData
(
Map
jsonMap
,
ByteBuf
byteBuf
)
throws
Exception
{
if
(!
jsonMap
.
get
(
"event_cate"
).
equals
(
"behavior"
)){
return
;
}
Integer
event_refid
=(
Integer
)
jsonMap
.
get
(
"event_refid"
);
byteBuf
.
writeInt
(
event_refid
);
DateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
if
(
jsonMap
.
get
(
"video"
)!=
null
){
List
<
Map
>
videoList
=
(
List
<
Map
>)
jsonMap
.
get
(
"video"
);
for
(
Map
map
:
videoList
)
{
Date
start_dt
=
(
Date
)
map
.
get
(
"start_dt"
);
Date
end_dt
=
(
Date
)
map
.
get
(
"end_dt"
);
Date
startDateSecond
=
dateFormat
.
parse
(
dateFormat
.
format
(
start_dt
));
Date
endDateSecond
=
dateFormat
.
parse
(
dateFormat
.
format
(
end_dt
));
byteBuf
.
writeInt
((
int
)
startDateSecond
.
getTime
());
byteBuf
.
writeInt
((
int
)
start_dt
.
getTime
());
byteBuf
.
writeInt
((
int
)
endDateSecond
.
getTime
());
byteBuf
.
writeInt
((
int
)
end_dt
.
getTime
());
}
}
else
{
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
}
Date
event_dt
=
(
Date
)
jsonMap
.
get
(
"event_dt"
);
Date
eventDateSecond
=
dateFormat
.
parse
(
dateFormat
.
format
(
event_dt
));
byteBuf
.
writeInt
((
int
)
eventDateSecond
.
getTime
());
byteBuf
.
writeInt
((
int
)
event_dt
.
getTime
());
String
event_type
=
(
String
)
jsonMap
.
get
(
"event_type"
);
//事件类型需要转换
convertBehaviorCode
(
event_type
,
byteBuf
);
Integer
laneNumber
=
0
;
String
plate
=
""
;
String
carType
=
""
;
String
carColor
=
""
;
Integer
speed
=
0
;
String
direction
=
""
;
String
locationName
=
""
;
if
(
jsonMap
.
get
(
"event_data"
)!=
null
){
Map
event_data
=
(
Map
)
jsonMap
.
get
(
"event_data"
);
if
(
event_data
.
get
(
"lane"
)!=
null
){
Map
laneMap
=
(
Map
)
event_data
.
get
(
"lane"
);
if
(
laneMap
.
get
(
"number"
)!=
null
){
laneNumber
=(
Integer
)
laneMap
.
get
(
"number"
);
}
}
if
(
event_data
.
get
(
"vehicle"
)!=
null
){
Map
vehicle
=
(
Map
)
event_data
.
get
(
"vehicle"
);
if
(
vehicle
.
get
(
"plate"
)!=
null
){
Map
plateMap
=
(
Map
)
vehicle
.
get
(
"plate"
);
plate
=
(
String
)
plateMap
.
get
(
"text"
);
}
}
if
(
event_data
.
get
(
"uservehicle"
)!=
null
){
Map
userVehicle
=
(
Map
)
event_data
.
get
(
"uservehicle"
);
carType
=
(
String
)
userVehicle
.
get
(
"vehicletype"
);
carColor
=
(
String
)
userVehicle
.
get
(
"vehiclecolor"
);
}
speed
=
Integer
.
valueOf
(
String
.
valueOf
((
Double
)
event_data
.
get
(
"speed"
)));
if
(
event_data
.
get
(
"location"
)!=
null
){
Map
locationMap
=
(
Map
)
event_data
.
get
(
"location"
);
if
(
locationMap
.
get
(
"drive_direction"
)!=
null
){
Map
directionMap
=
(
Map
)
locationMap
.
get
(
"drive_direction"
);
direction
=
(
String
)
directionMap
.
get
(
"code"
);
}
locationName
=
(
String
)
locationMap
.
get
(
"name"
);
}
}
byteBuf
.
writeInt
(
laneNumber
);
if
(
jsonMap
.
get
(
"pics"
)!=
null
){
List
<
Map
>
pics
=
(
List
<
Map
>)
jsonMap
.
get
(
"pics"
);
String
picbase64
=
(
String
)
pics
.
get
(
0
).
get
(
"pic_base64"
);
byteBuf
.
writeInt
(
picbase64
.
getBytes
().
length
);
byteBuf
.
writeInt
((
Integer
)
pics
.
get
(
0
).
get
(
"width"
));
byteBuf
.
writeInt
((
Integer
)
pics
.
get
(
0
).
get
(
"hight"
));
//这两个坐标不知道怎么赋值
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
}
else
{
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
}
//车牌需要转换一下
convertPlate
(
plate
,
byteBuf
);
//事件录像存储位置不知道怎么赋值
byteBuf
.
writeBytes
(
new
byte
[
128
]);
//车辆类型没法给需要转换
convertCarType
(
carType
,
byteBuf
);
//车身颜色需要转换
convertCarColor
(
carColor
,
byteBuf
);
byteBuf
.
writeInt
(
speed
);
//行驶方向需要转换
convertDirection
(
direction
,
byteBuf
);
//地点名称暂时没有赋值,确认是不是用locationName
byteBuf
.
writeBytes
(
new
byte
[
32
]);
//事件快照路径不知道怎么赋值
byteBuf
.
writeBytes
(
new
byte
[
128
]);
//车身颜色2,3和权重暂时未赋值
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
//车型细分暂时未赋值
byteBuf
.
writeInt
(
0
);
//预置位我不知道怎么赋值
byteBuf
.
writeInt
(
0
);
//录像时长
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeBytes
(
new
byte
[
24
]);
}
public
void
convertBehaviorCode
(
String
event_type
,
ByteBuf
byteBuf
){
}
public
void
convertPlate
(
String
plate
,
ByteBuf
byteBuf
){
}
public
void
convertCarType
(
String
carType
,
ByteBuf
byteBuf
){
}
public
void
convertCarColor
(
String
carColor
,
ByteBuf
byteBuf
){
}
public
void
convertDirection
(
String
direction
,
ByteBuf
byteBuf
){
}
}
src/main/java/com/viontech/process/Process.java
View file @
08efdff
package
com
.
viontech
.
process
;
package
com
.
viontech
.
process
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
io.netty.buffer.ByteBuf
;
import
io.netty.buffer.ByteBufAllocator
;
import
java.util.Map
;
/**
/**
* .
* .
*
*
...
@@ -7,11 +13,22 @@ package com.viontech.process;
...
@@ -7,11 +13,22 @@ package com.viontech.process;
* @date 2020/8/20
* @date 2020/8/20
*/
*/
public
class
Process
{
public
abstract
class
Process
{
public
static
void
process
(
String
jsonStr
)
{
public
void
process
(
String
jsonStr
)
throws
Exception
{
ByteBuf
byteBuf
=
ByteBufAllocator
.
DEFAULT
.
ioBuffer
();
ObjectMapper
objectMapper
=
new
ObjectMapper
();
Map
jsonMap
=
objectMapper
.
readValue
(
jsonStr
,
Map
.
class
);
String
vchan_refid
=
(
String
)
jsonMap
.
get
(
"vchan_refid"
);
//封装包头,暂未赋值
byteBuf
.
writeInt
(
0
);
//相机编号为String,他们要的是int,暂时保留
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
//封装包体
getData
(
jsonMap
,
byteBuf
);
}
}
public
abstract
void
getData
(
Map
jsonMap
,
ByteBuf
byteBuf
)
throws
Exception
;
}
}
src/main/java/com/viontech/process/TrafficProcess.java
0 → 100644
View file @
08efdff
package
com
.
viontech
.
process
;
import
io.netty.buffer.ByteBuf
;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
public
class
TrafficProcess
extends
Process
{
@Override
public
void
getData
(
Map
jsonMap
,
ByteBuf
byteBuf
)
throws
Exception
{
if
(!
jsonMap
.
get
(
"event_cate"
).
equals
(
"traffic"
)){
return
;
}
Integer
event_refid
=(
Integer
)
jsonMap
.
get
(
"event_refid"
);
byteBuf
.
writeInt
(
event_refid
);
DateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Date
event_dt
=
(
Date
)
jsonMap
.
get
(
"event_dt"
);
Date
eventDateSecond
=
dateFormat
.
parse
(
dateFormat
.
format
(
event_dt
));
byteBuf
.
writeInt
((
int
)
eventDateSecond
.
getTime
());
byteBuf
.
writeInt
((
int
)
event_dt
.
getTime
());
String
plate
=
""
;
String
plateColor
=
""
;
Integer
plateScore
=
0
;
Integer
laneNumber
=
0
;
String
carType
=
""
;
String
carColor
=
""
;
Integer
speed
=
0
;
String
direction
=
""
;
String
logoType
=
""
;
String
locationName
=
""
;
String
illegalType
=
""
;
Integer
limit_speed
=
0
;
Integer
spark_speed
=
0
;
Integer
red_start_time
=
0
;
Integer
red_end_time
=
0
;
Integer
red_start_second
=
0
;
Integer
red_end_second
=
0
;
if
(
jsonMap
.
get
(
"event_data"
)!=
null
){
Map
event_data
=
(
Map
)
jsonMap
.
get
(
"event_data"
);
if
(
event_data
.
get
(
"vehicle"
)!=
null
){
Map
vehicle
=
(
Map
)
event_data
.
get
(
"vehicle"
);
if
(
vehicle
.
get
(
"plate"
)!=
null
){
Map
plateMap
=
(
Map
)
vehicle
.
get
(
"plate"
);
plate
=
(
String
)
plateMap
.
get
(
"text"
);
plateScore
=
(
Integer
)
plateMap
.
get
(
"score"
);
}
}
if
(
event_data
.
get
(
"uservehicle"
)!=
null
){
Map
userVehicle
=
(
Map
)
event_data
.
get
(
"uservehicle"
);
plateColor
=
(
String
)
userVehicle
.
get
(
"platetype"
);
carType
=
(
String
)
userVehicle
.
get
(
"vehicletype"
);
carColor
=
(
String
)
userVehicle
.
get
(
"vehiclecolor"
);
logoType
=
(
String
)
userVehicle
.
get
(
"logotype"
);
}
if
(
event_data
.
get
(
"lane"
)!=
null
){
Map
laneMap
=
(
Map
)
event_data
.
get
(
"lane"
);
if
(
laneMap
.
get
(
"number"
)!=
null
){
laneNumber
=(
Integer
)
laneMap
.
get
(
"number"
);
}
}
speed
=
Integer
.
valueOf
(
String
.
valueOf
((
Double
)
event_data
.
get
(
"speed"
)));
if
(
event_data
.
get
(
"location"
)!=
null
){
Map
locationMap
=
(
Map
)
event_data
.
get
(
"location"
);
if
(
locationMap
.
get
(
"drive_direction"
)!=
null
){
Map
directionMap
=
(
Map
)
locationMap
.
get
(
"drive_direction"
);
direction
=
(
String
)
directionMap
.
get
(
"code"
);
}
locationName
=
(
String
)
locationMap
.
get
(
"name"
);
}
if
(
event_data
.
get
(
"illegal"
)!=
null
){
Map
illegalMap
=
(
Map
)
event_data
.
get
(
"illegal"
);
if
((
Integer
)
illegalMap
.
get
(
"state"
)==
1
){
illegalType
=
(
String
)
illegalMap
.
get
(
"code"
);
if
(
illegalMap
.
get
(
"detail"
)!=
null
){
Map
detailMap
=
(
Map
)
illegalMap
.
get
(
"detail"
);
Date
red_start_dt
=
(
Date
)
detailMap
.
get
(
"start_dt"
);
Date
red_end_dt
=
(
Date
)
detailMap
.
get
(
"end_dt"
);
Date
startDateSecond
=
dateFormat
.
parse
(
dateFormat
.
format
(
red_start_dt
));
Date
endDateSecond
=
dateFormat
.
parse
(
dateFormat
.
format
(
red_end_dt
));
red_start_time
=(
int
)
red_start_dt
.
getTime
();
red_end_time
=(
int
)
red_end_dt
.
getTime
();
red_start_second
=(
int
)
startDateSecond
.
getTime
();
red_end_second
=(
int
)
endDateSecond
.
getTime
();
limit_speed
=
Integer
.
valueOf
(
String
.
valueOf
((
Double
)
event_data
.
get
(
"limit_speed"
)));
spark_speed
=
Integer
.
valueOf
(
String
.
valueOf
((
Double
)
event_data
.
get
(
"spark_speed"
)));
}
}
}
}
//车牌需要转换一下
convertPlate
(
plate
,
byteBuf
);
//车牌类型(颜色)需要转换一下
convertPlateColor
(
plateColor
,
byteBuf
);
byteBuf
.
writeInt
(
plateScore
);
byteBuf
.
writeInt
(
laneNumber
);
//车辆类型需要转换
convertCarType
(
carType
,
byteBuf
);
if
(
jsonMap
.
get
(
"pics"
)!=
null
){
List
<
Map
>
pics
=
(
List
<
Map
>)
jsonMap
.
get
(
"pics"
);
if
(
pics
.
size
()<
2
){
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
}
else
{
String
picbase64
=
(
String
)
pics
.
get
(
1
).
get
(
"pic_base64"
);
byteBuf
.
writeInt
(
picbase64
.
getBytes
().
length
);
byteBuf
.
writeInt
((
Integer
)
pics
.
get
(
1
).
get
(
"width"
));
byteBuf
.
writeInt
((
Integer
)
pics
.
get
(
1
).
get
(
"hight"
));
}
String
picbase64
=
(
String
)
pics
.
get
(
0
).
get
(
"pic_base64"
);
byteBuf
.
writeInt
(
picbase64
.
getBytes
().
length
);
byteBuf
.
writeInt
((
Integer
)
pics
.
get
(
0
).
get
(
"width"
));
byteBuf
.
writeInt
((
Integer
)
pics
.
get
(
0
).
get
(
"hight"
));
if
(
pics
.
get
(
0
).
get
(
"object_rect"
)!=
null
){
Map
object_rect
=
(
Map
)
pics
.
get
(
0
).
get
(
"object_rect"
);
byteBuf
.
writeInt
(
Integer
.
valueOf
(
String
.
valueOf
((
Double
)
object_rect
.
get
(
"left"
))));
byteBuf
.
writeInt
(
Integer
.
valueOf
(
String
.
valueOf
((
Double
)
object_rect
.
get
(
"top"
))));
byteBuf
.
writeInt
(
Integer
.
valueOf
(
String
.
valueOf
((
Double
)
object_rect
.
get
(
"right"
))));
byteBuf
.
writeInt
(
Integer
.
valueOf
(
String
.
valueOf
((
Double
)
object_rect
.
get
(
"bottom"
))));
}
else
{
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
}
}
else
{
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
}
//车身颜色需要转换
convertCarColor
(
carColor
,
byteBuf
);
byteBuf
.
writeInt
(
speed
);
//行驶方向需要转换
convertDirection
(
direction
,
byteBuf
);
//车商标志需要转换
convertLogo
(
logoType
,
byteBuf
);
//地点名称暂时没有赋值,确认是不是用locationName
byteBuf
.
writeBytes
(
new
byte
[
32
]);
//录像路径不知道怎么赋值
byteBuf
.
writeBytes
(
new
byte
[
128
]);
//第一张全景图路径不知道怎么赋值
byteBuf
.
writeBytes
(
new
byte
[
128
]);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
//车型细分暂时未赋值
byteBuf
.
writeInt
(
0
);
//车牌结构暂时未赋值
byteBuf
.
writeInt
(
0
);
//违章类型需要转换
convertIllegalType
(
illegalType
,
byteBuf
);
byteBuf
.
writeInt
(
0
);
//第二张图片时间不知道
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
0
);
byteBuf
.
writeInt
(
red_start_second
);
byteBuf
.
writeInt
(
red_start_time
);
byteBuf
.
writeInt
(
red_end_second
);
byteBuf
.
writeInt
(
red_end_time
);
byteBuf
.
writeInt
(
limit_speed
);
byteBuf
.
writeInt
(
spark_speed
);
//保留字段,char[4]
byteBuf
.
writeBytes
(
new
byte
[
64
]);
}
public
void
convertPlate
(
String
plate
,
ByteBuf
byteBuf
){
}
public
void
convertPlateColor
(
String
plateColor
,
ByteBuf
byteBuf
){
}
public
void
convertCarType
(
String
carType
,
ByteBuf
byteBuf
){
}
public
void
convertCarColor
(
String
carColor
,
ByteBuf
byteBuf
){
}
public
void
convertDirection
(
String
direction
,
ByteBuf
byteBuf
){
}
public
void
convertLogo
(
String
logo
,
ByteBuf
byteBuf
){
}
public
void
convertIllegalType
(
String
illegal
,
ByteBuf
byteBuf
){
}
}
Write
Preview
Markdown
is supported
Attach a file
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 post a comment