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
c86ce934
Commit
c86ce934
authored
Jun 14, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 日计划解析
parent
94deae49
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
164 additions
and
7 deletions
+164
-7
Constants.java
...c/main/java/net/wanji/com/common/constants/Constants.java
+3
-0
CommandResultSign.java
...in/java/net/wanji/com/common/enums/CommandResultSign.java
+2
-2
DailyPlanInfoPojo.java
.../java/net/wanji/com/pojo/dtconvert/DailyPlanInfoPojo.java
+19
-0
SchemeInfoPojo.java
...ain/java/net/wanji/com/pojo/dtconvert/SchemeInfoPojo.java
+24
-0
DTStaticInfoServiceImpl.java
.../com/service/controller/impl/DTStaticInfoServiceImpl.java
+116
-5
No files found.
signal-utc-dt-service/src/main/java/net/wanji/com/common/constants/Constants.java
View file @
c86ce934
...
@@ -22,6 +22,9 @@ public class Constants {
...
@@ -22,6 +22,9 @@ public class Constants {
public
static
final
String
COMMAND_PHASE_CONFIG
=
"0402"
;
public
static
final
String
COMMAND_PHASE_CONFIG
=
"0402"
;
public
static
final
String
COMMAND_LIGHT_CONFIG
=
"0302"
;
public
static
final
String
COMMAND_LIGHT_CONFIG
=
"0302"
;
public
static
final
String
COMMAND_PHASE_STAGE_CONFIG
=
"0602"
;
public
static
final
String
COMMAND_PHASE_STAGE_CONFIG
=
"0602"
;
public
static
final
String
COMMAND_SCHME_CONFIG
=
"0902"
;
public
static
final
String
COMMAND_DAILYPLAN_CONFIG
=
"1102"
;
/**
/**
...
...
signal-utc-dt-service/src/main/java/net/wanji/com/common/enums/CommandResultSign.java
View file @
c86ce934
...
@@ -18,8 +18,8 @@ public enum CommandResultSign {
...
@@ -18,8 +18,8 @@ public enum CommandResultSign {
GET_DETECTOR_INFO
(
"2005"
,
"getDetectorInfoService"
),
GET_DETECTOR_INFO
(
"2005"
,
"getDetectorInfoService"
),
GET_STAGE_INFO
(
"060220"
,
"getStageInfoService"
),
GET_STAGE_INFO
(
"060220"
,
"getStageInfoService"
),
GET_PHASE_SECURITY_INFO
(
"2007"
,
"getPhaseSecurityInfoService"
),
GET_PHASE_SECURITY_INFO
(
"2007"
,
"getPhaseSecurityInfoService"
),
GET_SCHEME_INFO
(
"
2009
"
,
"getSchemeInfoService"
),
GET_SCHEME_INFO
(
"
090220
"
,
"getSchemeInfoService"
),
GET_DAILY_PLAN_INFO
(
"
2011
"
,
"getDailyPlanInfoService"
),
GET_DAILY_PLAN_INFO
(
"
110220
"
,
"getDailyPlanInfoService"
),
GET_SCHEDULES_INFO
(
"2012"
,
"getSchedulesInfoService"
),
GET_SCHEDULES_INFO
(
"2012"
,
"getSchedulesInfoService"
),
GET_RUNNING_STATE_INFO
(
"2013"
,
"getRunningStateInfoService"
),
GET_RUNNING_STATE_INFO
(
"2013"
,
"getRunningStateInfoService"
),
GET_TRAFFIC_DATA_INFO
(
"2014"
,
"getTrafficDataInfoService"
),
GET_TRAFFIC_DATA_INFO
(
"2014"
,
"getTrafficDataInfoService"
),
...
...
signal-utc-dt-service/src/main/java/net/wanji/com/pojo/dtconvert/DailyPlanInfoPojo.java
0 → 100644
View file @
c86ce934
package
net
.
wanji
.
com
.
pojo
.
dtconvert
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/06/14 17:31
*/
@Data
public
class
DailyPlanInfoPojo
{
private
Integer
dailyPlanId
;
private
Integer
crossId
;
private
List
<
String
>
startTimeChain
;
private
List
<
Integer
>
schemeIdChain
;
private
List
<
Integer
>
controlModelChain
;
}
signal-utc-dt-service/src/main/java/net/wanji/com/pojo/dtconvert/SchemeInfoPojo.java
0 → 100644
View file @
c86ce934
package
net
.
wanji
.
com
.
pojo
.
dtconvert
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author duanruiming
* @date 2023/06/14 15:39
*/
@Data
public
class
SchemeInfoPojo
{
private
Integer
schemeId
;
// 所属方案序号 一台信号机控制多路口时使用
private
Integer
crossId
;
// 单位s
private
Integer
cycle
;
// 方案协调序号 需要协调的相位序号
private
Integer
harmonizeId
;
private
Integer
offset
;
private
List
<
Integer
>
phaseList
;
private
List
<
Integer
>
phaseTimeChain
;
private
List
<
Integer
>
phaseTypeChain
;
}
signal-utc-dt-service/src/main/java/net/wanji/com/service/controller/impl/DTStaticInfoServiceImpl.java
View file @
c86ce934
...
@@ -6,9 +6,7 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -6,9 +6,7 @@ import lombok.extern.slf4j.Slf4j;
import
net.wanji.com.cache.CrossInfoCache
;
import
net.wanji.com.cache.CrossInfoCache
;
import
net.wanji.com.common.constants.Constants
;
import
net.wanji.com.common.constants.Constants
;
import
net.wanji.com.netty.NettyClient
;
import
net.wanji.com.netty.NettyClient
;
import
net.wanji.com.pojo.dtconvert.LightsInfoPojo
;
import
net.wanji.com.pojo.dtconvert.*
;
import
net.wanji.com.pojo.dtconvert.PhaseInfoPojo
;
import
net.wanji.com.pojo.dtconvert.PhaseStageInfoPojo
;
import
net.wanji.com.pojo.netty.MessageResultPojo
;
import
net.wanji.com.pojo.netty.MessageResultPojo
;
import
net.wanji.com.service.controller.StaticInfoService
;
import
net.wanji.com.service.controller.StaticInfoService
;
import
net.wanji.common.enums.BaseEnum
;
import
net.wanji.common.enums.BaseEnum
;
...
@@ -56,10 +54,123 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
...
@@ -56,10 +54,123 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
List
<
PhaseInfoPojo
>
phaseInfoPojos
=
getPhaseInfo
(
crossInfo
);
List
<
PhaseInfoPojo
>
phaseInfoPojos
=
getPhaseInfo
(
crossInfo
);
List
<
LightsInfoPojo
>
lightsInfoPojos
=
getLightsInfo
(
crossInfo
);
List
<
LightsInfoPojo
>
lightsInfoPojos
=
getLightsInfo
(
crossInfo
);
List
<
PhaseStageInfoPojo
>
phaseStageInfoPojos
=
getPhaseStageInfo
(
crossInfo
);
List
<
PhaseStageInfoPojo
>
phaseStageInfoPojos
=
getPhaseStageInfo
(
crossInfo
);
List
<
SchemeInfoPojo
>
schemeInfoPojos
=
getSchemeInfo
(
crossInfo
);
List
<
DailyPlanInfoPojo
>
dailyPlanInfoPojos
=
getDailyPlanInfo
(
crossInfo
);
return
schemePhaseLightsVO
;
return
schemePhaseLightsVO
;
}
}
private
List
<
DailyPlanInfoPojo
>
getDailyPlanInfo
(
CrossInfoPO
crossInfo
)
{
String
message
=
String
.
format
(
Constants
.
COMMAND_COMMON
,
Constants
.
COMMAND_QUERY
,
Constants
.
COMMAND_DAILYPLAN_CONFIG
);
String
dailyPlanSign
=
Constants
.
COMMAND_DAILYPLAN_CONFIG
.
concat
(
Constants
.
COMMAND_QUERY_REPLY
);
String
dailyPlanHex
=
Constants
.
buildMessage
(
message
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
crossInfo
.
getIp
(),
crossInfo
.
getPort
(),
dailyPlanHex
,
dailyPlanSign
,
300
);
return
getDailyPlanPojos
(
resultPojo
);
}
private
List
<
DailyPlanInfoPojo
>
getDailyPlanPojos
(
MessageResultPojo
resultPojo
)
{
// String body = hexMessageResult.substring(32, hexMessageResult.length() - 2);
// int schemeSize = body.length() / 228;
return
null
;
}
private
List
<
SchemeInfoPojo
>
getSchemeInfo
(
CrossInfoPO
crossInfo
)
{
String
message
=
String
.
format
(
Constants
.
COMMAND_COMMON
,
Constants
.
COMMAND_QUERY
,
Constants
.
COMMAND_SCHME_CONFIG
);
String
schemeSign
=
Constants
.
COMMAND_SCHME_CONFIG
.
concat
(
Constants
.
COMMAND_QUERY_REPLY
);
String
schemeHex
=
Constants
.
buildMessage
(
message
);
MessageResultPojo
resultPojo
=
NettyClient
.
sendMessage
(
crossInfo
.
getIp
(),
crossInfo
.
getPort
(),
schemeHex
,
schemeSign
,
300
);
return
getSchemeInfoPojos
(
resultPojo
);
}
private
List
<
SchemeInfoPojo
>
getSchemeInfoPojos
(
MessageResultPojo
resultPojo
)
{
List
<
SchemeInfoPojo
>
schemeInfoPojos
=
new
ArrayList
<>();
if
(
Objects
.
nonNull
(
resultPojo
)
&&
StringUtils
.
isNotBlank
(
resultPojo
.
getHexMessageResult
()))
{
String
hexMessageResult
=
resultPojo
.
getHexMessageResult
();
Map
<
Integer
,
List
<
String
>>
schemeIdParamMap
=
getSchemeIdParamMap
(
hexMessageResult
);
schemeInfoPojos
=
paramMapConvert
(
schemeIdParamMap
);
}
return
schemeInfoPojos
;
}
private
List
<
SchemeInfoPojo
>
paramMapConvert
(
Map
<
Integer
,
List
<
String
>>
schemeIdParamMap
)
{
List
<
SchemeInfoPojo
>
schemeInfoPojos
=
new
ArrayList
<>();
for
(
Map
.
Entry
<
Integer
,
List
<
String
>>
entry
:
schemeIdParamMap
.
entrySet
())
{
SchemeInfoPojo
schemeInfoPojo
=
new
SchemeInfoPojo
();
Integer
schemeId
=
entry
.
getKey
();
schemeInfoPojo
.
setSchemeId
(
schemeId
);
List
<
String
>
value
=
entry
.
getValue
();
schemeInfoPojo
.
setCrossId
(
HexUtil
.
hexToInt
(
value
.
get
(
0
)));
schemeInfoPojo
.
setCycle
(
HexUtil
.
hexToInt
(
value
.
get
(
1
)));
schemeInfoPojo
.
setHarmonizeId
(
HexUtil
.
hexToInt
(
value
.
get
(
2
)));
schemeInfoPojo
.
setOffset
(
HexUtil
.
hexToInt
(
value
.
get
(
3
)));
String
phaseChainHex
=
value
.
get
(
4
);
List
<
Integer
>
phaseList
=
getListFromHex
(
phaseChainHex
,
2
,
"00"
);
schemeInfoPojo
.
setPhaseList
(
phaseList
);
String
phaseTimeChainHex
=
value
.
get
(
5
);
List
<
Integer
>
phaseTimeList
=
getListFromHex
(
phaseTimeChainHex
,
4
,
"0000"
);
schemeInfoPojo
.
setPhaseTimeChain
(
phaseTimeList
);
String
phaseTypeChainHex
=
value
.
get
(
6
);
List
<
Integer
>
phaseTypeList
=
getListFromHex
(
phaseTypeChainHex
,
2
,
"00"
);
schemeInfoPojo
.
setPhaseTypeChain
(
phaseTypeList
);
schemeInfoPojos
.
add
(
schemeInfoPojo
);
}
return
schemeInfoPojos
.
stream
().
filter
(
schemeInfoPojo
->
schemeInfoPojo
.
getCycle
()
!=
0
).
collect
(
Collectors
.
toList
());
}
/**
* 通用处理字符串多字节转int,固定长度
* 00000000000000000000000008070605 ==> 5 6 7 8
*
* @param hex
* @param offset
* @param ignoreStr
* @return
*/
public
static
List
<
Integer
>
getListFromHex
(
String
hex
,
int
offset
,
String
ignoreStr
)
{
List
<
Integer
>
list
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
hex
.
length
()
/
offset
;
i
++)
{
String
phaseTypeHex
=
hex
.
substring
(
i
*
offset
,
i
*
offset
+
offset
);
if
(!
StringUtils
.
equals
(
ignoreStr
,
phaseTypeHex
))
{
list
.
add
(
HexUtil
.
hexToInt
(
phaseTypeHex
));
}
}
return
list
;
}
private
static
Map
<
Integer
,
List
<
String
>>
getSchemeIdParamMap
(
String
hexMessageResult
)
{
String
body
=
hexMessageResult
.
substring
(
32
,
hexMessageResult
.
length
()
-
2
);
int
schemeSize
=
body
.
length
()
/
228
;
String
matchStr
=
"0902%s%s"
;
int
schemeId
=
0
;
Map
<
Integer
,
List
<
String
>>
schemeIdParamMap
=
new
HashMap
<>();
for
(
int
i
=
0
;
i
<
schemeSize
;
i
++)
{
++
schemeId
;
List
<
String
>
paramList
=
new
ArrayList
<>();
// 属性ID数量
for
(
int
j
=
2
;
j
<
9
;
j
++)
{
String
currentMatchStr
=
String
.
format
(
matchStr
,
String
.
format
(
"%02x"
,
j
),
String
.
format
(
"%02x"
,
schemeId
));
int
paramStartIndex
=
body
.
indexOf
(
currentMatchStr
)
+
8
;
String
param
=
null
;
if
(
j
==
2
||
j
==
4
)
{
param
=
body
.
substring
(
paramStartIndex
,
paramStartIndex
+
2
);
}
else
if
(
j
==
3
)
{
param
=
body
.
substring
(
paramStartIndex
,
paramStartIndex
+
8
);
}
else
if
(
j
==
5
)
{
param
=
body
.
substring
(
paramStartIndex
,
paramStartIndex
+
4
);
}
else
if
(
j
==
6
||
j
==
8
)
{
param
=
body
.
substring
(
paramStartIndex
,
paramStartIndex
+
32
);
}
else
if
(
j
==
7
)
{
param
=
body
.
substring
(
paramStartIndex
,
paramStartIndex
+
64
);
}
paramList
.
add
(
param
);
}
schemeIdParamMap
.
put
(
schemeId
,
paramList
);
}
return
schemeIdParamMap
;
}
private
List
<
PhaseStageInfoPojo
>
getPhaseStageInfo
(
CrossInfoPO
crossInfo
)
{
private
List
<
PhaseStageInfoPojo
>
getPhaseStageInfo
(
CrossInfoPO
crossInfo
)
{
String
message
=
String
.
format
(
Constants
.
COMMAND_COMMON
,
Constants
.
COMMAND_QUERY
,
Constants
.
COMMAND_PHASE_STAGE_CONFIG
);
String
message
=
String
.
format
(
Constants
.
COMMAND_COMMON
,
Constants
.
COMMAND_QUERY
,
Constants
.
COMMAND_PHASE_STAGE_CONFIG
);
String
phaseStageSign
=
Constants
.
COMMAND_PHASE_STAGE_CONFIG
.
concat
(
Constants
.
COMMAND_QUERY_REPLY
);
String
phaseStageSign
=
Constants
.
COMMAND_PHASE_STAGE_CONFIG
.
concat
(
Constants
.
COMMAND_QUERY_REPLY
);
...
@@ -133,7 +244,7 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
...
@@ -133,7 +244,7 @@ public class DTStaticInfoServiceImpl implements StaticInfoService {
* @param crossInfo
* @param crossInfo
*/
*/
private
List
<
PhaseInfoPojo
>
getPhaseInfo
(
CrossInfoPO
crossInfo
)
{
private
List
<
PhaseInfoPojo
>
getPhaseInfo
(
CrossInfoPO
crossInfo
)
{
String
message
=
String
.
format
(
Constants
.
COMMAND_COMMON
,
Constants
.
COMMAND_QUERY
,
Constants
.
COMMAND_PHASE_CONFIG
);
String
message
=
String
.
format
(
Constants
.
COMMAND_COMMON
,
Constants
.
COMMAND_QUERY
,
Constants
.
COMMAND_PHASE_CONFIG
);
String
phaseResultSign
=
Constants
.
COMMAND_PHASE_CONFIG
.
concat
(
Constants
.
COMMAND_QUERY_REPLY
);
String
phaseResultSign
=
Constants
.
COMMAND_PHASE_CONFIG
.
concat
(
Constants
.
COMMAND_QUERY_REPLY
);
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
);
...
...
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