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
425c88b0
Commit
425c88b0
authored
Dec 11, 2024
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 优化停车次数小数点
parent
4782ba5b
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
105 additions
and
1 deletion
+105
-1
OptStatusEnum.java
...c/main/java/net/wanji/opt/common/enums/OptStatusEnum.java
+28
-0
CrossIndexController.java
.../wanji/opt/controller/signalopt/CrossIndexController.java
+18
-0
CrossIndexService.java
...rc/main/java/net/wanji/opt/service/CrossIndexService.java
+3
-0
CrossIndexServiceImpl.java
...ava/net/wanji/opt/service/impl/CrossIndexServiceImpl.java
+38
-1
AIOptResultVO.java
...service/src/main/java/net/wanji/opt/vo/AIOptResultVO.java
+18
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/common/enums/OptStatusEnum.java
0 → 100644
View file @
425c88b0
package
net
.
wanji
.
opt
.
common
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2024/12/11 20:33
*/
@Getter
@AllArgsConstructor
public
enum
OptStatusEnum
{
ONE
(
1
,
"优化中"
),
TWO
(
2
,
"优化完"
);
private
Integer
code
;
private
String
desc
;
public
static
String
getDesc
(
Integer
code
)
{
for
(
OptStatusEnum
value
:
OptStatusEnum
.
values
())
{
if
(
Objects
.
equals
(
code
,
value
.
getCode
()))
{
return
value
.
getDesc
();
}
}
return
OptStatusEnum
.
ONE
.
getDesc
();
}
}
signal-optimize-service/src/main/java/net/wanji/opt/controller/signalopt/CrossIndexController.java
View file @
425c88b0
...
@@ -11,6 +11,7 @@ import net.wanji.databus.po.CrossDirDataRealtimePO;
...
@@ -11,6 +11,7 @@ import net.wanji.databus.po.CrossDirDataRealtimePO;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO
;
import
net.wanji.opt.dto.strategy.AddOrUpdateSceneDTO
;
import
net.wanji.opt.service.CrossIndexService
;
import
net.wanji.opt.service.CrossIndexService
;
import
net.wanji.opt.vo.AIOptResultVO
;
import
net.wanji.opt.vo.CrossOptResult
;
import
net.wanji.opt.vo.CrossOptResult
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
...
@@ -83,4 +84,21 @@ public class CrossIndexController {
...
@@ -83,4 +84,21 @@ public class CrossIndexController {
return
JsonViewObject
.
newInstance
().
success
(
results
);
return
JsonViewObject
.
newInstance
().
success
(
results
);
}
}
@ApiOperation
(
value
=
"AI路口"
,
notes
=
"优化监测-AI路口"
,
response
=
JsonViewObject
.
class
,
produces
=
MediaType
.
APPLICATION_JSON
,
consumes
=
MediaType
.
APPLICATION_JSON
)
@GetMapping
(
value
=
"/crossAIList"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
AddOrUpdateSceneDTO
.
class
),
})
public
JsonViewObject
crossAIList
()
{
List
<
AIOptResultVO
>
results
=
null
;
try
{
results
=
crossIndexService
.
crossAIList
();
}
catch
(
Exception
e
)
{
JsonViewObject
.
newInstance
().
fail
(
"优化监测-AI路口"
);
}
return
JsonViewObject
.
newInstance
().
success
(
results
);
}
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossIndexService.java
View file @
425c88b0
...
@@ -4,6 +4,7 @@ import net.wanji.databus.bo.CrossIdBO;
...
@@ -4,6 +4,7 @@ import net.wanji.databus.bo.CrossIdBO;
import
net.wanji.databus.po.CrossDataRealtimePO
;
import
net.wanji.databus.po.CrossDataRealtimePO
;
import
net.wanji.databus.po.CrossDirDataRealtimePO
;
import
net.wanji.databus.po.CrossDirDataRealtimePO
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.opt.vo.AIOptResultVO
;
import
net.wanji.opt.vo.CrossOptResult
;
import
net.wanji.opt.vo.CrossOptResult
;
import
java.util.List
;
import
java.util.List
;
...
@@ -21,4 +22,6 @@ public interface CrossIndexService {
...
@@ -21,4 +22,6 @@ public interface CrossIndexService {
List
<
TBaseCrossInfo
>
crossInfoList
();
List
<
TBaseCrossInfo
>
crossInfoList
();
List
<
CrossOptResult
>
crossOptResultList
(
CrossIdBO
crossIdBO
)
throws
Exception
;
List
<
CrossOptResult
>
crossOptResultList
(
CrossIdBO
crossIdBO
)
throws
Exception
;
List
<
AIOptResultVO
>
crossAIList
();
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossIndexServiceImpl.java
View file @
425c88b0
...
@@ -11,11 +11,13 @@ import net.wanji.databus.po.CrossDataRealtimePO;
...
@@ -11,11 +11,13 @@ import net.wanji.databus.po.CrossDataRealtimePO;
import
net.wanji.databus.po.CrossDirDataRealtimePO
;
import
net.wanji.databus.po.CrossDirDataRealtimePO
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.databus.po.TBaseCrossInfo
;
import
net.wanji.opt.common.enums.CrossOptStrategyEnum
;
import
net.wanji.opt.common.enums.CrossOptStrategyEnum
;
import
net.wanji.opt.common.enums.OptStatusEnum
;
import
net.wanji.opt.common.enums.StrategyControlEnum
;
import
net.wanji.opt.dao.mapper.StrategyCrossResultMapper
;
import
net.wanji.opt.dao.mapper.StrategyCrossResultMapper
;
import
net.wanji.opt.service.CrossIndexService
;
import
net.wanji.opt.service.CrossIndexService
;
import
net.wanji.opt.synthesis.pojo.StrategyCrossResultEntity
;
import
net.wanji.opt.synthesis.pojo.StrategyCrossResultEntity
;
import
net.wanji.opt.vo.AIOptResultVO
;
import
net.wanji.opt.vo.CrossOptResult
;
import
net.wanji.opt.vo.CrossOptResult
;
import
org.drools.core.util.DateUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
...
@@ -101,4 +103,39 @@ public class CrossIndexServiceImpl implements CrossIndexService {
...
@@ -101,4 +103,39 @@ public class CrossIndexServiceImpl implements CrossIndexService {
}
}
return
crossOptResults
;
return
crossOptResults
;
}
}
@Override
public
List
<
AIOptResultVO
>
crossAIList
()
{
List
<
AIOptResultVO
>
results
=
new
ArrayList
<>();
LocalDate
currentDate
=
LocalDate
.
now
();
LocalTime
startTime
=
LocalTime
.
MIDNIGHT
;
LocalDateTime
startOfDay
=
LocalDateTime
.
of
(
currentDate
,
startTime
);
LambdaQueryWrapper
<
StrategyCrossResultEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
ge
(
StrategyCrossResultEntity:
:
getIssueTime
,
startOfDay
);
List
<
StrategyCrossResultEntity
>
list
=
strategyCrossResultMapper
.
selectList
(
queryWrapper
);
if
(!
CollectionUtils
.
isEmpty
(
list
))
{
// 查询出表中当天最新数据
Map
<
String
,
Optional
<
StrategyCrossResultEntity
>>
crossTimeMap
=
list
.
stream
().
collect
(
Collectors
.
groupingBy
(
StrategyCrossResultEntity:
:
getCrossId
,
Collectors
.
maxBy
(
Comparator
.
comparing
(
StrategyCrossResultEntity:
:
getIssueTime
))));
List
<
StrategyCrossResultEntity
>
crossMaxTimeList
=
crossTimeMap
.
values
().
stream
().
map
(
Optional:
:
get
).
collect
(
Collectors
.
toList
());
if
(!
CollectionUtils
.
isEmpty
(
crossMaxTimeList
))
{
for
(
StrategyCrossResultEntity
resultEntity
:
crossMaxTimeList
)
{
AIOptResultVO
aiOptResultVO
=
new
AIOptResultVO
();
aiOptResultVO
.
setId
(
resultEntity
.
getCrossId
());
aiOptResultVO
.
setName
(
resultEntity
.
getCrossName
());
Integer
currentAlgo
=
resultEntity
.
getCurrentAlgo
();
aiOptResultVO
.
setStrategy
(
currentAlgo
);
// 失衡 均衡调控,其他效率提升
aiOptResultVO
.
setOptMethod
(
Objects
.
equals
(
1
,
currentAlgo
)
?
StrategyControlEnum
.
ONE
.
getMethod
()
:
StrategyControlEnum
.
TWO
.
getMethod
());
// 失衡 优化中,其他,优化完
Integer
optStatus
=
Objects
.
equals
(
1
,
currentAlgo
)
?
OptStatusEnum
.
ONE
.
getCode
()
:
OptStatusEnum
.
TWO
.
getCode
();
aiOptResultVO
.
setOptStatus
(
optStatus
);
aiOptResultVO
.
setOptStatusName
(
Objects
.
equals
(
1
,
currentAlgo
)
?
OptStatusEnum
.
ONE
.
getDesc
()
:
OptStatusEnum
.
TWO
.
getDesc
());
results
.
add
(
aiOptResultVO
);
}
}
}
Collections
.
sort
(
results
,
Comparator
.
comparingInt
(
AIOptResultVO:
:
getOptStatus
));
return
results
;
}
}
}
signal-optimize-service/src/main/java/net/wanji/opt/vo/AIOptResultVO.java
0 → 100644
View file @
425c88b0
package
net
.
wanji
.
opt
.
vo
;
import
lombok.Data
;
/**
* @author duanruiming
* @date 2024/12/11 17:52
*/
@Data
public
class
AIOptResultVO
{
private
String
id
;
private
String
name
;
/** 0:无策略 1:绿灯空放 2:失衡 3:溢出 */
private
Integer
strategy
;
private
String
optMethod
;
private
String
optStatusName
;
private
Integer
optStatus
;
}
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