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
96949629
Commit
96949629
authored
Nov 23, 2024
by
duanruiming
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
10fbf0c0
88dd9f6a
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
258 additions
and
137 deletions
+258
-137
DiagnoServiceImpl.java
...in/java/net/wanji/opt/service/impl/DiagnoServiceImpl.java
+0
-1
ControlCommandServiceImpl.java
...i/utc/hisense/service/impl/ControlCommandServiceImpl.java
+92
-39
StaticInfoServiceImpl.java
...wanji/utc/hisense/service/impl/StaticInfoServiceImpl.java
+29
-37
HisensePhaseCountDownTask.java
...net/wanji/utc/hisense/task/HisensePhaseCountDownTask.java
+67
-58
LocalDateTimeUtil.java
...n/java/net/wanji/common/utils/tool/LocalDateTimeUtil.java
+1
-0
CrossSchemeOptLogPO.java
...ava/net/wanji/databus/dao/entity/CrossSchemeOptLogPO.java
+49
-0
CrossSchemeOptLogMapper.java
...net/wanji/databus/dao/mapper/CrossSchemeOptLogMapper.java
+13
-0
TempSchemeSendVO.java
.../src/main/java/net/wanji/databus/vo/TempSchemeSendVO.java
+1
-2
CrossSchemeOptLogMapper.xml
...bus/src/main/resources/mapper/CrossSchemeOptLogMapper.xml
+6
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/DiagnoServiceImpl.java
View file @
96949629
...
@@ -223,7 +223,6 @@ public class DiagnoServiceImpl implements DiagnoService {
...
@@ -223,7 +223,6 @@ public class DiagnoServiceImpl implements DiagnoService {
public
void
sendManual
(
SendManualDTO
sendManualDTO
)
throws
Exception
{
public
void
sendManual
(
SendManualDTO
sendManualDTO
)
throws
Exception
{
// 构造场景、策略、方法
// 构造场景、策略、方法
String
optDataExtend
=
buildOptDataExtend
(
sendManualDTO
);
String
optDataExtend
=
buildOptDataExtend
(
sendManualDTO
);
SchemeOptSendVO
schemeOptSendVO
=
new
SchemeOptSendVO
();
SchemeOptSendVO
schemeOptSendVO
=
new
SchemeOptSendVO
();
schemeOptSendVO
.
setDataExtend
(
optDataExtend
);
schemeOptSendVO
.
setDataExtend
(
optDataExtend
);
Integer
optTypeInt
=
sendManualDTO
.
getOptType
();
Integer
optTypeInt
=
sendManualDTO
.
getOptType
();
...
...
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/impl/ControlCommandServiceImpl.java
View file @
96949629
package
net
.
wanji
.
utc
.
hisense
.
service
.
impl
;
package
net
.
wanji
.
utc
.
hisense
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.RequiredArgsConstructor
;
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.StringUtils
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.databus.dao.mapper.CrossInfoMapper
;
import
net.wanji.databus.dto.CrossSchemeRingsDTO
;
import
net.wanji.databus.dto.ExtendPhaseDTO
;
import
net.wanji.databus.dto.ExtendPhaseDTO
;
import
net.wanji.databus.dto.StepingPhaseDTO
;
import
net.wanji.databus.dto.StepingPhaseDTO
;
import
net.wanji.databus.po.CrossInfoPOExt
;
import
net.wanji.databus.po.CrossInfoPOExt
;
import
net.wanji.databus.vo.TempSchemeSendVO
;
import
net.wanji.databus.dao.mapper.CrossInfoMapper
;
import
net.wanji.databus.vo.*
;
import
net.wanji.databus.vo.*
;
import
net.wanji.utc.hisense.common.OperationBaseDom
;
import
net.wanji.utc.hisense.common.OperationBaseDom
;
import
net.wanji.utc.hisense.common.constants.HttpConstants
;
import
net.wanji.utc.hisense.common.constants.HttpConstants
;
import
net.wanji.utc.hisense.pojo.dto.RingPhaseDTO
;
import
net.wanji.utc.hisense.pojo.dto.StagePhaseDTO
;
import
net.wanji.utc.hisense.pojo.result.CrossSchemeRings
;
import
net.wanji.utc.hisense.service.ControlCommandService
;
import
net.wanji.utc.hisense.service.ControlCommandService
;
import
net.wanji.utc.hisense.service.StaticInfoService
;
import
net.wanji.utc.hisense.util.OkHttpClientUtil
;
import
net.wanji.utc.hisense.util.OkHttpClientUtil
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.dom4j.Document
;
import
org.dom4j.Document
;
...
@@ -23,6 +28,9 @@ import org.springframework.beans.factory.annotation.Value;
...
@@ -23,6 +28,9 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
/**
/**
* @author duanruiming
* @author duanruiming
...
@@ -36,6 +44,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -36,6 +44,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
private
String
hisenseUrl
;
private
String
hisenseUrl
;
@Resource
@Resource
private
CrossInfoMapper
crossInfoMapper
;
private
CrossInfoMapper
crossInfoMapper
;
@Resource
private
StaticInfoService
staticInfoService
;
@Override
@Override
public
JsonViewObject
schemeSend
(
SchemeSendVO
schemeSendVO
)
throws
Exception
{
public
JsonViewObject
schemeSend
(
SchemeSendVO
schemeSendVO
)
throws
Exception
{
...
@@ -295,16 +305,6 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -295,16 +305,6 @@ public class ControlCommandServiceImpl implements ControlCommandService {
messageContent
.
addElement
(
HttpConstants
.
SPOT
).
setText
(
crossInfoPOExt
.
getCode
());
messageContent
.
addElement
(
HttpConstants
.
SPOT
).
setText
(
crossInfoPOExt
.
getCode
());
messageContent
.
addElement
(
HttpConstants
.
PATTERN
).
setText
(
tempSchemeSendVO
.
getPattern
());
messageContent
.
addElement
(
HttpConstants
.
PATTERN
).
setText
(
tempSchemeSendVO
.
getPattern
());
messageContent
.
addElement
(
HttpConstants
.
CYCLE
).
setText
(
tempSchemeSendVO
.
getCycle
());
messageContent
.
addElement
(
HttpConstants
.
CYCLE
).
setText
(
tempSchemeSendVO
.
getCycle
());
//如果为空赋值神思的默认值
if
(
ObjectUtils
.
isEmpty
(
tempSchemeSendVO
.
getOffset
()))
{
tempSchemeSendVO
.
setOffset
(
"0"
);
}
if
(
ObjectUtils
.
isEmpty
(
tempSchemeSendVO
.
getType
()))
{
tempSchemeSendVO
.
setType
(
"1"
);
}
if
(
ObjectUtils
.
isEmpty
(
tempSchemeSendVO
.
getSplit
()))
{
tempSchemeSendVO
.
setSplit
(
"40,0,0,40,50,50,0,0,0,0,0,0,0,0,0,0"
);
}
messageContent
.
addElement
(
HttpConstants
.
OFFSET
).
setText
(
tempSchemeSendVO
.
getOffset
());
messageContent
.
addElement
(
HttpConstants
.
OFFSET
).
setText
(
tempSchemeSendVO
.
getOffset
());
messageContent
.
addElement
(
HttpConstants
.
TYPE
).
setText
(
tempSchemeSendVO
.
getType
());
messageContent
.
addElement
(
HttpConstants
.
TYPE
).
setText
(
tempSchemeSendVO
.
getType
());
messageContent
.
addElement
(
HttpConstants
.
SPLIT
).
setText
(
tempSchemeSendVO
.
getSplit
());
messageContent
.
addElement
(
HttpConstants
.
SPLIT
).
setText
(
tempSchemeSendVO
.
getSplit
());
...
@@ -349,9 +349,60 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -349,9 +349,60 @@ public class ControlCommandServiceImpl implements ControlCommandService {
//指令执行失败
//指令执行失败
jsonViewObject
.
fail
(
"临时方案 - 指令执行失败"
);
jsonViewObject
.
fail
(
"临时方案 - 指令执行失败"
);
}
}
Integer
code
=
jsonViewObject
.
getCode
();
int
optResult
=
1
;
if
(
code
!=
200
)
{
optResult
=
2
;
}
CrossSchemeRingsDTO
crossSchemeRingsDTO
=
new
CrossSchemeRingsDTO
();
crossSchemeRingsDTO
.
setCrossId
(
tempSchemeSendVO
.
getCrossId
());
crossSchemeRingsDTO
.
setPattern
(
tempSchemeSendVO
.
getPattern
());
//方案优化记录
crossSchemeOptLog
(
crossSchemeRingsDTO
,
tempSchemeSendVO
.
getSplit
(),
optResult
);
return
jsonViewObject
;
return
jsonViewObject
;
}
}
/**
* @return void
* @Description 方案优化记录
* @Param tempSchemeSendVO 环图查询参数
* @Param split 优化的绿信比
* @Param result 下发结果
**/
private
void
crossSchemeOptLog
(
CrossSchemeRingsDTO
crossSchemeRingsDTO
,
String
split
,
int
result
)
throws
Exception
{
//TODO
//方案环图请求
CrossSchemeRings
crossSchemeRings
=
staticInfoService
.
crossSchemeRings
(
crossSchemeRingsDTO
);
if
(
Optional
.
ofNullable
(
crossSchemeRings
).
isPresent
())
{
//环数
int
ringCount
=
Integer
.
parseInt
(
crossSchemeRings
.
getRingCount
());
//周期长度
String
cycleLen
=
crossSchemeRings
.
getCycleLen
();
JSONObject
cycleJSONObject
=
crossSchemeRings
.
getCycleList
();
//相位差
String
offset
=
crossSchemeRings
.
getOffset
();
int
cycle
=
Integer
.
valueOf
(
cycleLen
);
//方案号
int
schemeNo
=
(
Integer
.
valueOf
(
crossSchemeRings
.
getPattern
())
+
2
)
/
3
;
List
<
CrossSchemeRings
.
Phase
>
phaseList
=
crossSchemeRings
.
getPhaseList
();
CrossSchemeRings
.
Phase
phase
=
phaseList
.
get
(
0
);
//封装环和环上相位数据
Map
<
Integer
,
List
<
RingPhaseDTO
>>
ringPhasesMap
=
StaticInfoServiceImpl
.
getRingPhasesMap
(
ringCount
,
cycleJSONObject
,
phase
);
//环封装阶段
List
<
StagePhaseDTO
>
stagePhaseDTOList
=
StaticInfoServiceImpl
.
stagePhaseList
(
cycle
,
ringCount
,
ringPhasesMap
);
System
.
out
.
println
(
stagePhaseDTOList
);
}
}
public
static
void
main
(
String
[]
args
)
{
}
@Override
@Override
public
JsonViewObject
extendPhase
(
ExtendPhaseDTO
extendPhaseDTO
)
throws
Exception
{
public
JsonViewObject
extendPhase
(
ExtendPhaseDTO
extendPhaseDTO
)
throws
Exception
{
CrossInfoPOExt
crossInfoPOExt
=
crossInfoMapper
.
selectById
(
extendPhaseDTO
.
getCrossId
());
CrossInfoPOExt
crossInfoPOExt
=
crossInfoMapper
.
selectById
(
extendPhaseDTO
.
getCrossId
());
...
@@ -361,13 +412,13 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -361,13 +412,13 @@ public class ControlCommandServiceImpl implements ControlCommandService {
element
.
addElement
(
HttpConstants
.
MESSAGETYPE
).
setText
(
HttpConstants
.
MESSAGETYPE_22
);
element
.
addElement
(
HttpConstants
.
MESSAGETYPE
).
setText
(
HttpConstants
.
MESSAGETYPE_22
);
Element
messageContent
=
(
Element
)
document
.
selectSingleNode
(
HttpConstants
.
SYSTEMSCRIPTION_MESSAGECONTENT
);
Element
messageContent
=
(
Element
)
document
.
selectSingleNode
(
HttpConstants
.
SYSTEMSCRIPTION_MESSAGECONTENT
);
messageContent
.
addElement
(
HttpConstants
.
SPOT
).
setText
(
crossInfoPOExt
.
getCode
());
messageContent
.
addElement
(
HttpConstants
.
SPOT
).
setText
(
crossInfoPOExt
.
getCode
());
//
暂时按照神思的写死
//
相位驻留
messageContent
.
addElement
(
HttpConstants
.
COMMAND
).
setText
(
"1"
);
messageContent
.
addElement
(
HttpConstants
.
COMMAND
).
setText
(
"1"
);
messageContent
.
addElement
(
HttpConstants
.
CTRLSTEP
).
setText
(
"0"
);
messageContent
.
addElement
(
HttpConstants
.
CTRLSTEP
).
setText
(
"0"
);
//给海信发送http请求
//给海信发送http请求
//
String post = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML());
String
post
=
OkHttpClientUtil
.
xmlPost
(
hisenseUrl
,
document
.
asXML
());
String
post
=
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+
/*
String post = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
" <subSystem>Hisense</subSystem>\n" +
" <subSystem>Hisense</subSystem>\n" +
" <messageType>12</messageType>\n" +
" <messageType>12</messageType>\n" +
...
@@ -383,7 +434,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -383,7 +434,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
" <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" +
" </messageContent>\n" +
" </messageContent>\n" +
"</systemScription>"
;
"</systemScription>";
*/
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
if
(
StringUtils
.
isBlank
(
post
))
{
if
(
StringUtils
.
isBlank
(
post
))
{
log
.
error
(
"HTTP请求 5.12. 步进及取消控制 失败"
);
log
.
error
(
"HTTP请求 5.12. 步进及取消控制 失败"
);
...
@@ -391,14 +442,15 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -391,14 +442,15 @@ public class ControlCommandServiceImpl implements ControlCommandService {
}
}
Document
postResult
=
DocumentHelper
.
parseText
(
post
);
Document
postResult
=
DocumentHelper
.
parseText
(
post
);
String
result
=
postResult
.
selectSingleNode
(
HttpConstants
.
SYSTEMSCRIPTION_RESULT
).
getText
();
String
result
=
postResult
.
selectSingleNode
(
HttpConstants
.
SYSTEMSCRIPTION_RESULT
).
getText
();
//解除步进
messageContent
.
selectSingleNode
(
HttpConstants
.
COMMAND
).
setText
(
"0"
);
if
(
HttpConstants
.
RESULT_1
.
equals
(
result
)
||
HttpConstants
.
RESULT_2
.
equals
(
result
))
{
if
(
HttpConstants
.
RESULT_1
.
equals
(
result
)
||
HttpConstants
.
RESULT_2
.
equals
(
result
))
{
//执行成功,开始延长
//执行成功,开始延长
Thread
.
sleep
(
extendPhaseDTO
.
getExtendTime
()
*
1000
);
Thread
.
sleep
(
extendPhaseDTO
.
getExtendTime
()
*
1000
);
//延长结束,解除步进
messageContent
.
selectSingleNode
(
HttpConstants
.
COMMAND
).
setText
(
"0"
);
//给海信发送http请求
//给海信发送http请求
//
String post1 = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML());
String
post1
=
OkHttpClientUtil
.
xmlPost
(
hisenseUrl
,
document
.
asXML
());
String
post1
=
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+
/*
String post1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
" <subSystem>Hisense</subSystem>\n" +
" <subSystem>Hisense</subSystem>\n" +
" <messageType>12</messageType>\n" +
" <messageType>12</messageType>\n" +
...
@@ -414,7 +466,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -414,7 +466,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
" <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" +
" </messageContent>\n" +
" </messageContent>\n" +
"</systemScription>"
;
"</systemScription>";
*/
if
(
StringUtils
.
isNotBlank
(
post1
))
{
if
(
StringUtils
.
isNotBlank
(
post1
))
{
Document
extendPost
=
DocumentHelper
.
parseText
(
post1
);
Document
extendPost
=
DocumentHelper
.
parseText
(
post1
);
String
extendResult
=
extendPost
.
selectSingleNode
(
HttpConstants
.
SYSTEMSCRIPTION_RESULT
).
getText
();
String
extendResult
=
extendPost
.
selectSingleNode
(
HttpConstants
.
SYSTEMSCRIPTION_RESULT
).
getText
();
...
@@ -426,8 +478,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -426,8 +478,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
log
.
error
(
"HTTP请求 5.12. 步进及取消控制 失败"
);
log
.
error
(
"HTTP请求 5.12. 步进及取消控制 失败"
);
//重新发起三次取消控制请求
//重新发起三次取消控制请求
for
(
int
j
=
0
;
j
<
3
;
j
++)
{
for
(
int
j
=
0
;
j
<
3
;
j
++)
{
//
String httpPost = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML());
String
httpPost
=
OkHttpClientUtil
.
xmlPost
(
hisenseUrl
,
document
.
asXML
());
String
httpPost
=
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+
/*
String httpPost = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
" <subSystem>Hisense</subSystem>\n" +
" <subSystem>Hisense</subSystem>\n" +
" <messageType>12</messageType>\n" +
" <messageType>12</messageType>\n" +
...
@@ -443,7 +495,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -443,7 +495,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
" <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" +
" </messageContent>\n" +
" </messageContent>\n" +
"</systemScription>"
;
"</systemScription>";
*/
if
(
StringUtils
.
isNotBlank
(
httpPost
))
{
if
(
StringUtils
.
isNotBlank
(
httpPost
))
{
Document
extendPost
=
DocumentHelper
.
parseText
(
httpPost
);
Document
extendPost
=
DocumentHelper
.
parseText
(
httpPost
);
String
extendResult
=
extendPost
.
selectSingleNode
(
HttpConstants
.
SYSTEMSCRIPTION_RESULT
).
getText
();
String
extendResult
=
extendPost
.
selectSingleNode
(
HttpConstants
.
SYSTEMSCRIPTION_RESULT
).
getText
();
...
@@ -455,6 +507,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -455,6 +507,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
}
}
}
else
{
}
else
{
messageContent
.
selectSingleNode
(
HttpConstants
.
COMMAND
).
setText
(
"0"
);
//重新发起三次取消控制请求
//重新发起三次取消控制请求
for
(
int
j
=
0
;
j
<
3
;
j
++)
{
for
(
int
j
=
0
;
j
<
3
;
j
++)
{
String
httpPost
=
OkHttpClientUtil
.
xmlPost
(
hisenseUrl
,
document
.
asXML
());
String
httpPost
=
OkHttpClientUtil
.
xmlPost
(
hisenseUrl
,
document
.
asXML
());
...
@@ -490,9 +543,9 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -490,9 +543,9 @@ public class ControlCommandServiceImpl implements ControlCommandService {
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
JsonViewObject
jsonViewObject
=
JsonViewObject
.
newInstance
();
if
(
stepingPhaseDTO
.
getCommand
()
==
0
)
{
if
(
stepingPhaseDTO
.
getCommand
()
==
0
)
{
//取消步进
//取消步进
//
boolean isOk = sendMesIsOk(document.asXML());
boolean
isOk
=
sendMesIsOk
(
document
.
asXML
());
boolean
isOk
=
true
;
//
boolean isOk = true;
if
(
true
)
{
if
(
isOk
)
{
return
jsonViewObject
.
success
(
"取消步进 - 控制成功"
);
return
jsonViewObject
.
success
(
"取消步进 - 控制成功"
);
}
else
{
}
else
{
return
jsonViewObject
.
fail
(
"取消步进 - 控制失败"
);
return
jsonViewObject
.
fail
(
"取消步进 - 控制失败"
);
...
@@ -500,8 +553,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -500,8 +553,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
}
else
if
(
stepingPhaseDTO
.
getCommand
()
==
1
)
{
}
else
if
(
stepingPhaseDTO
.
getCommand
()
==
1
)
{
//逻辑:第一次发送步进指令是相位驻留,以后发送才是相位步进,步进成功则取消步进。步进失败,也立即下发取消步进控制
//逻辑:第一次发送步进指令是相位驻留,以后发送才是相位步进,步进成功则取消步进。步进失败,也立即下发取消步进控制
//相位驻留
//相位驻留
//
String xmlPost = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML());
String
xmlPost
=
OkHttpClientUtil
.
xmlPost
(
hisenseUrl
,
document
.
asXML
());
String
xmlPost
=
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+
/*
String xmlPost = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
" <subSystem>Hisense</subSystem>\n" +
" <subSystem>Hisense</subSystem>\n" +
" <messageType>12</messageType>\n" +
" <messageType>12</messageType>\n" +
...
@@ -517,7 +570,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -517,7 +570,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
" <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" +
" </messageContent>\n" +
" </messageContent>\n" +
"</systemScription>"
;
"</systemScription>";
*/
if
(
StringUtils
.
isNotBlank
(
xmlPost
))
{
if
(
StringUtils
.
isNotBlank
(
xmlPost
))
{
Document
extendPost
=
DocumentHelper
.
parseText
(
xmlPost
);
Document
extendPost
=
DocumentHelper
.
parseText
(
xmlPost
);
...
@@ -526,8 +579,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -526,8 +579,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
//开始步进
//开始步进
//给海信发送http请求
//给海信发送http请求
for
(
int
i
=
0
;
i
<
stepingPhaseDTO
.
getStepCount
();
i
++)
{
for
(
int
i
=
0
;
i
<
stepingPhaseDTO
.
getStepCount
();
i
++)
{
//
String post = OkHttpClientUtil.xmlPost(hisenseUrl, document.asXML());
String
post
=
OkHttpClientUtil
.
xmlPost
(
hisenseUrl
,
document
.
asXML
());
String
post
=
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+
/*
String post = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
"<systemScription System=\"TCIP\" Version=\"1.0\">\n" +
" <subSystem>Hisense</subSystem>\n" +
" <subSystem>Hisense</subSystem>\n" +
" <messageType>12</messageType>\n" +
" <messageType>12</messageType>\n" +
...
@@ -543,7 +596,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -543,7 +596,7 @@ public class ControlCommandServiceImpl implements ControlCommandService {
" <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordCycleStatus>160</CoordCycleStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" +
" <CoordSyncStatus>123</CoordSyncStatus>\n" +
" </messageContent>\n" +
" </messageContent>\n" +
"</systemScription>"
;
"</systemScription>";
*/
if
(
StringUtils
.
isNotBlank
(
post
))
{
if
(
StringUtils
.
isNotBlank
(
post
))
{
Document
postResult
=
DocumentHelper
.
parseText
(
post
);
Document
postResult
=
DocumentHelper
.
parseText
(
post
);
String
result
=
postResult
.
selectSingleNode
(
HttpConstants
.
SYSTEMSCRIPTION_RESULT
).
getText
();
String
result
=
postResult
.
selectSingleNode
(
HttpConstants
.
SYSTEMSCRIPTION_RESULT
).
getText
();
...
@@ -553,8 +606,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -553,8 +606,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
log
.
error
(
"路口号 :{},第 {} 次步进失败,result:{}"
,
stepingPhaseDTO
.
getCrossId
(),
i
+
1
,
result
);
log
.
error
(
"路口号 :{},第 {} 次步进失败,result:{}"
,
stepingPhaseDTO
.
getCrossId
(),
i
+
1
,
result
);
messageContent
.
selectSingleNode
(
HttpConstants
.
COMMAND
).
setText
(
"0"
);
messageContent
.
selectSingleNode
(
HttpConstants
.
COMMAND
).
setText
(
"0"
);
//取消步进
//取消步进
//
boolean isOk = sendMesIsOk(document.asXML());
boolean
isOk
=
sendMesIsOk
(
document
.
asXML
());
boolean
isOk
=
true
;
//
boolean isOk = true;
if
(
isOk
)
{
if
(
isOk
)
{
return
jsonViewObject
.
fail
(
"相位步进失败,取消步进成功,路口号: "
+
stepingPhaseDTO
.
getCrossId
());
return
jsonViewObject
.
fail
(
"相位步进失败,取消步进成功,路口号: "
+
stepingPhaseDTO
.
getCrossId
());
}
else
{
}
else
{
...
@@ -566,8 +619,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -566,8 +619,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
}
else
{
}
else
{
messageContent
.
selectSingleNode
(
HttpConstants
.
COMMAND
).
setText
(
"0"
);
messageContent
.
selectSingleNode
(
HttpConstants
.
COMMAND
).
setText
(
"0"
);
//取消步进
//取消步进
//
boolean isOk = sendMesIsOk(document.asXML());
boolean
isOk
=
sendMesIsOk
(
document
.
asXML
());
boolean
isOk
=
true
;
//
boolean isOk = true;
if
(
isOk
)
{
if
(
isOk
)
{
return
jsonViewObject
.
fail
(
"相位步进失败,取消步进成功,路口号: "
+
stepingPhaseDTO
.
getCrossId
());
return
jsonViewObject
.
fail
(
"相位步进失败,取消步进成功,路口号: "
+
stepingPhaseDTO
.
getCrossId
());
}
else
{
}
else
{
...
@@ -578,8 +631,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
...
@@ -578,8 +631,8 @@ public class ControlCommandServiceImpl implements ControlCommandService {
}
}
messageContent
.
selectSingleNode
(
HttpConstants
.
COMMAND
).
setText
(
"0"
);
messageContent
.
selectSingleNode
(
HttpConstants
.
COMMAND
).
setText
(
"0"
);
//取消步进
//取消步进
//
boolean isOk = sendMesIsOk(document.asXML());
boolean
isOk
=
sendMesIsOk
(
document
.
asXML
());
boolean
isOk
=
true
;
//
boolean isOk = true;
if
(
isOk
)
{
if
(
isOk
)
{
return
jsonViewObject
.
success
(
"相位步进成功,,路口号: "
+
stepingPhaseDTO
.
getCrossId
());
return
jsonViewObject
.
success
(
"相位步进成功,,路口号: "
+
stepingPhaseDTO
.
getCrossId
());
}
else
{
}
else
{
...
...
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/service/impl/StaticInfoServiceImpl.java
View file @
96949629
...
@@ -152,18 +152,9 @@ public class StaticInfoServiceImpl implements StaticInfoService {
...
@@ -152,18 +152,9 @@ public class StaticInfoServiceImpl implements StaticInfoService {
List
<
CrossSchemeRings
.
Phase
>
phaseList
=
crossSchemeRings
.
getPhaseList
();
List
<
CrossSchemeRings
.
Phase
>
phaseList
=
crossSchemeRings
.
getPhaseList
();
CrossSchemeRings
.
Phase
phase
=
phaseList
.
get
(
0
);
CrossSchemeRings
.
Phase
phase
=
phaseList
.
get
(
0
);
//16 个相位的红灯时间(单位秒),中间用空格隔开,不存在的相位置 0。
String
[]
redTime
=
phase
.
getRedTime
().
split
(
" "
);
//16 个相位的绿灯时间(单位秒),中间用空格隔开,不存在的相位置 0。
String
[]
greenTime
=
phase
.
getGreenTime
().
split
(
" "
);
//16 个相位的黄灯时间(单位秒),中间用空格隔开,不存在的相位置 0。
String
[]
yellowTime
=
phase
.
getYellowTime
().
split
(
" "
);
//16 个相位的最小绿时间(单位秒),中间用空格隔开,不存在的相位置 0。
String
[]
minGTime
=
phase
.
getMinGTime
().
split
(
" "
);
//16 个相位的最大绿时间(单位秒),中间用空格隔开,不存在的相位置 0。
String
[]
maxGTime
=
phase
.
getMaxGTime
().
split
(
" "
);
//封装环和环上相位数据
//封装环和环上相位数据
Map
<
Integer
,
List
<
RingPhaseDTO
>>
ringPhasesMap
=
getRingPhasesMap
(
ringCount
,
cycleJSONObject
,
redTime
,
greenTime
,
yellowTime
,
minGTime
,
maxGTim
e
);
Map
<
Integer
,
List
<
RingPhaseDTO
>>
ringPhasesMap
=
getRingPhasesMap
(
ringCount
,
cycleJSONObject
,
phas
e
);
//16 个相位的放行方向,每个相位由 8 字节整型值存储(最多支持 7 个放行方向),每个字节表示一个放行方向,
//16 个相位的放行方向,每个相位由 8 字节整型值存储(最多支持 7 个放行方向),每个字节表示一个放行方向,
String
[]
channelDim
=
phase
.
getChannelDim
().
split
(
" "
);
String
[]
channelDim
=
phase
.
getChannelDim
().
split
(
" "
);
//数据处理
//数据处理
...
@@ -186,7 +177,18 @@ public class StaticInfoServiceImpl implements StaticInfoService {
...
@@ -186,7 +177,18 @@ public class StaticInfoServiceImpl implements StaticInfoService {
* @Param greenTime 绿
* @Param greenTime 绿
* @Param yellowTime 黄
* @Param yellowTime 黄
**/
**/
private
Map
<
Integer
,
List
<
RingPhaseDTO
>>
getRingPhasesMap
(
int
ringCount
,
JSONObject
cycleJSONObject
,
String
[]
redTime
,
String
[]
greenTime
,
String
[]
yellowTime
,
String
[]
minGTime
,
String
[]
maxGTime
)
{
public
static
Map
<
Integer
,
List
<
RingPhaseDTO
>>
getRingPhasesMap
(
int
ringCount
,
JSONObject
cycleJSONObject
,
CrossSchemeRings
.
Phase
phaseDto
)
{
//16 个相位的红灯时间(单位秒),中间用空格隔开,不存在的相位置 0。
String
[]
redTime
=
phaseDto
.
getRedTime
().
split
(
" "
);
//16 个相位的绿灯时间(单位秒),中间用空格隔开,不存在的相位置 0。
String
[]
greenTime
=
phaseDto
.
getGreenTime
().
split
(
" "
);
//16 个相位的黄灯时间(单位秒),中间用空格隔开,不存在的相位置 0。
String
[]
yellowTime
=
phaseDto
.
getYellowTime
().
split
(
" "
);
//16 个相位的最小绿时间(单位秒),中间用空格隔开,不存在的相位置 0。
String
[]
minGTime
=
phaseDto
.
getMinGTime
().
split
(
" "
);
//16 个相位的最大绿时间(单位秒),中间用空格隔开,不存在的相位置 0。
String
[]
maxGTime
=
phaseDto
.
getMaxGTime
().
split
(
" "
);
Map
<
Integer
,
List
<
RingPhaseDTO
>>
map
=
new
HashMap
<>();
Map
<
Integer
,
List
<
RingPhaseDTO
>>
map
=
new
HashMap
<>();
for
(
int
i
=
1
;
i
<=
ringCount
;
i
++)
{
for
(
int
i
=
1
;
i
<=
ringCount
;
i
++)
{
//取出环中的数据,并去掉空格和_,得到相位
//取出环中的数据,并去掉空格和_,得到相位
...
@@ -220,27 +222,6 @@ public class StaticInfoServiceImpl implements StaticInfoService {
...
@@ -220,27 +222,6 @@ public class StaticInfoServiceImpl implements StaticInfoService {
ringPhase
.
setPhaseTime
(
red
+
green
+
yellow
);
ringPhase
.
setPhaseTime
(
red
+
green
+
yellow
);
ringPhaseDTOS
.
add
(
ringPhase
);
ringPhaseDTOS
.
add
(
ringPhase
);
}
}
/*char[] charArray = ringPhases.toCharArray();
for (int i1 = 0; i1 < charArray.length; i1++) {
RingPhaseDTO ringPhase = new RingPhaseDTO();
int phaseId = Character.getNumericValue(charArray[i1]);
int red = Integer.valueOf(redTime[phaseId - 1]);
int green = Integer.valueOf(greenTime[phaseId - 1]);
int yellow = Integer.valueOf(yellowTime[phaseId - 1]);
int minG = Integer.valueOf(minGTime[phaseId - 1]);
int maxG = Integer.valueOf(maxGTime[phaseId - 1]);
ringPhase.setPhaseId(phaseId);
ringPhase.setPhaseStatus(0);
ringPhase.setRedTime(red);
ringPhase.setGreenTime(green);
ringPhase.setYellowTime(yellow);
ringPhase.setMaxGTime(maxG);
ringPhase.setMinGTime(minG);
ringPhase.setPhaseTime(red + green + yellow);
ringPhaseDTOS.add(ringPhase);
}*/
map
.
put
(
i
,
ringPhaseDTOS
);
map
.
put
(
i
,
ringPhaseDTOS
);
}
}
return
map
;
return
map
;
...
@@ -253,6 +234,20 @@ public class StaticInfoServiceImpl implements StaticInfoService {
...
@@ -253,6 +234,20 @@ public class StaticInfoServiceImpl implements StaticInfoService {
* @Param phasesTime 各个相位的红绿黄时间和
* @Param phasesTime 各个相位的红绿黄时间和
**/
**/
private
void
getStagesByRings
(
Map
<
String
,
Integer
>
lightsMap
,
AtomicInteger
lightNum
,
int
cycle
,
int
ringCount
,
String
crossId
,
int
schemeNo
,
Map
<
Integer
,
List
<
RingPhaseDTO
>>
ringPhasesMap
,
List
<
CrossLightsPO
>
crossLightsList
,
List
<
CrossPhasePO
>
crossPhaseList
,
List
<
CrossPhaseLightsPO
>
crossPhaseLightsPOList
,
String
[]
channelDim
)
{
private
void
getStagesByRings
(
Map
<
String
,
Integer
>
lightsMap
,
AtomicInteger
lightNum
,
int
cycle
,
int
ringCount
,
String
crossId
,
int
schemeNo
,
Map
<
Integer
,
List
<
RingPhaseDTO
>>
ringPhasesMap
,
List
<
CrossLightsPO
>
crossLightsList
,
List
<
CrossPhasePO
>
crossPhaseList
,
List
<
CrossPhaseLightsPO
>
crossPhaseLightsPOList
,
String
[]
channelDim
)
{
//环转阶段
List
<
StagePhaseDTO
>
stagePhaseList
=
stagePhaseList
(
cycle
,
ringCount
,
ringPhasesMap
);
if
(
CollectionUtil
.
isNotEmpty
(
stagePhaseList
))
{
//将结果组装到结果集
doView
(
lightsMap
,
lightNum
,
cycle
,
ringCount
,
crossId
,
schemeNo
,
stagePhaseList
,
crossLightsList
,
crossPhaseList
,
crossPhaseLightsPOList
,
channelDim
);
}
}
/**
* @Description 环封装阶段
* @Param [cycle, ringCount, ringPhasesMap]
* @return java.util.List<net.wanji.utc.hisense.pojo.dto.StagePhaseDTO>
**/
public
static
List
<
StagePhaseDTO
>
stagePhaseList
(
int
cycle
,
int
ringCount
,
Map
<
Integer
,
List
<
RingPhaseDTO
>>
ringPhasesMap
){
//已经计算的阶段时长
//已经计算的阶段时长
int
stageTime
=
0
;
int
stageTime
=
0
;
//循环次数,也代表阶段号
//循环次数,也代表阶段号
...
@@ -362,10 +357,7 @@ public class StaticInfoServiceImpl implements StaticInfoService {
...
@@ -362,10 +357,7 @@ public class StaticInfoServiceImpl implements StaticInfoService {
stagePhaseList
.
add
(
stagePhase
);
stagePhaseList
.
add
(
stagePhase
);
count
++;
count
++;
}
}
if
(
CollectionUtil
.
isNotEmpty
(
stagePhaseList
))
{
return
stagePhaseList
;
//将结果组装到结果集
doView
(
lightsMap
,
lightNum
,
cycle
,
ringCount
,
crossId
,
schemeNo
,
stagePhaseList
,
crossLightsList
,
crossPhaseList
,
crossPhaseLightsPOList
,
channelDim
);
}
}
}
/**
/**
...
...
signal-utc-hisense-service/src/main/java/net/wanji/utc/hisense/task/HisensePhaseCountDownTask.java
View file @
96949629
package
net
.
wanji
.
utc
.
hisense
.
task
;
package
net
.
wanji
.
utc
.
hisense
.
task
;
import
cn.hutool.core.util.ObjectUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.common.utils.tool.StringUtils
;
import
net.wanji.databus.dao.entity.CrossLightsPO
;
import
net.wanji.databus.dao.entity.CrossLightsPO
;
...
@@ -113,79 +114,85 @@ public class HisensePhaseCountDownTask {
...
@@ -113,79 +114,85 @@ public class HisensePhaseCountDownTask {
if
(
StringUtils
.
equalsIgnoreCase
(
schemeId
,
String
.
valueOf
(
dirTurnPojo
.
getSchemeNo
())))
{
if
(
StringUtils
.
equalsIgnoreCase
(
schemeId
,
String
.
valueOf
(
dirTurnPojo
.
getSchemeNo
())))
{
if
(!
StringUtils
.
equalsIgnoreCase
(
currenPhaseId
,
String
.
valueOf
(
dirTurnPojo
.
getPhaseNo
())))
{
if
(!
StringUtils
.
equalsIgnoreCase
(
currenPhaseId
,
String
.
valueOf
(
dirTurnPojo
.
getPhaseNo
())))
{
Map
<
Integer
,
List
<
CrossLightsPO
>>
dirTurnMap
=
dirTurnPojo
.
getDirTurnMap
();
Map
<
Integer
,
List
<
CrossLightsPO
>>
dirTurnMap
=
dirTurnPojo
.
getDirTurnMap
();
for
(
Map
.
Entry
<
Integer
,
List
<
CrossLightsPO
>>
dirEntry
:
dirTurnMap
.
entrySet
())
{
if
(
ObjectUtil
.
isNotEmpty
(
dirTurnMap
))
{
Integer
dir
=
dirEntry
.
getKey
();
for
(
Map
.
Entry
<
Integer
,
List
<
CrossLightsPO
>>
dirEntry
:
dirTurnMap
.
entrySet
())
{
Map
<
Integer
,
Integer
>
turnCountDown
=
new
HashMap
<>();
Integer
dir
=
dirEntry
.
getKey
();
List
<
CrossLightsPO
>
lightsPOS
=
dirEntry
.
getValue
();
Map
<
Integer
,
Integer
>
turnCountDown
=
new
HashMap
<>();
if
(!
CollectionUtils
.
isEmpty
(
lightsPOS
))
{
List
<
CrossLightsPO
>
lightsPOS
=
dirEntry
.
getValue
();
// 忽略行人
if
(!
CollectionUtils
.
isEmpty
(
lightsPOS
))
{
List
<
CrossLightsPO
>
person
=
lightsPOS
.
stream
().
filter
(
po
->
po
.
getTurn
()
==
20
).
collect
(
Collectors
.
toList
());
// 忽略行人
if
(
person
.
size
()
==
lightsPOS
.
size
())
{
List
<
CrossLightsPO
>
person
=
lightsPOS
.
stream
().
filter
(
po
->
po
.
getTurn
()
==
20
).
collect
(
Collectors
.
toList
());
continue
;
if
(
person
.
size
()
==
lightsPOS
.
size
())
{
}
continue
;
Integer
type
=
lightsPOS
.
get
(
0
).
getType
();
}
redCountDown
=
changePhaseTime
-
runtime
-
phaseTime
;
Integer
type
=
lightsPOS
.
get
(
0
).
getType
();
if
(
redCountDown
<=
0
)
{
redCountDown
=
changePhaseTime
-
runtime
-
phaseTime
;
redCountDown
=
cycleLen
-
runtime
;
if
(
redCountDown
<=
0
)
{
}
redCountDown
=
cycleLen
-
runtime
;
//if (redCountDown <= 0) {
// redCountDown = 1;
//}
if
(
type
==
2
)
{
// 圆饼灯
List
<
Integer
>
dirList
=
Arrays
.
asList
(
1
,
2
,
3
);
for
(
Integer
commonTurn
:
dirList
)
{
turnCountDown
.
put
(
commonTurn
,
redCountDown
);
}
}
}
else
{
//if (redCountDown <= 0) {
Map
<
Integer
,
List
<
CrossLightsPO
>>
turnMap
=
lightsPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossLightsPO:
:
getTurn
));
// redCountDown = 1;
for
(
Map
.
Entry
<
Integer
,
List
<
CrossLightsPO
>>
turnEntry
:
turnMap
.
entrySet
())
{
//}
Integer
turn
=
turnEntry
.
getKey
();
if
(
type
==
2
)
{
// 圆饼灯
List
<
CrossLightsPO
>
value
=
turnEntry
.
getValue
();
List
<
Integer
>
dirList
=
Arrays
.
asList
(
1
,
2
,
3
);
for
(
CrossLightsPO
lightsPO
:
value
)
{
for
(
Integer
commonTurn
:
dirList
)
{
if
(
lightsPO
.
getTurn
()
!=
20
)
{
turnCountDown
.
put
(
commonTurn
,
redCountDown
);
turnCountDown
.
put
(
turn
,
redCountDown
);
}
}
else
{
Map
<
Integer
,
List
<
CrossLightsPO
>>
turnMap
=
lightsPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossLightsPO:
:
getTurn
));
for
(
Map
.
Entry
<
Integer
,
List
<
CrossLightsPO
>>
turnEntry
:
turnMap
.
entrySet
())
{
Integer
turn
=
turnEntry
.
getKey
();
List
<
CrossLightsPO
>
value
=
turnEntry
.
getValue
();
for
(
CrossLightsPO
lightsPO
:
value
)
{
if
(
lightsPO
.
getTurn
()
!=
20
)
{
turnCountDown
.
put
(
turn
,
redCountDown
);
}
}
}
}
}
}
}
}
}
setPhaseMap
(
phaseMap
,
dir
,
turnCountDown
);
}
}
setPhaseMap
(
phaseMap
,
dir
,
turnCountDown
);
}
}
}
else
{
}
else
{
Integer
cyclePhaseCountDown
=
lightsStatusVO
.
getCyclePhaseCountDown
();
Integer
cyclePhaseCountDown
=
lightsStatusVO
.
getCyclePhaseCountDown
();
Map
<
Integer
,
List
<
CrossLightsPO
>>
dirTurnMap
=
dirTurnPojo
.
getDirTurnMap
();
Map
<
Integer
,
List
<
CrossLightsPO
>>
dirTurnMap
=
dirTurnPojo
.
getDirTurnMap
();
for
(
Map
.
Entry
<
Integer
,
List
<
CrossLightsPO
>>
dirEntry
:
dirTurnMap
.
entrySet
())
{
if
(
ObjectUtil
.
isNotEmpty
(
dirTurnMap
))
{
Integer
dir
=
dirEntry
.
getKey
();
for
(
Map
.
Entry
<
Integer
,
List
<
CrossLightsPO
>>
dirEntry
:
dirTurnMap
.
entrySet
())
{
Map
<
Integer
,
Integer
>
turnCountDown
=
new
HashMap
<>();
Integer
dir
=
dirEntry
.
getKey
();
List
<
CrossLightsPO
>
lightsPOS
=
dirEntry
.
getValue
();
Map
<
Integer
,
Integer
>
turnCountDown
=
new
HashMap
<>();
if
(!
CollectionUtils
.
isEmpty
(
lightsPOS
))
{
List
<
CrossLightsPO
>
lightsPOS
=
dirEntry
.
getValue
();
// 忽略行人
if
(!
CollectionUtils
.
isEmpty
(
lightsPOS
))
{
List
<
CrossLightsPO
>
person
=
lightsPOS
.
stream
().
filter
(
po
->
po
.
getTurn
()
==
20
).
collect
(
Collectors
.
toList
());
// 忽略行人
if
(
person
.
size
()
==
lightsPOS
.
size
())
{
List
<
CrossLightsPO
>
person
=
lightsPOS
.
stream
().
filter
(
po
->
po
.
getTurn
()
==
20
).
collect
(
Collectors
.
toList
());
continue
;
if
(
person
.
size
()
==
lightsPOS
.
size
())
{
}
continue
;
Integer
type
=
lightsPOS
.
get
(
0
).
getType
();
redCountDown
=
cyclePhaseCountDown
;
if
(
type
==
2
)
{
// 圆饼灯
List
<
Integer
>
dirList
=
Arrays
.
asList
(
1
,
2
,
3
);
for
(
Integer
commonTurn
:
dirList
)
{
turnCountDown
.
put
(
commonTurn
,
redCountDown
);
}
}
}
else
{
Integer
type
=
lightsPOS
.
get
(
0
).
getType
();
Map
<
Integer
,
List
<
CrossLightsPO
>>
turnMap
=
lightsPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossLightsPO:
:
getTurn
));
redCountDown
=
cyclePhaseCountDown
;
for
(
Map
.
Entry
<
Integer
,
List
<
CrossLightsPO
>>
turnEntry
:
turnMap
.
entrySet
())
{
if
(
type
==
2
)
{
// 圆饼灯
Integer
turn
=
turnEntry
.
getKey
();
List
<
Integer
>
dirList
=
Arrays
.
asList
(
1
,
2
,
3
);
List
<
CrossLightsPO
>
value
=
turnEntry
.
getValue
();
for
(
Integer
commonTurn
:
dirList
)
{
for
(
CrossLightsPO
lightsPO
:
value
)
{
turnCountDown
.
put
(
commonTurn
,
redCountDown
);
if
(
lightsPO
.
getTurn
()
!=
20
)
{
}
turnCountDown
.
put
(
turn
,
redCountDown
);
}
else
{
Map
<
Integer
,
List
<
CrossLightsPO
>>
turnMap
=
lightsPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossLightsPO:
:
getTurn
));
for
(
Map
.
Entry
<
Integer
,
List
<
CrossLightsPO
>>
turnEntry
:
turnMap
.
entrySet
())
{
Integer
turn
=
turnEntry
.
getKey
();
List
<
CrossLightsPO
>
value
=
turnEntry
.
getValue
();
for
(
CrossLightsPO
lightsPO
:
value
)
{
if
(
lightsPO
.
getTurn
()
!=
20
)
{
turnCountDown
.
put
(
turn
,
redCountDown
);
}
}
}
}
}
}
}
}
}
setPhaseMap
(
phaseMap
,
dir
,
turnCountDown
);
}
}
setPhaseMap
(
phaseMap
,
dir
,
turnCountDown
);
}
}
}
}
}
}
}
}
...
@@ -299,7 +306,7 @@ public class HisensePhaseCountDownTask {
...
@@ -299,7 +306,7 @@ public class HisensePhaseCountDownTask {
if
(!
StringUtils
.
equalsIgnoreCase
(
currentPhaseNo
,
String
.
valueOf
(
phaseNo
)))
{
if
(!
StringUtils
.
equalsIgnoreCase
(
currentPhaseNo
,
String
.
valueOf
(
phaseNo
)))
{
// 相位红灯
// 相位红灯
Map
<
Integer
,
List
<
CrossLightsPO
>>
dirTurnMap
=
phaseDirTurnPojo
.
getDirTurnMap
();
Map
<
Integer
,
List
<
CrossLightsPO
>>
dirTurnMap
=
phaseDirTurnPojo
.
getDirTurnMap
();
if
(
!
dirTurnMap
.
isEmpty
(
))
{
if
(
ObjectUtil
.
isNotEmpty
(
dirTurnMap
))
{
for
(
Map
.
Entry
<
Integer
,
List
<
CrossLightsPO
>>
entry
:
dirTurnMap
.
entrySet
())
{
for
(
Map
.
Entry
<
Integer
,
List
<
CrossLightsPO
>>
entry
:
dirTurnMap
.
entrySet
())
{
String
dir
=
String
.
valueOf
(
entry
.
getKey
());
String
dir
=
String
.
valueOf
(
entry
.
getKey
());
Map
<
Integer
,
String
>
turnColor
=
null
;
Map
<
Integer
,
String
>
turnColor
=
null
;
...
@@ -344,8 +351,10 @@ public class HisensePhaseCountDownTask {
...
@@ -344,8 +351,10 @@ public class HisensePhaseCountDownTask {
Integer
yellowTime
=
phaseCountDownDTO
.
getYellowTime
();
Integer
yellowTime
=
phaseCountDownDTO
.
getYellowTime
();
Integer
redTime
=
phaseCountDownDTO
.
getRedTime
();
Integer
redTime
=
phaseCountDownDTO
.
getRedTime
();
Map
<
Integer
,
List
<
CrossLightsPO
>>
dirTurnMap
=
phaseDirTurnPojo
.
getDirTurnMap
();
Map
<
Integer
,
List
<
CrossLightsPO
>>
dirTurnMap
=
phaseDirTurnPojo
.
getDirTurnMap
();
if
(
!
dirTurnMap
.
isEmpty
(
))
{
if
(
ObjectUtil
.
isNotEmpty
(
dirTurnMap
))
{
setDirTurnColor
(
cyclePhaseCountDown
,
dirLampGroupMap
,
yellowTime
,
redTime
,
dirTurnMap
,
crossLightsPOS
);
setDirTurnColor
(
cyclePhaseCountDown
,
dirLampGroupMap
,
yellowTime
,
redTime
,
dirTurnMap
,
crossLightsPOS
);
}
else
{
log
.
error
(
"路口:{},dirTurnMap为空,{}"
,
crossId
,
dirTurnMap
);
}
}
}
}
}
}
...
...
wj-common/src/main/java/net/wanji/common/utils/tool/LocalDateTimeUtil.java
View file @
96949629
...
@@ -175,6 +175,7 @@ public class LocalDateTimeUtil {
...
@@ -175,6 +175,7 @@ public class LocalDateTimeUtil {
LocalDateTime
localDateTime
=
parseStringToDateTimeTwo
(
nowStageStartTime
,
LocalDateTimeUtil
.
TIMEFORMATTERTILT
);
LocalDateTime
localDateTime
=
parseStringToDateTimeTwo
(
nowStageStartTime
,
LocalDateTimeUtil
.
TIMEFORMATTERTILT
);
String
time
=
nowStageStartTime
.
isEmpty
()
?
"0"
:
Long
.
toString
(
LocalDateTimeUtil
.
betweenTwoTime
(
localDateTime
,
LocalDateTime
.
now
(),
ChronoUnit
.
SECONDS
));
String
time
=
nowStageStartTime
.
isEmpty
()
?
"0"
:
Long
.
toString
(
LocalDateTimeUtil
.
betweenTwoTime
(
localDateTime
,
LocalDateTime
.
now
(),
ChronoUnit
.
SECONDS
));
System
.
out
.
println
(
time
);
System
.
out
.
println
(
time
);
System
.
out
.
println
(
new
Date
().
getTime
());
}
}
/**
/**
...
...
wj-databus/src/main/java/net/wanji/databus/dao/entity/CrossSchemeOptLogPO.java
0 → 100644
View file @
96949629
package
net
.
wanji
.
databus
.
dao
.
entity
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.sql.Date
;
/**
* @ClassName CrossSchemeOptLog
* @Description 路口方案优化记录表
* @Author zhouleilei
* @Date 2024/11/23 14:23
*/
@Data
public
class
CrossSchemeOptLogPO
{
@ApiModelProperty
(
value
=
"主键id"
)
private
Integer
id
;
@ApiModelProperty
(
value
=
""
)
private
String
crossId
;
@ApiModelProperty
(
value
=
""
)
private
Integer
schemeId
;
@ApiModelProperty
(
value
=
""
)
private
Integer
offset
;
@ApiModelProperty
(
value
=
""
)
private
String
phaseNo
;
@ApiModelProperty
(
value
=
""
)
private
Integer
oriPhaseTime
;
@ApiModelProperty
(
value
=
""
)
private
Integer
optPhaseTime
;
@ApiModelProperty
(
value
=
""
)
private
Integer
optTime
;
@ApiModelProperty
(
value
=
"优化结果:1-成功 2-失败"
)
private
String
optResult
;
@ApiModelProperty
(
value
=
""
)
private
Integer
batchTime
;
@ApiModelProperty
(
value
=
""
)
private
Date
insertTime
;
}
wj-databus/src/main/java/net/wanji/databus/dao/mapper/CrossSchemeOptLogMapper.java
0 → 100644
View file @
96949629
package
net
.
wanji
.
databus
.
dao
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
net.wanji.databus.dao.entity.CrossSchemeOptLogPO
;
/**
* @ClassName CrossSchemeOptLogMapper
* @Description CrossSchemeOptLogMapper
* @Author zhouleilei
* @Date 2024/11/23 14:34
*/
public
interface
CrossSchemeOptLogMapper
extends
BaseMapper
<
CrossSchemeOptLogPO
>
{
}
wj-databus/src/main/java/net/wanji/databus/vo/TempSchemeSendVO.java
View file @
96949629
...
@@ -32,8 +32,7 @@ public class TempSchemeSendVO {
...
@@ -32,8 +32,7 @@ public class TempSchemeSendVO {
@NotBlank
(
message
=
"offset不能为空"
)
@NotBlank
(
message
=
"offset不能为空"
)
private
String
offset
;
private
String
offset
;
@ApiModelProperty
(
value
=
"优化模式"
,
notes
=
"目前支持 Type=1(预案模式,按时间调整),Type=15(瓶颈模式,\n"
+
@ApiModelProperty
(
value
=
"优化模式"
,
notes
=
"目前支持 Type=1(预案模式,按时间调整),Type=1 时为协调模式,Type=15(瓶颈模式,按比例调整)"
)
"按比例调整)"
)
@NotBlank
(
message
=
"type不能为空"
)
@NotBlank
(
message
=
"type不能为空"
)
private
String
type
;
private
String
type
;
...
...
wj-databus/src/main/resources/mapper/CrossSchemeOptLogMapper.xml
0 → 100644
View file @
96949629
<?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=
"net.wanji.databus.dao.mapper.CrossSchemeOptLogMapper"
>
</mapper>
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