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
21927e5b
Commit
21927e5b
authored
Dec 01, 2024
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 路口策略历史优化查询
parent
77c41809
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
148 additions
and
29 deletions
+148
-29
BaseCrossInfoCache.java
...src/main/java/net/wanji/opt/cache/BaseCrossInfoCache.java
+1
-1
StrategyCrossResultMapper.java
...a/net/wanji/opt/dao/mapper/StrategyCrossResultMapper.java
+11
-0
StrategyCrossAlgoEnum.java
.../net/wanji/opt/synthesis/enums/StrategyCrossAlgoEnum.java
+31
-0
StrategyCrossResultEntity.java
...t/wanji/opt/synthesis/pojo/StrategyCrossResultEntity.java
+62
-0
StrategyControlServiceImpl.java
...pt/synthesis/service/impl/StrategyControlServiceImpl.java
+35
-28
StrategyCrossResultMapper.xml
...e/src/main/resources/mapper/StrategyCrossResultMapper.xml
+8
-0
No files found.
signal-optimize-service/src/main/java/net/wanji/opt/cache/BaseCrossInfoCache.java
View file @
21927e5b
...
@@ -39,7 +39,7 @@ public class BaseCrossInfoCache implements CommandLineRunner {
...
@@ -39,7 +39,7 @@ public class BaseCrossInfoCache implements CommandLineRunner {
/**
/**
* 通过路口编号查询经纬度
* 通过路口编号查询经纬度
*/
*/
public
String
getCoordinateByCrossId
(
String
crossId
)
{
public
static
String
getCoordinateByCrossId
(
String
crossId
)
{
for
(
BaseCrossInfoPO
baseCrossInfoPO
:
crossInfoList
)
{
for
(
BaseCrossInfoPO
baseCrossInfoPO
:
crossInfoList
)
{
if
(
StringUtils
.
equals
(
crossId
,
baseCrossInfoPO
.
getId
()))
{
if
(
StringUtils
.
equals
(
crossId
,
baseCrossInfoPO
.
getId
()))
{
return
baseCrossInfoPO
.
getLocation
();
return
baseCrossInfoPO
.
getLocation
();
...
...
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/StrategyCrossResultMapper.java
0 → 100644
View file @
21927e5b
package
net
.
wanji
.
opt
.
dao
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
net.wanji.opt.synthesis.pojo.StrategyCrossResultEntity
;
/**
* @author duanruiming
* @date 2024/12/01 14:23
*/
public
interface
StrategyCrossResultMapper
extends
BaseMapper
<
StrategyCrossResultEntity
>
{
}
signal-optimize-service/src/main/java/net/wanji/opt/synthesis/enums/StrategyCrossAlgoEnum.java
0 → 100644
View file @
21927e5b
package
net
.
wanji
.
opt
.
synthesis
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Objects
;
/**
* @author duanruiming
* @date 2024/12/01 14:44
*/
@Getter
@AllArgsConstructor
public
enum
StrategyCrossAlgoEnum
{
ZERO
(
0
,
"无策略"
),
ONE
(
1
,
"绿灯空放"
),
TWO
(
2
,
"失衡"
),
THREE
(
3
,
"溢出"
);
private
Integer
code
;
private
String
desc
;
public
static
String
getDescByCode
(
Integer
code
)
{
for
(
StrategyCrossAlgoEnum
value
:
StrategyCrossAlgoEnum
.
values
())
{
if
(
Objects
.
equals
(
code
,
value
.
code
))
{
return
value
.
getDesc
();
}
}
return
"无策略"
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/synthesis/pojo/StrategyCrossResultEntity.java
0 → 100644
View file @
21927e5b
package
net
.
wanji
.
opt
.
synthesis
.
pojo
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
/**
* @author duanruiming
* @date 2024/12/01 14:12
*/
@Data
@TableName
(
"t_strategy_cross_result"
)
public
class
StrategyCrossResultEntity
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
@TableField
(
"cross_id"
)
private
String
crossId
;
@TableField
(
"cross_name"
)
private
String
crossName
;
@TableField
(
"current_algo"
)
private
Integer
currentAlgo
;
@TableField
(
"request_time"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
String
requestTime
;
@TableField
(
"issue_time"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
String
issueTime
;
@TableField
(
"response_code"
)
private
Integer
responseCode
;
@TableField
(
"timing_plan"
)
private
String
timingPlan
;
@TableField
(
"insert_time"
)
private
String
insertTime
;
@TableField
(
"rtn_type"
)
private
Integer
rtnType
;
@TableField
(
"extend_time"
)
private
Integer
extendTime
;
@TableField
(
"block_region"
)
private
Integer
blockRegion
;
@TableField
(
"block_type"
)
private
Integer
blockType
;
@TableField
(
"count_down"
)
private
Integer
countDown
;
@TableField
(
"video_stamp"
)
@JsonFormat
(
shape
=
JsonFormat
.
Shape
.
STRING
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
String
videoStamp
;
@TableField
(
"signal_machine_stamp"
)
private
Long
signalMachineStamp
;
@TableField
(
"control_dir"
)
private
String
controlDir
;
@TableField
(
"data"
)
private
String
data
;
@TableField
(
"duration"
)
private
Integer
duration
;
@TableField
(
"empty_turn"
)
private
Integer
emptyTurn
;
@TableField
(
"empty_dir"
)
private
String
empty_dir
;
}
signal-optimize-service/src/main/java/net/wanji/opt/synthesis/service/impl/StrategyControlServiceImpl.java
View file @
21927e5b
...
@@ -11,17 +11,17 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -11,17 +11,17 @@ import lombok.extern.slf4j.Slf4j;
import
net.wanji.common.enums.DateStyle
;
import
net.wanji.common.enums.DateStyle
;
import
net.wanji.common.framework.Constants
;
import
net.wanji.common.framework.Constants
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.common.framework.rest.JsonViewObject
;
import
net.wanji.common.utils.licenseUtils.DateUtils
;
import
net.wanji.common.utils.tool.JacksonUtils
;
import
net.wanji.common.utils.tool.JacksonUtils
;
import
net.wanji.databus.dao.entity.GreenwaveInfoPO
;
import
net.wanji.databus.dao.entity.GreenwaveInfoPO
;
import
net.wanji.databus.dao.mapper.BaseCrossInfoMapper
;
import
net.wanji.databus.dao.mapper.BaseCrossInfoMapper
;
import
net.wanji.databus.dao.mapper.GreenwaveInfoMapper
;
import
net.wanji.databus.dao.mapper.GreenwaveInfoMapper
;
import
net.wanji.databus.po.BaseCrossInfoPO
;
import
net.wanji.databus.po.BaseCrossInfoPO
;
import
net.wanji.opt.cache.BaseCrossInfoCache
;
import
net.wanji.opt.cache.GreenWaveInfoCache
;
import
net.wanji.opt.cache.GreenWaveInfoCache
;
import
net.wanji.opt.dao.mapper.*
;
import
net.wanji.opt.dao.mapper.*
;
import
net.wanji.opt.po.StrategyGreenOptHistEntity
;
import
net.wanji.opt.po.StrategyGreenOptHistEntity
;
import
net.wanji.opt.synthesis.enums.StrategyCrossAlgoEnum
;
import
net.wanji.opt.synthesis.pojo.*
;
import
net.wanji.opt.synthesis.pojo.*
;
import
net.wanji.opt.synthesis.pojo.request.StrategyHistReq
;
import
net.wanji.opt.synthesis.service.PushStrategyControlService
;
import
net.wanji.opt.synthesis.service.PushStrategyControlService
;
import
net.wanji.opt.synthesis.service.StrategyControlService
;
import
net.wanji.opt.synthesis.service.StrategyControlService
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
...
@@ -31,10 +31,10 @@ import org.springframework.util.CollectionUtils;
...
@@ -31,10 +31,10 @@ import org.springframework.util.CollectionUtils;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.lang.reflect.InvocationTargetException
;
import
java.lang.reflect.InvocationTargetException
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.time.LocalDate
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.temporal.ChronoUnit
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -62,6 +62,8 @@ public class StrategyControlServiceImpl implements StrategyControlService {
...
@@ -62,6 +62,8 @@ public class StrategyControlServiceImpl implements StrategyControlService {
private
GreenwaveInfoMapper
greenwaveInfoMapper
;
private
GreenwaveInfoMapper
greenwaveInfoMapper
;
@Resource
@Resource
private
StrategyGreenOptHistMapper
strategyGreenOptHistMapper
;
private
StrategyGreenOptHistMapper
strategyGreenOptHistMapper
;
@Resource
private
StrategyCrossResultMapper
strategyCrossResultMapper
;
@Override
@Override
...
@@ -165,19 +167,47 @@ public class StrategyControlServiceImpl implements StrategyControlService {
...
@@ -165,19 +167,47 @@ public class StrategyControlServiceImpl implements StrategyControlService {
@Override
@Override
public
JsonViewObject
crossStrategyHistList
()
throws
Exception
{
public
JsonViewObject
crossStrategyHistList
()
throws
Exception
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
List
<
StrategyControlHistVO
>
results
=
new
ArrayList
<>();
List
<
StrategyControlHistVO
>
results
=
new
ArrayList
<>();
LocalDate
currentDate
=
LocalDate
.
now
();
LocalDate
currentDate
=
LocalDate
.
now
();
LocalDateTime
midnight
=
currentDate
.
atStartOfDay
();
LocalDateTime
midnight
=
currentDate
.
atStartOfDay
();
// 查询当前绿波历史记录
setGreenOptHist
(
results
,
midnight
,
format
);
setCrossOptHist
(
results
,
midnight
);
return
JsonViewObject
.
newInstance
().
success
(
results
);
}
private
void
setCrossOptHist
(
List
<
StrategyControlHistVO
>
results
,
LocalDateTime
midnight
)
{
LambdaQueryWrapper
<
StrategyCrossResultEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
ge
(
StrategyCrossResultEntity:
:
getIssueTime
,
midnight
);
List
<
StrategyCrossResultEntity
>
resultEntities
=
strategyCrossResultMapper
.
selectList
(
queryWrapper
);
if
(!
CollectionUtils
.
isEmpty
(
resultEntities
))
{
for
(
StrategyCrossResultEntity
resultEntity
:
resultEntities
)
{
StrategyControlHistVO
histVO
=
new
StrategyControlHistVO
();
String
crossId
=
resultEntity
.
getCrossId
();
histVO
.
setId
(
crossId
);
histVO
.
setName
(
resultEntity
.
getCrossName
());
String
coordinateByCrossId
=
BaseCrossInfoCache
.
getCoordinateByCrossId
(
crossId
);
histVO
.
setWkt
(
coordinateByCrossId
.
replace
(
"POINT("
,
""
).
replace
(
" "
,
","
).
replace
(
")"
,
""
));
histVO
.
setStrategy
(
resultEntity
.
getCurrentAlgo
());
histVO
.
setStrategyName
(
StrategyCrossAlgoEnum
.
getDescByCode
(
resultEntity
.
getCurrentAlgo
()));
histVO
.
setOptTime
(
resultEntity
.
getIssueTime
());
histVO
.
setResult
(
Objects
.
equals
(
200
,
resultEntity
.
getResponseCode
())
?
"成功"
:
"失败"
);
results
.
add
(
histVO
);
}
}
}
private
void
setGreenOptHist
(
List
<
StrategyControlHistVO
>
results
,
LocalDateTime
midnight
,
SimpleDateFormat
format
)
throws
ParseException
{
LambdaQueryWrapper
<
StrategyGreenOptHistEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
LambdaQueryWrapper
<
StrategyGreenOptHistEntity
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
queryWrapper
.
ge
(
StrategyGreenOptHistEntity:
:
getControlTime
,
midnight
);
queryWrapper
.
ge
(
StrategyGreenOptHistEntity:
:
getControlTime
,
midnight
);
List
<
StrategyGreenOptHistEntity
>
entities
=
strategyGreenOptHistMapper
.
selectList
(
queryWrapper
);
List
<
StrategyGreenOptHistEntity
>
entities
=
strategyGreenOptHistMapper
.
selectList
(
queryWrapper
);
if
(!
CollectionUtils
.
isEmpty
(
entities
))
{
if
(!
CollectionUtils
.
isEmpty
(
entities
))
{
SimpleDateFormat
format
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Map
<
Integer
,
GreenwaveInfoPO
>
greenWaveMap
=
GreenWaveInfoCache
.
greenWaveMap
;
Map
<
Integer
,
GreenwaveInfoPO
>
greenWaveMap
=
GreenWaveInfoCache
.
greenWaveMap
;
for
(
StrategyGreenOptHistEntity
entity
:
entities
)
{
for
(
StrategyGreenOptHistEntity
entity
:
entities
)
{
StrategyControlHistVO
histVO
=
new
StrategyControlHistVO
();
StrategyControlHistVO
histVO
=
new
StrategyControlHistVO
();
histVO
.
setId
(
String
.
valueOf
(
entity
.
getGreenId
()));
histVO
.
setId
(
String
.
valueOf
(
entity
.
getGreenId
()));
if
(
greenWaveMap
.
isEmpty
())
{
if
(
greenWaveMap
.
isEmpty
())
{
continue
;
continue
;
}
}
String
controlTime
=
entity
.
getControlTime
();
String
controlTime
=
entity
.
getControlTime
();
...
@@ -204,29 +234,6 @@ public class StrategyControlServiceImpl implements StrategyControlService {
...
@@ -204,29 +234,6 @@ public class StrategyControlServiceImpl implements StrategyControlService {
results
.
add
(
histVO
);
results
.
add
(
histVO
);
}
}
}
}
//LambdaQueryWrapper<StrategyControlDataEntity> queryWrapper = new LambdaQueryWrapper<>();
//queryWrapper.isNotNull(StrategyControlDataEntity::getScheduleStart);
//queryWrapper.orderByDesc(StrategyControlDataEntity::getScheduleEnd);
//List<StrategyControlDataEntity> entities = strategyControlInfoMapper.selectList(queryWrapper);
//if (!CollectionUtils.isEmpty(entities)) {
// for (StrategyControlDataEntity entity : entities) {
// Integer type = entity.getBizType();
// if (type == 0) {
// BaseCrossInfoPO baseCrossInfoPO = baseCrossInfoMapper.selectById(entity.getBizId());
// entity.setCrossName(baseCrossInfoPO.getName());
// String location = baseCrossInfoPO.getLocation();
// location = location.replace("POINT(", "").replace(" ", ",").replace(")", "");
// entity.setWkt(location);
// }
// if (type == 1) {
// GreenwaveInfoPO greenwaveInfoPO = greenwaveInfoMapper.selectById(Integer.valueOf(entity.getBizId()));
// entity.setCrossName(greenwaveInfoPO.getName());
// entity.setWkt(greenwaveInfoPO.getWkt());
// }
// results.add(entity);
// }
//}
return
JsonViewObject
.
newInstance
().
success
(
results
);
}
}
@Override
@Override
...
...
signal-optimize-service/src/main/resources/mapper/StrategyCrossResultMapper.xml
0 → 100644
View file @
21927e5b
<?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.opt.dao.mapper.StrategyCrossResultMapper"
>
</mapper>
\ No newline at end of file
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