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
133cc5bd
Commit
133cc5bd
authored
May 06, 2025
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 添加系统方案相位绿灯时间优化下发逻辑
parent
5061e976
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
83 additions
and
14 deletions
+83
-14
ControlCommandStrategyServiceImpl.java
...rvice/control/impl/ControlCommandStrategyServiceImpl.java
+83
-14
No files found.
signal-utc-service/src/main/java/net/wanji/utc/service/control/impl/ControlCommandStrategyServiceImpl.java
View file @
133cc5bd
...
@@ -5,20 +5,22 @@ import cn.hutool.core.util.ObjectUtil;
...
@@ -5,20 +5,22 @@ import cn.hutool.core.util.ObjectUtil;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
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.IpAddressUtil
;
import
net.wanji.common.utils.tool.IpAddressUtil
;
import
net.wanji.common.utils.tool.JacksonUtils
;
import
net.wanji.common.utils.tool.LocalDateTimeUtil
;
import
net.wanji.common.utils.tool.LocalDateTimeUtil
;
import
net.wanji.databus.dao.entity.*
;
import
net.wanji.databus.dao.entity.*
;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.dao.mapper.*
;
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.BaseCrossLightsPO
;
import
net.wanji.databus.po.BaseCrossLightsPO
;
import
net.wanji.databus.po.CrossInfoPO
;
import
net.wanji.databus.po.CrossInfoPO
;
import
net.wanji.databus.po.SaveToUtcPO
;
import
net.wanji.databus.po.SaveToUtcPO
;
import
net.wanji.databus.vo.*
;
import
net.wanji.databus.vo.*
;
import
net.wanji.feign.service.common.FeignCommon
;
import
net.wanji.utc.cache.CrossInfoCache
;
import
net.wanji.utc.cache.CrossInfoCache
;
import
net.wanji.utc.cache.CrossPhaseDirTurnCache
;
import
net.wanji.utc.cache.CrossPhaseDirTurnCache
;
import
net.wanji.utc.cache.CrossSchemePhaseTimeCountCache
;
import
net.wanji.utc.cache.CrossSchemePhaseTimeCountCache
;
...
@@ -28,6 +30,7 @@ import net.wanji.utc.common.typeenum.HttpCode;
...
@@ -28,6 +30,7 @@ import net.wanji.utc.common.typeenum.HttpCode;
import
net.wanji.utc.po.hk.request.DelBaseConfigPO
;
import
net.wanji.utc.po.hk.request.DelBaseConfigPO
;
import
net.wanji.utc.service.control.ControlCommandService
;
import
net.wanji.utc.service.control.ControlCommandService
;
import
net.wanji.utc.service.control.ControlCommandStrategyService
;
import
net.wanji.utc.service.control.ControlCommandStrategyService
;
import
net.wanji.utc.service.staticinfo.StaticInfoService
;
import
net.wanji.utc.task.SignalCommandSyncTask
;
import
net.wanji.utc.task.SignalCommandSyncTask
;
import
net.wanji.utc.task.SignalStatusTask
;
import
net.wanji.utc.task.SignalStatusTask
;
import
net.wanji.utc.util.StringUtils
;
import
net.wanji.utc.util.StringUtils
;
...
@@ -44,11 +47,9 @@ import javax.servlet.http.HttpServletRequest;
...
@@ -44,11 +47,9 @@ import javax.servlet.http.HttpServletRequest;
import
java.lang.reflect.Field
;
import
java.lang.reflect.Field
;
import
java.text.ParseException
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.stream.Collectors
;
/**
/**
* @author duanruiming
* @author duanruiming
...
@@ -77,6 +78,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
...
@@ -77,6 +78,7 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
private
final
SignalCommandPOMapper
signalCommandPOMapper
;
private
final
SignalCommandPOMapper
signalCommandPOMapper
;
private
final
CrossPhaseDirTurnCache
crossPhaseDirTurnCache
;
private
final
CrossPhaseDirTurnCache
crossPhaseDirTurnCache
;
private
final
CrossSchemePhaseTimeCountCache
crossSchemePhaseTimeCountCache
;
private
final
CrossSchemePhaseTimeCountCache
crossSchemePhaseTimeCountCache
;
private
final
StaticInfoService
staticInfoService
;
@Override
@Override
...
@@ -684,14 +686,81 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
...
@@ -684,14 +686,81 @@ public class ControlCommandStrategyServiceImpl implements ControlCommandStrategy
@Override
@Override
public
JsonViewObject
schemePhaseGreenTimeOpt
(
SchemePhaseGreenTimeOptVO
vo
)
throws
Exception
{
public
JsonViewObject
schemePhaseGreenTimeOpt
(
SchemePhaseGreenTimeOptVO
vo
)
throws
Exception
{
String
crossId
=
vo
.
getCrossId
();
ObjectMapper
mapper
=
JacksonUtils
.
getInstance
();
Integer
schemeId
=
vo
.
getSchemeId
();
try
{
Integer
offset
=
vo
.
getOffset
();
String
crossId
=
vo
.
getCrossId
();
List
<
SchemePhaseGreenTimeOptVO
.
PhaseOptTime
>
phaseOptTimeList
=
vo
.
getPhaseOptTimeList
();
Integer
schemeId
=
vo
.
getSchemeId
();
// 获取方案环图中,将环图中相位转化为阶段中相位对应关系 需要磊磊存数据 t_scheme_ring_phase_mapping_info
Integer
offset
=
vo
.
getOffset
();
// 将阶段中相位加减绿灯时间转化到环相位中
Integer
cycle
=
vo
.
getCycle
();
// 下发临时方案
List
<
SchemePhaseGreenTimeOptVO
.
PhaseOptTime
>
phaseOptTimeList
=
vo
.
getPhaseOptTimeList
();
// 获取方案环图中,将平台优化的相位阶段转化为海信相位时间
return
null
;
CrossSchemeRingsDTO
crossSchemeRingsDTO
=
new
CrossSchemeRingsDTO
();
crossSchemeRingsDTO
.
setCrossId
(
crossId
);
crossSchemeRingsDTO
.
setPattern
(
String
.
valueOf
(
schemeId
));
JsonViewObject
jsonViewObject
=
staticInfoService
.
selectCrossSchemeRingsToStages
(
crossSchemeRingsDTO
);
if
(
Objects
.
nonNull
(
jsonViewObject
)
&&
Objects
.
equals
(
200
,
jsonViewObject
.
getCode
()))
{
String
contentStr
=
String
.
valueOf
(
jsonViewObject
.
getContent
());
CrossSchemeRingsToStagesPO
crossSchemeRingsToStagesPO
=
mapper
.
convertValue
(
contentStr
,
CrossSchemeRingsToStagesPO
.
class
);
Map
<
Integer
,
Integer
>
phaseTimeMap
=
new
HashMap
<>();
if
(
Objects
.
nonNull
(
crossSchemeRingsToStagesPO
))
{
List
<
CrossSchemeRingsToStagesPO
.
Phase
>
phaseList
=
crossSchemeRingsToStagesPO
.
getPhaseList
();
if
(!
CollectionUtils
.
isEmpty
(
phaseList
)
&&
!
CollectionUtils
.
isEmpty
(
phaseOptTimeList
))
{
for
(
SchemePhaseGreenTimeOptVO
.
PhaseOptTime
phaseOptTime
:
phaseOptTimeList
)
{
String
optPhaseNo
=
phaseOptTime
.
getPhaseNo
();
Integer
optGreenTime
=
phaseOptTime
.
getOptGreenTime
();
for
(
CrossSchemeRingsToStagesPO
.
Phase
oriPhase
:
phaseList
)
{
String
oriPhaseNo
=
oriPhase
.
getPhaseNo
();
String
oriPhaseList
=
oriPhase
.
getPhaseList
();
Integer
oriPhaseTime
=
oriPhase
.
getPhaseTime
();
if
(
StringUtils
.
equals
(
optPhaseNo
,
oriPhaseNo
))
{
if
(
StringUtils
.
isNotBlank
(
oriPhaseList
))
{
for
(
String
s
:
oriPhaseList
.
split
(
","
))
{
Integer
hisensePhaseNo
=
Integer
.
valueOf
(
s
);
if
(
phaseTimeMap
.
containsKey
(
hisensePhaseNo
))
{
Integer
oriGreen
=
phaseTimeMap
.
get
(
hisensePhaseNo
);
phaseTimeMap
.
put
(
hisensePhaseNo
,
oriGreen
+
optGreenTime
);
}
else
{
phaseTimeMap
.
put
(
hisensePhaseNo
,
oriPhaseTime
+
optGreenTime
);
}
}
}
}
}
}
}
}
// 将相位对应绿信比转成发送格式
String
splitSend
=
""
;
if
(!
phaseTimeMap
.
isEmpty
())
{
LinkedHashMap
<
Integer
,
Integer
>
sortMap
=
phaseTimeMap
.
entrySet
().
stream
().
sorted
(
Map
.
Entry
.
comparingByKey
()).
collect
(
Collectors
.
toMap
(
Map
.
Entry
::
getKey
,
Map
.
Entry
::
getValue
,
(
oldValue
,
newValue
)
->
oldValue
,
LinkedHashMap:
:
new
));
List
<
Integer
>
hisensePhaseTimeList
=
new
ArrayList
<>(
16
);
for
(
Map
.
Entry
<
Integer
,
Integer
>
entry
:
sortMap
.
entrySet
())
{
hisensePhaseTimeList
.
add
(
entry
.
getValue
());
}
splitSend
=
hisensePhaseTimeList
.
stream
().
map
(
String:
:
valueOf
).
collect
(
Collectors
.
joining
(
","
));
}
// 下发临时方案
TempSchemeSendVO
tempSchemeSendVO
=
new
TempSchemeSendVO
();
tempSchemeSendVO
.
setCrossId
(
crossId
);
tempSchemeSendVO
.
setPattern
(
String
.
valueOf
(
schemeId
));
tempSchemeSendVO
.
setCycle
(
String
.
valueOf
(
cycle
));
tempSchemeSendVO
.
setOffset
(
String
.
valueOf
(
offset
));
tempSchemeSendVO
.
setType
(
"9"
);
tempSchemeSendVO
.
setSplit
(
splitSend
);
tempSchemeDetail
(
tempSchemeSendVO
);
return
JsonViewObject
.
newInstance
().
success
(
"方案相位绿灯时间优化下发成功"
);
}
else
{
return
JsonViewObject
.
newInstance
().
success
(
"方案相位绿灯时间优化下发成功"
);
}
}
catch
(
Exception
e
)
{
log
.
error
(
"方案相位绿灯时间优化下发异常,异常信息:{}"
,
e
);
throw
new
RuntimeException
(
e
);
}
}
}
}
}
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