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
8d3da2e4
Commit
8d3da2e4
authored
Dec 07, 2024
by
zhouleilei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
方案优化接口
parent
2c8f6023
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
55 additions
and
36 deletions
+55
-36
PlanSendServiceImpl.java
.../java/net/wanji/web/service/impl/PlanSendServiceImpl.java
+15
-15
DiagnoServiceImpl.java
...in/java/net/wanji/opt/service/impl/DiagnoServiceImpl.java
+23
-21
BaseCrossPhaseMapper.java
...va/net/wanji/databus/dao/mapper/BaseCrossPhaseMapper.java
+3
-0
BaseCrossPhaseMapper.xml
...atabus/src/main/resources/mapper/BaseCrossPhaseMapper.xml
+14
-0
No files found.
signal-control-service/src/main/java/net/wanji/web/service/impl/PlanSendServiceImpl.java
View file @
8d3da2e4
...
@@ -645,14 +645,14 @@ public class PlanSendServiceImpl implements PlanSendService {
...
@@ -645,14 +645,14 @@ public class PlanSendServiceImpl implements PlanSendService {
List
<
CrossSchemeInfoPO
>
crossSchemeInfoPOS
=
baseCrossSchemeMapper
.
selectSchemeInfoByCrossIdAndSchemeId
(
crossIdAndTimeDTO
.
getCrossId
(),
schemeId
);
List
<
CrossSchemeInfoPO
>
crossSchemeInfoPOS
=
baseCrossSchemeMapper
.
selectSchemeInfoByCrossIdAndSchemeId
(
crossIdAndTimeDTO
.
getCrossId
(),
schemeId
);
if
(
ObjectUtil
.
isNotEmpty
(
crossSchemeInfoPOS
))
{
if
(
ObjectUtil
.
isNotEmpty
(
crossSchemeInfoPOS
))
{
//根据相位号分组
//根据相位号分组
Map
<
String
,
List
<
CrossSchemeInfoPO
>>
collect
=
crossSchemeInfoPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossSchemeInfoPO:
:
getPhaseNo
));
LinkedHashMap
<
String
,
List
<
CrossSchemeInfoPO
>>
collect
=
crossSchemeInfoPOS
.
stream
().
collect
(
Collectors
.
groupingBy
(
CrossSchemeInfoPO:
:
getPhaseNo
,
LinkedHashMap:
:
new
,
Collectors
.
toList
()
));
Set
<
String
>
set
=
collect
.
keySet
();
Set
<
String
>
set
=
collect
.
keySet
();
for
(
String
s
:
set
)
{
for
(
String
s
:
set
)
{
List
<
CrossSchemeInfoPO
>
infoPOS
=
collect
.
get
(
s
);
List
<
CrossSchemeInfoPO
>
infoPOS
=
collect
.
get
(
s
);
CrossSchemeInfoPO
crossSchemeInfoPO
=
infoPOS
.
get
(
0
);
CrossSchemeInfoPO
crossSchemeInfoPO
=
infoPOS
.
get
(
0
);
SaveSchemeConfigDTO
.
PhaseListElement
phaseListElement
=
new
SaveSchemeConfigDTO
.
PhaseListElement
();
SaveSchemeConfigDTO
.
PhaseListElement
phaseListElement
=
new
SaveSchemeConfigDTO
.
PhaseListElement
();
phaseListElement
.
setPhaseId
(
Integer
.
valueOf
(
crossSchemeInfoPO
.
getPhaseId
()));
phaseListElement
.
setPhaseId
(
Integer
.
valueOf
(
crossSchemeInfoPO
.
getPhaseId
()));
phaseListElement
.
setPhaseNo
(
crossSchemeInfoPO
.
getPhase
Time
());
phaseListElement
.
setPhaseNo
(
crossSchemeInfoPO
.
getPhase
No
());
phaseListElement
.
setGreenTime
(
Integer
.
valueOf
(
crossSchemeInfoPO
.
getGreenTime
()));
phaseListElement
.
setGreenTime
(
Integer
.
valueOf
(
crossSchemeInfoPO
.
getGreenTime
()));
phaseListElement
.
setYellowTime
(
Integer
.
valueOf
(
crossSchemeInfoPO
.
getYellowTime
()));
phaseListElement
.
setYellowTime
(
Integer
.
valueOf
(
crossSchemeInfoPO
.
getYellowTime
()));
phaseListElement
.
setRedTime
(
Integer
.
valueOf
(
crossSchemeInfoPO
.
getRedTime
()));
phaseListElement
.
setRedTime
(
Integer
.
valueOf
(
crossSchemeInfoPO
.
getRedTime
()));
...
@@ -702,22 +702,22 @@ public class PlanSendServiceImpl implements PlanSendService {
...
@@ -702,22 +702,22 @@ public class PlanSendServiceImpl implements PlanSendService {
List
<
CrossSchemeStageOptLogPO
>
crossSchedulesPOList
=
mapper
.
convertValue
(
optView
.
getContent
(),
new
TypeReference
<
List
<
CrossSchemeStageOptLogPO
>>()
{
List
<
CrossSchemeStageOptLogPO
>
crossSchedulesPOList
=
mapper
.
convertValue
(
optView
.
getContent
(),
new
TypeReference
<
List
<
CrossSchemeStageOptLogPO
>>()
{
});
});
if
(
ObjectUtils
.
isNotEmpty
(
crossSchedulesPOList
))
{
if
(
ObjectUtils
.
isNotEmpty
(
crossSchedulesPOList
))
{
optPhaseList
.
addAll
(
oriPhaseList
);
for
(
int
i
=
0
;
i
<
crossSchedulesPOList
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
optPhaseList
.
size
();
i
++)
{
if
(
i
==
oriPhaseList
.
size
()){
if
(
i
==
crossSchedulesPOList
.
size
()){
break
;
break
;
}
}
CrossSchemeStageOptLogPO
optLogPO
=
crossSchedulesPOList
.
get
(
i
);
CrossSchemeStageOptLogPO
optLogPO
=
crossSchedulesPOList
.
get
(
i
);
SaveSchemeConfigDTO
.
PhaseListElement
optPhase
=
optPhaseList
.
get
(
i
);
SaveSchemeConfigDTO
.
PhaseListElement
phaseListElement
=
oriPhaseList
.
get
(
i
);
optPhase
.
setMinGreenTime
(
0
);
SaveSchemeConfigDTO
.
PhaseListElement
optPhase
=
new
SaveSchemeConfigDTO
.
PhaseListElement
();
optPhase
.
setMaxGreenTime
(
0
);
BeanUtils
.
copyProperties
(
phaseListElement
,
optPhase
);
optPhase
.
setGreenTime
(
optLogPO
.
getPhaseTime
());
Integer
yellowTime
=
phaseListElement
.
getYellowTime
();
optPhase
.
setGreenFlashTime
(
0
);
Integer
redTime
=
phaseListElement
.
getRedTime
();
optPhase
.
setYellowFlashTime
(
0
);
//相位时间
optPhase
.
setRedFlashTime
(
0
);
Integer
phaseTime
=
optLogPO
.
getPhaseTime
();
optPhase
.
setYellowTime
(
0
);
//绿灯时间
optPhase
.
setRedTime
(
0
);
int
greenTime
=
phaseTime
-
yellowTime
-
redTime
;
optPhase
.
setYellowFlash
(
0
);
optPhase
.
setGreenTime
(
greenTime
);
optPhaseList
.
add
(
optPhase
);
}
}
}
}
}
}
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/DiagnoServiceImpl.java
View file @
8d3da2e4
...
@@ -18,6 +18,7 @@ import net.wanji.databus.bo.CrossIdBO;
...
@@ -18,6 +18,7 @@ import net.wanji.databus.bo.CrossIdBO;
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.CrossSchemeRingsDTO
;
import
net.wanji.databus.dto.QueryByCrossIdAndTimeDTO
;
import
net.wanji.databus.po.*
;
import
net.wanji.databus.po.*
;
import
net.wanji.databus.vo.SchemeOptSendVO
;
import
net.wanji.databus.vo.SchemeOptSendVO
;
import
net.wanji.databus.vo.SchemeSendVO
;
import
net.wanji.databus.vo.SchemeSendVO
;
...
@@ -40,7 +41,6 @@ import org.springframework.stereotype.Service;
...
@@ -40,7 +41,6 @@ import org.springframework.stereotype.Service;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.time.LocalDate
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -234,34 +234,37 @@ public class DiagnoServiceImpl implements DiagnoService {
...
@@ -234,34 +234,37 @@ public class DiagnoServiceImpl implements DiagnoService {
@Override
@Override
public
List
<
SchemeOptVO
.
PhaseOptTime
>
schemeComparison
(
CrossIdAndSchemeIdDTO
crossIdAndSchemeIdDTO
)
{
public
List
<
SchemeOptVO
.
PhaseOptTime
>
schemeComparison
(
CrossIdAndSchemeIdDTO
crossIdAndSchemeIdDTO
)
{
String
crossId
=
crossIdAndSchemeIdDTO
.
getCrossId
();
String
crossId
=
crossIdAndSchemeIdDTO
.
getCrossId
();
Integer
schemeId
=
crossIdAndSchemeIdDTO
.
getSchemeId
();
List
<
SchemeOptVO
.
PhaseOptTime
>
phaseOptTimeList
=
new
ArrayList
<>();
List
<
SchemeOptVO
.
PhaseOptTime
>
phaseOptTimeList
=
new
ArrayList
<>();
CrossSchemeRingsDTO
crossSchemeRingsDTO
=
new
CrossSchemeRingsDTO
();
QueryByCrossIdAndTimeDTO
queryByCrossIdAndTimeDTO
=
new
QueryByCrossIdAndTimeDTO
();
crossSchemeRingsDTO
.
setCrossId
(
crossId
);
queryByCrossIdAndTimeDTO
.
setCrossId
(
crossId
);
crossSchemeRingsDTO
.
setPattern
(
String
.
valueOf
(
schemeId
));
queryByCrossIdAndTimeDTO
.
setDatetime
(
new
Date
());
//查询路口当前方案
//查询当前路口运行的方案
JsonViewObject
jsonViewObjectScheme
=
utcFeignClients
.
selectSchemeByParams
(
queryByCrossIdAndTimeDTO
);
LocalDate
now
=
LocalDate
.
now
();
Integer
jsonViewObjectSchemeCode
=
jsonViewObjectScheme
.
getCode
();
int
week
=
now
.
getDayOfWeek
().
getValue
();
if
(
jsonViewObjectSchemeCode
!=
200
){
if
(
week
==
7
)
{
log
.
info
(
"未查询到当前路口号,crossId:{}"
,
crossId
);
//表中周日用0表示
return
phaseOptTimeList
;
week
=
0
;
}
}
//通过路口号和方案号查询方案id
ObjectMapper
mapper1
=
JacksonUtils
.
getInstance
();
CrossNowSchemePO
baseCrossSchemePO
=
baseCrossSchemeMapper
.
selectByCrossIdAndWeek
(
crossId
,
week
);
BaseCrossSchemePO
baseCrossSchemePO
=
mapper1
.
convertValue
(
jsonViewObjectScheme
.
getContent
(),
new
TypeReference
<
BaseCrossSchemePO
>()
{
});
if
(
ObjectUtils
.
isEmpty
(
baseCrossSchemePO
)){
if
(
ObjectUtils
.
isEmpty
(
baseCrossSchemePO
)){
return
phaseOptTimeList
;
return
phaseOptTimeList
;
}
}
Integer
schemeNo
=
baseCrossSchemePO
.
getSchemeId
(
);
Integer
schemeNo
=
Integer
.
valueOf
(
baseCrossSchemePO
.
getSchemeNo
()
);
if
(
ObjectUtil
.
isEmpty
(
schemeNo
)){
if
(
ObjectUtil
.
isEmpty
(
schemeNo
)
||
schemeNo
==
85
){
log
.
info
(
"当前路口为黃闪,crossId:{}"
,
crossId
);
log
.
info
(
"当前路口为黃闪,crossId:{}"
,
crossId
);
return
phaseOptTimeList
;
return
phaseOptTimeList
;
}
}
schemeNo
=
(
schemeNo
+
2
)/
3
;
List
<
CrossPhasePO
>
phasePOList
=
baseCrossPhaseMapper
.
selectByCrossIdAndSchemeNo
(
crossId
,
schemeNo
);
List
<
CrossPhasePO
>
phasePOList
=
baseCrossPhaseMapper
.
selectByCrossIdAndSchemeId
(
crossId
,
schemeNo
);
if
(
ObjectUtils
.
isEmpty
(
phasePOList
)
||
ObjectUtils
.
isEmpty
(
schemeNo
))
{
if
(
ObjectUtils
.
isEmpty
(
phasePOList
)
||
ObjectUtils
.
isEmpty
(
schemeNo
))
{
return
phaseOptTimeList
;
return
phaseOptTimeList
;
}
}
CrossSchemeRingsDTO
crossSchemeRingsDTO
=
new
CrossSchemeRingsDTO
();
crossSchemeRingsDTO
.
setCrossId
(
crossId
);
crossSchemeRingsDTO
.
setPattern
(
String
.
valueOf
(
schemeNo
));
JsonViewObject
jsonViewObject
=
utcFeignClients
.
schemeOptLog
(
crossSchemeRingsDTO
);
JsonViewObject
jsonViewObject
=
utcFeignClients
.
schemeOptLog
(
crossSchemeRingsDTO
);
Integer
code
=
jsonViewObject
.
getCode
();
Integer
code
=
jsonViewObject
.
getCode
();
ObjectMapper
mapper
=
JacksonUtils
.
getInstance
();
ObjectMapper
mapper
=
JacksonUtils
.
getInstance
();
...
@@ -282,7 +285,7 @@ public class DiagnoServiceImpl implements DiagnoService {
...
@@ -282,7 +285,7 @@ public class DiagnoServiceImpl implements DiagnoService {
}
else
{
}
else
{
for
(
CrossPhasePO
crossPhasePO
:
phasePOList
)
{
for
(
CrossPhasePO
crossPhasePO
:
phasePOList
)
{
SchemeOptVO
.
PhaseOptTime
phaseOptTime
=
new
SchemeOptVO
.
PhaseOptTime
();
SchemeOptVO
.
PhaseOptTime
phaseOptTime
=
new
SchemeOptVO
.
PhaseOptTime
();
phaseOptTime
.
setPhaseNo
(
crossPhasePO
.
getPhaseNo
(
));
phaseOptTime
.
setPhaseNo
(
String
.
valueOf
(
crossPhasePO
.
getSort
()
));
Integer
oriPhaseTime
=
crossPhasePO
.
getPhaseTime
();
Integer
oriPhaseTime
=
crossPhasePO
.
getPhaseTime
();
phaseOptTime
.
setOriGreenTime
(
oriPhaseTime
);
phaseOptTime
.
setOriGreenTime
(
oriPhaseTime
);
List
<
CrossSchemeStageOptLogPO
>
list
=
crossSchedulesPOList
.
stream
().
filter
(
x
->
x
.
getPhaseNo
().
equals
(
String
.
valueOf
(
crossPhasePO
.
getSort
()))).
collect
(
Collectors
.
toList
());
List
<
CrossSchemeStageOptLogPO
>
list
=
crossSchedulesPOList
.
stream
().
filter
(
x
->
x
.
getPhaseNo
().
equals
(
String
.
valueOf
(
crossPhasePO
.
getSort
()))).
collect
(
Collectors
.
toList
());
...
@@ -293,8 +296,7 @@ public class DiagnoServiceImpl implements DiagnoService {
...
@@ -293,8 +296,7 @@ public class DiagnoServiceImpl implements DiagnoService {
CrossSchemeStageOptLogPO
optLogPO
=
list
.
get
(
0
);
CrossSchemeStageOptLogPO
optLogPO
=
list
.
get
(
0
);
Integer
optPhaseTime
=
optLogPO
.
getPhaseTime
();
Integer
optPhaseTime
=
optLogPO
.
getPhaseTime
();
phaseOptTime
.
setOptGreenTime
(
optPhaseTime
);
phaseOptTime
.
setOptGreenTime
(
optPhaseTime
);
//两个时间的绝对值
int
optTime
=
oriPhaseTime
-
optPhaseTime
;
int
optTime
=
Math
.
abs
(
oriPhaseTime
-
optPhaseTime
);
phaseOptTime
.
setOptTime
(
optTime
);
phaseOptTime
.
setOptTime
(
optTime
);
}
}
phaseOptTimeList
.
add
(
phaseOptTime
);
phaseOptTimeList
.
add
(
phaseOptTime
);
...
...
wj-databus/src/main/java/net/wanji/databus/dao/mapper/BaseCrossPhaseMapper.java
View file @
8d3da2e4
...
@@ -41,6 +41,9 @@ public interface BaseCrossPhaseMapper {
...
@@ -41,6 +41,9 @@ public interface BaseCrossPhaseMapper {
List
<
CrossPhasePO
>
selectByCrossIdAndSchemeId
(
@Param
(
"crossId"
)
String
crossId
,
List
<
CrossPhasePO
>
selectByCrossIdAndSchemeId
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"schemeId"
)
Integer
schemeId
);
@Param
(
"schemeId"
)
Integer
schemeId
);
List
<
CrossPhasePO
>
selectByCrossIdAndSchemeNo
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"schemeNo"
)
Integer
schemeNo
);
void
update
(
CrossPhasePO
crossPhasePO
);
void
update
(
CrossPhasePO
crossPhasePO
);
void
insertBatch
(
List
<
CrossPhasePO
>
crossPhaseList
);
void
insertBatch
(
List
<
CrossPhasePO
>
crossPhaseList
);
...
...
wj-databus/src/main/resources/mapper/BaseCrossPhaseMapper.xml
View file @
8d3da2e4
...
@@ -172,4 +172,18 @@
...
@@ -172,4 +172,18 @@
order by sort
order by sort
</select>
</select>
<select
id=
"selectByCrossIdAndSchemeNo"
resultMap=
"BaseResultMap"
>
SELECT
phase.id,phase.phase_no,phase.NAME,phase.sort,phase.cross_id,phase.plan_id,phase.ring_no,phase.group_no,phase.phase_type,phase.control_mode,phase.phase_time,phase.green_time,phase.green_flash_time,phase.yellow_flash_time,phase.red_flash_time,phase.ped_flash_time,phase.yellow_time,phase.red_time,phase.min_green_time,phase.max_green_time,phase.gmt_create,phase.gmt_modified
FROM
t_base_cross_phase phase
LEFT JOIN t_base_cross_scheme scheme ON phase.cross_id = scheme.cross_id
AND phase.plan_id = scheme.id
WHERE
phase.cross_id = #{crossId}
AND scheme.scheme_no = #{schemeNo}
ORDER BY
sort
</select>
</mapper>
</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