Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
V
VideoAIBatchTaskConsumerService
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
VideoAIService
VideoAIBatchTaskConsumerService
Commits
fb73cb9a
Commit
fb73cb9a
authored
May 17, 2021
by
zhouts
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
告警展示
parent
04239193
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
480 additions
and
181 deletions
+480
-181
src/main/java/com/cx/cn/cxquartz/config/ScheduleTaskConfig.java
...in/java/com/cx/cn/cxquartz/config/ScheduleTaskConfig.java
+34
-0
src/main/java/com/cx/cn/cxquartz/controller/ExtController.java
...ain/java/com/cx/cn/cxquartz/controller/ExtController.java
+134
-76
src/main/java/com/cx/cn/cxquartz/controller/IndexController.java
...n/java/com/cx/cn/cxquartz/controller/IndexController.java
+1
-1
src/main/java/com/cx/cn/cxquartz/dao/CodeMapper.java
src/main/java/com/cx/cn/cxquartz/dao/CodeMapper.java
+17
-0
src/main/java/com/cx/cn/cxquartz/dao/QuartzTaskInformationsMapper.java
.../com/cx/cn/cxquartz/dao/QuartzTaskInformationsMapper.java
+2
-0
src/main/java/com/cx/cn/cxquartz/service/quartz/CodeService.java
...n/java/com/cx/cn/cxquartz/service/quartz/CodeService.java
+15
-0
src/main/java/com/cx/cn/cxquartz/service/quartz/FtpService.java
...in/java/com/cx/cn/cxquartz/service/quartz/FtpService.java
+5
-5
src/main/java/com/cx/cn/cxquartz/service/quartz/QuartzService.java
...java/com/cx/cn/cxquartz/service/quartz/QuartzService.java
+4
-0
src/main/java/com/cx/cn/cxquartz/service/quartz/QuartzTaskInformationsService.java
...xquartz/service/quartz/QuartzTaskInformationsService.java
+3
-0
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/CodeServiceImpl.java
...m/cx/cn/cxquartz/service/quartz/impl/CodeServiceImpl.java
+26
-0
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/QuartzServiceImpl.java
...cx/cn/cxquartz/service/quartz/impl/QuartzServiceImpl.java
+6
-0
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/QuartzTaskInformationsServiceImpl.java
...ervice/quartz/impl/QuartzTaskInformationsServiceImpl.java
+7
-1
src/main/java/com/cx/cn/cxquartz/util/FTPUtil.java
src/main/java/com/cx/cn/cxquartz/util/FTPUtil.java
+0
-2
src/main/java/com/cx/cn/cxquartz/util/FileTransferManager.java
...ain/java/com/cx/cn/cxquartz/util/FileTransferManager.java
+2
-1
src/main/java/com/cx/cn/cxquartz/vo/Code.java
src/main/java/com/cx/cn/cxquartz/vo/Code.java
+88
-0
src/main/java/com/cx/cn/cxquartz/vo/TraffpictureParam.java
src/main/java/com/cx/cn/cxquartz/vo/TraffpictureParam.java
+3
-3
src/main/resources/mapper/CodeMapper.xml
src/main/resources/mapper/CodeMapper.xml
+20
-0
src/main/resources/mapper/QuartzTaskInformationsMapper.xml
src/main/resources/mapper/QuartzTaskInformationsMapper.xml
+4
-1
src/main/resources/templates/updatetask.html
src/main/resources/templates/updatetask.html
+109
-91
No files found.
src/main/java/com/cx/cn/cxquartz/config/ScheduleTaskConfig.java
0 → 100644
View file @
fb73cb9a
package
com
.
cx
.
cn
.
cxquartz
.
config
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
java.util.Calendar
;
@Configuration
@EnableScheduling
public
class
ScheduleTaskConfig
{
/***
* 每隔20分钟执行一遍判断rtsp 是否变换
*/
@Scheduled
(
cron
=
"0 0 2 * * ? "
)
private
void
statis
()
{
}
// @Scheduled(cron = "0 30/5 6-19 * * ?")//每隔5分钟统计当天目前为止的数据
// private void statistoday() {
// //判断是否为空表
// //执行查询存在更新,不存在新增
// log.info("每隔5分钟");
// Integer result= traffFlowService.insertOrUpdatevehicleTodaystatistic();
// log.info("today"+result);
//
// }
}
src/main/java/com/cx/cn/cxquartz/controller/ExtController.java
View file @
fb73cb9a
...
@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
...
@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.cx.cn.cxquartz.bean.PatrolCtrlAlarm
;
import
com.cx.cn.cxquartz.bean.PatrolCtrlAlarm
;
import
com.cx.cn.cxquartz.bean.PatrolCtrlRecord
;
import
com.cx.cn.cxquartz.bean.PatrolCtrlRecord
;
import
com.cx.cn.cxquartz.bean.PictureTime
;
import
com.cx.cn.cxquartz.bean.PictureTime
;
import
com.cx.cn.cxquartz.bean.QuartzTaskInformations
;
import
com.cx.cn.cxquartz.job.WebSocket
;
import
com.cx.cn.cxquartz.job.WebSocket
;
import
com.cx.cn.cxquartz.service.quartz.*
;
import
com.cx.cn.cxquartz.service.quartz.*
;
import
com.cx.cn.cxquartz.util.*
;
import
com.cx.cn.cxquartz.util.*
;
...
@@ -63,6 +64,9 @@ public class ExtController {
...
@@ -63,6 +64,9 @@ public class ExtController {
@Value
(
"${file.recogurl}"
)
@Value
(
"${file.recogurl}"
)
private
String
recogurl
;
private
String
recogurl
;
@Value
(
"${file.getrtspbyurl}"
)
private
String
getrtspbyurl
;
@Autowired
@Autowired
private
RestTemplate
restTemplate
;
private
RestTemplate
restTemplate
;
...
@@ -97,6 +101,9 @@ public class ExtController {
...
@@ -97,6 +101,9 @@ public class ExtController {
@Autowired
@Autowired
WebSocket
webSocket
;
WebSocket
webSocket
;
@Autowired
CodeService
codeservice
;
private
static
CompletionService
<
PictureResult
>
threadService
=
new
ExecutorCompletionService
<
PictureResult
>(
ThreadPoolUtil
.
getPool
());
private
static
CompletionService
<
PictureResult
>
threadService
=
new
ExecutorCompletionService
<
PictureResult
>(
ThreadPoolUtil
.
getPool
());
@RequestMapping
(
value
=
"/patrolCtrlRecord"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/patrolCtrlRecord"
,
method
=
RequestMethod
.
POST
)
...
@@ -195,82 +202,81 @@ public class ExtController {
...
@@ -195,82 +202,81 @@ public class ExtController {
}
}
@RequestMapping
(
value
=
"/getRTSP/{photonum}"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/getRTSP/{photonum}"
,
method
=
RequestMethod
.
POST
)
public
String
getrtsp
(
HttpServletRequest
request
,
public
String
getrtsp
(
@RequestBody
String
rtspValue
,
@RequestBody
String
rtspValue
,
@PathVariable
(
"photonum"
)
Integer
photonum
)
{
@PathVariable
(
"photonum"
)
Integer
photonum
)
{
//尝试抽取第一张图片
//根据判断监控是否存在
List
<
Sbtdspsr
>
sbtdspsrlist
=
new
ArrayList
<>();
List
<
Sbtdspsr
>
sbtdspsrlist
=
sbtdspsrService
.
selectByRtsp
(
rtspValue
);
List
<
String
>
imgUrls
=
new
ArrayList
<>();
if
(
sbtdspsrlist
.
size
()
==
0
)
{
HttpHeaders
headers
=
new
HttpHeaders
();
//可能rtsp地址已经变换,重新查询rtsp 地址
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON_UTF8
);
String
[]
codearray
=
rtspValue
.
split
(
"\\?"
)[
0
].
split
(
"/"
);
Map
<
String
,
Object
>
maps
=
new
HashMap
<
String
,
Object
>();
if
(
codearray
.
length
>
3
)
{
maps
.
put
(
"rtspvalue"
,
rtspValue
);
String
devicecode
=
codearray
[
3
].
replace
(
"_1"
,
""
);
maps
.
put
(
"refresh"
,
1
);
Map
<
String
,
String
>
map
=
new
HashMap
<>();
HttpEntity
<
String
>
formEntity
=
new
HttpEntity
<>(
null
,
headers
);
map
.
put
(
"deviceCode"
,
devicecode
);
try
{
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
getForEntity
(
"http://212.129.142.17:8281/gh/device/test?deviceCode={deviceCode}"
,
String
.
class
,
map
);
ResponseEntity
<
String
>
exchange
=
restTemplate
.
exchange
(
rtspurl
+
"?url={rtspvalue}&refresh={refresh}"
,
// ResponseEntity<String> exchange = restTemplate.exchange(getrtspbyurl + "?deviceCode={deviceCode}",
HttpMethod
.
GET
,
formEntity
,
String
.
class
,
maps
);
// HttpMethod.GET, null, String.class, map);
String
body
=
exchange
.
getBody
();
JSONObject
json
=
JSONObject
.
parseObject
(
responseEntity
.
getBody
());
if
(
null
==
body
||
""
.
equals
(
body
)){
if
(
null
!=
json
.
getString
(
"code"
)
&&
json
.
getString
(
"code"
).
equals
(
"0"
))
{
//rtsp地址可能改变,重新获取
//返回rtsp 地址
rtspValue
=
getnewRtspVlue
(
rtspValue
);
if
(
null
!=
json
.
get
(
"obj"
)
&&
!
""
.
equals
(
json
.
get
(
"obj"
)))
{
}
//更新sbtdspsr 地址
else
{
int
result
=
sbtdspsrService
.
updateRecogByRtsp
(
String
.
valueOf
(
json
.
get
(
"obj"
)),
devicecode
);
rtspValue
=
getnewRtspVlue
(
rtspValue
);
if
(
result
>
0
)
{
JSONObject
json
=
JSONObject
.
parseObject
(
exchange
.
getBody
());
logger
.
info
(
"更新rtsp success"
);
imgUrls
.
add
(
json
.
getString
(
"url"
));
}
else
{
logger
.
info
(
"设备"
+
devicecode
+
"不存在"
);
return
ResultUtil
.
success
();
}
}
}
sbtdspsrlist
=
sbtdspsrService
.
selectByRtsp
(
String
.
valueOf
(
json
.
get
(
"obj"
)));
}
}
}
if
(
sbtdspsrlist
.
size
()
==
0
)
{
}
catch
(
Exception
ex
)
ResultUtil
.
success
();
{
}
else
{
//rtsp地址可能改变,重新获取
try
{
rtspValue
=
getnewRtspVlue
(
rtspValue
);
}
sbtdspsrlist
=
sbtdspsrService
.
selectByRtsp
(
rtspValue
);
if
(
sbtdspsrlist
.
size
()
==
0
)
{
ResultUtil
.
success
();
}
else
{
try
{
Sbtdspsr
sbtdspsr
=
sbtdspsrlist
.
get
(
0
);
Sbtdspsr
sbtdspsr
=
sbtdspsrlist
.
get
(
0
);
//根据rtsp 进行图片获取及存储
//根据rtsp 进行图片获取及存储
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON_UTF8
);
Map
<
String
,
Object
>
maps
=
new
HashMap
<
String
,
Object
>();
maps
.
put
(
"rtspvalue"
,
rtspValue
);
maps
.
put
(
"refresh"
,
1
);
HttpEntity
<
String
>
formEntity
=
new
HttpEntity
<
String
>(
null
,
headers
);
TraffAlarmRecord
record
=
new
TraffAlarmRecord
();
TraffAlarmRecord
record
=
new
TraffAlarmRecord
();
Map
<
String
,
Object
>
transferRecordMap
=
new
HashMap
<
String
,
Object
>();
Map
<
String
,
Object
>
transferRecordMap
=
new
HashMap
<>();
List
<
String
>
imgUrls
=
new
ArrayList
<>();
TraffAlarmRecord
traffAlarmRecord
=
new
TraffAlarmRecord
();
TraffAlarmRecord
traffAlarmRecord
=
new
TraffAlarmRecord
();
traffAlarmRecord
.
setFdid
(
sbtdspsr
.
getSbbh
());
traffAlarmRecord
.
setFdid
(
sbtdspsr
.
getSbbh
());
traffAlarmRecord
.
setChannelid
(
Integer
.
parseInt
(
String
.
valueOf
(
sbtdspsr
.
getTdbh
())));
traffAlarmRecord
.
setChannelid
(
Integer
.
parseInt
(
String
.
valueOf
(
sbtdspsr
.
getTdbh
())));
traffAlarmRecord
.
setAreaid
(
Long
.
parseLong
(
sbtdspsr
.
getXzbh
()));
traffAlarmRecord
.
setAreaid
(
Long
.
parseLong
(
sbtdspsr
.
getXzbh
()));
for
(
int
i
=
0
;
i
<
photonum
;
i
++)
{
//photonum张图片,最多5张
int
i
=
0
;
if
(
imgUrls
.
size
()>
0
)
{
i
=
1
;
}
while
(
i
<
photonum
)
{
i
++;
//第一张判断是否已经抽完图片,最多5张
if
(
i
>
4
)
{
if
(
i
>
4
)
{
break
;
break
;
}
}
ResponseEntity
<
String
>
exchange
=
restTemplate
.
exchange
(
rtspurl
+
"?url={rtspvalue}&refresh={refresh}"
,
ResponseEntity
<
String
>
exchange
=
restTemplate
.
exchange
(
rtspurl
+
"?url={rtspvalue}&refresh={refresh}"
,
HttpMethod
.
GET
,
formEntity
,
String
.
class
,
maps
);
HttpMethod
.
GET
,
formEntity
,
String
.
class
,
maps
);
String
body
=
exchange
.
getBody
();
if
(
null
!=
exchange
.
getBody
()||
!
""
.
equals
(
exchange
.
getBody
()))
{
JSONObject
json
=
JSONObject
.
parseObject
(
exchange
.
getBody
());
JSONObject
json
=
JSONObject
.
parseObject
(
exchange
.
getBody
());
if
(
null
!=
json
.
getString
(
"ret"
)
&&
json
.
getString
(
"ret"
).
equals
(
"0"
))
{
if
(
null
!=
json
.
getString
(
"ret"
)
&&
json
.
getString
(
"ret"
).
equals
(
"0"
))
{
//获得图片地址
//获得图片地址
imgUrls
.
add
(
json
.
getString
(
"url"
));
imgUrls
.
add
(
json
.
getString
(
"url"
));
}
}
}
}
}
traffAlarmRecord
.
setCreatetime
(
new
Date
());
traffAlarmRecord
.
setCreatetime
(
new
Date
());
traffAlarmRecord
.
setPushstatus
(
9
);
traffAlarmRecord
.
setPushstatus
(
9
);
traffAlarmRecord
.
setCheckstatus
(
9
);
//免审
//免审
traffAlarmRecord
.
setProcessstatus
(
"-2"
);
//未提取特征
traffAlarmRecord
.
setCheckstatus
(
9
);
//未提取特征
traffAlarmRecord
.
setProcessstatus
(
"-2"
);
//存储到ftp 上去
//存储到ftp 上去
for
(
int
i
=
0
;
i
<
imgUrls
.
size
();
i
++)
{
for
(
int
k
=
0
;
k
<
imgUrls
.
size
();
k
++)
{
TraffAlarmRecordFromImgEnum
.
valueOf
(
"IMG"
+
i
).
setImg
(
traffAlarmRecord
,
imgUrls
.
get
(
i
));
TraffAlarmRecordFromImgEnum
.
valueOf
(
"IMG"
+
k
).
setImg
(
traffAlarmRecord
,
imgUrls
.
get
(
k
));
}
}
String
basepath
=
"gstraff/"
+
traffAlarmRecord
.
getFdid
()
+
(
traffAlarmRecord
.
getChannelid
()
<
10
?
"0"
+
traffAlarmRecord
.
getChannelid
()
:
traffAlarmRecord
.
getChannelid
())
+
"/"
+
DateUtils
.
formatCurrDayNoSign
();
String
basepath
=
"gstraff/"
+
traffAlarmRecord
.
getFdid
()
+
(
traffAlarmRecord
.
getChannelid
()
<
10
?
"0"
+
traffAlarmRecord
.
getChannelid
()
:
traffAlarmRecord
.
getChannelid
())
+
"/"
+
DateUtils
.
formatCurrDayNoSign
();
Ftp
ftp
=
ftpService
.
reloadFtp
();
Ftp
ftp
=
ftpService
.
reloadFtp
();
//入表
//入表
Long
recordid
=
Long
.
parseLong
(
String
.
valueOf
(
traffAlarmRecordService
.
inserTraffAlarmRecord
(
traffAlarmRecord
)));
Long
recordid
=
Long
.
parseLong
(
String
.
valueOf
(
traffAlarmRecordService
.
inserTraffAlarmRecord
(
traffAlarmRecord
)));
FileTransferManager
.
fetchUrlsFromRecord
(
traffAlarmRecord
,
transferRecordMap
);
FileTransferManager
.
fetchUrlsFromRecord
(
traffAlarmRecord
,
transferRecordMap
);
...
@@ -287,12 +293,42 @@ public class ExtController {
...
@@ -287,12 +293,42 @@ public class ExtController {
traffAlarmRecordService
.
updateTraffAlarmRecordUrl
(
traffAlarmRecord
);
traffAlarmRecordService
.
updateTraffAlarmRecordUrl
(
traffAlarmRecord
);
return
ResultUtil
.
success
();
return
ResultUtil
.
success
();
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
logger
.
error
(
"ext/getRTSP
-->
"
+
e
.
toString
());
logger
.
error
(
"ext/getRTSP
r-->error
"
+
e
.
toString
());
}
}
}
}
return
ResultUtil
.
success
();
return
ResultUtil
.
success
();
}
}
public
String
getnewRtspVlue
(
String
rtspValue
){
String
rtspnewvalue
=
""
;
String
[]
codearray
=
rtspValue
.
split
(
"\\?"
)[
0
].
split
(
"/"
);
if
(
codearray
.
length
>
3
)
{
String
devicecode
=
codearray
[
3
].
replace
(
"_1"
,
""
);
Map
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"deviceCode"
,
devicecode
);
ResponseEntity
<
String
>
responseEntity
=
restTemplate
.
getForEntity
(
getrtspbyurl
+
"?deviceCode={deviceCode}"
,
String
.
class
,
map
);
JSONObject
json
=
JSONObject
.
parseObject
(
responseEntity
.
getBody
());
if
(
null
!=
json
.
getString
(
"code"
)
&&
json
.
getString
(
"code"
).
equals
(
"0"
))
{
//返回rtsp 地址
if
(
null
!=
json
.
get
(
"obj"
)
&&
!
""
.
equals
(
json
.
get
(
"obj"
)))
{
rtspnewvalue
=
String
.
valueOf
(
json
.
get
(
"obj"
));
//更新sbtdspsr 地址
int
result
=
sbtdspsrService
.
updateRecogByRtsp
(
rtspnewvalue
,
devicecode
);
if
(
result
>
0
)
{
logger
.
info
(
"更新rtsp success"
);
//更新task rtsp 地址
map
.
clear
();
map
.
put
(
"nrtsp"
,
rtspnewvalue
);
map
.
put
(
"ortsp"
,
rtspValue
);
quartzService
.
UpdateExecuteParam
(
map
);
}
else
{
logger
.
info
(
"设备"
+
devicecode
+
"不存在"
);
}
}
}
}
return
rtspValue
;
}
@RequestMapping
(
value
=
"/getRecog"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/getRecog"
,
method
=
RequestMethod
.
POST
)
public
String
getRecog
(
HttpServletRequest
request
,
@RequestBody
String
rtspValue
)
{
public
String
getRecog
(
HttpServletRequest
request
,
@RequestBody
String
rtspValue
)
{
//根据判断监控是否存在,该监控检测的事件是什么
//根据判断监控是否存在,该监控检测的事件是什么
...
@@ -300,7 +336,8 @@ public class ExtController {
...
@@ -300,7 +336,8 @@ public class ExtController {
String
model
=
"1"
;
String
model
=
"1"
;
String
videoid
=
""
;
String
videoid
=
""
;
String
recordtype
=
"1"
;
String
recordtype
=
"1"
;
Long
[]
roiarray
=
new
Long
[
4
];
//图片框选出来的范围
//图片框选出来的范围
Long
[]
roiarray
=
new
Long
[
4
];
if
(
null
!=
mapList
&&
!
mapList
.
equals
(
""
)
&&
mapList
.
size
()>
0
)
{
if
(
null
!=
mapList
&&
!
mapList
.
equals
(
""
)
&&
mapList
.
size
()>
0
)
{
...
@@ -334,6 +371,8 @@ public class ExtController {
...
@@ -334,6 +371,8 @@ public class ExtController {
}
}
}
}
//查询该监控下面还没有经过分析的数据
//查询该监控下面还没有经过分析的数据
String
basepath
=
"gstraff/"
+
videoid
+
"/"
+
DateUtils
.
formatCurrDayNoSign
();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"sbbh"
,
videoid
.
split
(
"_"
)[
0
]);
map
.
put
(
"sbbh"
,
videoid
.
split
(
"_"
)[
0
]);
map
.
put
(
"tdbh"
,
videoid
.
split
(
"_"
)[
1
]);
map
.
put
(
"tdbh"
,
videoid
.
split
(
"_"
)[
1
]);
...
@@ -354,9 +393,10 @@ public class ExtController {
...
@@ -354,9 +393,10 @@ public class ExtController {
GoalStructureParam
param
=
FileTransferManager
.
getGoalStructureParam
(
count
,
roiarray
,
GoalStructureParam
param
=
FileTransferManager
.
getGoalStructureParam
(
count
,
roiarray
,
Integer
.
parseInt
(
model
==
null
?
"1"
:
""
.
equals
(
model
)
?
"1"
:
model
Integer
.
parseInt
(
model
==
null
?
"1"
:
""
.
equals
(
model
)
?
"1"
:
model
),
base64Encoder
,
transferRecord
);
),
base64Encoder
,
transferRecord
);
// if (param.getImageList().size() < 1) {
if
(
param
.
getImageList
().
size
()
<
1
)
{
// continue;
logger
.
info
(
" no imagelist "
);
// }
continue
;
}
requestEntity
=
new
HttpEntity
<>(
JSONObject
.
toJSONString
(
param
),
headers
);
requestEntity
=
new
HttpEntity
<>(
JSONObject
.
toJSONString
(
param
),
headers
);
ResponseEntity
<
String
>
response
=
restTemplate
.
exchange
(
recogurl
,
HttpMethod
.
POST
,
requestEntity
,
String
.
class
);
ResponseEntity
<
String
>
response
=
restTemplate
.
exchange
(
recogurl
,
HttpMethod
.
POST
,
requestEntity
,
String
.
class
);
String
body
=
response
.
getBody
();
String
body
=
response
.
getBody
();
...
@@ -367,23 +407,36 @@ public class ExtController {
...
@@ -367,23 +407,36 @@ public class ExtController {
//获得 type
//获得 type
//更新 recordalarm 为一分析
//更新 recordalarm 为一分析
traffAlarmRecordService
.
updateTraffAlarmRecordProcess
(
transferRecord
);
traffAlarmRecordService
.
updateTraffAlarmRecordProcess
(
transferRecord
);
if
(
objectList
.
size
()<
1
){
logger
.
info
(
" no picturedata "
);
continue
;
}
//根据结构化统计查询是否超过密度,超过则预警
Code
code
=
codeservice
.
selectalarmNum
(
recordtype
);
//判断是否统计结构化数据
//判断是否统计结构化数据
if
((
"6"
.
equals
(
recordtype
)||
"2"
.
equals
(
recordtype
)))
if
(
recordtype
.
equals
(
"6"
)||
recordtype
.
equals
(
"2"
))
//结构化统计
{
{
TraffpictureParam
traffpictureParam
=
new
TraffpictureParam
();
if
(
null
!=
code
&&
null
!=
code
.
getAlarmnum
()&&
code
.
getAlarmnum
()>
objectList
.
size
())
setTraffpictureParam
(
recordtype
,
base64Encoder
,
transferRecord
,
traffpictureParam
);
{
traffpictureParam
.
setTargetnum
(
objectList
.
size
());
TraffpictureParam
traffpictureParam
=
new
TraffpictureParam
();
traffPictureService
.
updateTraffpicture
(
traffpictureParam
);
setTraffpictureParam
(
recordtype
,
base64Encoder
,
transferRecord
,
traffpictureParam
);
WebSocket
.
GroupSending
(
JSONObject
.
toJSONString
(
traffpictureParam
));
traffpictureParam
.
setTargetnum
(
objectList
.
size
());
//超过则预警
traffpictureParam
.
setRecordtype
(
recordtype
);
//图片重叠?
traffpictureParam
.
setImagedata
(
transferRecord
.
getImg1path
());
traffPictureService
.
updateTraffpicture
(
traffpictureParam
);
WebSocket
.
GroupSending
(
JSONObject
.
toJSONString
(
traffpictureParam
));
}
}
}
else
{
else
{
for
(
TraffpictureParam
traffpictureParam
:
objectList
)
{
for
(
TraffpictureParam
traffpictureParam
:
objectList
)
{
//根据imageid 获得 base64图片
//根据imageid 获得 base64图片
JSONObject
metadata
=
JSONObject
.
parseObject
(
String
.
valueOf
(
traffpictureParam
.
getMetadata
()));
JSONObject
metadata
=
JSONObject
.
parseObject
(
String
.
valueOf
(
traffpictureParam
.
getMetadata
()));
if
(
null
!=
metadata
&&
metadata
.
get
(
"Type"
).
equals
(
model
))
{
//规定区域内出现告警对象
if
(
null
!=
metadata
&&
metadata
.
get
(
"Type"
).
equals
(
model
))
{
//规定区域内出现告警对象
setTraffpictureParam
(
recordtype
,
base64Encoder
,
transferRecord
,
traffpictureParam
);
setTraffpictureParam
(
recordtype
,
base64Encoder
,
transferRecord
,
traffpictureParam
);
if
(
metadata
.
get
(
"Type"
).
equals
(
"1"
))
//行人
if
(
"1"
.
equals
(
metadata
.
get
(
"Type"
)))
{
{
//规定范围内检测到人
//规定范围内检测到人
Pedestrian
meta
=
JSON
.
toJavaObject
(
metadata
,
Pedestrian
.
class
);
Pedestrian
meta
=
JSON
.
toJavaObject
(
metadata
,
Pedestrian
.
class
);
...
@@ -395,8 +448,9 @@ public class ExtController {
...
@@ -395,8 +448,9 @@ public class ExtController {
traffpictureParam
.
setObjw
(
meta
.
getObjectBoundingBox
().
getW
());
traffpictureParam
.
setObjw
(
meta
.
getObjectBoundingBox
().
getW
());
traffpictureParam
.
setObjh
(
meta
.
getObjectBoundingBox
().
getH
());
traffpictureParam
.
setObjh
(
meta
.
getObjectBoundingBox
().
getH
());
}
else
if
(
null
!=
metadata
&&
metadata
.
get
(
"Type"
).
equals
(
"2"
))
//车辆
}
else
if
(
null
!=
metadata
&&
"2"
.
equals
(
metadata
.
get
(
"Type"
)))
{
{
//车辆
Traffic
meta
=
JSON
.
toJavaObject
(
metadata
,
Traffic
.
class
);
Traffic
meta
=
JSON
.
toJavaObject
(
metadata
,
Traffic
.
class
);
meta
.
setId
(
traffpictureParam
.
getId
());
meta
.
setId
(
traffpictureParam
.
getId
());
//新增到车辆详情表
//新增到车辆详情表
...
@@ -407,7 +461,7 @@ public class ExtController {
...
@@ -407,7 +461,7 @@ public class ExtController {
traffpictureParam
.
setObjw
(
meta
.
getObjectBoundingBox
().
getW
());
traffpictureParam
.
setObjw
(
meta
.
getObjectBoundingBox
().
getW
());
traffpictureParam
.
setObjh
(
meta
.
getObjectBoundingBox
().
getH
());
traffpictureParam
.
setObjh
(
meta
.
getObjectBoundingBox
().
getH
());
}
}
}
else
if
(
null
!=
metadata
&&
metadata
.
get
(
"Type"
).
equals
(
"3"
))
{
}
else
if
(
null
!=
metadata
&&
"3"
.
equals
(
metadata
.
get
(
"Type"
)
))
{
Face
meta
=
JSON
.
toJavaObject
(
metadata
,
Face
.
class
);
Face
meta
=
JSON
.
toJavaObject
(
metadata
,
Face
.
class
);
meta
.
setId
(
traffpictureParam
.
getId
());
meta
.
setId
(
traffpictureParam
.
getId
());
faceService
.
insertFace
(
meta
);
faceService
.
insertFace
(
meta
);
...
@@ -416,7 +470,7 @@ public class ExtController {
...
@@ -416,7 +470,7 @@ public class ExtController {
traffpictureParam
.
setObjw
(
meta
.
getFaceBoundingBox
().
getW
());
traffpictureParam
.
setObjw
(
meta
.
getFaceBoundingBox
().
getW
());
traffpictureParam
.
setObjh
(
meta
.
getFaceBoundingBox
().
getH
());
traffpictureParam
.
setObjh
(
meta
.
getFaceBoundingBox
().
getH
());
//人骑车
//人骑车
}
else
if
(
null
!=
metadata
&&
metadata
.
get
(
"Type"
).
equals
(
"4"
))
}
else
if
(
null
!=
metadata
&&
"4"
.
equals
(
metadata
.
get
(
"Type"
)
))
{
{
PeopleRideBicyc
meta
=
JSON
.
toJavaObject
(
metadata
,
PeopleRideBicyc
.
class
);
PeopleRideBicyc
meta
=
JSON
.
toJavaObject
(
metadata
,
PeopleRideBicyc
.
class
);
meta
.
setId
(
traffpictureParam
.
getId
());
meta
.
setId
(
traffpictureParam
.
getId
());
...
@@ -427,16 +481,20 @@ public class ExtController {
...
@@ -427,16 +481,20 @@ public class ExtController {
traffpictureParam
.
setObjh
(
meta
.
getObjectBoundingBox
().
getH
());
traffpictureParam
.
setObjh
(
meta
.
getObjectBoundingBox
().
getH
());
}
}
//更新 traffpicture特征值
//更新 traffpicture特征值
try
{
try
{
ByteArrayInputStream
bais
=
new
ByteArrayInputStream
(
base64Decoder
.
decodeBuffer
(
traffpictureParam
.
getImagedata
()));
ByteArrayInputStream
bais
=
new
ByteArrayInputStream
(
base64Decoder
.
decodeBuffer
(
traffpictureParam
.
getImagedata
()));
BufferedImage
image
=
ImageIO
.
read
(
bais
);
BufferedImage
image
=
ImageIO
.
read
(
bais
);
Graphics
g
=
image
.
getGraphics
();
Graphics
g
=
image
.
getGraphics
();
g
.
setColor
(
Color
.
GREEN
);
//画笔颜色
g
.
setColor
(
Color
.
GREEN
);
g
.
drawRect
(
traffpictureParam
.
getObjx
(),
traffpictureParam
.
getObjy
(),
traffpictureParam
.
getObjw
(),
traffpictureParam
.
getObjh
());
g
.
drawRect
(
traffpictureParam
.
getObjx
(),
traffpictureParam
.
getObjy
(),
traffpictureParam
.
getObjw
(),
traffpictureParam
.
getObjh
());
ByteArrayOutputStream
stream
=
new
ByteArrayOutputStream
();
ByteArrayOutputStream
stream
=
new
ByteArrayOutputStream
();
ImageIO
.
write
(
image
,
"png"
,
stream
);
ImageIO
.
write
(
image
,
"png"
,
stream
);
traffpictureParam
.
setImagedata
(
new
String
(
Base64
.
getEncoder
().
encode
(
stream
.
toByteArray
())));
//上传ftp
Ftp
ftp
=
ftpService
.
reloadFtp
();
String
ftputl
=
FTPUtil
.
getFtpUrl
(
ftp
)
+
basepath
+
"/"
+
traffpictureParam
.
getId
()+
"/imgdata.png"
;
traffpictureParam
.
setImagedata
(
ftputl
);
FTPUtil
.
uploadFile
(
ftp
,
basepath
+
"/"
+
traffpictureParam
.
getId
(),
"imgdata.png"
,
base64Encoder
.
encode
(
stream
.
toByteArray
()));
}
catch
(
Exception
ex
)
{
}
catch
(
Exception
ex
)
{
logger
.
info
(
"base64画框异常:"
+
ex
.
toString
());
logger
.
info
(
"base64画框异常:"
+
ex
.
toString
());
}
}
...
@@ -462,9 +520,9 @@ public class ExtController {
...
@@ -462,9 +520,9 @@ public class ExtController {
private
void
setTraffpictureParam
(
String
recordtype
,
BASE64Encoder
base64Encoder
,
TraffAlarmRecord
transferRecord
,
TraffpictureParam
traffpictureParam
)
{
private
void
setTraffpictureParam
(
String
recordtype
,
BASE64Encoder
base64Encoder
,
TraffAlarmRecord
transferRecord
,
TraffpictureParam
traffpictureParam
)
{
traffpictureParam
.
setAreaid
(
transferRecord
.
getAreaid
());
traffpictureParam
.
setAreaid
(
transferRecord
.
getAreaid
());
traffpictureParam
.
setFdid
(
transferRecord
.
getFdid
());
traffpictureParam
.
setFdid
(
transferRecord
.
getFdid
());
traffpictureParam
.
setChannelid
(
transferRecord
.
getChannelid
());
traffpictureParam
.
setRecordid
(
transferRecord
.
getRecordid
());
traffpictureParam
.
setRecordid
(
transferRecord
.
getRecordid
());
traffpictureParam
.
setProcessstatus
(
"0"
);
traffpictureParam
.
setChannelid
(
transferRecord
.
getChannelid
());
traffpictureParam
.
setCreatetime
(
new
Date
());
//获得imgid 对应的 base64
//获得imgid 对应的 base64
String
imgftpurl
=
traffPictureService
.
queryimgpath
(
traffpictureParam
);
String
imgftpurl
=
traffPictureService
.
queryimgpath
(
traffpictureParam
);
Ftp
ftp
=
ftpService
.
reloadFtp
();
Ftp
ftp
=
ftpService
.
reloadFtp
();
...
...
src/main/java/com/cx/cn/cxquartz/controller/IndexController.java
View file @
fb73cb9a
...
@@ -60,7 +60,7 @@ public class IndexController {
...
@@ -60,7 +60,7 @@ public class IndexController {
@PostMapping
(
"/images/recog"
)
@PostMapping
(
"/images/recog"
)
@ResponseBody
@ResponseBody
public
String
images
(
@RequestBody
GoalStructureParam
param
)
{
public
String
images
(
@RequestBody
GoalStructureParam
param
)
{
return
"{\"ret\":\"200\",\"error_msg\":\"OK\",\"ObjectList\":[{\"ImageID\":\"1\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"Angle\":\"128\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"UpperBoundingBox\":{\"x\":34,\"y\":123,\"w\":232,\"h\":263},\"LowerBoundingBox\":{\"x\":74,\"y\":309,\"w\":176,\"h\":408},\"CoatLength\":\"2\",\"CoatTexture\":\"1\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"TrousersLength\":\"1\",\"TrousersTexture\":\"1\",\"TrousersColor\":[\"5\"],\"TrousersColorNums\":\"1\",\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasGlasses\":\"0\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"0\",\"HasUmbrella\":\"0\",\"HasTrolley\":\"-1\",\"HasLuggage\":\"-1\",\"LuggageColor\":[],\"LuggageColorNums\":\"0\",\"HasKnife\":\"-1\",\"ObjectBoundingBox\":{\"x\":26,\"y\":13,\"w\":256,\"h\":708},\"TrafficViolation\":\"-1\",\"Type\":\"
1\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"3\",\"ObjectID\":1,\"Metadata\":{\"Angle\":\"128\",\"VehicleClass\":\"1\",\"VehicleColor\":[\"9\"],\"VehicleColorNums\":\"1\",\"VehicleBrand\":\"\\u96ea\\u4f5b\\u5170-\\u79d1\\u9c81\\u5179-2009_2013\",\"VehicleMainBrandName\":\"\\u96ea\\u4f5b\\u5170\",\"VehicleSubBrandName\":\"\\u79d1\\u9c81\\u5179\",\"VehicleYearName\":\"2009_2013\",\"HasPlate\":\"1\",\"PlateClass\":\"1\",\"PlateColor\":\"2\",\"PlateNo\":\"\\u6d59AJ079B\",\"PlateNeatness\":\"2\",\"Sunvisor\":\"0\",\"Paper\":\"0\",\"Decoration\":\"0\",\"Drop\":\"1\",\"Tag\":\"1\",\"SafetyBelt\":{\"MainDriver\":\"-1\",\"CoDriver\":\"-1\"},\"HasCall\":\"-1\",\"HasSkylight\":\"0\",\"HasBaggage\":\"0\",\"HasAerial\":\"0\",\"HasCrash\":\"-1\",\"HasDanger\":\"0\",\"HighwayTollVehicles\":\"1\",\"ObjectBoundingBox\":{\"x\":41,\"y\":40,\"w\":894,\"h\":717},\"TrafficViolation\":\"-1\",\"Type\":\"2\"},\"Feature\":\"AAAAAAAAAAAAAAAPAAAAAAAKABQAAAAAAAAAAAAAAAAhAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAAAAAAEwELAAAAAAAAAAAAAAAAAAAAAAAFCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAABIAAAAAABMAAAEAAAAAAAAAAAAAAAAAABAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAHgAAAAAAAAAAAAAAAgAAAAAHAAATAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAcAAAAAB8AAAAAAAAAAAAAAAAAAAAAABoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAMDgAAAAAAAB0AAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAA=\",\"BucketID\":76,\"BucketIDList\":[76,91,82,57,36,51,75,55,71,43,84,63,8,98,83,65,90,60,35,3,37,39,74,2,12,9,1,20,79,32,95,49,33,58,42,66,38,69,45,56,59,0,87,19,41,34,21,14,13,6,4,26,68,96,72,7,85,29,48,40,88,99,23,46,27,18,77,78,11,97,17,50,15,61,16,31,80,44,52,25,10,86,92,5,54,53,73,89,94,93,70,62,30,47,64,22,28,67,81,24],\"FaceFeature\":\"\",\"FaceBucketID\":-1,\"FaceBucketIDList\":[],\"FaceQuality\":\"0.000000\",\"FaceYaw\":\"0.000000\",\"FacePitch\":\"0.000000\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.000000\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"4\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"16\",\"Angle\":\"128\",\"BikeClass\":\"1\",\"SocialAttribute\":\"1\",\"Enterprise\":\"-1\",\"FaceBoundingBox\":{\"x\":145,\"y\":65,\"w\":54,\"h\":66},\"CoatLength\":\"2\",\"CoatTexture\":\"5\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"HelmetColor\":\"-1\",\"HasHelmet\":\"0\",\"HasGlasses\":\"1\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"-1\",\"HasUmbrella\":\"0\",\"HasPlate\":\"-1\",\"PlateNo\":\"-1\",\"HasPassenger\":\"1\",\"ObjectBoundingBox\":{\"x\":54,\"y\":16,\"w\":276,\"h\":635},\"TrafficViolation\":\"-1\",\"Type\":\"4\"},\"Feature\":\"UVNURgUA/wACAf/3AfwEA/kC/AMAAwAEAQACAPv+AAAB/wMHAgEA/wAGAAj/+AD7APwCAwkD9wsAAP4CBvn7/wz5A/wBBP8D/QICCAUCBv/7AgABAv7+AAH9AAUC/AX/AvsC/P4CAv39BAMA/gAAAAIA/wT6/v77A/YEAPoB//sG//7+/wD+/QAA/AMAAAQCAvz8/P3/AAH9+gX8/wD8/fr7AQAD//oA+AECAAAFAAH+/QH7/gIHAgYA/vz+AwADAgQCAgAL+wD9BgMGBv8E+/oF/P4H/wMD/gQC/wQH/v/4Agn9BQAC/wAE/P37BP/7AgIA/gj8APv7CAL9/vkABgL7/fz9/AD1BwD7AwAAAwH7AAb7+v4AAwX6/PsDBwMA/wH9AQD8AQP8APz7/vb8APoDAAT8AP0FAwYG/P39/P4B/vkA/f8AAgQBB/0D+wAFBwX4Aff+Bvz2/wEEBAIABQQD/wABAAMA//0AAP/+/wAC9/4AAfz+AAEF/f/6CAD9Bfn/APn9CwP3BAABBAAIAfr8/wP/CQn9BgL+Bf38A/z89gf6AAf9//wABAP9AgT19/4DAQMCAQQDAAABBf76+gEC/Pv9//4E//76AAAACQAA//kE//sDCfsGA/z7AAD7BAMAAAIAAgMA/P0D/wIE/v36//wAAgX8/voCAAT8BAkCAgEBAfwG+gEA/vr++AYAAQL7AAcAAP8BAAH9Af8A+QD+Agj7+wID/AAB+QcD//4ACQMEAvv+AvwBB/r7/gL/+AL7A/78+/4AAP39/QEFAwEA/QECCfz6AfwE/QMAAwD/Av4HAPz/AP4F/ggD+gMH+/UH+wID/wQGBPr2BP8KBAP/+/7//AP2/QT6//4CBAAFBgAFBf4E//v9BgADAAH9/gb4BAQHAAEA/QIB/vsE+/8GAPb7Av79AAD4AP4B+wf+/P4ABf79/wD/+QQA+fkB/voAA/oDAQUDAP79BAkGAAn/AQMB//76APz8BQD9AgEB/Pf6/wcAAwcHAgEA/QH/AP/6A/75BP8E/QD+AgT+AwEF+PkC//37/f79/gAAAQUA+AEEAAX9/wL8AgAFAwAA+v8G+wQA/QEF/wD+BAAGAwABAf0JAgMD+wUGAf39APoA/gQHAAID/AAF//8GA//8/QUC/gEC/vwGAv0BAAD9/ggCAAYBAwL/AQD9/fYD/wIE/f/4BP4AAAD8+wH5Bwb7AAQF+v/0//j9+/v/AP4CAgAA/v4AAP7+Bfv/CwECAQD7CgH5AQEAAQQAAP76APkABQIBBv0JAwABBwD++wD+//35+QPy/v0FAAYC+QD9Avr5CgQIA/35/AADAQH6+AEIAwEEAAMA/AMD+wADAAP///kFBAEBAA==\",\"BucketID\":5,\"BucketIDList\":[5,3,83,30,43,82,55,80,46,51,61,79,97,67,21,91,88,90,99,12,23,0,1,36,47,54,37,27,14,50,16,8,53,25,52,29,18,60,38,98,62,4,15,2,20,22,17,96,65,44,75,59,93,66,31,10,45,48,13,7,57,76,72,77,56,94,81,87,95,6,92,69,74,39,35,26,34,71,41,85,64,49,24,42,73,78,58,63,89,11,86,68,32,28,19,9,40,33,70,84],\"FaceFeature\":\"BQD5+Af/BP4I/AD7AP/9AAcC/QT6/P4HAfr9B/sIBf8O/AD8BwYKCA0AAv77/gAE+gAL/wMA/QD9AAAG/vv8AAP7BvwBAAn4AAf/AQAOAP8A7wIBAv8EAwAFAf/5CPoABQEDBwEFBQb5/fb+AO4G+AAB/wML9PsAA/oHBwYF/Pz7/gUK9QUABgEE+wH8AgL6+gb3AwEAAxL7CwD/DPcFAf30AAPz/QAE/QAABvn9AwD2/wQCAwACAQAKBAUD/v0A/voE//0B+Ab//vkC+vj/AAH7+AL7A/sDAPj7Bvn+/QoGAwEA/v//AP4D+wQDAf8K/QP2BgD5/QD//gEKA/v+BwAAAf3xAf/+/gT9AwP8DADzBw4AAvn//wAE+QH5AQv3C+38/Pf9/QII8gID9wMFCggFAv/9AvsEBvkACP8G9/z9AP/7/fwE+v39DPgAAAAB/fr5A/n8/wIDAAQK/wH+AwAAAvwADQoKAgAFAfsF+vsE//35C/3zCAD9BPsB/wMGB/n5/Pv0+Pb+BPn5/wMKAQAB8fT9Awf++/YAAAICAwUG+wD0+fkBB/0AAAQIBfgEBPkG/wcJAgD7CAv1Avf9AQYAAAEDAPYC+foJ+/78APwD8f4A/gUBB/7///oLAwD/AAUD+/39+PsH+QIF9gMEA/oGAQsMBQkHA/wB+PwCAgA=\",\"FaceBucketID\":82,\"FaceBucketIDList\":[82,45,63,31,16,1,7,98,40,24,65,19,62,48,94,72,92,17,91,52,77,76,85,87,81,21,93,64,37,42,30,78,25,61,9,12,22,2,13,34,4,15,46,3,14,99,90,28,66,29,75,68,80,59,60,88,69,83,36,55,11,44,96,89,10,26,49,50,73,6,53,20,47,86,58,84,27,8,70,43,57,71,97,79,0,67,54,33,23,95,56,5,41,38,51,32,74,39,35,18],\"FaceQuality\":\"0.365118\",\"FaceYaw\":\"0.257412\",\"FacePitch\":\"0.390233\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.475882\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"2\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasMask\":\"1\",\"HasGlasses\":\"0\",\"Type\":\"3
\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1}]}"
;}
return
"{\"ret\":\"200\",\"error_msg\":\"OK\",\"ObjectList\":[{\"ImageID\":\"1\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"Angle\":\"128\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"UpperBoundingBox\":{\"x\":34,\"y\":123,\"w\":232,\"h\":263},\"LowerBoundingBox\":{\"x\":74,\"y\":309,\"w\":176,\"h\":408},\"CoatLength\":\"2\",\"CoatTexture\":\"1\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"TrousersLength\":\"1\",\"TrousersTexture\":\"1\",\"TrousersColor\":[\"5\"],\"TrousersColorNums\":\"1\",\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasGlasses\":\"0\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"0\",\"HasUmbrella\":\"0\",\"HasTrolley\":\"-1\",\"HasLuggage\":\"-1\",\"LuggageColor\":[],\"LuggageColorNums\":\"0\",\"HasKnife\":\"-1\",\"ObjectBoundingBox\":{\"x\":26,\"y\":13,\"w\":256,\"h\":708},\"TrafficViolation\":\"-1\",\"Type\":\"
6\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"3\",\"ObjectID\":1,\"Metadata\":{\"Angle\":\"128\",\"VehicleClass\":\"1\",\"VehicleColor\":[\"9\"],\"VehicleColorNums\":\"1\",\"VehicleBrand\":\"\\u96ea\\u4f5b\\u5170-\\u79d1\\u9c81\\u5179-2009_2013\",\"VehicleMainBrandName\":\"\\u96ea\\u4f5b\\u5170\",\"VehicleSubBrandName\":\"\\u79d1\\u9c81\\u5179\",\"VehicleYearName\":\"2009_2013\",\"HasPlate\":\"1\",\"PlateClass\":\"1\",\"PlateColor\":\"2\",\"PlateNo\":\"\\u6d59AJ079B\",\"PlateNeatness\":\"2\",\"Sunvisor\":\"0\",\"Paper\":\"0\",\"Decoration\":\"0\",\"Drop\":\"1\",\"Tag\":\"1\",\"SafetyBelt\":{\"MainDriver\":\"-1\",\"CoDriver\":\"-1\"},\"HasCall\":\"-1\",\"HasSkylight\":\"0\",\"HasBaggage\":\"0\",\"HasAerial\":\"0\",\"HasCrash\":\"-1\",\"HasDanger\":\"0\",\"HighwayTollVehicles\":\"1\",\"ObjectBoundingBox\":{\"x\":41,\"y\":40,\"w\":894,\"h\":717},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"AAAAAAAAAAAAAAAPAAAAAAAKABQAAAAAAAAAAAAAAAAhAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAB0AAAAAAAAAAAAAEwELAAAAAAAAAAAAAAAAAAAAAAAFCQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAABIAAAAAABMAAAEAAAAAAAAAAAAAAAAAABAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZAAAAHgAAAAAAAAAAAAAAAgAAAAAHAAATAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAcAAAAAB8AAAAAAAAAAAAAAAAAAAAAABoDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAMDgAAAAAAAB0AAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAA=\",\"BucketID\":76,\"BucketIDList\":[76,91,82,57,36,51,75,55,71,43,84,63,8,98,83,65,90,60,35,3,37,39,74,2,12,9,1,20,79,32,95,49,33,58,42,66,38,69,45,56,59,0,87,19,41,34,21,14,13,6,4,26,68,96,72,7,85,29,48,40,88,99,23,46,27,18,77,78,11,97,17,50,15,61,16,31,80,44,52,25,10,86,92,5,54,53,73,89,94,93,70,62,30,47,64,22,28,67,81,24],\"FaceFeature\":\"\",\"FaceBucketID\":-1,\"FaceBucketIDList\":[],\"FaceQuality\":\"0.000000\",\"FaceYaw\":\"0.000000\",\"FacePitch\":\"0.000000\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.000000\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"4\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"16\",\"Angle\":\"128\",\"BikeClass\":\"1\",\"SocialAttribute\":\"1\",\"Enterprise\":\"-1\",\"FaceBoundingBox\":{\"x\":145,\"y\":65,\"w\":54,\"h\":66},\"CoatLength\":\"2\",\"CoatTexture\":\"5\",\"CoatColor\":[\"2\"],\"CoatColorNums\":\"1\",\"HelmetColor\":\"-1\",\"HasHelmet\":\"0\",\"HasGlasses\":\"1\",\"HasMask\":\"0\",\"HasBackpack\":\"0\",\"HasCarrybag\":\"-1\",\"HasUmbrella\":\"0\",\"HasPlate\":\"-1\",\"PlateNo\":\"-1\",\"HasPassenger\":\"1\",\"ObjectBoundingBox\":{\"x\":54,\"y\":16,\"w\":276,\"h\":635},\"TrafficViolation\":\"-1\",\"Type\":\"6\"},\"Feature\":\"UVNURgUA/wACAf/3AfwEA/kC/AMAAwAEAQACAPv+AAAB/wMHAgEA/wAGAAj/+AD7APwCAwkD9wsAAP4CBvn7/wz5A/wBBP8D/QICCAUCBv/7AgABAv7+AAH9AAUC/AX/AvsC/P4CAv39BAMA/gAAAAIA/wT6/v77A/YEAPoB//sG//7+/wD+/QAA/AMAAAQCAvz8/P3/AAH9+gX8/wD8/fr7AQAD//oA+AECAAAFAAH+/QH7/gIHAgYA/vz+AwADAgQCAgAL+wD9BgMGBv8E+/oF/P4H/wMD/gQC/wQH/v/4Agn9BQAC/wAE/P37BP/7AgIA/gj8APv7CAL9/vkABgL7/fz9/AD1BwD7AwAAAwH7AAb7+v4AAwX6/PsDBwMA/wH9AQD8AQP8APz7/vb8APoDAAT8AP0FAwYG/P39/P4B/vkA/f8AAgQBB/0D+wAFBwX4Aff+Bvz2/wEEBAIABQQD/wABAAMA//0AAP/+/wAC9/4AAfz+AAEF/f/6CAD9Bfn/APn9CwP3BAABBAAIAfr8/wP/CQn9BgL+Bf38A/z89gf6AAf9//wABAP9AgT19/4DAQMCAQQDAAABBf76+gEC/Pv9//4E//76AAAACQAA//kE//sDCfsGA/z7AAD7BAMAAAIAAgMA/P0D/wIE/v36//wAAgX8/voCAAT8BAkCAgEBAfwG+gEA/vr++AYAAQL7AAcAAP8BAAH9Af8A+QD+Agj7+wID/AAB+QcD//4ACQMEAvv+AvwBB/r7/gL/+AL7A/78+/4AAP39/QEFAwEA/QECCfz6AfwE/QMAAwD/Av4HAPz/AP4F/ggD+gMH+/UH+wID/wQGBPr2BP8KBAP/+/7//AP2/QT6//4CBAAFBgAFBf4E//v9BgADAAH9/gb4BAQHAAEA/QIB/vsE+/8GAPb7Av79AAD4AP4B+wf+/P4ABf79/wD/+QQA+fkB/voAA/oDAQUDAP79BAkGAAn/AQMB//76APz8BQD9AgEB/Pf6/wcAAwcHAgEA/QH/AP/6A/75BP8E/QD+AgT+AwEF+PkC//37/f79/gAAAQUA+AEEAAX9/wL8AgAFAwAA+v8G+wQA/QEF/wD+BAAGAwABAf0JAgMD+wUGAf39APoA/gQHAAID/AAF//8GA//8/QUC/gEC/vwGAv0BAAD9/ggCAAYBAwL/AQD9/fYD/wIE/f/4BP4AAAD8+wH5Bwb7AAQF+v/0//j9+/v/AP4CAgAA/v4AAP7+Bfv/CwECAQD7CgH5AQEAAQQAAP76APkABQIBBv0JAwABBwD++wD+//35+QPy/v0FAAYC+QD9Avr5CgQIA/35/AADAQH6+AEIAwEEAAMA/AMD+wADAAP///kFBAEBAA==\",\"BucketID\":5,\"BucketIDList\":[5,3,83,30,43,82,55,80,46,51,61,79,97,67,21,91,88,90,99,12,23,0,1,36,47,54,37,27,14,50,16,8,53,25,52,29,18,60,38,98,62,4,15,2,20,22,17,96,65,44,75,59,93,66,31,10,45,48,13,7,57,76,72,77,56,94,81,87,95,6,92,69,74,39,35,26,34,71,41,85,64,49,24,42,73,78,58,63,89,11,86,68,32,28,19,9,40,33,70,84],\"FaceFeature\":\"BQD5+Af/BP4I/AD7AP/9AAcC/QT6/P4HAfr9B/sIBf8O/AD8BwYKCA0AAv77/gAE+gAL/wMA/QD9AAAG/vv8AAP7BvwBAAn4AAf/AQAOAP8A7wIBAv8EAwAFAf/5CPoABQEDBwEFBQb5/fb+AO4G+AAB/wML9PsAA/oHBwYF/Pz7/gUK9QUABgEE+wH8AgL6+gb3AwEAAxL7CwD/DPcFAf30AAPz/QAE/QAABvn9AwD2/wQCAwACAQAKBAUD/v0A/voE//0B+Ab//vkC+vj/AAH7+AL7A/sDAPj7Bvn+/QoGAwEA/v//AP4D+wQDAf8K/QP2BgD5/QD//gEKA/v+BwAAAf3xAf/+/gT9AwP8DADzBw4AAvn//wAE+QH5AQv3C+38/Pf9/QII8gID9wMFCggFAv/9AvsEBvkACP8G9/z9AP/7/fwE+v39DPgAAAAB/fr5A/n8/wIDAAQK/wH+AwAAAvwADQoKAgAFAfsF+vsE//35C/3zCAD9BPsB/wMGB/n5/Pv0+Pb+BPn5/wMKAQAB8fT9Awf++/YAAAICAwUG+wD0+fkBB/0AAAQIBfgEBPkG/wcJAgD7CAv1Avf9AQYAAAEDAPYC+foJ+/78APwD8f4A/gUBB/7///oLAwD/AAUD+/39+PsH+QIF9gMEA/oGAQsMBQkHA/wB+PwCAgA=\",\"FaceBucketID\":82,\"FaceBucketIDList\":[82,45,63,31,16,1,7,98,40,24,65,19,62,48,94,72,92,17,91,52,77,76,85,87,81,21,93,64,37,42,30,78,25,61,9,12,22,2,13,34,4,15,46,3,14,99,90,28,66,29,75,68,80,59,60,88,69,83,36,55,11,44,96,89,10,26,49,50,73,6,53,20,47,86,58,84,27,8,70,43,57,71,97,79,0,67,54,33,23,95,56,5,41,38,51,32,74,39,35,18],\"FaceQuality\":\"0.365118\",\"FaceYaw\":\"0.257412\",\"FacePitch\":\"0.390233\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.475882\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1},{\"ImageID\":\"2\",\"ObjectID\":1,\"Metadata\":{\"Gender\":\"1\",\"Age\":\"32\",\"HeadBoundingBox\":{\"x\":96,\"y\":16,\"w\":107,\"h\":136},\"FaceBoundingBox\":{\"x\":115,\"y\":61,\"w\":57,\"h\":77},\"HairStyle\":\"2\",\"HasHat\":\"1\",\"HasMask\":\"1\",\"HasGlasses\":\"0\",\"Type\":\"6
\"},\"Feature\":\"UVNURgUA//0BCP4BAQcAAwQBBvsCB/v8Af4A+wD5+AcBAgL9AgIEAgH4AQQA+f77+P77AAAIA/8A+QQJ/fz8AgACBfsAAgAC/AcIAQD++fgCAAUB/gb//AEAAf4B/QP+AQD0/QMDAfkD+f//A/7+/AD6B/f7/AH7/gAFAAMBAPb/AAP//wAIBQD7Af0FAAD9AAgC/gYF/f/8DAAC//4BAP/6AgECAgADAPz++v0A/wD//fz5AAIB/f0IBAQA/v8CBwP//wYE+/sCCP0BBAMD/gQA/QH/AgL6AgX/BP7/+AD5A/75/QH+A/8H/QAACP//AQT7+QICAfv/Afj9A/0D/wAA/f/8/wYL/wACAQYAAAAD/ggAAQMABv/6BAIADPv+A/wEAQAA/AD5AwT///4BAPz8CgUCDf78AwEA/f4AA/8C/wQB/P8A/wEA/gsAAwEF/v0AAf7/+QQECAcGAP0AAgH//AAHBwD3/fwB+/7/AQj//wUFAP/+/gYBAgYD+fv/BwH8Af0EBAD+AP3++gIH+v8CAPQEAAT//gDzAP0A+AL6BP4I9wMJAP0CAPX6APz9/gALAP7/BgQD+wIDBPn+CwIH/fz7A/3+9wAJ/QD9AP/++wME/v/+Avv+APoFAAAB+gD5APn//gEGBAME/wX5/AD/CAL+9QD8BAD2/wMCCf38+/oB+f0C/f39AQL+AAEAAgAE/wEIA///AP8HAQT+8fn7AP4AAAMA+QQDAwIB//j+/QEAAAIAAgj/A/n8AAP9AQD8AQYF+PgAA/4B+gEE+QYA/wYAB/0BAQD+/P/+BQf5BwIAAPsBBAEGAP4JAwEE////AAEF/wL4AAAFAQYA/vz+/AACAv8CAwIA+wIAAAUJAP0C/wIHAAEABgQF/QAEAAL7BP0A//wC+vr+/AIGAwAEAP0A/P/8BAD//AD5+wQEAAEHAv/8AP77+vQEBP4BAAAAAAr7/wD5AgD7BAEA/gT7AAAEAAMABPkLAQYABff+/wEDAP8EA/4AAf8A/gX9+wACAv3//f7/BAH+Bf/+AAH/AAAE9wAHAP/+/P8DAQD7/QQB/P3/AwAAAQAB/wD+BwAB/vwAAAL/AAYAAAf/Af76+fj6AP4F/gD9AgIB/Qr59f8CAAMCBgQHAf0FAP34AAQH/P79/wQGBA4D+f4AA/v+AAAA+wIE/gIH+QP2AQQGAwAE/vwI/P4GBwD/AAX4AAP+/f0A/Af/AgEBA/v9BPgDBwAC/wD8Bv36A/gBAAH+AAX+BP/9AAIF+AD8Av4B/wT/AQAAAQL/BPwA/PsA/AMDBfb/+AEBCAL+//36APz//wEHBv3/BQAA/QP9+wABAQL6//4CAAH/CP/+AAMBAf0CAAD9+g==\",\"BucketID\":32,\"BucketIDList\":[32,87,20,68,45,78,10,6,52,65,1,94,79,16,61,38,55,89,43,51,60,27,54,25,17,83,9,40,14,22,50,44,18,66,82,4,48,31,69,77,90,63,92,73,70,84,67,23,12,3,74,47,21,41,28,96,36,97,5,85,39,95,64,26,80,53,91,37,34,57,46,15,2,93,11,98,75,81,56,0,24,62,86,13,19,71,72,7,58,29,59,49,88,76,35,99,33,30,42,8],\"FaceFeature\":\"AwQF+foK/vcCAAD4/wD7CQH39vP7/gz/CAAB/AX++AAI/v8D+gQAAP0G/wAA+/oAAAP+Af79CwEAAgAA+/oFBe/3AgIFAgP0/vr8Cf4C+AMHBPn5Afr5AQQGBQD58gMG+wQTAgTzAPr9BQYEA/j//gT8+wXx9wMC+gcH/wAC8v0A+gD7+wkE/gAA7wL78gX/AgIGBvr8AAgD/woEAvkEAwv5CP/8/fz+/fwMAvr7AgD4APcEAA0F//kAAAAG+gADAQEB/wD+AQgCBg35+QQC/vv//vcAAPgEAwAAAgD9Af32/wMLAwD8B/75AQIB+/z/+v4AA/n//gL8+/0BAPv//PgIAAD0CQALAAUF/fwA/wYBAQf9+/f++Af49gMB/AMABwAA9vr5//sE/PoD+QP6+wsA/wEB+QIC+/8B/wD88QkACAIAAPn5AAUD/QL++P4H/f3+A/gG/f8G/QkA8wD0BAMBBwD59AAB+QUA//v2/wEJAQD8DAL5CPoA+/b+/Qr5AwcA/AD+CAEDBgEH/Qb+AQUHAAQK/fUA+/sI9/0I+QcKBQP6/gX0+QgI9gIBAAMFAAAA/vcD/vYI9wj9+v76C/gAAgIH+gMHBP8IAAT6BgAI+vsJ/v7/DAUABgIA+gAHBf0D+/oDAwEABv359QAB+AEG8w7+//0ABf78CPr8Afs=\",\"FaceBucketID\":91,\"FaceBucketIDList\":[91,12,50,84,52,13,57,54,4,53,70,36,64,58,81,10,78,63,35,75,34,16,86,3,99,40,26,42,48,30,25,23,11,62,72,51,18,17,46,27,97,61,49,43,66,37,89,19,24,1,98,76,32,83,44,96,87,31,8,20,33,21,6,56,41,88,82,47,69,93,14,79,38,29,80,85,90,94,55,60,67,95,9,2,71,65,68,77,7,74,59,28,92,73,15,39,22,0,45,5],\"FaceQuality\":\"0.379721\",\"FaceYaw\":\"-0.135311\",\"FacePitch\":\"0.508456\",\"FaceRoll\":\"0.000000\",\"FaceBlurry\":\"0.555109\",\"ObjectImageData\":\"\",\"FaceImageData\":\"\",\"Index\":1}]}"
;}
}
}
\ No newline at end of file
src/main/java/com/cx/cn/cxquartz/dao/CodeMapper.java
0 → 100644
View file @
fb73cb9a
package
com
.
cx
.
cn
.
cxquartz
.
dao
;
import
com.cx.cn.cxquartz.vo.Code
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wjj
* @since 2021-04-29
*/
@Mapper
public
interface
CodeMapper
{
Code
selectalarmNum
(
String
keyid
);
}
src/main/java/com/cx/cn/cxquartz/dao/QuartzTaskInformationsMapper.java
View file @
fb73cb9a
...
@@ -41,4 +41,6 @@ public interface QuartzTaskInformationsMapper {
...
@@ -41,4 +41,6 @@ public interface QuartzTaskInformationsMapper {
List
<
PatrolCtrlRecord
>
queryCameraCode
(
List
<
String
>
ids
);
List
<
PatrolCtrlRecord
>
queryCameraCode
(
List
<
String
>
ids
);
List
<
Sbtdspsr
>
selectByRtsp
(
String
rtsp
);
List
<
Sbtdspsr
>
selectByRtsp
(
String
rtsp
);
Integer
UpdateExecuteParam
(
Map
map
);
}
}
src/main/java/com/cx/cn/cxquartz/service/quartz/CodeService.java
0 → 100644
View file @
fb73cb9a
package
com
.
cx
.
cn
.
cxquartz
.
service
.
quartz
;
import
com.cx.cn.cxquartz.vo.Code
;
/**
* <p>
* 服务类
* </p>
*
* @author wjj
* @since 2021-04-29
*/
public
interface
CodeService
{
Code
selectalarmNum
(
String
keyid
);
}
src/main/java/com/cx/cn/cxquartz/service/quartz/FtpService.java
View file @
fb73cb9a
...
@@ -15,7 +15,7 @@ import java.util.ArrayList;
...
@@ -15,7 +15,7 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.List
;
/**
/**
* ftp
ַȡ߷
* ftp
��ַ��ȡ���߷�����
* @author cp
* @author cp
*/
*/
@Service
@Service
...
@@ -32,26 +32,26 @@ public class FtpService {
...
@@ -32,26 +32,26 @@ public class FtpService {
try
{
try
{
this
.
ftpList
=
getFtpList
(
stringRedisTemplate
.
opsForValue
().
get
(
RedisEnum
.
FTPLIST
.
getValue
()));
this
.
ftpList
=
getFtpList
(
stringRedisTemplate
.
opsForValue
().
get
(
RedisEnum
.
FTPLIST
.
getValue
()));
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
log
.
error
(
"ftpList
ȡʧ
:"
+
e
.
toString
());
log
.
error
(
"ftpList
��ȡʧ��
:"
+
e
.
toString
());
}
}
}
}
public
Ftp
reloadFtp
()
{
public
Ftp
reloadFtp
()
{
try
{
try
{
cacheLoadService
.
loadFtpCache
();
//
cacheLoadService.loadFtpCache();
if
(
null
==
stringRedisTemplate
.
opsForValue
().
get
(
RedisEnum
.
FTPLIST
.
getValue
())){
if
(
null
==
stringRedisTemplate
.
opsForValue
().
get
(
RedisEnum
.
FTPLIST
.
getValue
())){
cacheLoadService
.
loadFtpCache
();
cacheLoadService
.
loadFtpCache
();
}
}
ftpList
=
getFtpList
(
stringRedisTemplate
.
opsForValue
().
get
(
RedisEnum
.
FTPLIST
.
getValue
()));
ftpList
=
getFtpList
(
stringRedisTemplate
.
opsForValue
().
get
(
RedisEnum
.
FTPLIST
.
getValue
()));
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
log
.
error
(
"ftpList
ȡʧ
:"
+
e
.
toString
());
log
.
error
(
"ftpList
error
:"
+
e
.
toString
());
}
}
Long
count
=
null
;
Long
count
=
null
;
try
{
try
{
count
=
stringRedisTemplate
.
opsForValue
().
increment
(
RedisEnum
.
FTPLIST_INDEX
.
getValue
(),
1L
);
count
=
stringRedisTemplate
.
opsForValue
().
increment
(
RedisEnum
.
FTPLIST_INDEX
.
getValue
(),
1L
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"
ȡredis FtpIndex쳣
"
+
e
.
toString
());
log
.
error
(
"
redis error
"
+
e
.
toString
());
}
}
if
(
count
==
null
)
{
if
(
count
==
null
)
{
count
=
0L
;
count
=
0L
;
...
...
src/main/java/com/cx/cn/cxquartz/service/quartz/QuartzService.java
View file @
fb73cb9a
...
@@ -6,6 +6,7 @@ import com.cx.cn.cxquartz.vo.QuartzTaskRecordsVo;
...
@@ -6,6 +6,7 @@ import com.cx.cn.cxquartz.vo.QuartzTaskRecordsVo;
import
org.quartz.SchedulerException
;
import
org.quartz.SchedulerException
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
public
interface
QuartzService
{
public
interface
QuartzService
{
String
addTask
(
QuartzTaskInformations
quartzTaskInformations
);
String
addTask
(
QuartzTaskInformations
quartzTaskInformations
);
...
@@ -16,6 +17,9 @@ public interface QuartzService {
...
@@ -16,6 +17,9 @@ public interface QuartzService {
String
updateTask
(
QuartzTaskInformations
quartzTaskInformations
);
String
updateTask
(
QuartzTaskInformations
quartzTaskInformations
);
Integer
UpdateExecuteParam
(
Map
map
);
String
startJob
(
String
taskNo
)
throws
SchedulerException
;
String
startJob
(
String
taskNo
)
throws
SchedulerException
;
void
initLoadOnlineTasks
();
void
initLoadOnlineTasks
();
...
...
src/main/java/com/cx/cn/cxquartz/service/quartz/QuartzTaskInformationsService.java
View file @
fb73cb9a
...
@@ -7,6 +7,7 @@ import com.cx.cn.cxquartz.bean.PictureTime;
...
@@ -7,6 +7,7 @@ import com.cx.cn.cxquartz.bean.PictureTime;
import
com.cx.cn.cxquartz.bean.QuartzTaskInformations
;
import
com.cx.cn.cxquartz.bean.QuartzTaskInformations
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
public
interface
QuartzTaskInformationsService
{
public
interface
QuartzTaskInformationsService
{
String
insert
(
QuartzTaskInformations
quartzTaskInformations
);
String
insert
(
QuartzTaskInformations
quartzTaskInformations
);
...
@@ -17,6 +18,8 @@ public interface QuartzTaskInformationsService {
...
@@ -17,6 +18,8 @@ public interface QuartzTaskInformationsService {
String
updateTask
(
QuartzTaskInformations
quartzTaskInformations
);
String
updateTask
(
QuartzTaskInformations
quartzTaskInformations
);
Integer
UpdateExecuteParam
(
Map
map
);
QuartzTaskInformations
getTaskByTaskNo
(
String
taskNo
);
QuartzTaskInformations
getTaskByTaskNo
(
String
taskNo
);
Integer
updateStatusById
(
QuartzTaskInformations
quartzTaskInformations
);
Integer
updateStatusById
(
QuartzTaskInformations
quartzTaskInformations
);
...
...
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/CodeServiceImpl.java
0 → 100644
View file @
fb73cb9a
package
com
.
cx
.
cn
.
cxquartz
.
service
.
quartz
.
impl
;
import
com.cx.cn.cxquartz.dao.CodeMapper
;
import
com.cx.cn.cxquartz.service.quartz.CodeService
;
import
com.cx.cn.cxquartz.vo.Code
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 服务实现类
* </p>
*
* @author wjj
* @since 2021-04-29
*/
@Service
public
class
CodeServiceImpl
implements
CodeService
{
@Autowired
private
CodeMapper
codeMapper
;
@Override
public
Code
selectalarmNum
(
String
keyid
)
{
return
codeMapper
.
selectalarmNum
(
keyid
);
}
}
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/QuartzServiceImpl.java
View file @
fb73cb9a
...
@@ -26,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
...
@@ -26,6 +26,7 @@ import org.springframework.transaction.annotation.Transactional;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
java.util.concurrent.atomic.AtomicInteger
;
@Service
@Service
...
@@ -84,6 +85,11 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
...
@@ -84,6 +85,11 @@ public class QuartzServiceImpl implements QuartzService, InitializingBean {
return
quartzTaskInformationsService
.
updateTask
(
quartzTaskInformations
);
return
quartzTaskInformationsService
.
updateTask
(
quartzTaskInformations
);
}
}
@Override
public
Integer
UpdateExecuteParam
(
Map
map
)
{
return
quartzTaskInformationsService
.
UpdateExecuteParam
(
map
);
}
/**
/**
* 启动 or 暂停定时任务
* 启动 or 暂停定时任务
*
*
...
...
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/QuartzTaskInformationsServiceImpl.java
View file @
fb73cb9a
...
@@ -9,7 +9,6 @@ import com.cx.cn.cxquartz.dao.QuartzTaskInformationsMapper;
...
@@ -9,7 +9,6 @@ import com.cx.cn.cxquartz.dao.QuartzTaskInformationsMapper;
import
com.cx.cn.cxquartz.service.quartz.QuartzTaskInformationsService
;
import
com.cx.cn.cxquartz.service.quartz.QuartzTaskInformationsService
;
import
com.cx.cn.cxquartz.util.ResultEnum
;
import
com.cx.cn.cxquartz.util.ResultEnum
;
import
com.cx.cn.cxquartz.util.ResultUtil
;
import
com.cx.cn.cxquartz.util.ResultUtil
;
import
com.cx.cn.cxquartz.vo.Sbtdspsr
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -77,6 +76,11 @@ public class QuartzTaskInformationsServiceImpl implements QuartzTaskInformations
...
@@ -77,6 +76,11 @@ public class QuartzTaskInformationsServiceImpl implements QuartzTaskInformations
return
ResultUtil
.
success
(
ResultEnum
.
SUCCESS
.
getCode
(),
ResultEnum
.
SUCCESS
.
getMessage
());
return
ResultUtil
.
success
(
ResultEnum
.
SUCCESS
.
getCode
(),
ResultEnum
.
SUCCESS
.
getMessage
());
}
}
@Override
public
Integer
UpdateExecuteParam
(
Map
map
)
{
return
quartzTaskInformationsMapper
.
UpdateExecuteParam
(
map
);
}
@Override
@Override
public
QuartzTaskInformations
getTaskByTaskNo
(
String
taskNo
)
{
public
QuartzTaskInformations
getTaskByTaskNo
(
String
taskNo
)
{
return
quartzTaskInformationsMapper
.
getTaskByTaskNo
(
taskNo
);
return
quartzTaskInformationsMapper
.
getTaskByTaskNo
(
taskNo
);
...
@@ -111,6 +115,8 @@ public class QuartzTaskInformationsServiceImpl implements QuartzTaskInformations
...
@@ -111,6 +115,8 @@ public class QuartzTaskInformationsServiceImpl implements QuartzTaskInformations
public
List
<
PictureTime
>
findLastPicTime
()
{
public
List
<
PictureTime
>
findLastPicTime
()
{
return
quartzTaskInformationsMapper
.
findLastPicTime
();
return
quartzTaskInformationsMapper
.
findLastPicTime
();
}
}
@Override
@Override
public
List
<
PatrolCtrlRecord
>
queryCameraCode
(
List
<
String
>
ids
){
public
List
<
PatrolCtrlRecord
>
queryCameraCode
(
List
<
String
>
ids
){
return
quartzTaskInformationsMapper
.
queryCameraCode
(
ids
);
return
quartzTaskInformationsMapper
.
queryCameraCode
(
ids
);
...
...
src/main/java/com/cx/cn/cxquartz/util/FTPUtil.java
View file @
fb73cb9a
...
@@ -103,12 +103,10 @@ public class FTPUtil {
...
@@ -103,12 +103,10 @@ public class FTPUtil {
if
(
inputImg
==
null
)
{
if
(
inputImg
==
null
)
{
return
false
;
return
false
;
}
}
//base64����
BASE64Decoder
decoder
=
new
BASE64Decoder
();
BASE64Decoder
decoder
=
new
BASE64Decoder
();
byte
[]
b_img
=
decoder
.
decodeBuffer
(
inputImg
);
byte
[]
b_img
=
decoder
.
decodeBuffer
(
inputImg
);
input
=
new
ByteArrayInputStream
(
b_img
);
input
=
new
ByteArrayInputStream
(
b_img
);
ftpClient
=
connectServer
(
ftpUrl
);
ftpClient
=
connectServer
(
ftpUrl
);
//new ByteArrayInputStream
if
(
ftpClient
.
isConnected
())
{
if
(
ftpClient
.
isConnected
())
{
changeWorkingDirectory
(
ftpClient
,
path
);
changeWorkingDirectory
(
ftpClient
,
path
);
flag
=
ftpClient
.
storeFile
(
filename
,
input
);
flag
=
ftpClient
.
storeFile
(
filename
,
input
);
...
...
src/main/java/com/cx/cn/cxquartz/util/FileTransferManager.java
View file @
fb73cb9a
...
@@ -22,7 +22,6 @@ public class FileTransferManager {
...
@@ -22,7 +22,6 @@ public class FileTransferManager {
private
static
CompletionService
<
TransferResult
>
completionService
=
new
ExecutorCompletionService
<
TransferResult
>(
ThreadPoolUtil
.
getPool
());
private
static
CompletionService
<
TransferResult
>
completionService
=
new
ExecutorCompletionService
<
TransferResult
>(
ThreadPoolUtil
.
getPool
());
private
static
CompletionService
<
PictureResult
>
threadService
=
new
ExecutorCompletionService
<
PictureResult
>(
ThreadPoolUtil
.
getPool
());
private
static
CompletionService
<
PictureResult
>
threadService
=
new
ExecutorCompletionService
<
PictureResult
>(
ThreadPoolUtil
.
getPool
());
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
ExtController
.
class
);
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
ExtController
.
class
);
/**
/**
* @param transferRecord
* @param transferRecord
* @param ftp
* @param ftp
...
@@ -168,5 +167,7 @@ public class FileTransferManager {
...
@@ -168,5 +167,7 @@ public class FileTransferManager {
}
}
}
}
}
}
}
}
src/main/java/com/cx/cn/cxquartz/vo/Code.java
0 → 100644
View file @
fb73cb9a
package
com
.
cx
.
cn
.
cxquartz
.
vo
;
import
java.io.Serializable
;
public
class
Code
implements
Serializable
{
private
String
key
;
private
String
name
;
private
String
type
;
private
String
alarmlevel
;
private
Integer
rectifytime
;
private
Integer
manualchecktime
;
private
Integer
pushchecktime
;
private
Integer
maxnum
;
private
Integer
alarmnum
;
public
String
getKey
()
{
return
key
;
}
public
void
setKey
(
String
key
)
{
this
.
key
=
key
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getType
()
{
return
type
;
}
public
void
setType
(
String
type
)
{
this
.
type
=
type
;
}
public
String
getAlarmlevel
()
{
return
alarmlevel
;
}
public
void
setAlarmlevel
(
String
alarmlevel
)
{
this
.
alarmlevel
=
alarmlevel
;
}
public
Integer
getRectifytime
()
{
return
rectifytime
;
}
public
void
setRectifytime
(
Integer
rectifytime
)
{
this
.
rectifytime
=
rectifytime
;
}
public
Integer
getManualchecktime
()
{
return
manualchecktime
;
}
public
void
setManualchecktime
(
Integer
manualchecktime
)
{
this
.
manualchecktime
=
manualchecktime
;
}
public
Integer
getPushchecktime
()
{
return
pushchecktime
;
}
public
void
setPushchecktime
(
Integer
pushchecktime
)
{
this
.
pushchecktime
=
pushchecktime
;
}
public
Integer
getMaxnum
()
{
return
maxnum
;
}
public
void
setMaxnum
(
Integer
maxnum
)
{
this
.
maxnum
=
maxnum
;
}
public
Integer
getAlarmnum
()
{
return
alarmnum
;
}
public
void
setAlarmnum
(
Integer
alarmnum
)
{
this
.
alarmnum
=
alarmnum
;
}
}
\ No newline at end of file
src/main/java/com/cx/cn/cxquartz/vo/TraffpictureParam.java
View file @
fb73cb9a
...
@@ -31,7 +31,7 @@ public class TraffpictureParam extends Traffpicture {
...
@@ -31,7 +31,7 @@ public class TraffpictureParam extends Traffpicture {
@JsonIgnore
@JsonIgnore
private
Integer
retrycount
;
private
Integer
retrycount
;
@JsonIgnore
@JsonIgnore
private
Integer
recordlevel
;
private
String
recordlevel
;
@JsonIgnore
@JsonIgnore
private
Integer
checkstatus
;
private
Integer
checkstatus
;
@JsonIgnore
@JsonIgnore
...
@@ -132,11 +132,11 @@ public class TraffpictureParam extends Traffpicture {
...
@@ -132,11 +132,11 @@ public class TraffpictureParam extends Traffpicture {
this
.
retrycount
=
retrycount
;
this
.
retrycount
=
retrycount
;
}
}
public
Integer
getRecordlevel
()
{
public
String
getRecordlevel
()
{
return
recordlevel
;
return
recordlevel
;
}
}
public
void
setRecordlevel
(
Integer
recordlevel
)
{
public
void
setRecordlevel
(
String
recordlevel
)
{
this
.
recordlevel
=
recordlevel
;
this
.
recordlevel
=
recordlevel
;
}
}
...
...
src/main/resources/mapper/CodeMapper.xml
0 → 100644
View file @
fb73cb9a
<?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.cx.cn.cxquartz.dao.CodeMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"com.cx.cn.cxquartz.vo.Code"
>
<result
column=
"key"
jdbcType=
"VARCHAR"
property=
"key"
/>
<result
column=
"name"
jdbcType=
"VARCHAR"
property=
"name"
/>
<result
column=
"type"
jdbcType=
"CHAR"
property=
"type"
/>
<result
column=
"alarmlevel"
jdbcType=
"VARCHAR"
property=
"alarmlevel"
/>
<result
column=
"rectifytime"
jdbcType=
"INTEGER"
property=
"rectifytime"
/>
<result
column=
"manualchecktime"
jdbcType=
"INTEGER"
property=
"manualchecktime"
/>
<result
column=
"pushchecktime"
jdbcType=
"INTEGER"
property=
"pushchecktime"
/>
<result
column=
"maxnum"
jdbcType=
"INTEGER"
property=
"maxnum"
/>
<result
column=
"alarmnum"
jdbcType=
"INTEGER"
property=
"alarmnum"
/>
</resultMap>
<select
id=
"selectalarmNum"
resultMap=
"BaseResultMap"
>
select * from t_code t where t.type=2 and t.key=#{key,jdbcType=VARCHAR}
</select>
</mapper>
src/main/resources/mapper/QuartzTaskInformationsMapper.xml
View file @
fb73cb9a
...
@@ -394,6 +394,9 @@
...
@@ -394,6 +394,9 @@
<result
column=
"sbbh"
jdbcType=
"VARCHAR"
property=
"sbbh"
/>
<result
column=
"sbbh"
jdbcType=
"VARCHAR"
property=
"sbbh"
/>
<result
column=
"tdbh"
jdbcType=
"INTEGER"
property=
"tdbh"
/>
<result
column=
"tdbh"
jdbcType=
"INTEGER"
property=
"tdbh"
/>
<result
column=
"xzbh"
jdbcType=
"VARCHAR"
property=
"xzbh"
/>
<result
column=
"xzbh"
jdbcType=
"VARCHAR"
property=
"xzbh"
/>
</resultMap>
</resultMap>
<update
id=
"UpdateExecuteParam"
parameterType=
"java.util.HashMap"
>
update quartz_task_informations set executeParamter=#{nrtsp} where executeParamter=#{ortsp}
</update>
</mapper>
</mapper>
src/main/resources/templates/updatetask.html
View file @
fb73cb9a
...
@@ -45,6 +45,9 @@
...
@@ -45,6 +45,9 @@
id=
"objecth"
/>
id=
"objecth"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.imgsrc}"
name=
"imgsrc"
<input
type=
"hidden"
th:value=
"${taskInformation.imgsrc}"
name=
"imgsrc"
id=
"imgsrc"
/>
id=
"imgsrc"
/>
<input
type=
"hidden"
value=
"false"
name=
"imgsrc"
id=
"changewidthnot"
/>
<input
type=
"hidden"
th:value=
"${taskInformation.rtsp}"
name=
"rtsp"
<input
type=
"hidden"
th:value=
"${taskInformation.rtsp}"
name=
"rtsp"
id=
"rtsp"
/>
id=
"rtsp"
/>
...
@@ -125,7 +128,7 @@
...
@@ -125,7 +128,7 @@
<input
type=
"text"
name=
"videoid"
th:value=
"${taskInformation.videoid}"
<input
type=
"text"
name=
"videoid"
th:value=
"${taskInformation.videoid}"
id=
"videoid"
class=
"form-control"
>
id=
"videoid"
class=
"form-control"
>
<a
id=
"getrtsp"
href=
" javascript:void(0)"
>
获得监控图片
</a>
<a
id=
"getrtsp"
href=
" javascript:void(0)"
>
获得监控图片
</a>
<a
id=
"getwidth"
href=
" javascript:void(0)"
>
编辑监控范围
</a>
</div>
</div>
...
@@ -251,6 +254,8 @@
...
@@ -251,6 +254,8 @@
this
.
type
=
0
;
//鼠标移动类型
this
.
type
=
0
;
//鼠标移动类型
this
.
topDistance
=
0
;
//
this
.
topDistance
=
0
;
//
this
.
leftDistance
=
0
;
//
this
.
leftDistance
=
0
;
//
this
.
ratew
=
1
;
this
.
rateh
=
1
;
this
.
config
=
{
this
.
config
=
{
width
:
600
,
width
:
600
,
height
:
400
,
height
:
400
,
...
@@ -277,17 +282,28 @@
...
@@ -277,17 +282,28 @@
}
}
init
(
cvw
,
cvh
,
imgw
,
imgh
){
init
(
cvw
,
cvh
,
imgw
,
imgh
){
var
item
=
this
.
layers
[
0
];
var
item
=
this
.
layers
[
1
];
var
ratew
=
cvw
/
imgw
;
this
.
ratew
=
cvw
/
imgw
;
var
rateh
=
cvh
/
imgh
;
this
.
rateh
=
cvh
/
imgh
;
this
.
ctx
.
beginPath
();
this
.
ctx
.
beginPath
();
this
.
ctx
.
rect
((
item
.
x1
)
*
ratew
,
(
item
.
y1
)
*
rateh
,
(
item
.
width
)
*
ratew
,
(
item
.
height
)
*
rateh
);
this
.
startX
=
(
item
.
x1
)
*
this
.
ratew
;
// this.ctx.rect(item.x1, item.y1, item.width, item.height);
this
.
startY
=
(
item
.
y1
)
*
this
.
rateh
;
this
.
ctx
.
strokeStyle
=
item
.
strokeStyle
;
this
.
endX
=
(
item
.
x1
)
*
this
.
ratew
+
(
item
.
width
)
*
this
.
ratew
;
this
.
endY
=
(
item
.
y1
)
*
this
.
ratew
+
(
item
.
height
)
*
this
.
rateh
;
console
.
log
(
`item`
,
item
)
this
.
ctx
.
rect
(
this
.
startX
,
this
.
startY
,
(
item
.
width
)
*
this
.
ratew
,
(
item
.
height
)
*
this
.
rateh
);
this
.
ctx
.
stroke
();
// this.ctx.rect(item.x1, item.y1, item.width, item.height);
console
.
log
(
`init:`
,
this
.
layers
);
this
.
ctx
.
strokeStyle
=
item
.
strokeStyle
;
this
.
layers
.
splice
(
0
,
1
,
this
.
fixPosition
({
x1
:
Math
.
ceil
(
this
.
startX
),
y1
:
Math
.
ceil
(
this
.
startY
),
x2
:
Math
.
ceil
(
this
.
endX
),
y2
:
Math
.
ceil
(
this
.
endY
),
strokeStyle
:
this
.
config
.
solidColor
,
type
:
this
.
type
}));
console
.
log
(
`item`
,
item
)
this
.
ctx
.
stroke
();
console
.
log
(
`init:`
,
this
.
layers
);
}
}
//设置图片为canvas的背景
//设置图片为canvas的背景
...
@@ -335,6 +351,8 @@
...
@@ -335,6 +351,8 @@
_this
.
canvas
.
style
.
backgroundSize
=
`
${
imgW
}
px
${
imgH
}
px`
;
_this
.
canvas
.
style
.
backgroundSize
=
`
${
imgW
}
px
${
imgH
}
px`
;
_this
.
init
(
imgW
,
imgH
,
actImgW
,
actImgH
);
_this
.
init
(
imgW
,
imgH
,
actImgW
,
actImgH
);
// }
// }
}
}
}
}
...
@@ -428,34 +446,18 @@
...
@@ -428,34 +446,18 @@
}
}
}
}
reshow
(
x
,
y
)
{
reshow
(
x
,
y
,
changesmall
)
{
let
allNotIn
=
1
;
let
allNotIn
=
1
;
let
item
=
this
.
layers
[
0
];
let
item
=
this
.
layers
[
0
];
this
.
ctx
.
beginPath
();
this
.
ctx
.
beginPath
();
this
.
ctx
.
rect
(
item
.
x1
,
item
.
y1
,
item
.
width
,
item
.
height
);
console
.
log
(
item
.
x1
);
this
.
ctx
.
strokeStyle
=
item
.
strokeStyle
this
.
ctx
.
rect
(
item
.
x1
,
item
.
y1
,
item
.
width
,
item
.
height
);
<!--
if
(
x
>=
(
item
.
x1
-
25
/
this
.
scale
)
&&
x
<=
(
item
.
x1
+
25
/
this
.
scale
)
&&
y
<=
(
item
.
y2
-
25
/
this
.
scale
)
&&
y
>=
(
item
.
y1
+
25
/
this
.
scale
))
{
-->
this
.
ctx
.
strokeStyle
=
item
.
strokeStyle
;
<!--
this
.
resizeLeft
(
item
);
-->
if
(
this
.
ctx
.
isPointInPath
(
x
*
this
.
scale
,
y
*
this
.
scale
))
{
<!--
}
else
if
(
x
>=
(
item
.
x2
-
25
/
this
.
scale
)
&&
x
<=
(
item
.
x2
+
25
/
this
.
scale
)
&&
y
<=
(
item
.
y2
-
25
/
this
.
scale
)
&&
y
>=
(
item
.
y1
+
25
/
this
.
scale
))
{
-->
this
.
render
(
item
);
<!--
this
.
resizeWidth
(
item
);
-->
allNotIn
=
0
;
<!--
}
else
if
(
y
>=
(
item
.
y1
-
25
/
this
.
scale
)
&&
y
<=
(
item
.
y1
+
25
/
this
.
scale
)
&&
x
<=
(
item
.
x2
-
25
/
this
.
scale
)
&&
x
>=
(
item
.
x1
+
25
/
this
.
scale
))
{
-->
}
<!--
this
.
resizeTop
(
item
);
-->
this
.
ctx
.
stroke
();
<!--
}
else
if
(
y
>=
(
item
.
y2
-
25
/
this
.
scale
)
&&
y
<=
(
item
.
y2
+
25
/
this
.
scale
)
&&
x
<=
(
item
.
x2
-
25
/
this
.
scale
)
&&
x
>=
(
item
.
x1
+
25
/
this
.
scale
))
{
-->
<!--
this
.
resizeHeight
(
item
);
-->
<!--
}
else
if
(
x
>=
(
item
.
x1
-
25
/
this
.
scale
)
&&
x
<=
(
item
.
x1
+
25
/
this
.
scale
)
&&
y
<=
(
item
.
y1
+
25
/
this
.
scale
)
&&
y
>=
(
item
.
y1
-
25
/
this
.
scale
))
{
-->
<!--
this
.
resizeLT
(
item
);
-->
<!--
}
else
if
(
x
>=
(
item
.
x2
-
25
/
this
.
scale
)
&&
x
<=
(
item
.
x2
+
25
/
this
.
scale
)
&&
y
<=
(
item
.
y2
+
25
/
this
.
scale
)
&&
y
>=
(
item
.
y2
-
25
/
this
.
scale
))
{
-->
<!--
this
.
resizeWH
(
item
);
-->
<!--
}
else
if
(
x
>=
(
item
.
x1
-
25
/
this
.
scale
)
&&
x
<=
(
item
.
x1
+
25
/
this
.
scale
)
&&
y
<=
(
item
.
y2
+
25
/
this
.
scale
)
&&
y
>=
(
item
.
y2
-
25
/
this
.
scale
))
{
-->
<!--
this
.
resizeLH
(
item
);
-->
<!--
}
else
if
(
x
>=
(
item
.
x2
-
25
/
this
.
scale
)
&&
x
<=
(
item
.
x2
+
25
/
this
.
scale
)
&&
y
<=
(
item
.
y1
+
25
/
this
.
scale
)
&&
y
>=
(
item
.
y1
-
25
/
this
.
scale
))
{
-->
<!--
this
.
resizeWT
(
item
);
-->
<!--
}
-->
if
(
this
.
ctx
.
isPointInPath
(
x
*
this
.
scale
,
y
*
this
.
scale
))
{
this
.
render
(
item
);
allNotIn
=
0
;
}
this
.
ctx
.
stroke
();
if
(
this
.
flag
&&
allNotIn
&&
this
.
optype
<
3
)
{
if
(
this
.
flag
&&
allNotIn
&&
this
.
optype
<
3
)
{
this
.
optype
=
1
;
this
.
optype
=
1
;
}
}
...
@@ -505,70 +507,75 @@
...
@@ -505,70 +507,75 @@
}
}
mousedown
(
e
){
mousedown
(
e
){
this
.
startX
=
(
e
.
pageX
-
this
.
canvas
.
offsetLeft
+
this
.
canvas
.
parentElement
.
scrollLeft
)
/
this
.
scale
;
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
this
.
startY
=
(
e
.
pageY
-
this
.
canvas
.
offsetTop
+
this
.
canvas
.
parentElement
.
scrollTop
)
/
this
.
scale
;
this
.
startX
=
(
e
.
pageX
-
$
(
"
#draw-canvas
"
).
offset
().
left
)
/
this
.
scale
;
this
.
currentR
=
this
.
isPointInRetc
(
this
.
startX
,
this
.
startY
);
this
.
startY
=
(
e
.
pageY
-
$
(
"
#draw-canvas
"
).
offset
().
top
)
/
this
.
scale
;
if
(
this
.
currentR
)
{
this
.
currentR
=
this
.
isPointInRetc
(
this
.
startX
,
this
.
startY
);
this
.
leftDistance
=
this
.
startX
-
this
.
currentR
.
x1
;
if
(
this
.
currentR
)
{
this
.
topDistance
=
this
.
startY
-
this
.
currentR
.
y1
;
this
.
leftDistance
=
this
.
startX
-
this
.
currentR
.
x1
;
this
.
topDistance
=
this
.
startY
-
this
.
currentR
.
y1
;
}
this
.
ctx
.
strokeRect
(
this
.
endX
,
this
.
endY
,
0
,
0
);
this
.
ctx
.
strokeStyle
=
this
.
config
.
dashedColor
;
this
.
flag
=
1
;
}
}
this
.
ctx
.
strokeRect
(
this
.
endX
,
this
.
endY
,
0
,
0
);
this
.
ctx
.
strokeStyle
=
this
.
config
.
dashedColor
;
this
.
flag
=
1
;
}
}
mousemove
(
e
){
mousemove
(
e
){
this
.
endX
=
(
e
.
pageX
-
this
.
canvas
.
offsetLeft
+
this
.
canvas
.
parentElement
.
scrollLeft
)
/
this
.
scale
;
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
this
.
endY
=
(
e
.
pageY
-
this
.
canvas
.
offsetTop
+
this
.
canvas
.
parentElement
.
scrollTop
)
/
this
.
scale
;
this
.
endX
=
(
e
.
pageX
-
$
(
"
#draw-canvas
"
).
offset
().
left
)
/
this
.
scale
;
// console.log(`mousemove`, this.endX, this.endY);
this
.
endY
=
(
e
.
pageY
-
$
(
"
#draw-canvas
"
).
offset
().
top
)
/
this
.
scale
;
this
.
ctx
.
save
();
// console.log(`mousemove`, this.endX, this.endY);
this
.
ctx
.
setLineDash
([
5
])
this
.
ctx
.
save
();
this
.
canvas
.
style
.
cursor
=
"
default
"
;
this
.
ctx
.
setLineDash
([
5
])
this
.
ctx
.
clearRect
(
0
,
0
,
this
.
config
.
width
,
this
.
config
.
height
);
this
.
canvas
.
style
.
cursor
=
"
crosshair
"
;
if
(
this
.
flag
&&
this
.
optype
==
1
)
{
this
.
ctx
.
clearRect
(
0
,
0
,
this
.
config
.
width
,
this
.
config
.
height
);
// ctx.strokeRect(startx, starty, x - startx, y - starty);
if
(
this
.
flag
&&
this
.
optype
==
1
)
{
// ctx.strokeRect(startx, starty, x - startx, y - starty);
this
.
ctx
.
strokeRect
(
this
.
startX
,
this
.
startY
,
this
.
endX
-
this
.
startX
,
this
.
endY
-
this
.
startY
);
this
.
ctx
.
strokeRect
(
this
.
startX
<
0
?
0
:
this
.
startX
,
this
.
startY
<
0
?
0
:
this
.
startY
,
this
.
endX
-
this
.
startX
,
this
.
endY
-
this
.
startY
);
}
this
.
ctx
.
restore
();
this
.
reshow
(
this
.
endX
,
this
.
endY
,
"
1
"
);
}
}
this
.
ctx
.
restore
();
this
.
reshow
(
this
.
endX
,
this
.
endY
);
}
}
mouseup
(
e
){
mouseup
(
e
)
{
if
(
this
.
optype
==
1
)
{
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
if
(
this
.
optype
==
1
)
{
this
.
layers
.
splice
(
0
,
1
,
this
.
fixPosition
({
this
.
layers
.
splice
(
0
,
1
,
this
.
fixPosition
({
x1
:
this
.
startX
,
x1
:
this
.
startX
,
y1
:
this
.
startY
,
y1
:
this
.
startY
,
x2
:
this
.
endX
,
x2
:
this
.
endX
,
y2
:
this
.
endY
,
y2
:
this
.
endY
,
strokeStyle
:
this
.
config
.
solidColor
,
strokeStyle
:
this
.
config
.
solidColor
,
type
:
this
.
type
type
:
this
.
type
}))
}))
var
ratew
=
this
.
config
.
width
/
this
.
canvas
.
width
;
var
ratew
=
this
.
config
.
width
/
this
.
canvas
.
width
;
var
rateh
=
this
.
config
.
height
/
this
.
canvas
.
height
;
var
rateh
=
this
.
config
.
height
/
this
.
canvas
.
height
;
this
.
layers
.
splice
(
1
,
1
,
this
.
fixPosition
({
this
.
layers
.
splice
(
1
,
1
,
this
.
fixPosition
({
x1
:
Math
.
ceil
(
this
.
startX
*
ratew
),
x1
:
Math
.
ceil
(
this
.
startX
*
ratew
),
y1
:
Math
.
ceil
(
this
.
startY
*
rateh
),
y1
:
Math
.
ceil
(
this
.
startY
*
rateh
),
x2
:
Math
.
ceil
(
this
.
endX
*
ratew
),
x2
:
Math
.
ceil
(
this
.
endX
*
ratew
),
y2
:
Math
.
ceil
(
this
.
endY
*
rateh
),
y2
:
Math
.
ceil
(
this
.
endY
*
rateh
),
strokeStyle
:
this
.
config
.
solidColor
,
strokeStyle
:
this
.
config
.
solidColor
,
type
:
this
.
type
type
:
this
.
type
}))
}));
}
else
if
(
this
.
optype
>=
3
)
{
}
else
if
(
this
.
optype
>=
3
)
{
this
.
fixPosition
(
this
.
currentR
);
this
.
fixPosition
(
this
.
currentR
);
}
this
.
currentR
=
null
;
this
.
flag
=
0
;
this
.
reshow
(
this
.
endX
,
this
.
endY
);
this
.
optype
=
0
;
}
}
this
.
currentR
=
null
;
this
.
flag
=
0
;
this
.
reshow
(
this
.
endX
,
this
.
endY
);
this
.
optype
=
0
;
}
}
}
}
const
draw
=
new
DrawRectangle
(
'
draw-canvas
'
,
{
const
draw
=
new
DrawRectangle
(
'
draw-canvas
'
,
{
src
:
$
(
"
#imgsrc
"
).
val
(),
src
:
$
(
"
#imgsrc
"
).
val
(),
layers
:[{
layers
:[{},
{
"
x1
"
:
parseInt
(
$
(
"
#objectx
"
).
val
()),
"
x1
"
:
parseInt
(
$
(
"
#objectx
"
).
val
()),
"
y1
"
:
parseInt
(
$
(
"
#objecty
"
).
val
()),
"
y1
"
:
parseInt
(
$
(
"
#objecty
"
).
val
()),
"
x2
"
:
parseInt
(
$
(
"
#objectx
"
).
val
())
+
parseInt
(
$
(
"
#objectw
"
).
val
()),
"
x2
"
:
parseInt
(
$
(
"
#objectx
"
).
val
())
+
parseInt
(
$
(
"
#objectw
"
).
val
()),
...
@@ -583,9 +590,20 @@
...
@@ -583,9 +590,20 @@
$
(
function
()
{
$
(
function
()
{
$
(
"
#getwidth
"
).
on
(
'
click
'
,
function
(
e
)
{
if
(
$
(
"
#changewidthnot
"
).
val
()
==
"
1
"
)
{
$
(
"
#changewidthnot
"
).
val
(
"
0
"
);
$
(
"
#draw-canvas
"
).
style
.
cursor
=
"
hand
"
;
}
else
{
$
(
"
#changewidthnot
"
).
val
(
"
1
"
);
$
(
"
#draw-canvas
"
).
style
.
cursor
=
"
crosshair
"
;
}
});
$
(
"
#getrtsp
"
).
on
(
'
click
'
,
function
(
e
)
{
$
(
"
#getrtsp
"
).
on
(
'
click
'
,
function
(
e
)
{
$
.
ajax
({
$
.
ajax
({
url
:
"
/quartz/getRtsp/
"
+
$
(
"
#videoid
"
).
val
(),
url
:
"
/quartz/getRtsp/
"
+
$
(
"
#videoid
"
).
val
(),
dataType
:
"
json
"
,
dataType
:
"
json
"
,
type
:
"
get
"
,
type
:
"
get
"
,
...
@@ -623,7 +641,7 @@
...
@@ -623,7 +641,7 @@
var
lastmodifytime
=
$
(
"
#lastmodifytime
"
).
val
();
var
lastmodifytime
=
$
(
"
#lastmodifytime
"
).
val
();
var
frozentime
=
$
(
"
#frozentime
"
).
val
();
var
frozentime
=
$
(
"
#frozentime
"
).
val
();
var
unfrozentime
=
$
(
"
#unfrozentime
"
).
val
();
var
unfrozentime
=
$
(
"
#unfrozentime
"
).
val
();
object
=
draw
.
layers
[
1
];
object
=
draw
.
layers
[
1
];
$
.
ajax
({
$
.
ajax
({
url
:
"
/quartz/edit/task
"
,
url
:
"
/quartz/edit/task
"
,
dataType
:
"
json
"
,
dataType
:
"
json
"
,
...
...
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