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
1e676e4c
Commit
1e676e4c
authored
Jun 19, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 信号机状态,实时灯态
parent
f2972a92
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
290 additions
and
46 deletions
+290
-46
SignalDataCache.java
...ce/src/main/java/net/wanji/com/cache/SignalDataCache.java
+21
-0
Constants.java
...c/main/java/net/wanji/com/common/constants/Constants.java
+3
-3
CommandResultSign.java
...in/java/net/wanji/com/common/enums/CommandResultSign.java
+2
-1
ControlTypeEnum.java
...main/java/net/wanji/com/common/enums/ControlTypeEnum.java
+37
-0
PhaseLightColorEnum.java
.../java/net/wanji/com/common/enums/PhaseLightColorEnum.java
+50
-0
SignalStatusController.java
...java/net/wanji/com/controller/SignalStatusController.java
+5
-7
GetStageStatusService.java
...ji/com/netty/response/impl/get/GetStageStatusService.java
+17
-0
PhaseStageStatusPojo.java
...va/net/wanji/com/pojo/dtconvert/PhaseStageStatusPojo.java
+16
-0
SignalStatusService.java
...net/wanji/com/service/controller/SignalStatusService.java
+0
-4
DTSignalStatusServiceImpl.java
...om/service/controller/impl/DTSignalStatusServiceImpl.java
+126
-24
DTStaticInfoServiceImpl.java
.../com/service/controller/impl/DTStaticInfoServiceImpl.java
+13
-7
No files found.
signal-utc-dt-service/src/main/java/net/wanji/com/cache/SignalDataCache.java
0 → 100644
View file @
1e676e4c
package
net
.
wanji
.
com
.
cache
;
import
net.wanji.com.pojo.dtconvert.PhaseInfoPojo
;
import
net.wanji.com.pojo.dtconvert.PhaseStageInfoPojo
;
import
net.wanji.com.pojo.dtconvert.SchemeInfoPojo
;
import
org.springframework.stereotype.Component
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author duanruiming
* @date 2023/06/19 15:28
*/
@Component
public
class
SignalDataCache
{
public
static
final
Map
<
String
,
List
<
SchemeInfoPojo
>>
schemeInfoCache
=
new
HashMap
<>();
public
static
final
Map
<
String
,
List
<
PhaseStageInfoPojo
>>
phaseStageInfoCache
=
new
HashMap
<>();
public
static
final
Map
<
String
,
List
<
PhaseInfoPojo
>>
phaseInfoCache
=
new
HashMap
<>();
}
signal-utc-dt-service/src/main/java/net/wanji/com/common/constants/Constants.java
View file @
1e676e4c
...
@@ -23,13 +23,13 @@ public class Constants {
...
@@ -23,13 +23,13 @@ public class Constants {
public
static
final
String
COMMAND_LIGHT_CONFIG
=
"0302"
;
public
static
final
String
COMMAND_LIGHT_CONFIG
=
"0302"
;
public
static
final
String
COMMAND_LIGHT_STATUS
=
"0303"
;
public
static
final
String
COMMAND_LIGHT_STATUS
=
"0303"
;
public
static
final
String
COMMAND_PHASE_STAGE_CONFIG
=
"0602"
;
public
static
final
String
COMMAND_PHASE_STAGE_CONFIG
=
"0602"
;
public
static
final
String
COMMAND_PHASE_STAGE_STATUS
=
"0603"
;
public
static
final
String
COMMAND_SCHME_CONFIG
=
"0902"
;
public
static
final
String
COMMAND_SCHME_CONFIG
=
"0902"
;
public
static
final
String
COMMAND_DAILYPLAN_CONFIG
=
"0b02"
;
public
static
final
String
COMMAND_DAILYPLAN_CONFIG
=
"0b02"
;
public
static
final
String
COMMAND_SCHEDULE_CONFIG
=
"0c02"
;
public
static
final
String
COMMAND_SCHEDULE_CONFIG
=
"0c02"
;
public
static
final
String
COMMAND_DEVICE_STATUS
=
"0d01"
;
public
static
final
String
COMMAND_RUNNING_STATUS
=
"0d02"
;
public
static
final
String
COMMAND_RUNNING_STATUS
=
"0d02"
;
public
static
final
String
COMMAND_FAULT_LIST
=
"1002"
;
public
static
final
String
COMMAND_FAULT_LIST
=
"1001"
;
/**
/**
* 通过发送报文内容,添加报文长度,crc校验,报文头尾
* 通过发送报文内容,添加报文长度,crc校验,报文头尾
...
...
signal-utc-dt-service/src/main/java/net/wanji/com/common/enums/CommandResultSign.java
View file @
1e676e4c
...
@@ -11,13 +11,14 @@ import org.apache.commons.lang3.StringUtils;
...
@@ -11,13 +11,14 @@ import org.apache.commons.lang3.StringUtils;
public
enum
CommandResultSign
{
public
enum
CommandResultSign
{
HEARTBEAT
(
"80"
,
"heartBeatService"
),
HEARTBEAT
(
"80"
,
"heartBeatService"
),
GET_DEVICE_INFO
(
"
2001
"
,
"getDeviceInfoService"
),
GET_DEVICE_INFO
(
"
0d0120
"
,
"getDeviceInfoService"
),
GET_SIGNAL_BASE_INFO
(
"2002"
,
"getBaseInfoService"
),
GET_SIGNAL_BASE_INFO
(
"2002"
,
"getBaseInfoService"
),
GET_LIGHTS_GROUP_INFO
(
"030220"
,
"getLightsGroupInfoService"
),
GET_LIGHTS_GROUP_INFO
(
"030220"
,
"getLightsGroupInfoService"
),
GET_LIGHTS_STATUS_INFO
(
"030320"
,
"getLightsStatusInfoService"
),
GET_LIGHTS_STATUS_INFO
(
"030320"
,
"getLightsStatusInfoService"
),
GET_PHASE_INFO
(
"040220"
,
"getPhaseInfoService"
),
GET_PHASE_INFO
(
"040220"
,
"getPhaseInfoService"
),
GET_DETECTOR_INFO
(
"2005"
,
"getDetectorInfoService"
),
GET_DETECTOR_INFO
(
"2005"
,
"getDetectorInfoService"
),
GET_STAGE_INFO
(
"060220"
,
"getStageInfoService"
),
GET_STAGE_INFO
(
"060220"
,
"getStageInfoService"
),
GET_STAGE_STATUS
(
"060320"
,
"getStageStatusService"
),
GET_PHASE_SECURITY_INFO
(
"2007"
,
"getPhaseSecurityInfoService"
),
GET_PHASE_SECURITY_INFO
(
"2007"
,
"getPhaseSecurityInfoService"
),
GET_SCHEME_INFO
(
"090220"
,
"getSchemeInfoService"
),
GET_SCHEME_INFO
(
"090220"
,
"getSchemeInfoService"
),
GET_DAILY_PLAN_INFO
(
"0b0220"
,
"getDailyPlanInfoService"
),
GET_DAILY_PLAN_INFO
(
"0b0220"
,
"getDailyPlanInfoService"
),
...
...
signal-utc-dt-service/src/main/java/net/wanji/com/common/enums/ControlTypeEnum.java
0 → 100644
View file @
1e676e4c
package
net
.
wanji
.
com
.
common
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.lang3.StringUtils
;
/**
* @author duanruiming
* @date 2023/06/19 10:07
*/
@Getter
@AllArgsConstructor
@RequiredArgsConstructor
public
enum
ControlTypeEnum
{
FIXED_CYCLE
(
1
,
"0021"
,
"定周期"
),
GREEN_WAVE
(
2
,
"0032"
,
"全红"
),
YELLOW_CONTROL
(
3
,
"0031"
,
"黄闪"
),
RED_CONTROL
(
4
,
"0015"
,
"锁定 --> 中心手动控制"
),
CLOSED_CONTROL
(
5
,
"0012"
,
"中心优化"
),
SELF_CONTROL
(
6
,
"0013"
,
"MEC优化"
),
FULL_INDUCTION
(
7
,
"0021"
,
"现场手动"
);
private
Integer
wjControl
;
private
String
dtControlHex
;
private
String
message
;
public
static
Integer
getWjControlType
(
String
dtControlHex
)
{
for
(
ControlTypeEnum
value
:
ControlTypeEnum
.
values
())
{
if
(
StringUtils
.
equals
(
dtControlHex
,
value
.
getDtControlHex
()))
{
return
value
.
getWjControl
();
}
}
return
null
;
}
}
signal-utc-dt-service/src/main/java/net/wanji/com/common/enums/PhaseLightColorEnum.java
0 → 100644
View file @
1e676e4c
package
net
.
wanji
.
com
.
common
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.lang3.StringUtils
;
/**
* @author duanruiming
* @date 2023/06/19 16:27
*/
@Getter
@AllArgsConstructor
@RequiredArgsConstructor
public
enum
PhaseLightColorEnum
{
LIGHT_OFF
(
"01"
,
"off"
,
"关灯"
),
LIGHT_RED
(
"10"
,
"red"
,
"红灯"
),
LIGHT_RED_FLASH
(
"11"
,
"red"
,
"红闪"
),
LIGHT_RED_FAST_FLASH
(
"12"
,
"red"
,
"红快闪"
),
LIGHT_GREEN
(
"20"
,
"green"
,
"绿灯"
),
LIGHT_GREEN_FLASH
(
"21"
,
"green"
,
"绿闪"
),
LIGHT_GREEN_FAST_FLASH
(
"22"
,
"green"
,
"率快闪"
),
LIGHT_YELLOW
(
"30"
,
"yellow"
,
"黄灯"
),
LIGHT_YELLOW_FLASH
(
"31"
,
"yellow"
,
"黄闪"
),
LIGHT_YELLOW_FAST_FLASH
(
"32"
,
"yellow"
,
"黄快闪"
),
LIGHT_RED_YELLOW
(
"40"
,
"redYellow"
,
"红黄灯"
);
private
String
dtLightColor
;
private
String
wjLightColor
;
private
String
message
;
public
static
String
getWjLightColor
(
String
dtLightColor
)
{
for
(
PhaseLightColorEnum
value
:
PhaseLightColorEnum
.
values
())
{
if
(
StringUtils
.
equals
(
dtLightColor
,
value
.
getDtLightColor
()))
{
return
value
.
getWjLightColor
();
}
}
return
null
;
}
}
signal-utc-dt-service/src/main/java/net/wanji/com/controller/SignalStatusController.java
View file @
1e676e4c
...
@@ -42,11 +42,9 @@ public class SignalStatusController {
...
@@ -42,11 +42,9 @@ public class SignalStatusController {
@ApiResponses
({
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SignalStatusLogPO
.
class
)
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
SignalStatusLogPO
.
class
)
})
})
public
JsonViewObject
runningStatusAlarm
()
{
public
JsonViewObject
runningStatusAlarm
(
String
crossId
)
{
List
<
SignalStatusLogPO
>
signalStatusLogPOList
=
signalStatusService
.
runningStatusAlarm
();
List
<
SignalStatusLogPO
>
signalStatusLogPOList
=
signalStatusService
.
runningStatusAlarm
(
crossId
);
signalStatusService
.
runningStatusAlarm
(
"12F7L08J8S0"
);
return
JsonViewObject
.
newInstance
().
success
(
signalStatusLogPOList
);
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
(
signalStatusLogPOList
);
}
}
...
@@ -57,8 +55,8 @@ public class SignalStatusController {
...
@@ -57,8 +55,8 @@ public class SignalStatusController {
@ApiResponses
({
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
LightsStatusVO
.
class
)
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
LightsStatusVO
.
class
)
})
})
public
JsonViewObject
lightStatus
()
{
public
JsonViewObject
lightStatus
(
String
crossId
)
{
List
<
LightsStatusVO
>
lightsStatusVOList
=
signalStatusService
.
lightStatus
();
List
<
LightsStatusVO
>
lightsStatusVOList
=
signalStatusService
.
lightStatus
(
crossId
);
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
return
jsonViewObject
.
success
(
lightsStatusVOList
);
return
jsonViewObject
.
success
(
lightsStatusVOList
);
}
}
...
...
signal-utc-dt-service/src/main/java/net/wanji/com/netty/response/impl/get/GetStageStatusService.java
0 → 100644
View file @
1e676e4c
package
net
.
wanji
.
com
.
netty
.
response
.
impl
.
get
;
import
net.wanji.com.netty.pojo.CommandPojo
;
import
net.wanji.com.netty.response.CommandResponseFactory
;
import
org.springframework.stereotype.Service
;
/**
* @author duanruiming
* @date 2023/06/19 14:27
*/
@Service
public
class
GetStageStatusService
implements
CommandResponseFactory
{
@Override
public
String
getCommandResponse
(
CommandPojo
commandPojo
)
{
return
commandPojo
.
getResponseMsg
();
}
}
signal-utc-dt-service/src/main/java/net/wanji/com/pojo/dtconvert/PhaseStageStatusPojo.java
0 → 100644
View file @
1e676e4c
package
net
.
wanji
.
com
.
pojo
.
dtconvert
;
import
lombok.Data
;
/**
* @author duanruiming
* @date 2023/06/19 14:29
*/
@Data
public
class
PhaseStageStatusPojo
{
private
Integer
phaseStageId
;
// 10 未放行 20 正在放行 30 过渡
private
String
phaseStageStatus
;
private
Integer
runningTime
;
private
Integer
remainTime
;
}
signal-utc-dt-service/src/main/java/net/wanji/com/service/controller/SignalStatusService.java
View file @
1e676e4c
...
@@ -11,8 +11,6 @@ import java.util.List;
...
@@ -11,8 +11,6 @@ import java.util.List;
*/
*/
public
interface
SignalStatusService
extends
BeanMarkService
{
public
interface
SignalStatusService
extends
BeanMarkService
{
List
<
SignalStatusLogPO
>
runningStatusAlarm
();
/**
/**
* todo 提供给其他平台,需要确认以厂商还是以路口形式推送数据
* todo 提供给其他平台,需要确认以厂商还是以路口形式推送数据
*
*
...
@@ -21,7 +19,5 @@ public interface SignalStatusService extends BeanMarkService {
...
@@ -21,7 +19,5 @@ public interface SignalStatusService extends BeanMarkService {
*/
*/
List
<
SignalStatusLogPO
>
runningStatusAlarm
(
String
crossId
);
List
<
SignalStatusLogPO
>
runningStatusAlarm
(
String
crossId
);
List
<
LightsStatusVO
>
lightStatus
();
List
<
LightsStatusVO
>
lightStatus
(
String
crossId
);
List
<
LightsStatusVO
>
lightStatus
(
String
crossId
);
}
}
signal-utc-dt-service/src/main/java/net/wanji/com/service/controller/impl/DTSignalStatusServiceImpl.java
View file @
1e676e4c
...
@@ -2,10 +2,13 @@ package net.wanji.com.service.controller.impl;
...
@@ -2,10 +2,13 @@ package net.wanji.com.service.controller.impl;
import
cn.hutool.core.util.HexUtil
;
import
cn.hutool.core.util.HexUtil
;
import
net.wanji.com.cache.CrossInfoCache
;
import
net.wanji.com.cache.CrossInfoCache
;
import
net.wanji.com.cache.SignalDataCache
;
import
net.wanji.com.common.constants.Constants
;
import
net.wanji.com.common.constants.Constants
;
import
net.wanji.com.common.enums.ControlModelEnum
;
import
net.wanji.com.common.enums.ControlTypeEnum
;
import
net.wanji.com.common.enums.PhaseLightColorEnum
;
import
net.wanji.com.netty.NettyClient
;
import
net.wanji.com.netty.NettyClient
;
import
net.wanji.com.pojo.dtconvert.FaultInfoPojo
;
import
net.wanji.com.pojo.dtconvert.*
;
import
net.wanji.com.pojo.dtconvert.RunningStatusPojo
;
import
net.wanji.com.pojo.netty.MessageResultPojo
;
import
net.wanji.com.pojo.netty.MessageResultPojo
;
import
net.wanji.com.service.controller.SignalStatusService
;
import
net.wanji.com.service.controller.SignalStatusService
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.enums.BaseEnum
;
...
@@ -14,11 +17,11 @@ import net.wanji.databus.po.SignalStatusLogPO;
...
@@ -14,11 +17,11 @@ import net.wanji.databus.po.SignalStatusLogPO;
import
net.wanji.databus.vo.LightsStatusVO
;
import
net.wanji.databus.vo.LightsStatusVO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.Objects
;
/**
/**
* @author duanruiming
* @author duanruiming
...
@@ -35,17 +38,31 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
...
@@ -35,17 +38,31 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
return
BaseEnum
.
VendorTypeEnum
.
DT
.
getNick
();
return
BaseEnum
.
VendorTypeEnum
.
DT
.
getNick
();
}
}
@Override
public
List
<
SignalStatusLogPO
>
runningStatusAlarm
()
{
return
null
;
}
@Override
@Override
public
List
<
SignalStatusLogPO
>
runningStatusAlarm
(
String
crossId
)
{
public
List
<
SignalStatusLogPO
>
runningStatusAlarm
(
String
crossId
)
{
List
<
FaultInfoPojo
>
faultInfoPojos
=
getFaultInfoPojos
(
crossId
);
List
<
String
>
lightsStatus
=
getLightsStausInfoPojos
(
crossId
);
List
<
String
>
lightsStatus
=
getLightsStausInfoPojos
(
crossId
);
List
<
FaultInfoPojo
>
faultInfoPojos
=
getFaultInfoPojos
(
crossId
);
List
<
RunningStatusPojo
>
runningStatusPojos
=
getRunningStatusPojos
(
crossId
);
List
<
RunningStatusPojo
>
runningStatusPojos
=
getRunningStatusPojos
(
crossId
);
return
null
;
return
getSignalStatus
(
crossId
,
faultInfoPojos
,
runningStatusPojos
);
}
private
List
<
SignalStatusLogPO
>
getSignalStatus
(
String
crossId
,
List
<
FaultInfoPojo
>
faultInfoPojos
,
List
<
RunningStatusPojo
>
runningStatusPojos
)
{
List
<
SignalStatusLogPO
>
signalStatusLogPOS
=
new
ArrayList
<>();
for
(
RunningStatusPojo
runningStatusPojo
:
runningStatusPojos
)
{
SignalStatusLogPO
signalStatusLogPO
=
new
SignalStatusLogPO
();
signalStatusLogPO
.
setCrossId
(
crossId
);
signalStatusLogPO
.
setSignalId
(
crossId
);
signalStatusLogPO
.
setStatus
(
1
);
if
(
CollectionUtils
.
isEmpty
(
faultInfoPojos
))
{
signalStatusLogPO
.
setFaultType
(
0
);
}
else
{
signalStatusLogPO
.
setFaultType
(
1
);
}
signalStatusLogPO
.
setControlType
(
ControlTypeEnum
.
getWjControlType
(
runningStatusPojo
.
getControlMode
()));
signalStatusLogPOS
.
add
(
signalStatusLogPO
);
}
return
signalStatusLogPOS
;
}
}
private
List
<
RunningStatusPojo
>
getRunningStatusPojos
(
String
crossId
)
{
private
List
<
RunningStatusPojo
>
getRunningStatusPojos
(
String
crossId
)
{
...
@@ -90,7 +107,7 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
...
@@ -90,7 +107,7 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
String
body
=
hexMessageResult
.
substring
(
32
,
hexMessageResult
.
length
()
-
2
);
String
body
=
hexMessageResult
.
substring
(
32
,
hexMessageResult
.
length
()
-
2
);
int
lightsStatusSize
=
body
.
length
()
/
14
;
int
lightsStatusSize
=
body
.
length
()
/
14
;
for
(
int
i
=
0
;
i
<
lightsStatusSize
;
i
++)
{
for
(
int
i
=
0
;
i
<
lightsStatusSize
;
i
++)
{
String
param
=
body
.
substring
(
i
*
14
+
8
,
i
*
14
+
10
);
String
param
=
body
.
substring
(
i
*
14
+
8
,
i
*
14
+
10
);
if
(!
StringUtils
.
equalsIgnoreCase
(
"00"
,
param
))
{
if
(!
StringUtils
.
equalsIgnoreCase
(
"00"
,
param
))
{
lightsStatusList
.
add
(
param
);
lightsStatusList
.
add
(
param
);
}
}
...
@@ -99,12 +116,6 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
...
@@ -99,12 +116,6 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
return
lightsStatusList
;
return
lightsStatusList
;
}
}
public
static
void
main
(
String
[]
args
)
{
String
message
=
String
.
format
(
"010001000000010001%s010105%s020000"
,
Constants
.
COMMAND_QUERY
,
Constants
.
COMMAND_FAULT_LIST
);
String
faultHex
=
Constants
.
buildMessage
(
message
);
System
.
err
.
println
(
faultHex
);
}
private
List
<
FaultInfoPojo
>
getFaultInfoPojos
(
String
crossId
)
{
private
List
<
FaultInfoPojo
>
getFaultInfoPojos
(
String
crossId
)
{
CrossInfoPO
crossInfoPO
=
crossInfoCache
.
getCrossInfoCache
().
get
(
crossId
);
CrossInfoPO
crossInfoPO
=
crossInfoCache
.
getCrossInfoCache
().
get
(
crossId
);
String
message
=
String
.
format
(
Constants
.
COMMAND_COMMON
,
Constants
.
COMMAND_QUERY
,
Constants
.
COMMAND_FAULT_LIST
);
String
message
=
String
.
format
(
Constants
.
COMMAND_COMMON
,
Constants
.
COMMAND_QUERY
,
Constants
.
COMMAND_FAULT_LIST
);
...
@@ -128,12 +139,103 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
...
@@ -128,12 +139,103 @@ public class DTSignalStatusServiceImpl implements SignalStatusService {
}
}
@Override
@Override
public
List
<
LightsStatusVO
>
lightStatus
()
{
public
List
<
LightsStatusVO
>
lightStatus
(
String
crossId
)
{
return
null
;
List
<
String
>
lightsStatus
=
getLightsStausInfoPojos
(
crossId
);
List
<
PhaseStageStatusPojo
>
phaseStageStatusPojos
=
getePhaseStageStatus
(
crossId
);
List
<
RunningStatusPojo
>
runningStatusPojos
=
getRunningStatusPojos
(
crossId
);
return
getLightsStatusVOs
(
crossId
,
lightsStatus
,
phaseStageStatusPojos
,
runningStatusPojos
);
}
}
@Override
private
List
<
PhaseStageStatusPojo
>
getePhaseStageStatus
(
String
crossId
)
{
public
List
<
LightsStatusVO
>
lightStatus
(
String
crossId
)
{
List
<
PhaseStageStatusPojo
>
phaseStageStatusPojos
=
new
ArrayList
<>();
return
null
;
CrossInfoPO
crossInfoPO
=
crossInfoCache
.
getCrossInfoCache
().
get
(
crossId
);
String
message
=
String
.
format
(
Constants
.
COMMAND_COMMON
,
Constants
.
COMMAND_QUERY
,
Constants
.
COMMAND_PHASE_STAGE_STATUS
);
String
stageStatusSign
=
Constants
.
COMMAND_PHASE_STAGE_STATUS
.
concat
(
Constants
.
COMMAND_QUERY_REPLY
);
String
stageStatusHex
=
Constants
.
buildMessage
(
message
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
crossInfoPO
.
getIp
(),
crossInfoPO
.
getPort
(),
stageStatusHex
,
stageStatusSign
,
300
);
if
(
Objects
.
nonNull
(
resultPojo
)
&&
StringUtils
.
isNotBlank
(
resultPojo
.
getHexMessageResult
()))
{
String
hexMessageResult
=
resultPojo
.
getHexMessageResult
();
String
body
=
hexMessageResult
.
substring
(
32
,
hexMessageResult
.
length
()
-
2
);
int
size
=
body
.
length
()
/
14
;
String
matchStr
=
"0603%s%s"
;
int
index
=
0
;
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
PhaseStageStatusPojo
phaseStageStatusPojo
=
new
PhaseStageStatusPojo
();
for
(
int
j
=
2
;
j
<
5
;
j
++)
{
String
currentMatchStr
=
String
.
format
(
matchStr
,
String
.
format
(
"%02x"
,
j
),
String
.
format
(
"%02x"
,
i
+
1
));
index
=
body
.
indexOf
(
currentMatchStr
)
+
8
;
if
(
j
==
2
)
{
String
stageStatus
=
body
.
substring
(
index
,
index
+
2
);
phaseStageStatusPojo
.
setPhaseStageStatus
(
stageStatus
);
}
if
(
j
==
3
)
{
phaseStageStatusPojo
.
setRunningTime
(
HexUtil
.
hexToInt
(
body
.
substring
(
index
,
index
+
4
)));
}
if
(
j
==
4
)
{
phaseStageStatusPojo
.
setRemainTime
(
HexUtil
.
hexToInt
(
body
.
substring
(
index
,
index
+
4
)));
}
}
phaseStageStatusPojo
.
setPhaseStageId
(
i
+
1
);
phaseStageStatusPojos
.
add
(
phaseStageStatusPojo
);
}
}
return
phaseStageStatusPojos
.
stream
().
filter
(
phaseStageStatusPojo
->
!
StringUtils
.
equals
(
phaseStageStatusPojo
.
getPhaseStageStatus
(),
"10"
)).
collect
(
Collectors
.
toList
());
}
private
List
<
LightsStatusVO
>
getLightsStatusVOs
(
String
crossId
,
List
<
String
>
lightsStatus
,
List
<
PhaseStageStatusPojo
>
phaseStageStatusPojos
,
List
<
RunningStatusPojo
>
runningStatusPojos
)
{
List
<
LightsStatusVO
>
lightsStatusVOS
=
new
ArrayList
<>(
runningStatusPojos
.
size
());
for
(
RunningStatusPojo
runningStatusPojo
:
runningStatusPojos
)
{
LightsStatusVO
lightsStatusVO
=
new
LightsStatusVO
();
String
controlModel
=
String
.
valueOf
(
ControlModelEnum
.
getWjControlMode
(
runningStatusPojo
.
getControlMode
().
substring
(
2
,
4
)));
lightsStatusVO
.
setCrossId
(
crossId
);
lightsStatusVO
.
setRunMode
(
controlModel
);
lightsStatusVO
.
setControlMode
(
controlModel
);
PhaseStageStatusPojo
phaseStageStatusPojo
=
null
;
if
(!
CollectionUtils
.
isEmpty
(
phaseStageStatusPojos
))
{
phaseStageStatusPojo
=
phaseStageStatusPojos
.
get
(
0
);
}
lightsStatusVO
.
setCycleCountDown
(
phaseStageStatusPojo
.
getRemainTime
());
// 相位剩余时长
Integer
currentSchemeId
=
runningStatusPojo
.
getSchemeId
();
Integer
currentPhaseStageId
=
runningStatusPojo
.
getPhaseStageId
();
List
<
SchemeInfoPojo
>
schemeInfoPojos
=
SignalDataCache
.
schemeInfoCache
.
get
(
crossId
);
if
(!
CollectionUtils
.
isEmpty
(
schemeInfoPojos
))
{
for
(
SchemeInfoPojo
schemeInfoPojo
:
schemeInfoPojos
)
{
if
(
Objects
.
equals
(
schemeInfoPojo
.
getSchemeId
(),
currentSchemeId
))
{
lightsStatusVO
.
setPlanId
(
String
.
valueOf
(
currentSchemeId
));
lightsStatusVO
.
setCycleLen
(
schemeInfoPojo
.
getCycle
());
List
<
SchemeInfoPojo
.
SchemeStagePojo
>
stageInfoList
=
SchemeInfoPojo
.
getStageInfoList
(
schemeInfoPojo
);
List
<
PhaseStageInfoPojo
>
phaseStageInfoPojos
=
SignalDataCache
.
phaseStageInfoCache
.
get
(
crossId
);
if
(!
CollectionUtils
.
isEmpty
(
phaseStageInfoPojos
))
{
for
(
PhaseStageInfoPojo
phaseStageInfoPojo
:
phaseStageInfoPojos
)
{
if
(
Objects
.
equals
(
phaseStageInfoPojo
.
getPhaseStageId
(),
currentPhaseStageId
))
{
List
<
Integer
>
phaseList
=
phaseStageInfoPojo
.
getPhaseList
();
String
phaseId
=
StringUtils
.
join
(
phaseList
,
"|"
);
lightsStatusVO
.
setPhaseId
(
phaseId
);
}
}
}
Map
<
String
,
Object
>
dirLampGroupMap
=
new
HashMap
<>();
if
(!
CollectionUtils
.
isEmpty
(
lightsStatus
))
{
for
(
int
i
=
0
;
i
<
lightsStatus
.
size
();
i
++)
{
String
wjLightColor
=
PhaseLightColorEnum
.
getWjLightColor
(
lightsStatus
.
get
(
i
));
List
<
PhaseInfoPojo
>
phaseInfoPojos
=
SignalDataCache
.
phaseInfoCache
.
get
(
crossId
);
if
(!
CollectionUtils
.
isEmpty
(
phaseInfoPojos
))
{
for
(
PhaseInfoPojo
phaseInfoPojo
:
phaseInfoPojos
)
{
if
(
Objects
.
equals
(
phaseInfoPojo
.
getLightsId
(),
i
+
1
))
{
Integer
phaseId
=
phaseInfoPojo
.
getPhaseId
();
dirLampGroupMap
.
put
(
String
.
valueOf
(
phaseId
),
wjLightColor
);
}
}
}
}
}
lightsStatusVO
.
setDirLampGroupMap
(
dirLampGroupMap
);
}
}
}
lightsStatusVOS
.
add
(
lightsStatusVO
);
}
return
lightsStatusVOS
;
}
}
}
}
signal-utc-dt-service/src/main/java/net/wanji/com/service/controller/impl/DTStaticInfoServiceImpl.java
View file @
1e676e4c
...
@@ -4,6 +4,7 @@ import cn.hutool.core.util.HexUtil;
...
@@ -4,6 +4,7 @@ import cn.hutool.core.util.HexUtil;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.com.cache.CrossInfoCache
;
import
net.wanji.com.cache.CrossInfoCache
;
import
net.wanji.com.cache.SignalDataCache
;
import
net.wanji.com.common.constants.Constants
;
import
net.wanji.com.common.constants.Constants
;
import
net.wanji.com.common.enums.ControlModelEnum
;
import
net.wanji.com.common.enums.ControlModelEnum
;
import
net.wanji.com.netty.NettyClient
;
import
net.wanji.com.netty.NettyClient
;
...
@@ -39,6 +40,7 @@ import java.util.stream.Collectors;
...
@@ -39,6 +40,7 @@ import java.util.stream.Collectors;
public
class
DTStaticInfoServiceImpl
implements
StaticInfoService
{
public
class
DTStaticInfoServiceImpl
implements
StaticInfoService
{
private
final
CrossInfoCache
crossInfoCache
;
private
final
CrossInfoCache
crossInfoCache
;
private
final
SignalDataCache
signalDataCache
;
@Override
@Override
public
String
getBeanMark
()
{
public
String
getBeanMark
()
{
...
@@ -189,16 +191,17 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
...
@@ -189,16 +191,17 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
String
schemeSign
=
Constants
.
COMMAND_SCHME_CONFIG
.
concat
(
Constants
.
COMMAND_QUERY_REPLY
);
String
schemeSign
=
Constants
.
COMMAND_SCHME_CONFIG
.
concat
(
Constants
.
COMMAND_QUERY_REPLY
);
String
schemeHex
=
Constants
.
buildMessage
(
message
);
String
schemeHex
=
Constants
.
buildMessage
(
message
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
crossInfo
.
getIp
(),
crossInfo
.
getPort
(),
schemeHex
,
schemeSign
,
300
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
crossInfo
.
getIp
(),
crossInfo
.
getPort
(),
schemeHex
,
schemeSign
,
300
);
return
getSchemeInfoPojos
(
resultPojo
);
return
getSchemeInfoPojos
(
crossInfo
,
resultPojo
);
}
}
private
List
<
SchemeInfoPojo
>
getSchemeInfoPojos
(
MessageResultPojo
resultPojo
)
{
private
List
<
SchemeInfoPojo
>
getSchemeInfoPojos
(
CrossInfoPO
crossInfo
,
MessageResultPojo
resultPojo
)
{
List
<
SchemeInfoPojo
>
schemeInfoPojos
=
new
ArrayList
<>();
List
<
SchemeInfoPojo
>
schemeInfoPojos
=
new
ArrayList
<>();
if
(
Objects
.
nonNull
(
resultPojo
)
&&
StringUtils
.
isNotBlank
(
resultPojo
.
getHexMessageResult
()))
{
if
(
Objects
.
nonNull
(
resultPojo
)
&&
StringUtils
.
isNotBlank
(
resultPojo
.
getHexMessageResult
()))
{
String
hexMessageResult
=
resultPojo
.
getHexMessageResult
();
String
hexMessageResult
=
resultPojo
.
getHexMessageResult
();
Map
<
Integer
,
List
<
String
>>
schemeIdParamMap
=
getSchemeIdParamMap
(
hexMessageResult
);
Map
<
Integer
,
List
<
String
>>
schemeIdParamMap
=
getSchemeIdParamMap
(
hexMessageResult
);
schemeInfoPojos
=
paramMapConvert
(
schemeIdParamMap
);
schemeInfoPojos
=
paramMapConvert
(
schemeIdParamMap
);
}
}
SignalDataCache
.
schemeInfoCache
.
put
(
crossInfo
.
getId
(),
schemeInfoPojos
);
return
schemeInfoPojos
;
return
schemeInfoPojos
;
}
}
...
@@ -289,10 +292,10 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
...
@@ -289,10 +292,10 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
String
phaseStageSign
=
Constants
.
COMMAND_PHASE_STAGE_CONFIG
.
concat
(
Constants
.
COMMAND_QUERY_REPLY
);
String
phaseStageSign
=
Constants
.
COMMAND_PHASE_STAGE_CONFIG
.
concat
(
Constants
.
COMMAND_QUERY_REPLY
);
String
phaseStageHex
=
Constants
.
buildMessage
(
message
);
String
phaseStageHex
=
Constants
.
buildMessage
(
message
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
crossInfo
.
getIp
(),
crossInfo
.
getPort
(),
phaseStageHex
,
phaseStageSign
,
300
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
crossInfo
.
getIp
(),
crossInfo
.
getPort
(),
phaseStageHex
,
phaseStageSign
,
300
);
return
getPhaseStageInfoPojos
(
resultPojo
);
return
getPhaseStageInfoPojos
(
crossInfo
,
resultPojo
);
}
}
private
List
<
PhaseStageInfoPojo
>
getPhaseStageInfoPojos
(
MessageResultPojo
resultPojo
)
{
private
List
<
PhaseStageInfoPojo
>
getPhaseStageInfoPojos
(
CrossInfoPO
crossInfo
,
MessageResultPojo
resultPojo
)
{
List
<
PhaseStageInfoPojo
>
phaseStageInfoPojos
=
new
ArrayList
<>();
List
<
PhaseStageInfoPojo
>
phaseStageInfoPojos
=
new
ArrayList
<>();
if
(
Objects
.
nonNull
(
resultPojo
)
&&
StringUtils
.
isNotBlank
(
resultPojo
.
getHexMessageResult
()))
{
if
(
Objects
.
nonNull
(
resultPojo
)
&&
StringUtils
.
isNotBlank
(
resultPojo
.
getHexMessageResult
()))
{
String
hexMessageResult
=
resultPojo
.
getHexMessageResult
();
String
hexMessageResult
=
resultPojo
.
getHexMessageResult
();
...
@@ -322,6 +325,7 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
...
@@ -322,6 +325,7 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
phaseStageInfoPojos
.
add
(
phaseStageInfoPojo
);
phaseStageInfoPojos
.
add
(
phaseStageInfoPojo
);
}
}
}
}
SignalDataCache
.
phaseStageInfoCache
.
put
(
crossInfo
.
getId
(),
phaseStageInfoPojos
);
return
phaseStageInfoPojos
;
return
phaseStageInfoPojos
;
}
}
...
@@ -362,10 +366,10 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
...
@@ -362,10 +366,10 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
String
phaseHex
=
Constants
.
buildMessage
(
message
);
String
phaseHex
=
Constants
.
buildMessage
(
message
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
crossInfo
.
getIp
(),
crossInfo
.
getPort
(),
phaseHex
,
phaseResultSign
,
300
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
crossInfo
.
getIp
(),
crossInfo
.
getPort
(),
phaseHex
,
phaseResultSign
,
300
);
Map
<
Integer
,
List
<
String
>>
phaseIdParamsMap
=
getHexPhaseParamMap
(
resultPojo
);
Map
<
Integer
,
List
<
String
>>
phaseIdParamsMap
=
getHexPhaseParamMap
(
resultPojo
);
return
getPhaseInfoPojos
(
phaseIdParamsMap
);
return
getPhaseInfoPojos
(
crossInfo
,
phaseIdParamsMap
);
}
}
private
static
List
<
PhaseInfoPojo
>
getPhaseInfoPojos
(
Map
<
Integer
,
List
<
String
>>
phaseIdParamsMap
)
{
private
static
List
<
PhaseInfoPojo
>
getPhaseInfoPojos
(
CrossInfoPO
crossInfo
,
Map
<
Integer
,
List
<
String
>>
phaseIdParamsMap
)
{
List
<
PhaseInfoPojo
>
phaseInfoPojos
=
new
ArrayList
<>();
List
<
PhaseInfoPojo
>
phaseInfoPojos
=
new
ArrayList
<>();
for
(
Map
.
Entry
<
Integer
,
List
<
String
>>
item
:
phaseIdParamsMap
.
entrySet
())
{
for
(
Map
.
Entry
<
Integer
,
List
<
String
>>
item
:
phaseIdParamsMap
.
entrySet
())
{
PhaseInfoPojo
phaseInfoPojo
=
new
PhaseInfoPojo
();
PhaseInfoPojo
phaseInfoPojo
=
new
PhaseInfoPojo
();
...
@@ -395,7 +399,9 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
...
@@ -395,7 +399,9 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
}
}
}
}
// 过滤掉未配置的相位
// 过滤掉未配置的相位
return
phaseInfoPojos
.
stream
().
filter
(
phaseInfoPojo
->
phaseInfoPojo
.
getRedTime
()
!=
0
).
collect
(
Collectors
.
toList
());
List
<
PhaseInfoPojo
>
filter
=
phaseInfoPojos
.
stream
().
filter
(
phaseInfoPojo
->
phaseInfoPojo
.
getRedTime
()
!=
0
).
collect
(
Collectors
.
toList
());
SignalDataCache
.
phaseInfoCache
.
put
(
crossInfo
.
getId
(),
filter
);
return
filter
;
}
}
private
static
Map
<
Integer
,
List
<
String
>>
getHexPhaseParamMap
(
MessageResultPojo
resultPojo
)
{
private
static
Map
<
Integer
,
List
<
String
>>
getHexPhaseParamMap
(
MessageResultPojo
resultPojo
)
{
...
...
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