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
a8673e53
Commit
a8673e53
authored
Jan 29, 2023
by
黄福新
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 1、路口失衡优化接口、逻辑定义;2、删除优化服务公共工具类,调用wj-common
parent
ab344be5
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
292 additions
and
241 deletions
+292
-241
pom.xml
signal-optimize-service/pom.xml
+5
-0
Constants.java
...service/src/main/java/net/wanji/opt/common/Constants.java
+0
-30
Result.java
...ze-service/src/main/java/net/wanji/opt/common/Result.java
+0
-46
ResultCode.java
...ervice/src/main/java/net/wanji/opt/common/ResultCode.java
+0
-31
CrossStatusEnum.java
...main/java/net/wanji/opt/common/enums/CrossStatusEnum.java
+0
-28
CrossSchedulesMapper.java
...n/java/net/wanji/opt/dao/mapper/CrossSchedulesMapper.java
+3
-1
CrossPhaseDTO.java
...ervice/src/main/java/net/wanji/opt/dto/CrossPhaseDTO.java
+7
-1
CrossSectionDTO.java
...vice/src/main/java/net/wanji/opt/dto/CrossSectionDTO.java
+5
-2
CrossOptimizeService.java
...main/java/net/wanji/opt/service/CrossOptimizeService.java
+5
-1
CrossSchedulesService.java
...ain/java/net/wanji/opt/service/CrossSchedulesService.java
+3
-2
CrossOptimizeServiceImpl.java
.../net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
+158
-64
CrossSchedulesServiceImpl.java
...net/wanji/opt/service/impl/CrossSchedulesServiceImpl.java
+2
-2
CrossMonitorTask.java
...ce/src/main/java/net/wanji/opt/task/CrossMonitorTask.java
+101
-0
RealtimeOptimizeTask.java
...rc/main/java/net/wanji/opt/task/RealtimeOptimizeTask.java
+0
-30
CrossSchedulesMapper.xml
...ervice/src/main/resources/mapper/CrossSchedulesMapper.xml
+3
-3
No files found.
signal-optimize-service/pom.xml
View file @
a8673e53
...
@@ -24,6 +24,11 @@
...
@@ -24,6 +24,11 @@
<artifactId>
wj-common
</artifactId>
<artifactId>
wj-common
</artifactId>
<version>
0.0.2
</version>
<version>
0.0.2
</version>
</dependency>
</dependency>
<dependency>
<groupId>
net.wanji
</groupId>
<artifactId>
wj-databus
</artifactId>
<version>
0.0.1
</version>
</dependency>
<dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
...
...
signal-optimize-service/src/main/java/net/wanji/opt/common/Constants.java
View file @
a8673e53
...
@@ -7,36 +7,6 @@ public class Constants {
...
@@ -7,36 +7,6 @@ public class Constants {
*/
*/
public
static
final
String
SYSTEM_ABBR
=
"OPT"
;
public
static
final
String
SYSTEM_ABBR
=
"OPT"
;
/**
* 否
*/
public
static
final
Integer
NO
=
0
;
/**
* 是
*/
public
static
final
Integer
YES
=
1
;
/**
* 分隔符:下划线
**/
public
static
final
String
SEPARATOR_UNDER_LINE
=
"_"
;
/**
* 分隔符:逗号
**/
public
static
final
String
SEPARATOR_COMMA
=
","
;
/**
* 分隔符:减号
**/
public
static
final
String
SEPARATOR_MINUS
=
"-"
;
/**
* 分隔符:冒号
**/
public
static
final
String
SEPARATOR_COLON
=
":"
;
/**
/**
* 相位(灯态)锁定
* 相位(灯态)锁定
*/
*/
...
...
signal-optimize-service/src/main/java/net/wanji/opt/common/Result.java
deleted
100644 → 0
View file @
ab344be5
package
net
.
wanji
.
opt
.
common
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.io.Serializable
;
/**
* @Description: [API响应结果封装]
* @author hfx
* @version 1.0
* Created on 2019/4/28 19:45
*/
@Data
@Accessors
(
chain
=
true
)
@NoArgsConstructor
@AllArgsConstructor
public
class
Result
implements
Serializable
{
private
Integer
status
;
private
String
msg
;
private
Object
data
;
public
static
Result
success
()
{
return
new
Result
(
ResultCode
.
SUCCESS
.
getStatus
(),
ResultCode
.
SUCCESS
.
getMsg
(),
null
);
}
public
static
Result
fail
()
{
return
new
Result
(
ResultCode
.
FAIL
.
getStatus
(),
ResultCode
.
FAIL
.
getMsg
(),
null
);
}
public
static
Result
success
(
Object
data
)
{
return
new
Result
(
ResultCode
.
SUCCESS
.
getStatus
(),
ResultCode
.
SUCCESS
.
getMsg
(),
data
);
}
public
static
Result
fail
(
String
msg
)
{
return
new
Result
(
ResultCode
.
FAIL
.
getStatus
(),
msg
,
null
);
}
public
static
Result
fail
(
Integer
status
,
String
msg
)
{
return
new
Result
(
status
,
msg
,
null
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/common/ResultCode.java
deleted
100644 → 0
View file @
ab344be5
package
net
.
wanji
.
opt
.
common
;
/**
* 响应码枚举,参考HTTP状态码的语义
*/
public
enum
ResultCode
{
SUCCESS
(
200
,
"操作成功"
),
FAIL
(
400
,
"操作失败"
),
UNAUTHORIZED
(
401
,
"未认证,签名错误"
),
INVALID
(
403
,
"token无效"
),
NOT_FOUND
(
404
,
"接口不存在"
),
INTERNAL_SERVER_ERROR
(
500
,
"服务器内部错误"
);
private
int
status
;
private
String
msg
;
ResultCode
(
int
status
,
String
msg
)
{
this
.
status
=
status
;
this
.
msg
=
msg
;
}
public
int
getStatus
()
{
return
status
;
}
public
String
getMsg
()
{
return
msg
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/common/enums/CrossStatusEnum.java
deleted
100644 → 0
View file @
ab344be5
package
net
.
wanji
.
opt
.
common
.
enums
;
public
enum
CrossStatusEnum
{
NORMAL
(
0
,
"正常"
),
UNBALANCE
(
1
,
"失衡"
),
CONGESTION
(
2
,
"拥堵"
),
SPILLOVER
(
3
,
"溢出"
),
DEADLOCK
(
4
,
"死锁"
);
private
Integer
code
;
private
String
name
;
private
CrossStatusEnum
(
Integer
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
Integer
getCode
()
{
return
this
.
code
;
}
public
String
getName
()
{
return
this
.
name
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/dao/mapper/CrossSchedulesMapper.java
View file @
a8673e53
...
@@ -2,6 +2,7 @@ package net.wanji.opt.dao.mapper;
...
@@ -2,6 +2,7 @@ package net.wanji.opt.dao.mapper;
import
net.wanji.opt.po.base.CrossSchedulesPO
;
import
net.wanji.opt.po.base.CrossSchedulesPO
;
import
net.wanji.opt.po.base.CrossSchedulesPlanPO
;
import
net.wanji.opt.po.base.CrossSchedulesPlanPO
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.List
;
...
@@ -24,9 +25,10 @@ public interface CrossSchedulesMapper {
...
@@ -24,9 +25,10 @@ public interface CrossSchedulesMapper {
/**
/**
* 查询调度计划信息列表
* 查询调度计划信息列表
* @param crossId
* @param crossId
* @param status
* @return
* @return
*/
*/
List
<
CrossSchedulesPlanPO
>
listSchedulesPlan
(
String
crossId
,
String
schedulesId
);
List
<
CrossSchedulesPlanPO
>
listSchedulesPlan
(
@Param
(
"crossId"
)
String
crossId
,
@Param
(
"status"
)
Integer
status
);
}
}
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossPhaseDTO.java
View file @
a8673e53
...
@@ -32,11 +32,17 @@ public class CrossPhaseDTO {
...
@@ -32,11 +32,17 @@ public class CrossPhaseDTO {
private
Integer
dirType
;
private
Integer
dirType
;
@ApiModelProperty
(
name
=
"路口转向:u掉头;l左转;s直行;r右转"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"路口转向:u掉头;l左转;s直行;r右转"
,
notes
=
""
)
private
Integer
turnType
;
private
String
turnType
;
@ApiModelProperty
(
name
=
"计划号"
,
notes
=
""
)
private
String
planNo
;
@ApiModelProperty
(
name
=
"方案ID"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"方案ID"
,
notes
=
""
)
private
Integer
schemeId
;
private
Integer
schemeId
;
@ApiModelProperty
(
name
=
"方案号"
,
notes
=
""
)
private
String
schemeNo
;
@ApiModelProperty
(
name
=
"环号"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"环号"
,
notes
=
""
)
private
Integer
ringNo
;
private
Integer
ringNo
;
...
...
signal-optimize-service/src/main/java/net/wanji/opt/dto/CrossSectionDTO.java
View file @
a8673e53
...
@@ -26,12 +26,15 @@ public class CrossSectionDTO {
...
@@ -26,12 +26,15 @@ public class CrossSectionDTO {
@ApiModelProperty
(
name
=
"计划ID"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"计划ID"
,
notes
=
""
)
private
Integer
planId
;
private
Integer
planId
;
@ApiModelProperty
(
name
=
"计划号"
,
notes
=
""
)
private
String
planNo
;
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"路口ID"
,
notes
=
""
)
private
String
crossId
;
private
String
crossId
;
@ApiModelProperty
(
name
=
"方案ID"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"方案ID"
,
notes
=
""
)
private
Integer
scemeId
;
private
Integer
sc
h
emeId
;
@ApiModelProperty
(
name
=
"控制模式:1定周期;2绿波协调;3黄闪;4全红;5关灯;6单点自适应;7全感应;8半感应;"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"控制模式:1定周期;2绿波协调;3黄闪;4全红;5关灯;6单点自适应;7全感应;8半感应;"
,
notes
=
""
)
private
Integer
control
_m
ode
;
private
Integer
control
M
ode
;
}
}
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossOptimizeService.java
View file @
a8673e53
package
net
.
wanji
.
opt
.
service
;
package
net
.
wanji
.
opt
.
service
;
import
net.wanji.opt.dto.CrossDataRealtimeDTO
;
import
java.util.List
;
/**
/**
* @author hfx
* @author hfx
* @date 2023/1/10 11:12
* @date 2023/1/10 11:12
...
@@ -12,7 +16,7 @@ public interface CrossOptimizeService {
...
@@ -12,7 +16,7 @@ public interface CrossOptimizeService {
* 路口实时优化
* 路口实时优化
* @return
* @return
*/
*/
String
realtimeOptimize
();
String
realtimeOptimize
(
List
<
CrossDataRealtimeDTO
>
abnormalCrossList
);
/**
/**
* 路口方案优化
* 路口方案优化
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/CrossSchedulesService.java
View file @
a8673e53
...
@@ -14,10 +14,11 @@ public interface CrossSchedulesService {
...
@@ -14,10 +14,11 @@ public interface CrossSchedulesService {
/**
/**
* 获取路口调度详情信息列表
* 获取路口调度详情信息列表
* @param crossId
* @param crossId 路口编号
* @param status 调度状态:1执行;0未执行
* @return
* @return
*/
*/
List
<
CrossSchedulesDTO
>
listCrossSchedulesDetails
(
String
crossId
);
List
<
CrossSchedulesDTO
>
listCrossSchedulesDetails
(
String
crossId
,
Integer
status
);
...
...
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossOptimizeServiceImpl.java
View file @
a8673e53
This diff is collapsed.
Click to expand it.
signal-optimize-service/src/main/java/net/wanji/opt/service/impl/CrossSchedulesServiceImpl.java
View file @
a8673e53
...
@@ -32,11 +32,11 @@ public class CrossSchedulesServiceImpl implements CrossSchedulesService {
...
@@ -32,11 +32,11 @@ public class CrossSchedulesServiceImpl implements CrossSchedulesService {
CrossSectionService
crossSectionService
;
CrossSectionService
crossSectionService
;
@Override
@Override
public
List
<
CrossSchedulesDTO
>
listCrossSchedulesDetails
(
String
crossId
)
{
public
List
<
CrossSchedulesDTO
>
listCrossSchedulesDetails
(
String
crossId
,
Integer
status
)
{
List
<
CrossSchedulesDTO
>
schedulesDTOList
=
new
ArrayList
<>();
List
<
CrossSchedulesDTO
>
schedulesDTOList
=
new
ArrayList
<>();
// 获取调度计划信息
// 获取调度计划信息
List
<
CrossSchedulesPlanPO
>
schedulesPlanPOList
=
crossSchedulesMapper
.
listSchedulesPlan
(
crossId
,
null
);
List
<
CrossSchedulesPlanPO
>
schedulesPlanPOList
=
crossSchedulesMapper
.
listSchedulesPlan
(
crossId
,
status
);
schedulesDTOList
=
BeanListUtils
.
populateList
(
schedulesPlanPOList
,
schedulesDTOList
,
CrossSchedulesDTO
.
class
);
schedulesDTOList
=
BeanListUtils
.
populateList
(
schedulesPlanPOList
,
schedulesDTOList
,
CrossSchedulesDTO
.
class
);
// 获取日计划信息
// 获取日计划信息
List
<
CrossSectionDTO
>
sectionPOList
=
crossSectionService
.
listCrossSectionInfo
(
crossId
,
null
);
List
<
CrossSectionDTO
>
sectionPOList
=
crossSectionService
.
listCrossSectionInfo
(
crossId
,
null
);
...
...
signal-optimize-service/src/main/java/net/wanji/opt/task/CrossMonitorTask.java
0 → 100644
View file @
a8673e53
package
net
.
wanji
.
opt
.
task
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.common.enums.CrossStatusEnum
;
import
net.wanji.opt.common.Constants
;
import
net.wanji.opt.dto.CrossDataRealtimeDTO
;
import
net.wanji.opt.po.CrossDataRealtimePO
;
import
net.wanji.opt.service.CrossOptimizeService
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author hfx
* @date 2023/1/16 16:39
* @desc RealtimeOptimizeTask
*/
@Component
@Slf4j
public
class
CrossMonitorTask
{
@Resource
CrossOptimizeService
crossOptimizeService
;
/**
* 路口实时监测
*/
@Scheduled
(
cron
=
"* 0/1 * * * ? "
)
public
void
realtimeMonitor
()
{
log
.
info
(
"路口实时监测任务..."
);
// 获取路口实时监测数据
List
<
CrossDataRealtimePO
>
crossDataRealtimePOList
=
listCrossDataRealtime
();
log
.
info
(
"路口实时数据:{}条"
,
crossDataRealtimePOList
.
size
());
// 测试时无数据暂时注释
// if(crossDataRealtimePOList.isEmpty()) {
// return ;
// }
// 获取所有信控路口异常数据(失衡/拥堵/溢出/死锁)
List
<
CrossDataRealtimeDTO
>
abnormalCrossList
=
listAbnormalCross
(
crossDataRealtimePOList
);
log
.
info
(
"加载异常路口:{}条"
,
abnormalCrossList
.
size
());
// if(abnormalCrossList.isEmpty()) {
// return ;
// }
// 调用路口实时优化
crossOptimizeService
.
realtimeOptimize
(
abnormalCrossList
);
}
/**
* 获取异常路口数据
* @return
*/
public
List
<
CrossDataRealtimeDTO
>
listAbnormalCross
(
List
<
CrossDataRealtimePO
>
crossDataRealtimePOList
)
{
List
<
CrossDataRealtimeDTO
>
dtoList
=
new
ArrayList
<>();
CrossDataRealtimeDTO
dto
=
null
;
int
status
=
0
;
for
(
CrossDataRealtimePO
po:
crossDataRealtimePOList
)
{
// 获取失衡、拥堵、溢出路口数据
if
(
Constants
.
NO
.
equals
(
po
.
getIsSpillover
())
||
Constants
.
NO
.
equals
(
po
.
getIsCongestion
())
||
Constants
.
NO
.
equals
(
po
.
getIsUnbalance
()))
{
continue
;
}
if
(
Constants
.
YES
.
equals
(
po
.
getIsSpillover
()))
{
// 溢出
status
=
CrossStatusEnum
.
SPILLOVER
.
getCode
();
}
else
if
(
Constants
.
YES
.
equals
(
po
.
getIsCongestion
()))
{
// 拥堵
status
=
CrossStatusEnum
.
CONGESTION
.
getCode
();
}
else
if
(
Constants
.
YES
.
equals
(
po
.
getIsUnbalance
()))
{
// 失衡
status
=
CrossStatusEnum
.
UNBALANCE
.
getCode
();
}
dto
=
new
CrossDataRealtimeDTO
();
dto
.
setCrossId
(
po
.
getCrossId
());
dto
.
setStatus
(
status
);
dto
.
setDirList
(
null
);
dto
.
setTurnList
(
null
);
dtoList
.
add
(
dto
);
}
return
dtoList
;
}
/**
* 获取路口实时监测数据
* (暂定从数据中心kafka获取)
* @return
*/
public
List
<
CrossDataRealtimePO
>
listCrossDataRealtime
()
{
return
new
ArrayList
<>();
}
}
\ No newline at end of file
signal-optimize-service/src/main/java/net/wanji/opt/task/RealtimeOptimizeTask.java
deleted
100644 → 0
View file @
ab344be5
package
net
.
wanji
.
opt
.
task
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.opt.service.CrossOptimizeService
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
/**
* @author hfx
* @date 2023/1/16 16:39
* @desc RealtimeOptimizeTask
*/
@Component
@Slf4j
public
class
RealtimeOptimizeTask
{
@Resource
CrossOptimizeService
crossOptimizeService
;
@Scheduled
(
cron
=
"* 0/1 * * * ? "
)
public
void
run
()
{
log
.
info
(
"RealtimeOptimizeTask ..."
);
crossOptimizeService
.
realtimeOptimize
();
}
}
\ No newline at end of file
signal-optimize-service/src/main/resources/mapper/CrossSchedulesMapper.xml
View file @
a8673e53
...
@@ -55,10 +55,10 @@
...
@@ -55,10 +55,10 @@
s.id = sp.schedules_id
s.id = sp.schedules_id
AND p.id = sp.plan_id
AND p.id = sp.plan_id
<if
test=
"crossId != null and crossId != ''"
>
<if
test=
"crossId != null and crossId != ''"
>
and cross_id = #{crossId}
and
s.
cross_id = #{crossId}
</if>
</if>
<if
test=
"s
chedulesId != null and schedulesId
!= ''"
>
<if
test=
"s
tatus != null and status
!= ''"
>
and s.
id = #{schedulesId
}
and s.
status = #{status
}
</if>
</if>
</select>
</select>
...
...
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