Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
traffic-signal-platform
Project
Project
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
signal
traffic-signal-platform
Commits
67165d17
Commit
67165d17
authored
Apr 01, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 辖区分组优化同步信号机状态优化
parent
b68c6ba1
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
56 additions
and
30 deletions
+56
-30
TDeviceStatusInfo.java
...src/main/java/net/wanji/web/entity/TDeviceStatusInfo.java
+3
-0
TDeviceStatusLog.java
.../src/main/java/net/wanji/web/entity/TDeviceStatusLog.java
+1
-1
SituationDetectionServiceImpl.java
...wanji/web/service/impl/SituationDetectionServiceImpl.java
+12
-11
SignalStatusTask.java
...ce/src/main/java/net/wanji/web/task/SignalStatusTask.java
+40
-18
No files found.
signal-control-service/src/main/java/net/wanji/web/entity/TDeviceStatusInfo.java
View file @
67165d17
package
net
.
wanji
.
web
.
entity
;
package
net
.
wanji
.
web
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -13,6 +15,7 @@ import java.util.Date;
...
@@ -13,6 +15,7 @@ import java.util.Date;
@Data
@Data
@TableName
(
"t_device_status"
)
@TableName
(
"t_device_status"
)
public
class
TDeviceStatusInfo
{
public
class
TDeviceStatusInfo
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
@ApiModelProperty
(
value
=
"id"
)
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
private
Integer
id
;
@ApiModelProperty
(
value
=
"设备代码"
)
@ApiModelProperty
(
value
=
"设备代码"
)
...
...
signal-control-service/src/main/java/net/wanji/web/entity/TDeviceStatusLog.java
View file @
67165d17
...
@@ -13,7 +13,7 @@ import java.util.Date;
...
@@ -13,7 +13,7 @@ import java.util.Date;
*/
*/
@Data
@Data
public
class
TDeviceStatusLog
{
public
class
TDeviceStatusLog
{
@TableId
(
type
=
IdType
.
AUTO
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
@ApiModelProperty
(
value
=
"id"
)
@ApiModelProperty
(
value
=
"id"
)
private
Integer
id
;
private
Integer
id
;
@ApiModelProperty
(
value
=
"设备代码"
)
@ApiModelProperty
(
value
=
"设备代码"
)
...
...
signal-control-service/src/main/java/net/wanji/web/service/impl/SituationDetectionServiceImpl.java
View file @
67165d17
...
@@ -475,13 +475,18 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
...
@@ -475,13 +475,18 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
jurisdictionAreaVO
.
setId
(
String
.
valueOf
(
crossInfo
.
getId
()));
jurisdictionAreaVO
.
setId
(
String
.
valueOf
(
crossInfo
.
getId
()));
jurisdictionAreaVO
.
setName
(
crossInfo
.
getName
());
jurisdictionAreaVO
.
setName
(
crossInfo
.
getName
());
jurisdictionAreaVO
.
setType
(
"2"
);
jurisdictionAreaVO
.
setType
(
"2"
);
String
name
=
null
;
String
location
=
null
;
String
location
=
null
;
for
(
CrossInfoOutVo
crossInfoOutVo
:
crossInfoOutVoList
)
{
for
(
TBaseCrossInfo
tBaseCrossInfo
:
tBaseCrossInfos
)
{
if
(
StringUtils
.
equals
(
crossInfoOutVo
.
getId
(),
crossInfo
.
getId
()))
{
if
(
StringUtils
.
equals
(
tBaseCrossInfo
.
getId
(),
crossInfo
.
getId
()))
{
location
=
crossInfoOutVo
.
getLocation
();
name
=
tBaseCrossInfo
.
getName
();
break
;
location
=
tBaseCrossInfo
.
getLocation
();
if
(
location
.
contains
(
"POINT"
))
{
location
=
location
.
replace
(
"POINT("
,
""
).
replace
(
" "
,
","
).
replace
(
")"
,
""
);
}
}
}
}
}
jurisdictionAreaVO
.
setName
(
name
);
jurisdictionAreaVO
.
setPoint
(
location
);
jurisdictionAreaVO
.
setPoint
(
location
);
jurisdictionAreaVO
.
setLevel
(
0
);
jurisdictionAreaVO
.
setLevel
(
0
);
jurisdictionAreaVO
.
setParentCode
(
"0"
);
jurisdictionAreaVO
.
setParentCode
(
"0"
);
...
@@ -502,13 +507,9 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
...
@@ -502,13 +507,9 @@ public class SituationDetectionServiceImpl implements SituationDetectionService
if
(
StringUtils
.
equals
(
tBaseCrossInfo
.
getId
(),
tBaseAreaCross
.
getCrossId
()))
{
if
(
StringUtils
.
equals
(
tBaseCrossInfo
.
getId
(),
tBaseAreaCross
.
getCrossId
()))
{
name
=
tBaseCrossInfo
.
getName
();
name
=
tBaseCrossInfo
.
getName
();
location
=
tBaseCrossInfo
.
getLocation
();
location
=
tBaseCrossInfo
.
getLocation
();
break
;
if
(
location
.
contains
(
"POINT"
))
{
}
location
=
location
.
replace
(
"POINT("
,
""
).
replace
(
" "
,
","
).
replace
(
")"
,
""
);
}
}
for
(
CrossInfoOutVo
crossInfoOutVo
:
crossInfoOutVoList
)
{
if
(
StringUtils
.
equals
(
crossInfoOutVo
.
getId
(),
tBaseAreaCross
.
getCrossId
()))
{
location
=
crossInfoOutVo
.
getLocation
();
break
;
}
}
}
}
signalAreaVO
.
setName
(
name
);
signalAreaVO
.
setName
(
name
);
...
...
signal-control-service/src/main/java/net/wanji/web/task/SignalStatusTask.java
View file @
67165d17
...
@@ -5,6 +5,8 @@ import lombok.RequiredArgsConstructor;
...
@@ -5,6 +5,8 @@ import lombok.RequiredArgsConstructor;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.common.utils.tool.BeanMapUtils
;
import
net.wanji.common.utils.tool.BeanMapUtils
;
import
net.wanji.databus.dao.mapper.CrossInfoMapper
;
import
net.wanji.databus.po.CrossInfoPO
;
import
net.wanji.databus.vo.SignalStatusVO
;
import
net.wanji.databus.vo.SignalStatusVO
;
import
net.wanji.feign.service.UtcFeignClients
;
import
net.wanji.feign.service.UtcFeignClients
;
import
net.wanji.web.entity.TCrossControlHist
;
import
net.wanji.web.entity.TCrossControlHist
;
...
@@ -22,6 +24,7 @@ import java.util.Date;
...
@@ -22,6 +24,7 @@ import java.util.Date;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
/**
/**
* @author duanruiming
* @author duanruiming
...
@@ -35,6 +38,7 @@ public class SignalStatusTask {
...
@@ -35,6 +38,7 @@ public class SignalStatusTask {
private
final
TDeviceStatusMapper
tDeviceStatusMapper
;
private
final
TDeviceStatusMapper
tDeviceStatusMapper
;
private
final
ControlHistMapper
controlHistMapper
;
private
final
ControlHistMapper
controlHistMapper
;
private
final
TDeviceStatusLogMapper
tDeviceStatusLogMapper
;
private
final
TDeviceStatusLogMapper
tDeviceStatusLogMapper
;
private
final
CrossInfoMapper
crossInfoMapper
;
@Scheduled
(
fixedRate
=
1
*
60
*
1000
)
@Scheduled
(
fixedRate
=
1
*
60
*
1000
)
@Transactional
@Transactional
...
@@ -47,9 +51,17 @@ public class SignalStatusTask {
...
@@ -47,9 +51,17 @@ public class SignalStatusTask {
}
}
List
<
Map
<
String
,
Object
>>
source
=
(
List
<
Map
<
String
,
Object
>>)
jsonViewObject
.
getContent
();
List
<
Map
<
String
,
Object
>>
source
=
(
List
<
Map
<
String
,
Object
>>)
jsonViewObject
.
getContent
();
List
<
SignalStatusVO
>
content
=
BeanMapUtils
.
mapsToObjects
(
source
,
SignalStatusVO
.
class
);
List
<
SignalStatusVO
>
content
=
BeanMapUtils
.
mapsToObjects
(
source
,
SignalStatusVO
.
class
);
List
<
String
>
crossIdList
=
content
.
stream
().
map
(
SignalStatusVO:
:
getCrossId
).
collect
(
Collectors
.
toList
());
List
<
CrossInfoPO
>
crossInfoPOList
=
crossInfoMapper
.
selectByCrossIds
(
crossIdList
);
content
.
forEach
(
signalStatusVO
->
{
content
.
forEach
(
signalStatusVO
->
{
String
signalId
=
signalStatusVO
.
getSignalId
();
String
crossId
=
signalStatusVO
.
getCrossId
();
String
crossId
=
signalStatusVO
.
getCrossId
();
String
name
=
null
;
for
(
CrossInfoPO
crossInfoPO
:
crossInfoPOList
)
{
if
(
StringUtils
.
equals
(
crossId
,
crossInfoPO
.
getId
()))
{
name
=
crossInfoPO
.
getName
();
break
;
}
}
Integer
currentSignalStatus
=
signalStatusVO
.
getStatus
()
==
null
?
0
:
signalStatusVO
.
getStatus
();
Integer
currentSignalStatus
=
signalStatusVO
.
getStatus
()
==
null
?
0
:
signalStatusVO
.
getStatus
();
Integer
currentFaultType
=
signalStatusVO
.
getFaultType
()
==
null
?
0
:
signalStatusVO
.
getFaultType
();
Integer
currentFaultType
=
signalStatusVO
.
getFaultType
()
==
null
?
0
:
signalStatusVO
.
getFaultType
();
...
@@ -58,17 +70,26 @@ public class SignalStatusTask {
...
@@ -58,17 +70,26 @@ public class SignalStatusTask {
if
(
StringUtils
.
isNotEmpty
(
crossId
))
{
if
(
StringUtils
.
isNotEmpty
(
crossId
))
{
lambdaQueryWrapper
.
eq
(
TDeviceStatusInfo:
:
getCode
,
crossId
);
lambdaQueryWrapper
.
eq
(
TDeviceStatusInfo:
:
getCode
,
crossId
);
TDeviceStatusInfo
tDeviceStatusInfo
=
tDeviceStatusMapper
.
selectOne
(
lambdaQueryWrapper
);
TDeviceStatusInfo
tDeviceStatusInfo
=
tDeviceStatusMapper
.
selectOne
(
lambdaQueryWrapper
);
if
(
Objects
.
nonNull
(
tDeviceStatusInfo
))
{
if
(
isExucuteUpdate
(
currentSignalStatus
,
currentFaultType
,
tDeviceStatusInfo
))
{
if
(
isExucuteUpdate
(
currentSignalStatus
,
currentFaultType
,
tDeviceStatusInfo
))
{
if
(!
Objects
.
equals
(
0
,
currentFaultType
))
{
if
(
currentSignalStatus
==
1
&&
!
Objects
.
equals
(
0
,
currentFaultType
))
{
tDeviceStatusInfo
.
setStatus
(
2
);
currentSignalStatus
=
2
;
}
else
{
tDeviceStatusInfo
.
setStatus
(
currentFaultType
);
}
}
tDeviceStatusInfo
.
setFaultType
(
currentFaultType
);
tDeviceStatusInfo
.
setFaultType
(
currentFaultType
);
tDeviceStatusInfo
.
setGmtCreate
(
new
Date
());
// 实时数据,创建和修改时间一致
tDeviceStatusInfo
.
setGmtCreate
(
new
Date
());
// 实时数据,创建和修改时间一致
tDeviceStatusMapper
.
updateById
(
tDeviceStatusInfo
);
tDeviceStatusMapper
.
updateById
(
tDeviceStatusInfo
);
insertDeviceStatusLog
(
signalStatusVO
,
crossId
,
currentSignalStatus
,
currentFaultType
);
insertDeviceStatusLog
(
signalStatusVO
,
crossId
,
currentSignalStatus
,
currentFaultType
,
name
);
}
}
else
{
TDeviceStatusInfo
deviceStatusInfo
=
new
TDeviceStatusInfo
();
deviceStatusInfo
.
setCode
(
crossId
);
deviceStatusInfo
.
setName
(
name
);
deviceStatusInfo
.
setType
(
1
);
deviceStatusInfo
.
setStatus
(
currentSignalStatus
);
deviceStatusInfo
.
setFaultType
(
currentFaultType
);
deviceStatusInfo
.
setGmtCreate
(
new
Date
());
deviceStatusInfo
.
setId
(
null
);
tDeviceStatusMapper
.
insert
(
deviceStatusInfo
);
}
}
}
}
insertControlHist
(
signalStatusVO
);
insertControlHist
(
signalStatusVO
);
...
@@ -101,23 +122,22 @@ public class SignalStatusTask {
...
@@ -101,23 +122,22 @@ public class SignalStatusTask {
* @param currentSignalStatus
* @param currentSignalStatus
* @param currentFaultType
* @param currentFaultType
*/
*/
private
void
insertDeviceStatusLog
(
SignalStatusVO
signalStatusVO
,
String
crossId
,
Integer
currentSignalStatus
,
Integer
currentFaultType
)
{
private
void
insertDeviceStatusLog
(
SignalStatusVO
signalStatusVO
,
String
crossId
,
Integer
currentSignalStatus
,
Integer
currentFaultType
,
String
name
)
{
// 插入日志表
// 插入日志表
TDeviceStatusLog
tDeviceStatusLogInfoDB
=
tDeviceStatusLogMapper
.
selectLastOne
(
crossId
);
TDeviceStatusLog
tDeviceStatusLogInfoDB
=
tDeviceStatusLogMapper
.
selectLastOne
(
crossId
);
// DB数据是故障,如果当前正常非故障,状态为 FaultType=100 故障已处理
if
(
Objects
.
nonNull
(
tDeviceStatusLogInfoDB
)
&&
tDeviceStatusLogInfoDB
.
getFaultType
()
!=
currentFaultType
)
{
if
(
Objects
.
nonNull
(
tDeviceStatusLogInfoDB
)
||
tDeviceStatusLogInfoDB
.
getFaultType
()
!=
0
&&
currentFaultType
==
0
)
{
tDeviceStatusLogInfoDB
.
setStatus
(
currentSignalStatus
);
tDeviceStatusLogInfoDB
.
setStatus
(
currentSignalStatus
);
tDeviceStatusLogInfoDB
.
setFaultType
(
100
);
tDeviceStatusLogInfoDB
.
setFaultType
(
tDeviceStatusLogInfoDB
.
getFaultType
()
);
tDeviceStatusLogInfoDB
.
setGmtCreate
(
new
Date
());
tDeviceStatusLogInfoDB
.
setGmtCreate
(
new
Date
());
tDeviceStatusLogInfoDB
.
setId
(
null
);
tDeviceStatusLogInfoDB
.
setId
(
null
);
tDeviceStatusLogMapper
.
insert
(
tDeviceStatusLogInfoDB
);
tDeviceStatusLogMapper
.
insert
(
tDeviceStatusLogInfoDB
);
}
else
{
}
else
{
TDeviceStatusLog
tDeviceStatusLog
=
new
TDeviceStatusLog
();
TDeviceStatusLog
tDeviceStatusLog
=
new
TDeviceStatusLog
();
tDeviceStatusLog
.
setCode
(
crossId
);
tDeviceStatusLog
.
setCode
(
crossId
);
tDeviceStatusLog
.
setName
(
signalStatusVO
.
getSignalId
()
);
tDeviceStatusLog
.
setName
(
name
);
tDeviceStatusLog
.
setType
(
1
);
tDeviceStatusLog
.
setType
(
1
);
tDeviceStatusLog
.
setStatus
(
signalStatusVO
.
getStatus
());
tDeviceStatusLog
.
setStatus
(
signalStatusVO
.
getStatus
());
tDeviceStatusLog
.
setFaultType
(
currentFaultType
);
tDeviceStatusLog
.
setFaultType
(
signalStatusVO
.
getFaultType
()
);
tDeviceStatusLog
.
setGmtCreate
(
new
Date
());
tDeviceStatusLog
.
setGmtCreate
(
new
Date
());
tDeviceStatusLog
.
setId
(
null
);
tDeviceStatusLog
.
setId
(
null
);
tDeviceStatusLogMapper
.
insert
(
tDeviceStatusLog
);
tDeviceStatusLogMapper
.
insert
(
tDeviceStatusLog
);
...
@@ -125,6 +145,8 @@ public class SignalStatusTask {
...
@@ -125,6 +145,8 @@ public class SignalStatusTask {
}
}
private
static
boolean
isExucuteUpdate
(
Integer
currentSignalStatus
,
Integer
currentFaultType
,
TDeviceStatusInfo
tDeviceStatusInfo
)
{
private
static
boolean
isExucuteUpdate
(
Integer
currentSignalStatus
,
Integer
currentFaultType
,
TDeviceStatusInfo
tDeviceStatusInfo
)
{
return
Objects
.
nonNull
(
tDeviceStatusInfo
)
&&
(
currentSignalStatus
!=
tDeviceStatusInfo
.
getStatus
()
||
currentFaultType
!=
tDeviceStatusInfo
.
getFaultType
());
// 故障自定义,当故障时,状态对应海康在线
int
status
=
tDeviceStatusInfo
.
getStatus
()
==
2
?
1
:
tDeviceStatusInfo
.
getStatus
();
return
Objects
.
nonNull
(
tDeviceStatusInfo
)
&&
(
currentSignalStatus
!=
status
||
currentFaultType
!=
tDeviceStatusInfo
.
getFaultType
());
}
}
}
}
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