Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
V
VideoManager
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
1
Merge Requests
1
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
wangjinjing
VideoManager
Commits
36f0e3d1
Commit
36f0e3d1
authored
May 26, 2021
by
yzm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更改实现方式为推送给第三方
parent
a7fc5f1b
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
777 additions
and
163 deletions
+777
-163
src/main/java/com/cx/cn/cxquartz/controller/ExtController.java
...ain/java/com/cx/cn/cxquartz/controller/ExtController.java
+164
-136
src/main/java/com/cx/cn/cxquartz/controller/IndexController.java
...n/java/com/cx/cn/cxquartz/controller/IndexController.java
+88
-0
src/main/java/com/cx/cn/cxquartz/dao/TraffPictureMapper.java
src/main/java/com/cx/cn/cxquartz/dao/TraffPictureMapper.java
+1
-0
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/EventWriteService.java
...cx/cn/cxquartz/service/quartz/impl/EventWriteService.java
+105
-0
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/TokenCacheService.java
...cx/cn/cxquartz/service/quartz/impl/TokenCacheService.java
+108
-0
src/main/java/com/cx/cn/cxquartz/vo/ResponseEnum.java
src/main/java/com/cx/cn/cxquartz/vo/ResponseEnum.java
+38
-0
src/main/java/com/cx/cn/cxquartz/vo/ResultObj.java
src/main/java/com/cx/cn/cxquartz/vo/ResultObj.java
+152
-23
src/main/java/com/cx/cn/cxquartz/vo/TraffrecordData.java
src/main/java/com/cx/cn/cxquartz/vo/TraffrecordData.java
+104
-0
src/main/resources/application.yml
src/main/resources/application.yml
+4
-4
src/main/resources/file.properties
src/main/resources/file.properties
+9
-0
src/main/resources/mapper/SbtdspsrMapper.xml
src/main/resources/mapper/SbtdspsrMapper.xml
+1
-0
src/main/resources/mapper/TraffPictureMapper.xml
src/main/resources/mapper/TraffPictureMapper.xml
+3
-0
No files found.
src/main/java/com/cx/cn/cxquartz/controller/ExtController.java
View file @
36f0e3d1
This diff is collapsed.
Click to expand it.
src/main/java/com/cx/cn/cxquartz/controller/IndexController.java
View file @
36f0e3d1
This diff is collapsed.
Click to expand it.
src/main/java/com/cx/cn/cxquartz/dao/TraffPictureMapper.java
View file @
36f0e3d1
...
@@ -9,4 +9,5 @@ public interface TraffPictureMapper {
...
@@ -9,4 +9,5 @@ public interface TraffPictureMapper {
int
inserTraffpicture
(
TraffpictureParam
traffalarmrecord
);
int
inserTraffpicture
(
TraffpictureParam
traffalarmrecord
);
int
updateTraffpicture
(
TraffpictureParam
traffalarmrecord
);
int
updateTraffpicture
(
TraffpictureParam
traffalarmrecord
);
String
queryimgpath
(
TraffpictureParam
traffpicture
);
String
queryimgpath
(
TraffpictureParam
traffpicture
);
int
updateTraffpicturePushStatus
(
TraffpictureParam
traffpicture
);
}
}
\ No newline at end of file
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/EventWriteService.java
0 → 100644
View file @
36f0e3d1
package
com
.
cx
.
cn
.
cxquartz
.
service
.
quartz
.
impl
;
import
com.cx.cn.cxquartz.dao.TraffPictureMapper
;
import
com.cx.cn.cxquartz.util.DateUtils
;
import
com.cx.cn.cxquartz.util.ThreadPoolUtil
;
import
com.cx.cn.cxquartz.vo.ResponseEnum
;
import
com.cx.cn.cxquartz.vo.ResultObj
;
import
com.cx.cn.cxquartz.vo.TraffpictureParam
;
import
com.cx.cn.cxquartz.vo.TraffrecordData
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.http.HttpEntity
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.MediaType
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.client.RestTemplate
;
import
java.util.concurrent.*
;
/**
* <p>
* 服务类
* </p>
*
* @author wjj
* @since 2021-04-29
*/
@Service
public
class
EventWriteService
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
EventWriteService
.
class
);
@Autowired
private
RestTemplate
restTemplate
;
@Autowired
private
TraffPictureMapper
traffPictureMapper
;
@Value
(
"${eventwrite.url}"
)
private
String
url
;
@Value
(
"${eventwrite.timeout}"
)
private
Integer
timeout
;
@Value
(
"${eventwrite.token}"
)
private
String
qztoken
;
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
@Autowired
TokenCacheService
tokensertvice
;
private
static
CompletionService
<
ResultObj
>
completionService
=
new
ExecutorCompletionService
<
ResultObj
>(
ThreadPoolUtil
.
getPool
());
public
void
sendEvent
(
TraffpictureParam
traffpictureParamresult
,
TraffrecordData
sendtozhiui
)
{
sendtozhiui
.
setAlarmnum
(
traffpictureParamresult
.
getTargetnum
());
sendtozhiui
.
setFdid
(
traffpictureParamresult
.
getFdid
());
sendtozhiui
.
setRecordtype
(
traffpictureParamresult
.
getRecordtype
());
sendtozhiui
.
setRecordtime
(
traffpictureParamresult
.
getCreatetime
()==
null
?
""
:
DateUtils
.
formatDate
(
traffpictureParamresult
.
getCreatetime
()));
ResultObj
resultObj
;
try
{
resultObj
=
sendMessage
(
sendtozhiui
);
// boolean successFlag = resultObj.getCode() == ResponseEnum.SUCCESS.getCode();
traffpictureParamresult
.
setPushdesc
(
resultObj
.
getMsg
());
/* 成功 */
if
(
"0"
.
equals
(
resultObj
.
getCode
()))
{
traffpictureParamresult
.
setPushstatus
(
0
);
traffpictureParamresult
.
setPushdesc
(
"推送成功"
);
traffPictureMapper
.
updateTraffpicturePushStatus
(
traffpictureParamresult
);
return
;
}
/* 其他失败 */
}
catch
(
TimeoutException
e
)
{
traffpictureParamresult
.
setPushdesc
(
"请求超时"
);
log
.
error
(
"eventwrite - sendEvent 请求超时:"
+
e
.
toString
());
//return ResultObj.error(ResponseEnum.E_1008.getCode(), ResponseEnum.E_1008.getMsg());
}
catch
(
Exception
e
)
{
traffpictureParamresult
.
setPushdesc
(
"请求失败"
);
log
.
error
(
"eventwrite - sendEvent 异常:"
+
e
.
toString
());
//return ResultObj.error(ResponseEnum.E_9999.getCode(), e.toString());
}
traffpictureParamresult
.
setPushstatus
(-
1
);
traffPictureMapper
.
updateTraffpicturePushStatus
(
traffpictureParamresult
);
}
private
ResultObj
sendMessage
(
TraffrecordData
traffalarmrecord
)
throws
InterruptedException
,
ExecutionException
,
TimeoutException
{
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON_UTF8
);
String
token
=
stringRedisTemplate
.
opsForValue
().
get
(
qztoken
);
if
(
null
==
token
){
token
=
tokensertvice
.
keepAlive
();
}
headers
.
add
(
"accessToken"
,
token
);
HttpEntity
<
TraffrecordData
>
requestEntity
=
new
HttpEntity
<>(
traffalarmrecord
,
headers
);
return
CompletableFuture
.
supplyAsync
(()
->
restTemplate
.
postForObject
(
url
,
requestEntity
,
ResultObj
.
class
)).
get
(
timeout
,
TimeUnit
.
SECONDS
);
}
}
src/main/java/com/cx/cn/cxquartz/service/quartz/impl/TokenCacheService.java
0 → 100644
View file @
36f0e3d1
package
com
.
cx
.
cn
.
cxquartz
.
service
.
quartz
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.cx.cn.cxquartz.util.DateUtils
;
import
com.google.gson.Gson
;
import
com.google.gson.reflect.TypeToken
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.http.*
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.client.RestTemplate
;
import
javax.annotation.PostConstruct
;
import
java.lang.reflect.Type
;
import
java.util.Date
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
@Service
public
class
TokenCacheService
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
TokenCacheService
.
class
);
@Autowired
private
StringRedisTemplate
stringRedisTemplate
;
@Value
(
"${eventwrite.token}"
)
private
String
qztoken
;
@Value
(
"${eventwrite.expiretoken}"
)
private
String
expiretoken
;
@Value
(
"${countryside.appid}"
)
private
String
appid
;
@Value
(
"${countryside.appsecret}"
)
private
String
appsecret
;
@Value
(
"${countryside.tokenurl}"
)
private
String
tokenurl
;
public
String
keepAlive
()
{
try
{
String
tokencache
=
stringRedisTemplate
.
opsForValue
().
get
(
qztoken
);
if
(
tokencache
!=
null
)
{
//判断是否过期
String
datetime
=
stringRedisTemplate
.
opsForValue
().
get
(
expiretoken
);
if
(
null
!=
datetime
){
//预留1分钟过期时间
Long
expireminiseconds
=
Long
.
parseLong
(
datetime
);
if
(
new
Date
().
getTime
()<
expireminiseconds
)
{
return
tokencache
;
}
}
return
loginServer
();
}
else
{
return
loginServer
();
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
e
.
toString
());
}
return
null
;
}
private
String
loginServer
()
{
HttpHeaders
headers
=
getHttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON_UTF8
);
RestTemplate
client
=
new
RestTemplate
();
ResponseEntity
<
String
>
response
=
client
.
getForEntity
((
tokenurl
+
"?appid="
+
appid
+
"&appsecret="
+
appsecret
),
String
.
class
);
return
getTokenData
(
response
);
}
private
HttpHeaders
getHttpHeaders
()
{
HttpHeaders
headers
=
new
HttpHeaders
();
headers
.
setContentType
(
MediaType
.
APPLICATION_JSON_UTF8
);
return
headers
;
}
private
String
getTokenData
(
ResponseEntity
<
String
>
response
){
try
{
if
(
response
!=
null
&&
response
.
getBody
()
!=
null
&&
response
.
getBody
().
contains
(
"code"
))
{
String
ret
=
response
.
getBody
();
JSONObject
map
=
JSONObject
.
parseObject
(
ret
);
if
(
null
!=
map
&&
null
!=
map
.
get
(
"obj"
)
&&(
"0"
).
equals
(
map
.
getString
(
"code"
)))
{
JSONObject
object
=
JSONObject
.
parseObject
(
map
.
getString
(
"obj"
));
if
(
null
!=
object
&&
null
!=
object
.
getString
(
"accessToken"
))
{
Long
time
=
object
.
getLong
(
"expire"
)-
new
Date
().
getTime
();
stringRedisTemplate
.
opsForValue
().
set
(
expiretoken
,
time
.
toString
(),
time
,
TimeUnit
.
MILLISECONDS
);
stringRedisTemplate
.
opsForValue
().
set
(
qztoken
,
object
.
getString
(
"accessToken"
),
time
,
TimeUnit
.
MILLISECONDS
);
return
object
.
getString
(
"accessToken"
);
}
}
else
{
log
.
error
(
"getTokenData error :"
+
response
.
getBody
());
}
}
else
{
log
.
error
(
"getTokenData empty..."
);
}
}
catch
(
Exception
e
){
System
.
out
.
println
(
e
.
toString
());
log
.
error
(
e
.
getMessage
());
}
return
null
;
}
}
src/main/java/com/cx/cn/cxquartz/vo/ResponseEnum.java
0 → 100644
View file @
36f0e3d1
package
com
.
cx
.
cn
.
cxquartz
.
vo
;
public
enum
ResponseEnum
{
/* 错误信息 */
E_1000
(
1000
,
"返回值必须为PageResult"
),
E_1001
(
1001
,
"必须传递分页参数"
),
E_1002
(
1002
,
"参数值异常"
),
E_1003
(
1003
,
"参数值转换异常"
),
E_1004
(
1004
,
"参数值为空"
),
/* 保存 更新 重置 删除 等 */
E_1005
(
1005
,
"更新失败"
),
E_1006
(
1006
,
"无结果"
),
E_1007
(
1007
,
"未登录"
),
E_1008
(
1008
,
"请求超时"
),
E_1009
(
1009
,
"请求下游服务异常"
),
E_1010
(
1010
,
"数据保存失败"
),
E_1011
(
1011
,
"数据重复"
),
E_9999
(
9999
,
"系统异常"
),
SUCCESS
(
0
,
"请求成功"
);
private
int
code
;
private
String
msg
;
ResponseEnum
(
int
code
,
String
msg
)
{
this
.
code
=
code
;
this
.
msg
=
msg
;
}
public
int
getCode
()
{
return
code
;
}
public
String
getMsg
()
{
return
msg
;
}
}
src/main/java/com/cx/cn/cxquartz/vo/ResultObj.java
View file @
36f0e3d1
...
@@ -2,32 +2,161 @@
...
@@ -2,32 +2,161 @@
* Copyright 2021 json.cn
* Copyright 2021 json.cn
*/
*/
package
com
.
cx
.
cn
.
cxquartz
.
vo
;
package
com
.
cx
.
cn
.
cxquartz
.
vo
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
java.util.List
;
import
java.util.List
;
public
class
ResultObj
{
public
class
ResultObj
{
private
static
final
ObjectMapper
MAPPER
=
new
ObjectMapper
();
/**
* 响应业务状态
* 200 成功
* 201 错误
* 400 参数错误
*/
private
String
code
;
/**
* 响应消息
*/
private
String
msg
;
/**
* 响应中的数据
*/
private
Object
obj
;
public
static
ResultObj
error
(
String
status
,
String
msg
,
Object
data
)
{
return
new
ResultObj
(
status
,
msg
,
data
);
}
public
static
ResultObj
ok
(
Object
data
)
{
return
new
ResultObj
(
data
);
}
public
static
ResultObj
ok
()
{
return
ok
(
null
);
}
private
ResultObj
()
{
}
public
static
ResultObj
error
(
String
status
,
String
msg
)
{
return
new
ResultObj
(
status
,
msg
,
null
);
}
private
ResultObj
(
String
status
,
String
msg
,
Object
data
)
{
this
.
code
=
status
;
this
.
msg
=
msg
;
this
.
obj
=
data
;
}
private
ResultObj
(
Object
data
)
{
this
.
code
=
"200"
;
this
.
msg
=
"OK"
;
this
.
obj
=
data
;
}
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
public
String
getMsg
()
{
return
msg
;
}
public
void
setMsg
(
String
msg
)
{
this
.
msg
=
msg
;
}
public
Object
getObj
()
{
return
obj
;
}
public
void
setObj
(
Object
obj
)
{
this
.
obj
=
obj
;
}
/**
* 将json结果集转化为SysResult对象
*
* @param jsonData json数据
* @param clazz SysResult中的object类型
* @return SysResult对象
*/
public
static
ResultObj
formatToPojo
(
String
jsonData
,
Class
<?>
clazz
)
{
try
{
if
(
clazz
==
null
)
{
return
MAPPER
.
readValue
(
jsonData
,
ResultObj
.
class
);
}
JsonNode
jsonNode
=
MAPPER
.
readTree
(
jsonData
);
JsonNode
data
=
jsonNode
.
get
(
"data"
);
Object
obj
=
null
;
if
(
data
.
isObject
())
{
obj
=
MAPPER
.
readValue
(
data
.
traverse
(),
clazz
);
}
else
if
(
data
.
isTextual
())
{
obj
=
MAPPER
.
readValue
(
data
.
asText
(),
clazz
);
}
return
error
(
jsonNode
.
get
(
"status"
).
toString
(),
jsonNode
.
get
(
"msg"
).
asText
(),
obj
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 没有object对象的转化
*
* @param json 字符串
* @return SysResult对象
*/
public
static
ResultObj
format
(
String
json
)
{
try
{
return
MAPPER
.
readValue
(
json
,
ResultObj
.
class
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* Object是集合转化
*
* @param jsonData json数据
* @param clazz 集合中的类型
* @return SysResult对象
*/
public
static
ResultObj
formatToList
(
String
jsonData
,
Class
<?>
clazz
)
{
try
{
JsonNode
jsonNode
=
MAPPER
.
readTree
(
jsonData
);
JsonNode
data
=
jsonNode
.
get
(
"data"
);
Object
obj
=
null
;
if
(
data
.
isArray
()
&&
data
.
size
()
>
0
)
{
obj
=
MAPPER
.
readValue
(
data
.
traverse
(),
MAPPER
.
getTypeFactory
().
constructCollectionType
(
List
.
class
,
clazz
));
}
return
error
(
jsonNode
.
get
(
"status"
).
toString
(),
jsonNode
.
get
(
"msg"
).
asText
(),
obj
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
@Override
public
String
toString
()
{
return
"ResultObj{"
+
"code="
+
code
+
", msg='"
+
msg
+
'\''
+
", obj="
+
obj
+
'}'
;
}
private
String
ret
;
private
String
error_msg
;
private
List
<
ObjectList
>
ObjectList
;
public
void
setRet
(
String
ret
)
{
this
.
ret
=
ret
;
}
public
String
getRet
()
{
return
ret
;
}
public
void
setError_msg
(
String
error_msg
)
{
this
.
error_msg
=
error_msg
;
}
public
String
getError_msg
()
{
return
error_msg
;
}
public
void
setObjectList
(
List
<
ObjectList
>
ObjectList
)
{
this
.
ObjectList
=
ObjectList
;
}
public
List
<
ObjectList
>
getObjectList
()
{
return
ObjectList
;
}
}
}
\ No newline at end of file
src/main/java/com/cx/cn/cxquartz/vo/TraffrecordData.java
0 → 100644
View file @
36f0e3d1
package
com
.
cx
.
cn
.
cxquartz
.
vo
;
/**
* <p>
*
* </p>
*
* @author wjj
* @since 2021-04-29
*/
public
class
TraffrecordData
{
private
Integer
alarmnum
;
private
String
fdid
;
private
String
imagedata
;
private
String
recordlevel
;
private
String
recordname
;
private
String
recordtime
;
private
String
recordtype
;
private
Integer
targetnum
;
private
String
tdmc
;
private
String
xzmc
;
public
Integer
getAlarmnum
()
{
return
alarmnum
;
}
public
void
setAlarmnum
(
Integer
alarmnum
)
{
this
.
alarmnum
=
alarmnum
;
}
public
String
getFdid
()
{
return
fdid
;
}
public
void
setFdid
(
String
fdid
)
{
this
.
fdid
=
fdid
;
}
public
String
getImagedata
()
{
return
imagedata
;
}
public
void
setImagedata
(
String
imagedata
)
{
this
.
imagedata
=
imagedata
;
}
public
String
getRecordlevel
()
{
return
recordlevel
;
}
public
void
setRecordlevel
(
String
recordlevel
)
{
this
.
recordlevel
=
recordlevel
;
}
public
String
getRecordname
()
{
return
recordname
;
}
public
void
setRecordname
(
String
recordname
)
{
this
.
recordname
=
recordname
;
}
public
String
getRecordtime
()
{
return
recordtime
;
}
public
void
setRecordtime
(
String
recordtime
)
{
this
.
recordtime
=
recordtime
;
}
public
String
getRecordtype
()
{
return
recordtype
;
}
public
void
setRecordtype
(
String
recordtype
)
{
this
.
recordtype
=
recordtype
;
}
public
Integer
getTargetnum
()
{
return
targetnum
;
}
public
void
setTargetnum
(
Integer
targetnum
)
{
this
.
targetnum
=
targetnum
;
}
public
String
getTdmc
()
{
return
tdmc
;
}
public
void
setTdmc
(
String
tdmc
)
{
this
.
tdmc
=
tdmc
;
}
public
String
getXzmc
()
{
return
xzmc
;
}
public
void
setXzmc
(
String
xzmc
)
{
this
.
xzmc
=
xzmc
;
}
}
src/main/resources/application.yml
View file @
36f0e3d1
...
@@ -48,9 +48,9 @@ spring:
...
@@ -48,9 +48,9 @@ spring:
# root:
# root:
# info
# info
#
logging:
logging
:
#
level:
level
:
#
com.cx.cn.cxquartz.dao:
com.cx.cn.cxquartz.dao
:
#
debug
debug
src/main/resources/file.properties
View file @
36f0e3d1
...
@@ -12,4 +12,13 @@ file.rtspurl=http://172.16.24.29:8081/getrealcamerasnapshot.php
...
@@ -12,4 +12,13 @@ file.rtspurl=http://172.16.24.29:8081/getrealcamerasnapshot.php
file.recogurl
=
http://172.16.24.29:9098/images/recog
file.recogurl
=
http://172.16.24.29:9098/images/recog
redis.cachekey.ftplist
=
gs:traff:global:cache:ftplist
redis.cachekey.ftplist
=
gs:traff:global:cache:ftplist
file.getrtspbyurl
=
http://212.129.142.17:8281/gh/device/test
file.getrtspbyurl
=
http://212.129.142.17:8281/gh/device/test
countryside.url
=
http://countryside.51iwifi.com/gw/hesc-mq/hesc/mq/receive/cameraalarm
eventwrite.timeout
=
5000
eventwrite.token
=
countrysidetoken
eventwrite.expiretoken
=
countrysideexpiretime
eventwrite.url
=
http://countryside.51iwifi.com/gw/hesc-mq/hesc/mq/receive/cameraalarm
countryside.appid
=
05744e80b2c211ebe32a8e271066b19e
countryside.appsecret
=
a55a8870b2e911ebe32a8e271066b19e
countryside.tokenurl
=
http://countryside.51iwifi.com/gw/getAccessToken
file.publicpictureurl
=
http://zjh189.ncpoi.cc:10001
src/main/resources/mapper/SbtdspsrMapper.xml
View file @
36f0e3d1
...
@@ -20,6 +20,7 @@
...
@@ -20,6 +20,7 @@
<select
id=
"selectRecogByRtsp"
parameterType=
"java.lang.String"
resultType=
"java.util.HashMap"
>
<select
id=
"selectRecogByRtsp"
parameterType=
"java.lang.String"
resultType=
"java.util.HashMap"
>
SELECT DISTINCT
SELECT DISTINCT
(select concat(sbbh,"_",tdbh) from sbtdspsr where sbbh=b.videoid or squrllj=b.videoid limit 1) videoid,
(select concat(sbbh,"_",tdbh) from sbtdspsr where sbbh=b.videoid or squrllj=b.videoid limit 1) videoid,
(select tdmc from sbtdspsr where sbbh=b.videoid or squrllj=b.videoid limit 1) tdmc,
metatype,
metatype,
recordtype,
recordtype,
objectx,
objectx,
...
...
src/main/resources/mapper/TraffPictureMapper.xml
View file @
36f0e3d1
...
@@ -114,5 +114,8 @@
...
@@ -114,5 +114,8 @@
</update>
</update>
<update
id=
"updateTraffpicturePushStatus"
>
update traffpicture set pushdesc=#{pushdesc} , pushstatus=#{pushstatus} where id=#{id}
</update>
</mapper>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment